diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 9a85b32d..332444a5 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,13 +1,18 @@ # Editorial Team -*.md @privacytoolsIO/editorial -/assets/ @privacytoolsIO/editorial -/pages/ @privacytoolsIO/editorial -/_includes/sections/ @privacytoolsIO/editorial -/index.html @privacytoolsIO/editorial +*.md @privacytools/editorial +/assets/ @privacytools/editorial +/pages/ @privacytools/editorial +/_includes/sections/ @privacytools/editorial +/index.html @privacytools/editorial /font/ @dawidpotocki # Administration Related Files /pages/donate.html @JonahAragon @BurungHantu1605 +/pages/notices.md @JonahAragon +/pages/sponsors.html @JonahAragon +/_includes/sponsors/ @JonahAragon +/assets/img/svg/3rd-party/sponsors/ @JonahAragon +/README.md @JonahAragon @BurungHantu1605 /assets/js/redirects.js @JonahAragon /.well-known/ @JonahAragon /404.html @JonahAragon @@ -17,3 +22,11 @@ /.travis.yml @JonahAragon @Shifterovich @nitrohorse /CNAME @JonahAragon /nginx/ @JonahAragon + +# WKD +/.well-known/openpgpkey/hu/mrobfoimg5wz876m7kp6spyu66941weo @Mikaela +/.well-known/openpgpkey/hu/nqspr7yd4bgs8ry43zbzpjd45p4iug5b @dawidpotocki +/.well-known/openpgpkey/hu/dnrefmbtd6i58w8xfy4imj94cmbw3u3h @dngray +/.well-known/openpgpkey/hu/rse6m7dxfdjo86qhyj6wqs1hcdcp7em4 @danarel +/.well-known/openpgpkey/hu/zt71pstaerw1jpa5ru3borqmfsnbwnf6 @nitrohorse +/.well-known/openpgpkey/hu/omn8s4nziz8zmyz6f756asto39gefr63 @JonahAragon diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 2e659087..c987415d 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,6 +1,22 @@ # Contributing Guidelines -Please read this before contributing. +Please read this document in full before contributing. + +- [Rules](#rules) +- [Quality over Quantity](#quality-over-quantity) +- [Software Criteria](#software-criteria) + - [Main (All Software)](#main) + - [Providers](#providers) + - [DNS](#dns) + - [VPN](#vpn) + - [Email](#email) + - [Hardware](#hardware) + - [Software](#software) + - [Encryption](#encryption) + - [Operating Systems](#operating-systems) +- [Images](#images) +- [Licensing](#licensing) +- [Contributing via email](#contributing-via-email) ## Rules @@ -9,14 +25,16 @@ Please read this before contributing. - Be constructive. - Please feel free to *review changes* in the *files changed* tab of any pull request at any time. -- See also our [Code of Conduct](https://github.com/privacytoolsIO/privacytools.io/blob/master/CODE_OF_CONDUCT.md) +- See also our [Code of Conduct](https://github.com/privacytools/.github/blob/master/CODE_OF_CONDUCT.md) ## Quality over Quantity We're trying to keep it simple and promote the best tools, not all of them. ## Software Criteria + ### Main + - Easy to use. Could your mother use that tool or service? Usability is most important. - Cross-platform / Accessible. - Privacy respecting. @@ -25,8 +43,10 @@ We're trying to keep it simple and promote the best tools, not all of them. There can be exceptions if no software is available that meet the criteria. -Note: This criteria applies to all of privacytools.io +Note: This criteria applies to all of the PrivacyTools website and recommendations. + ### Providers + - Prioritize Products by privacy respecting nationality. ### DNS @@ -37,7 +57,9 @@ Note: This criteria applies to all of privacytools.io - Preferably supports QNAME minimization (if you have access to the dig command, `dig +short txt qnamemintest.internet.nl` or `Resolve-DnsName -Type TXT -Name qnamemintest.internet.nl` if you are on Windows 10) ### VPN + See https://www.privacytools.io/providers/vpn/#criteria for more details. + - Prioritize Products by privacy respecting nationality. - Cannot be based in USA or UK. - Must be accessible via Open Source Software (e.g. OpenVPN, WireGuard) @@ -46,31 +68,51 @@ See https://www.privacytools.io/providers/vpn/#criteria for more details. - No logging policy ### Email + - Outside of USA - Support SMTP SSL - Accessible Using Open Source Software (e.g. allows IMAP) ### Hardware + - Must be [H-Node Class A](https://h-node.org/wiki/page/en/compatibility-classes) or equivalent (if applicable) - Must prioritize hardware certifications like [RYF](https://ryf.fsf.org/), [OSHWA](https://certification.oshwa.org/), and OSI when available. - Cannot lock users to a particular platform. ### Software + - Must be able to download over encrypted network (can be a mirror) - Must be Open Source Software ### Encryption + - Only verifiable encryption is to be trusted -### OSes +### Operating Systems + - Must state if recommends, depends on, or offers non-free software (contrib) - No Tracking Policy (opt-in analytics is ok) ## Images -- Provider logos are 200px x 70px ([example](https://www.privacytools.io/assets/img/provider/AirVPN.png)) -- Tool logos are 120px x 120px ([example](https://www.privacytools.io/assets/img/tools/ChatSecure.png)) +- SVG file format is strongly preferred. PNG files can be used as a fallback if images are too complex or otherwise unsuitable as a vector format. +- We like to optimize all SVGs we add to the site. [This](https://github.com/privacytools/privacytools.io/pull/1968#issuecomment-652773633) is a helpful guide as to how we do it with [Inkscape](https://inkscape.org/) + - Some SVGs generated by Illustrator or Sketch are broken, therefore copying the SVG content to a new canvas is sometimes required. (We found this with the Mailcow logo). Looked fine in local builds but was wrong once rendered through netlify preview etc. +- We only have SVGs that have a canvas size of 128x128px or 384x128px. +- Provider logo dimensions are 384px x 128px ([example](https://github.com/privacytools/privacytools.io/blob/master/assets/img/svg/3rd-party/mullvad.svg)) +- Tool logo dimensions are 128px x 128px ([SVG example](https://github.com/privacytools/privacytools.io/blob/master/assets/img/svg/3rd-party/firefox_browser.svg), [PNG example](https://github.com/privacytools/privacytools.io/blob/master/assets/img/png/3rd-party/claws_mail.png)) + ## Licensing The content and original technology of this website is made available under the Creative Commons Zero v1.0 Universal license text. Some files or folders may include works from other projects with separate licenses, and will be marked as such. **By contributing to this repository, contributors do not necessarily agree to sign a CLA or legally transfer their copyright to the project, but they do at a minimum agree to license their work under the current license of this repository: In this case, the Creative Commons Zero v1.0 Universal.** + +## Contributing via email + +If you have a GitHub account, or are able to create a GitHub account, we ask that you do not submit issues via email. + +If you do not have a GitHub account, you may submit software recommendations or other issues via email without creating a GitHub account by emailing `privacytools@fire.fundersclub.com`. The subject line of your email will become the issue title. Your name will be included in the posted issue. + +This repository uses [@fire-bot](https://github.com/fire-bot), [a service](https://fire.fundersclub.com) from FundersClub that converts incoming emails to GitHub issues. By sending a message to the email address above, you will be sharing your email address and message content with FundersClub. FundersClub has a privacy policy at [https://fundersclub.com/catalyst-privacy-policy/](https://fundersclub.com/catalyst-privacy-policy/) you should review before using this service. Any attachments you send via this service may be stored indefinitely by FundersClub for the purpose of making them available within the submitted GitHub issue. + +You can view an example of the created issues' format at [#1444](https://github.com/privacytools/privacytools.io/issues/1444). diff --git a/.github/ISSUE_TEMPLATE/1_Software_Suggestion.md b/.github/ISSUE_TEMPLATE/1_Software_Suggestion.md index 2b018612..92bb209c 100644 --- a/.github/ISSUE_TEMPLATE/1_Software_Suggestion.md +++ b/.github/ISSUE_TEMPLATE/1_Software_Suggestion.md @@ -12,3 +12,16 @@ labels: 🆕 software suggestion **URL:** ## Description + + + +## Why I am making the suggestion + + + + +## My connection with the software + + + +- [ ] I will keep the issue up-to-date if something I have said changes or I remember a connection with the software. diff --git a/.github/ISSUE_TEMPLATE/2_Software_Removal.md b/.github/ISSUE_TEMPLATE/2_Software_Removal.md index f615cd64..d806a6a6 100644 --- a/.github/ISSUE_TEMPLATE/2_Software_Removal.md +++ b/.github/ISSUE_TEMPLATE/2_Software_Removal.md @@ -7,3 +7,15 @@ labels: ❌ software removal ## Description + + +## Why I am making the suggestion + + + + +## My connection with the software + + + +- [ ] I will keep the issue up-to-date if something I have said changes or I remember a connection with the software. diff --git a/.github/ISSUE_TEMPLATE/3_Discussion.md b/.github/ISSUE_TEMPLATE/3_Discussion.md deleted file mode 100644 index dc53ae9e..00000000 --- a/.github/ISSUE_TEMPLATE/3_Discussion.md +++ /dev/null @@ -1,13 +0,0 @@ - - ---- -name: "💬 Discussion" -about: Discuss the website or any mentioned software in general. -title: "💬 Discussion | " -labels: 💬 discussion, feedback wanted ---- - - diff --git a/.github/ISSUE_TEMPLATE/4_Feature.md b/.github/ISSUE_TEMPLATE/3_Feature_Suggestion.md similarity index 57% rename from .github/ISSUE_TEMPLATE/4_Feature.md rename to .github/ISSUE_TEMPLATE/3_Feature_Suggestion.md index f4affecc..a56baa49 100644 --- a/.github/ISSUE_TEMPLATE/4_Feature.md +++ b/.github/ISSUE_TEMPLATE/3_Feature_Suggestion.md @@ -1,9 +1,8 @@ --- name: "✨ Feature Suggestion" -about: Suggest a new feature for the website. +about: Suggest a new feature/section/page for the website. title: "✨ Feature Suggestion | " labels: ✨ enhancement --- -## Description: - +## Description diff --git a/.github/ISSUE_TEMPLATE/4_Content_Correction.md b/.github/ISSUE_TEMPLATE/4_Content_Correction.md new file mode 100644 index 00000000..58533d13 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/4_Content_Correction.md @@ -0,0 +1,21 @@ +--- +name: "📝 Content Correction" +about: Report any inaccurate, incorrect, or outdated information on the website. +title: "📝 Correction | " +labels: 📝 correction +--- + +## Description + + + +## Why I am making the suggestion + + + + +## My connection with the software + + + +- [ ] I will keep the issue up-to-date if something I have said changes or I remember a connection with the software. diff --git a/.github/ISSUE_TEMPLATE/5_Website_Issues.md b/.github/ISSUE_TEMPLATE/5_Website_Issues.md index ed9d01dd..d2244637 100644 --- a/.github/ISSUE_TEMPLATE/5_Website_Issues.md +++ b/.github/ISSUE_TEMPLATE/5_Website_Issues.md @@ -1,10 +1,19 @@ --- name: "🌐 Website Issue" -about: Report an issue with the website. +about: Report a bug with the website. (NO CONTENT ISSUES) title: "🌐 Website Issue | " -labels: 🌐 website issue, high priority +labels: 🌐 website issue --- + + ## Description - -## Basic Information - -**Name:** -**Filtering:** -**Privacy policy:** -**Protocols:** -**Server/Location:** -**Source:** -**Type:** -**Website:** - -## Description - - - - -### Required features: - - - -* [ ] supports DoH or DoT -* [ ] supports DNSSEC -* [ ] doesn't log IP addresses during normal operation - -#### Desired features - -* [ ] supports QNAME minimization diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 00000000..52f4ca2b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,7 @@ +contact_links: + - name: Services issues + url: https://github.com/privacytools/services/issues/new/choose + about: Open any issues/bug reports/requests related to our services (Mastodon, Matrix, etc) here. + - name: PrivacyTools Community + url: https://forum.privacytools.io/ + about: Please ask any generic questions on our forum. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 406faf1d..46a6286b 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,4 +1,4 @@ - + ## Description @@ -6,7 +6,9 @@ Resolves: #none -- [ ] I have read and understand [the contributing guidelines](https://github.com/privacytoolsIO/privacytools.io/blob/master/.github/CONTRIBUTING.md). +- [ ] I understand that by not opening an issue about a software/service/similar addition/removal, this pull request will be closed without merging. + +- [ ] I have read and understand [the contributing guidelines](https://github.com/privacytools/privacytools.io/blob/master/.github/CONTRIBUTING.md). - [ ] The project is [Free Libre](https://en.wikipedia.org/wiki/Free_software) and/or [Open Source](https://en.wikipedia.org/wiki/Open-source_software) Software diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 00000000..331880c5 --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,16 @@ +# Number of days of inactivity before an issue becomes stale +daysUntilStale: 60 +# Number of days of inactivity before a stale issue is closed +daysUntilClose: 7 +# Issues with these labels will never be considered stale +exemptLabels: + - approved +# Label to use when marking an issue as stale +staleLabel: stale +# Comment to post when marking an issue as stale. Set to `false` to disable +markComment: > + This issue has been automatically marked as stale because it has not had + recent activity. It will be closed if no further activity occurs. Thank you + for your contributions. +# Comment to post when closing a stale issue. Set to `false` to disable +closeComment: false diff --git a/.gitignore b/.gitignore index e6cb179f..bb836e13 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,5 @@ font/assets/ font/_sass/ font/.fontcustom-manifest.json assets/webfonts/ptio-font-preview.html +vendor +.bundle diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index e69de1c9..00000000 --- a/.travis.yml +++ /dev/null @@ -1,11 +0,0 @@ -language: ruby -rvm: - - 2.4.1 - -# Assume bundler is being used, therefore -# the `install` step will run `bundle install` by default. -script: ./build.sh - -sudo: false # route your build to the container-based infrastructure for a faster build - -cache: bundler # caching bundler gem packages will speed up build diff --git a/.well-known/librehost.json b/.well-known/librehost.json index 20b30a83..eccf338c 100644 --- a/.well-known/librehost.json +++ b/.well-known/librehost.json @@ -2,11 +2,11 @@ "@context" : "http://schema.org", "@type" : "Organization", "organizationType" : "Informal collective", - "name" : "privacytools.io", + "name" : "PrivacyTools", "tagLine" : "Private Services: No Ads, No Google Analytics, No Affiliates, and No Cross-Site Requests", "homeUrl" : "https://www.privacytools.io/", "logo" : "https://www.privacytools.io/assets/img/layout/shield.svg", - "description": "privacytools.io is a socially motivated website that provides information and services for protecting your security and privacy online. No Ads, No Google Analytics, No Affiliates, and No Cross-Site Requests.", + "description": "PrivacyTools is a socially motivated website that provides information and services for protecting your security and privacy online. No Ads, No Google Analytics, No Affiliates, and No Cross-Site Requests.", "communicationLanguages": ["en"], "contactUrl": "https://www.privacytools.io/contact/", "privacyPolicyUrl" : "https://www.privacytools.io/privacy/", diff --git a/.well-known/openpgpkey/hu/dnrefmbtd6i58w8xfy4imj94cmbw3u3h b/.well-known/openpgpkey/hu/dnrefmbtd6i58w8xfy4imj94cmbw3u3h new file mode 100755 index 00000000..1ab53686 Binary files /dev/null and b/.well-known/openpgpkey/hu/dnrefmbtd6i58w8xfy4imj94cmbw3u3h differ diff --git a/.well-known/openpgpkey/hu/mrobfoimg5wz876m7kp6spyu66941weo b/.well-known/openpgpkey/hu/mrobfoimg5wz876m7kp6spyu66941weo new file mode 100755 index 00000000..a8a3161b Binary files /dev/null and b/.well-known/openpgpkey/hu/mrobfoimg5wz876m7kp6spyu66941weo differ diff --git a/.well-known/openpgpkey/hu/nqspr7yd4bgs8ry43zbzpjd45p4iug5b b/.well-known/openpgpkey/hu/nqspr7yd4bgs8ry43zbzpjd45p4iug5b new file mode 100755 index 00000000..c03c67ca Binary files /dev/null and b/.well-known/openpgpkey/hu/nqspr7yd4bgs8ry43zbzpjd45p4iug5b differ diff --git a/.well-known/openpgpkey/hu/omn8s4nziz8zmyz6f756asto39gefr63 b/.well-known/openpgpkey/hu/omn8s4nziz8zmyz6f756asto39gefr63 new file mode 100755 index 00000000..9b051997 Binary files /dev/null and b/.well-known/openpgpkey/hu/omn8s4nziz8zmyz6f756asto39gefr63 differ diff --git a/.well-known/openpgpkey/hu/rse6m7dxfdjo86qhyj6wqs1hcdcp7em4 b/.well-known/openpgpkey/hu/rse6m7dxfdjo86qhyj6wqs1hcdcp7em4 new file mode 100755 index 00000000..3d6b6bd1 Binary files /dev/null and b/.well-known/openpgpkey/hu/rse6m7dxfdjo86qhyj6wqs1hcdcp7em4 differ diff --git a/.well-known/openpgpkey/hu/zt71pstaerw1jpa5ru3borqmfsnbwnf6 b/.well-known/openpgpkey/hu/zt71pstaerw1jpa5ru3borqmfsnbwnf6 new file mode 100755 index 00000000..eb0bd0f7 Binary files /dev/null and b/.well-known/openpgpkey/hu/zt71pstaerw1jpa5ru3borqmfsnbwnf6 differ diff --git a/.well-known/openpgpkey/policy b/.well-known/openpgpkey/policy new file mode 100644 index 00000000..e69de29b diff --git a/.well-known/security.txt b/.well-known/security.txt index 6e804b30..f77c69fd 100644 --- a/.well-known/security.txt +++ b/.well-known/security.txt @@ -2,4 +2,4 @@ Contact: admin@privacytools.io Encryption: https://www.jonaharagon.com/keys/ Preferred-Languages: en Canonical: https://www.privacytools.io/.well-known/security.txt -Policy: https://github.com/privacytoolsIO/privacytools.io/security/policy +Policy: https://github.com/privacytools/privacytools.io/security/policy diff --git a/Gemfile.lock b/Gemfile.lock index 05594934..b5724e2d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,13 +1,14 @@ GEM remote: https://rubygems.org/ specs: - activesupport (4.2.11.1) - i18n (~> 0.7) + activesupport (6.0.3.4) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 0.7, < 2) minitest (~> 5.1) - thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) - addressable (2.6.0) - public_suffix (>= 2.0.2, < 4.0) + zeitwerk (~> 2.2, >= 2.2.2) + addressable (2.7.0) + public_suffix (>= 2.0.2, < 5.0) coffee-script (2.4.1) coffee-script-source execjs @@ -15,65 +16,65 @@ GEM colorator (1.1.0) commonmarker (0.17.13) ruby-enum (~> 0.5) - concurrent-ruby (1.1.5) - dnsruby (1.61.3) - addressable (~> 2.5) - em-websocket (0.5.1) + concurrent-ruby (1.1.7) + dnsruby (1.61.5) + simpleidn (~> 0.1) + em-websocket (0.5.2) eventmachine (>= 0.12.9) http_parser.rb (~> 0.6.0) ethon (0.12.0) ffi (>= 1.3.0) eventmachine (1.2.7) execjs (2.7.0) - faraday (0.15.4) + faraday (1.2.0) multipart-post (>= 1.2, < 3) - ffi (1.11.1) + ruby2_keywords + ffi (1.14.2) forwardable-extended (2.6.0) gemoji (3.0.1) - github-pages (198) - activesupport (= 4.2.11.1) + github-pages (209) github-pages-health-check (= 1.16.1) - jekyll (= 3.8.5) - jekyll-avatar (= 0.6.0) + jekyll (= 3.9.0) + jekyll-avatar (= 0.7.0) jekyll-coffeescript (= 1.1.1) - jekyll-commonmark-ghpages (= 0.1.5) + jekyll-commonmark-ghpages (= 0.1.6) jekyll-default-layout (= 0.1.4) - jekyll-feed (= 0.11.0) + jekyll-feed (= 0.15.1) jekyll-gist (= 1.5.0) - jekyll-github-metadata (= 2.12.1) - jekyll-mentions (= 1.4.1) - jekyll-optional-front-matter (= 0.3.0) + jekyll-github-metadata (= 2.13.0) + jekyll-mentions (= 1.6.0) + jekyll-optional-front-matter (= 0.3.2) jekyll-paginate (= 1.1.0) - jekyll-readme-index (= 0.2.0) - jekyll-redirect-from (= 0.14.0) - jekyll-relative-links (= 0.6.0) - jekyll-remote-theme (= 0.3.1) + jekyll-readme-index (= 0.3.0) + jekyll-redirect-from (= 0.16.0) + jekyll-relative-links (= 0.6.1) + jekyll-remote-theme (= 0.4.2) jekyll-sass-converter (= 1.5.2) - jekyll-seo-tag (= 2.5.0) - jekyll-sitemap (= 1.2.0) - jekyll-swiss (= 0.4.0) + jekyll-seo-tag (= 2.6.1) + jekyll-sitemap (= 1.4.0) + jekyll-swiss (= 1.0.0) jekyll-theme-architect (= 0.1.1) jekyll-theme-cayman (= 0.1.1) jekyll-theme-dinky (= 0.1.1) - jekyll-theme-hacker (= 0.1.1) + jekyll-theme-hacker (= 0.1.2) jekyll-theme-leap-day (= 0.1.1) jekyll-theme-merlot (= 0.1.1) jekyll-theme-midnight (= 0.1.1) jekyll-theme-minimal (= 0.1.1) jekyll-theme-modernist (= 0.1.1) - jekyll-theme-primer (= 0.5.3) + jekyll-theme-primer (= 0.5.4) jekyll-theme-slate (= 0.1.1) jekyll-theme-tactile (= 0.1.1) jekyll-theme-time-machine (= 0.1.1) - jekyll-titles-from-headings (= 0.5.1) - jemoji (= 0.10.2) - kramdown (= 1.17.0) - liquid (= 4.0.0) - listen (= 3.1.5) + jekyll-titles-from-headings (= 0.5.3) + jemoji (= 0.12.0) + kramdown (= 2.3.0) + kramdown-parser-gfm (= 1.1.0) + liquid (= 4.0.3) mercenary (~> 0.3) - minima (= 2.5.0) - nokogiri (>= 1.8.5, < 2.0) - rouge (= 2.2.1) + minima (= 2.5.1) + nokogiri (>= 1.10.4, < 2.0) + rouge (= 3.23.0) terminal-table (~> 1.4) github-pages-health-check (1.16.1) addressable (~> 2.3) @@ -81,68 +82,70 @@ GEM octokit (~> 4.0) public_suffix (~> 3.0) typhoeus (~> 1.3) - html-pipeline (2.12.0) + html-pipeline (2.14.0) activesupport (>= 2) nokogiri (>= 1.4) http_parser.rb (0.6.0) i18n (0.9.5) concurrent-ruby (~> 1.0) - jekyll (3.8.5) + jekyll (3.9.0) addressable (~> 2.4) colorator (~> 1.0) em-websocket (~> 0.5) i18n (~> 0.7) jekyll-sass-converter (~> 1.0) jekyll-watch (~> 2.0) - kramdown (~> 1.14) + kramdown (>= 1.17, < 3) liquid (~> 4.0) mercenary (~> 0.3.3) pathutil (~> 0.9) rouge (>= 1.7, < 4) safe_yaml (~> 1.0) - jekyll-avatar (0.6.0) - jekyll (~> 3.0) + jekyll-avatar (0.7.0) + jekyll (>= 3.0, < 5.0) jekyll-coffeescript (1.1.1) coffee-script (~> 2.2) coffee-script-source (~> 1.11.1) jekyll-commonmark (1.3.1) commonmarker (~> 0.14) jekyll (>= 3.7, < 5.0) - jekyll-commonmark-ghpages (0.1.5) + jekyll-commonmark-ghpages (0.1.6) commonmarker (~> 0.17.6) - jekyll-commonmark (~> 1) - rouge (~> 2) + jekyll-commonmark (~> 1.2) + rouge (>= 2.0, < 4.0) jekyll-default-layout (0.1.4) jekyll (~> 3.0) - jekyll-feed (0.11.0) - jekyll (~> 3.3) + jekyll-feed (0.15.1) + jekyll (>= 3.7, < 5.0) jekyll-gist (1.5.0) octokit (~> 4.2) - jekyll-github-metadata (2.12.1) - jekyll (~> 3.4) + jekyll-github-metadata (2.13.0) + jekyll (>= 3.4, < 5.0) octokit (~> 4.0, != 4.4.0) - jekyll-mentions (1.4.1) + jekyll-mentions (1.6.0) html-pipeline (~> 2.3) - jekyll (~> 3.0) - jekyll-optional-front-matter (0.3.0) - jekyll (~> 3.0) + jekyll (>= 3.7, < 5.0) + jekyll-optional-front-matter (0.3.2) + jekyll (>= 3.0, < 5.0) jekyll-paginate (1.1.0) - jekyll-readme-index (0.2.0) - jekyll (~> 3.0) - jekyll-redirect-from (0.14.0) - jekyll (~> 3.3) - jekyll-relative-links (0.6.0) - jekyll (~> 3.3) - jekyll-remote-theme (0.3.1) - jekyll (~> 3.5) - rubyzip (>= 1.2.1, < 3.0) + jekyll-readme-index (0.3.0) + jekyll (>= 3.0, < 5.0) + jekyll-redirect-from (0.16.0) + jekyll (>= 3.3, < 5.0) + jekyll-relative-links (0.6.1) + jekyll (>= 3.3, < 5.0) + jekyll-remote-theme (0.4.2) + addressable (~> 2.0) + jekyll (>= 3.5, < 5.0) + jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0) + rubyzip (>= 1.3.0, < 3.0) jekyll-sass-converter (1.5.2) sass (~> 3.4) - jekyll-seo-tag (2.5.0) - jekyll (~> 3.3) - jekyll-sitemap (1.2.0) - jekyll (~> 3.3) - jekyll-swiss (0.4.0) + jekyll-seo-tag (2.6.1) + jekyll (>= 3.3, < 5.0) + jekyll-sitemap (1.4.0) + jekyll (>= 3.7, < 5.0) + jekyll-swiss (1.0.0) jekyll-theme-architect (0.1.1) jekyll (~> 3.5) jekyll-seo-tag (~> 2.0) @@ -152,8 +155,8 @@ GEM jekyll-theme-dinky (0.1.1) jekyll (~> 3.5) jekyll-seo-tag (~> 2.0) - jekyll-theme-hacker (0.1.1) - jekyll (~> 3.5) + jekyll-theme-hacker (0.1.2) + jekyll (> 3.5, < 5.0) jekyll-seo-tag (~> 2.0) jekyll-theme-leap-day (0.1.1) jekyll (~> 3.5) @@ -170,8 +173,8 @@ GEM jekyll-theme-modernist (0.1.1) jekyll (~> 3.5) jekyll-seo-tag (~> 2.0) - jekyll-theme-primer (0.5.3) - jekyll (~> 3.5) + jekyll-theme-primer (0.5.4) + jekyll (> 3.5, < 5.0) jekyll-github-metadata (~> 2.9) jekyll-seo-tag (~> 2.0) jekyll-theme-slate (0.1.1) @@ -183,43 +186,49 @@ GEM jekyll-theme-time-machine (0.1.1) jekyll (~> 3.5) jekyll-seo-tag (~> 2.0) - jekyll-titles-from-headings (0.5.1) - jekyll (~> 3.3) + jekyll-titles-from-headings (0.5.3) + jekyll (>= 3.3, < 5.0) jekyll-watch (2.2.1) listen (~> 3.0) - jemoji (0.10.2) + jemoji (0.12.0) gemoji (~> 3.0) html-pipeline (~> 2.2) - jekyll (~> 3.0) - kramdown (1.17.0) - liquid (4.0.0) - listen (3.1.5) - rb-fsevent (~> 0.9, >= 0.9.4) - rb-inotify (~> 0.9, >= 0.9.7) - ruby_dep (~> 1.2) + jekyll (>= 3.0, < 5.0) + kramdown (2.3.0) + rexml + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.3) + listen (3.3.3) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) mercenary (0.3.6) - mini_portile2 (2.4.0) - minima (2.5.0) - jekyll (~> 3.5) + mini_portile2 (2.5.0) + minima (2.5.1) + jekyll (>= 3.5, < 5.0) jekyll-feed (~> 0.9) jekyll-seo-tag (~> 2.1) - minitest (5.11.3) + minitest (5.14.2) multipart-post (2.1.1) - nokogiri (1.10.4) - mini_portile2 (~> 2.4.0) - octokit (4.14.0) + nokogiri (1.11.2) + mini_portile2 (~> 2.5.0) + racc (~> 1.4) + octokit (4.19.0) + faraday (>= 0.9) sawyer (~> 0.8.0, >= 0.5.3) pathutil (0.16.2) forwardable-extended (~> 2.6) public_suffix (3.1.1) - rb-fsevent (0.10.3) - rb-inotify (0.10.0) + racc (1.5.2) + rb-fsevent (0.10.4) + rb-inotify (0.10.1) ffi (~> 1.0) - rouge (2.2.1) - ruby-enum (0.7.2) + rexml (3.2.5) + rouge (3.23.0) + ruby-enum (0.8.0) i18n - ruby_dep (1.5.0) - rubyzip (1.2.3) + ruby2_keywords (0.0.2) + rubyzip (2.3.0) safe_yaml (1.0.5) sass (3.7.4) sass-listen (~> 4.0.0) @@ -229,14 +238,20 @@ GEM sawyer (0.8.2) addressable (>= 2.3.5) faraday (> 0.8, < 2.0) + simpleidn (0.1.1) + unf (~> 0.1.4) terminal-table (1.8.0) unicode-display_width (~> 1.1, >= 1.1.1) thread_safe (0.3.6) - typhoeus (1.3.1) + typhoeus (1.4.0) ethon (>= 0.9.0) - tzinfo (1.2.5) + tzinfo (1.2.9) thread_safe (~> 0.1) - unicode-display_width (1.6.0) + unf (0.1.4) + unf_ext + unf_ext (0.0.7.7) + unicode-display_width (1.7.0) + zeitwerk (2.4.2) PLATFORMS ruby diff --git a/README.md b/README.md index 5f20c438..48b4cb3d 100644 --- a/README.md +++ b/README.md @@ -1,43 +1,36 @@ -[![privacytools](./assets/img/layout/logo.png)](https://www.privacytools.io/) - -_Encryption Against Global Mass Surveillance._ - -[![Build Status](https://travis-ci.com/privacytoolsIO/privacytools.io.svg?branch=master)](https://travis-ci.com/privacytoolsIO/privacytools.io) +
+ + PrivacyTools + +

+ Encryption Against Global Mass Surveillance. +

+
# Contributing -It's important for a website like privacytools.io to be up-to-date. Keep an eye on software updates of the applications listed here. Follow recent news about providers that are recommended. We try our best to keep up but we're not perfect and the internet is changing fast. So if you find an error, or you think a provider should not be listed here, or a qualified service provider is missing or a browser plugin is not the best choice anymore or anything else... +## This project is archived. -**Talk to us please.** Join our [subreddit](https://www.reddit.com/r/privacytoolsIO/) or [our Discourse community](https://forum.privacytools.io/) and start a discussion. This is a community project and we're aiming to deliver the best information available for a better privacy. Thank you for participating. +See our [Welcome to Privacy Guides](https://www.privacyguides.org/blog/2021/09/14/welcome-to-privacy-guides) post for more information. Our project has now moved on to [Privacy Guides](https://privacyguides.org). -You can submit your suggestions here on GitHub [(Issues)](https://github.com/privacytoolsIO/privacytools.io/issues) and also in our [subreddit](https://www.reddit.com/r/privacytoolsIO/). Please refer to the [Contributing Guidelines](.github/CONTRIBUTING.md) before submitting. Thank you. +It's important for a website on privacy to be up-to-date. Keep an eye on software updates of the applications listed [here](https://github.com/privacyguides/). Follow recent news about providers that are recommended. We try our best to keep up but we're not perfect and the internet is changing fast. So if you find an error, or you think a provider should not be listed, or a qualified service provider is missing or a browser plugin is not the best choice anymore or anything else, feel free to open a [discussion](https://github.com/privacyguides/privacyguides.org/discussions) or [issue](https://github.com/privacyguides/privacyguides.org/issues) to correct errors. -## Building +**Talk to us!** If you want to help join our lounge chat at [`#lounge:privacyguides.org`](https://matrix.to/#/#lounge:privacyguides.org), or for our on-topic privacy discussion room [`#main:privacyguides.org`](https://matrix.to/#/#main:privacyguides.org). -1. Install [Ruby](https://www.ruby-lang.org/en/documentation/installation/) -1. Install [bundler](https://bundler.io/) by running `gem install bundler`. -1. Run `bundle install` to install the required dependencies. -1. Use `bundle exec jekyll build` to build the website. The output can be found in the `_site` directory. Live preview is also possible by running `bundle exec jekyll serve` +# Support PrivacyGuides -# Support privacytools.io - -- [Donate.](https://www.privacytools.io/donate/) -- [Liberapay](https://liberapay.com/privacytools.io/donate) or [Patreon.](https://www.patreon.com/privacytools) -- [Spread the word.](https://www.privacytools.io/#participate) -- [Join our Discourse community.](https://forum.privacytools.io/) -- [Make suggestions on reddit.](https://www.reddit.com/r/privacytoolsIO/) +- [Donate](https://opencollective.com/privacyguides) +- [Our reddit community](https://www.reddit.com/r/privacyguides/) - View and edit our website source code here on GitHub. -# Community Translations -- [繁体中文 / Chinese](https://privacytools.twngo.xyz/) - [GitHub](https://github.com/twngo/privacytools-zh) -- [Español / Spanish](https://victorhck.gitlab.io/privacytools-es/) - [GitLab](https://gitlab.com/victorhck/privacytools-es) -- [Polski / Polish](https://pl.privacytools.io) - [Gitea](https://git.privacytools.io/pl-privacytoolsIO/pl.privacytools.io) -- [Deutsch / German](https://privacytools.it-sec.rocks/) - [GitHub](https://github.com/Anon215/privacytools.it-sec.rocks) -- [Français / French](https://privacytools.dreads-unlock.fr/) - [GitLab](https://gitlab.com/Booteille/privacytools) -- [Italiano / Italian](https://privacytools-it.github.io/) - [GitHub](https://github.com/privacytools-it/privacytools-it.github.io) -- [Русский / Russian](https://privacytools.ru) - [GitHub](https://github.com/c0rdis/privacytools.ru) -- [Português / Portuguese](https://www.privacidade.digital/) - [GitHub](https://github.com/PrivacidadeDigital/privacidade.digital) +## Backers -# License +Like what we're doing? [Become a backer](https://opencollective.com/privacyguides) and show your support for our project. -The content and original technology of this website is made available under the [Creative Commons Zero v1.0 Universal](https://www.privacytools.io/LICENSE.txt) license text. Some files or folders may include works from other projects with separate licenses, and will be marked as such. By contributing to this repository, contributors do not necessarily agree to sign a CLA or legally transfer their copyright to the project, but they do at a minimum agree to license their work under the current license of this repository: In this case, the Creative Commons Zero v1.0 Universal. + + opencollective.com + + +# License & Notices + +PrivacyTools was provided on an "as-is" basis, without warranty, and disclaiming liability for damages. The project was licensed under these terms [license](https://github.com/privacytools/privacytools.io/blob/master/LICENSE.txt). diff --git a/_config.yml b/_config.yml index eac523d4..25a9c243 100644 --- a/_config.yml +++ b/_config.yml @@ -1,6 +1,8 @@ -title: Privacy Tools - Encryption Against Global Mass Surveillance -description: You are being watched. Knowledge, encryption and privacy tools to protect you against global mass surveillance. +title: PrivacyTools - Encryption Against Global Mass Surveillance +name: PrivacyTools +description: You are being watched. PrivacyTools provides knowledge, encryption, and software recommendations to protect you against global mass surveillance. url: "https://www.privacytools.io" +production_url: "https://www.privacytools.io" sass: style: compressed plugins: diff --git a/_includes/badge.html b/_includes/badge.html new file mode 100644 index 00000000..f069d819 --- /dev/null +++ b/_includes/badge.html @@ -0,0 +1,20 @@ +{% if include.link %} + {{ include.text }} +{% else %}> {{ include.text }}{% endif %} + +{% else %} + {{include.text}} + {% else %} + > {% if include.icon %}{% endif %} {{include.text}} + {% endif %} + +{% endif %} diff --git a/_includes/breadcrumbs.html b/_includes/breadcrumbs.html new file mode 100644 index 00000000..b744bb53 --- /dev/null +++ b/_includes/breadcrumbs.html @@ -0,0 +1,23 @@ + diff --git a/_includes/card.html b/_includes/card.html index ec676c84..9a294a60 100644 --- a/_includes/card.html +++ b/_includes/card.html @@ -17,7 +17,7 @@ {% assign text = label_data[1] %} {% assign tooltip = label_data[2] | default: "" %} {% assign help_icon = '' %} - {{text}} {{ help_icon + {{text}} {{ help_icon }} {% else %} >{{text}} diff --git a/_includes/cardv2.html b/_includes/cardv2.html index 4b315a24..8982b84b 100644 --- a/_includes/cardv2.html +++ b/_includes/cardv2.html @@ -14,7 +14,7 @@ class="badge badge-{{color}}" {% if tooltip %} data-toggle="tooltip" - title="{{ tooltip }}" + data-original-title="{{ tooltip }}" > {{text}} {{ help_icon }} {% else %} > {{text}} @@ -36,58 +36,89 @@ height="120" width="120" class="panel-pic" - alt="{{include.title}}" + alt="{{include.title}} logo" > {{ include.description }} {% if include.labels %} {% assign labels = include.labels | split:"|" %} - {% for label in labels %} - {% assign label_data = label | split:":" %} - {% assign color = label_data[0] %} - {% assign text = label_data[1] %} - {% assign tooltip = label_data[2] | default: false %} - {% assign help_icon = '' %} - {{text}} {{ help_icon }} - {% else %} - > {{text}} + {% for label in labels %} + {% assign label_data = label | split:"::" %} + {% for label_attr in label_data %} + {% assign attr = label_attr | split:"==" %} + {% if attr[0] == "color" %} + {% assign color = attr[1] %} + {% elsif attr[0] == "link" %} + {% assign link = attr[1] %} + {% elsif attr[0] == "text" %} + {% assign text = attr[1] %} + {% elsif attr[0] == "icon" %} + {% assign icon = attr[1] %} + {% elsif attr[0] == "tooltip" %} + {% assign tooltip = attr[1] %} {% endif %} - - {% endfor %} + {% endfor %} + {% include badge.html + link=link + color=color + text=text + icon=icon + tooltip=tooltip + %} + {% assign color = nil %} + {% assign link = nil %} + {% assign text = nil %} + {% assign icon = nil %} + {% assign tooltip = nil %} + {% endfor %} {% endif %}

-
+ @@ -95,7 +126,7 @@
{% if include.windows %} {% if include.windows != "" %} - + {% else %} @@ -105,7 +136,7 @@ {% if include.mac %} {% if include.mac != "" %} - + {% else %} @@ -115,7 +146,7 @@ {% if include.linux %} {% if include.linux != "" %} - + {% else %} @@ -125,7 +156,7 @@ {% if include.freebsd %} {% if include.freebsd != "" %} - + {% else %} @@ -135,7 +166,7 @@ {% if include.openbsd %} {% if include.openbsd != "" %} - + {% else %} @@ -145,7 +176,7 @@ {% if include.netbsd %} {% if include.netbsd != "" %} - + {% else %} @@ -155,7 +186,7 @@ {% if include.firefox %} {% if include.firefox != "" %} - + {% else %} @@ -165,7 +196,7 @@ {% if include.chrome %} {% if include.chrome != "" %} - + {% else %} @@ -175,7 +206,7 @@ {% if include.safari %} {% if include.safari != "" %} - + {% else %} @@ -185,7 +216,7 @@ {% if include.opera %} {% if include.opera != "" %} - + {% else %} @@ -195,7 +226,7 @@ {% if include.edge %} {% if include.edge != "" %} - + {% else %} @@ -205,7 +236,7 @@ {% if include.fdroid %} {% if include.fdroid != "" %} - + {% else %} @@ -215,7 +246,7 @@ {% if include.googleplay %} {% if include.googleplay != "" %} - + {% else %} @@ -225,7 +256,7 @@ {% if include.android %} {% if include.android != "" %} - + {% else %} @@ -235,7 +266,7 @@ {% if include.ios %} {% if include.ios != "" %} - + {% else %} @@ -245,7 +276,7 @@ {% if include.sailfish %} {% if include.sailfish != "" %} - + {% else %} @@ -255,7 +286,7 @@ {% if include.web %} {% if include.web != "" %} - + {% else %} @@ -268,25 +299,25 @@ {{include.icon3}} {% if include.github %} - + {% endif %} {% if include.gitlab %} - + {% endif %} {% if include.git %} - + {% endif %} {% if include.source %} - + {% endif %} diff --git a/_includes/footer.html b/_includes/footer.html index beebe2f6..38ea9d03 100644 --- a/_includes/footer.html +++ b/_includes/footer.html @@ -6,37 +6,37 @@ @@ -44,25 +44,32 @@

Copy URL and Description

- + For easy copy and paste. Share this text snippet.

-
- CC0CC0 + -
- - Contact + - @@ -73,13 +80,18 @@

No Ads, No Google Analytics, No Affiliates, No Cross-Site Requests. - privacytools.io is a socially motivated website that provides information for protecting your data security and privacy. Never trust any company with your privacy, always encrypt. - View our privacy statement. + {{ site.name }} is a socially motivated website that provides information for protecting your data security and privacy. Never trust any company with your privacy, always encrypt.

Tor v3: privacy2zbidut4m4jyj3ksdqidzkw3uoip2vhvhbvwxbqux5xy5obyd.onion (Learn More)

+ + Privacy Statement | + Notices & Disclaimers | + Brand Assets & Guidelines | + Status Page +
diff --git a/_includes/head.html b/_includes/head.html index cce89706..26c31897 100644 --- a/_includes/head.html +++ b/_includes/head.html @@ -5,44 +5,61 @@ - - - - + {% if page.title %} - {{ page.title }} | privacytools.io - + {{ page.title }} | {{ site.name }} + {% else %} {{ site.title }} {% endif %} - + - + + + {% if page.url == "/" %} + + {% endif %} - - - - - - - - - - - - - - - + + + + + + + + + + - - + + {% unless page.url == '/sponsors/' %}{% endunless %} diff --git a/_includes/nav.html b/_includes/nav.html index 81fb1edf..129f4fe4 100644 --- a/_includes/nav.html +++ b/_includes/nav.html @@ -1,16 +1,16 @@ - +
+ diff --git a/_includes/scripts.html b/_includes/scripts.html index d5e84077..504aa551 100644 --- a/_includes/scripts.html +++ b/_includes/scripts.html @@ -1,14 +1,4 @@ - - - + + - - - - diff --git a/_includes/sections/android-addons.html b/_includes/sections/android-addons.html index c44a849a..9220156f 100644 --- a/_includes/sections/android-addons.html +++ b/_includes/sections/android-addons.html @@ -1,28 +1,24 @@

Android Privacy Add-ons

- -
- NetGuard + NetGuard

Control your traffic with NetGuard

-

NetGuard provides simple and advanced ways to block certain apps' access to the internet without the help of root privileges. Applications and addresses can individually be allowed or denied access to your Wi-Fi and/or mobile connection, allowing you to control which apps are able to call home or not. +

NetGuard provides simple and advanced methods to block certain apps from accessing the internet, without requiring root privileges. Applications and addresses can be individually allowed or denied access to your Wi-Fi and/or mobile connections, allowing you to control exactly which apps are able to phone home or not.

- Orbot + Orbot

Tor for Android with Orbot

-

Orbot is a free proxy app that empowers other apps to use the internet more securely. Orbot uses Tor to encrypt your Internet traffic and then hides it by bouncing through a series of computers around the world. Root Mode: Orbot can be configured to transparently proxy all of your Internet traffic through Tor. You can also choose which specific apps you want to use through Tor. +

Orbot is a free proxy app that empowers other apps to use the internet more securely. Orbot uses Tor to encrypt your Internet traffic and then hides it by bouncing through a series of computers around the world.

@@ -32,6 +28,6 @@ diff --git a/_includes/sections/android-operating-systems.html b/_includes/sections/android-operating-systems.html new file mode 100644 index 00000000..6825a1bf --- /dev/null +++ b/_includes/sections/android-operating-systems.html @@ -0,0 +1,53 @@ +

Mobile Operating Systems

+ +

Android-based Operating Systems

+ + + +{% include cardv2.html + title="CalyxOS" + image="/assets/img/svg/3rd-party/calyxos.svg" + description='CalyxOS is a custom ROM based on the Android Open Source Project with Pixel phones. It aims to be secure and private by default including a number of good choices for default applications. It also supports verified boot.' + badges="info:AOSP" + website="https://calyxos.org" + gitlab="https://gitlab.com/calyxos" +%} + +{% include cardv2.html + title="GrapheneOS" + image="/assets/img/svg/3rd-party/grapheneos.svg" + image-dark="/assets/img/svg/3rd-party/grapheneos-dark.svg" + description='GrapheneOS (formerly known as CopperheadOS) is a free and open-source security- and privacy-focused mobile operating system built on top of the Android Open Source Project. It currently specifically targets devices offering strong hardware security.' + badges="info:AOSP" + website="https://grapheneos.org/" + github="https://github.com/GrapheneOS/" +%} + +{% include cardv2.html + title="LineageOS (Official Builds)" + image="/assets/img/svg/3rd-party/lineageos.svg" + description='LineageOS is a custom ROM based on the Android Open Source Project with official support for a wide variety of devices. The project is the successor to the popular CyanogenMod project, focusing on system control and customization, device longevity, and privacy. For security reasons, we do not recommend third-party builds of LineageOS for unsupported devices.' + badges="info:AOSP" + website="https://www.lineageos.org/" + privacy-policy="https://www.lineageos.org/legal/" + github="https://github.com/LineageOS" +%} + +

Worth Mentioning

+ +
    +
  • + MicroG + {% include badge.html + color="info" + text="Add-on Package" + %} + {% include badge.html + color="warning" + icon="far fa-question-circle" + %} + - A project that aims to reimplement the proprietary Google Play Services in the Android operating system with a FLOSS replacement. The microG project also maintains a fork of LineageOS with microG and F-Droid preinstalled at Lineage for microG. +
  • +
diff --git a/_includes/sections/browser-addons.html b/_includes/sections/browser-addons.html index 023f05bf..beebabc2 100644 --- a/_includes/sections/browser-addons.html +++ b/_includes/sections/browser-addons.html @@ -1,117 +1,193 @@

Recommended Browser Add-ons

- {% include cardv2.html -title="Nextcloud - Choose your hoster" -image="/assets/img/provider/Nextcloud.png" -description="Nextcloud is similar in functionality to the widely-used Dropbox, with the difference being that Nextcloud is free and open-source, thereby allowing anyone to install and operate it without charge on a private server, with no limits on storage space or the number of connected clients." -website="https://nextcloud.com/" -forum="https://forum.privacytools.io/t/discussion-nextcloud/287" -github="https://github.com/nextcloud" -windows="https://nextcloud.com/install/#install-clients" -mac="https://nextcloud.com/install/#install-clients" -linux="https://nextcloud.com/install/#install-clients" -freebsd="https://www.freshports.org/www/nextcloud/" -openbsd="http://openports.se/www/nextcloud" -netbsd="http://pkgsrc.se/www/php-nextcloud" -ios="https://itunes.apple.com/us/app/nextcloud/id1125420102?mt=8" -fdroid="https://f-droid.org/packages/com.nextcloud.client/" -googleplay="https://play.google.com/store/apps/details?id=com.nextcloud.client" + title="Nextcloud - Choose your hoster" + image="/assets/img/svg/3rd-party/nextcloud.svg" + description="Nextcloud is a suite of free and open-source client-server software for creating your own file hosting services on a private server you control. The only limits on storage and bandwidth are the limits on the server provider you choose." + website="https://nextcloud.com/" + privacy-policy="https://nextcloud.com/privacy/" + forum="https://forum.privacytools.io/t/discussion-nextcloud/287" + windows="https://nextcloud.com/install/#install-clients" + mac="https://nextcloud.com/install/#install-clients" + linux="https://nextcloud.com/install/#install-clients" + freebsd="https://www.freshports.org/www/nextcloud/" + openbsd="http://openports.se/www/nextcloud" + netbsd="http://pkgsrc.se/www/php-nextcloud" + fdroid="https://f-droid.org/packages/com.nextcloud.client/" + googleplay="https://play.google.com/store/apps/details?id=com.nextcloud.client" + ios="https://itunes.apple.com/us/app/nextcloud/id1125420102" + github="https://github.com/nextcloud" %} -

Worth Mentioning

    diff --git a/_includes/sections/decentralized-video.html b/_includes/sections/decentralized-video.html new file mode 100644 index 00000000..6893b395 --- /dev/null +++ b/_includes/sections/decentralized-video.html @@ -0,0 +1,14 @@ +

    Decentralized Video Platforms

    + + + +{% include cardv2.html + title="PeerTube" + image="/assets/img/svg/3rd-party/peertube.svg" + description='PeerTube, developed by Framasoft, is a free and decentralized alternative to video platforms, with over 400,000 videos published by over 50,000 users and viewed over 10 million times. If you are looking for a server to join, you are welcome to join our hosted instance: tube.privacytools.io' + website="https://joinpeertube.org" + github="https://github.com/Chocobozzz/PeerTube" + web="https://joinpeertube.org/#what-is-peertube" +%} diff --git a/_includes/sections/dns.html b/_includes/sections/dns.html index d684e70f..21670631 100644 --- a/_includes/sections/dns.html +++ b/_includes/sections/dns.html @@ -1,44 +1,16 @@ -

    Domain Name System (DNS)

    - -{% - include cardv2.html - title="Njalla - Domain Registration" - image="/assets/img/provider/Njalla.png" - description="Njalla is a privacy-aware domain registration service based in Nevis that only needs your email or XMPP address in order to register a domain name for you. It is created by people from The Pirate Bay and IPredator VPN. Accepted payments: Bitcoin, Litecoin, Monero, DASH, Bitcoin Cash and PayPal." - website="https://njal.la/" - tor="http://njalladnspotetti.onion" - forum="https://forum.privacytools.io/t/discussion-njalla/339" -%} - -{% - include cardv2.html - title="DNSCrypt-Proxy - Tool" - image="/assets/img/tools/DNSCrypt-Proxy.png" - description="DNSCrypt-Proxy is a command-line DNS proxy with support for the encrypted DNS protocols, DNS over HTTPS and DNSCrypt. Can cache results to improve speed, and allows filtering, forwarding, and cloaking." - website="https://github.com/jedisct1/dnscrypt-proxy/" - forum="https://forum.privacytools.io/t/discussion-dnscrypt-proxy/1498" - github="https://github.com/jedisct1/dnscrypt-proxy/" - windows="https://github.com/jedisct1/dnscrypt-proxy/releases" - linux="" - mac="https://github.com/jedisct1/dnscrypt-proxy/releases" - freebsd="https://www.freshports.org/dns/dnscrypt-proxy2/" - openbsd="http://openports.se/net/dnscrypt-proxy" - netbsd="http://pkgsrc.se/net/dnscrypt-proxy2" - android="" - ios="" -%} - -

    Encrypted ICANN DNS Providers

    +

    + Encrypted DNS Resolvers +

    -
    +
    - + @@ -63,29 +35,35 @@ - + @@ -134,21 +120,22 @@ malicious domains - + + + Based on server choice only for DoH - - + + - + @@ -191,8 +184,12 @@ @@ -205,47 +202,6 @@ - - - - - - - - - - - - - - @@ -281,7 +239,7 @@ - + @@ -312,57 +272,7 @@ - - - - - - - - - - - - - - - + @@ -385,8 +297,10 @@ @@ -430,39 +346,6 @@ - - - - - - - - - - - - - - @@ -521,13 +406,17 @@ - + @@ -543,81 +432,138 @@
    ICANN DNS ProviderDNS Provider Server Locations Privacy Policy Type - - WWW + + CommercialNoSome DoH, DoT, DNSCrypt Yes Yes - Ads, trackers, - - - malicious domains + Based on server choice - - WWW + + + + Choopa, LLC, + Serveroid, LLC @@ -98,22 +76,30 @@ - - Switzerland, - - - - Japan, + + Finland, - Germany + Germany, + + + + Japan + + + + Singapore - - WWW - +
    + +
    Hobby Project No - - WWW + + Choopa, LLC, - - Data Center Light, - Hetzner Online GmbH @@ -157,7 +144,7 @@
    - Cloudflare + Cloudflare Anycast (based in @@ -166,16 +153,22 @@ - - WWW + + CommercialSomeDoH, DoT, DNSCryptSomeDoH, DoT Yes YesNo + + Based on server choice + + ? Self
    - - WWW + AssociationSelf
    - dnswarden - - - - Germany - - - - WWW - - Hobby ProjectNo - - DoH, - - DoT , - - - DNSCrypt - YesYes - - Based on server choice - - ? - - Hetzner Online GmbH - -
    Foundation for Applied Privacy @@ -257,8 +213,10 @@ - - WWW + + Non-Profit
    NextDNS @@ -293,8 +251,10 @@ - - WWW + + Commercial? Self
    - NixNet - - - Anycast (based in - - US), - - - - US, - - - - Luxembourg - - - - WWW - - - - Informal collective - - NoDoH, DoTYesYes - - Based on server choice - - - - WWW - - - - FranTech Solutions - -
    PowerDNS @@ -374,8 +284,10 @@ - - WWW + + Hobby ProjectNo No - - WWW + + @@ -398,17 +312,19 @@
    - Quad9 + Quad9 Anycast (based in - - US) + + Switzerland) - - WWW + + Non-Profit
    - SecureDNS - - - - The Netherlands - - - - WWW - - Hobby ProjectNoDoH, DoT, DNSCryptYesYes - - Based on server choice - - ? - - DigitalOcean, Inc. - -
    Snopyta @@ -474,12 +357,14 @@ - - WWW + + - + Informal collective - - WWW - +
    + +
    Hobby Project NoDoT DoH, DoT Yes No No
    -

    Terms

    +

    + + + Encrypted DNS Client Recommendations for Desktop +

    + +{% + include cardv2.html + title="Unbound" + image="/assets/img/svg/3rd-party/unbound.svg" + description='A validating, recursive, caching DNS resolver, supporting DNS-over-TLS, and has been independently audited.' + website="https://nlnetlabs.nl/projects/unbound/about/" + forum="https://forum.privacytools.io/t/discussion-unbound/3563" + github="https://github.com/NLnetLabs/unbound" +%} + +{% + include cardv2.html + title="dnscrypt-proxy" + image="/assets/img/svg/3rd-party/dnscrypt-proxy.svg" + description='A DNS proxy with support for DNSCrypt, DNS-over-HTTPS, and Anonymized DNSCrypt, a relay-based protocol that the hides client IP address.' + website="https://github.com/DNSCrypt/dnscrypt-proxy/wiki" + forum="https://forum.privacytools.io/t/discussion-dnscrypt-proxy/1498" + github="https://github.com/DNSCrypt/dnscrypt-proxy" +%} + +{% + include cardv2.html + title="Stubby" + image="/assets/img/png/3rd-party/stubby.png" + description='An application that acts as a local DNS-over-TLS stub resolver. Stubby can be used in combination with Unbound by managing the upstream TLS connections (since Unbound cannot yet re-use TCP/TLS connections) with Unbound providing a local cache.' + website="https://dnsprivacy.org/wiki/display/DP/DNS+Privacy+Daemon+-+Stubby" + forum="https://forum.privacytools.io/t/discussion-stubby/3582" + github="https://github.com/getdnsapi/stubby" +%} + +{% + include cardv2.html + title="Firefox's built-in DNS-over-HTTPS resolver" + image="/assets/img/svg/3rd-party/firefox_browser.svg" + description='Firefox comes with built-in DNS-over-HTTPS support for NextDNS and Cloudflare but users can manually use any other DoH resolver.' + labels="color==warning::icon==fas fa-exclamation-triangle::link==https://developers.cloudflare.com/1.1.1.1/privacy/firefox::text==Warning::tooltip==Cloudflare logs a limited amount of data about the DNS requests that are sent to their custom resolver for Firefox." + website="https://support.mozilla.org/en-US/kb/firefox-dns-over-https" + privacy-policy="https://wiki.mozilla.org/Security/DOH-resolver-policy" + forum="https://forum.privacytools.io/t/discussion-firefox-s-built-in-dns-over-https-resolver/3564" +%} + +

    + + + Encrypted DNS Client Recommendations for Android +

    + +{% + include cardv2.html + title="Android 9's built-in DNS-over-TLS resolver" + image="/assets/img/svg/3rd-party/android.svg" + description="Android 9 (Pie) comes with built-in DNS-over-TLS support without the need for a 3rd-party application." + labels="color==warning::icon==fas fa-exclamation-triangle::link==https://developers.google.com/speed/public-dns/docs/using#android_9_pie_or_later::text==Warning::tooltip==Android 9's DoT settings have no effect when used concurrently with VPN-based apps which override the DNS." + website="https://support.google.com/android/answer/9089903#private_dns" + forum="https://forum.privacytools.io/t/discussion-android-9s-built-in-dns-over-tls-resolver/3562" +%} + +{% + include cardv2.html + title="Nebulo" + image="/assets/img/png/3rd-party/nebulo.png" + description='An open-source Android client supporting DNS-over-HTTPS and DNS-over-TLS, caching DNS responses, and locally logging DNS queries.' + website="https://git.frostnerd.com/PublicAndroidApps/smokescreen/-/blob/master/README.md" + privacy-policy="https://smokescreen.app/privacypolicy" + forum="https://forum.privacytools.io/t/discussion-nebulo/3565" + fdroid="https://git.frostnerd.com/PublicAndroidApps/smokescreen#f-droid" + googleplay="https://play.google.com/store/apps/details?id=com.frostnerd.smokescreen" + source="https://git.frostnerd.com/PublicAndroidApps/smokescreen" +%} + +

    + + + Encrypted DNS Client Recommendations for iOS +

    + +{% + include cardv2.html + title="DNSCloak" + image="/assets/img/png/3rd-party/dnscloak.png" + description='An open-source iOS client supporting DNS-over-HTTPS, DNSCrypt, and dnscrypt-proxy options such as caching DNS responses, locally logging DNS queries, and custom block lists. Users can add custom resolvers by DNS stamp.' + website="https://github.com/s-s/dnscloak/blob/master/README.md" + privacy-policy="https://drive.google.com/file/d/1050No_pU74CAWUS5-BwQWyO2x_aiMzWc/view" + forum="https://forum.privacytools.io/t/discussion-dnscloak/3566" + ios="https://apps.apple.com/app/id1452162351" + github="https://github.com/s-s/dnscloak" +%} + +

    + + + Apple's native support +

    + +

    + In iOS, iPadOS, tvOS 14 and macOS 11, DoT and DoH were introduced. DoT and DoH are supported natively by installation of profiles (through mobileconfig files opened in Safari). + After installation, the encrypted DNS server can be selected in Settings → General → VPN and Network → DNS. +

      -
    • DNS-over-TLS (DoT) - A security protocol for encrypted DNS on a dedicated port 853. Some providers support port 443 which generally works everywhere while port 853 is often blocked by restrictive firewalls. DoT has two modes:
    • -
        -
      • Oppurtunistic mode: the client attempts to form a DNS-over-TLS connection to the server on port 853 without performing certificate validation. If it fails, it will use unencrypted DNS.
      • -
      • Strict mode: the client connects to a specific hostname and performs certificate validation for it. If it fails, no DNS queries are made until it succeeds.
      • -
      -
    • DNS-over-HTTPS (DoH) - Similar to DoT, but uses HTTPS instead, being indistinguishable from "normal" HTTPS traffic on port 443.
    • -
    • DNSCrypt - An older yet robust method of encrypting DNS.
    • +
    • Signed profiles are offered by AdGuard and NextDNS.
    • +
    • User contributed unsigned profiles for several DNS providers are hosted by encrypted-dns.party.
    -

    How to verify DNS is encrypted

    +

    + + + Definitions +

    - +

    DNS-over-TLS (DoT)

    +

    + A security protocol for encrypted DNS on a dedicated port 853. Some providers support port 443 which generally works everywhere while port 853 is often blocked by restrictive firewalls. +

    -

    Worth Mentioning and Additional Information

    +

    DNS-over-HTTPS (DoH)

    +

    + Similar to DoT, but uses HTTPS instead, being indistinguishable from "normal" HTTPS traffic on port 443 and more difficult to block. {% include badge.html color="warning" text="Warning" tooltip="DoH contains metadata such as user-agent (which may include system information) that is sent to the DNS server." link="https://tools.ietf.org/html/rfc8484#section-8.2" icon="fas fa-exclamation-triangle" %} +

    - +

    DNSCrypt

    +

    + With an open specification, DNSCrypt is an older, yet robust method for encrypting DNS. +

    + +

    Anonymized DNSCrypt

    +

    + A lightweight protocol that hides the client IP address by using pre-configured relays to forward encrypted DNS data. This is a relatively new protocol created in 2019 currently only supported by dnscrypt-proxy and a limited number of relays. +

    diff --git a/_includes/sections/email-alternatives.html b/_includes/sections/email-alternatives.html deleted file mode 100644 index fa83fe6d..00000000 --- a/_includes/sections/email-alternatives.html +++ /dev/null @@ -1,34 +0,0 @@ -

    Email Alternatives

    - -{% include cardv2.html -title="Bitmessage" -image="/assets/img/tools/Bitmessage.png" -description="Bitmessage is a P2P communications protocol used to send encrypted messages to another person or to many subscribers. It is decentralized and trustless, -meaning that you need not inherently trust any entities like root certificate authorities. It uses strong authentication which means that the sender of a message cannot be spoofed, and it aims to hide \"non-content\" data." -website="https://bitmessage.org/" -forum="https://forum.privacytools.io/t/discussion-bitmessage/661" -github="https://github.com/Bitmessage/PyBitmessage" -windows="https://github.com/Bitmessage/PyBitmessage/releases" -mac="https://github.com/Bitmessage/PyBitmessage/releases" -linux="https://repology.org/project/pybitmessage/versions" -%} - -{% include cardv2.html -title="RetroShare" -image="/assets/img/tools/RetroShare.png" -description="Retroshare creates encrypted connections to your friends. Nobody can spy on you. Retroshare is completely decentralized. This means there are no central servers. It is entirely open-source and free. There are no costs, no ads, and no Terms of Service." -website="https://retroshare.cc/" -forum="https://forum.privacytools.io/t/discussion-retroshare/662" -github="https://github.com/RetroShare/RetroShare" -windows="https://retroshare.cc/downloads.html#windows" -mac="https://retroshare.cc/downloads.html#mac" -linux="https://retroshare.cc/downloads.html#gnulinux" -freebsd="https://retroshare.cc/downloads.html#freebsd" -%} - - -

    Worth Mentioning

    - -
      -
    • I2P-Bote - End-to-end encrypted decentralized mail system within the I2P network.
    • -
    diff --git a/_includes/sections/email-clients.html b/_includes/sections/email-clients.html index f1f8f814..3b79f346 100644 --- a/_includes/sections/email-clients.html +++ b/_includes/sections/email-clients.html @@ -1,50 +1,99 @@ -

    Email Clients

    +

    Desktop Email Clients

    {% include cardv2.html -title="Thunderbird" -image="/assets/img/tools/Thunderbird.png" -description="Thunderbird is a free, open source, cross-platform email, newsgroup, news feed, and chat (XMPP, IRC, Twitter) client developed by community, previously by the Mozilla Foundation." -website="https://www.thunderbird.net/" -forum="https://forum.privacytools.io/t/discussion-thunderbird/659" -source="https://hg.mozilla.org/comm-central/" -windows="https://www.thunderbird.net/en-US/" -mac="https://www.thunderbird.net/en-US/" -linux="https://www.thunderbird.net/en-US/" -freebsd="https://www.freshports.org/mail/thunderbird/" -openbsd="http://openports.se/mail/mozilla-thunderbird" -netbsd="http://pkgsrc.se/mail/thunderbird" + title="Thunderbird" + image="/assets/img/svg/3rd-party/thunderbird.svg" + description="Thunderbird is a free, open source, cross-platform email, newsgroup, news feed, and chat (XMPP, IRC, Twitter) client developed by the Thunderbird community, and previously by the Mozilla Foundation." + website="https://www.thunderbird.net/" + privacy-policy="https://www.mozilla.org/privacy/thunderbird/" + forum="https://forum.privacytools.io/t/discussion-thunderbird/659" + source="https://hg.mozilla.org/comm-central/" + windows="https://www.thunderbird.net" + mac="https://www.thunderbird.net" + linux="https://www.thunderbird.net/" + freebsd="https://www.freshports.org/mail/thunderbird/" + openbsd="http://openports.se/mail/mozilla-thunderbird" + netbsd="http://pkgsrc.se/mail/thunderbird" %} {% include cardv2.html -title="Claws Mail" -image="/assets/img/tools/Claws-Mail.png" -description="Claws Mail is a free and open source, GTK-based email and news client. It offers easy configuration and an abundance of features. It is included with Gpg4win, an encryption suite for Windows." -website="https://www.claws-mail.org/" -forum="https://forum.privacytools.io/t/discussion-claws-mail/660" -git="https://git.claws-mail.org/" -windows="https://www.claws-mail.org/win32/" -mac="https://www.claws-mail.org/faq/index.php/Installation_and_Configuration#What_do_I_need_to_compile_Claws_Mail.3F" -linux="https://www.claws-mail.org/downloads.php?section=downloads" -freebsd="https://www.freshports.org/mail/claws-mail/" -openbsd="http://openports.se/mail/claws-mail" -netbsd="http://pkgsrc.se/mail/claws-mail" + title="Mailpile" + image="/assets/img/svg/3rd-party/mailpile.svg" + description="Mailpile is a free, community funded, open source email client with user-friendly encryption and privacy features." + website="https://www.mailpile.is/" + privacy-policy="https://www.mailpile.is/privacy.html" + tor="clgs64523yi2bkhz.onion" + forum="https://forum.privacytools.io/t/" + github="https://github.com/mailpile/Mailpile" + linux="https://www.mailpile.is/download/linux.html" %} - -

    Privacy Email Tools

    - -
      -
    • gpg4usb - A very easy to use and small portable editor to encrypt and decrypt any text-message or -file. For Windows and Linux. GPG tutorial.
    • -
    • Mailvelope - A browser extension that enables the exchange of encrypted emails following the OpenPGP encryption standard.
    • -
    • Enigmail - A security extension to Thunderbird and Seamonkey. It enables you to write and receive email messages signed and/or encrypted with the OpenPGP standard.
    • -
    • TorBirdy - TorBirdy configures Thunderbird to make connections over the Tor anonymity network. This extension is in beta and should be considered experimental.
    • -
    • Email Privacy Tester - This tool will send an Email to your address and perform privacy-related tests.
    • -
    +{% include cardv2.html + title="Mailvelope" + image="/assets/img/svg/3rd-party/mailvelope.svg" + description="Mailvelope is a browser extension that enables the exchange of encrypted emails following the OpenPGP encryption standard." + website="https://www.mailvelope.com/en" + privacy-policy="https://www.mailvelope.com/en/privacy-policy" + forum="https://forum.privacytools.io/t/" + github="https://github.com/mailvelope/mailvelope" + firefox="https://addons.mozilla.org/firefox/addon/mailvelope/" + chrome="https://chrome.google.com/webstore/detail/mailvelope/kajibbejlbohfaggdiogboambcijhkke?hl" + edge="https://microsoftedge.microsoft.com/addons/detail/mailvelope/dgcbddhdhjppfdfjpciagmmibadmoapc" +%}

    Worth Mentioning

      -
    • K-9 Mail - An independent mail application for Android. It supports both POP3 and IMAP mailboxes, but only supports push mail for IMAP.
    • -
    • GNU Privacy Guard - Email Encryption. GnuPG is a GPL Licensed alternative to the PGP suite of cryptographic software. Tutorial. Use GPGTools for macOS.
    • -
    • Mailpile (Beta) - A modern, fast web-mail client with user-friendly encryption and privacy features.
    • +
    • NeoMutt - NeoMutt is an open-source command line mail reader (or MUA) for Linux and BSD. It’s a fork of Mutt with added features.
    + + + +

    Mobile Email Clients

    + +

    Android Email Clients

    + +{% include cardv2.html + title="FairEmail" + image="/assets/img/svg/3rd-party/fairemail.svg" + description="FairEmail is a minimal, open source email app, using open standards (IMAP, SMTP, OpenPGP) with a low data and battery usage." + website="https://email.faircode.eu/" + privacy-policy="https://github.com/M66B/FairEmail/blob/master/PRIVACY.md" + forum="https://forum.privacytools.io/t/" + github="https://github.com/M66B/FairEmail" + fdroid="https://f-droid.org/en/packages/eu.faircode.email/" + googleplay="https://play.google.com/store/apps/details?id=eu.faircode.email" +%} + +{% include cardv2.html + title="K-9 Mail" + image="/assets/img/svg/3rd-party/k9mail.svg" + description="K-9 Mail is an independent mail application that supports both POP3 and IMAP mailboxes, but only supports push mail for IMAP." + website="https://k9mail.app/" + privacy-policy="https://k9mail.app/privacy" + forum="https://forum.privacytools.io/t/" + github="https://github.com/k9mail" + fdroid="https://f-droid.org/packages/com.fsck.k9/" + googleplay="https://play.google.com/store/apps/details?id=com.fsck.k9" +%} + +

    iOS Email Clients

    + +{% include cardv2.html + title="Canary Mail" + image="/assets/img/svg/3rd-party/canarymail.svg" + labels="color==warning::link==https://canarymail.io/faq.html::text==Closed source::tooltip==The source programming code for Canary Mail is not available. Canary Mail is a proprietary application." + description="Canary Mail is a paid email client designed to make end-to-end encryption seamless with security features such as a biometric app lock." + website="https://canarymail.io/" + privacy-policy="https://canarymail.io/privacy.html" + forum="https://forum.privacytools.io/t/" + ios="https://apps.apple.com/us/app/canary-mail/id1236045954" +%} + + +

    Worth Mentioning

    + +
      +
    • Letterbox - Letterbox is a free open-source mail client for iOS made as a part of an ongoing research project at the Freie Universität Berlin, Germany.
    • +
    + diff --git a/_includes/sections/email-providers.html b/_includes/sections/email-providers.html index a0e9b178..31573a39 100644 --- a/_includes/sections/email-providers.html +++ b/_includes/sections/email-providers.html @@ -1,270 +1,237 @@ -

    Privacy-Conscious Email Providers - No Affiliates

    +

    Recommended Email Services

    -
    - - - - - - - - - - - - - - +
    -
    +
    +
    + ProtonMail +
    +
    +

    ProtonMail {% include badge.html color="info" text="Free" %}

    +

    ProtonMail.com is an email service with a focus on privacy, encryption, security, and ease of use. They have been in operation since 2013. ProtonMail is based in Genève, Switzerland. Accounts start with 500 MB storage with their free plan.

    -
    - - - - - - - - - - +

    Free accounts have some limitations and do not allow the use of the ProtonMail Bridge, which is required to use a recommended email client (e.g. Thunderbird) or to search email by body text. Paid accounts are available starting at €48/y which include features like ProtonMail Bridge, additional storage, custom domain support, and more. The webmail and mobile apps can only search To:, From:, Date: and Subject: (this is likely to change when v4.0 of ProtonMail is released).

    - - - - - - - - - - - +
    {% include badge.html color="success" text="Domains and Aliases" %}
    +

    Paid ProtonMail users can use their own domain with the service. Catch-all addresses are supported with custom domains for Professional and Visionary plans. ProtonMail also supports subaddressing, which is useful for users who don't want to purchase a domain.

    - - - - - - - - - - - +
    {% include badge.html color="success" text="Account Security" %}
    +

    ProtonMail supports TOTP two factor authentication only. The use of a U2F security key is not yet supported. ProtonMail is planning to implement U2F upon completion of their Single Sign On (SSO) code.

    - - - - - - - - - - - +
    {% include badge.html color="success" text="Data Security" %}
    +

    ProtonMail has zero access encryption at rest for your emails, address book contacts, and calendars. This means the messages and other data stored in your account are only readable by you.

    - - - - - - - - - - - +
    {% include badge.html color="success" text="Email Encryption" %}
    +

    ProtonMail has integrated OpenPGP encryption in their webmail. Emails to other ProtonMail users are encrypted automatically, and encryption to non-ProtonMail users with an OpenPGP key can be enabled easily in your account settings. They also allow you to encrypt messages to non-ProtonMail users without the need for them to sign up for a ProtonMail account or use software like OpenPGP.

    +

    ProtonMail also supports the discovery of public keys via HTTP from their Web Key Directory (WKD). This allows users outside of ProtonMail to find the OpenPGP keys of ProtonMail users easily, for cross-provider E2EE.

    - - - - - - - - - - - +
    {% include badge.html color="warning" text=".onion Service" %}
    +

    ProtonMail's login and services are accessible over Tor, protonmailrmez3lotccipshtkleegetolb73fuirgj7r4o4vfu7ozyd.onion

    - - - - - - - - - - - +
    {% include badge.html color="info" text="Extra Functionality" %}
    +

    ProtonMail offers a "Visionary" account for €24/Month, which also enables access to ProtonVPN in addition to providing multiple accounts, domains, aliases, and extra storage.

    + + +
    +
    + Mailbox +
    +
    +

    Mailbox.org {% include badge.html color="info" text="€12/y" %}

    +

    Mailbox.org is an email service with a focus on being secure, ad-free, and privately powered by 100% eco-friendly energy. They have been in operation since 2014. Mailbox.org is based in Berlin, Germany. Accounts start with 2 GB of storage, which can be upgraded as needed.

    -
    - - - - - - - - - - +
    {% include badge.html color="warning" text="Payment Methods" %}
    +

    Mailbox.org doesn't accept Bitcoin or any other cryptocurrencies as a result of their payment processor BitPay suspending operations in Germany. However, they do accept Cash by mail, cash payment to bank account, bank transfer, credit card, PayPal and couple of German-specific processors: paydirekt and Sofortüberweisung.

    - - - - - - - - - - - +
    {% include badge.html color="success" text="Account Security" %}
    +

    Mailbox.org supports two factor authentication for their webmail only. You can use either TOTP or a Yubikey via the Yubicloud. Web standards such as U2F and WebAuthn are not yet supported.

    - - - - - - - - - - - +
    {% include badge.html color="warning" text="Data Security" %}
    +

    Mailbox.org allows for encryption of incoming mail using their encrypted mailbox. New messages that you receive will then be immediately encrypted with your public key.

    +

    However, Open-Exchange, the software platform used by Mailbox.org, does not support the encryption of your address book and calendar. A standalone option may be more appropriate for that information.

    - - - - - - - - - - - +
    {% include badge.html color="success" text="Email Encryption" %}
    +

    Mailbox.org has integrated encryption in their webmail, which simplifies sending messages to users with public OpenPGP keys. They also allow remote recipients to decrypt an email on Mailbox.org's servers. This feature is useful when the remote recipient does not have OpenPGP and cannot decrypt a copy of the email in their own mailbox.

    +

    Mailbox.org also supports the discovery of public keys via HTTP from their Web Key Directory (WKD). This allows users outside of Mailbox.org to find the OpenPGP keys of Mailbox.org users easily, for cross-provider E2EE.

    - -
    Email ProviderWebsiteSinceJurisdictionStorageYearly PriceBitcoinEncryptionOwn Domain
    - Disroot - - WWW - 2015 - - Netherlands - - 1 GBFreeAcceptedBuilt-inYes
    - Kolab Now - - WWW - 2010 - - Switzerland - - 2 GB$ 60AcceptedNoYes
    - mailbox.org +
    {% include badge.html color="success" text="Payment Methods" %}
    +

    ProtonMail accepts Bitcoin in addition to accepting credit/debit cards and PayPal.

    -
    - WWW - 2014 - - Germany - - 2 GB12 €AcceptedBuilt-inYes
    - Mailfence - - WWW - 2013 - - Belgium - - 500 MBFreeAcceptedBuilt-inYes
    - Neomailbox - - WWW - 2003 - - Switzerland - - 1 GB$ 49.95AcceptedBuilt-inYes
    - Posteo - - WWW - 2009 - - Germany - - 2 GB12 €NoBuilt-inNo
    - Protonmail - - WWW - Tor - 2013 - - Switzerland - - 500 MBFreeAcceptedBuilt-inYes
    - Runbox +
    {% include badge.html color="success" text="Domains and Aliases" %}
    +

    Mailbox.org lets users use their own domain and they support catch-all addresses. Mailbox.org also supports subaddressing, which is useful for users who don't want to purchase a domain.

    -
    - WWW - 1999 - - Norway - - 1 GB$ 19.95AcceptedNoYes
    - Soverin - - WWW - 2015 - - Netherlands - - 25 GB29 €NoNoYes
    - StartMail - - WWW - 2014 - - Netherlands - - 10 GB$ 59.95AcceptedBuilt-inYes
    - Tutanota - - WWW - 2011 - - Germany - - 1 GBFreeNoBuilt-inYes
    +
    {% include badge.html color="warning" text=".onion Service" %}
    +

    You can access your Mailbox.org account via IMAP/SMTP using their .onion service. However, their webmail interface cannot be accessed via their .onion service, and users may experience TLS certificate errors.

    + +
    {% include badge.html color="info" text="Extra Functionality" %}
    +

    All accounts come with limited cloud storage that can be encrypted. Mailbox.org also offers the alias @secure.mailbox.org, which enforces the TLS encryption on the connection between mail servers, otherwise the message will not be sent at all. Mailbox.org also supports Exchange ActiveSync in addition to standard access protocols like IMAP and POP3.

    +
    +
    +
    +
    + Posteo +
    +
    +

    Posteo {% include badge.html color="info" text="€12/y" %}

    +

    Posteo.de is an email provider that focuses on anonymous, secure, and private email. Their servers are powered by 100% sustainable energy. They have been in operation since 2009. Posteo is based in Germany and has a free 14-day trial. Posteo comes with 2 GB for the monthly cost and an extra gigabyte can be purchased for €0.25 per month.

    + +
    {% include badge.html color="warning" text="Domains and Aliases" %}
    +

    Posteo does not allow the use of custom domains, however users may still make use of subaddressing.

    + +
    {% include badge.html color="warning" text="Payment Methods" %}
    +

    Posteo does not accept Bitcoin or other cryptocurrencies as a form of payment, however they do accept cash-by-mail. They also accept credit/debit cards, bank transfers, and PayPal, and remove PII (personally identifiable information) that they receive in connection with these payment methods.

    + +
    {% include badge.html color="success" text="Account Security" %}
    +

    Posteo supports two factor authentication for their webmail only. You can use either TOTP a Yubikey with TOTP. Web standards such as U2F and WebAuthn are not yet supported.

    + +
    {% include badge.html color="warning" text="Data Security" %}
    +

    Posteo has zero access encryption for email storage. This means the messages stored in your account are only readable by you.

    +

    Posteo also supports the encryption of your address book contacts and calendars at rest. However, Posteo still uses standard CalDAV and CardDAV for calendars and contacts. These protocols do not support E2EE (End-To-End Encryption). A standalone option may be more appropiate.

    + +
    {% include badge.html color="success" text="Email Encryption" %}
    +

    Posteo has integrated encryption in their webmail, which simplifies sending messages to users with public OpenPGP keys. They also support the discovery of public keys via HTTP from their Web Key Directory (WKD). This allows users outside of Posteo to find the OpenPGP keys of Posteo users easily, for cross-provider E2EE.

    + +
    {% include badge.html color="danger" text=".onion Service" %}
    +

    Posteo does not operate a .onion service.

    + +
    {% include badge.html color="info" text="Extra Functionality" %}
    +

    Posteo allows users to set up their own mailing lists. Each account can create one list for free.

    +
    +
    +
    +
    + Disroot +
    +
    +

    Disroot {% include badge.html color="info" text="Free" %}

    +

    Disroot offers email amongst other services. The service is maintained by volunteers and its community. They have been in operation since 2015. Disroot is based in Amsterdam. Disroot is free and uses open source software such as Rainloop to provide service. Users support the service through donations and buying extra storage. The mailbox limit is 1 GB, but extra storage can be purchased 0.15€ per GB per month paid yearly.

    + +
    {% include badge.html color="success" text="Domains and Aliases" %}
    +

    Disroot lets users use their own domain. They have aliases, however you must manually apply for them.

    + +
    {% include badge.html color="success" text="Payment Methods" %}
    +

    Disroot accepts Bitcoin and Faircoin as payment methods. They also accept PayPal, direct bank deposit, and Patreon payments. Disroot is a not-for-profit organization that also accepts donations through Liberapay, Flattr, and Monero, but these payment methods cannot be used to purchase services.

    + +
    {% include badge.html color="success" text="Account Security" %}
    +

    Disroot supports TOTP two factor authentication for webmail only. They do not allow U2F security key authentication.

    + +
    {% include badge.html color="warning" text="Data Security" %}
    +

    Disroot uses full disk encryption. However, it doesn't appear to be "zero access", meaning it is technically possible for them to decrypt the data they have.

    +

    Disroot also uses the standard CalDAV and CardDAV protocols for calendars and contacts, which do not support E2EE. A standalone option may be more appropriate.

    + +
    {% include badge.html color="success" text="Email Encryption" %}
    +

    Disroot allows for encrypted emails to be sent from their webmail application using OpenPGP. However, Disroot has not integrated a Web Key Directory (WKD) for users on their platform.

    + +
    {% include badge.html color="danger" text=".onion Service" %}
    +

    Disroot does not operate a .onion service.

    + +
    {% include badge.html color="info" text="Extra Functionality" %}
    +

    They offer other services such as NextCloud, XMPP Chat, Etherpad, Ethercalc, Pastebin, Online polls and a Gitea instance. They also have an app available in F-Droid.

    +
    +
    +
    +
    + Tutanota +
    +
    +

    Tutanota {% include badge.html color="info" text="Free" %}

    +

    Tutanota.com is an email service with a focus on security and privacy through the use of encryption. Tutanota has been in operation since 2011 and is based in Hanover, Germany. Accounts start with 1GB storage with their free plan.

    +

    Tutanota doesn't allow the use of third-party email clients. There are plans to allow Tutanota pull email from external email accounts using the IMAP protocol. Email import is currently not possible.

    +

    Emails can be exported individually or by bulk selection. Tutanota does not allow for subfolders as you might expect with other email providers.

    +

    Tutanota is working on a desktop client and they have an app available in F-Droid. They also have their app in conventional stores such as App Store on iOS and Google Play for Android.

    + +
    {% include badge.html color="success" text="Domains and Aliases" %}
    +

    Paid Tutanota accounts can use up to 5 aliases and custom domains. Tutanota doesn't allow for subaddressing (plus addresses), but you can use a catch-all with a custom domain.

    + +
    {% include badge.html color="danger" text="Payment Methods" %}
    +

    Tutanota accepts only credit cards and PayPal.

    + +
    {% include badge.html color="success" text="Account Security" %}
    +

    Tutanota supports two factor authentication. Users can either use TOTP or U2F. U2F support is not yet available on Android.

    + +
    {% include badge.html color="success" text="Data Security" %}
    +

    Tutanota has zero access encryption at rest for your emails, address book contacts, and calendars. This means the messages and other data stored in your account are only readable by you.

    + +
    {% include badge.html color="warning" text="Email Encryption" %}
    +

    Tutanota does not use OpenPGP. Tutanota users can only receive encrypted emails when external users send them through a temporary Tutanota mailbox.

    +

    Tutanota does have plans to support AutoCrypt. This would allow for external users to send encrypted emails to Tutanota users as long as their email client supports the AutoCrypt headers.

    + +
    {% include badge.html color="danger" text=".onion Service" %}
    +

    Tutanota does not operate a .onion service but may consider it in the future.

    + +
    {% include badge.html color="info" text="Extra Functionality" %}
    +

    Tutanota offers the business version of Tutanota to non-profit organizations for free or with a heavy discount.

    + +

    Tutanota also has a business feature called Secure Connect. This ensures customer contact to the business uses E2EE. The feature costs €240/y.

    +
    +
    +
    +
    + StartMail +
    +
    +

    StartMail {% include badge.html color="info" text="Personal USD $59.95/y" %}

    +

    StartMail.com is an email service with a focus on security and privacy through the use of standard OpenPGP encryption. StartMail has been in operation since 2014 and is based in Boulevard 11, Zeist Netherlands. Accounts start with 10GB. They offer a 30-day trial.

    + +
    {% include badge.html color="success" text="Domains and Aliases" %}
    +

    Personal accounts can use Custom or Generated aliases. Business accounts can use Domain aliases.

    + +
    {% include badge.html color="warning" text="Payment Methods" %}
    +

    StartMail accepts Visa, MasterCard, American Express and Paypal. StartMail also has other payment options such as Bitcoin (currently only for Personal accounts) and SEPA Direct Debit for accounts older than a year.

    + +
    {% include badge.html color="success" text="Account Security" %}
    +

    StartMail supports TOTP two factor authentication for webmail only. They do not allow U2F security key authentication.

    + +
    {% include badge.html color="warning" text="Data Security" %}
    +

    StartMail has zero access encryption at rest, using their "user vault" system. When a user logs in, the vault is opened, and the email is then moved to the vault out of the queue where it is decrypted by the corresponding private key.

    + +

    StartMail supports importing contacts however, they are only accessible in the webmail and not through protocols such as CalDAV. Contacts are also not stored using zero knowledge encryption, so a standalone option may be more appropriate.

    + +
    {% include badge.html color="success" text="Email Encryption" %}
    +

    StartMail has integrated encryption in their webmail, which simplifies sending messages to users with public OpenPGP keys.

    + +
    {% include badge.html color="danger" text=".onion Service" %}
    +

    StartMail does not operate a .onion service.

    + +
    {% include badge.html color="info" text="Extra Functionality" %}
    +

    StartMail allows for proxying of images within emails. If a user allows the remote image to be loaded, the sender won't know what the user's IP address is.

    +
    +
- -

Interesting Email Providers Under Development

- -
    -
  • Confidant Mail - An open-source non-SMTP cryptographic email system optimized for large file attachments. It is a secure and spam-resistant alternative to regular email and online file drop services. It - uses GNU Privacy Guard (GPG) for content encryption and authentication, and TLS 1.2 with ephemeral keys for transport encryption.
  • -

Become Your Own Email Provider with Mail-in-a-Box

-Mail-in-a-Box -

Take it a step further and get control of your email with this easy-to-deploy mail server in a box. Mail-in-a-Box lets you become your own mail service provider in a few easy steps. It's sort of like making your own Gmail, but one you control from top -to bottom. Technically, Mail-in-a-Box turns a fresh cloud computer into a working mail server. But you don't need to be a technology expert to set it up. More: https://mailinabox.email/

- -

Related Information

- -
    -
  • Aging 'Privacy' Law Leaves Cloud E-Mail Open to Cops - Data stored in the cloud for longer than 6 months is considered abandoned and may be accessed by intelligence agencies without - a warrant. Learning: Use an external email client like Thunderbird or Enigmail, download your emails and store them locally. Never leave them on the server.
  • -
  • With May First/Riseup Server Seizure, FBI Overreaches Yet Again
  • -
  • Autistici/Inventati server compromised - The cryptographic services offered by the Autistici/Inventati server have been compromised on 15th June 2004. It was discovered on 21st June 2005. One year - later. During an enquiry on a single mailbox, the Postal Police may have tapped for a whole year every user's private communication going through the server autistici.org/inventati.org.
  • -
diff --git a/_includes/sections/email-warning.html b/_includes/sections/email-warning.html new file mode 100644 index 00000000..ac524a13 --- /dev/null +++ b/_includes/sections/email-warning.html @@ -0,0 +1,10 @@ + +
+
Warning
+
+

When using end-to-end encryption (E2EE) technology like OpenPGP, email will still have some metadata that is not encrypted in the header of the email. Read more about email metadata.

+

OpenPGP also does not support Forward secrecy, which means if either your or the recipient's private key is ever stolen, all previous messages encrypted with it will be exposed. How do I protect my private keys?

+

Rather than use email for prolonged conversations, consider using a medium that does support Forward secrecy.

+ Recommended Instant Messengers +
+
diff --git a/_includes/sections/file-encryption.html b/_includes/sections/file-encryption.html index 96ec5f3f..3f8b10cc 100644 --- a/_includes/sections/file-encryption.html +++ b/_includes/sections/file-encryption.html @@ -7,7 +7,8 @@ {% include cardv2.html title="VeraCrypt - Disk Encryption" - image="/assets/img/tools/VeraCrypt.png" + image="/assets/img/svg/3rd-party/veracrypt.svg" + image-dark="/assets/img/svg/3rd-party/veracrypt-dark.svg" description="VeraCrypt is a source-available freeware utility used for on-the-fly encryption. It can create a virtual encrypted disk within a file or encrypt a partition or the entire storage device with pre-boot authentication. VeraCrypt is a fork of the discontinued TrueCrypt project. It was initially released on June 22, 2013. According to its developers, security improvements have been implemented and issues raised by the initial TrueCrypt code audit have been addressed." website="https://veracrypt.fr/" forum="https://forum.privacytools.io/t/discussion-veracrypt-file-encryption/1532" @@ -20,9 +21,10 @@ {% include cardv2.html title="GNU Privacy Guard - Email Encryption" - image="/assets/img/tools/GnuPG.png" + image="/assets/img/svg/3rd-party/gnupg.svg" description="GnuPG is a GPL-licensed alternative to the PGP suite of cryptographic software. GnuPG is compliant with RFC 4880, which is the current IETF standards track specification of OpenPGP. Current versions of PGP (and Veridis' Filecrypt) are interoperable with GnuPG and other OpenPGP-compliant systems. GnuPG is a part of the Free Software Foundation's GNU software project, and has received major funding from the German government." website="https://gnupg.org/" + privacy-policy="https://gnupg.org/privacy-policy.html" forum="https://forum.privacytools.io/t/discussion-gnupg-file-encryption/1533" git="https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git" windows="https://gpg4win.org/download.html" @@ -37,25 +39,33 @@ {% include cardv2.html - title="PeaZip - File Archive Encryption" - image="/assets/img/tools/PeaZip.png" - description="PeaZip is a free and open-source file manager and file archiver made by Giorgio Tani. It supports its native PEA archive format (featuring compression, multi volume split and flexible authenticated encryption and integrity check schemes) and other mainstream formats, with special focus on handling open formats. It also supports 180+ archive formats." - website="http://www.peazip.org" - forum="https://forum.privacytools.io/t/discussion-peazip-file-encryption/1534" - source="https://osdn.net/projects/peazip" - windows="https://www.peazip.org/peazip-64bit.html" - linux="https://www.peazip.org/peazip-linux.html" - freebsd="https://www.freshports.org/archivers/peazip/" - openbsd="https://www.peazip.org/peazip-bsd.html" - netbsd="https://www.peazip.org/peazip-bsd.html" + title="7 Zip" + image="/assets/img/svg/3rd-party/7zip.svg" + description='7-Zip is a free and open-source file archiver, a utility used to place groups of files within compressed containers. On Linux, MacOS etc. the command-line tool p7zip is used and integrates into various interfaces such as FileRoller, Xarchiver, Ark.' + website="https://7-zip.org" + forum="https://forum.privacytools.io/t/discussion-7-zip/3024" + source="https://sourceforge.net/projects/sevenzip/files/" + windows="https://7-zip.org/download.html" + linux="https://sourceforge.net/projects/p7zip/files" + freebsd="https://www.freshports.org/archivers/p7zip" + openbsd="https://sourceforge.net/projects/p7zip" + netbsd="https://sourceforge.net/projects/p7zip" %}

Worth Mentioning

    -
  • Cryptomator - Free client-side AES encryption for your cloud files. Open-source software: No backdoors, no registration.
  • -
  • DiskCryptor - A full disk and partition encryption system for Windows including the ability to encrypt the partition and disk on which the OS is installed.
  • +
  • Cryptomator - Free client-side AES encryption for your cloud files. Open source software: No backdoors, no registration.
  • Linux Unified Key Setup (LUKS) - A full disk encryption system for Linux using dm-crypt as the disk encryption backend. Included by default in Ubuntu. Available for Windows and Linux.
  • -
  • Hat.sh - A cross-platform, serverless JavaScript web application that provides secure file encryption using the AES-256-GCM algorithm in your browser. It can also be downloaded and run offline.
  • -
  • Keka - A macOS-only, open-source file archiver with the ability to encrypt files.
  • +
  • Tomb - A simple zsh script for making LUKS containers on the commandline.
  • +
  • Hat.sh - A cross-platform, serverless JavaScript web application that provides secure file encryption using the AES-256-GCM algorithm in your browser. It can also be downloaded and run offline.
  • +
  • + Kryptor - Free and open source file encryption software for Windows, macOS, and Linux. + {% include badge.html + color="warning" + icon="fas fa-exclamation-triangle" + text="Beta" + tooltip="As Kryptor is still in beta, it may not be stable." + %} +
diff --git a/_includes/sections/file-sharing.html b/_includes/sections/file-sharing.html index 35660d75..68336e02 100644 --- a/_includes/sections/file-sharing.html +++ b/_includes/sections/file-sharing.html @@ -1,49 +1,46 @@

File Sharing

{% include cardv2.html -title="Firefox Send" -image="/assets/img/tools/Firefox-Send.png" -website="https://send.firefox.com/" -description="Firefox Send uses end-to-end encryption to keep your data secure from the moment you share to the moment your file is opened. It also offers security controls that you can set. You can choose when your file link expires, the number of downloads, and whether to add an optional password for an extra layer of security." -forum="https://forum.privacytools.io/t/discussion-firefox-send/755" -github="https://github.com/mozilla/send" -web="https://send.firefox.com/" -googleplay="https://play.google.com/store/apps/details?id=org.mozilla.firefoxsend" + title="OnionShare" + image="/assets/img/svg/3rd-party/onionshare.svg" + website="https://onionshare.org/" + tor="http://lldan5gahapx5k7iafb3s4ikijc4ni7gx5iywdflkba5y2ezyg6sjgyd.onion/" + description="OnionShare is an open-source tool that lets you securely and anonymously share a file of any size. It works by starting a web server accessible as a Tor onion service, with an unguessable URL that you can share with the recipients to download or send files." + forum="https://forum.privacytools.io/t/discussion-onionshare/754" + github="https://github.com/micahflee/onionshare" + windows="https://onionshare.org/#downloads" + mac="https://onionshare.org/#downloads" + linux="https://onionshare.org/#downloads" + freebsd="https://www.freshports.org/www/onionshare/" + openbsd="http://openports.se/net/onionshare" %} {% include cardv2.html -title="OnionShare" -image="/assets/img/tools/OnionShare.png" -website="https://onionshare.org/" -tor="http://elx57ue5uyfplgva.onion/" -description="OnionShare is an open-source tool that lets you securely and anonymously share a file of any size. It works by starting a web server, making it accessible as a Tor onion service, and generating an unguessable URL for you to share so that the recipients can access and download the files." -forum="https://forum.privacytools.io/t/discussion-onionshare/754" -github="https://github.com/micahflee/onionshare" -windows="https://onionshare.org/#downloads" -mac="https://onionshare.org/#downloads" -linux="https://onionshare.org/#downloads" -freebsd="https://www.freshports.org/www/onionshare/" -openbsd="http://openports.se/net/onionshare" -%} - -{% include cardv2.html -title="Magic Wormhole" -image="/assets/img/tools/Magic-Wormhole.png" -website="https://magic-wormhole.readthedocs.io" -description="Magic Wormhole is a package that provides a library and a command-line tool named wormhole, which makes it possible to get arbitrary-sized files and directories (or short pieces of text) from one computer to another. Their motto: \"Get things from one computer to another, safely.\"" -forum="https://forum.privacytools.io/t/discussion-magic-wormhole/756" -github="https://github.com/warner/magic-wormhole" -windows="https://magic-wormhole.readthedocs.io/en/latest/welcome.html#installation" -mac="https://magic-wormhole.readthedocs.io/en/latest/welcome.html#installation" -linux="https://magic-wormhole.readthedocs.io/en/latest/welcome.html#installation" -freebsd="https://www.freshports.org/net/py-magic-wormhole/" -openbsd="https://pypi.org/project/magic-wormhole/" -netbsd="https://pypi.org/project/magic-wormhole/" + title="Magic Wormhole" + image="/assets/img/png/3rd-party/magic_wormhole.png" + website="https://magic-wormhole.readthedocs.io" + description="Magic Wormhole is a package that provides a library and a command-line tool named wormhole, which makes it possible to get arbitrary-sized files and directories (or short pieces of text) from one computer to another. Their motto: \"Get things from one computer to another, safely.\"" + forum="https://forum.privacytools.io/t/discussion-magic-wormhole/756" + github="https://github.com/warner/magic-wormhole" + windows="https://magic-wormhole.readthedocs.io/en/latest/welcome.html#installation" + mac="https://magic-wormhole.readthedocs.io/en/latest/welcome.html#installation" + linux="https://magic-wormhole.readthedocs.io/en/latest/welcome.html#installation" + freebsd="https://www.freshports.org/net/py-magic-wormhole/" + openbsd="https://pypi.org/project/magic-wormhole/" + netbsd="https://pypi.org/project/magic-wormhole/" %}

Worth Mentioning

    -
  • croc - Easily and securely send things from one computer to another.
  • -
  • FreedomBox - Designed to be your own inexpensive server at home. It runs free software and offers an increasing number of services ranging from a calendar or Jabber server, to a wiki, or VPN.
  • +
  • FramaDrop - Stores a file of any size for 24h. Data is end-to-end encrypted from your browser, powered by LuFi. + {% include badge.html + color="warning" + icon="fas fa-exclamation-triangle" + link="https://framasoft.org/en/cgu/" + tooltip="FramaDrop logs IP addresses and fingerprints the browser for an unclear amount of time." + %} +
  • +
  • croc - Easily and securely send arbitrary-sized files from one computer to another. Similar to Magic Wormhole but without dependencies.
  • +
  • FreedomBox - Designed to be your own inexpensive server at home. It runs free software and offers an increasing number of services ranging from a calendar or XMPP server, to a wiki, or VPN.
diff --git a/_includes/sections/file-sync.html b/_includes/sections/file-sync.html index 6dea5561..bdf50f45 100644 --- a/_includes/sections/file-sync.html +++ b/_includes/sections/file-sync.html @@ -8,8 +8,8 @@ {% include cardv2.html title="Syncthing" - image="/assets/img/tools/Syncthing.png" - description="Syncthing replaces proprietary sync and cloud services with something open, trustworthy and decentralized. Your data is your data alone and you deserve to choose where it is stored, if it is shared with some third-party and how it's transmitted over the Internet." + image="/assets/img/svg/3rd-party/syncthing.svg" + description="Syncthing replaces proprietary sync and cloud services with something open, trustworthy and decentralized. Your data is your data alone and you deserve to choose where it is stored, if it is shared with some third-party, and how it is transmitted over the Internet." website="https://syncthing.net/" forum="https://forum.privacytools.io/t/discussion-syncthing/1627/2" github="https://github.com/syncthing?type=source" @@ -20,23 +20,10 @@ googleplay="https://play.google.com/store/apps/details?id=com.github.catfriend1.syncthingandroid" %} -{% - include cardv2.html - title="SparkleShare" - image="/assets/img/tools/SparkleShare.png" - description="SparkleShare creates a special folder on your computer. You can add remotely hosted folders (or \"projects\") to this folder. These projects will be automatically kept in sync with both the host and all of your peers when someone adds, removes or edits a file." - website="https://sparkleshare.org/" - forum="https://forum.privacytools.io/t/discussion-sparkleshare/1626" - github="https://github.com/hbons/SparkleShare" - linux="https://www.sparkleshare.org/" - mac="https://github.com/hbons/SparkleShare/releases/" -%} -

Worth Mentioning

  • - git-annex - Allows managing files with git, without checking the file contents into git. While that may seem paradoxical, it is useful when dealing with files larger than git can currently easily handle, - whether due to limitations in memory, time, or disk space. + git-annex - Allows managing files with git, without checking the file contents into git. While that may seem paradoxical, it is useful when dealing with files larger than git can currently easily handle, whether due to limitations in memory, time, or disk space.
diff --git a/_includes/sections/fourteen-eyes.html b/_includes/sections/fourteen-eyes.html index 153921fe..5b4c6e67 100644 --- a/_includes/sections/fourteen-eyes.html +++ b/_includes/sections/fourteen-eyes.html @@ -1,6 +1,6 @@

Global Mass Surveillance - The Fourteen Eyes

-UKUSA Agreement +UKUSA Agreement

The UKUSA Agreement is an agreement between the United Kingdom, United States, Australia, Canada, and New Zealand to cooperatively collect, analyze, and share intelligence. Members of this group, known as the Five Eyes, focus on gathering and analyzing intelligence from different parts of the world. While Five Eyes countries have agreed to not spy on each other as adversaries, leaks by Snowden have revealed that some Five Eyes members monitor each other's citizens and share intelligence to avoid breaking domestic laws that prohibit them from spying on their own citizens. The Five Eyes alliance also cooperates with groups of third-party countries to share intelligence (forming the Nine Eyes and Fourteen Eyes); however, Five Eyes and third-party countries can and do spy on each other.

diff --git a/_includes/sections/header.html b/_includes/sections/header.html index bdcef64c..06f6fec5 100644 --- a/_includes/sections/header.html +++ b/_includes/sections/header.html @@ -1,15 +1,18 @@ - -
-

privacytools.io

-

You are being watched. Private and state-sponsored organizations are monitoring and recording your online activities. privacytools.io provides services, tools and knowledge to protect your privacy against global mass surveillance.

+

+ + {{ site.name }} +
+ {{ site.name }} +
+
+

+

You are being watched. Private and state-sponsored organizations are monitoring and recording your online activities. {{ site.name }} provides services, tools and knowledge to protect your privacy against global mass surveillance.

-
{% include cardv2.html -title="Nextcloud" -image="/assets/img/provider/Nextcloud.png" -description="Nextcloud has similar functionally to the widely used Dropbox, with the difference being that Nextcloud is free and open-source, thereby allowing anyone to install and operate it without charge on a private server with no limits on storage space or the number of connected clients." -website="https://nextcloud.com/" -forum="https://forum.privacytools.io/t/discussion-nextcloud/287" -windows="https://nextcloud.com/install/#install-clients" -mac="https://nextcloud.com/install/#install-clients" -linux="https://nextcloud.com/install/#install-clients" -freebsd="https://www.freshports.org/www/nextcloud/" -openbsd="http://openports.se/www/nextcloud" -netbsd="http://pkgsrc.se/www/php-nextcloud" -fdroid="https://f-droid.org/packages/com.nextcloud.client/" -googleplay="https://play.google.com/store/apps/details?id=com.nextcloud.client" -ios="https://itunes.apple.com/us/app/nextcloud/id1125420102?mt=8" -github="https://github.com/nextcloud" + title="Nextcloud" + image="/assets/img/svg/3rd-party/nextcloud.svg" + description="Nextcloud is a suite of free and open-source client-server software for creating your own file hosting services on a private server you control. The only limits on storage and bandwidth are the limits on the server provider you choose." + website="https://nextcloud.com/" + privacy-policy="https://nextcloud.com/privacy/" + forum="https://forum.privacytools.io/t/discussion-nextcloud/287" + windows="https://nextcloud.com/install/#install-clients" + mac="https://nextcloud.com/install/#install-clients" + linux="https://nextcloud.com/install/#install-clients" + freebsd="https://www.freshports.org/www/nextcloud/" + openbsd="http://openports.se/www/nextcloud" + netbsd="http://pkgsrc.se/www/php-nextcloud" + fdroid="https://f-droid.org/packages/com.nextcloud.client/" + googleplay="https://play.google.com/store/apps/details?id=com.nextcloud.client" + ios="https://itunes.apple.com/us/app/nextcloud/id1125420102" + github="https://github.com/nextcloud" %} {% include cardv2.html -title="Tahoe-LAFS" -image="/assets/img/tools/Tahoe-LAFS.png" -image-dark="/assets/img/tools/Tahoe-LAFS-dark.png" -website="https://www.tahoe-lafs.org/" -forum="https://forum.privacytools.io/t/discussion-tahoe-lafs/1662" -description="Tahoe-LAFS is a free and open decentralized cloud storage system. It distributes your data across multiple servers. Even if some of the servers fail or are taken over by an attacker, the entire file store continues to function correctly, preserving your privacy and security." -windows="https://github.com/tahoe-lafs/tahoe-lafs#via-pip" -mac="https://github.com/tahoe-lafs/tahoe-lafs#via-pip" -linux="https://github.com/tahoe-lafs/tahoe-lafs#using-os-packages" -netbsd="http://pkgsrc.se/filesystems/tahoe-lafs" -git="https://www.tahoe-lafs.org/trac/tahoe-lafs/browser" + title="Tahoe-LAFS" + image="/assets/img/svg/3rd-party/tahoe-lafs.svg" + image-dark="/assets/img/svg/3rd-party/tahoe-lafs-dark.svg" + website="https://www.tahoe-lafs.org/" + forum="https://forum.privacytools.io/t/discussion-tahoe-lafs/1662" + description="Tahoe-LAFS is a free and open decentralized cloud storage system. It distributes your data across multiple servers. Even if some of the servers fail or are taken over by an attacker, the entire file store continues to function correctly, preserving your privacy and security." + windows="https://github.com/tahoe-lafs/tahoe-lafs#via-pip" + mac="https://github.com/tahoe-lafs/tahoe-lafs#via-pip" + linux="https://github.com/tahoe-lafs/tahoe-lafs#using-os-packages" + netbsd="http://pkgsrc.se/filesystems/tahoe-lafs" + git="https://www.tahoe-lafs.org/trac/tahoe-lafs/browser" %}

Worth Mentioning

diff --git a/_includes/sections/social-networks.html b/_includes/sections/social-networks.html index 8bd20aa2..25a498d2 100644 --- a/_includes/sections/social-networks.html +++ b/_includes/sections/social-networks.html @@ -1,90 +1,81 @@

Decentralized Social Networks

{% include cardv2.html -title="Mastodon - Twitter Alternative" -image="/assets/img/tools/Mastodon.png" -description='Mastodon is a social network based on open web protocols and free, open-source software. It is decentralized like email. It also has the most users, and the most diverse (in terms of interests) users; looks good; and is easy to setup. Feel welcome to join our hosted instance: social.privacytools.io' -website="https://joinmastodon.org/" -forum="https://forum.privacytools.io/t/discussion-mastodon/289" -github="https://github.com/tootsuite/mastodon" -windows="https://joinmastodon.org/apps" -mac="https://joinmastodon.org/apps" -linux="https://joinmastodon.org/apps" -freebsd="https://joinmastodon.org/apps" -openbsd="https://joinmastodon.org/apps" -netbsd="https://joinmastodon.org/apps" -android="https://joinmastodon.org/apps" -sailfish="https://joinmastodon.org/apps" -ios="https://joinmastodon.org/apps" -web="https://joinmastodon.org/#getting-started" + title="Mastodon - Twitter Alternative" + image="/assets/img/svg/3rd-party/mastodon.svg" + description='Mastodon is a social network based on open web protocols and free, open-source software. It is decentralized like email, users can exist on different servers or even different platforms but still communicate with each other. It also has the most users, and the most diverse (in terms of interests) users, it looks good, and it is easy to setup yourself. If you are looking for a server to join, you are welcome to join our hosted instance: social.privacytools.io' + website="https://joinmastodon.org/" + forum="https://forum.privacytools.io/t/discussion-mastodon/289" + github="https://github.com/tootsuite/mastodon" + windows="https://joinmastodon.org/apps" + mac="https://joinmastodon.org/apps" + linux="https://joinmastodon.org/apps" + freebsd="https://joinmastodon.org/apps" + openbsd="https://joinmastodon.org/apps" + netbsd="https://joinmastodon.org/apps" + android="https://joinmastodon.org/apps" + sailfish="https://joinmastodon.org/apps" + ios="https://joinmastodon.org/apps" + web="https://joinmastodon.org/#getting-started" %} {% include cardv2.html -title="diaspora* - Google+ Alternative" -image="/assets/img/tools/diaspora.png" -description="diaspora* is based on three key philosophies: Decentralization, freedom and privacy. It is intended to address privacy concerns related to centralized social networks by allowing users set up their own server (or \"pod\") to host content; pods can then interact to share status updates, photographs, and other social data." -website="https://diasporafoundation.org/" -forum="https://forum.privacytools.io/t/discussion-diaspora/290" -github="https://github.com/diaspora/diaspora" -android="https://wiki.diasporafoundation.org/Tools_to_use_with_Diaspora#Android" -web="https://diasporafoundation.org/" + title="diaspora* - Google+ Alternative" + image="/assets/img/svg/3rd-party/diaspora.svg" + description="diaspora* is based on three key philosophies: Decentralization, Freedom, and Privacy. It is intended to address privacy concerns related to centralized social networks by allowing users set up their own server (or \"pod\") to host content. Pods can then interact to share status updates, photographs, and other social data." + website="https://diasporafoundation.org/" + forum="https://forum.privacytools.io/t/discussion-diaspora/290" + github="https://github.com/diaspora/diaspora" + android="https://wiki.diasporafoundation.org/Tools_to_use_with_Diaspora#Android" + web="https://diasporafoundation.org/" %} {% include cardv2.html -title="Friendica - Facebook Alternative" -image="/assets/img/tools/Friendica.png" -description="Friendica has an emphasis on extensive privacy settings and easy server installation. It aims to federate with as many other social networks as possible. Currently, Friendica users can integrate contacts from Facebook, Twitter, Diaspora, GNU social, App.net, Pump.io and other services in their social streams." -website="https://friendi.ca/" -forum="https://forum.privacytools.io/t/discussion-friendica/291" -github="https://github.com/friendica/friendica" -windows="https://friendi.ca/resources/mobile-clients/" -linux="https://friendi.ca/resources/mobile-clients/" -android="https://friendi.ca/resources/mobile-clients/" -sailfish="https://friendi.ca/resources/mobile-clients/" -web="https://friendi.ca/" + title="Friendica - Facebook Alternative" + image="/assets/img/svg/3rd-party/friendica.svg" + description="Friendica has an emphasis on extensive privacy settings and easy server installation. It aims to federate with as many other social networks as possible. Currently, Friendica users can integrate contacts from Facebook, Twitter, Diaspora, GNU social, App.net, Pump.io and other services in their social streams." + website="https://friendi.ca/" + forum="https://forum.privacytools.io/t/discussion-friendica/291" + github="https://github.com/friendica/friendica" + windows="https://friendi.ca/resources/mobile-clients/" + linux="https://friendi.ca/resources/mobile-clients/" + android="https://friendi.ca/resources/mobile-clients/" + sailfish="https://friendi.ca/resources/mobile-clients/" + web="https://friendi.ca/" %} {% include cardv2.html -title="PixelFed - Instagram Alternative" -image="/assets/img/provider/pixelfed.png" -description='PixelFed is a free and ethical photo sharing platform, powered by ActivityPub federation. Pixelfed is an open-source, federated platform. You can run your own instance or join one.' -website="https://pixelfed.org/" -forum="https://forum.privacytools.io/t/discussion-pixelfed/293" -github="https://github.com/pixelfed" -web="https://pixelfed.org/" + title="PixelFed - Instagram Alternative" + image="/assets/img/svg/3rd-party/pixelfed.svg" + description='PixelFed is a free and ethical photo sharing platform, powered by ActivityPub federation. Pixelfed is an open-source, federated platform. You can run your own instance or join an existing one.' + website="https://pixelfed.org/" + forum="https://forum.privacytools.io/t/discussion-pixelfed/293" + github="https://github.com/pixelfed" + web="https://pixelfed.org/" %} {% include cardv2.html -title="GNU social - Twitter Alternative" -image="/assets/img/provider/gnu-social.png" -description="GNU social is social-communication software for both public and private communications. It is widely supported and has a large userbase. It is already used by the Free Software Foundation." -website="https://gnu.io/social/" -forum="https://forum.privacytools.io/t/discussion-gnu-social/292" -gitlab="https://git.gnu.io/gnu/gnu-social/" -web="https://gnu.io/social/" + title="Pleroma - Twitter Alternative" + image="/assets/img/svg/3rd-party/pleroma.svg" + description="Pleroma is a free, federated social networking server built on open protocols. It is compatible with Mastodon and many other ActivityPub and OStatus implementations." + website="https://pleroma.social" + forum="https://forum.privacytools.io/t/discussion-pleroma/2307" + gitlab="https://git.pleroma.social/pleroma/pleroma/" + windows="https://docs-develop.pleroma.social/backend/clients/#desktop" + mac="https://docs-develop.pleroma.social/backend/clients/#desktop" + linux="https://docs-develop.pleroma.social/backend/clients/#desktop" + android="https://docs-develop.pleroma.social/backend/clients/#handheld" + fdroid="https://docs-develop.pleroma.social/backend/clients/#handheld" + googleplay="https://docs-develop.pleroma.social/backend/clients/#handheld" + ios="https://docs-develop.pleroma.social/backend/clients/#handheld" + web="https://docs-develop.pleroma.social/backend/clients/#alternative-web-interfaces" %}

Worth Mentioning

    -
  • Minds - An open-source and distributed social networking service, integrating the blockchain to reward the community.
  • Movim - A federated social platform that relies on the XMPP standard and therefore allows you to exchange with many other clients on all devices.
- -

Related Information

-
    -
  • Mastodon: Simplified Federation - Firefox Extension to improve usability for remote Mastodon instances.
  • -
  • JustDeleteMe - A directory of direct links to delete your account from web services.
  • -
  • Forget - A service that automatically deletes your old posts on Twitter and Mastodon that everyone has forgotten about.
  • -
- -

Facebook Related

- diff --git a/_includes/sections/social-news-aggregator.html b/_includes/sections/social-news-aggregator.html index 18de06d1..70805e56 100644 --- a/_includes/sections/social-news-aggregator.html +++ b/_includes/sections/social-news-aggregator.html @@ -6,9 +6,10 @@ {% include cardv2.html title="Aether" -image="/assets/img/tools/aether.png" +image="/assets/img/svg/3rd-party/aether.svg" description='Aether is a free and open-source decentralized social news aggregator with a built-in voting system.' website="https://getaether.net/" +privacy-policy="https://getaether.net/privacypolicy/" forum="https://forum.privacytools.io/t/discussion-aether/1256" github="https://github.com/nehbit/aether" windows="https://getaether.net/download/" @@ -18,9 +19,10 @@ linux="https://getaether.net/download/" {% include cardv2.html title="Tildes" -image="/assets/img/tools/tildes.png" -description='Tildes is a web-based self-hostable online bulletin board. It is licensed under GPL 3.0.' +image="/assets/img/svg/3rd-party/tildes.svg" +description='Tildes is a web-based self-hostable online bulletin board. It is licensed under AGPLv3.' website="https://tildes.net" +privacy-policy="https://docs.tildes.net/policies/privacy-policy" forum="https://forum.privacytools.io/t/discussion-tildes/1257" gitlab="https://gitlab.com/tildes/tildes" web="https://tildes.net" @@ -28,9 +30,10 @@ web="https://tildes.net" {% include cardv2.html title="Raddle" -image="/assets/img/tools/raddle.png" +image="/assets/img/png/3rd-party/raddle.png" description="Raddle is a public Postmill instance focused on privacy and anti-censorship." website="https://raddle.me" +privacy-policy="https://raddle.me/wiki/privacy_policy" forum="https://forum.privacytools.io/t/discussion-raddle/1258" gitlab="https://gitlab.com/postmill/" web="https://raddle.me" diff --git a/_includes/sections/teamchat.html b/_includes/sections/teamchat.html index 632e64e4..6a86d563 100644 --- a/_includes/sections/teamchat.html +++ b/_includes/sections/teamchat.html @@ -1,34 +1,40 @@ -

Team Chat Platforms

+

+ + + Team Chat Platforms +

{% include cardv2.html - title="Riot.im (Matrix)" - image="/assets/img/tools/Riot.png" - description="Riot.im is a federated free-software messaging application based on the Matrix protocol, a recent open protocol for real-time communication offering optional E2E encryption. It also has bridging functionality, allowing you to connect to other chat protocols such as IRC or Telegram." - labels="warning:Experimental E2EE:The end-to-end encryption is currently in beta, and the mobile client states 'End-to-end encryption is in beta and may not be reliable. You should not yet trust it to secure data.'" - website="https://about.riot.im/" - forum="https://forum.privacytools.io/t/discussion-riot-im/665/" - github="https://github.com/vector-im/riot-web/" - windows="https://riot.im/download/desktop/" - mac="https://riot.im/download/desktop/" - linux="https://riot.im/download/desktop/" - fdroid="https://f-droid.org/repository/browse/?fdid=im.vector.alpha" + title="Element" + image="/assets/img/svg/3rd-party/element.svg" + description='Element (formerly Riot) is the reference client for the Matrix network. The Matrix open standard is an open-source standard for secure, decentralized, real-time communication.' + labels="text==VoIP" + website="https://element.io" + privacy-policy="https://element.io/privacy" + forum="https://forum.privacytools.io/t/discussion-element-io/665" + github="https://github.com/vector-im/element-web" + windows="https://element.io/get-started" + mac="https://element.io/get-started" + linux="https://element.io/get-started" + fdroid="https://f-droid.org/packages/im.vector.app/" googleplay="https://play.google.com/store/apps/details?id=im.vector.app" - ios="https://itunes.apple.com/us/app/vector.im/id1083446067" - web="https://riot.im/app/" + ios="https://apps.apple.com/app/vector/id1083446067" + web="https://app.element.io" %} {% include cardv2.html title="Rocket.chat" - image="/assets/img/tools/rocket.chat.png" + image="/assets/img/svg/3rd-party/rocketchat.svg" description="Rocket.chat is an self-hostable open source platform for team communication. It has optional federation and experimental E2EE." - labels="warning:Experimental E2EE:Regarding E2EE their documentation states 'This feature is currently in alpha. It's also not yet supported on mobile'. There is no forward secrecy so compromised decryption password would leak all messages. Federation was also added afterwards, potentially causing room for mistakes." + labels="color==warning::link==https://rocket.chat/docs/user-guides/end-to-end-encryption/::text==Experimental E2EE::tooltip==Regarding E2EE their documentation states 'This feature is currently in alpha. It's also not yet supported on mobile'. There is no forward secrecy so compromised decryption password would leak all messages. Federation was also added afterwards, potentially causing room for mistakes.|text==VoIP" website="https://rocket.chat/" + privacy-policy="https://rocket.chat/privacy" forum="https://forum.privacytools.io/t/discussion-rocket-chat/1223" github="https://github.com/rocketchat/" windows="https://rocket.chat/install" @@ -38,30 +44,3 @@ googleplay="https://play.google.com/store/apps/details?id=chat.rocket.android" ios="https://itunes.apple.com/app/rocket-chat/id1148741252" %} - -{% - include cardv2.html - title="Keybase" - image="/assets/img/tools/keybase.png" - description='Keybase provides a hosted team chat with end-to-end encryption. It has also been indepedently audited (PDF).' - labels="warning:Warning:The server side of Keybase runs on proprietary code and is centralized." - website="https://keybase.io/" - forum="https://forum.privacytools.io/t/discussion-keybase/1224" - tor="http://keybase5wmilwokqirssclfnsqrjdsi7jdir5wy7y7iu3tanwmtp6oid.onion/" - github="https://github.com/Keybase" - windows="https://keybase.io/docs/the_app/install_windows" - mac="https://keybase.io/docs/the_app/install_macos" - linux="https://keybase.io/docs/the_app/install_linux" - freebsd="https://www.freshports.org/security/keybase/" - googleplay="https://play.google.com/store/apps/details?id=io.keybase.ossifrage&hl=en_US" - ios="https://keybase.io/_/download/keybase-for-ios" - firefox="https://addons.mozilla.org/en-US/firefox/addon/keybase-for-firefox/" - chrome="https://chrome.google.com/webstore/detail/keybase-for-reddit/ognfafcpbkogffpmmdglhbjboeojlefj" -%} - - -

Worth Mentioning

- -
    -
  • Wire Pro - Paid team communication with E2EE. Untested
  • -
diff --git a/_includes/sections/tor-operating-systems.html b/_includes/sections/tor-operating-systems.html new file mode 100644 index 00000000..835df24f --- /dev/null +++ b/_includes/sections/tor-operating-systems.html @@ -0,0 +1,24 @@ +

Tor-Focused Distributions

+ + + +{% include cardv2.html + title="Tails" + image="/assets/img/svg/3rd-party/tails.svg" + description='Tails is a live operating system that can boot on almost any computer from a DVD, USB stick, or SD card you control. It aims at preserving privacy and anonymity, and circumventing censorship by forcing Internet connections through the Tor network; leaving no trace on the computer; and using state-of-the-art cryptographic tools to encrypt files, emails, and instant messages.' + badges="info:Linux" + website="https://tails.boum.org/" + git="https://git-tails.immerda.ch/tails/" + %} + +{% include cardv2.html + title="Whonix" + image="/assets/img/svg/3rd-party/whonix.svg" + description='A Debian-based security-focused Linux distribution. It aims to provide privacy, security and anonymity on the internet. The operating system consists of two virtual machines, a "Workstation" and a Tor "Gateway". All communication are forced through the Tor network to accomplish this. Whonix is best used in conjunction with Qubes.' + badges="info:Linux" + website="https://www.whonix.org/" + tor="http://www.dds6qkxpwdeubwucdiaord2xgbbeyds25rbsgr73tbfpqpt4a6vjwsyd.onion/" + github="https://github.com/Whonix" +%} diff --git a/_includes/sections/video-frontends.html b/_includes/sections/video-frontends.html new file mode 100644 index 00000000..31b5facf --- /dev/null +++ b/_includes/sections/video-frontends.html @@ -0,0 +1,15 @@ +

Frontends and Proxies

+ + + +{% include cardv2.html + title="Invidious" + image="/assets/img/svg/3rd-party/invidious.svg" + description='Invidious is an alternative front-end to YouTube. It is free software, with no advertising or Javascript dependency to play videos, with lots of other features that allow you to have a complete YouTube experience, sans Google.' + labels="color==warning::icon==fas fa-exclamation-triangle::link==https://github.com/iv-org/documentation/blob/master/Always-use-%22local%22-to-proxy-video-through-the-server-without-creating-an-account.md::text==Warning::tooltip==By default, Invidious will not proxy videos through the instance's proxy." + website="https://invidious.io/" + github="https://github.com/iv-org/invidious" + web="https://instances.invidious.io/" +%} diff --git a/_includes/sections/voice-video-messenger.html b/_includes/sections/voice-video-messenger.html index cffb7054..f3e39871 100644 --- a/_includes/sections/voice-video-messenger.html +++ b/_includes/sections/voice-video-messenger.html @@ -1,43 +1,55 @@

Video/Voice Calling

{% include cardv2.html -title="Linphone" -image="/assets/img/tools/Linphone.png" -website="https://www.linphone.org/" -description="Linphone is an open-source SIP Phone and a free voice over IP service, available on mobile and desktop environments and on web browsers. It supports ZRTP for end-to-end encrypted voice and video communication." -forum="https://forum.privacytools.io/t/discussion-linphone/751" -github="https://github.com/BelledonneCommunications" -windows="https://www.linphone.org/technical-corner/linphone?qt-technical_corner=2#qt-technical_corner" -linux="https://www.linphone.org/technical-corner/linphone?qt-technical_corner=2#qt-technical_corner" -mac="https://www.linphone.org/technical-corner/linphone?qt-technical_corner=2#qt-technical_corner" -fdroid="https://f-droid.org/packages/org.linphone" -googleplay="https://play.google.com/store/apps/details?id=org.linphone" -ios="https://itunes.apple.com/us/app/linphone/id360065638?mt=8" + title="Linphone" + image="/assets/img/svg/3rd-party/linphone.svg" + website="https://www.linphone.org/" + privacy-policy="https://www.linphone.org/terms-and-privacy" + description="Linphone is an open-source SIP Phone and a free voice over IP service, available on mobile and desktop environments and on web browsers. It supports ZRTP for end-to-end encrypted voice and video communication." + forum="https://forum.privacytools.io/t/discussion-linphone/751" + github="https://github.com/BelledonneCommunications" + windows="https://www.linphone.org/technical-corner/linphone?qt-technical_corner=2#qt-technical_corner" + linux="https://www.linphone.org/technical-corner/linphone?qt-technical_corner=2#qt-technical_corner" + mac="https://www.linphone.org/technical-corner/linphone?qt-technical_corner=2#qt-technical_corner" + fdroid="https://f-droid.org/packages/org.linphone" + googleplay="https://play.google.com/store/apps/details?id=org.linphone" + ios="https://apps.apple.com/us/app/linphone/id360065638" %} {% include cardv2.html -title="Mumble" -image="/assets/img/tools/Mumble.png" -website="https://mumble.info/" -description="Mumble is an open-source, low-latency, and high quality voice chat application primarily intended for use while gaming. Note that while Mumble doesn't log messages or record by default, it's missing end-to-end encryption, so self-hosting is recommended." -forum="https://forum.privacytools.io/t/discussion-mumble/1289" -github="https://github.com/mumble-voip/" -windows="https://www.mumble.info/downloads" -linux="https://www.mumble.info/downloads" -mac="https://www.mumble.info/downloads" -android="https://www.mumble.info/downloads/#third-party-clients" -ios="https://apps.apple.com/us/app/mumble/id443472808?ls=1" + title="Jitsi Meet" + image="/assets/img/svg/3rd-party/jitsi.svg" + website="https://jitsi.org/jitsi-meet/" + privacy-policy="https://jitsi.org/security/" + description='Jitsi Meet is a free and open-source multiplatform voice (VoIP), video conferencing, and instant messaging application with optional E2EE. It can be used from the browser, in desktop applications or on smartphones. Additional features include screen sharing for presentations and an always-on-top floating call window when minimized. See the list of public Jitsi Meet instances.' + labels="color==warning::text==Requires WebRTC::tooltip==Our Firefox tweaks recommend disabling WebRTC as it can be used to leak your IP address even behind a VPN, which is why Tor Browser disables it.|color==warning::link==https://github.com/jitsi/lib-jitsi-meet/blob/master/doc/e2ee.md::text==Experimental E2EE::tooltip==E2EE in Jitsi Meet is dependent on Insertable Streams, which is currently supported in Chrome but not Firefox. The mobile apps also do not support E2EE for the moment. Prefer to use the desktop apps instead." + forum="https://forum.privacytools.io/t/discussion-jitsi-meet/1577" + github="https://github.com/jitsi/jitsi-meet" + windows="https://github.com/jitsi/jitsi-meet-electron/releases" + linux="https://github.com/jitsi/jitsi-meet-electron/releases" + mac="https://github.com/jitsi/jitsi-meet-electron/releases" + fdroid="https://f-droid.org/en/packages/org.jitsi.meet/" + googleplay="https://play.google.com/store/apps/details?id=org.jitsi.meet" + ios="https://apps.apple.com/us/app/jitsi-meet/id1165103905" %} -

Worth Mentioning

- -
    -
  • Jitsi Meet - Jitsi Meet is a free and open-source multiplatform voice (VoIP), video conferencing, and instant messaging application. Requires WebRTC
  • -
+{% include cardv2.html + title="Mumble" + image="/assets/img/svg/3rd-party/mumble.svg" + website="https://mumble.info/" + description="Mumble is an open-source, low-latency, and high quality voice chat application primarily intended for use while gaming. Note that while Mumble doesn't log messages or record by default, it's missing end-to-end encryption, so self-hosting is recommended." + forum="https://forum.privacytools.io/t/discussion-mumble/1289" + github="https://github.com/mumble-voip/" + windows="https://www.mumble.info/downloads" + linux="https://www.mumble.info/downloads" + mac="https://www.mumble.info/downloads" + android="https://www.mumble.info/downloads/#third-party-clients" + ios="https://apps.apple.com/us/app/mumble/id443472808?ls=1" +%}

Related Information

diff --git a/_includes/sections/vpn.html b/_includes/sections/vpn.html index 81a9b996..c0352333 100644 --- a/_includes/sections/vpn.html +++ b/_includes/sections/vpn.html @@ -1,90 +1,113 @@ -

Recommended VPN Service

+

Recommended VPN Services

- Mullvad + Mullvad
-

Mullvad EUR €60/Year

-

Mullvad is a fast and inexpensive VPN with a serious focus on transparency and security. They have been in operation since 2009. It is the only VPN provider that currently meets our criteria for recommendation. Mullvad is based in Sweden and does not have a free trial. Visit mullvad.net to create an account.

-
406+ Servers
-

Mullvad has 409 servers in 39 countries at the time of writing this page. Typically the more servers a provider offers, the better: With hundreds of servers in operation, you are far more likely to find a fast connection and a server geographically closest to you.

-
WireGuard Support
-

In addition to standard OpenVPN connections, Mullvad supports WireGuard. WireGuard is an experimental protocol with theoretically better security and higher reliability, although it is not currently recommended for production use.

-
Independently Audited
+

+ Mullvad + {% include badge.html color="info" text="EUR €60/y" %} +

+

Mullvad.net is a fast and inexpensive VPN with a serious focus on transparency and security. They have been in operation since 2009. Mullvad is based in Sweden and does not have a free trial.

+
{% include badge.html color="success" text="35 Countries" %}
+

Mullvad has servers in 35 countries at the time of writing this page. Picking a VPN provider with a server nearest to you will reduce latency of the network traffic you send. This is because of a shorter route (less hops) to the destination.

+

We also think it's better for the security of the VPN provider's private keys if they use dedicated servers, instead of cheaper shared solutions (with other customers) such as virtual private servers.

+
{% include badge.html color="success" text="Independently Audited" %}

Mullvad's VPN clients have been audited by Cure53 and Assured AB in a pentest report published at cure53.de. The security researchers concluded:

...Cure53 and Assured AB are happy with the results of the audit and the software leaves an overall positive impression. With security dedication of the in-house team at the Mullvad VPN compound, the testers have no doubts about the project being on the right track from a security standpoint.

-
Accepts Bitcoin
+

In 2020 a second audit was announced and the final audit report was made available on Cure53's website.

+
{% include badge.html color="success" text="Open Source Clients" %}
+

Mullvad provides the source code for their desktop and mobile clients in their GitHub organization.

+
{% include badge.html color="success" text="Accepts Bitcoin" %}

Mullvad in addition to accepting credit/debit cards and PayPal, accepts Bitcoin, Bitcoin Cash, and cash/local currency as anonymous forms of payment. They also accept Swish and bank wire transfers.

-
No Mobile Clients
-

While iOS and Android clients are reportedly in the works, mobile users will need to use a traditional OpenVPN client and configuration files, which are a bit more difficult to configure.

-
Extra Functionality
-

The Mullvad VPN clients have a built-in killswitch to block internet connections outside of the VPN. They also are able to automatically start on boot. The Mullvad website is also accessible via Tor at xcln5hkbriyklr6n.onion.

+
{% include badge.html color="success" text="WireGuard Support" %}
+

In addition to standard OpenVPN connections, Mullvad supports WireGuard. WireGuard is an experimental protocol with theoretically better security and higher reliability, although it is not currently recommended for production use.

+
{% include badge.html color="success" text="IPv6 Support" %}
+

Mullvad supports the future of networking IPv6. Their network allows users to access services hosted on IPv6 as opposed to other providers who block IPv6 connections.

+
{% include badge.html color="success" text="Remote Port Forwarding" %}
+

Remote port forwarding is allowed on Mullvad, see Port forwarding with Mullvad VPN.

+
{% include badge.html color="success" text="Mobile Clients" %}
+

Mullvad has published App Store and Google Play clients, both supporting an easy-to use interface as opposed to requiring users to manual configure their WireGuard connections. The mobile client on Android is also available in F-Droid, which ensures that it is compiled with reproducible builds.

+
{% include badge.html color="info" text="Extra Functionality" %}
+

The Mullvad VPN clients have a built-in killswitch to block internet connections outside of the VPN. They also are able to automatically start on boot. The Mullvad website is also accessible via Tor at o54hon2e2vj6c7m3aqqu6uyece65by3vgoxxhlqlsvkmacw6a7m7kiad.onion.

+
+
+
+
+ ProtonVPN +
+
+

+ ProtonVPN + {% include badge.html color="info" text="Free" %} + {% include badge.html color="info" text="Basic USD $48/y" %} + {% include badge.html color="secondary" text="Plus USD $96/y" %} +

+

ProtonVPN.com is a strong contender in the VPN space, and they have been in operation since 2016. ProtonVPN is based in Switzerland and offers a limited free pricing tier, as well as premium options. They offer a further 14% discount for buying a 2 year subscription.

+
{% include badge.html color="success" text="44 Countries" %}
+

ProtonVPN has servers in 44 countries at the time of writing this page. Picking a VPN provider with a server nearest to you will reduce latency of the network traffic you send. This is because of a shorter route (less hops) to the destination.

+

We also think it's better for the security of the VPN provider's private keys if they use dedicated servers, instead of cheaper shared solutions (with other customers) such as virtual private servers.

+
{% include badge.html color="success" text="Independently Audited" %}
+

As of January 2020 ProtonVPN has undergone an independent audit by SEC Consult. SEC Consult found some medium and low risk vulnerabilities in ProtonVPN's Windows, Android, and iOS applications, all of which were "properly fixed" by ProtonVPN before the reports were published. None of the issues identified would have provided an attacker remote access to a user's device or traffic. You can view individual reports for each platform at protonvpn.com. +

{% include badge.html color="success" text="Open Source Clients" %}
+

ProtonVPN provides the source code for their desktop and mobile clients in their GitHub organization.

+
{% include badge.html color="success" text="Accepts Bitcoin" %}
+

ProtonVPN does technically accept Bitcoin payments; however, you either need to have an existing account, or contact their support team in advance to register with Bitcoin.

+
{% include badge.html color="success" text="Mobile Clients" %}
+

In addition to providing standard OpenVPN configuration files, ProtonVPN has mobile clients for App Store and Google Play allowing for easy connections to their servers. The mobile client on Android is also available in F-Droid, which ensures that it is compiled with reproducible builds.

+
{% include badge.html color="warning" text="No Port Forwarding" %}
+

ProtonVPN does not currently support remote port forwarding, which may impact some applications. Especially Peer-to-Peer applications like Torrent clients.

+
{% include badge.html color="info" text="Extra Functionality" %}
+

The ProtonVPN clients have a built-in killswitch to block internet connections outside of the VPN. They also are able to automatically start on boot. ProtonVPN also offers "Tor" servers allowing you to easily connect to onion sites, but we still strongly recommend using the official Tor Browser for this purpose.

+
+
+
+
+ IVPN +
+
+

+ IVPN + {% include badge.html color="info" text="Standard USD $60/y" %} + {% include badge.html color="secondary" text="Pro USD $100/y" %} +

+

IVPN.net is another premium VPN provider, and they have been in operation since 2009. IVPN is based in Gibraltar.

+
{% include badge.html color="success" text="32 Countries" %}
+

IVPN has servers in 32 countries at the time of writing this page. Picking a VPN provider with a server nearest to you will reduce latency of the network traffic you send. This is because of a shorter route (less hops) to the destination.

+

We also think it's better for the security of the VPN provider's private keys if they use dedicated servers, instead of cheaper shared solutions (with other customers) such as virtual private servers.

+
{% include badge.html color="success" text="Independently Audited" %}
+

IVPN has undergone a no-logging audit from Cure53 which concluded in agreement with IVPN's no-logging claim. IVPN has also completed a comprehensive pentest report Cure53 in January 2020. IVPN has also said they plan to have annual reports in the future.

+
{% include badge.html color="success" text="Open Source Clients" %}
+

As of Feburary 2020 IVPN applications are now open source. Source code can be obtained from their GitHub organization.

+
{% include badge.html color="success" text="Accepts Bitcoin" %}
+

In addition to accepting credit/debit cards and PayPal, IVPN accepts Bitcoin and cash/local currency (on annual plans) as anonymous forms of payment.

+
{% include badge.html color="success" text="WireGuard Support" %}
+

In addition to standard OpenVPN connections, IVPN supports WireGuard. WireGuard is an experimental protocol with theoretically better security and higher reliability, although it is not currently recommended for production use.

+
{% include badge.html color="success" text="Remote Port Forwarding" %}
+

Remote port forwarding is possible with a Pro plan. Port forwarding can be activated via the client area. Port forwarding is only available on IVPN when using OpenVPN and is disabled on US servers.

+
{% include badge.html color="success" text="Mobile Clients" %}
+

In addition to providing standard OpenVPN configuration files, IVPN has mobile clients for App Store and Google Play allowing for easy connections to their servers. The mobile client on Android is also available in F-Droid, which ensures that it is compiled with reproducible builds.

+
{% include badge.html color="info" text="Extra Functionality" %}
+

The IVPN clients have a built-in killswitch to block internet connections outside of the VPN. They also are able to automatically start on boot. IVPN also provides "AntiTracker" functionality, which blocks advertising networks and trackers from the network level.

-
- -

Other Providers Worth Mentioning

- -
- -
-
- ProtonVPN -
-
-

ProtonVPN Free USD $96/year

-

ProtonVPN is a strong contender in the VPN space, and they have been in operation since 2016. ProtonVPN is based in Switzerland and offers a limited free pricing tier, as well as premium options. Unfortunately due to its lack of an independent security audit it does not meet the complete criteria for recommendation, see our notes below.

-
Not Audited
-

ProtonVPN has not undergone a security audit by an independent third party, and therefore cannot be strongly recommended at this time. We have still chosen to list it on this page with the assumption that an audit will be published soon:

-
-

We are currently undergoing a complete security audit of our VPN applications by a reputable Swiss security company. The results of the audit will be summarized in a public report for cases like this.

-
Marc Loebekken, ProtonVPN AG Legal counsel
-
-

We will reevaluate this listing at the end of 2019 or when the aforementioned report has been published, whichever is sooner. -

526+ Servers
-

ProtonVPN has 526 servers in 42 countries at the time of writing this page. Typically the more servers a provider offers, the better: With hundreds of servers in operation, you are far more likely to find a fast connection and a server geographically closest to you.

-
Accepts Bitcoin
-

ProtonVPN does technically accept Bitcoin payments; however, you either need to have an existing account, or contact their support team in advance to register with Bitcoin.

-
Mobile Clients
-

In addition to providing standard OpenVPN configuration files, ProtonVPN has mobile clients for iOS or Android allowing for easy connections to their servers.

-
Extra Functionality
-

The ProtonVPN clients have a built-in killswitch to block internet connections outside of the VPN. They also are able to automatically start on boot. ProtonVPN also offers "Tor" servers allowing you to easily connect to onion sites, but we still strongly recommend using the official Tor Browser for this purpose.

-
-
- -
-
- IVPN -
-
-

IVPN USD $100/Year

-

IVPN is another strong premium VPN provider, and they have been in operation since 2009. IVPN is based in Gibraltar and offers a 3 day free trial. Unfortunately, due to its lack of an independent security audit, it does not meet the complete criteria for recommendation, see our notes below.

-
No Security Audit
-

IVPN has undergone a no-logging audit from Cure53 which concluded in agreement with IVPN's no-logging claim. However, IVPN has not undergone a more comprehensive security audit by an independent third party, and therefore cannot be strongly recommended at this time. We have still chosen to list it on this page with the assumption that an audit will be published soon: The IVPN team reportedly plans to begin the process in September.

-

We will reevaluate this listing at the end of 2019 or when the aforementioned report has been published, whichever is sooner. -

77+ Servers
-

IVPN has 77 servers in 31 countries at the time of writing this page. Typically the more servers a provider offers, the better. IVPN has a decent (but not exceptional) server count that will most likely provide adequate coverage to most users.

-
Accepts Bitcoin
-

In addition to accepting credit/debit cards and PayPal, IVPN accepts Bitcoin and cash/local currency (on annual plans) as anonymous forms of payment.

-
Mobile Clients
-

In addition to providing standard OpenVPN configuration files, IVPN has mobile clients for iOS or Android allowing for easy connections to their servers.

-
Extra Functionality
-

The IVPN clients have a built-in killswitch to block internet connections outside of the VPN. They also are able to automatically start on boot. IVPN also provides "AntiTracker" functionality, which blocks advertising networks and trackers from the network level.

-
-
- -
diff --git a/_includes/sections/warrant-canary.html b/_includes/sections/warrant-canary.html index 2f128248..34f54b4d 100644 --- a/_includes/sections/warrant-canary.html +++ b/_includes/sections/warrant-canary.html @@ -1,16 +1,14 @@

What is a warrant canary?

-Warrant Canary Example +Warrant Canary Example

A warrant canary is a posted document stating that an organization has not received any secret subpoenas during a specific period of time. If this document fails to be updated during the specified time then the user is to assume that the service has received such a subpoena and should stop using the service.

Warrant Canary Examples:

    -
  1. https://proxy.sh/canary
  2. https://www.ivpn.net/resources/canary.txt
  3. https://www.bolehvpn.net/canary.txt
  4. -
  5. https://www.ipredator.se/static/downloads/canary.txt

Related Warrant Canary Information

diff --git a/_includes/sections/windows10.html b/_includes/sections/windows10.html index 6d4987b4..5717ded8 100644 --- a/_includes/sections/windows10.html +++ b/_includes/sections/windows10.html @@ -4,7 +4,7 @@ Microsoft introduced a lot of new features in Windows 10 such as Cortana. However, most of them are violating your privacy.
-Windows 10 Privacy +Windows 10 Privacy
  1. Data syncing is by default enabled. diff --git a/_includes/sponsors/gold.html b/_includes/sponsors/gold.html new file mode 100644 index 00000000..c1496050 --- /dev/null +++ b/_includes/sponsors/gold.html @@ -0,0 +1,32 @@ + diff --git a/_includes/sponsors/list.html b/_includes/sponsors/list.html new file mode 100644 index 00000000..a28494ae --- /dev/null +++ b/_includes/sponsors/list.html @@ -0,0 +1,11 @@ +
      +
    • Alex
    • +
    • Daw-Ran Liou
    • +
    • Greg Werbin
    • +
    • Michael DeMichillie
    • +
    • Nathan Myers
    • +
    • PablO
    • +
    • Syfaer
    • +
    • the0
    • +
    • Troy Vassalotti
    • +
    diff --git a/_includes/sponsors/silver.html b/_includes/sponsors/silver.html new file mode 100644 index 00000000..55f493d5 --- /dev/null +++ b/_includes/sponsors/silver.html @@ -0,0 +1,36 @@ +
    +
    +
    Techlore Logo
    +
    +

    Techlore

    + https://techlore.tech +
    +
    +
    +
    +
    +
    Awesome Resources Logo
    +
    +

    Awesome Resources Ltd

    + https://www.awesomeresources.co.uk +
    +
    +
    +
    +
    +
    Look To The Right Logo
    +
    +

    Look To The Right

    + https://looktotheright.com +
    +
    +
    +
    +
    +
    scams.info
    +
    +

    scams.info

    + https://www.scams.info +
    +
    +
    diff --git a/_includes/team.html b/_includes/team.html new file mode 100644 index 00000000..ad387ede --- /dev/null +++ b/_includes/team.html @@ -0,0 +1,50 @@ +
    +
    + {% if include.avatar %}{% if include.nick %}{{ include.nick }}{% else %}{{ include.name }}{% endif %}{% endif %} +
    + +
    + {% if include.nick %} + {{ include.nick }}
    + + {% else %} + {{ include.name }} + {% endif %} + +
    {% if include.role %}{{ include.role }}{% elsif include.emeritus %}Former Contributor{% else %}Contributor{% endif %}
    + {% if include.bio %}

    {{ include.bio | default: "Hmm, this user hasn't written a bio quite yet :(" }}

    {% endif %} +
    + {% if include.email %} + + + + {% endif %} + {% if include.website %} + + {% endif %} + {% if include.keys %} + + + + {% endif %} + {% if include.mastodon %} + + + + {% endif %} + {% if include.twitter %} + + + + {% endif %} + {% if include.blog %} + + + + {% endif %} +
    +
    +
    +
    diff --git a/_layouts/page.html b/_layouts/page.html index 4a137c66..fbdb45fd 100644 --- a/_layouts/page.html +++ b/_layouts/page.html @@ -2,6 +2,8 @@ layout: default --- +{% include breadcrumbs.html %} +

    {{ page.title }}

    {% if page.description and page.hidedesc != true %}

    {{ page.description }}

    {% endif %} diff --git a/_sass/_vars.scss b/_sass/_vars.scss index e3f4d624..3f405561 100644 --- a/_sass/_vars.scss +++ b/_sass/_vars.scss @@ -24,3 +24,4 @@ $reddit: #ff5700; $linkedin: #4875b4; $email: #444; $diaspora: #2f3537; +$tor: #7d4698; diff --git a/_sass/flag-icon.scss b/_sass/flag-icon.scss index 70821a40..7e7c018d 100644 --- a/_sass/flag-icon.scss +++ b/_sass/flag-icon.scss @@ -1 +1 @@ -.flag-icon,.flag-icon-background{background-repeat:no-repeat;background-size:contain;background-position:50%}.flag-icon{position:relative;display:inline-block;width:1.33333333em;line-height:1em}.flag-icon:before{content:"\00a0"}.flag-icon.flag-icon-squared{width:1em}.flag-icon-ad{background-image:url(../img/flags/ad.svg)}.flag-icon-ad.flag-icon-squared{background-image:url(../img/flags/1x1/ad.svg)}.flag-icon-ae{background-image:url(../img/flags/ae.svg)}.flag-icon-ae.flag-icon-squared{background-image:url(../img/flags/1x1/ae.svg)}.flag-icon-af{background-image:url(../img/flags/af.svg)}.flag-icon-af.flag-icon-squared{background-image:url(../img/flags/1x1/af.svg)}.flag-icon-ag{background-image:url(../img/flags/ag.svg)}.flag-icon-ag.flag-icon-squared{background-image:url(../img/flags/1x1/ag.svg)}.flag-icon-ai{background-image:url(../img/flags/ai.svg)}.flag-icon-ai.flag-icon-squared{background-image:url(../img/flags/1x1/ai.svg)}.flag-icon-al{background-image:url(../img/flags/al.svg)}.flag-icon-al.flag-icon-squared{background-image:url(../img/flags/1x1/al.svg)}.flag-icon-am{background-image:url(../img/flags/am.svg)}.flag-icon-am.flag-icon-squared{background-image:url(../img/flags/1x1/am.svg)}.flag-icon-ao{background-image:url(../img/flags/ao.svg)}.flag-icon-ao.flag-icon-squared{background-image:url(../img/flags/1x1/ao.svg)}.flag-icon-aq{background-image:url(../img/flags/aq.svg)}.flag-icon-aq.flag-icon-squared{background-image:url(../img/flags/1x1/aq.svg)}.flag-icon-ar{background-image:url(../img/flags/ar.svg)}.flag-icon-ar.flag-icon-squared{background-image:url(../img/flags/1x1/ar.svg)}.flag-icon-as{background-image:url(../img/flags/as.svg)}.flag-icon-as.flag-icon-squared{background-image:url(../img/flags/1x1/as.svg)}.flag-icon-at{background-image:url(../img/flags/at.svg)}.flag-icon-at.flag-icon-squared{background-image:url(../img/flags/1x1/at.svg)}.flag-icon-au{background-image:url(../img/flags/au.svg)}.flag-icon-au.flag-icon-squared{background-image:url(../img/flags/1x1/au.svg)}.flag-icon-aw{background-image:url(../img/flags/aw.svg)}.flag-icon-aw.flag-icon-squared{background-image:url(../img/flags/1x1/aw.svg)}.flag-icon-ax{background-image:url(../img/flags/ax.svg)}.flag-icon-ax.flag-icon-squared{background-image:url(../img/flags/1x1/ax.svg)}.flag-icon-az{background-image:url(../img/flags/az.svg)}.flag-icon-az.flag-icon-squared{background-image:url(../img/flags/1x1/az.svg)}.flag-icon-ba{background-image:url(../img/flags/ba.svg)}.flag-icon-ba.flag-icon-squared{background-image:url(../img/flags/1x1/ba.svg)}.flag-icon-bb{background-image:url(../img/flags/bb.svg)}.flag-icon-bb.flag-icon-squared{background-image:url(../img/flags/1x1/bb.svg)}.flag-icon-bd{background-image:url(../img/flags/bd.svg)}.flag-icon-bd.flag-icon-squared{background-image:url(../img/flags/1x1/bd.svg)}.flag-icon-be{background-image:url(../img/flags/be.svg)}.flag-icon-be.flag-icon-squared{background-image:url(../img/flags/1x1/be.svg)}.flag-icon-bf{background-image:url(../img/flags/bf.svg)}.flag-icon-bf.flag-icon-squared{background-image:url(../img/flags/1x1/bf.svg)}.flag-icon-bg{background-image:url(../img/flags/bg.svg)}.flag-icon-bg.flag-icon-squared{background-image:url(../img/flags/1x1/bg.svg)}.flag-icon-bh{background-image:url(../img/flags/bh.svg)}.flag-icon-bh.flag-icon-squared{background-image:url(../img/flags/1x1/bh.svg)}.flag-icon-bi{background-image:url(../img/flags/bi.svg)}.flag-icon-bi.flag-icon-squared{background-image:url(../img/flags/1x1/bi.svg)}.flag-icon-bj{background-image:url(../img/flags/bj.svg)}.flag-icon-bj.flag-icon-squared{background-image:url(../img/flags/1x1/bj.svg)}.flag-icon-bl{background-image:url(../img/flags/bl.svg)}.flag-icon-bl.flag-icon-squared{background-image:url(../img/flags/1x1/bl.svg)}.flag-icon-bm{background-image:url(../img/flags/bm.svg)}.flag-icon-bm.flag-icon-squared{background-image:url(../img/flags/1x1/bm.svg)}.flag-icon-bn{background-image:url(../img/flags/bn.svg)}.flag-icon-bn.flag-icon-squared{background-image:url(../img/flags/1x1/bn.svg)}.flag-icon-bo{background-image:url(../img/flags/bo.svg)}.flag-icon-bo.flag-icon-squared{background-image:url(../img/flags/1x1/bo.svg)}.flag-icon-bq{background-image:url(../img/flags/bq.svg)}.flag-icon-bq.flag-icon-squared{background-image:url(../img/flags/1x1/bq.svg)}.flag-icon-br{background-image:url(../img/flags/br.svg)}.flag-icon-br.flag-icon-squared{background-image:url(../img/flags/1x1/br.svg)}.flag-icon-bs{background-image:url(../img/flags/bs.svg)}.flag-icon-bs.flag-icon-squared{background-image:url(../img/flags/1x1/bs.svg)}.flag-icon-bt{background-image:url(../img/flags/bt.svg)}.flag-icon-bt.flag-icon-squared{background-image:url(../img/flags/1x1/bt.svg)}.flag-icon-bv{background-image:url(../img/flags/bv.svg)}.flag-icon-bv.flag-icon-squared{background-image:url(../img/flags/1x1/bv.svg)}.flag-icon-bw{background-image:url(../img/flags/bw.svg)}.flag-icon-bw.flag-icon-squared{background-image:url(../img/flags/1x1/bw.svg)}.flag-icon-by{background-image:url(../img/flags/by.svg)}.flag-icon-by.flag-icon-squared{background-image:url(../img/flags/1x1/by.svg)}.flag-icon-bz{background-image:url(../img/flags/bz.svg)}.flag-icon-bz.flag-icon-squared{background-image:url(../img/flags/1x1/bz.svg)}.flag-icon-ca{background-image:url(../img/flags/ca.svg)}.flag-icon-ca.flag-icon-squared{background-image:url(../img/flags/1x1/ca.svg)}.flag-icon-cc{background-image:url(../img/flags/cc.svg)}.flag-icon-cc.flag-icon-squared{background-image:url(../img/flags/1x1/cc.svg)}.flag-icon-cd{background-image:url(../img/flags/cd.svg)}.flag-icon-cd.flag-icon-squared{background-image:url(../img/flags/1x1/cd.svg)}.flag-icon-cf{background-image:url(../img/flags/cf.svg)}.flag-icon-cf.flag-icon-squared{background-image:url(../img/flags/1x1/cf.svg)}.flag-icon-cg{background-image:url(../img/flags/cg.svg)}.flag-icon-cg.flag-icon-squared{background-image:url(../img/flags/1x1/cg.svg)}.flag-icon-ch{background-image:url(../img/flags/ch.svg)}.flag-icon-ch.flag-icon-squared{background-image:url(../img/flags/1x1/ch.svg)}.flag-icon-ci{background-image:url(../img/flags/ci.svg)}.flag-icon-ci.flag-icon-squared{background-image:url(../img/flags/1x1/ci.svg)}.flag-icon-ck{background-image:url(../img/flags/ck.svg)}.flag-icon-ck.flag-icon-squared{background-image:url(../img/flags/1x1/ck.svg)}.flag-icon-cl{background-image:url(../img/flags/cl.svg)}.flag-icon-cl.flag-icon-squared{background-image:url(../img/flags/1x1/cl.svg)}.flag-icon-cm{background-image:url(../img/flags/cm.svg)}.flag-icon-cm.flag-icon-squared{background-image:url(../img/flags/1x1/cm.svg)}.flag-icon-cn{background-image:url(../img/flags/cn.svg)}.flag-icon-cn.flag-icon-squared{background-image:url(../img/flags/1x1/cn.svg)}.flag-icon-co{background-image:url(../img/flags/co.svg)}.flag-icon-co.flag-icon-squared{background-image:url(../img/flags/1x1/co.svg)}.flag-icon-cr{background-image:url(../img/flags/cr.svg)}.flag-icon-cr.flag-icon-squared{background-image:url(../img/flags/1x1/cr.svg)}.flag-icon-cu{background-image:url(../img/flags/cu.svg)}.flag-icon-cu.flag-icon-squared{background-image:url(../img/flags/1x1/cu.svg)}.flag-icon-cv{background-image:url(../img/flags/cv.svg)}.flag-icon-cv.flag-icon-squared{background-image:url(../img/flags/1x1/cv.svg)}.flag-icon-cw{background-image:url(../img/flags/cw.svg)}.flag-icon-cw.flag-icon-squared{background-image:url(../img/flags/1x1/cw.svg)}.flag-icon-cx{background-image:url(../img/flags/cx.svg)}.flag-icon-cx.flag-icon-squared{background-image:url(../img/flags/1x1/cx.svg)}.flag-icon-cy{background-image:url(../img/flags/cy.svg)}.flag-icon-cy.flag-icon-squared{background-image:url(../img/flags/1x1/cy.svg)}.flag-icon-cz{background-image:url(../img/flags/cz.svg)}.flag-icon-cz.flag-icon-squared{background-image:url(../img/flags/1x1/cz.svg)}.flag-icon-de{background-image:url(../img/flags/de.svg)}.flag-icon-de.flag-icon-squared{background-image:url(../img/flags/1x1/de.svg)}.flag-icon-dj{background-image:url(../img/flags/dj.svg)}.flag-icon-dj.flag-icon-squared{background-image:url(../img/flags/1x1/dj.svg)}.flag-icon-dk{background-image:url(../img/flags/dk.svg)}.flag-icon-dk.flag-icon-squared{background-image:url(../img/flags/1x1/dk.svg)}.flag-icon-dm{background-image:url(../img/flags/dm.svg)}.flag-icon-dm.flag-icon-squared{background-image:url(../img/flags/1x1/dm.svg)}.flag-icon-do{background-image:url(../img/flags/do.svg)}.flag-icon-do.flag-icon-squared{background-image:url(../img/flags/1x1/do.svg)}.flag-icon-dz{background-image:url(../img/flags/dz.svg)}.flag-icon-dz.flag-icon-squared{background-image:url(../img/flags/1x1/dz.svg)}.flag-icon-ec{background-image:url(../img/flags/ec.svg)}.flag-icon-ec.flag-icon-squared{background-image:url(../img/flags/1x1/ec.svg)}.flag-icon-ee{background-image:url(../img/flags/ee.svg)}.flag-icon-ee.flag-icon-squared{background-image:url(../img/flags/1x1/ee.svg)}.flag-icon-eg{background-image:url(../img/flags/eg.svg)}.flag-icon-eg.flag-icon-squared{background-image:url(../img/flags/1x1/eg.svg)}.flag-icon-eh{background-image:url(../img/flags/eh.svg)}.flag-icon-eh.flag-icon-squared{background-image:url(../img/flags/1x1/eh.svg)}.flag-icon-er{background-image:url(../img/flags/er.svg)}.flag-icon-er.flag-icon-squared{background-image:url(../img/flags/1x1/er.svg)}.flag-icon-es{background-image:url(../img/flags/es.svg)}.flag-icon-es.flag-icon-squared{background-image:url(../img/flags/1x1/es.svg)}.flag-icon-et{background-image:url(../img/flags/et.svg)}.flag-icon-et.flag-icon-squared{background-image:url(../img/flags/1x1/et.svg)}.flag-icon-fi{background-image:url(../img/flags/fi.svg)}.flag-icon-fi.flag-icon-squared{background-image:url(../img/flags/1x1/fi.svg)}.flag-icon-fj{background-image:url(../img/flags/fj.svg)}.flag-icon-fj.flag-icon-squared{background-image:url(../img/flags/1x1/fj.svg)}.flag-icon-fk{background-image:url(../img/flags/fk.svg)}.flag-icon-fk.flag-icon-squared{background-image:url(../img/flags/1x1/fk.svg)}.flag-icon-fm{background-image:url(../img/flags/fm.svg)}.flag-icon-fm.flag-icon-squared{background-image:url(../img/flags/1x1/fm.svg)}.flag-icon-fo{background-image:url(../img/flags/fo.svg)}.flag-icon-fo.flag-icon-squared{background-image:url(../img/flags/1x1/fo.svg)}.flag-icon-fr{background-image:url(../img/flags/fr.svg)}.flag-icon-fr.flag-icon-squared{background-image:url(../img/flags/1x1/fr.svg)}.flag-icon-ga{background-image:url(../img/flags/ga.svg)}.flag-icon-ga.flag-icon-squared{background-image:url(../img/flags/1x1/ga.svg)}.flag-icon-gb{background-image:url(../img/flags/gb.svg)}.flag-icon-gb.flag-icon-squared{background-image:url(../img/flags/1x1/gb.svg)}.flag-icon-gd{background-image:url(../img/flags/gd.svg)}.flag-icon-gd.flag-icon-squared{background-image:url(../img/flags/1x1/gd.svg)}.flag-icon-ge{background-image:url(../img/flags/ge.svg)}.flag-icon-ge.flag-icon-squared{background-image:url(../img/flags/1x1/ge.svg)}.flag-icon-gf{background-image:url(../img/flags/gf.svg)}.flag-icon-gf.flag-icon-squared{background-image:url(../img/flags/1x1/gf.svg)}.flag-icon-gg{background-image:url(../img/flags/gg.svg)}.flag-icon-gg.flag-icon-squared{background-image:url(../img/flags/1x1/gg.svg)}.flag-icon-gh{background-image:url(../img/flags/gh.svg)}.flag-icon-gh.flag-icon-squared{background-image:url(../img/flags/1x1/gh.svg)}.flag-icon-gi{background-image:url(../img/flags/gi.svg)}.flag-icon-gi.flag-icon-squared{background-image:url(../img/flags/1x1/gi.svg)}.flag-icon-gl{background-image:url(../img/flags/gl.svg)}.flag-icon-gl.flag-icon-squared{background-image:url(../img/flags/1x1/gl.svg)}.flag-icon-gm{background-image:url(../img/flags/gm.svg)}.flag-icon-gm.flag-icon-squared{background-image:url(../img/flags/1x1/gm.svg)}.flag-icon-gn{background-image:url(../img/flags/gn.svg)}.flag-icon-gn.flag-icon-squared{background-image:url(../img/flags/1x1/gn.svg)}.flag-icon-gp{background-image:url(../img/flags/gp.svg)}.flag-icon-gp.flag-icon-squared{background-image:url(../img/flags/1x1/gp.svg)}.flag-icon-gq{background-image:url(../img/flags/gq.svg)}.flag-icon-gq.flag-icon-squared{background-image:url(../img/flags/1x1/gq.svg)}.flag-icon-gr{background-image:url(../img/flags/gr.svg)}.flag-icon-gr.flag-icon-squared{background-image:url(../img/flags/1x1/gr.svg)}.flag-icon-gs{background-image:url(../img/flags/gs.svg)}.flag-icon-gs.flag-icon-squared{background-image:url(../img/flags/1x1/gs.svg)}.flag-icon-gt{background-image:url(../img/flags/gt.svg)}.flag-icon-gt.flag-icon-squared{background-image:url(../img/flags/1x1/gt.svg)}.flag-icon-gu{background-image:url(../img/flags/gu.svg)}.flag-icon-gu.flag-icon-squared{background-image:url(../img/flags/1x1/gu.svg)}.flag-icon-gw{background-image:url(../img/flags/gw.svg)}.flag-icon-gw.flag-icon-squared{background-image:url(../img/flags/1x1/gw.svg)}.flag-icon-gy{background-image:url(../img/flags/gy.svg)}.flag-icon-gy.flag-icon-squared{background-image:url(../img/flags/1x1/gy.svg)}.flag-icon-hk{background-image:url(../img/flags/hk.svg)}.flag-icon-hk.flag-icon-squared{background-image:url(../img/flags/1x1/hk.svg)}.flag-icon-hm{background-image:url(../img/flags/hm.svg)}.flag-icon-hm.flag-icon-squared{background-image:url(../img/flags/1x1/hm.svg)}.flag-icon-hn{background-image:url(../img/flags/hn.svg)}.flag-icon-hn.flag-icon-squared{background-image:url(../img/flags/1x1/hn.svg)}.flag-icon-hr{background-image:url(../img/flags/hr.svg)}.flag-icon-hr.flag-icon-squared{background-image:url(../img/flags/1x1/hr.svg)}.flag-icon-ht{background-image:url(../img/flags/ht.svg)}.flag-icon-ht.flag-icon-squared{background-image:url(../img/flags/1x1/ht.svg)}.flag-icon-hu{background-image:url(../img/flags/hu.svg)}.flag-icon-hu.flag-icon-squared{background-image:url(../img/flags/1x1/hu.svg)}.flag-icon-id{background-image:url(../img/flags/id.svg)}.flag-icon-id.flag-icon-squared{background-image:url(../img/flags/1x1/id.svg)}.flag-icon-ie{background-image:url(../img/flags/ie.svg)}.flag-icon-ie.flag-icon-squared{background-image:url(../img/flags/1x1/ie.svg)}.flag-icon-il{background-image:url(../img/flags/il.svg)}.flag-icon-il.flag-icon-squared{background-image:url(../img/flags/1x1/il.svg)}.flag-icon-im{background-image:url(../img/flags/im.svg)}.flag-icon-im.flag-icon-squared{background-image:url(../img/flags/1x1/im.svg)}.flag-icon-in{background-image:url(../img/flags/in.svg)}.flag-icon-in.flag-icon-squared{background-image:url(../img/flags/1x1/in.svg)}.flag-icon-io{background-image:url(../img/flags/io.svg)}.flag-icon-io.flag-icon-squared{background-image:url(../img/flags/1x1/io.svg)}.flag-icon-iq{background-image:url(../img/flags/iq.svg)}.flag-icon-iq.flag-icon-squared{background-image:url(../img/flags/1x1/iq.svg)}.flag-icon-ir{background-image:url(../img/flags/ir.svg)}.flag-icon-ir.flag-icon-squared{background-image:url(../img/flags/1x1/ir.svg)}.flag-icon-is{background-image:url(../img/flags/is.svg)}.flag-icon-is.flag-icon-squared{background-image:url(../img/flags/1x1/is.svg)}.flag-icon-it{background-image:url(../img/flags/it.svg)}.flag-icon-it.flag-icon-squared{background-image:url(../img/flags/1x1/it.svg)}.flag-icon-je{background-image:url(../img/flags/je.svg)}.flag-icon-je.flag-icon-squared{background-image:url(../img/flags/1x1/je.svg)}.flag-icon-jm{background-image:url(../img/flags/jm.svg)}.flag-icon-jm.flag-icon-squared{background-image:url(../img/flags/1x1/jm.svg)}.flag-icon-jo{background-image:url(../img/flags/jo.svg)}.flag-icon-jo.flag-icon-squared{background-image:url(../img/flags/1x1/jo.svg)}.flag-icon-jp{background-image:url(../img/flags/jp.svg)}.flag-icon-jp.flag-icon-squared{background-image:url(../img/flags/1x1/jp.svg)}.flag-icon-ke{background-image:url(../img/flags/ke.svg)}.flag-icon-ke.flag-icon-squared{background-image:url(../img/flags/1x1/ke.svg)}.flag-icon-kg{background-image:url(../img/flags/kg.svg)}.flag-icon-kg.flag-icon-squared{background-image:url(../img/flags/1x1/kg.svg)}.flag-icon-kh{background-image:url(../img/flags/kh.svg)}.flag-icon-kh.flag-icon-squared{background-image:url(../img/flags/1x1/kh.svg)}.flag-icon-ki{background-image:url(../img/flags/ki.svg)}.flag-icon-ki.flag-icon-squared{background-image:url(../img/flags/1x1/ki.svg)}.flag-icon-km{background-image:url(../img/flags/km.svg)}.flag-icon-km.flag-icon-squared{background-image:url(../img/flags/1x1/km.svg)}.flag-icon-kn{background-image:url(../img/flags/kn.svg)}.flag-icon-kn.flag-icon-squared{background-image:url(../img/flags/1x1/kn.svg)}.flag-icon-kp{background-image:url(../img/flags/kp.svg)}.flag-icon-kp.flag-icon-squared{background-image:url(../img/flags/1x1/kp.svg)}.flag-icon-kr{background-image:url(../img/flags/kr.svg)}.flag-icon-kr.flag-icon-squared{background-image:url(../img/flags/1x1/kr.svg)}.flag-icon-kw{background-image:url(../img/flags/kw.svg)}.flag-icon-kw.flag-icon-squared{background-image:url(../img/flags/1x1/kw.svg)}.flag-icon-ky{background-image:url(../img/flags/ky.svg)}.flag-icon-ky.flag-icon-squared{background-image:url(../img/flags/1x1/ky.svg)}.flag-icon-kz{background-image:url(../img/flags/kz.svg)}.flag-icon-kz.flag-icon-squared{background-image:url(../img/flags/1x1/kz.svg)}.flag-icon-la{background-image:url(../img/flags/la.svg)}.flag-icon-la.flag-icon-squared{background-image:url(../img/flags/1x1/la.svg)}.flag-icon-lb{background-image:url(../img/flags/lb.svg)}.flag-icon-lb.flag-icon-squared{background-image:url(../img/flags/1x1/lb.svg)}.flag-icon-lc{background-image:url(../img/flags/lc.svg)}.flag-icon-lc.flag-icon-squared{background-image:url(../img/flags/1x1/lc.svg)}.flag-icon-li{background-image:url(../img/flags/li.svg)}.flag-icon-li.flag-icon-squared{background-image:url(../img/flags/1x1/li.svg)}.flag-icon-lk{background-image:url(../img/flags/lk.svg)}.flag-icon-lk.flag-icon-squared{background-image:url(../img/flags/1x1/lk.svg)}.flag-icon-lr{background-image:url(../img/flags/lr.svg)}.flag-icon-lr.flag-icon-squared{background-image:url(../img/flags/1x1/lr.svg)}.flag-icon-ls{background-image:url(../img/flags/ls.svg)}.flag-icon-ls.flag-icon-squared{background-image:url(../img/flags/1x1/ls.svg)}.flag-icon-lt{background-image:url(../img/flags/lt.svg)}.flag-icon-lt.flag-icon-squared{background-image:url(../img/flags/1x1/lt.svg)}.flag-icon-lu{background-image:url(../img/flags/lu.svg)}.flag-icon-lu.flag-icon-squared{background-image:url(../img/flags/1x1/lu.svg)}.flag-icon-lv{background-image:url(../img/flags/lv.svg)}.flag-icon-lv.flag-icon-squared{background-image:url(../img/flags/1x1/lv.svg)}.flag-icon-ly{background-image:url(../img/flags/ly.svg)}.flag-icon-ly.flag-icon-squared{background-image:url(../img/flags/1x1/ly.svg)}.flag-icon-ma{background-image:url(../img/flags/ma.svg)}.flag-icon-ma.flag-icon-squared{background-image:url(../img/flags/1x1/ma.svg)}.flag-icon-mc{background-image:url(../img/flags/mc.svg)}.flag-icon-mc.flag-icon-squared{background-image:url(../img/flags/1x1/mc.svg)}.flag-icon-md{background-image:url(../img/flags/md.svg)}.flag-icon-md.flag-icon-squared{background-image:url(../img/flags/1x1/md.svg)}.flag-icon-me{background-image:url(../img/flags/me.svg)}.flag-icon-me.flag-icon-squared{background-image:url(../img/flags/1x1/me.svg)}.flag-icon-mf{background-image:url(../img/flags/mf.svg)}.flag-icon-mf.flag-icon-squared{background-image:url(../img/flags/1x1/mf.svg)}.flag-icon-mg{background-image:url(../img/flags/mg.svg)}.flag-icon-mg.flag-icon-squared{background-image:url(../img/flags/1x1/mg.svg)}.flag-icon-mh{background-image:url(../img/flags/mh.svg)}.flag-icon-mh.flag-icon-squared{background-image:url(../img/flags/1x1/mh.svg)}.flag-icon-mk{background-image:url(../img/flags/mk.svg)}.flag-icon-mk.flag-icon-squared{background-image:url(../img/flags/1x1/mk.svg)}.flag-icon-ml{background-image:url(../img/flags/ml.svg)}.flag-icon-ml.flag-icon-squared{background-image:url(../img/flags/1x1/ml.svg)}.flag-icon-mm{background-image:url(../img/flags/mm.svg)}.flag-icon-mm.flag-icon-squared{background-image:url(../img/flags/1x1/mm.svg)}.flag-icon-mn{background-image:url(../img/flags/mn.svg)}.flag-icon-mn.flag-icon-squared{background-image:url(../img/flags/1x1/mn.svg)}.flag-icon-mo{background-image:url(../img/flags/mo.svg)}.flag-icon-mo.flag-icon-squared{background-image:url(../img/flags/1x1/mo.svg)}.flag-icon-mp{background-image:url(../img/flags/mp.svg)}.flag-icon-mp.flag-icon-squared{background-image:url(../img/flags/1x1/mp.svg)}.flag-icon-mq{background-image:url(../img/flags/mq.svg)}.flag-icon-mq.flag-icon-squared{background-image:url(../img/flags/1x1/mq.svg)}.flag-icon-mr{background-image:url(../img/flags/mr.svg)}.flag-icon-mr.flag-icon-squared{background-image:url(../img/flags/1x1/mr.svg)}.flag-icon-ms{background-image:url(../img/flags/ms.svg)}.flag-icon-ms.flag-icon-squared{background-image:url(../img/flags/1x1/ms.svg)}.flag-icon-mt{background-image:url(../img/flags/mt.svg)}.flag-icon-mt.flag-icon-squared{background-image:url(../img/flags/1x1/mt.svg)}.flag-icon-mu{background-image:url(../img/flags/mu.svg)}.flag-icon-mu.flag-icon-squared{background-image:url(../img/flags/1x1/mu.svg)}.flag-icon-mv{background-image:url(../img/flags/mv.svg)}.flag-icon-mv.flag-icon-squared{background-image:url(../img/flags/1x1/mv.svg)}.flag-icon-mw{background-image:url(../img/flags/mw.svg)}.flag-icon-mw.flag-icon-squared{background-image:url(../img/flags/1x1/mw.svg)}.flag-icon-mx{background-image:url(../img/flags/mx.svg)}.flag-icon-mx.flag-icon-squared{background-image:url(../img/flags/1x1/mx.svg)}.flag-icon-my{background-image:url(../img/flags/my.svg)}.flag-icon-my.flag-icon-squared{background-image:url(../img/flags/1x1/my.svg)}.flag-icon-mz{background-image:url(../img/flags/mz.svg)}.flag-icon-mz.flag-icon-squared{background-image:url(../img/flags/1x1/mz.svg)}.flag-icon-na{background-image:url(../img/flags/na.svg)}.flag-icon-na.flag-icon-squared{background-image:url(../img/flags/1x1/na.svg)}.flag-icon-nc{background-image:url(../img/flags/nc.svg)}.flag-icon-nc.flag-icon-squared{background-image:url(../img/flags/1x1/nc.svg)}.flag-icon-ne{background-image:url(../img/flags/ne.svg)}.flag-icon-ne.flag-icon-squared{background-image:url(../img/flags/1x1/ne.svg)}.flag-icon-nf{background-image:url(../img/flags/nf.svg)}.flag-icon-nf.flag-icon-squared{background-image:url(../img/flags/1x1/nf.svg)}.flag-icon-ng{background-image:url(../img/flags/ng.svg)}.flag-icon-ng.flag-icon-squared{background-image:url(../img/flags/1x1/ng.svg)}.flag-icon-ni{background-image:url(../img/flags/ni.svg)}.flag-icon-ni.flag-icon-squared{background-image:url(../img/flags/1x1/ni.svg)}.flag-icon-nl{background-image:url(../img/flags/nl.svg)}.flag-icon-nl.flag-icon-squared{background-image:url(../img/flags/1x1/nl.svg)}.flag-icon-no{background-image:url(../img/flags/no.svg)}.flag-icon-no.flag-icon-squared{background-image:url(../img/flags/1x1/no.svg)}.flag-icon-np{background-image:url(../img/flags/np.svg)}.flag-icon-np.flag-icon-squared{background-image:url(../img/flags/1x1/np.svg)}.flag-icon-nr{background-image:url(../img/flags/nr.svg)}.flag-icon-nr.flag-icon-squared{background-image:url(../img/flags/1x1/nr.svg)}.flag-icon-nu{background-image:url(../img/flags/nu.svg)}.flag-icon-nu.flag-icon-squared{background-image:url(../img/flags/1x1/nu.svg)}.flag-icon-nz{background-image:url(../img/flags/nz.svg)}.flag-icon-nz.flag-icon-squared{background-image:url(../img/flags/1x1/nz.svg)}.flag-icon-om{background-image:url(../img/flags/om.svg)}.flag-icon-om.flag-icon-squared{background-image:url(../img/flags/1x1/om.svg)}.flag-icon-pa{background-image:url(../img/flags/pa.svg)}.flag-icon-pa.flag-icon-squared{background-image:url(../img/flags/1x1/pa.svg)}.flag-icon-pe{background-image:url(../img/flags/pe.svg)}.flag-icon-pe.flag-icon-squared{background-image:url(../img/flags/1x1/pe.svg)}.flag-icon-pf{background-image:url(../img/flags/pf.svg)}.flag-icon-pf.flag-icon-squared{background-image:url(../img/flags/1x1/pf.svg)}.flag-icon-pg{background-image:url(../img/flags/pg.svg)}.flag-icon-pg.flag-icon-squared{background-image:url(../img/flags/1x1/pg.svg)}.flag-icon-ph{background-image:url(../img/flags/ph.svg)}.flag-icon-ph.flag-icon-squared{background-image:url(../img/flags/1x1/ph.svg)}.flag-icon-pk{background-image:url(../img/flags/pk.svg)}.flag-icon-pk.flag-icon-squared{background-image:url(../img/flags/1x1/pk.svg)}.flag-icon-pl{background-image:url(../img/flags/pl.svg)}.flag-icon-pl.flag-icon-squared{background-image:url(../img/flags/1x1/pl.svg)}.flag-icon-pm{background-image:url(../img/flags/pm.svg)}.flag-icon-pm.flag-icon-squared{background-image:url(../img/flags/1x1/pm.svg)}.flag-icon-pn{background-image:url(../img/flags/pn.svg)}.flag-icon-pn.flag-icon-squared{background-image:url(../img/flags/1x1/pn.svg)}.flag-icon-pr{background-image:url(../img/flags/pr.svg)}.flag-icon-pr.flag-icon-squared{background-image:url(../img/flags/1x1/pr.svg)}.flag-icon-ps{background-image:url(../img/flags/ps.svg)}.flag-icon-ps.flag-icon-squared{background-image:url(../img/flags/1x1/ps.svg)}.flag-icon-pt{background-image:url(../img/flags/pt.svg)}.flag-icon-pt.flag-icon-squared{background-image:url(../img/flags/1x1/pt.svg)}.flag-icon-pw{background-image:url(../img/flags/pw.svg)}.flag-icon-pw.flag-icon-squared{background-image:url(../img/flags/1x1/pw.svg)}.flag-icon-py{background-image:url(../img/flags/py.svg)}.flag-icon-py.flag-icon-squared{background-image:url(../img/flags/1x1/py.svg)}.flag-icon-qa{background-image:url(../img/flags/qa.svg)}.flag-icon-qa.flag-icon-squared{background-image:url(../img/flags/1x1/qa.svg)}.flag-icon-re{background-image:url(../img/flags/re.svg)}.flag-icon-re.flag-icon-squared{background-image:url(../img/flags/1x1/re.svg)}.flag-icon-ro{background-image:url(../img/flags/ro.svg)}.flag-icon-ro.flag-icon-squared{background-image:url(../img/flags/1x1/ro.svg)}.flag-icon-rs{background-image:url(../img/flags/rs.svg)}.flag-icon-rs.flag-icon-squared{background-image:url(../img/flags/1x1/rs.svg)}.flag-icon-ru{background-image:url(../img/flags/ru.svg)}.flag-icon-ru.flag-icon-squared{background-image:url(../img/flags/1x1/ru.svg)}.flag-icon-rw{background-image:url(../img/flags/rw.svg)}.flag-icon-rw.flag-icon-squared{background-image:url(../img/flags/1x1/rw.svg)}.flag-icon-sa{background-image:url(../img/flags/sa.svg)}.flag-icon-sa.flag-icon-squared{background-image:url(../img/flags/1x1/sa.svg)}.flag-icon-sb{background-image:url(../img/flags/sb.svg)}.flag-icon-sb.flag-icon-squared{background-image:url(../img/flags/1x1/sb.svg)}.flag-icon-sc{background-image:url(../img/flags/sc.svg)}.flag-icon-sc.flag-icon-squared{background-image:url(../img/flags/1x1/sc.svg)}.flag-icon-sd{background-image:url(../img/flags/sd.svg)}.flag-icon-sd.flag-icon-squared{background-image:url(../img/flags/1x1/sd.svg)}.flag-icon-se{background-image:url(../img/flags/se.svg)}.flag-icon-se.flag-icon-squared{background-image:url(../img/flags/1x1/se.svg)}.flag-icon-sg{background-image:url(../img/flags/sg.svg)}.flag-icon-sg.flag-icon-squared{background-image:url(../img/flags/1x1/sg.svg)}.flag-icon-sh{background-image:url(../img/flags/sh.svg)}.flag-icon-sh.flag-icon-squared{background-image:url(../img/flags/1x1/sh.svg)}.flag-icon-si{background-image:url(../img/flags/si.svg)}.flag-icon-si.flag-icon-squared{background-image:url(../img/flags/1x1/si.svg)}.flag-icon-sj{background-image:url(../img/flags/sj.svg)}.flag-icon-sj.flag-icon-squared{background-image:url(../img/flags/1x1/sj.svg)}.flag-icon-sk{background-image:url(../img/flags/sk.svg)}.flag-icon-sk.flag-icon-squared{background-image:url(../img/flags/1x1/sk.svg)}.flag-icon-sl{background-image:url(../img/flags/sl.svg)}.flag-icon-sl.flag-icon-squared{background-image:url(../img/flags/1x1/sl.svg)}.flag-icon-sm{background-image:url(../img/flags/sm.svg)}.flag-icon-sm.flag-icon-squared{background-image:url(../img/flags/1x1/sm.svg)}.flag-icon-sn{background-image:url(../img/flags/sn.svg)}.flag-icon-sn.flag-icon-squared{background-image:url(../img/flags/1x1/sn.svg)}.flag-icon-so{background-image:url(../img/flags/so.svg)}.flag-icon-so.flag-icon-squared{background-image:url(../img/flags/1x1/so.svg)}.flag-icon-sr{background-image:url(../img/flags/sr.svg)}.flag-icon-sr.flag-icon-squared{background-image:url(../img/flags/1x1/sr.svg)}.flag-icon-ss{background-image:url(../img/flags/ss.svg)}.flag-icon-ss.flag-icon-squared{background-image:url(../img/flags/1x1/ss.svg)}.flag-icon-st{background-image:url(../img/flags/st.svg)}.flag-icon-st.flag-icon-squared{background-image:url(../img/flags/1x1/st.svg)}.flag-icon-sv{background-image:url(../img/flags/sv.svg)}.flag-icon-sv.flag-icon-squared{background-image:url(../img/flags/1x1/sv.svg)}.flag-icon-sx{background-image:url(../img/flags/sx.svg)}.flag-icon-sx.flag-icon-squared{background-image:url(../img/flags/1x1/sx.svg)}.flag-icon-sy{background-image:url(../img/flags/sy.svg)}.flag-icon-sy.flag-icon-squared{background-image:url(../img/flags/1x1/sy.svg)}.flag-icon-sz{background-image:url(../img/flags/sz.svg)}.flag-icon-sz.flag-icon-squared{background-image:url(../img/flags/1x1/sz.svg)}.flag-icon-tc{background-image:url(../img/flags/tc.svg)}.flag-icon-tc.flag-icon-squared{background-image:url(../img/flags/1x1/tc.svg)}.flag-icon-td{background-image:url(../img/flags/td.svg)}.flag-icon-td.flag-icon-squared{background-image:url(../img/flags/1x1/td.svg)}.flag-icon-tf{background-image:url(../img/flags/tf.svg)}.flag-icon-tf.flag-icon-squared{background-image:url(../img/flags/1x1/tf.svg)}.flag-icon-tg{background-image:url(../img/flags/tg.svg)}.flag-icon-tg.flag-icon-squared{background-image:url(../img/flags/1x1/tg.svg)}.flag-icon-th{background-image:url(../img/flags/th.svg)}.flag-icon-th.flag-icon-squared{background-image:url(../img/flags/1x1/th.svg)}.flag-icon-tj{background-image:url(../img/flags/tj.svg)}.flag-icon-tj.flag-icon-squared{background-image:url(../img/flags/1x1/tj.svg)}.flag-icon-tk{background-image:url(../img/flags/tk.svg)}.flag-icon-tk.flag-icon-squared{background-image:url(../img/flags/1x1/tk.svg)}.flag-icon-tl{background-image:url(../img/flags/tl.svg)}.flag-icon-tl.flag-icon-squared{background-image:url(../img/flags/1x1/tl.svg)}.flag-icon-tm{background-image:url(../img/flags/tm.svg)}.flag-icon-tm.flag-icon-squared{background-image:url(../img/flags/1x1/tm.svg)}.flag-icon-tn{background-image:url(../img/flags/tn.svg)}.flag-icon-tn.flag-icon-squared{background-image:url(../img/flags/1x1/tn.svg)}.flag-icon-to{background-image:url(../img/flags/to.svg)}.flag-icon-to.flag-icon-squared{background-image:url(../img/flags/1x1/to.svg)}.flag-icon-tr{background-image:url(../img/flags/tr.svg)}.flag-icon-tr.flag-icon-squared{background-image:url(../img/flags/1x1/tr.svg)}.flag-icon-tt{background-image:url(../img/flags/tt.svg)}.flag-icon-tt.flag-icon-squared{background-image:url(../img/flags/1x1/tt.svg)}.flag-icon-tv{background-image:url(../img/flags/tv.svg)}.flag-icon-tv.flag-icon-squared{background-image:url(../img/flags/1x1/tv.svg)}.flag-icon-tw{background-image:url(../img/flags/tw.svg)}.flag-icon-tw.flag-icon-squared{background-image:url(../img/flags/1x1/tw.svg)}.flag-icon-tz{background-image:url(../img/flags/tz.svg)}.flag-icon-tz.flag-icon-squared{background-image:url(../img/flags/1x1/tz.svg)}.flag-icon-ua{background-image:url(../img/flags/ua.svg)}.flag-icon-ua.flag-icon-squared{background-image:url(../img/flags/1x1/ua.svg)}.flag-icon-ug{background-image:url(../img/flags/ug.svg)}.flag-icon-ug.flag-icon-squared{background-image:url(../img/flags/1x1/ug.svg)}.flag-icon-um{background-image:url(../img/flags/um.svg)}.flag-icon-um.flag-icon-squared{background-image:url(../img/flags/1x1/um.svg)}.flag-icon-us{background-image:url(../img/flags/us.svg)}.flag-icon-us.flag-icon-squared{background-image:url(../img/flags/1x1/us.svg)}.flag-icon-uy{background-image:url(../img/flags/uy.svg)}.flag-icon-uy.flag-icon-squared{background-image:url(../img/flags/1x1/uy.svg)}.flag-icon-uz{background-image:url(../img/flags/uz.svg)}.flag-icon-uz.flag-icon-squared{background-image:url(../img/flags/1x1/uz.svg)}.flag-icon-va{background-image:url(../img/flags/va.svg)}.flag-icon-va.flag-icon-squared{background-image:url(../img/flags/1x1/va.svg)}.flag-icon-vc{background-image:url(../img/flags/vc.svg)}.flag-icon-vc.flag-icon-squared{background-image:url(../img/flags/1x1/vc.svg)}.flag-icon-ve{background-image:url(../img/flags/ve.svg)}.flag-icon-ve.flag-icon-squared{background-image:url(../img/flags/1x1/ve.svg)}.flag-icon-vg{background-image:url(../img/flags/vg.svg)}.flag-icon-vg.flag-icon-squared{background-image:url(../img/flags/1x1/vg.svg)}.flag-icon-vi{background-image:url(../img/flags/vi.svg)}.flag-icon-vi.flag-icon-squared{background-image:url(../img/flags/1x1/vi.svg)}.flag-icon-vn{background-image:url(../img/flags/vn.svg)}.flag-icon-vn.flag-icon-squared{background-image:url(../img/flags/1x1/vn.svg)}.flag-icon-vu{background-image:url(../img/flags/vu.svg)}.flag-icon-vu.flag-icon-squared{background-image:url(../img/flags/1x1/vu.svg)}.flag-icon-wf{background-image:url(../img/flags/wf.svg)}.flag-icon-wf.flag-icon-squared{background-image:url(../img/flags/1x1/wf.svg)}.flag-icon-ws{background-image:url(../img/flags/ws.svg)}.flag-icon-ws.flag-icon-squared{background-image:url(../img/flags/1x1/ws.svg)}.flag-icon-ye{background-image:url(../img/flags/ye.svg)}.flag-icon-ye.flag-icon-squared{background-image:url(../img/flags/1x1/ye.svg)}.flag-icon-yt{background-image:url(../img/flags/yt.svg)}.flag-icon-yt.flag-icon-squared{background-image:url(../img/flags/1x1/yt.svg)}.flag-icon-za{background-image:url(../img/flags/za.svg)}.flag-icon-za.flag-icon-squared{background-image:url(../img/flags/1x1/za.svg)}.flag-icon-zm{background-image:url(../img/flags/zm.svg)}.flag-icon-zm.flag-icon-squared{background-image:url(../img/flags/1x1/zm.svg)}.flag-icon-zw{background-image:url(../img/flags/zw.svg)}.flag-icon-zw.flag-icon-squared{background-image:url(../img/flags/1x1/zw.svg)}.flag-icon-eu{background-image:url(../img/flags/eu.svg)}.flag-icon-eu.flag-icon-squared{background-image:url(../img/flags/1x1/eu.svg)}.flag-icon-gb-eng{background-image:url(../img/flags/gb-eng.svg)}.flag-icon-gb-eng.flag-icon-squared{background-image:url(../img/flags/1x1/gb-eng.svg)}.flag-icon-gb-sct{background-image:url(../img/flags/gb-sct.svg)}.flag-icon-gb-sct.flag-icon-squared{background-image:url(../img/flags/1x1/gb-sct.svg)}.flag-icon-gb-wls{background-image:url(../img/flags/gb-wls.svg)}.flag-icon-gb-wls.flag-icon-squared{background-image:url(../img/flags/1x1/gb-wls.svg)}.flag-icon-un{background-image:url(../img/flags/un.svg)}.flag-icon-un.flag-icon-squared{background-image:url(../img/flags/1x1/un.svg)} +.flag-icon,.flag-icon-background{background-repeat:no-repeat;background-size:contain;background-position:50%}.flag-icon{position:relative;display:inline-block;width:1.33333333em;line-height:1em}.flag-icon:before{content:"\00a0"}.flag-icon-ad{background-image:url("../img/svg/flags/ad.svg")}.flag-icon-ae{background-image:url("../img/svg/flags/ae.svg")}.flag-icon-af{background-image:url("../img/svg/flags/af.svg")}.flag-icon-ag{background-image:url("../img/svg/flags/ag.svg")}.flag-icon-ai{background-image:url("../img/svg/flags/ai.svg")}.flag-icon-al{background-image:url("../img/svg/flags/al.svg")}.flag-icon-am{background-image:url("../img/svg/flags/am.svg")}.flag-icon-ao{background-image:url("../img/svg/flags/ao.svg")}.flag-icon-aq{background-image:url("../img/svg/flags/aq.svg")}.flag-icon-ar{background-image:url("../img/svg/flags/ar.svg")}.flag-icon-as{background-image:url("../img/svg/flags/as.svg")}.flag-icon-at{background-image:url("../img/svg/flags/at.svg")}.flag-icon-au{background-image:url("../img/svg/flags/au.svg")}.flag-icon-aw{background-image:url("../img/svg/flags/aw.svg")}.flag-icon-ax{background-image:url("../img/svg/flags/ax.svg")}.flag-icon-az{background-image:url("../img/svg/flags/az.svg")}.flag-icon-ba{background-image:url("../img/svg/flags/ba.svg")}.flag-icon-bb{background-image:url("../img/svg/flags/bb.svg")}.flag-icon-bd{background-image:url("../img/svg/flags/bd.svg")}.flag-icon-be{background-image:url("../img/svg/flags/be.svg")}.flag-icon-bf{background-image:url("../img/svg/flags/bf.svg")}.flag-icon-bg{background-image:url("../img/svg/flags/bg.svg")}.flag-icon-bh{background-image:url("../img/svg/flags/bh.svg")}.flag-icon-bi{background-image:url("../img/svg/flags/bi.svg")}.flag-icon-bj{background-image:url("../img/svg/flags/bj.svg")}.flag-icon-bl{background-image:url("../img/svg/flags/bl.svg")}.flag-icon-bm{background-image:url("../img/svg/flags/bm.svg")}.flag-icon-bn{background-image:url("../img/svg/flags/bn.svg")}.flag-icon-bo{background-image:url("../img/svg/flags/bo.svg")}.flag-icon-bq{background-image:url("../img/svg/flags/bq.svg")}.flag-icon-br{background-image:url("../img/svg/flags/br.svg")}.flag-icon-bs{background-image:url("../img/svg/flags/bs.svg")}.flag-icon-bt{background-image:url("../img/svg/flags/bt.svg")}.flag-icon-bv{background-image:url("../img/svg/flags/bv.svg")}.flag-icon-bw{background-image:url("../img/svg/flags/bw.svg")}.flag-icon-by{background-image:url("../img/svg/flags/by.svg")}.flag-icon-bz{background-image:url("../img/svg/flags/bz.svg")}.flag-icon-ca{background-image:url("../img/svg/flags/ca.svg")}.flag-icon-cc{background-image:url("../img/svg/flags/cc.svg")}.flag-icon-cd{background-image:url("../img/svg/flags/cd.svg")}.flag-icon-cf{background-image:url("../img/svg/flags/cf.svg")}.flag-icon-cg{background-image:url("../img/svg/flags/cg.svg")}.flag-icon-ch{background-image:url("../img/svg/flags/ch.svg")}.flag-icon-ci{background-image:url("../img/svg/flags/ci.svg")}.flag-icon-ck{background-image:url("../img/svg/flags/ck.svg")}.flag-icon-cl{background-image:url("../img/svg/flags/cl.svg")}.flag-icon-cm{background-image:url("../img/svg/flags/cm.svg")}.flag-icon-cn{background-image:url("../img/svg/flags/cn.svg")}.flag-icon-co{background-image:url("../img/svg/flags/co.svg")}.flag-icon-cr{background-image:url("../img/svg/flags/cr.svg")}.flag-icon-cu{background-image:url("../img/svg/flags/cu.svg")}.flag-icon-cv{background-image:url("../img/svg/flags/cv.svg")}.flag-icon-cw{background-image:url("../img/svg/flags/cw.svg")}.flag-icon-cx{background-image:url("../img/svg/flags/cx.svg")}.flag-icon-cy{background-image:url("../img/svg/flags/cy.svg")}.flag-icon-cz{background-image:url("../img/svg/flags/cz.svg")}.flag-icon-de{background-image:url("../img/svg/flags/de.svg")}.flag-icon-dj{background-image:url("../img/svg/flags/dj.svg")}.flag-icon-dk{background-image:url("../img/svg/flags/dk.svg")}.flag-icon-dm{background-image:url("../img/svg/flags/dm.svg")}.flag-icon-do{background-image:url("../img/svg/flags/do.svg")}.flag-icon-dz{background-image:url("../img/svg/flags/dz.svg")}.flag-icon-ec{background-image:url("../img/svg/flags/ec.svg")}.flag-icon-ee{background-image:url("../img/svg/flags/ee.svg")}.flag-icon-eg{background-image:url("../img/svg/flags/eg.svg")}.flag-icon-eh{background-image:url("../img/svg/flags/eh.svg")}.flag-icon-er{background-image:url("../img/svg/flags/er.svg")}.flag-icon-es{background-image:url("../img/svg/flags/es.svg")}.flag-icon-et{background-image:url("../img/svg/flags/et.svg")}.flag-icon-fi{background-image:url("../img/svg/flags/fi.svg")}.flag-icon-fj{background-image:url("../img/svg/flags/fj.svg")}.flag-icon-fk{background-image:url("../img/svg/flags/fk.svg")}.flag-icon-fm{background-image:url("../img/svg/flags/fm.svg")}.flag-icon-fo{background-image:url("../img/svg/flags/fo.svg")}.flag-icon-fr{background-image:url("../img/svg/flags/fr.svg")}.flag-icon-ga{background-image:url("../img/svg/flags/ga.svg")}.flag-icon-gb{background-image:url("../img/svg/flags/gb.svg")}.flag-icon-gd{background-image:url("../img/svg/flags/gd.svg")}.flag-icon-ge{background-image:url("../img/svg/flags/ge.svg")}.flag-icon-gf{background-image:url("../img/svg/flags/gf.svg")}.flag-icon-gg{background-image:url("../img/svg/flags/gg.svg")}.flag-icon-gh{background-image:url("../img/svg/flags/gh.svg")}.flag-icon-gi{background-image:url("../img/svg/flags/gi.svg")}.flag-icon-gl{background-image:url("../img/svg/flags/gl.svg")}.flag-icon-gm{background-image:url("../img/svg/flags/gm.svg")}.flag-icon-gn{background-image:url("../img/svg/flags/gn.svg")}.flag-icon-gp{background-image:url("../img/svg/flags/gp.svg")}.flag-icon-gq{background-image:url("../img/svg/flags/gq.svg")}.flag-icon-gr{background-image:url("../img/svg/flags/gr.svg")}.flag-icon-gs{background-image:url("../img/svg/flags/gs.svg")}.flag-icon-gt{background-image:url("../img/svg/flags/gt.svg")}.flag-icon-gu{background-image:url("../img/svg/flags/gu.svg")}.flag-icon-gw{background-image:url("../img/svg/flags/gw.svg")}.flag-icon-gy{background-image:url("../img/svg/flags/gy.svg")}.flag-icon-hk{background-image:url("../img/svg/flags/hk.svg")}.flag-icon-hm{background-image:url("../img/svg/flags/hm.svg")}.flag-icon-hn{background-image:url("../img/svg/flags/hn.svg")}.flag-icon-hr{background-image:url("../img/svg/flags/hr.svg")}.flag-icon-ht{background-image:url("../img/svg/flags/ht.svg")}.flag-icon-hu{background-image:url("../img/svg/flags/hu.svg")}.flag-icon-id{background-image:url("../img/svg/flags/id.svg")}.flag-icon-ie{background-image:url("../img/svg/flags/ie.svg")}.flag-icon-il{background-image:url("../img/svg/flags/il.svg")}.flag-icon-im{background-image:url("../img/svg/flags/im.svg")}.flag-icon-in{background-image:url("../img/svg/flags/in.svg")}.flag-icon-io{background-image:url("../img/svg/flags/io.svg")}.flag-icon-iq{background-image:url("../img/svg/flags/iq.svg")}.flag-icon-ir{background-image:url("../img/svg/flags/ir.svg")}.flag-icon-is{background-image:url("../img/svg/flags/is.svg")}.flag-icon-it{background-image:url("../img/svg/flags/it.svg")}.flag-icon-je{background-image:url("../img/svg/flags/je.svg")}.flag-icon-jm{background-image:url("../img/svg/flags/jm.svg")}.flag-icon-jo{background-image:url("../img/svg/flags/jo.svg")}.flag-icon-jp{background-image:url("../img/svg/flags/jp.svg")}.flag-icon-ke{background-image:url("../img/svg/flags/ke.svg")}.flag-icon-kg{background-image:url("../img/svg/flags/kg.svg")}.flag-icon-kh{background-image:url("../img/svg/flags/kh.svg")}.flag-icon-ki{background-image:url("../img/svg/flags/ki.svg")}.flag-icon-km{background-image:url("../img/svg/flags/km.svg")}.flag-icon-kn{background-image:url("../img/svg/flags/kn.svg")}.flag-icon-kp{background-image:url("../img/svg/flags/kp.svg")}.flag-icon-kr{background-image:url("../img/svg/flags/kr.svg")}.flag-icon-kw{background-image:url("../img/svg/flags/kw.svg")}.flag-icon-ky{background-image:url("../img/svg/flags/ky.svg")}.flag-icon-kz{background-image:url("../img/svg/flags/kz.svg")}.flag-icon-la{background-image:url("../img/svg/flags/la.svg")}.flag-icon-lb{background-image:url("../img/svg/flags/lb.svg")}.flag-icon-lc{background-image:url("../img/svg/flags/lc.svg")}.flag-icon-li{background-image:url("../img/svg/flags/li.svg")}.flag-icon-lk{background-image:url("../img/svg/flags/lk.svg")}.flag-icon-lr{background-image:url("../img/svg/flags/lr.svg")}.flag-icon-ls{background-image:url("../img/svg/flags/ls.svg")}.flag-icon-lt{background-image:url("../img/svg/flags/lt.svg")}.flag-icon-lu{background-image:url("../img/svg/flags/lu.svg")}.flag-icon-lv{background-image:url("../img/svg/flags/lv.svg")}.flag-icon-ly{background-image:url("../img/svg/flags/ly.svg")}.flag-icon-ma{background-image:url("../img/svg/flags/ma.svg")}.flag-icon-mc{background-image:url("../img/svg/flags/mc.svg")}.flag-icon-md{background-image:url("../img/svg/flags/md.svg")}.flag-icon-me{background-image:url("../img/svg/flags/me.svg")}.flag-icon-mf{background-image:url("../img/svg/flags/mf.svg")}.flag-icon-mg{background-image:url("../img/svg/flags/mg.svg")}.flag-icon-mh{background-image:url("../img/svg/flags/mh.svg")}.flag-icon-mk{background-image:url("../img/svg/flags/mk.svg")}.flag-icon-ml{background-image:url("../img/svg/flags/ml.svg")}.flag-icon-mm{background-image:url("../img/svg/flags/mm.svg")}.flag-icon-mn{background-image:url("../img/svg/flags/mn.svg")}.flag-icon-mo{background-image:url("../img/svg/flags/mo.svg")}.flag-icon-mp{background-image:url("../img/svg/flags/mp.svg")}.flag-icon-mq{background-image:url("../img/svg/flags/mq.svg")}.flag-icon-mr{background-image:url("../img/svg/flags/mr.svg")}.flag-icon-ms{background-image:url("../img/svg/flags/ms.svg")}.flag-icon-mt{background-image:url("../img/svg/flags/mt.svg")}.flag-icon-mu{background-image:url("../img/svg/flags/mu.svg")}.flag-icon-mv{background-image:url("../img/svg/flags/mv.svg")}.flag-icon-mw{background-image:url("../img/svg/flags/mw.svg")}.flag-icon-mx{background-image:url("../img/svg/flags/mx.svg")}.flag-icon-my{background-image:url("../img/svg/flags/my.svg")}.flag-icon-mz{background-image:url("../img/svg/flags/mz.svg")}.flag-icon-na{background-image:url("../img/svg/flags/na.svg")}.flag-icon-nc{background-image:url("../img/svg/flags/nc.svg")}.flag-icon-ne{background-image:url("../img/svg/flags/ne.svg")}.flag-icon-nf{background-image:url("../img/svg/flags/nf.svg")}.flag-icon-ng{background-image:url("../img/svg/flags/ng.svg")}.flag-icon-ni{background-image:url("../img/svg/flags/ni.svg")}.flag-icon-nl{background-image:url("../img/svg/flags/nl.svg")}.flag-icon-no{background-image:url("../img/svg/flags/no.svg")}.flag-icon-np{background-image:url("../img/svg/flags/np.svg")}.flag-icon-nr{background-image:url("../img/svg/flags/nr.svg")}.flag-icon-nu{background-image:url("../img/svg/flags/nu.svg")}.flag-icon-nz{background-image:url("../img/svg/flags/nz.svg")}.flag-icon-om{background-image:url("../img/svg/flags/om.svg")}.flag-icon-pa{background-image:url("../img/svg/flags/pa.svg")}.flag-icon-pe{background-image:url("../img/svg/flags/pe.svg")}.flag-icon-pf{background-image:url("../img/svg/flags/pf.svg")}.flag-icon-pg{background-image:url("../img/svg/flags/pg.svg")}.flag-icon-ph{background-image:url("../img/svg/flags/ph.svg")}.flag-icon-pk{background-image:url("../img/svg/flags/pk.svg")}.flag-icon-pl{background-image:url("../img/svg/flags/pl.svg")}.flag-icon-pm{background-image:url("../img/svg/flags/pm.svg")}.flag-icon-pn{background-image:url("../img/svg/flags/pn.svg")}.flag-icon-pr{background-image:url("../img/svg/flags/pr.svg")}.flag-icon-ps{background-image:url("../img/svg/flags/ps.svg")}.flag-icon-pt{background-image:url("../img/svg/flags/pt.svg")}.flag-icon-pw{background-image:url("../img/svg/flags/pw.svg")}.flag-icon-py{background-image:url("../img/svg/flags/py.svg")}.flag-icon-qa{background-image:url("../img/svg/flags/qa.svg")}.flag-icon-re{background-image:url("../img/svg/flags/re.svg")}.flag-icon-ro{background-image:url("../img/svg/flags/ro.svg")}.flag-icon-rs{background-image:url("../img/svg/flags/rs.svg")}.flag-icon-ru{background-image:url("../img/svg/flags/ru.svg")}.flag-icon-rw{background-image:url("../img/svg/flags/rw.svg")}.flag-icon-sa{background-image:url("../img/svg/flags/sa.svg")}.flag-icon-sb{background-image:url("../img/svg/flags/sb.svg")}.flag-icon-sc{background-image:url("../img/svg/flags/sc.svg")}.flag-icon-sd{background-image:url("../img/svg/flags/sd.svg")}.flag-icon-se{background-image:url("../img/svg/flags/se.svg")}.flag-icon-sg{background-image:url("../img/svg/flags/sg.svg")}.flag-icon-sh{background-image:url("../img/svg/flags/sh.svg")}.flag-icon-si{background-image:url("../img/svg/flags/si.svg")}.flag-icon-sj{background-image:url("../img/svg/flags/sj.svg")}.flag-icon-sk{background-image:url("../img/svg/flags/sk.svg")}.flag-icon-sl{background-image:url("../img/svg/flags/sl.svg")}.flag-icon-sm{background-image:url("../img/svg/flags/sm.svg")}.flag-icon-sn{background-image:url("../img/svg/flags/sn.svg")}.flag-icon-so{background-image:url("../img/svg/flags/so.svg")}.flag-icon-sr{background-image:url("../img/svg/flags/sr.svg")}.flag-icon-ss{background-image:url("../img/svg/flags/ss.svg")}.flag-icon-st{background-image:url("../img/svg/flags/st.svg")}.flag-icon-sv{background-image:url("../img/svg/flags/sv.svg")}.flag-icon-sx{background-image:url("../img/svg/flags/sx.svg")}.flag-icon-sy{background-image:url("../img/svg/flags/sy.svg")}.flag-icon-sz{background-image:url("../img/svg/flags/sz.svg")}.flag-icon-tc{background-image:url("../img/svg/flags/tc.svg")}.flag-icon-td{background-image:url("../img/svg/flags/td.svg")}.flag-icon-tf{background-image:url("../img/svg/flags/tf.svg")}.flag-icon-tg{background-image:url("../img/svg/flags/tg.svg")}.flag-icon-th{background-image:url("../img/svg/flags/th.svg")}.flag-icon-tj{background-image:url("../img/svg/flags/tj.svg")}.flag-icon-tk{background-image:url("../img/svg/flags/tk.svg")}.flag-icon-tl{background-image:url("../img/svg/flags/tl.svg")}.flag-icon-tm{background-image:url("../img/svg/flags/tm.svg")}.flag-icon-tn{background-image:url("../img/svg/flags/tn.svg")}.flag-icon-to{background-image:url("../img/svg/flags/to.svg")}.flag-icon-tr{background-image:url("../img/svg/flags/tr.svg")}.flag-icon-tt{background-image:url("../img/svg/flags/tt.svg")}.flag-icon-tv{background-image:url("../img/svg/flags/tv.svg")}.flag-icon-tw{background-image:url("../img/svg/flags/tw.svg")}.flag-icon-tz{background-image:url("../img/svg/flags/tz.svg")}.flag-icon-ua{background-image:url("../img/svg/flags/ua.svg")}.flag-icon-ug{background-image:url("../img/svg/flags/ug.svg")}.flag-icon-um{background-image:url("../img/svg/flags/um.svg")}.flag-icon-us{background-image:url("../img/svg/flags/us.svg")}.flag-icon-uy{background-image:url("../img/svg/flags/uy.svg")}.flag-icon-uz{background-image:url("../img/svg/flags/uz.svg")}.flag-icon-va{background-image:url("../img/svg/flags/va.svg")}.flag-icon-vc{background-image:url("../img/svg/flags/vc.svg")}.flag-icon-ve{background-image:url("../img/svg/flags/ve.svg")}.flag-icon-vg{background-image:url("../img/svg/flags/vg.svg")}.flag-icon-vi{background-image:url("../img/svg/flags/vi.svg")}.flag-icon-vn{background-image:url("../img/svg/flags/vn.svg")}.flag-icon-vu{background-image:url("../img/svg/flags/vu.svg")}.flag-icon-wf{background-image:url("../img/svg/flags/wf.svg")}.flag-icon-ws{background-image:url("../img/svg/flags/ws.svg")}.flag-icon-ye{background-image:url("../img/svg/flags/ye.svg")}.flag-icon-yt{background-image:url("../img/svg/flags/yt.svg")}.flag-icon-za{background-image:url("../img/svg/flags/za.svg")}.flag-icon-zm{background-image:url("../img/svg/flags/zm.svg")}.flag-icon-zw{background-image:url("../img/svg/flags/zw.svg")}.flag-icon-eu{background-image:url("../img/svg/flags/eu.svg")}.flag-icon-gb-eng{background-image:url("../img/svg/flags/gb-eng.svg")}.flag-icon-gb-sct{background-image:url("../img/svg/flags/gb-sct.svg")}.flag-icon-gb-wls{background-image:url("../img/svg/flags/gb-wls.svg")}.flag-icon-un{background-image:url("../img/svg/flags/un.svg")} diff --git a/_sass/ptio-font.scss b/_sass/ptio-font.scss index 059f8285..058512e5 100644 --- a/_sass/ptio-font.scss +++ b/_sass/ptio-font.scss @@ -25,13 +25,15 @@ [data-icon]:before, .ptio-f-droid:before, +.ptio-i2p-garlic:before, .ptio-ios:before, .ptio-linux:before, .ptio-macos:before, .ptio-mix:before, .ptio-netbsd:before, .ptio-openbsd:before, -.ptio-sailfish-os:before { +.ptio-sailfish-os:before, +.ptio-tor:before { display: inline-block; font-family: "ptio-font"; font-style: normal; @@ -47,6 +49,7 @@ } .ptio-f-droid:before { content: "\f100"; } +.ptio-i2p-garlic:before { content: "\f10c"; } .ptio-ios:before { content: "\f101"; } .ptio-linux:before { content: "\f102"; } .ptio-macos:before { content: "\f103"; } @@ -54,3 +57,4 @@ .ptio-netbsd:before { content: "\f104"; } .ptio-openbsd:before { content: "\f105"; } .ptio-sailfish-os:before { content: "\f106"; } +.ptio-tor:before { content: "\f10b"; } diff --git a/assets/css/dark.scss b/assets/css/dark.scss index b4bd072e..15a42a0e 100644 --- a/assets/css/dark.scss +++ b/assets/css/dark.scss @@ -99,6 +99,9 @@ img { border-color: darken($danger, 10%); } +.btn-tor { background: desaturate($tor, 10%); } +.btn-tor:hover { background: darken($tor, 5%); } + .card { box-shadow: none !important; } @@ -122,7 +125,8 @@ img { .card, .jumbotron, -.list-group-item { +.list-group-item, +ol.breadcrumb { background: $dark-800; } diff --git a/assets/css/style.scss b/assets/css/style.scss index 8a8d4c63..35a4958e 100644 --- a/assets/css/style.scss +++ b/assets/css/style.scss @@ -186,13 +186,6 @@ h2, h3:not(.h5), h4, h5 { white-space: nowrap; } -footer { - img, - i { - margin-right: 1rem; - } -} - .hover-text-decoration-none:hover { text-decoration: none; -webkit-text-decoration-skip: object; @@ -203,6 +196,52 @@ footer { } +.btn-icon { + display: flex; + justify-content: center; + font-size: 1.5rem; + padding: 0.5rem; + border-radius: 0.25rem; + display: flex; + height: 2.4rem; + width: 2.4rem; + color: #eee; +} +.btn-icon:hover { + text-decoration: none; + color: #fff; +} + +.btn-tor { + background: $tor; +} +.btn-tor:hover { + background: darken($tor, 5%); +} + +.icon-btn { + padding: 0px; +} + +.flow-root { + display: flow-root; +} + +/* + * Bootstrap 4.2+ features + */ + +.text-decoration-none { + text-decoration: none !important; +} + +.mx-n2 { + margin-left: -0.5rem; + margin-right: -0.5rem; +} + + + /* * Navbar */ @@ -323,8 +362,7 @@ input#nav-toggle, input#nav-toggle + label { display: block; cursor: pointer; - margin-top: 0.25rem; - float: right; + margin-bottom: 0; } .nav-dropdown { display: block; @@ -368,3 +406,60 @@ input#nav-toggle, font-size: 0.875em; content: "\f186"; } + +/* Vanilla CSS implementation for tooltip */ +[data-toggle="tooltip"] { + cursor: pointer; + position: relative; +} + +[data-toggle="tooltip"]:hover { + z-index: 1337; +} + +[data-toggle="tooltip"]:before, +[data-toggle="tooltip"]:after { + opacity: 0; + transition: opacity 0.15s linear; + pointer-events: none; +} + +[data-toggle="tooltip"]:before { + background-color: #000; + border-radius: 3px; + bottom: 150%; + content: attr(data-original-title); + color: #fff; + font-size: 14px; + font-weight: normal; + left: 50%; + line-height: 1.2; + margin-bottom: 5px; + margin-left: -100px; + padding: 7px; + position: absolute; + text-align: center; + white-space: break-spaces; + width: 200px; +} + +/* Little arrow */ +[data-toggle="tooltip"]:after { + border-style: solid; + border-left-color: transparent; + border-right-color: transparent; + border-top-color: #000; + border-width: 5px; + border-bottom: none; + bottom: 150%; + content: " "; + left: 50%; + margin-left: -5px; + position: absolute; + width: 0; +} + +[data-toggle="tooltip"]:hover:before, +[data-toggle="tooltip"]:hover:after { + opacity: .9; +} diff --git a/assets/img/addons/Orbot.png b/assets/img/addons/Orbot.png deleted file mode 100644 index d694dbb7..00000000 Binary files a/assets/img/addons/Orbot.png and /dev/null differ diff --git a/assets/img/addons/cookie-autodelete.png b/assets/img/addons/cookie-autodelete.png deleted file mode 100644 index 41578639..00000000 Binary files a/assets/img/addons/cookie-autodelete.png and /dev/null differ diff --git a/assets/img/addons/decentraleyes.png b/assets/img/addons/decentraleyes.png deleted file mode 100644 index c9262b5c..00000000 Binary files a/assets/img/addons/decentraleyes.png and /dev/null differ diff --git a/assets/img/addons/https-everywhere.png b/assets/img/addons/https-everywhere.png deleted file mode 100644 index c37257de..00000000 Binary files a/assets/img/addons/https-everywhere.png and /dev/null differ diff --git a/assets/img/addons/netguard.png b/assets/img/addons/netguard.png deleted file mode 100644 index f1c9f7ed..00000000 Binary files a/assets/img/addons/netguard.png and /dev/null differ diff --git a/assets/img/addons/noscript.png b/assets/img/addons/noscript.png deleted file mode 100644 index 01492186..00000000 Binary files a/assets/img/addons/noscript.png and /dev/null differ diff --git a/assets/img/addons/privacy-badger.png b/assets/img/addons/privacy-badger.png deleted file mode 100644 index f203cdc5..00000000 Binary files a/assets/img/addons/privacy-badger.png and /dev/null differ diff --git a/assets/img/addons/snowflake.png b/assets/img/addons/snowflake.png deleted file mode 100644 index 74e9ff28..00000000 Binary files a/assets/img/addons/snowflake.png and /dev/null differ diff --git a/assets/img/addons/tosdr.png b/assets/img/addons/tosdr.png deleted file mode 100644 index 07e3b406..00000000 Binary files a/assets/img/addons/tosdr.png and /dev/null differ diff --git a/assets/img/addons/ublock-origin.png b/assets/img/addons/ublock-origin.png deleted file mode 100644 index 895906d4..00000000 Binary files a/assets/img/addons/ublock-origin.png and /dev/null differ diff --git a/assets/img/addons/umatrix.png b/assets/img/addons/umatrix.png deleted file mode 100644 index 8375c8e9..00000000 Binary files a/assets/img/addons/umatrix.png and /dev/null differ diff --git a/assets/img/favicons/android-chrome-144x144.png b/assets/img/favicons/android-chrome-144x144.png deleted file mode 100644 index 89ee8da7..00000000 Binary files a/assets/img/favicons/android-chrome-144x144.png and /dev/null differ diff --git a/assets/img/favicons/android-chrome-192x192.png b/assets/img/favicons/android-chrome-192x192.png deleted file mode 100644 index a98dac9c..00000000 Binary files a/assets/img/favicons/android-chrome-192x192.png and /dev/null differ diff --git a/assets/img/favicons/android-chrome-36x36.png b/assets/img/favicons/android-chrome-36x36.png deleted file mode 100644 index 0258a373..00000000 Binary files a/assets/img/favicons/android-chrome-36x36.png and /dev/null differ diff --git a/assets/img/favicons/android-chrome-48x48.png b/assets/img/favicons/android-chrome-48x48.png deleted file mode 100644 index 9472839e..00000000 Binary files a/assets/img/favicons/android-chrome-48x48.png and /dev/null differ diff --git a/assets/img/favicons/android-chrome-72x72.png b/assets/img/favicons/android-chrome-72x72.png deleted file mode 100644 index b9aba7c1..00000000 Binary files a/assets/img/favicons/android-chrome-72x72.png and /dev/null differ diff --git a/assets/img/favicons/android-chrome-96x96.png b/assets/img/favicons/android-chrome-96x96.png deleted file mode 100644 index 30ec0aa2..00000000 Binary files a/assets/img/favicons/android-chrome-96x96.png and /dev/null differ diff --git a/assets/img/favicons/apple-touch-icon-114x114.png b/assets/img/favicons/apple-touch-icon-114x114.png deleted file mode 100644 index b4cab235..00000000 Binary files a/assets/img/favicons/apple-touch-icon-114x114.png and /dev/null differ diff --git a/assets/img/favicons/apple-touch-icon-120x120.png b/assets/img/favicons/apple-touch-icon-120x120.png deleted file mode 100644 index 25d91626..00000000 Binary files a/assets/img/favicons/apple-touch-icon-120x120.png and /dev/null differ diff --git a/assets/img/favicons/apple-touch-icon-144x144.png b/assets/img/favicons/apple-touch-icon-144x144.png deleted file mode 100644 index 3a2b4f53..00000000 Binary files a/assets/img/favicons/apple-touch-icon-144x144.png and /dev/null differ diff --git a/assets/img/favicons/apple-touch-icon-152x152.png b/assets/img/favicons/apple-touch-icon-152x152.png deleted file mode 100644 index 3f22e5ee..00000000 Binary files a/assets/img/favicons/apple-touch-icon-152x152.png and /dev/null differ diff --git a/assets/img/favicons/apple-touch-icon-180x180.png b/assets/img/favicons/apple-touch-icon-180x180.png deleted file mode 100644 index 784c7932..00000000 Binary files a/assets/img/favicons/apple-touch-icon-180x180.png and /dev/null differ diff --git a/assets/img/favicons/apple-touch-icon-57x57.png b/assets/img/favicons/apple-touch-icon-57x57.png deleted file mode 100644 index b5d02c09..00000000 Binary files a/assets/img/favicons/apple-touch-icon-57x57.png and /dev/null differ diff --git a/assets/img/favicons/apple-touch-icon-60x60.png b/assets/img/favicons/apple-touch-icon-60x60.png deleted file mode 100644 index effda685..00000000 Binary files a/assets/img/favicons/apple-touch-icon-60x60.png and /dev/null differ diff --git a/assets/img/favicons/apple-touch-icon-72x72.png b/assets/img/favicons/apple-touch-icon-72x72.png deleted file mode 100644 index d7877a98..00000000 Binary files a/assets/img/favicons/apple-touch-icon-72x72.png and /dev/null differ diff --git a/assets/img/favicons/apple-touch-icon-76x76.png b/assets/img/favicons/apple-touch-icon-76x76.png deleted file mode 100644 index f437c192..00000000 Binary files a/assets/img/favicons/apple-touch-icon-76x76.png and /dev/null differ diff --git a/assets/img/favicons/apple-touch-icon-precomposed.png b/assets/img/favicons/apple-touch-icon-precomposed.png deleted file mode 100644 index dd0a2840..00000000 Binary files a/assets/img/favicons/apple-touch-icon-precomposed.png and /dev/null differ diff --git a/assets/img/favicons/apple-touch-icon.png b/assets/img/favicons/apple-touch-icon.png deleted file mode 100644 index 784c7932..00000000 Binary files a/assets/img/favicons/apple-touch-icon.png and /dev/null differ diff --git a/assets/img/favicons/browserconfig.xml b/assets/img/favicons/browserconfig.xml deleted file mode 100644 index 45498579..00000000 --- a/assets/img/favicons/browserconfig.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - #da532c - - - diff --git a/assets/img/favicons/favicon-16x16.png b/assets/img/favicons/favicon-16x16.png deleted file mode 100644 index 1373fe0d..00000000 Binary files a/assets/img/favicons/favicon-16x16.png and /dev/null differ diff --git a/assets/img/favicons/favicon-32x32.png b/assets/img/favicons/favicon-32x32.png deleted file mode 100644 index ac47b360..00000000 Binary files a/assets/img/favicons/favicon-32x32.png and /dev/null differ diff --git a/assets/img/favicons/favicon-96x96.png b/assets/img/favicons/favicon-96x96.png deleted file mode 100644 index 30ec0aa2..00000000 Binary files a/assets/img/favicons/favicon-96x96.png and /dev/null differ diff --git a/assets/img/favicons/favicon.ico b/assets/img/favicons/favicon.ico deleted file mode 100644 index 3095a9db..00000000 Binary files a/assets/img/favicons/favicon.ico and /dev/null differ diff --git a/assets/img/favicons/manifest.json b/assets/img/favicons/manifest.json deleted file mode 100644 index 2e82fdf6..00000000 --- a/assets/img/favicons/manifest.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "privacytools.io", - "icons": [ - { - "src": "https:\/\/www.privacytools.io\/img\/favicons\/android-chrome-36x36.png?v=2", - "sizes": "36x36", - "type": "image\/png", - "density": "0.75" - }, - { - "src": "https:\/\/www.privacytools.io\/img\/favicons\/android-chrome-48x48.png?v=2", - "sizes": "48x48", - "type": "image\/png", - "density": "1.0" - }, - { - "src": "https:\/\/www.privacytools.io\/img\/favicons\/android-chrome-72x72.png?v=2", - "sizes": "72x72", - "type": "image\/png", - "density": "1.5" - }, - { - "src": "https:\/\/www.privacytools.io\/img\/favicons\/android-chrome-96x96.png?v=2", - "sizes": "96x96", - "type": "image\/png", - "density": "2.0" - }, - { - "src": "https:\/\/www.privacytools.io\/img\/favicons\/android-chrome-144x144.png?v=2", - "sizes": "144x144", - "type": "image\/png", - "density": "3.0" - }, - { - "src": "https:\/\/www.privacytools.io\/img\/favicons\/android-chrome-192x192.png?v=2", - "sizes": "192x192", - "type": "image\/png", - "density": "4.0" - } - ] -} diff --git a/assets/img/favicons/mstile-144x144.png b/assets/img/favicons/mstile-144x144.png deleted file mode 100644 index 89ee8da7..00000000 Binary files a/assets/img/favicons/mstile-144x144.png and /dev/null differ diff --git a/assets/img/favicons/mstile-150x150.png b/assets/img/favicons/mstile-150x150.png deleted file mode 100644 index fd446591..00000000 Binary files a/assets/img/favicons/mstile-150x150.png and /dev/null differ diff --git a/assets/img/favicons/mstile-310x150.png b/assets/img/favicons/mstile-310x150.png deleted file mode 100644 index 4729b461..00000000 Binary files a/assets/img/favicons/mstile-310x150.png and /dev/null differ diff --git a/assets/img/favicons/mstile-310x310.png b/assets/img/favicons/mstile-310x310.png deleted file mode 100644 index 06334d42..00000000 Binary files a/assets/img/favicons/mstile-310x310.png and /dev/null differ diff --git a/assets/img/favicons/mstile-70x70.png b/assets/img/favicons/mstile-70x70.png deleted file mode 100644 index 36a2caa9..00000000 Binary files a/assets/img/favicons/mstile-70x70.png and /dev/null differ diff --git a/assets/img/icons/discourse.png b/assets/img/icons/discourse.png deleted file mode 100644 index 2b17c4ab..00000000 Binary files a/assets/img/icons/discourse.png and /dev/null differ diff --git a/assets/img/icons/github.png b/assets/img/icons/github.png deleted file mode 100644 index cb6fa293..00000000 Binary files a/assets/img/icons/github.png and /dev/null differ diff --git a/assets/img/icons/mastodon.png b/assets/img/icons/mastodon.png deleted file mode 100644 index 099dfd98..00000000 Binary files a/assets/img/icons/mastodon.png and /dev/null differ diff --git a/assets/img/layout/Bitcoin.png b/assets/img/layout/Bitcoin.png deleted file mode 100644 index 4b219af3..00000000 Binary files a/assets/img/layout/Bitcoin.png and /dev/null differ diff --git a/assets/img/layout/Glenn-Greenwald-Why-privacy-matters.jpg b/assets/img/layout/Glenn-Greenwald-Why-privacy-matters.jpg deleted file mode 100644 index 1eb6a303..00000000 Binary files a/assets/img/layout/Glenn-Greenwald-Why-privacy-matters.jpg and /dev/null differ diff --git a/assets/img/layout/PayPal.png b/assets/img/layout/PayPal.png deleted file mode 100644 index c2a0e7c4..00000000 Binary files a/assets/img/layout/PayPal.png and /dev/null differ diff --git a/assets/img/layout/UKUSA.png b/assets/img/layout/UKUSA.png deleted file mode 100644 index 8d50f442..00000000 Binary files a/assets/img/layout/UKUSA.png and /dev/null differ diff --git a/assets/img/layout/USA.png b/assets/img/layout/USA.png deleted file mode 100644 index 3ed0c235..00000000 Binary files a/assets/img/layout/USA.png and /dev/null differ diff --git a/assets/img/layout/Windows-10-Privacy.png b/assets/img/layout/Windows-10-Privacy.png deleted file mode 100644 index 410d083d..00000000 Binary files a/assets/img/layout/Windows-10-Privacy.png and /dev/null differ diff --git a/assets/img/layout/creativecommons.png b/assets/img/layout/creativecommons.png deleted file mode 100644 index e485f3ef..00000000 Binary files a/assets/img/layout/creativecommons.png and /dev/null differ diff --git a/assets/img/layout/git.png b/assets/img/layout/git.png deleted file mode 100644 index 34463594..00000000 Binary files a/assets/img/layout/git.png and /dev/null differ diff --git a/assets/img/layout/logo.png b/assets/img/layout/logo.png deleted file mode 100644 index 4a5c00c2..00000000 Binary files a/assets/img/layout/logo.png and /dev/null differ diff --git a/assets/img/layout/logo_smaller.png b/assets/img/layout/logo_smaller.png deleted file mode 100644 index 9a0472df..00000000 Binary files a/assets/img/layout/logo_smaller.png and /dev/null differ diff --git a/assets/img/layout/ogimage.jpg b/assets/img/layout/ogimage.jpg deleted file mode 100644 index 363cebac..00000000 Binary files a/assets/img/layout/ogimage.jpg and /dev/null differ diff --git a/assets/img/layout/privatesearch.png b/assets/img/layout/privatesearch.png deleted file mode 100644 index 87aa9316..00000000 Binary files a/assets/img/layout/privatesearch.png and /dev/null differ diff --git a/assets/img/layout/qr.png b/assets/img/layout/qr.png deleted file mode 100644 index f664dd02..00000000 Binary files a/assets/img/layout/qr.png and /dev/null differ diff --git a/assets/img/layout/reddit-logo.png b/assets/img/layout/reddit-logo.png deleted file mode 100644 index 46b9fea1..00000000 Binary files a/assets/img/layout/reddit-logo.png and /dev/null differ diff --git a/assets/img/layout/shield.svg b/assets/img/layout/shield.svg deleted file mode 100644 index 8c6a4f6f..00000000 --- a/assets/img/layout/shield.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/img/layout/tor.png b/assets/img/layout/tor.png deleted file mode 100644 index 95a698a3..00000000 Binary files a/assets/img/layout/tor.png and /dev/null differ diff --git a/assets/img/layout/tor.svg b/assets/img/layout/tor.svg deleted file mode 100644 index ee116050..00000000 --- a/assets/img/layout/tor.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/img/layout/warrant-canary.jpg b/assets/img/layout/warrant-canary.jpg deleted file mode 100644 index 91a77750..00000000 Binary files a/assets/img/layout/warrant-canary.jpg and /dev/null differ diff --git a/assets/img/layout/www.png b/assets/img/layout/www.png deleted file mode 100644 index ba318b3a..00000000 Binary files a/assets/img/layout/www.png and /dev/null differ diff --git a/assets/img/layout/www.svg b/assets/img/layout/www.svg deleted file mode 100644 index 4400f1a2..00000000 --- a/assets/img/layout/www.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/img/layout/zero.png b/assets/img/layout/zero.png deleted file mode 100644 index d9679ef1..00000000 Binary files a/assets/img/layout/zero.png and /dev/null differ diff --git a/assets/img/misc/QR-Code.png b/assets/img/misc/QR-Code.png deleted file mode 100644 index e4b4d3d3..00000000 Binary files a/assets/img/misc/QR-Code.png and /dev/null differ diff --git a/assets/img/misc/email.png b/assets/img/misc/email.png deleted file mode 100644 index 54963ab6..00000000 Binary files a/assets/img/misc/email.png and /dev/null differ diff --git a/assets/img/png/3rd-party/adguard.png b/assets/img/png/3rd-party/adguard.png new file mode 100644 index 00000000..029cb1f3 Binary files /dev/null and b/assets/img/png/3rd-party/adguard.png differ diff --git a/assets/img/png/3rd-party/claws_mail.png b/assets/img/png/3rd-party/claws_mail.png new file mode 100644 index 00000000..548e0d40 Binary files /dev/null and b/assets/img/png/3rd-party/claws_mail.png differ diff --git a/assets/img/png/3rd-party/cookie_autodelete.png b/assets/img/png/3rd-party/cookie_autodelete.png new file mode 100644 index 00000000..38dc83d3 Binary files /dev/null and b/assets/img/png/3rd-party/cookie_autodelete.png differ diff --git a/assets/img/png/3rd-party/datacell.png b/assets/img/png/3rd-party/datacell.png new file mode 100644 index 00000000..a9c987d2 Binary files /dev/null and b/assets/img/png/3rd-party/datacell.png differ diff --git a/assets/img/png/3rd-party/dnscloak.png b/assets/img/png/3rd-party/dnscloak.png new file mode 100644 index 00000000..ecb9ca87 Binary files /dev/null and b/assets/img/png/3rd-party/dnscloak.png differ diff --git a/assets/img/png/3rd-party/magic_wormhole.png b/assets/img/png/3rd-party/magic_wormhole.png new file mode 100644 index 00000000..fa3bc0c9 Binary files /dev/null and b/assets/img/png/3rd-party/magic_wormhole.png differ diff --git a/assets/img/png/3rd-party/nebulo.png b/assets/img/png/3rd-party/nebulo.png new file mode 100644 index 00000000..69f084c3 Binary files /dev/null and b/assets/img/png/3rd-party/nebulo.png differ diff --git a/assets/img/png/3rd-party/netguard.png b/assets/img/png/3rd-party/netguard.png new file mode 100644 index 00000000..5bfaaa18 Binary files /dev/null and b/assets/img/png/3rd-party/netguard.png differ diff --git a/assets/img/png/3rd-party/orange_website.png b/assets/img/png/3rd-party/orange_website.png new file mode 100644 index 00000000..c2e73a79 Binary files /dev/null and b/assets/img/png/3rd-party/orange_website.png differ diff --git a/assets/img/png/3rd-party/passepartout.png b/assets/img/png/3rd-party/passepartout.png new file mode 100644 index 00000000..2b3a841c Binary files /dev/null and b/assets/img/png/3rd-party/passepartout.png differ diff --git a/assets/img/png/3rd-party/raddle.png b/assets/img/png/3rd-party/raddle.png new file mode 100644 index 00000000..daa78ae0 Binary files /dev/null and b/assets/img/png/3rd-party/raddle.png differ diff --git a/assets/img/png/3rd-party/runbox-dark.png b/assets/img/png/3rd-party/runbox-dark.png new file mode 100644 index 00000000..c4c06a5d Binary files /dev/null and b/assets/img/png/3rd-party/runbox-dark.png differ diff --git a/assets/img/png/3rd-party/runbox.png b/assets/img/png/3rd-party/runbox.png new file mode 100644 index 00000000..797a398c Binary files /dev/null and b/assets/img/png/3rd-party/runbox.png differ diff --git a/assets/img/png/3rd-party/sponsors/awesomeresources.png b/assets/img/png/3rd-party/sponsors/awesomeresources.png new file mode 100644 index 00000000..cf8d43b8 Binary files /dev/null and b/assets/img/png/3rd-party/sponsors/awesomeresources.png differ diff --git a/assets/img/png/3rd-party/sponsors/deleteme.png b/assets/img/png/3rd-party/sponsors/deleteme.png new file mode 100644 index 00000000..e0f50614 Binary files /dev/null and b/assets/img/png/3rd-party/sponsors/deleteme.png differ diff --git a/assets/img/png/3rd-party/sponsors/insurgo.png b/assets/img/png/3rd-party/sponsors/insurgo.png new file mode 100644 index 00000000..6602c4b6 Binary files /dev/null and b/assets/img/png/3rd-party/sponsors/insurgo.png differ diff --git a/assets/img/png/3rd-party/sponsors/looktotheright.png b/assets/img/png/3rd-party/sponsors/looktotheright.png new file mode 100644 index 00000000..77126b11 Binary files /dev/null and b/assets/img/png/3rd-party/sponsors/looktotheright.png differ diff --git a/assets/img/png/3rd-party/sponsors/oeck-dark.png b/assets/img/png/3rd-party/sponsors/oeck-dark.png new file mode 100644 index 00000000..001f2100 Binary files /dev/null and b/assets/img/png/3rd-party/sponsors/oeck-dark.png differ diff --git a/assets/img/png/3rd-party/sponsors/oeck.png b/assets/img/png/3rd-party/sponsors/oeck.png new file mode 100644 index 00000000..5ee99ca5 Binary files /dev/null and b/assets/img/png/3rd-party/sponsors/oeck.png differ diff --git a/assets/img/png/3rd-party/sponsors/scamsinfo.png b/assets/img/png/3rd-party/sponsors/scamsinfo.png new file mode 100644 index 00000000..91607c11 Binary files /dev/null and b/assets/img/png/3rd-party/sponsors/scamsinfo.png differ diff --git a/assets/img/png/3rd-party/stubby.png b/assets/img/png/3rd-party/stubby.png new file mode 100644 index 00000000..0f7ea7b7 Binary files /dev/null and b/assets/img/png/3rd-party/stubby.png differ diff --git a/assets/img/png/3rd-party/umatrix.png b/assets/img/png/3rd-party/umatrix.png new file mode 100644 index 00000000..4d0389ad Binary files /dev/null and b/assets/img/png/3rd-party/umatrix.png differ diff --git a/assets/img/png/favicons/android-chrome-192x192.png b/assets/img/png/favicons/android-chrome-192x192.png new file mode 100644 index 00000000..7e823479 Binary files /dev/null and b/assets/img/png/favicons/android-chrome-192x192.png differ diff --git a/assets/img/png/favicons/android-chrome-512x512.png b/assets/img/png/favicons/android-chrome-512x512.png new file mode 100644 index 00000000..3545ac49 Binary files /dev/null and b/assets/img/png/favicons/android-chrome-512x512.png differ diff --git a/assets/img/png/favicons/apple-touch-icon.png b/assets/img/png/favicons/apple-touch-icon.png new file mode 100644 index 00000000..a357e465 Binary files /dev/null and b/assets/img/png/favicons/apple-touch-icon.png differ diff --git a/assets/img/png/favicons/browserconfig.xml b/assets/img/png/favicons/browserconfig.xml new file mode 100644 index 00000000..aff3f9ce --- /dev/null +++ b/assets/img/png/favicons/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #3498db + + + diff --git a/assets/img/png/favicons/favicon-16x16.png b/assets/img/png/favicons/favicon-16x16.png new file mode 100644 index 00000000..e3070229 Binary files /dev/null and b/assets/img/png/favicons/favicon-16x16.png differ diff --git a/assets/img/png/favicons/favicon-32x32.png b/assets/img/png/favicons/favicon-32x32.png new file mode 100644 index 00000000..e371e820 Binary files /dev/null and b/assets/img/png/favicons/favicon-32x32.png differ diff --git a/assets/img/png/favicons/favicon.ico b/assets/img/png/favicons/favicon.ico new file mode 100644 index 00000000..19ff8546 Binary files /dev/null and b/assets/img/png/favicons/favicon.ico differ diff --git a/assets/img/png/favicons/mstile-144x144.png b/assets/img/png/favicons/mstile-144x144.png new file mode 100644 index 00000000..5f6ae3d0 Binary files /dev/null and b/assets/img/png/favicons/mstile-144x144.png differ diff --git a/assets/img/png/favicons/mstile-150x150.png b/assets/img/png/favicons/mstile-150x150.png new file mode 100644 index 00000000..b56efe6f Binary files /dev/null and b/assets/img/png/favicons/mstile-150x150.png differ diff --git a/assets/img/png/favicons/mstile-310x150.png b/assets/img/png/favicons/mstile-310x150.png new file mode 100644 index 00000000..6174fb01 Binary files /dev/null and b/assets/img/png/favicons/mstile-310x150.png differ diff --git a/assets/img/png/favicons/mstile-310x310.png b/assets/img/png/favicons/mstile-310x310.png new file mode 100644 index 00000000..0fa1e9a5 Binary files /dev/null and b/assets/img/png/favicons/mstile-310x310.png differ diff --git a/assets/img/png/favicons/mstile-70x70.png b/assets/img/png/favicons/mstile-70x70.png new file mode 100644 index 00000000..bdd35b8b Binary files /dev/null and b/assets/img/png/favicons/mstile-70x70.png differ diff --git a/assets/img/png/favicons/safari-pinned-tab.svg b/assets/img/png/favicons/safari-pinned-tab.svg new file mode 100644 index 00000000..5bf104ab --- /dev/null +++ b/assets/img/png/favicons/safari-pinned-tab.svg @@ -0,0 +1,33 @@ + + + + + + + diff --git a/assets/img/png/favicons/site.webmanifest b/assets/img/png/favicons/site.webmanifest new file mode 100644 index 00000000..d518ca27 --- /dev/null +++ b/assets/img/png/favicons/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "/assets/img/png/favicons/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/assets/img/png/favicons/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/assets/img/png/layout/glenn_greenwald.png b/assets/img/png/layout/glenn_greenwald.png new file mode 100644 index 00000000..d35f53fc Binary files /dev/null and b/assets/img/png/layout/glenn_greenwald.png differ diff --git a/assets/img/png/layout/logo.png b/assets/img/png/layout/logo.png new file mode 100644 index 00000000..c1437c1c Binary files /dev/null and b/assets/img/png/layout/logo.png differ diff --git a/assets/img/png/layout/logo_smaller.png b/assets/img/png/layout/logo_smaller.png new file mode 100644 index 00000000..c1047aa6 Binary files /dev/null and b/assets/img/png/layout/logo_smaller.png differ diff --git a/assets/img/png/layout/shield.png b/assets/img/png/layout/shield.png new file mode 100644 index 00000000..c9fd51bc Binary files /dev/null and b/assets/img/png/layout/shield.png differ diff --git a/assets/img/png/layout/this-video-is-sponsored-by-vpn.png b/assets/img/png/layout/this-video-is-sponsored-by-vpn.png new file mode 100644 index 00000000..37f2e9b4 Binary files /dev/null and b/assets/img/png/layout/this-video-is-sponsored-by-vpn.png differ diff --git a/assets/img/png/team/blacklight447.png b/assets/img/png/team/blacklight447.png new file mode 100644 index 00000000..66f22928 Binary files /dev/null and b/assets/img/png/team/blacklight447.png differ diff --git a/assets/img/png/team/burung.png b/assets/img/png/team/burung.png new file mode 100644 index 00000000..3f55cd2f Binary files /dev/null and b/assets/img/png/team/burung.png differ diff --git a/assets/img/png/team/dngray.png b/assets/img/png/team/dngray.png new file mode 100644 index 00000000..60dbdde0 Binary files /dev/null and b/assets/img/png/team/dngray.png differ diff --git a/assets/img/png/team/freddy.png b/assets/img/png/team/freddy.png new file mode 100644 index 00000000..28113353 Binary files /dev/null and b/assets/img/png/team/freddy.png differ diff --git a/assets/img/png/team/lynn.png b/assets/img/png/team/lynn.png new file mode 100644 index 00000000..4b990332 Binary files /dev/null and b/assets/img/png/team/lynn.png differ diff --git a/assets/img/png/team/trai_dep.png b/assets/img/png/team/trai_dep.png new file mode 100644 index 00000000..5be8613f Binary files /dev/null and b/assets/img/png/team/trai_dep.png differ diff --git a/assets/img/provider/CryptPad.png b/assets/img/provider/CryptPad.png deleted file mode 100644 index faf8a942..00000000 Binary files a/assets/img/provider/CryptPad.png and /dev/null differ diff --git a/assets/img/provider/DuckDuckGo.png b/assets/img/provider/DuckDuckGo.png deleted file mode 100644 index 9e396811..00000000 Binary files a/assets/img/provider/DuckDuckGo.png and /dev/null differ diff --git a/assets/img/provider/IPredator.png b/assets/img/provider/IPredator.png deleted file mode 100644 index b57a40f6..00000000 Binary files a/assets/img/provider/IPredator.png and /dev/null differ diff --git a/assets/img/provider/IVPN.png b/assets/img/provider/IVPN.png deleted file mode 100644 index 67d356a1..00000000 Binary files a/assets/img/provider/IVPN.png and /dev/null differ diff --git a/assets/img/provider/Kolab-Now.png b/assets/img/provider/Kolab-Now.png deleted file mode 100644 index 26fe5e87..00000000 Binary files a/assets/img/provider/Kolab-Now.png and /dev/null differ diff --git a/assets/img/provider/Mail-in-a-Box.png b/assets/img/provider/Mail-in-a-Box.png deleted file mode 100644 index bb8fd917..00000000 Binary files a/assets/img/provider/Mail-in-a-Box.png and /dev/null differ diff --git a/assets/img/provider/Mailfence.png b/assets/img/provider/Mailfence.png deleted file mode 100644 index ebbd1879..00000000 Binary files a/assets/img/provider/Mailfence.png and /dev/null differ diff --git a/assets/img/provider/Mullvad.png b/assets/img/provider/Mullvad.png deleted file mode 100644 index 211158f0..00000000 Binary files a/assets/img/provider/Mullvad.png and /dev/null differ diff --git a/assets/img/provider/Neomailbox.png b/assets/img/provider/Neomailbox.png deleted file mode 100644 index 662c36b0..00000000 Binary files a/assets/img/provider/Neomailbox.png and /dev/null differ diff --git a/assets/img/provider/Nextcloud.png b/assets/img/provider/Nextcloud.png deleted file mode 100644 index 8e07c3e2..00000000 Binary files a/assets/img/provider/Nextcloud.png and /dev/null differ diff --git a/assets/img/provider/Njalla.png b/assets/img/provider/Njalla.png deleted file mode 100644 index a04454cd..00000000 Binary files a/assets/img/provider/Njalla.png and /dev/null differ diff --git a/assets/img/provider/Posteo.png b/assets/img/provider/Posteo.png deleted file mode 100644 index 83757b96..00000000 Binary files a/assets/img/provider/Posteo.png and /dev/null differ diff --git a/assets/img/provider/ProtonMail.ch.png b/assets/img/provider/ProtonMail.ch.png deleted file mode 100644 index c36b3363..00000000 Binary files a/assets/img/provider/ProtonMail.ch.png and /dev/null differ diff --git a/assets/img/provider/ProtonVPN.png b/assets/img/provider/ProtonVPN.png deleted file mode 100644 index 2a65104c..00000000 Binary files a/assets/img/provider/ProtonVPN.png and /dev/null differ diff --git a/assets/img/provider/Qwant.png b/assets/img/provider/Qwant.png deleted file mode 100644 index c7253510..00000000 Binary files a/assets/img/provider/Qwant.png and /dev/null differ diff --git a/assets/img/provider/Soverin.png b/assets/img/provider/Soverin.png deleted file mode 100644 index 8c54f8dc..00000000 Binary files a/assets/img/provider/Soverin.png and /dev/null differ diff --git a/assets/img/provider/StartMail.png b/assets/img/provider/StartMail.png deleted file mode 100644 index cf03655d..00000000 Binary files a/assets/img/provider/StartMail.png and /dev/null differ diff --git a/assets/img/provider/StartPage.png b/assets/img/provider/StartPage.png deleted file mode 100644 index f0a7f7bb..00000000 Binary files a/assets/img/provider/StartPage.png and /dev/null differ diff --git a/assets/img/provider/Tutanota.png b/assets/img/provider/Tutanota.png deleted file mode 100644 index e019d0ae..00000000 Binary files a/assets/img/provider/Tutanota.png and /dev/null differ diff --git a/assets/img/provider/bahnhof.png b/assets/img/provider/bahnhof.png deleted file mode 100644 index 65693ce9..00000000 Binary files a/assets/img/provider/bahnhof.png and /dev/null differ diff --git a/assets/img/provider/datacell.png b/assets/img/provider/datacell.png deleted file mode 100644 index b595eeb5..00000000 Binary files a/assets/img/provider/datacell.png and /dev/null differ diff --git a/assets/img/provider/disroot.org.png b/assets/img/provider/disroot.org.png deleted file mode 100644 index b12a66e6..00000000 Binary files a/assets/img/provider/disroot.org.png and /dev/null differ diff --git a/assets/img/provider/etesync.png b/assets/img/provider/etesync.png deleted file mode 100644 index ba771054..00000000 Binary files a/assets/img/provider/etesync.png and /dev/null differ diff --git a/assets/img/provider/gnu-social.png b/assets/img/provider/gnu-social.png deleted file mode 100644 index 6338e3b0..00000000 Binary files a/assets/img/provider/gnu-social.png and /dev/null differ diff --git a/assets/img/provider/mailbox.org.png b/assets/img/provider/mailbox.org.png deleted file mode 100644 index b3197636..00000000 Binary files a/assets/img/provider/mailbox.org.png and /dev/null differ diff --git a/assets/img/provider/orange_hosting.png b/assets/img/provider/orange_hosting.png deleted file mode 100644 index beb6fba5..00000000 Binary files a/assets/img/provider/orange_hosting.png and /dev/null differ diff --git a/assets/img/provider/pixelfed.png b/assets/img/provider/pixelfed.png deleted file mode 100644 index 070c6729..00000000 Binary files a/assets/img/provider/pixelfed.png and /dev/null differ diff --git a/assets/img/provider/privatesearch.io.jpg b/assets/img/provider/privatesearch.io.jpg deleted file mode 100644 index c6021c62..00000000 Binary files a/assets/img/provider/privatesearch.io.jpg and /dev/null differ diff --git a/assets/img/provider/runbox.png b/assets/img/provider/runbox.png deleted file mode 100644 index c8eaf228..00000000 Binary files a/assets/img/provider/runbox.png and /dev/null differ diff --git a/assets/img/provider/searx.png b/assets/img/provider/searx.png deleted file mode 100644 index 7701eede..00000000 Binary files a/assets/img/provider/searx.png and /dev/null differ diff --git a/assets/img/psd/logo.psd b/assets/img/psd/logo.psd deleted file mode 100644 index 29de5ca6..00000000 Binary files a/assets/img/psd/logo.psd and /dev/null differ diff --git a/assets/img/qr/BCH.png b/assets/img/qr/BCH.png deleted file mode 100644 index 79665ff7..00000000 Binary files a/assets/img/qr/BCH.png and /dev/null differ diff --git a/assets/img/qr/BTC.png b/assets/img/qr/BTC.png deleted file mode 100644 index a991acf3..00000000 Binary files a/assets/img/qr/BTC.png and /dev/null differ diff --git a/assets/img/qr/ETH.png b/assets/img/qr/ETH.png deleted file mode 100644 index cdc65fa6..00000000 Binary files a/assets/img/qr/ETH.png and /dev/null differ diff --git a/assets/img/qr/LTC.png b/assets/img/qr/LTC.png deleted file mode 100644 index a22f0076..00000000 Binary files a/assets/img/qr/LTC.png and /dev/null differ diff --git a/assets/img/qr/XLM.png b/assets/img/qr/XLM.png deleted file mode 100644 index 6df37ed3..00000000 Binary files a/assets/img/qr/XLM.png and /dev/null differ diff --git a/assets/img/qr/XMR.png b/assets/img/qr/XMR.png deleted file mode 100644 index 6b559219..00000000 Binary files a/assets/img/qr/XMR.png and /dev/null differ diff --git a/assets/img/qr/ZEC.png b/assets/img/qr/ZEC.png deleted file mode 100644 index b3d7f42c..00000000 Binary files a/assets/img/qr/ZEC.png and /dev/null differ diff --git a/assets/img/svg/3rd-party/7zip.svg b/assets/img/svg/3rd-party/7zip.svg new file mode 100644 index 00000000..024ac0b9 --- /dev/null +++ b/assets/img/svg/3rd-party/7zip.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/aether.svg b/assets/img/svg/3rd-party/aether.svg new file mode 100644 index 00000000..576b8523 --- /dev/null +++ b/assets/img/svg/3rd-party/aether.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/alpinelinux.svg b/assets/img/svg/3rd-party/alpinelinux.svg new file mode 100644 index 00000000..e2aef2d3 --- /dev/null +++ b/assets/img/svg/3rd-party/alpinelinux.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/android.svg b/assets/img/svg/3rd-party/android.svg new file mode 100644 index 00000000..f5349180 --- /dev/null +++ b/assets/img/svg/3rd-party/android.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/img/svg/3rd-party/anonaddy-dark.svg b/assets/img/svg/3rd-party/anonaddy-dark.svg new file mode 100644 index 00000000..02562e5d --- /dev/null +++ b/assets/img/svg/3rd-party/anonaddy-dark.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/anonaddy.svg b/assets/img/svg/3rd-party/anonaddy.svg new file mode 100644 index 00000000..9928c50f --- /dev/null +++ b/assets/img/svg/3rd-party/anonaddy.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/archlinux.svg b/assets/img/svg/3rd-party/archlinux.svg new file mode 100644 index 00000000..4b46a612 --- /dev/null +++ b/assets/img/svg/3rd-party/archlinux.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/bahnhof-dark.svg b/assets/img/svg/3rd-party/bahnhof-dark.svg new file mode 100644 index 00000000..eff8369e --- /dev/null +++ b/assets/img/svg/3rd-party/bahnhof-dark.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/bahnhof.svg b/assets/img/svg/3rd-party/bahnhof.svg new file mode 100644 index 00000000..0ef38b98 --- /dev/null +++ b/assets/img/svg/3rd-party/bahnhof.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/bitwarden.svg b/assets/img/svg/3rd-party/bitwarden.svg new file mode 100644 index 00000000..28d315ac --- /dev/null +++ b/assets/img/svg/3rd-party/bitwarden.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/briar.svg b/assets/img/svg/3rd-party/briar.svg new file mode 100644 index 00000000..ed4e205f --- /dev/null +++ b/assets/img/svg/3rd-party/briar.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/bromite.svg b/assets/img/svg/3rd-party/bromite.svg new file mode 100644 index 00000000..a75613ad --- /dev/null +++ b/assets/img/svg/3rd-party/bromite.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/calyxos.svg b/assets/img/svg/3rd-party/calyxos.svg new file mode 100644 index 00000000..21743c85 --- /dev/null +++ b/assets/img/svg/3rd-party/calyxos.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/canarymail.svg b/assets/img/svg/3rd-party/canarymail.svg new file mode 100644 index 00000000..b3df42db --- /dev/null +++ b/assets/img/svg/3rd-party/canarymail.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/canvasblocker.svg b/assets/img/svg/3rd-party/canvasblocker.svg new file mode 100644 index 00000000..bf32c76b --- /dev/null +++ b/assets/img/svg/3rd-party/canvasblocker.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/clearurls.svg b/assets/img/svg/3rd-party/clearurls.svg new file mode 100644 index 00000000..7b702fa0 --- /dev/null +++ b/assets/img/svg/3rd-party/clearurls.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/cryptpad.svg b/assets/img/svg/3rd-party/cryptpad.svg new file mode 100644 index 00000000..71075223 --- /dev/null +++ b/assets/img/svg/3rd-party/cryptpad.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/debian.svg b/assets/img/svg/3rd-party/debian.svg new file mode 100644 index 00000000..a191c3c1 --- /dev/null +++ b/assets/img/svg/3rd-party/debian.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/decentraleyes.svg b/assets/img/svg/3rd-party/decentraleyes.svg new file mode 100644 index 00000000..59473061 --- /dev/null +++ b/assets/img/svg/3rd-party/decentraleyes.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/diaspora.svg b/assets/img/svg/3rd-party/diaspora.svg new file mode 100644 index 00000000..78e1c0bc --- /dev/null +++ b/assets/img/svg/3rd-party/diaspora.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/discourse.svg b/assets/img/svg/3rd-party/discourse.svg new file mode 100644 index 00000000..58c799f3 --- /dev/null +++ b/assets/img/svg/3rd-party/discourse.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/disroot-dark.svg b/assets/img/svg/3rd-party/disroot-dark.svg new file mode 100644 index 00000000..97126dbc --- /dev/null +++ b/assets/img/svg/3rd-party/disroot-dark.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/disroot.svg b/assets/img/svg/3rd-party/disroot.svg new file mode 100644 index 00000000..147abc3c --- /dev/null +++ b/assets/img/svg/3rd-party/disroot.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/dnscrypt-proxy.svg b/assets/img/svg/3rd-party/dnscrypt-proxy.svg new file mode 100644 index 00000000..ccf57374 --- /dev/null +++ b/assets/img/svg/3rd-party/dnscrypt-proxy.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/duckduckgo.svg b/assets/img/svg/3rd-party/duckduckgo.svg new file mode 100644 index 00000000..dda3c896 --- /dev/null +++ b/assets/img/svg/3rd-party/duckduckgo.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/element.svg b/assets/img/svg/3rd-party/element.svg new file mode 100644 index 00000000..d449ae7c --- /dev/null +++ b/assets/img/svg/3rd-party/element.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/etag_stoppa.svg b/assets/img/svg/3rd-party/etag_stoppa.svg new file mode 100644 index 00000000..69cf0ce6 --- /dev/null +++ b/assets/img/svg/3rd-party/etag_stoppa.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/etesync.svg b/assets/img/svg/3rd-party/etesync.svg new file mode 100644 index 00000000..ed6ac82a --- /dev/null +++ b/assets/img/svg/3rd-party/etesync.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/etherpad.svg b/assets/img/svg/3rd-party/etherpad.svg new file mode 100644 index 00000000..9c6817fa --- /dev/null +++ b/assets/img/svg/3rd-party/etherpad.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/exifcleaner.svg b/assets/img/svg/3rd-party/exifcleaner.svg new file mode 100644 index 00000000..4c0d59d5 --- /dev/null +++ b/assets/img/svg/3rd-party/exifcleaner.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/fairemail.svg b/assets/img/svg/3rd-party/fairemail.svg new file mode 100644 index 00000000..54046c9a --- /dev/null +++ b/assets/img/svg/3rd-party/fairemail.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/fedora.svg b/assets/img/svg/3rd-party/fedora.svg new file mode 100644 index 00000000..2b998962 --- /dev/null +++ b/assets/img/svg/3rd-party/fedora.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/firefox_browser.svg b/assets/img/svg/3rd-party/firefox_browser.svg new file mode 100644 index 00000000..8f823fa7 --- /dev/null +++ b/assets/img/svg/3rd-party/firefox_browser.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/firefox_multi_account_containers.svg b/assets/img/svg/3rd-party/firefox_multi_account_containers.svg new file mode 100644 index 00000000..c3c72cf5 --- /dev/null +++ b/assets/img/svg/3rd-party/firefox_multi_account_containers.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/firefox_send.svg b/assets/img/svg/3rd-party/firefox_send.svg new file mode 100644 index 00000000..883f2534 --- /dev/null +++ b/assets/img/svg/3rd-party/firefox_send.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/freenet.svg b/assets/img/svg/3rd-party/freenet.svg new file mode 100644 index 00000000..67851c8b --- /dev/null +++ b/assets/img/svg/3rd-party/freenet.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/friendica.svg b/assets/img/svg/3rd-party/friendica.svg new file mode 100644 index 00000000..951bdd42 --- /dev/null +++ b/assets/img/svg/3rd-party/friendica.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/gnupg.svg b/assets/img/svg/3rd-party/gnupg.svg new file mode 100644 index 00000000..fe4f7828 --- /dev/null +++ b/assets/img/svg/3rd-party/gnupg.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/grapheneos-dark.svg b/assets/img/svg/3rd-party/grapheneos-dark.svg new file mode 100644 index 00000000..ef912c9d --- /dev/null +++ b/assets/img/svg/3rd-party/grapheneos-dark.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/grapheneos.svg b/assets/img/svg/3rd-party/grapheneos.svg new file mode 100644 index 00000000..f9b349d4 --- /dev/null +++ b/assets/img/svg/3rd-party/grapheneos.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/https_everywhere.svg b/assets/img/svg/3rd-party/https_everywhere.svg new file mode 100644 index 00000000..51793cac --- /dev/null +++ b/assets/img/svg/3rd-party/https_everywhere.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/i2p-dark.svg b/assets/img/svg/3rd-party/i2p-dark.svg new file mode 100644 index 00000000..6ed1fc80 --- /dev/null +++ b/assets/img/svg/3rd-party/i2p-dark.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/i2p.svg b/assets/img/svg/3rd-party/i2p.svg new file mode 100644 index 00000000..fda39dae --- /dev/null +++ b/assets/img/svg/3rd-party/i2p.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/invidious.svg b/assets/img/svg/3rd-party/invidious.svg new file mode 100644 index 00000000..e8867470 --- /dev/null +++ b/assets/img/svg/3rd-party/invidious.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/ivpn.svg b/assets/img/svg/3rd-party/ivpn.svg new file mode 100644 index 00000000..ef43861f --- /dev/null +++ b/assets/img/svg/3rd-party/ivpn.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/jami.svg b/assets/img/svg/3rd-party/jami.svg new file mode 100644 index 00000000..5bfe36ce --- /dev/null +++ b/assets/img/svg/3rd-party/jami.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/jitsi.svg b/assets/img/svg/3rd-party/jitsi.svg new file mode 100644 index 00000000..1f495867 --- /dev/null +++ b/assets/img/svg/3rd-party/jitsi.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/joplin.svg b/assets/img/svg/3rd-party/joplin.svg new file mode 100644 index 00000000..f1365df4 --- /dev/null +++ b/assets/img/svg/3rd-party/joplin.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/k9mail.svg b/assets/img/svg/3rd-party/k9mail.svg new file mode 100644 index 00000000..f5128b01 --- /dev/null +++ b/assets/img/svg/3rd-party/k9mail.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/keepassxc.svg b/assets/img/svg/3rd-party/keepassxc.svg new file mode 100644 index 00000000..777e7d9d --- /dev/null +++ b/assets/img/svg/3rd-party/keepassxc.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/kolab_now-dark.svg b/assets/img/svg/3rd-party/kolab_now-dark.svg new file mode 100644 index 00000000..1ae585bd --- /dev/null +++ b/assets/img/svg/3rd-party/kolab_now-dark.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/kolab_now.svg b/assets/img/svg/3rd-party/kolab_now.svg new file mode 100644 index 00000000..6d6a6f8b --- /dev/null +++ b/assets/img/svg/3rd-party/kolab_now.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/lbrytv.svg b/assets/img/svg/3rd-party/lbrytv.svg new file mode 100644 index 00000000..5e10da6e --- /dev/null +++ b/assets/img/svg/3rd-party/lbrytv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/img/svg/3rd-party/lesspass.svg b/assets/img/svg/3rd-party/lesspass.svg new file mode 100644 index 00000000..ac35a565 --- /dev/null +++ b/assets/img/svg/3rd-party/lesspass.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/librecmc-dark.svg b/assets/img/svg/3rd-party/librecmc-dark.svg new file mode 100644 index 00000000..431e1cfd --- /dev/null +++ b/assets/img/svg/3rd-party/librecmc-dark.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/librecmc.svg b/assets/img/svg/3rd-party/librecmc.svg new file mode 100644 index 00000000..db598988 --- /dev/null +++ b/assets/img/svg/3rd-party/librecmc.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/lineageos.svg b/assets/img/svg/3rd-party/lineageos.svg new file mode 100644 index 00000000..8003fd0f --- /dev/null +++ b/assets/img/svg/3rd-party/lineageos.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/linphone.svg b/assets/img/svg/3rd-party/linphone.svg new file mode 100644 index 00000000..fab4979b --- /dev/null +++ b/assets/img/svg/3rd-party/linphone.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/mail-in-a-box.svg b/assets/img/svg/3rd-party/mail-in-a-box.svg new file mode 100644 index 00000000..29c4f6d9 --- /dev/null +++ b/assets/img/svg/3rd-party/mail-in-a-box.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/mailboxorg.svg b/assets/img/svg/3rd-party/mailboxorg.svg new file mode 100644 index 00000000..c09c5ebb --- /dev/null +++ b/assets/img/svg/3rd-party/mailboxorg.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/mailcow.svg b/assets/img/svg/3rd-party/mailcow.svg new file mode 100644 index 00000000..e3b2ad95 --- /dev/null +++ b/assets/img/svg/3rd-party/mailcow.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/mailfence-dark.svg b/assets/img/svg/3rd-party/mailfence-dark.svg new file mode 100644 index 00000000..142df9bd --- /dev/null +++ b/assets/img/svg/3rd-party/mailfence-dark.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/mailfence.svg b/assets/img/svg/3rd-party/mailfence.svg new file mode 100644 index 00000000..7817596f --- /dev/null +++ b/assets/img/svg/3rd-party/mailfence.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/mailpile.svg b/assets/img/svg/3rd-party/mailpile.svg new file mode 100644 index 00000000..9da73d63 --- /dev/null +++ b/assets/img/svg/3rd-party/mailpile.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/mailvelope.svg b/assets/img/svg/3rd-party/mailvelope.svg new file mode 100644 index 00000000..0aa71d2a --- /dev/null +++ b/assets/img/svg/3rd-party/mailvelope.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/mastodon.svg b/assets/img/svg/3rd-party/mastodon.svg new file mode 100644 index 00000000..a5f75180 --- /dev/null +++ b/assets/img/svg/3rd-party/mastodon.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/mat2.svg b/assets/img/svg/3rd-party/mat2.svg new file mode 100644 index 00000000..98e5b0eb --- /dev/null +++ b/assets/img/svg/3rd-party/mat2.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/matrix-dark.svg b/assets/img/svg/3rd-party/matrix-dark.svg new file mode 100644 index 00000000..1a9a19be --- /dev/null +++ b/assets/img/svg/3rd-party/matrix-dark.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/matrix.svg b/assets/img/svg/3rd-party/matrix.svg new file mode 100644 index 00000000..790020f4 --- /dev/null +++ b/assets/img/svg/3rd-party/matrix.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/mullvad-dark.svg b/assets/img/svg/3rd-party/mullvad-dark.svg new file mode 100644 index 00000000..ff9a2dc3 --- /dev/null +++ b/assets/img/svg/3rd-party/mullvad-dark.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/mullvad.svg b/assets/img/svg/3rd-party/mullvad.svg new file mode 100644 index 00000000..26d2c3ee --- /dev/null +++ b/assets/img/svg/3rd-party/mullvad.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/mumble.svg b/assets/img/svg/3rd-party/mumble.svg new file mode 100644 index 00000000..dde70536 --- /dev/null +++ b/assets/img/svg/3rd-party/mumble.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/nextcloud.svg b/assets/img/svg/3rd-party/nextcloud.svg new file mode 100644 index 00000000..823cb960 --- /dev/null +++ b/assets/img/svg/3rd-party/nextcloud.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/nixos.svg b/assets/img/svg/3rd-party/nixos.svg new file mode 100644 index 00000000..dacba154 --- /dev/null +++ b/assets/img/svg/3rd-party/nixos.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/njalla-dark.svg b/assets/img/svg/3rd-party/njalla-dark.svg new file mode 100644 index 00000000..7b702544 --- /dev/null +++ b/assets/img/svg/3rd-party/njalla-dark.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/njalla.svg b/assets/img/svg/3rd-party/njalla.svg new file mode 100644 index 00000000..c63c2946 --- /dev/null +++ b/assets/img/svg/3rd-party/njalla.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/onion_browser.svg b/assets/img/svg/3rd-party/onion_browser.svg new file mode 100644 index 00000000..31924477 --- /dev/null +++ b/assets/img/svg/3rd-party/onion_browser.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/onionshare.svg b/assets/img/svg/3rd-party/onionshare.svg new file mode 100644 index 00000000..22bb482c --- /dev/null +++ b/assets/img/svg/3rd-party/onionshare.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/openwrt-dark.svg b/assets/img/svg/3rd-party/openwrt-dark.svg new file mode 100644 index 00000000..674f20c0 --- /dev/null +++ b/assets/img/svg/3rd-party/openwrt-dark.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/openwrt.svg b/assets/img/svg/3rd-party/openwrt.svg new file mode 100644 index 00000000..f84575b7 --- /dev/null +++ b/assets/img/svg/3rd-party/openwrt.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/orbot.svg b/assets/img/svg/3rd-party/orbot.svg new file mode 100644 index 00000000..80844e7e --- /dev/null +++ b/assets/img/svg/3rd-party/orbot.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/peertube.svg b/assets/img/svg/3rd-party/peertube.svg new file mode 100644 index 00000000..b749f75f --- /dev/null +++ b/assets/img/svg/3rd-party/peertube.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/img/svg/3rd-party/pfsense-dark.svg b/assets/img/svg/3rd-party/pfsense-dark.svg new file mode 100644 index 00000000..98c68b89 --- /dev/null +++ b/assets/img/svg/3rd-party/pfsense-dark.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/pfsense.svg b/assets/img/svg/3rd-party/pfsense.svg new file mode 100644 index 00000000..150ea027 --- /dev/null +++ b/assets/img/svg/3rd-party/pfsense.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/pixelfed.svg b/assets/img/svg/3rd-party/pixelfed.svg new file mode 100644 index 00000000..5550a361 --- /dev/null +++ b/assets/img/svg/3rd-party/pixelfed.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/pleroma.svg b/assets/img/svg/3rd-party/pleroma.svg new file mode 100644 index 00000000..c92da7cf --- /dev/null +++ b/assets/img/svg/3rd-party/pleroma.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/posteo.svg b/assets/img/svg/3rd-party/posteo.svg new file mode 100644 index 00000000..e28ebcee --- /dev/null +++ b/assets/img/svg/3rd-party/posteo.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/privatebin.svg b/assets/img/svg/3rd-party/privatebin.svg new file mode 100644 index 00000000..d9ead70a --- /dev/null +++ b/assets/img/svg/3rd-party/privatebin.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/protonmail.svg b/assets/img/svg/3rd-party/protonmail.svg new file mode 100644 index 00000000..091920b2 --- /dev/null +++ b/assets/img/svg/3rd-party/protonmail.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/protonvpn.svg b/assets/img/svg/3rd-party/protonvpn.svg new file mode 100644 index 00000000..ec0314f3 --- /dev/null +++ b/assets/img/svg/3rd-party/protonvpn.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/qubes_os.svg b/assets/img/svg/3rd-party/qubes_os.svg new file mode 100644 index 00000000..11eedc3f --- /dev/null +++ b/assets/img/svg/3rd-party/qubes_os.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/qwant.svg b/assets/img/svg/3rd-party/qwant.svg new file mode 100644 index 00000000..63dd8818 --- /dev/null +++ b/assets/img/svg/3rd-party/qwant.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/retroshare.svg b/assets/img/svg/3rd-party/retroshare.svg new file mode 100644 index 00000000..39e9e60d --- /dev/null +++ b/assets/img/svg/3rd-party/retroshare.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/rocketchat.svg b/assets/img/svg/3rd-party/rocketchat.svg new file mode 100644 index 00000000..27ac8773 --- /dev/null +++ b/assets/img/svg/3rd-party/rocketchat.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/searx.svg b/assets/img/svg/3rd-party/searx.svg new file mode 100644 index 00000000..a526daa5 --- /dev/null +++ b/assets/img/svg/3rd-party/searx.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/signal.svg b/assets/img/svg/3rd-party/signal.svg new file mode 100644 index 00000000..d1f1ee56 --- /dev/null +++ b/assets/img/svg/3rd-party/signal.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/simplelogin.svg b/assets/img/svg/3rd-party/simplelogin.svg new file mode 100644 index 00000000..ae651643 --- /dev/null +++ b/assets/img/svg/3rd-party/simplelogin.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/snowflake.svg b/assets/img/svg/3rd-party/snowflake.svg new file mode 100644 index 00000000..69f782b6 --- /dev/null +++ b/assets/img/svg/3rd-party/snowflake.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/sparkleshare.svg b/assets/img/svg/3rd-party/sparkleshare.svg new file mode 100644 index 00000000..5430f42e --- /dev/null +++ b/assets/img/svg/3rd-party/sparkleshare.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/sponsors/safing-dark.svg b/assets/img/svg/3rd-party/sponsors/safing-dark.svg new file mode 100644 index 00000000..29843484 --- /dev/null +++ b/assets/img/svg/3rd-party/sponsors/safing-dark.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/sponsors/safing.svg b/assets/img/svg/3rd-party/sponsors/safing.svg new file mode 100644 index 00000000..aefaf14d --- /dev/null +++ b/assets/img/svg/3rd-party/sponsors/safing.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/sponsors/techlore.svg b/assets/img/svg/3rd-party/sponsors/techlore.svg new file mode 100644 index 00000000..1ec25fbc --- /dev/null +++ b/assets/img/svg/3rd-party/sponsors/techlore.svg @@ -0,0 +1,9706 @@ + + + + + + diff --git a/assets/img/svg/3rd-party/standard_notes.svg b/assets/img/svg/3rd-party/standard_notes.svg new file mode 100644 index 00000000..39bc0984 --- /dev/null +++ b/assets/img/svg/3rd-party/standard_notes.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/startmail-dark.svg b/assets/img/svg/3rd-party/startmail-dark.svg new file mode 100644 index 00000000..463a3048 --- /dev/null +++ b/assets/img/svg/3rd-party/startmail-dark.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/startmail.svg b/assets/img/svg/3rd-party/startmail.svg new file mode 100644 index 00000000..4fb425a4 --- /dev/null +++ b/assets/img/svg/3rd-party/startmail.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/startpage.svg b/assets/img/svg/3rd-party/startpage.svg new file mode 100644 index 00000000..ca44d894 --- /dev/null +++ b/assets/img/svg/3rd-party/startpage.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/syncthing.svg b/assets/img/svg/3rd-party/syncthing.svg new file mode 100644 index 00000000..1b4f1644 --- /dev/null +++ b/assets/img/svg/3rd-party/syncthing.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/tahoe-lafs-dark.svg b/assets/img/svg/3rd-party/tahoe-lafs-dark.svg new file mode 100644 index 00000000..cc8eec0b --- /dev/null +++ b/assets/img/svg/3rd-party/tahoe-lafs-dark.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/tahoe-lafs.svg b/assets/img/svg/3rd-party/tahoe-lafs.svg new file mode 100644 index 00000000..2ca80bca --- /dev/null +++ b/assets/img/svg/3rd-party/tahoe-lafs.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/tails.svg b/assets/img/svg/3rd-party/tails.svg new file mode 100644 index 00000000..5603c454 --- /dev/null +++ b/assets/img/svg/3rd-party/tails.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/temporary_containers-dark.svg b/assets/img/svg/3rd-party/temporary_containers-dark.svg new file mode 100644 index 00000000..0991ebcc --- /dev/null +++ b/assets/img/svg/3rd-party/temporary_containers-dark.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/temporary_containers.svg b/assets/img/svg/3rd-party/temporary_containers.svg new file mode 100644 index 00000000..aa699686 --- /dev/null +++ b/assets/img/svg/3rd-party/temporary_containers.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/terms_of_service_didnt_read.svg b/assets/img/svg/3rd-party/terms_of_service_didnt_read.svg new file mode 100644 index 00000000..fc4aa88d --- /dev/null +++ b/assets/img/svg/3rd-party/terms_of_service_didnt_read.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/thunderbird.svg b/assets/img/svg/3rd-party/thunderbird.svg new file mode 100644 index 00000000..51a05e2a --- /dev/null +++ b/assets/img/svg/3rd-party/thunderbird.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/tildes.svg b/assets/img/svg/3rd-party/tildes.svg new file mode 100644 index 00000000..04dad607 --- /dev/null +++ b/assets/img/svg/3rd-party/tildes.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/tor.svg b/assets/img/svg/3rd-party/tor.svg new file mode 100644 index 00000000..f526cfd7 --- /dev/null +++ b/assets/img/svg/3rd-party/tor.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/tor_browser.svg b/assets/img/svg/3rd-party/tor_browser.svg new file mode 100644 index 00000000..924354b8 --- /dev/null +++ b/assets/img/svg/3rd-party/tor_browser.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/turtl.svg b/assets/img/svg/3rd-party/turtl.svg new file mode 100644 index 00000000..b98ee63f --- /dev/null +++ b/assets/img/svg/3rd-party/turtl.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/tutanota-dark.svg b/assets/img/svg/3rd-party/tutanota-dark.svg new file mode 100644 index 00000000..f0c224b9 --- /dev/null +++ b/assets/img/svg/3rd-party/tutanota-dark.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/tutanota.svg b/assets/img/svg/3rd-party/tutanota.svg new file mode 100644 index 00000000..bbe98248 --- /dev/null +++ b/assets/img/svg/3rd-party/tutanota.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/ublock_origin.svg b/assets/img/svg/3rd-party/ublock_origin.svg new file mode 100644 index 00000000..cfb6935a --- /dev/null +++ b/assets/img/svg/3rd-party/ublock_origin.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/ubuntu.svg b/assets/img/svg/3rd-party/ubuntu.svg new file mode 100644 index 00000000..1a952efa --- /dev/null +++ b/assets/img/svg/3rd-party/ubuntu.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/unbound.svg b/assets/img/svg/3rd-party/unbound.svg new file mode 100644 index 00000000..91a1a492 --- /dev/null +++ b/assets/img/svg/3rd-party/unbound.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/veracrypt-dark.svg b/assets/img/svg/3rd-party/veracrypt-dark.svg new file mode 100644 index 00000000..cec382d6 --- /dev/null +++ b/assets/img/svg/3rd-party/veracrypt-dark.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/veracrypt.svg b/assets/img/svg/3rd-party/veracrypt.svg new file mode 100644 index 00000000..e6427078 --- /dev/null +++ b/assets/img/svg/3rd-party/veracrypt.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/whonix.svg b/assets/img/svg/3rd-party/whonix.svg new file mode 100644 index 00000000..212ea7db --- /dev/null +++ b/assets/img/svg/3rd-party/whonix.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/writeas-dark.svg b/assets/img/svg/3rd-party/writeas-dark.svg new file mode 100644 index 00000000..530ae094 --- /dev/null +++ b/assets/img/svg/3rd-party/writeas-dark.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/writeas.svg b/assets/img/svg/3rd-party/writeas.svg new file mode 100644 index 00000000..1cdd0ca5 --- /dev/null +++ b/assets/img/svg/3rd-party/writeas.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/3rd-party/xbrowsersync.svg b/assets/img/svg/3rd-party/xbrowsersync.svg new file mode 100644 index 00000000..f850d3ee --- /dev/null +++ b/assets/img/svg/3rd-party/xbrowsersync.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/flags/ad.svg b/assets/img/svg/flags/ad.svg similarity index 100% rename from assets/img/flags/ad.svg rename to assets/img/svg/flags/ad.svg diff --git a/assets/img/flags/ae.svg b/assets/img/svg/flags/ae.svg similarity index 100% rename from assets/img/flags/ae.svg rename to assets/img/svg/flags/ae.svg diff --git a/assets/img/flags/af.svg b/assets/img/svg/flags/af.svg similarity index 100% rename from assets/img/flags/af.svg rename to assets/img/svg/flags/af.svg diff --git a/assets/img/flags/ag.svg b/assets/img/svg/flags/ag.svg similarity index 100% rename from assets/img/flags/ag.svg rename to assets/img/svg/flags/ag.svg diff --git a/assets/img/flags/ai.svg b/assets/img/svg/flags/ai.svg similarity index 100% rename from assets/img/flags/ai.svg rename to assets/img/svg/flags/ai.svg diff --git a/assets/img/flags/al.svg b/assets/img/svg/flags/al.svg similarity index 100% rename from assets/img/flags/al.svg rename to assets/img/svg/flags/al.svg diff --git a/assets/img/flags/am.svg b/assets/img/svg/flags/am.svg similarity index 100% rename from assets/img/flags/am.svg rename to assets/img/svg/flags/am.svg diff --git a/assets/img/flags/ao.svg b/assets/img/svg/flags/ao.svg similarity index 100% rename from assets/img/flags/ao.svg rename to assets/img/svg/flags/ao.svg diff --git a/assets/img/flags/aq.svg b/assets/img/svg/flags/aq.svg similarity index 100% rename from assets/img/flags/aq.svg rename to assets/img/svg/flags/aq.svg diff --git a/assets/img/flags/ar.svg b/assets/img/svg/flags/ar.svg similarity index 100% rename from assets/img/flags/ar.svg rename to assets/img/svg/flags/ar.svg diff --git a/assets/img/flags/as.svg b/assets/img/svg/flags/as.svg similarity index 100% rename from assets/img/flags/as.svg rename to assets/img/svg/flags/as.svg diff --git a/assets/img/flags/at.svg b/assets/img/svg/flags/at.svg similarity index 100% rename from assets/img/flags/at.svg rename to assets/img/svg/flags/at.svg diff --git a/assets/img/flags/au.svg b/assets/img/svg/flags/au.svg similarity index 100% rename from assets/img/flags/au.svg rename to assets/img/svg/flags/au.svg diff --git a/assets/img/flags/aw.svg b/assets/img/svg/flags/aw.svg similarity index 100% rename from assets/img/flags/aw.svg rename to assets/img/svg/flags/aw.svg diff --git a/assets/img/flags/ax.svg b/assets/img/svg/flags/ax.svg similarity index 100% rename from assets/img/flags/ax.svg rename to assets/img/svg/flags/ax.svg diff --git a/assets/img/flags/az.svg b/assets/img/svg/flags/az.svg similarity index 100% rename from assets/img/flags/az.svg rename to assets/img/svg/flags/az.svg diff --git a/assets/img/flags/ba.svg b/assets/img/svg/flags/ba.svg similarity index 100% rename from assets/img/flags/ba.svg rename to assets/img/svg/flags/ba.svg diff --git a/assets/img/flags/bb.svg b/assets/img/svg/flags/bb.svg similarity index 100% rename from assets/img/flags/bb.svg rename to assets/img/svg/flags/bb.svg diff --git a/assets/img/flags/bd.svg b/assets/img/svg/flags/bd.svg similarity index 100% rename from assets/img/flags/bd.svg rename to assets/img/svg/flags/bd.svg diff --git a/assets/img/flags/be.svg b/assets/img/svg/flags/be.svg similarity index 100% rename from assets/img/flags/be.svg rename to assets/img/svg/flags/be.svg diff --git a/assets/img/flags/bf.svg b/assets/img/svg/flags/bf.svg similarity index 100% rename from assets/img/flags/bf.svg rename to assets/img/svg/flags/bf.svg diff --git a/assets/img/flags/bg.svg b/assets/img/svg/flags/bg.svg similarity index 100% rename from assets/img/flags/bg.svg rename to assets/img/svg/flags/bg.svg diff --git a/assets/img/flags/bh.svg b/assets/img/svg/flags/bh.svg similarity index 100% rename from assets/img/flags/bh.svg rename to assets/img/svg/flags/bh.svg diff --git a/assets/img/flags/bi.svg b/assets/img/svg/flags/bi.svg similarity index 100% rename from assets/img/flags/bi.svg rename to assets/img/svg/flags/bi.svg diff --git a/assets/img/flags/bj.svg b/assets/img/svg/flags/bj.svg similarity index 100% rename from assets/img/flags/bj.svg rename to assets/img/svg/flags/bj.svg diff --git a/assets/img/flags/bl.svg b/assets/img/svg/flags/bl.svg similarity index 100% rename from assets/img/flags/bl.svg rename to assets/img/svg/flags/bl.svg diff --git a/assets/img/flags/bm.svg b/assets/img/svg/flags/bm.svg similarity index 100% rename from assets/img/flags/bm.svg rename to assets/img/svg/flags/bm.svg diff --git a/assets/img/flags/bn.svg b/assets/img/svg/flags/bn.svg similarity index 100% rename from assets/img/flags/bn.svg rename to assets/img/svg/flags/bn.svg diff --git a/assets/img/flags/bo.svg b/assets/img/svg/flags/bo.svg similarity index 100% rename from assets/img/flags/bo.svg rename to assets/img/svg/flags/bo.svg diff --git a/assets/img/flags/bq.svg b/assets/img/svg/flags/bq.svg similarity index 100% rename from assets/img/flags/bq.svg rename to assets/img/svg/flags/bq.svg diff --git a/assets/img/flags/br.svg b/assets/img/svg/flags/br.svg similarity index 100% rename from assets/img/flags/br.svg rename to assets/img/svg/flags/br.svg diff --git a/assets/img/flags/bs.svg b/assets/img/svg/flags/bs.svg similarity index 100% rename from assets/img/flags/bs.svg rename to assets/img/svg/flags/bs.svg diff --git a/assets/img/flags/bt.svg b/assets/img/svg/flags/bt.svg similarity index 100% rename from assets/img/flags/bt.svg rename to assets/img/svg/flags/bt.svg diff --git a/assets/img/flags/bv.svg b/assets/img/svg/flags/bv.svg similarity index 100% rename from assets/img/flags/bv.svg rename to assets/img/svg/flags/bv.svg diff --git a/assets/img/flags/bw.svg b/assets/img/svg/flags/bw.svg similarity index 100% rename from assets/img/flags/bw.svg rename to assets/img/svg/flags/bw.svg diff --git a/assets/img/flags/by.svg b/assets/img/svg/flags/by.svg similarity index 100% rename from assets/img/flags/by.svg rename to assets/img/svg/flags/by.svg diff --git a/assets/img/flags/bz.svg b/assets/img/svg/flags/bz.svg similarity index 100% rename from assets/img/flags/bz.svg rename to assets/img/svg/flags/bz.svg diff --git a/assets/img/flags/ca.svg b/assets/img/svg/flags/ca.svg similarity index 100% rename from assets/img/flags/ca.svg rename to assets/img/svg/flags/ca.svg diff --git a/assets/img/flags/cc.svg b/assets/img/svg/flags/cc.svg similarity index 100% rename from assets/img/flags/cc.svg rename to assets/img/svg/flags/cc.svg diff --git a/assets/img/flags/cd.svg b/assets/img/svg/flags/cd.svg similarity index 100% rename from assets/img/flags/cd.svg rename to assets/img/svg/flags/cd.svg diff --git a/assets/img/flags/cf.svg b/assets/img/svg/flags/cf.svg similarity index 100% rename from assets/img/flags/cf.svg rename to assets/img/svg/flags/cf.svg diff --git a/assets/img/flags/cg.svg b/assets/img/svg/flags/cg.svg similarity index 100% rename from assets/img/flags/cg.svg rename to assets/img/svg/flags/cg.svg diff --git a/assets/img/flags/ch.svg b/assets/img/svg/flags/ch.svg similarity index 100% rename from assets/img/flags/ch.svg rename to assets/img/svg/flags/ch.svg diff --git a/assets/img/flags/ci.svg b/assets/img/svg/flags/ci.svg similarity index 100% rename from assets/img/flags/ci.svg rename to assets/img/svg/flags/ci.svg diff --git a/assets/img/flags/ck.svg b/assets/img/svg/flags/ck.svg similarity index 100% rename from assets/img/flags/ck.svg rename to assets/img/svg/flags/ck.svg diff --git a/assets/img/flags/cl.svg b/assets/img/svg/flags/cl.svg similarity index 100% rename from assets/img/flags/cl.svg rename to assets/img/svg/flags/cl.svg diff --git a/assets/img/flags/cm.svg b/assets/img/svg/flags/cm.svg similarity index 100% rename from assets/img/flags/cm.svg rename to assets/img/svg/flags/cm.svg diff --git a/assets/img/flags/cn.svg b/assets/img/svg/flags/cn.svg similarity index 100% rename from assets/img/flags/cn.svg rename to assets/img/svg/flags/cn.svg diff --git a/assets/img/flags/co.svg b/assets/img/svg/flags/co.svg similarity index 100% rename from assets/img/flags/co.svg rename to assets/img/svg/flags/co.svg diff --git a/assets/img/flags/cr.svg b/assets/img/svg/flags/cr.svg similarity index 100% rename from assets/img/flags/cr.svg rename to assets/img/svg/flags/cr.svg diff --git a/assets/img/flags/cu.svg b/assets/img/svg/flags/cu.svg similarity index 100% rename from assets/img/flags/cu.svg rename to assets/img/svg/flags/cu.svg diff --git a/assets/img/flags/cv.svg b/assets/img/svg/flags/cv.svg similarity index 100% rename from assets/img/flags/cv.svg rename to assets/img/svg/flags/cv.svg diff --git a/assets/img/flags/cw.svg b/assets/img/svg/flags/cw.svg similarity index 100% rename from assets/img/flags/cw.svg rename to assets/img/svg/flags/cw.svg diff --git a/assets/img/flags/cx.svg b/assets/img/svg/flags/cx.svg similarity index 100% rename from assets/img/flags/cx.svg rename to assets/img/svg/flags/cx.svg diff --git a/assets/img/flags/cy.svg b/assets/img/svg/flags/cy.svg similarity index 100% rename from assets/img/flags/cy.svg rename to assets/img/svg/flags/cy.svg diff --git a/assets/img/flags/cz.svg b/assets/img/svg/flags/cz.svg similarity index 100% rename from assets/img/flags/cz.svg rename to assets/img/svg/flags/cz.svg diff --git a/assets/img/flags/de.svg b/assets/img/svg/flags/de.svg similarity index 100% rename from assets/img/flags/de.svg rename to assets/img/svg/flags/de.svg diff --git a/assets/img/flags/dj.svg b/assets/img/svg/flags/dj.svg similarity index 100% rename from assets/img/flags/dj.svg rename to assets/img/svg/flags/dj.svg diff --git a/assets/img/flags/dk.svg b/assets/img/svg/flags/dk.svg similarity index 100% rename from assets/img/flags/dk.svg rename to assets/img/svg/flags/dk.svg diff --git a/assets/img/flags/dm.svg b/assets/img/svg/flags/dm.svg similarity index 100% rename from assets/img/flags/dm.svg rename to assets/img/svg/flags/dm.svg diff --git a/assets/img/flags/do.svg b/assets/img/svg/flags/do.svg similarity index 100% rename from assets/img/flags/do.svg rename to assets/img/svg/flags/do.svg diff --git a/assets/img/flags/dz.svg b/assets/img/svg/flags/dz.svg similarity index 100% rename from assets/img/flags/dz.svg rename to assets/img/svg/flags/dz.svg diff --git a/assets/img/flags/ec.svg b/assets/img/svg/flags/ec.svg similarity index 100% rename from assets/img/flags/ec.svg rename to assets/img/svg/flags/ec.svg diff --git a/assets/img/flags/ee.svg b/assets/img/svg/flags/ee.svg similarity index 100% rename from assets/img/flags/ee.svg rename to assets/img/svg/flags/ee.svg diff --git a/assets/img/flags/eg.svg b/assets/img/svg/flags/eg.svg similarity index 100% rename from assets/img/flags/eg.svg rename to assets/img/svg/flags/eg.svg diff --git a/assets/img/flags/eh.svg b/assets/img/svg/flags/eh.svg similarity index 100% rename from assets/img/flags/eh.svg rename to assets/img/svg/flags/eh.svg diff --git a/assets/img/flags/er.svg b/assets/img/svg/flags/er.svg similarity index 100% rename from assets/img/flags/er.svg rename to assets/img/svg/flags/er.svg diff --git a/assets/img/flags/es.svg b/assets/img/svg/flags/es.svg similarity index 100% rename from assets/img/flags/es.svg rename to assets/img/svg/flags/es.svg diff --git a/assets/img/flags/et.svg b/assets/img/svg/flags/et.svg similarity index 100% rename from assets/img/flags/et.svg rename to assets/img/svg/flags/et.svg diff --git a/assets/img/flags/eu.svg b/assets/img/svg/flags/eu.svg similarity index 100% rename from assets/img/flags/eu.svg rename to assets/img/svg/flags/eu.svg diff --git a/assets/img/flags/fi.svg b/assets/img/svg/flags/fi.svg similarity index 100% rename from assets/img/flags/fi.svg rename to assets/img/svg/flags/fi.svg diff --git a/assets/img/flags/fj.svg b/assets/img/svg/flags/fj.svg similarity index 100% rename from assets/img/flags/fj.svg rename to assets/img/svg/flags/fj.svg diff --git a/assets/img/flags/fk.svg b/assets/img/svg/flags/fk.svg similarity index 100% rename from assets/img/flags/fk.svg rename to assets/img/svg/flags/fk.svg diff --git a/assets/img/flags/fm.svg b/assets/img/svg/flags/fm.svg similarity index 100% rename from assets/img/flags/fm.svg rename to assets/img/svg/flags/fm.svg diff --git a/assets/img/flags/fo.svg b/assets/img/svg/flags/fo.svg similarity index 100% rename from assets/img/flags/fo.svg rename to assets/img/svg/flags/fo.svg diff --git a/assets/img/flags/fr.svg b/assets/img/svg/flags/fr.svg similarity index 100% rename from assets/img/flags/fr.svg rename to assets/img/svg/flags/fr.svg diff --git a/assets/img/flags/ga.svg b/assets/img/svg/flags/ga.svg similarity index 100% rename from assets/img/flags/ga.svg rename to assets/img/svg/flags/ga.svg diff --git a/assets/img/flags/gb-eng.svg b/assets/img/svg/flags/gb-eng.svg similarity index 100% rename from assets/img/flags/gb-eng.svg rename to assets/img/svg/flags/gb-eng.svg diff --git a/assets/img/flags/gb-sct.svg b/assets/img/svg/flags/gb-sct.svg similarity index 100% rename from assets/img/flags/gb-sct.svg rename to assets/img/svg/flags/gb-sct.svg diff --git a/assets/img/flags/gb-wls.svg b/assets/img/svg/flags/gb-wls.svg similarity index 100% rename from assets/img/flags/gb-wls.svg rename to assets/img/svg/flags/gb-wls.svg diff --git a/assets/img/flags/gb.svg b/assets/img/svg/flags/gb.svg similarity index 100% rename from assets/img/flags/gb.svg rename to assets/img/svg/flags/gb.svg diff --git a/assets/img/flags/gd.svg b/assets/img/svg/flags/gd.svg similarity index 100% rename from assets/img/flags/gd.svg rename to assets/img/svg/flags/gd.svg diff --git a/assets/img/flags/ge.svg b/assets/img/svg/flags/ge.svg similarity index 100% rename from assets/img/flags/ge.svg rename to assets/img/svg/flags/ge.svg diff --git a/assets/img/flags/gf.svg b/assets/img/svg/flags/gf.svg similarity index 100% rename from assets/img/flags/gf.svg rename to assets/img/svg/flags/gf.svg diff --git a/assets/img/flags/gg.svg b/assets/img/svg/flags/gg.svg similarity index 100% rename from assets/img/flags/gg.svg rename to assets/img/svg/flags/gg.svg diff --git a/assets/img/flags/gh.svg b/assets/img/svg/flags/gh.svg similarity index 100% rename from assets/img/flags/gh.svg rename to assets/img/svg/flags/gh.svg diff --git a/assets/img/flags/gi.svg b/assets/img/svg/flags/gi.svg similarity index 100% rename from assets/img/flags/gi.svg rename to assets/img/svg/flags/gi.svg diff --git a/assets/img/flags/gl.svg b/assets/img/svg/flags/gl.svg similarity index 100% rename from assets/img/flags/gl.svg rename to assets/img/svg/flags/gl.svg diff --git a/assets/img/flags/gm.svg b/assets/img/svg/flags/gm.svg similarity index 100% rename from assets/img/flags/gm.svg rename to assets/img/svg/flags/gm.svg diff --git a/assets/img/flags/gn.svg b/assets/img/svg/flags/gn.svg similarity index 100% rename from assets/img/flags/gn.svg rename to assets/img/svg/flags/gn.svg diff --git a/assets/img/flags/gp.svg b/assets/img/svg/flags/gp.svg similarity index 100% rename from assets/img/flags/gp.svg rename to assets/img/svg/flags/gp.svg diff --git a/assets/img/flags/gq.svg b/assets/img/svg/flags/gq.svg similarity index 100% rename from assets/img/flags/gq.svg rename to assets/img/svg/flags/gq.svg diff --git a/assets/img/flags/gr.svg b/assets/img/svg/flags/gr.svg similarity index 100% rename from assets/img/flags/gr.svg rename to assets/img/svg/flags/gr.svg diff --git a/assets/img/flags/gs.svg b/assets/img/svg/flags/gs.svg similarity index 100% rename from assets/img/flags/gs.svg rename to assets/img/svg/flags/gs.svg diff --git a/assets/img/flags/gt.svg b/assets/img/svg/flags/gt.svg similarity index 100% rename from assets/img/flags/gt.svg rename to assets/img/svg/flags/gt.svg diff --git a/assets/img/flags/gu.svg b/assets/img/svg/flags/gu.svg similarity index 100% rename from assets/img/flags/gu.svg rename to assets/img/svg/flags/gu.svg diff --git a/assets/img/flags/gw.svg b/assets/img/svg/flags/gw.svg similarity index 100% rename from assets/img/flags/gw.svg rename to assets/img/svg/flags/gw.svg diff --git a/assets/img/flags/gy.svg b/assets/img/svg/flags/gy.svg similarity index 100% rename from assets/img/flags/gy.svg rename to assets/img/svg/flags/gy.svg diff --git a/assets/img/flags/hk.svg b/assets/img/svg/flags/hk.svg similarity index 100% rename from assets/img/flags/hk.svg rename to assets/img/svg/flags/hk.svg diff --git a/assets/img/flags/hm.svg b/assets/img/svg/flags/hm.svg similarity index 100% rename from assets/img/flags/hm.svg rename to assets/img/svg/flags/hm.svg diff --git a/assets/img/flags/hn.svg b/assets/img/svg/flags/hn.svg similarity index 100% rename from assets/img/flags/hn.svg rename to assets/img/svg/flags/hn.svg diff --git a/assets/img/flags/hr.svg b/assets/img/svg/flags/hr.svg similarity index 100% rename from assets/img/flags/hr.svg rename to assets/img/svg/flags/hr.svg diff --git a/assets/img/flags/ht.svg b/assets/img/svg/flags/ht.svg similarity index 100% rename from assets/img/flags/ht.svg rename to assets/img/svg/flags/ht.svg diff --git a/assets/img/flags/hu.svg b/assets/img/svg/flags/hu.svg similarity index 100% rename from assets/img/flags/hu.svg rename to assets/img/svg/flags/hu.svg diff --git a/assets/img/flags/id.svg b/assets/img/svg/flags/id.svg similarity index 100% rename from assets/img/flags/id.svg rename to assets/img/svg/flags/id.svg diff --git a/assets/img/flags/ie.svg b/assets/img/svg/flags/ie.svg similarity index 100% rename from assets/img/flags/ie.svg rename to assets/img/svg/flags/ie.svg diff --git a/assets/img/flags/il.svg b/assets/img/svg/flags/il.svg similarity index 100% rename from assets/img/flags/il.svg rename to assets/img/svg/flags/il.svg diff --git a/assets/img/flags/im.svg b/assets/img/svg/flags/im.svg similarity index 100% rename from assets/img/flags/im.svg rename to assets/img/svg/flags/im.svg diff --git a/assets/img/flags/in.svg b/assets/img/svg/flags/in.svg similarity index 100% rename from assets/img/flags/in.svg rename to assets/img/svg/flags/in.svg diff --git a/assets/img/flags/io.svg b/assets/img/svg/flags/io.svg similarity index 100% rename from assets/img/flags/io.svg rename to assets/img/svg/flags/io.svg diff --git a/assets/img/flags/iq.svg b/assets/img/svg/flags/iq.svg similarity index 100% rename from assets/img/flags/iq.svg rename to assets/img/svg/flags/iq.svg diff --git a/assets/img/flags/ir.svg b/assets/img/svg/flags/ir.svg similarity index 100% rename from assets/img/flags/ir.svg rename to assets/img/svg/flags/ir.svg diff --git a/assets/img/flags/is.svg b/assets/img/svg/flags/is.svg similarity index 100% rename from assets/img/flags/is.svg rename to assets/img/svg/flags/is.svg diff --git a/assets/img/flags/it.svg b/assets/img/svg/flags/it.svg similarity index 100% rename from assets/img/flags/it.svg rename to assets/img/svg/flags/it.svg diff --git a/assets/img/flags/je.svg b/assets/img/svg/flags/je.svg similarity index 100% rename from assets/img/flags/je.svg rename to assets/img/svg/flags/je.svg diff --git a/assets/img/flags/jm.svg b/assets/img/svg/flags/jm.svg similarity index 100% rename from assets/img/flags/jm.svg rename to assets/img/svg/flags/jm.svg diff --git a/assets/img/flags/jo.svg b/assets/img/svg/flags/jo.svg similarity index 100% rename from assets/img/flags/jo.svg rename to assets/img/svg/flags/jo.svg diff --git a/assets/img/flags/jp.svg b/assets/img/svg/flags/jp.svg similarity index 100% rename from assets/img/flags/jp.svg rename to assets/img/svg/flags/jp.svg diff --git a/assets/img/flags/ke.svg b/assets/img/svg/flags/ke.svg similarity index 100% rename from assets/img/flags/ke.svg rename to assets/img/svg/flags/ke.svg diff --git a/assets/img/flags/kg.svg b/assets/img/svg/flags/kg.svg similarity index 100% rename from assets/img/flags/kg.svg rename to assets/img/svg/flags/kg.svg diff --git a/assets/img/flags/kh.svg b/assets/img/svg/flags/kh.svg similarity index 100% rename from assets/img/flags/kh.svg rename to assets/img/svg/flags/kh.svg diff --git a/assets/img/flags/ki.svg b/assets/img/svg/flags/ki.svg similarity index 100% rename from assets/img/flags/ki.svg rename to assets/img/svg/flags/ki.svg diff --git a/assets/img/flags/km.svg b/assets/img/svg/flags/km.svg similarity index 100% rename from assets/img/flags/km.svg rename to assets/img/svg/flags/km.svg diff --git a/assets/img/flags/kn.svg b/assets/img/svg/flags/kn.svg similarity index 100% rename from assets/img/flags/kn.svg rename to assets/img/svg/flags/kn.svg diff --git a/assets/img/flags/kp.svg b/assets/img/svg/flags/kp.svg similarity index 100% rename from assets/img/flags/kp.svg rename to assets/img/svg/flags/kp.svg diff --git a/assets/img/flags/kr.svg b/assets/img/svg/flags/kr.svg similarity index 100% rename from assets/img/flags/kr.svg rename to assets/img/svg/flags/kr.svg diff --git a/assets/img/flags/kw.svg b/assets/img/svg/flags/kw.svg similarity index 100% rename from assets/img/flags/kw.svg rename to assets/img/svg/flags/kw.svg diff --git a/assets/img/flags/ky.svg b/assets/img/svg/flags/ky.svg similarity index 100% rename from assets/img/flags/ky.svg rename to assets/img/svg/flags/ky.svg diff --git a/assets/img/flags/kz.svg b/assets/img/svg/flags/kz.svg similarity index 100% rename from assets/img/flags/kz.svg rename to assets/img/svg/flags/kz.svg diff --git a/assets/img/flags/la.svg b/assets/img/svg/flags/la.svg similarity index 100% rename from assets/img/flags/la.svg rename to assets/img/svg/flags/la.svg diff --git a/assets/img/flags/lb.svg b/assets/img/svg/flags/lb.svg similarity index 100% rename from assets/img/flags/lb.svg rename to assets/img/svg/flags/lb.svg diff --git a/assets/img/flags/lc.svg b/assets/img/svg/flags/lc.svg similarity index 100% rename from assets/img/flags/lc.svg rename to assets/img/svg/flags/lc.svg diff --git a/assets/img/flags/li.svg b/assets/img/svg/flags/li.svg similarity index 100% rename from assets/img/flags/li.svg rename to assets/img/svg/flags/li.svg diff --git a/assets/img/flags/lk.svg b/assets/img/svg/flags/lk.svg similarity index 100% rename from assets/img/flags/lk.svg rename to assets/img/svg/flags/lk.svg diff --git a/assets/img/flags/lr.svg b/assets/img/svg/flags/lr.svg similarity index 100% rename from assets/img/flags/lr.svg rename to assets/img/svg/flags/lr.svg diff --git a/assets/img/flags/ls.svg b/assets/img/svg/flags/ls.svg similarity index 100% rename from assets/img/flags/ls.svg rename to assets/img/svg/flags/ls.svg diff --git a/assets/img/flags/lt.svg b/assets/img/svg/flags/lt.svg similarity index 100% rename from assets/img/flags/lt.svg rename to assets/img/svg/flags/lt.svg diff --git a/assets/img/flags/lu.svg b/assets/img/svg/flags/lu.svg similarity index 100% rename from assets/img/flags/lu.svg rename to assets/img/svg/flags/lu.svg diff --git a/assets/img/flags/lv.svg b/assets/img/svg/flags/lv.svg similarity index 100% rename from assets/img/flags/lv.svg rename to assets/img/svg/flags/lv.svg diff --git a/assets/img/flags/ly.svg b/assets/img/svg/flags/ly.svg similarity index 100% rename from assets/img/flags/ly.svg rename to assets/img/svg/flags/ly.svg diff --git a/assets/img/flags/ma.svg b/assets/img/svg/flags/ma.svg similarity index 100% rename from assets/img/flags/ma.svg rename to assets/img/svg/flags/ma.svg diff --git a/assets/img/flags/mc.svg b/assets/img/svg/flags/mc.svg similarity index 100% rename from assets/img/flags/mc.svg rename to assets/img/svg/flags/mc.svg diff --git a/assets/img/flags/md.svg b/assets/img/svg/flags/md.svg similarity index 100% rename from assets/img/flags/md.svg rename to assets/img/svg/flags/md.svg diff --git a/assets/img/flags/me.svg b/assets/img/svg/flags/me.svg similarity index 100% rename from assets/img/flags/me.svg rename to assets/img/svg/flags/me.svg diff --git a/assets/img/flags/mf.svg b/assets/img/svg/flags/mf.svg similarity index 100% rename from assets/img/flags/mf.svg rename to assets/img/svg/flags/mf.svg diff --git a/assets/img/flags/mg.svg b/assets/img/svg/flags/mg.svg similarity index 100% rename from assets/img/flags/mg.svg rename to assets/img/svg/flags/mg.svg diff --git a/assets/img/flags/mh.svg b/assets/img/svg/flags/mh.svg similarity index 100% rename from assets/img/flags/mh.svg rename to assets/img/svg/flags/mh.svg diff --git a/assets/img/flags/mk.svg b/assets/img/svg/flags/mk.svg similarity index 100% rename from assets/img/flags/mk.svg rename to assets/img/svg/flags/mk.svg diff --git a/assets/img/flags/ml.svg b/assets/img/svg/flags/ml.svg similarity index 100% rename from assets/img/flags/ml.svg rename to assets/img/svg/flags/ml.svg diff --git a/assets/img/flags/mm.svg b/assets/img/svg/flags/mm.svg similarity index 100% rename from assets/img/flags/mm.svg rename to assets/img/svg/flags/mm.svg diff --git a/assets/img/flags/mn.svg b/assets/img/svg/flags/mn.svg similarity index 100% rename from assets/img/flags/mn.svg rename to assets/img/svg/flags/mn.svg diff --git a/assets/img/flags/mo.svg b/assets/img/svg/flags/mo.svg similarity index 100% rename from assets/img/flags/mo.svg rename to assets/img/svg/flags/mo.svg diff --git a/assets/img/flags/mp.svg b/assets/img/svg/flags/mp.svg similarity index 100% rename from assets/img/flags/mp.svg rename to assets/img/svg/flags/mp.svg diff --git a/assets/img/flags/mq.svg b/assets/img/svg/flags/mq.svg similarity index 100% rename from assets/img/flags/mq.svg rename to assets/img/svg/flags/mq.svg diff --git a/assets/img/flags/mr.svg b/assets/img/svg/flags/mr.svg similarity index 100% rename from assets/img/flags/mr.svg rename to assets/img/svg/flags/mr.svg diff --git a/assets/img/flags/ms.svg b/assets/img/svg/flags/ms.svg similarity index 100% rename from assets/img/flags/ms.svg rename to assets/img/svg/flags/ms.svg diff --git a/assets/img/flags/mt.svg b/assets/img/svg/flags/mt.svg similarity index 100% rename from assets/img/flags/mt.svg rename to assets/img/svg/flags/mt.svg diff --git a/assets/img/flags/mu.svg b/assets/img/svg/flags/mu.svg similarity index 100% rename from assets/img/flags/mu.svg rename to assets/img/svg/flags/mu.svg diff --git a/assets/img/flags/mv.svg b/assets/img/svg/flags/mv.svg similarity index 100% rename from assets/img/flags/mv.svg rename to assets/img/svg/flags/mv.svg diff --git a/assets/img/flags/mw.svg b/assets/img/svg/flags/mw.svg similarity index 100% rename from assets/img/flags/mw.svg rename to assets/img/svg/flags/mw.svg diff --git a/assets/img/flags/mx.svg b/assets/img/svg/flags/mx.svg similarity index 100% rename from assets/img/flags/mx.svg rename to assets/img/svg/flags/mx.svg diff --git a/assets/img/flags/my.svg b/assets/img/svg/flags/my.svg similarity index 100% rename from assets/img/flags/my.svg rename to assets/img/svg/flags/my.svg diff --git a/assets/img/flags/mz.svg b/assets/img/svg/flags/mz.svg similarity index 100% rename from assets/img/flags/mz.svg rename to assets/img/svg/flags/mz.svg diff --git a/assets/img/flags/na.svg b/assets/img/svg/flags/na.svg similarity index 100% rename from assets/img/flags/na.svg rename to assets/img/svg/flags/na.svg diff --git a/assets/img/flags/nc.svg b/assets/img/svg/flags/nc.svg similarity index 100% rename from assets/img/flags/nc.svg rename to assets/img/svg/flags/nc.svg diff --git a/assets/img/flags/ne.svg b/assets/img/svg/flags/ne.svg similarity index 100% rename from assets/img/flags/ne.svg rename to assets/img/svg/flags/ne.svg diff --git a/assets/img/flags/nf.svg b/assets/img/svg/flags/nf.svg similarity index 100% rename from assets/img/flags/nf.svg rename to assets/img/svg/flags/nf.svg diff --git a/assets/img/flags/ng.svg b/assets/img/svg/flags/ng.svg similarity index 100% rename from assets/img/flags/ng.svg rename to assets/img/svg/flags/ng.svg diff --git a/assets/img/flags/ni.svg b/assets/img/svg/flags/ni.svg similarity index 100% rename from assets/img/flags/ni.svg rename to assets/img/svg/flags/ni.svg diff --git a/assets/img/flags/nl.svg b/assets/img/svg/flags/nl.svg similarity index 100% rename from assets/img/flags/nl.svg rename to assets/img/svg/flags/nl.svg diff --git a/assets/img/flags/no.svg b/assets/img/svg/flags/no.svg similarity index 100% rename from assets/img/flags/no.svg rename to assets/img/svg/flags/no.svg diff --git a/assets/img/flags/np.svg b/assets/img/svg/flags/np.svg similarity index 100% rename from assets/img/flags/np.svg rename to assets/img/svg/flags/np.svg diff --git a/assets/img/flags/nr.svg b/assets/img/svg/flags/nr.svg similarity index 100% rename from assets/img/flags/nr.svg rename to assets/img/svg/flags/nr.svg diff --git a/assets/img/flags/nu.svg b/assets/img/svg/flags/nu.svg similarity index 100% rename from assets/img/flags/nu.svg rename to assets/img/svg/flags/nu.svg diff --git a/assets/img/flags/nz.svg b/assets/img/svg/flags/nz.svg similarity index 100% rename from assets/img/flags/nz.svg rename to assets/img/svg/flags/nz.svg diff --git a/assets/img/flags/om.svg b/assets/img/svg/flags/om.svg similarity index 100% rename from assets/img/flags/om.svg rename to assets/img/svg/flags/om.svg diff --git a/assets/img/flags/pa.svg b/assets/img/svg/flags/pa.svg similarity index 100% rename from assets/img/flags/pa.svg rename to assets/img/svg/flags/pa.svg diff --git a/assets/img/flags/pe.svg b/assets/img/svg/flags/pe.svg similarity index 100% rename from assets/img/flags/pe.svg rename to assets/img/svg/flags/pe.svg diff --git a/assets/img/flags/pf.svg b/assets/img/svg/flags/pf.svg similarity index 100% rename from assets/img/flags/pf.svg rename to assets/img/svg/flags/pf.svg diff --git a/assets/img/flags/pg.svg b/assets/img/svg/flags/pg.svg similarity index 100% rename from assets/img/flags/pg.svg rename to assets/img/svg/flags/pg.svg diff --git a/assets/img/flags/ph.svg b/assets/img/svg/flags/ph.svg similarity index 100% rename from assets/img/flags/ph.svg rename to assets/img/svg/flags/ph.svg diff --git a/assets/img/flags/pk.svg b/assets/img/svg/flags/pk.svg similarity index 100% rename from assets/img/flags/pk.svg rename to assets/img/svg/flags/pk.svg diff --git a/assets/img/flags/pl.svg b/assets/img/svg/flags/pl.svg similarity index 100% rename from assets/img/flags/pl.svg rename to assets/img/svg/flags/pl.svg diff --git a/assets/img/flags/pm.svg b/assets/img/svg/flags/pm.svg similarity index 100% rename from assets/img/flags/pm.svg rename to assets/img/svg/flags/pm.svg diff --git a/assets/img/flags/pn.svg b/assets/img/svg/flags/pn.svg similarity index 100% rename from assets/img/flags/pn.svg rename to assets/img/svg/flags/pn.svg diff --git a/assets/img/flags/pr.svg b/assets/img/svg/flags/pr.svg similarity index 100% rename from assets/img/flags/pr.svg rename to assets/img/svg/flags/pr.svg diff --git a/assets/img/flags/ps.svg b/assets/img/svg/flags/ps.svg similarity index 100% rename from assets/img/flags/ps.svg rename to assets/img/svg/flags/ps.svg diff --git a/assets/img/flags/pt.svg b/assets/img/svg/flags/pt.svg similarity index 100% rename from assets/img/flags/pt.svg rename to assets/img/svg/flags/pt.svg diff --git a/assets/img/flags/pw.svg b/assets/img/svg/flags/pw.svg similarity index 100% rename from assets/img/flags/pw.svg rename to assets/img/svg/flags/pw.svg diff --git a/assets/img/flags/py.svg b/assets/img/svg/flags/py.svg similarity index 100% rename from assets/img/flags/py.svg rename to assets/img/svg/flags/py.svg diff --git a/assets/img/flags/qa.svg b/assets/img/svg/flags/qa.svg similarity index 100% rename from assets/img/flags/qa.svg rename to assets/img/svg/flags/qa.svg diff --git a/assets/img/flags/re.svg b/assets/img/svg/flags/re.svg similarity index 100% rename from assets/img/flags/re.svg rename to assets/img/svg/flags/re.svg diff --git a/assets/img/flags/ro.svg b/assets/img/svg/flags/ro.svg similarity index 100% rename from assets/img/flags/ro.svg rename to assets/img/svg/flags/ro.svg diff --git a/assets/img/flags/rs.svg b/assets/img/svg/flags/rs.svg similarity index 100% rename from assets/img/flags/rs.svg rename to assets/img/svg/flags/rs.svg diff --git a/assets/img/flags/ru.svg b/assets/img/svg/flags/ru.svg similarity index 100% rename from assets/img/flags/ru.svg rename to assets/img/svg/flags/ru.svg diff --git a/assets/img/flags/rw.svg b/assets/img/svg/flags/rw.svg similarity index 100% rename from assets/img/flags/rw.svg rename to assets/img/svg/flags/rw.svg diff --git a/assets/img/flags/sa.svg b/assets/img/svg/flags/sa.svg similarity index 100% rename from assets/img/flags/sa.svg rename to assets/img/svg/flags/sa.svg diff --git a/assets/img/flags/sb.svg b/assets/img/svg/flags/sb.svg similarity index 100% rename from assets/img/flags/sb.svg rename to assets/img/svg/flags/sb.svg diff --git a/assets/img/flags/sc.svg b/assets/img/svg/flags/sc.svg similarity index 100% rename from assets/img/flags/sc.svg rename to assets/img/svg/flags/sc.svg diff --git a/assets/img/flags/sd.svg b/assets/img/svg/flags/sd.svg similarity index 100% rename from assets/img/flags/sd.svg rename to assets/img/svg/flags/sd.svg diff --git a/assets/img/flags/se.svg b/assets/img/svg/flags/se.svg similarity index 100% rename from assets/img/flags/se.svg rename to assets/img/svg/flags/se.svg diff --git a/assets/img/flags/sg.svg b/assets/img/svg/flags/sg.svg similarity index 100% rename from assets/img/flags/sg.svg rename to assets/img/svg/flags/sg.svg diff --git a/assets/img/flags/sh.svg b/assets/img/svg/flags/sh.svg similarity index 100% rename from assets/img/flags/sh.svg rename to assets/img/svg/flags/sh.svg diff --git a/assets/img/flags/si.svg b/assets/img/svg/flags/si.svg similarity index 100% rename from assets/img/flags/si.svg rename to assets/img/svg/flags/si.svg diff --git a/assets/img/flags/sj.svg b/assets/img/svg/flags/sj.svg similarity index 100% rename from assets/img/flags/sj.svg rename to assets/img/svg/flags/sj.svg diff --git a/assets/img/flags/sk.svg b/assets/img/svg/flags/sk.svg similarity index 100% rename from assets/img/flags/sk.svg rename to assets/img/svg/flags/sk.svg diff --git a/assets/img/flags/sl.svg b/assets/img/svg/flags/sl.svg similarity index 100% rename from assets/img/flags/sl.svg rename to assets/img/svg/flags/sl.svg diff --git a/assets/img/flags/sm.svg b/assets/img/svg/flags/sm.svg similarity index 100% rename from assets/img/flags/sm.svg rename to assets/img/svg/flags/sm.svg diff --git a/assets/img/flags/sn.svg b/assets/img/svg/flags/sn.svg similarity index 100% rename from assets/img/flags/sn.svg rename to assets/img/svg/flags/sn.svg diff --git a/assets/img/flags/so.svg b/assets/img/svg/flags/so.svg similarity index 100% rename from assets/img/flags/so.svg rename to assets/img/svg/flags/so.svg diff --git a/assets/img/flags/sr.svg b/assets/img/svg/flags/sr.svg similarity index 100% rename from assets/img/flags/sr.svg rename to assets/img/svg/flags/sr.svg diff --git a/assets/img/flags/ss.svg b/assets/img/svg/flags/ss.svg similarity index 100% rename from assets/img/flags/ss.svg rename to assets/img/svg/flags/ss.svg diff --git a/assets/img/flags/st.svg b/assets/img/svg/flags/st.svg similarity index 100% rename from assets/img/flags/st.svg rename to assets/img/svg/flags/st.svg diff --git a/assets/img/flags/sv.svg b/assets/img/svg/flags/sv.svg similarity index 100% rename from assets/img/flags/sv.svg rename to assets/img/svg/flags/sv.svg diff --git a/assets/img/flags/sx.svg b/assets/img/svg/flags/sx.svg similarity index 100% rename from assets/img/flags/sx.svg rename to assets/img/svg/flags/sx.svg diff --git a/assets/img/flags/sy.svg b/assets/img/svg/flags/sy.svg similarity index 100% rename from assets/img/flags/sy.svg rename to assets/img/svg/flags/sy.svg diff --git a/assets/img/flags/sz.svg b/assets/img/svg/flags/sz.svg similarity index 100% rename from assets/img/flags/sz.svg rename to assets/img/svg/flags/sz.svg diff --git a/assets/img/flags/tc.svg b/assets/img/svg/flags/tc.svg similarity index 100% rename from assets/img/flags/tc.svg rename to assets/img/svg/flags/tc.svg diff --git a/assets/img/flags/td.svg b/assets/img/svg/flags/td.svg similarity index 100% rename from assets/img/flags/td.svg rename to assets/img/svg/flags/td.svg diff --git a/assets/img/flags/tf.svg b/assets/img/svg/flags/tf.svg similarity index 100% rename from assets/img/flags/tf.svg rename to assets/img/svg/flags/tf.svg diff --git a/assets/img/flags/tg.svg b/assets/img/svg/flags/tg.svg similarity index 100% rename from assets/img/flags/tg.svg rename to assets/img/svg/flags/tg.svg diff --git a/assets/img/flags/th.svg b/assets/img/svg/flags/th.svg similarity index 100% rename from assets/img/flags/th.svg rename to assets/img/svg/flags/th.svg diff --git a/assets/img/flags/tj.svg b/assets/img/svg/flags/tj.svg similarity index 100% rename from assets/img/flags/tj.svg rename to assets/img/svg/flags/tj.svg diff --git a/assets/img/flags/tk.svg b/assets/img/svg/flags/tk.svg similarity index 100% rename from assets/img/flags/tk.svg rename to assets/img/svg/flags/tk.svg diff --git a/assets/img/flags/tl.svg b/assets/img/svg/flags/tl.svg similarity index 100% rename from assets/img/flags/tl.svg rename to assets/img/svg/flags/tl.svg diff --git a/assets/img/flags/tm.svg b/assets/img/svg/flags/tm.svg similarity index 100% rename from assets/img/flags/tm.svg rename to assets/img/svg/flags/tm.svg diff --git a/assets/img/flags/tn.svg b/assets/img/svg/flags/tn.svg similarity index 100% rename from assets/img/flags/tn.svg rename to assets/img/svg/flags/tn.svg diff --git a/assets/img/flags/to.svg b/assets/img/svg/flags/to.svg similarity index 100% rename from assets/img/flags/to.svg rename to assets/img/svg/flags/to.svg diff --git a/assets/img/flags/tr.svg b/assets/img/svg/flags/tr.svg similarity index 100% rename from assets/img/flags/tr.svg rename to assets/img/svg/flags/tr.svg diff --git a/assets/img/flags/tt.svg b/assets/img/svg/flags/tt.svg similarity index 100% rename from assets/img/flags/tt.svg rename to assets/img/svg/flags/tt.svg diff --git a/assets/img/flags/tv.svg b/assets/img/svg/flags/tv.svg similarity index 100% rename from assets/img/flags/tv.svg rename to assets/img/svg/flags/tv.svg diff --git a/assets/img/flags/tw.svg b/assets/img/svg/flags/tw.svg similarity index 100% rename from assets/img/flags/tw.svg rename to assets/img/svg/flags/tw.svg diff --git a/assets/img/flags/tz.svg b/assets/img/svg/flags/tz.svg similarity index 100% rename from assets/img/flags/tz.svg rename to assets/img/svg/flags/tz.svg diff --git a/assets/img/flags/ua.svg b/assets/img/svg/flags/ua.svg similarity index 100% rename from assets/img/flags/ua.svg rename to assets/img/svg/flags/ua.svg diff --git a/assets/img/flags/ug.svg b/assets/img/svg/flags/ug.svg similarity index 100% rename from assets/img/flags/ug.svg rename to assets/img/svg/flags/ug.svg diff --git a/assets/img/flags/um.svg b/assets/img/svg/flags/um.svg similarity index 100% rename from assets/img/flags/um.svg rename to assets/img/svg/flags/um.svg diff --git a/assets/img/flags/un.svg b/assets/img/svg/flags/un.svg similarity index 100% rename from assets/img/flags/un.svg rename to assets/img/svg/flags/un.svg diff --git a/assets/img/flags/us.svg b/assets/img/svg/flags/us.svg similarity index 100% rename from assets/img/flags/us.svg rename to assets/img/svg/flags/us.svg diff --git a/assets/img/flags/uy.svg b/assets/img/svg/flags/uy.svg similarity index 100% rename from assets/img/flags/uy.svg rename to assets/img/svg/flags/uy.svg diff --git a/assets/img/flags/uz.svg b/assets/img/svg/flags/uz.svg similarity index 100% rename from assets/img/flags/uz.svg rename to assets/img/svg/flags/uz.svg diff --git a/assets/img/flags/va.svg b/assets/img/svg/flags/va.svg similarity index 100% rename from assets/img/flags/va.svg rename to assets/img/svg/flags/va.svg diff --git a/assets/img/flags/vc.svg b/assets/img/svg/flags/vc.svg similarity index 100% rename from assets/img/flags/vc.svg rename to assets/img/svg/flags/vc.svg diff --git a/assets/img/flags/ve.svg b/assets/img/svg/flags/ve.svg similarity index 100% rename from assets/img/flags/ve.svg rename to assets/img/svg/flags/ve.svg diff --git a/assets/img/flags/vg.svg b/assets/img/svg/flags/vg.svg similarity index 100% rename from assets/img/flags/vg.svg rename to assets/img/svg/flags/vg.svg diff --git a/assets/img/flags/vi.svg b/assets/img/svg/flags/vi.svg similarity index 100% rename from assets/img/flags/vi.svg rename to assets/img/svg/flags/vi.svg diff --git a/assets/img/flags/vn.svg b/assets/img/svg/flags/vn.svg similarity index 100% rename from assets/img/flags/vn.svg rename to assets/img/svg/flags/vn.svg diff --git a/assets/img/flags/vu.svg b/assets/img/svg/flags/vu.svg similarity index 100% rename from assets/img/flags/vu.svg rename to assets/img/svg/flags/vu.svg diff --git a/assets/img/flags/wf.svg b/assets/img/svg/flags/wf.svg similarity index 100% rename from assets/img/flags/wf.svg rename to assets/img/svg/flags/wf.svg diff --git a/assets/img/flags/ws.svg b/assets/img/svg/flags/ws.svg similarity index 100% rename from assets/img/flags/ws.svg rename to assets/img/svg/flags/ws.svg diff --git a/assets/img/flags/ye.svg b/assets/img/svg/flags/ye.svg similarity index 100% rename from assets/img/flags/ye.svg rename to assets/img/svg/flags/ye.svg diff --git a/assets/img/flags/yt.svg b/assets/img/svg/flags/yt.svg similarity index 100% rename from assets/img/flags/yt.svg rename to assets/img/svg/flags/yt.svg diff --git a/assets/img/flags/za.svg b/assets/img/svg/flags/za.svg similarity index 100% rename from assets/img/flags/za.svg rename to assets/img/svg/flags/za.svg diff --git a/assets/img/flags/zm.svg b/assets/img/svg/flags/zm.svg similarity index 100% rename from assets/img/flags/zm.svg rename to assets/img/svg/flags/zm.svg diff --git a/assets/img/flags/zw.svg b/assets/img/svg/flags/zw.svg similarity index 100% rename from assets/img/flags/zw.svg rename to assets/img/svg/flags/zw.svg diff --git a/assets/img/flags/zz.svg b/assets/img/svg/flags/zz.svg similarity index 100% rename from assets/img/flags/zz.svg rename to assets/img/svg/flags/zz.svg diff --git a/assets/img/svg/layout/brand/horizontal.svg b/assets/img/svg/layout/brand/horizontal.svg new file mode 100644 index 00000000..40e0beb2 --- /dev/null +++ b/assets/img/svg/layout/brand/horizontal.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/layout/brand/square-transparent.svg b/assets/img/svg/layout/brand/square-transparent.svg new file mode 100644 index 00000000..f9abdd92 --- /dev/null +++ b/assets/img/svg/layout/brand/square-transparent.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/layout/brand/vertical.svg b/assets/img/svg/layout/brand/vertical.svg new file mode 100644 index 00000000..e1918230 --- /dev/null +++ b/assets/img/svg/layout/brand/vertical.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/layout/email.svg b/assets/img/svg/layout/email.svg new file mode 100644 index 00000000..916b87db --- /dev/null +++ b/assets/img/svg/layout/email.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/layout/great_seal_of_the_united_states_obverse.svg b/assets/img/svg/layout/great_seal_of_the_united_states_obverse.svg new file mode 100644 index 00000000..6a161f6d --- /dev/null +++ b/assets/img/svg/layout/great_seal_of_the_united_states_obverse.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/layout/ukusa.svg b/assets/img/svg/layout/ukusa.svg new file mode 100644 index 00000000..a2e26f7a --- /dev/null +++ b/assets/img/svg/layout/ukusa.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/layout/warrant_canary_example.svg b/assets/img/svg/layout/warrant_canary_example.svg new file mode 100644 index 00000000..c7d3de15 --- /dev/null +++ b/assets/img/svg/layout/warrant_canary_example.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/layout/windows_privacy.svg b/assets/img/svg/layout/windows_privacy.svg new file mode 100644 index 00000000..b7a6bb7f --- /dev/null +++ b/assets/img/svg/layout/windows_privacy.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/qr/bch.svg b/assets/img/svg/qr/bch.svg new file mode 100644 index 00000000..24cfb7d2 --- /dev/null +++ b/assets/img/svg/qr/bch.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/qr/btc.svg b/assets/img/svg/qr/btc.svg new file mode 100644 index 00000000..be0c84b1 --- /dev/null +++ b/assets/img/svg/qr/btc.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/qr/eth.svg b/assets/img/svg/qr/eth.svg new file mode 100644 index 00000000..8ebab869 --- /dev/null +++ b/assets/img/svg/qr/eth.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/qr/ltc.svg b/assets/img/svg/qr/ltc.svg new file mode 100644 index 00000000..d7574615 --- /dev/null +++ b/assets/img/svg/qr/ltc.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/qr/xlm.svg b/assets/img/svg/qr/xlm.svg new file mode 100644 index 00000000..fabdfd35 --- /dev/null +++ b/assets/img/svg/qr/xlm.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/qr/xmr.svg b/assets/img/svg/qr/xmr.svg new file mode 100644 index 00000000..652e4e9e --- /dev/null +++ b/assets/img/svg/qr/xmr.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/svg/qr/zec.svg b/assets/img/svg/qr/zec.svg new file mode 100644 index 00000000..627c7ddc --- /dev/null +++ b/assets/img/svg/qr/zec.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/img/tools/Bitcoin.png b/assets/img/tools/Bitcoin.png deleted file mode 100644 index dda5a44e..00000000 Binary files a/assets/img/tools/Bitcoin.png and /dev/null differ diff --git a/assets/img/tools/Bitmessage.png b/assets/img/tools/Bitmessage.png deleted file mode 100644 index c9de56c9..00000000 Binary files a/assets/img/tools/Bitmessage.png and /dev/null differ diff --git a/assets/img/tools/Claws-Mail.png b/assets/img/tools/Claws-Mail.png deleted file mode 100644 index 11b6cfd3..00000000 Binary files a/assets/img/tools/Claws-Mail.png and /dev/null differ diff --git a/assets/img/tools/DNSCrypt-Proxy.png b/assets/img/tools/DNSCrypt-Proxy.png deleted file mode 100644 index ce6a09fc..00000000 Binary files a/assets/img/tools/DNSCrypt-Proxy.png and /dev/null differ diff --git a/assets/img/tools/Debian.png b/assets/img/tools/Debian.png deleted file mode 100644 index be496b8b..00000000 Binary files a/assets/img/tools/Debian.png and /dev/null differ diff --git a/assets/img/tools/Etherpad-dark.png b/assets/img/tools/Etherpad-dark.png deleted file mode 100644 index a3ad00d0..00000000 Binary files a/assets/img/tools/Etherpad-dark.png and /dev/null differ diff --git a/assets/img/tools/Etherpad.png b/assets/img/tools/Etherpad.png deleted file mode 100644 index 350701ec..00000000 Binary files a/assets/img/tools/Etherpad.png and /dev/null differ diff --git a/assets/img/tools/F-Droid.png b/assets/img/tools/F-Droid.png deleted file mode 100644 index 6454798c..00000000 Binary files a/assets/img/tools/F-Droid.png and /dev/null differ diff --git a/assets/img/tools/Fedora.png b/assets/img/tools/Fedora.png deleted file mode 100644 index 52065868..00000000 Binary files a/assets/img/tools/Fedora.png and /dev/null differ diff --git a/assets/img/tools/Firefox-Send.png b/assets/img/tools/Firefox-Send.png deleted file mode 100644 index e5e11152..00000000 Binary files a/assets/img/tools/Firefox-Send.png and /dev/null differ diff --git a/assets/img/tools/Firefox.png b/assets/img/tools/Firefox.png deleted file mode 100644 index 66a20aaa..00000000 Binary files a/assets/img/tools/Firefox.png and /dev/null differ diff --git a/assets/img/tools/Freenet.png b/assets/img/tools/Freenet.png deleted file mode 100644 index 5f25de59..00000000 Binary files a/assets/img/tools/Freenet.png and /dev/null differ diff --git a/assets/img/tools/Friendica.png b/assets/img/tools/Friendica.png deleted file mode 100644 index 2edb93f2..00000000 Binary files a/assets/img/tools/Friendica.png and /dev/null differ diff --git a/assets/img/tools/GnuPG.png b/assets/img/tools/GnuPG.png deleted file mode 100644 index 1dc2b869..00000000 Binary files a/assets/img/tools/GnuPG.png and /dev/null differ diff --git a/assets/img/tools/GrapheneOS-dark.png b/assets/img/tools/GrapheneOS-dark.png deleted file mode 100644 index e378783f..00000000 Binary files a/assets/img/tools/GrapheneOS-dark.png and /dev/null differ diff --git a/assets/img/tools/GrapheneOS.png b/assets/img/tools/GrapheneOS.png deleted file mode 100644 index 42aa1f8d..00000000 Binary files a/assets/img/tools/GrapheneOS.png and /dev/null differ diff --git a/assets/img/tools/I2P.png b/assets/img/tools/I2P.png deleted file mode 100644 index b586f653..00000000 Binary files a/assets/img/tools/I2P.png and /dev/null differ diff --git a/assets/img/tools/Joplin.png b/assets/img/tools/Joplin.png deleted file mode 100644 index 0278f349..00000000 Binary files a/assets/img/tools/Joplin.png and /dev/null differ diff --git a/assets/img/tools/KNOPPIX.png b/assets/img/tools/KNOPPIX.png deleted file mode 100644 index 2d97e21d..00000000 Binary files a/assets/img/tools/KNOPPIX.png and /dev/null differ diff --git a/assets/img/tools/LessPass.png b/assets/img/tools/LessPass.png deleted file mode 100644 index 6d295304..00000000 Binary files a/assets/img/tools/LessPass.png and /dev/null differ diff --git a/assets/img/tools/LibreCMC.png b/assets/img/tools/LibreCMC.png deleted file mode 100644 index bef5467e..00000000 Binary files a/assets/img/tools/LibreCMC.png and /dev/null differ diff --git a/assets/img/tools/LineageOS.png b/assets/img/tools/LineageOS.png deleted file mode 100644 index c978c9e3..00000000 Binary files a/assets/img/tools/LineageOS.png and /dev/null differ diff --git a/assets/img/tools/Linphone.png b/assets/img/tools/Linphone.png deleted file mode 100644 index 995a6e52..00000000 Binary files a/assets/img/tools/Linphone.png and /dev/null differ diff --git a/assets/img/tools/MAT2.png b/assets/img/tools/MAT2.png deleted file mode 100644 index 060e00a6..00000000 Binary files a/assets/img/tools/MAT2.png and /dev/null differ diff --git a/assets/img/tools/Magic-Wormhole.png b/assets/img/tools/Magic-Wormhole.png deleted file mode 100644 index 3c11b5b1..00000000 Binary files a/assets/img/tools/Magic-Wormhole.png and /dev/null differ diff --git a/assets/img/tools/Master-Password.jpg b/assets/img/tools/Master-Password.jpg deleted file mode 100644 index 76518a8a..00000000 Binary files a/assets/img/tools/Master-Password.jpg and /dev/null differ diff --git a/assets/img/tools/Mastodon.png b/assets/img/tools/Mastodon.png deleted file mode 100644 index 45476eae..00000000 Binary files a/assets/img/tools/Mastodon.png and /dev/null differ diff --git a/assets/img/tools/Mumble.png b/assets/img/tools/Mumble.png deleted file mode 100644 index a8967387..00000000 Binary files a/assets/img/tools/Mumble.png and /dev/null differ diff --git a/assets/img/tools/OnionShare.png b/assets/img/tools/OnionShare.png deleted file mode 100644 index 29747408..00000000 Binary files a/assets/img/tools/OnionShare.png and /dev/null differ diff --git a/assets/img/tools/OpenNIC.png b/assets/img/tools/OpenNIC.png deleted file mode 100644 index 32850d06..00000000 Binary files a/assets/img/tools/OpenNIC.png and /dev/null differ diff --git a/assets/img/tools/OpenWrt.png b/assets/img/tools/OpenWrt.png deleted file mode 100644 index 4f2ce2b2..00000000 Binary files a/assets/img/tools/OpenWrt.png and /dev/null differ diff --git a/assets/img/tools/PeaZip.png b/assets/img/tools/PeaZip.png deleted file mode 100644 index 4a147e31..00000000 Binary files a/assets/img/tools/PeaZip.png and /dev/null differ diff --git a/assets/img/tools/PrivateBin.png b/assets/img/tools/PrivateBin.png deleted file mode 100644 index df1b0caf..00000000 Binary files a/assets/img/tools/PrivateBin.png and /dev/null differ diff --git a/assets/img/tools/Puppy-Linux.png b/assets/img/tools/Puppy-Linux.png deleted file mode 100644 index 0e6f5f5f..00000000 Binary files a/assets/img/tools/Puppy-Linux.png and /dev/null differ diff --git a/assets/img/tools/Qubes-OS.png b/assets/img/tools/Qubes-OS.png deleted file mode 100644 index 27718c6e..00000000 Binary files a/assets/img/tools/Qubes-OS.png and /dev/null differ diff --git a/assets/img/tools/RetroShare.png b/assets/img/tools/RetroShare.png deleted file mode 100644 index 8fc2ebf2..00000000 Binary files a/assets/img/tools/RetroShare.png and /dev/null differ diff --git a/assets/img/tools/Riot.png b/assets/img/tools/Riot.png deleted file mode 100644 index f576b780..00000000 Binary files a/assets/img/tools/Riot.png and /dev/null differ diff --git a/assets/img/tools/Signal.png b/assets/img/tools/Signal.png deleted file mode 100644 index ae3ed8dd..00000000 Binary files a/assets/img/tools/Signal.png and /dev/null differ diff --git a/assets/img/tools/SparkleShare.png b/assets/img/tools/SparkleShare.png deleted file mode 100644 index 2e94b6a5..00000000 Binary files a/assets/img/tools/SparkleShare.png and /dev/null differ diff --git a/assets/img/tools/StandardNotes.png b/assets/img/tools/StandardNotes.png deleted file mode 100644 index 8e6f6e59..00000000 Binary files a/assets/img/tools/StandardNotes.png and /dev/null differ diff --git a/assets/img/tools/Syncthing.png b/assets/img/tools/Syncthing.png deleted file mode 100644 index 117e9630..00000000 Binary files a/assets/img/tools/Syncthing.png and /dev/null differ diff --git a/assets/img/tools/Tahoe-LAFS-dark.png b/assets/img/tools/Tahoe-LAFS-dark.png deleted file mode 100644 index e7e77480..00000000 Binary files a/assets/img/tools/Tahoe-LAFS-dark.png and /dev/null differ diff --git a/assets/img/tools/Tahoe-LAFS.png b/assets/img/tools/Tahoe-LAFS.png deleted file mode 100644 index 8da91dce..00000000 Binary files a/assets/img/tools/Tahoe-LAFS.png and /dev/null differ diff --git a/assets/img/tools/Tails.png b/assets/img/tools/Tails.png deleted file mode 100644 index cad6a3cc..00000000 Binary files a/assets/img/tools/Tails.png and /dev/null differ diff --git a/assets/img/tools/Thunderbird.png b/assets/img/tools/Thunderbird.png deleted file mode 100644 index 0eb13f64..00000000 Binary files a/assets/img/tools/Thunderbird.png and /dev/null differ diff --git a/assets/img/tools/Tor-Browser.png b/assets/img/tools/Tor-Browser.png deleted file mode 100644 index 617e800b..00000000 Binary files a/assets/img/tools/Tor-Browser.png and /dev/null differ diff --git a/assets/img/tools/Tor-Project.png b/assets/img/tools/Tor-Project.png deleted file mode 100644 index 2409e50d..00000000 Binary files a/assets/img/tools/Tor-Project.png and /dev/null differ diff --git a/assets/img/tools/Turtl.png b/assets/img/tools/Turtl.png deleted file mode 100644 index beccd0d0..00000000 Binary files a/assets/img/tools/Turtl.png and /dev/null differ diff --git a/assets/img/tools/Ubuntu-Touch.png b/assets/img/tools/Ubuntu-Touch.png deleted file mode 100644 index 9e94d17e..00000000 Binary files a/assets/img/tools/Ubuntu-Touch.png and /dev/null differ diff --git a/assets/img/tools/VeraCrypt.png b/assets/img/tools/VeraCrypt.png deleted file mode 100644 index d6eb6e46..00000000 Binary files a/assets/img/tools/VeraCrypt.png and /dev/null differ diff --git a/assets/img/tools/WriteAs-dark.png b/assets/img/tools/WriteAs-dark.png deleted file mode 100644 index 39e1f044..00000000 Binary files a/assets/img/tools/WriteAs-dark.png and /dev/null differ diff --git a/assets/img/tools/WriteAs.png b/assets/img/tools/WriteAs.png deleted file mode 100644 index 309b87ff..00000000 Binary files a/assets/img/tools/WriteAs.png and /dev/null differ diff --git a/assets/img/tools/ZeroBin.png b/assets/img/tools/ZeroBin.png deleted file mode 100644 index e5944ac0..00000000 Binary files a/assets/img/tools/ZeroBin.png and /dev/null differ diff --git a/assets/img/tools/aether.png b/assets/img/tools/aether.png deleted file mode 100644 index 186d70af..00000000 Binary files a/assets/img/tools/aether.png and /dev/null differ diff --git a/assets/img/tools/bitwarden.png b/assets/img/tools/bitwarden.png deleted file mode 100644 index 035dcb19..00000000 Binary files a/assets/img/tools/bitwarden.png and /dev/null differ diff --git a/assets/img/tools/bromite.png b/assets/img/tools/bromite.png deleted file mode 100644 index 44fb027a..00000000 Binary files a/assets/img/tools/bromite.png and /dev/null differ diff --git a/assets/img/tools/diaspora.png b/assets/img/tools/diaspora.png deleted file mode 100644 index 7da5e8b5..00000000 Binary files a/assets/img/tools/diaspora.png and /dev/null differ diff --git a/assets/img/tools/keepassxc.png b/assets/img/tools/keepassxc.png deleted file mode 100644 index c3cfaa9c..00000000 Binary files a/assets/img/tools/keepassxc.png and /dev/null differ diff --git a/assets/img/tools/keybase.png b/assets/img/tools/keybase.png deleted file mode 100644 index b45ebfb0..00000000 Binary files a/assets/img/tools/keybase.png and /dev/null differ diff --git a/assets/img/tools/onionbrowser.png b/assets/img/tools/onionbrowser.png deleted file mode 100644 index 36756449..00000000 Binary files a/assets/img/tools/onionbrowser.png and /dev/null differ diff --git a/assets/img/tools/pfSense.png b/assets/img/tools/pfSense.png deleted file mode 100644 index b0707896..00000000 Binary files a/assets/img/tools/pfSense.png and /dev/null differ diff --git a/assets/img/tools/raddle.png b/assets/img/tools/raddle.png deleted file mode 100644 index e0385594..00000000 Binary files a/assets/img/tools/raddle.png and /dev/null differ diff --git a/assets/img/tools/rocket.chat.png b/assets/img/tools/rocket.chat.png deleted file mode 100644 index 8577007f..00000000 Binary files a/assets/img/tools/rocket.chat.png and /dev/null differ diff --git a/assets/img/tools/tildes.png b/assets/img/tools/tildes.png deleted file mode 100644 index cd8c870c..00000000 Binary files a/assets/img/tools/tildes.png and /dev/null differ diff --git a/assets/img/tools/wire.png b/assets/img/tools/wire.png deleted file mode 100644 index abae18c8..00000000 Binary files a/assets/img/tools/wire.png and /dev/null differ diff --git a/assets/js/bootstrap.min.js b/assets/js/bootstrap.min.js index d030ffb3..1bca7633 100644 --- a/assets/js/bootstrap.min.js +++ b/assets/js/bootstrap.min.js @@ -1,6 +1,6 @@ /*! - * Bootstrap v4.1.3 (https://getbootstrap.com/) - * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * Bootstrap v5.0.0-beta1 (https://getbootstrap.com/) + * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","popper.js"],e):e(t.bootstrap={},t.jQuery,t.Popper)}(this,function(t,e,h){"use strict";function i(t,e){for(var n=0;nthis._items.length-1||t<0))if(this._isSliding)P(this._element).one(Q.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=ndocument.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},t._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right
    ',trigger:"hover focus",title:"",delay:0,html:!(Ie={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"}),selector:!(Se={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)"}),placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent"},we="out",Ne={HIDE:"hide"+Ee,HIDDEN:"hidden"+Ee,SHOW:(De="show")+Ee,SHOWN:"shown"+Ee,INSERTED:"inserted"+Ee,CLICK:"click"+Ee,FOCUSIN:"focusin"+Ee,FOCUSOUT:"focusout"+Ee,MOUSEENTER:"mouseenter"+Ee,MOUSELEAVE:"mouseleave"+Ee},Oe="fade",ke="show",Pe=".tooltip-inner",je=".arrow",He="hover",Le="focus",Re="click",xe="manual",We=function(){function i(t,e){if("undefined"==typeof h)throw new TypeError("Bootstrap tooltips require Popper.js (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=pe(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),pe(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(pe(this.getTipElement()).hasClass(ke))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),pe.removeData(this.element,this.constructor.DATA_KEY),pe(this.element).off(this.constructor.EVENT_KEY),pe(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&pe(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if("none"===pe(this.element).css("display"))throw new Error("Please use show on visible elements");var t=pe.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){pe(this.element).trigger(t);var n=pe.contains(this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!n)return;var i=this.getTipElement(),r=Fn.getUID(this.constructor.NAME);i.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&pe(i).addClass(Oe);var o="function"==typeof this.config.placement?this.config.placement.call(this,i,this.element):this.config.placement,s=this._getAttachment(o);this.addAttachmentClass(s);var a=!1===this.config.container?document.body:pe(document).find(this.config.container);pe(i).data(this.constructor.DATA_KEY,this),pe.contains(this.element.ownerDocument.documentElement,this.tip)||pe(i).appendTo(a),pe(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new h(this.element,i,{placement:s,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:je},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){e._handlePopperPlacementChange(t)}}),pe(i).addClass(ke),"ontouchstart"in document.documentElement&&pe(document.body).children().on("mouseover",null,pe.noop);var l=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,pe(e.element).trigger(e.constructor.Event.SHOWN),t===we&&e._leave(null,e)};if(pe(this.tip).hasClass(Oe)){var c=Fn.getTransitionDurationFromElement(this.tip);pe(this.tip).one(Fn.TRANSITION_END,l).emulateTransitionEnd(c)}else l()}},t.hide=function(t){var e=this,n=this.getTipElement(),i=pe.Event(this.constructor.Event.HIDE),r=function(){e._hoverState!==De&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),pe(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(pe(this.element).trigger(i),!i.isDefaultPrevented()){if(pe(n).removeClass(ke),"ontouchstart"in document.documentElement&&pe(document.body).children().off("mouseover",null,pe.noop),this._activeTrigger[Re]=!1,this._activeTrigger[Le]=!1,this._activeTrigger[He]=!1,pe(this.tip).hasClass(Oe)){var o=Fn.getTransitionDurationFromElement(n);pe(n).one(Fn.TRANSITION_END,r).emulateTransitionEnd(o)}else r();this._hoverState=""}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){pe(this.getTipElement()).addClass(Te+"-"+t)},t.getTipElement=function(){return this.tip=this.tip||pe(this.config.template)[0],this.tip},t.setContent=function(){var t=this.getTipElement();this.setElementContent(pe(t.querySelectorAll(Pe)),this.getTitle()),pe(t).removeClass(Oe+" "+ke)},t.setElementContent=function(t,e){var n=this.config.html;"object"==typeof e&&(e.nodeType||e.jquery)?n?pe(e).parent().is(t)||t.empty().append(e):t.text(pe(e).text()):t[n?"html":"text"](e)},t.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},t._getAttachment=function(t){return Ie[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(t){if("click"===t)pe(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==xe){var e=t===He?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===He?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;pe(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}pe(i.element).closest(".modal").on("hide.bs.modal",function(){return i.hide()})}),this.config.selector?this.config=l({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||pe(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),pe(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Le:He]=!0),pe(e.getTipElement()).hasClass(ke)||e._hoverState===De?e._hoverState=De:(clearTimeout(e._timeout),e._hoverState=De,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===De&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||pe(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),pe(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Le:He]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=we,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===we&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){return"number"==typeof(t=l({},this.constructor.Default,pe(this.element).data(),"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),Fn.typeCheckConfig(ve,t,this.constructor.DefaultType),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=pe(this.getTipElement()),e=t.attr("class").match(be);null!==e&&e.length&&t.removeClass(e.join(""))},t._handlePopperPlacementChange=function(t){var e=t.instance;this.tip=e.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(pe(t).removeClass(Oe),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=pe(this).data(ye),e="object"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),pe(this).data(ye,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.1.3"}},{key:"Default",get:function(){return Ae}},{key:"NAME",get:function(){return ve}},{key:"DATA_KEY",get:function(){return ye}},{key:"Event",get:function(){return Ne}},{key:"EVENT_KEY",get:function(){return Ee}},{key:"DefaultType",get:function(){return Se}}]),i}(),pe.fn[ve]=We._jQueryInterface,pe.fn[ve].Constructor=We,pe.fn[ve].noConflict=function(){return pe.fn[ve]=Ce,We._jQueryInterface},We),Jn=(qe="popover",Ke="."+(Fe="bs.popover"),Me=(Ue=e).fn[qe],Qe="bs-popover",Be=new RegExp("(^|\\s)"+Qe+"\\S+","g"),Ve=l({},zn.Default,{placement:"right",trigger:"click",content:"",template:''}),Ye=l({},zn.DefaultType,{content:"(string|element|function)"}),ze="fade",Ze=".popover-header",Ge=".popover-body",$e={HIDE:"hide"+Ke,HIDDEN:"hidden"+Ke,SHOW:(Je="show")+Ke,SHOWN:"shown"+Ke,INSERTED:"inserted"+Ke,CLICK:"click"+Ke,FOCUSIN:"focusin"+Ke,FOCUSOUT:"focusout"+Ke,MOUSEENTER:"mouseenter"+Ke,MOUSELEAVE:"mouseleave"+Ke},Xe=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var r=i.prototype;return r.isWithContent=function(){return this.getTitle()||this._getContent()},r.addAttachmentClass=function(t){Ue(this.getTipElement()).addClass(Qe+"-"+t)},r.getTipElement=function(){return this.tip=this.tip||Ue(this.config.template)[0],this.tip},r.setContent=function(){var t=Ue(this.getTipElement());this.setElementContent(t.find(Ze),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(Ge),e),t.removeClass(ze+" "+Je)},r._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},r._cleanTipClass=function(){var t=Ue(this.getTipElement()),e=t.attr("class").match(Be);null!==e&&0=this._offsets[r]&&("undefined"==typeof this._offsets[r+1]||t0,i._pointerEvent=Boolean(window.PointerEvent),i._addEventListeners(),i}r(e,t);var n=e.prototype;return n.next=function(){this._isSliding||this._slide("next")},n.nextWhenVisible=function(){!document.hidden&&v(this._element)&&this.next()},n.prev=function(){this._isSliding||this._slide("prev")},n.pause=function(t){t||(this._isPaused=!0),V.findOne(".carousel-item-next, .carousel-item-prev",this._element)&&(p(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},n.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},n.to=function(t){var e=this;this._activeElement=V.findOne(".active.carousel-item",this._element);var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)Q.one(this._element,"slid.bs.carousel",(function(){return e.to(t)}));else{if(n===t)return this.pause(),void this.cycle();var i=t>n?"next":"prev";this._slide(i,this._items[t])}},n.dispose=function(){t.prototype.dispose.call(this),Q.off(this._element,G),this._items=null,this._config=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},n._getConfig=function(t){return t=s({},Z,t),_($,t,J),t},n._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;this.touchDeltaX=0,e>0&&this.prev(),e<0&&this.next()}},n._addEventListeners=function(){var t=this;this._config.keyboard&&Q.on(this._element,"keydown.bs.carousel",(function(e){return t._keydown(e)})),"hover"===this._config.pause&&(Q.on(this._element,"mouseenter.bs.carousel",(function(e){return t.pause(e)})),Q.on(this._element,"mouseleave.bs.carousel",(function(e){return t.cycle(e)}))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()},n._addTouchEventListeners=function(){var t=this,e=function(e){t._pointerEvent&&tt[e.pointerType.toUpperCase()]?t.touchStartX=e.clientX:t._pointerEvent||(t.touchStartX=e.touches[0].clientX)},n=function(e){t._pointerEvent&&tt[e.pointerType.toUpperCase()]&&(t.touchDeltaX=e.clientX-t.touchStartX),t._handleSwipe(),"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout((function(e){return t.cycle(e)}),500+t._config.interval))};V.find(".carousel-item img",this._element).forEach((function(t){Q.on(t,"dragstart.bs.carousel",(function(t){return t.preventDefault()}))})),this._pointerEvent?(Q.on(this._element,"pointerdown.bs.carousel",(function(t){return e(t)})),Q.on(this._element,"pointerup.bs.carousel",(function(t){return n(t)})),this._element.classList.add("pointer-event")):(Q.on(this._element,"touchstart.bs.carousel",(function(t){return e(t)})),Q.on(this._element,"touchmove.bs.carousel",(function(e){return function(e){e.touches&&e.touches.length>1?t.touchDeltaX=0:t.touchDeltaX=e.touches[0].clientX-t.touchStartX}(e)})),Q.on(this._element,"touchend.bs.carousel",(function(t){return n(t)})))},n._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.key){case"ArrowLeft":t.preventDefault(),this.prev();break;case"ArrowRight":t.preventDefault(),this.next()}},n._getItemIndex=function(t){return this._items=t&&t.parentNode?V.find(".carousel-item",t.parentNode):[],this._items.indexOf(t)},n._getItemByDirection=function(t,e){var n="next"===t,i="prev"===t,o=this._getItemIndex(e),s=this._items.length-1;if((i&&0===o||n&&o===s)&&!this._config.wrap)return e;var r=(o+("prev"===t?-1:1))%this._items.length;return-1===r?this._items[this._items.length-1]:this._items[r]},n._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(V.findOne(".active.carousel-item",this._element));return Q.trigger(this._element,"slide.bs.carousel",{relatedTarget:t,direction:e,from:i,to:n})},n._setActiveIndicatorElement=function(t){if(this._indicatorsElement){for(var e=V.find(".active",this._indicatorsElement),n=0;n0)for(var i=0;i0&&s--,"ArrowDown"===t.key&&sdocument.documentElement.clientHeight;e||(this._element.style.overflowY="hidden"),this._element.classList.add("modal-static");var n=h(this._dialog);Q.off(this._element,"transitionend"),Q.one(this._element,"transitionend",(function(){t._element.classList.remove("modal-static"),e||(Q.one(t._element,"transitionend",(function(){t._element.style.overflowY=""})),m(t._element,n))})),m(this._element,n),this._element.focus()}},n._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;(!this._isBodyOverflowing&&t&&!T||this._isBodyOverflowing&&!t&&T)&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),(this._isBodyOverflowing&&!t&&!T||!this._isBodyOverflowing&&t&&T)&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},n._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},n._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(t.left+t.right)
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",container:!1,fallbackPlacements:null,boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:Tt,popperConfig:null},Ot={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},It=function(e){function i(t,i){var o;if(void 0===n)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");return(o=e.call(this,t)||this)._isEnabled=!0,o._timeout=0,o._hoverState="",o._activeTrigger={},o._popper=null,o.config=o._getConfig(i),o.tip=null,o._setListeners(),o}r(i,e);var a=i.prototype;return a.enable=function(){this._isEnabled=!0},a.disable=function(){this._isEnabled=!1},a.toggleEnabled=function(){this._isEnabled=!this._isEnabled},a.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=L(t.delegateTarget,e);n||(n=new this.constructor(t.delegateTarget,this._getDelegateConfig()),A(t.delegateTarget,e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(this.getTipElement().classList.contains("show"))return void this._leave(null,this);this._enter(null,this)}},a.dispose=function(){clearTimeout(this._timeout),Q.off(this._element,this.constructor.EVENT_KEY),Q.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.parentNode.removeChild(this.tip),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.config=null,this.tip=null,e.prototype.dispose.call(this)},a.show=function(){var e=this;if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(this.isWithContent()&&this._isEnabled){var n=Q.trigger(this._element,this.constructor.Event.SHOW),i=function t(e){if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){var n=e.getRootNode();return n instanceof ShadowRoot?n:null}return e instanceof ShadowRoot?e:e.parentNode?t(e.parentNode):null}(this._element),o=null===i?this._element.ownerDocument.documentElement.contains(this._element):i.contains(this._element);if(n.defaultPrevented||!o)return;var s=this.getTipElement(),r=c(this.constructor.NAME);s.setAttribute("id",r),this._element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&s.classList.add("fade");var a="function"==typeof this.config.placement?this.config.placement.call(this,s,this._element):this.config.placement,l=this._getAttachment(a);this._addAttachmentClass(l);var u=this._getContainer();A(s,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||u.appendChild(s),Q.trigger(this._element,this.constructor.Event.INSERTED),this._popper=t.createPopper(this._element,s,this._getPopperConfig(l)),s.classList.add("show");var d,f,p="function"==typeof this.config.customClass?this.config.customClass():this.config.customClass;if(p)(d=s.classList).add.apply(d,p.split(" "));if("ontouchstart"in document.documentElement)(f=[]).concat.apply(f,document.body.children).forEach((function(t){Q.on(t,"mouseover",(function(){}))}));var g=function(){var t=e._hoverState;e._hoverState=null,Q.trigger(e._element,e.constructor.Event.SHOWN),"out"===t&&e._leave(null,e)};if(this.tip.classList.contains("fade")){var _=h(this.tip);Q.one(this.tip,"transitionend",g),m(this.tip,_)}else g()}},a.hide=function(){var t=this;if(this._popper){var e=this.getTipElement(),n=function(){"show"!==t._hoverState&&e.parentNode&&e.parentNode.removeChild(e),t._cleanTipClass(),t._element.removeAttribute("aria-describedby"),Q.trigger(t._element,t.constructor.Event.HIDDEN),t._popper&&(t._popper.destroy(),t._popper=null)};if(!Q.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented){var i;if(e.classList.remove("show"),"ontouchstart"in document.documentElement)(i=[]).concat.apply(i,document.body.children).forEach((function(t){return Q.off(t,"mouseover",b)}));if(this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this.tip.classList.contains("fade")){var o=h(e);Q.one(e,"transitionend",n),m(e,o)}else n();this._hoverState=""}}},a.update=function(){null!==this._popper&&this._popper.update()},a.isWithContent=function(){return Boolean(this.getTitle())},a.getTipElement=function(){if(this.tip)return this.tip;var t=document.createElement("div");return t.innerHTML=this.config.template,this.tip=t.children[0],this.tip},a.setContent=function(){var t=this.getTipElement();this.setElementContent(V.findOne(".tooltip-inner",t),this.getTitle()),t.classList.remove("fade","show")},a.setElementContent=function(t,e){if(null!==t)return"object"==typeof e&&g(e)?(e.jquery&&(e=e[0]),void(this.config.html?e.parentNode!==t&&(t.innerHTML="",t.appendChild(e)):t.textContent=e.textContent)):void(this.config.html?(this.config.sanitize&&(e=kt(e,this.config.allowList,this.config.sanitizeFn)),t.innerHTML=e):t.textContent=e)},a.getTitle=function(){var t=this._element.getAttribute("data-bs-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this._element):this.config.title),t},a.updateAttachment=function(t){return"right"===t?"end":"left"===t?"start":t},a._getPopperConfig=function(t){var e=this,n={name:"flip",options:{altBoundary:!0}};return this.config.fallbackPlacements&&(n.options.fallbackPlacements=this.config.fallbackPlacements),s({},{placement:t,modifiers:[n,{name:"preventOverflow",options:{rootBoundary:this.config.boundary}},{name:"arrow",options:{element:"."+this.constructor.NAME+"-arrow"}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:function(t){return e._handlePopperPlacementChange(t)}}],onFirstUpdate:function(t){t.options.placement!==t.placement&&e._handlePopperPlacementChange(t)}},this.config.popperConfig)},a._addAttachmentClass=function(t){this.getTipElement().classList.add("bs-tooltip-"+this.updateAttachment(t))},a._getContainer=function(){return!1===this.config.container?document.body:g(this.config.container)?this.config.container:V.findOne(this.config.container)},a._getAttachment=function(t){return St[t.toUpperCase()]},a._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(e){if("click"===e)Q.on(t._element,t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if("manual"!==e){var n="hover"===e?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,i="hover"===e?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;Q.on(t._element,n,t.config.selector,(function(e){return t._enter(e)})),Q.on(t._element,i,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t._element&&t.hide()},Q.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=s({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},a._fixTitle=function(){var t=this._element.getAttribute("title"),e=typeof this._element.getAttribute("data-bs-original-title");(t||"string"!==e)&&(this._element.setAttribute("data-bs-original-title",t||""),!t||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",t),this._element.setAttribute("title",""))},a._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||L(t.delegateTarget,n))||(e=new this.constructor(t.delegateTarget,this._getDelegateConfig()),A(t.delegateTarget,n,e)),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),e.getTipElement().classList.contains("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e.config.delay&&e.config.delay.show?e._timeout=setTimeout((function(){"show"===e._hoverState&&e.show()}),e.config.delay.show):e.show())},a._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||L(t.delegateTarget,n))||(e=new this.constructor(t.delegateTarget,this._getDelegateConfig()),A(t.delegateTarget,n,e)),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e.config.delay&&e.config.delay.hide?e._timeout=setTimeout((function(){"out"===e._hoverState&&e.hide()}),e.config.delay.hide):e.hide())},a._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},a._getConfig=function(t){var e=q.getDataAttributes(this._element);return Object.keys(e).forEach((function(t){Ct.has(t)&&delete e[t]})),t&&"object"==typeof t.container&&t.container.jquery&&(t.container=t.container[0]),"number"==typeof(t=s({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),_(At,t,this.constructor.DefaultType),t.sanitize&&(t.template=kt(t.template,t.allowList,t.sanitizeFn)),t},a._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},a._cleanTipClass=function(){var t=this.getTipElement(),e=t.getAttribute("class").match(Lt);null!==e&&e.length>0&&e.map((function(t){return t.trim()})).forEach((function(e){return t.classList.remove(e)}))},a._handlePopperPlacementChange=function(t){var e=t.state;e&&(this.tip=e.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(e.placement)))},i.jQueryInterface=function(t){return this.each((function(){var e=L(this,"bs.tooltip"),n="object"==typeof t&&t;if((e||!/dispose|hide/.test(t))&&(e||(e=new i(this,n)),"string"==typeof t)){if(void 0===e[t])throw new TypeError('No method named "'+t+'"');e[t]()}}))},o(i,null,[{key:"Default",get:function(){return Nt}},{key:"NAME",get:function(){return At}},{key:"DATA_KEY",get:function(){return"bs.tooltip"}},{key:"Event",get:function(){return Ot}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return Dt}}]),i}(U);E((function(){var t=w();if(t){var e=t.fn[At];t.fn[At]=It.jQueryInterface,t.fn[At].Constructor=It,t.fn[At].noConflict=function(){return t.fn[At]=e,It.jQueryInterface}}}));var jt="popover",Pt=new RegExp("(^|\\s)bs-popover\\S+","g"),xt=s({},It.Default,{placement:"right",trigger:"click",content:"",template:''}),Ht=s({},It.DefaultType,{content:"(string|element|function)"}),Bt={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},Mt=function(t){function e(){return t.apply(this,arguments)||this}r(e,t);var n=e.prototype;return n.isWithContent=function(){return this.getTitle()||this._getContent()},n.setContent=function(){var t=this.getTipElement();this.setElementContent(V.findOne(".popover-header",t),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this._element)),this.setElementContent(V.findOne(".popover-body",t),e),t.classList.remove("fade","show")},n._addAttachmentClass=function(t){this.getTipElement().classList.add("bs-popover-"+this.updateAttachment(t))},n._getContent=function(){return this._element.getAttribute("data-bs-content")||this.config.content},n._cleanTipClass=function(){var t=this.getTipElement(),e=t.getAttribute("class").match(Pt);null!==e&&e.length>0&&e.map((function(t){return t.trim()})).forEach((function(e){return t.classList.remove(e)}))},e.jQueryInterface=function(t){return this.each((function(){var n=L(this,"bs.popover"),i="object"==typeof t?t:null;if((n||!/dispose|hide/.test(t))&&(n||(n=new e(this,i),A(this,"bs.popover",n)),"string"==typeof t)){if(void 0===n[t])throw new TypeError('No method named "'+t+'"');n[t]()}}))},o(e,null,[{key:"Default",get:function(){return xt}},{key:"NAME",get:function(){return jt}},{key:"DATA_KEY",get:function(){return"bs.popover"}},{key:"Event",get:function(){return Bt}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return Ht}}]),e}(It);E((function(){var t=w();if(t){var e=t.fn[jt];t.fn[jt]=Mt.jQueryInterface,t.fn[jt].Constructor=Mt,t.fn[jt].noConflict=function(){return t.fn[jt]=e,Mt.jQueryInterface}}}));var Rt="scrollspy",Kt={offset:10,method:"auto",target:""},Qt={offset:"number",method:"string",target:"(string|element)"},Ut=function(t){function e(e,n){var i;return(i=t.call(this,e)||this)._scrollElement="BODY"===e.tagName?window:e,i._config=i._getConfig(n),i._selector=i._config.target+" .nav-link, "+i._config.target+" .list-group-item, "+i._config.target+" .dropdown-item",i._offsets=[],i._targets=[],i._activeTarget=null,i._scrollHeight=0,Q.on(i._scrollElement,"scroll.bs.scrollspy",(function(t){return i._process(t)})),i.refresh(),i._process(),i}r(e,t);var n=e.prototype;return n.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?"offset":"position",n="auto"===this._config.method?e:this._config.method,i="position"===n?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),V.find(this._selector).map((function(t){var e=d(t),o=e?V.findOne(e):null;if(o){var s=o.getBoundingClientRect();if(s.width||s.height)return[q[n](o).top+i,e]}return null})).filter((function(t){return t})).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},n.dispose=function(){t.prototype.dispose.call(this),Q.off(this._scrollElement,".bs.scrollspy"),this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},n._getConfig=function(t){if("string"!=typeof(t=s({},Kt,"object"==typeof t&&t?t:{})).target&&g(t.target)){var e=t.target.id;e||(e=c(Rt),t.target.id=e),t.target="#"+e}return _(Rt,t,Qt),t},n._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},n._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},n._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},n._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&(void 0===this._offsets[o+1]||t li > .active":".active";e=(e=V.find(o,i))[e.length-1]}var s=null;if(e&&(s=Q.trigger(e,"hide.bs.tab",{relatedTarget:this._element})),!(Q.trigger(this._element,"show.bs.tab",{relatedTarget:e}).defaultPrevented||null!==s&&s.defaultPrevented)){this._activate(this._element,i);var r=function(){Q.trigger(e,"hidden.bs.tab",{relatedTarget:t._element}),Q.trigger(t._element,"shown.bs.tab",{relatedTarget:e})};n?this._activate(n,n.parentNode,r):r()}}},n._activate=function(t,e,n){var i=this,o=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?V.children(e,".active"):V.find(":scope > li > .active",e))[0],s=n&&o&&o.classList.contains("fade"),r=function(){return i._transitionComplete(t,o,n)};if(o&&s){var a=h(o);o.classList.remove("show"),Q.one(o,"transitionend",r),m(o,a)}else r()},n._transitionComplete=function(t,e,n){if(e){e.classList.remove("active");var i=V.findOne(":scope > .dropdown-menu .active",e.parentNode);i&&i.classList.remove("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}(t.classList.add("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),y(t),t.classList.contains("fade")&&t.classList.add("show"),t.parentNode&&t.parentNode.classList.contains("dropdown-menu"))&&(t.closest(".dropdown")&&V.find(".dropdown-toggle").forEach((function(t){return t.classList.add("active")})),t.setAttribute("aria-expanded",!0));n&&n()},e.jQueryInterface=function(t){return this.each((function(){var n=L(this,"bs.tab")||new e(this);if("string"==typeof t){if(void 0===n[t])throw new TypeError('No method named "'+t+'"');n[t]()}}))},o(e,null,[{key:"DATA_KEY",get:function(){return"bs.tab"}}]),e}(U);Q.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',(function(t){t.preventDefault(),(L(this,"bs.tab")||new Wt(this)).show()})),E((function(){var t=w();if(t){var e=t.fn.tab;t.fn.tab=Wt.jQueryInterface,t.fn.tab.Constructor=Wt,t.fn.tab.noConflict=function(){return t.fn.tab=e,Wt.jQueryInterface}}}));var Ft={animation:"boolean",autohide:"boolean",delay:"number"},Yt={animation:!0,autohide:!0,delay:5e3},zt=function(t){function e(e,n){var i;return(i=t.call(this,e)||this)._config=i._getConfig(n),i._timeout=null,i._setListeners(),i}r(e,t);var n=e.prototype;return n.show=function(){var t=this;if(!Q.trigger(this._element,"show.bs.toast").defaultPrevented){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var e=function(){t._element.classList.remove("showing"),t._element.classList.add("show"),Q.trigger(t._element,"shown.bs.toast"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove("hide"),y(this._element),this._element.classList.add("showing"),this._config.animation){var n=h(this._element);Q.one(this._element,"transitionend",e),m(this._element,n)}else e()}},n.hide=function(){var t=this;if(this._element.classList.contains("show")&&!Q.trigger(this._element,"hide.bs.toast").defaultPrevented){var e=function(){t._element.classList.add("hide"),Q.trigger(t._element,"hidden.bs.toast")};if(this._element.classList.remove("show"),this._config.animation){var n=h(this._element);Q.one(this._element,"transitionend",e),m(this._element,n)}else e()}},n.dispose=function(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),Q.off(this._element,"click.dismiss.bs.toast"),t.prototype.dispose.call(this),this._config=null},n._getConfig=function(t){return t=s({},Yt,q.getDataAttributes(this._element),"object"==typeof t&&t?t:{}),_("toast",t,this.constructor.DefaultType),t},n._setListeners=function(){var t=this;Q.on(this._element,"click.dismiss.bs.toast",'[data-bs-dismiss="toast"]',(function(){return t.hide()}))},n._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},e.jQueryInterface=function(t){return this.each((function(){var n=L(this,"bs.toast");if(n||(n=new e(this,"object"==typeof t&&t)),"string"==typeof t){if(void 0===n[t])throw new TypeError('No method named "'+t+'"');n[t](this)}}))},o(e,null,[{key:"DefaultType",get:function(){return Ft}},{key:"Default",get:function(){return Yt}},{key:"DATA_KEY",get:function(){return"bs.toast"}}]),e}(U);return E((function(){var t=w();if(t){var e=t.fn.toast;t.fn.toast=zt.jQueryInterface,t.fn.toast.Constructor=zt,t.fn.toast.noConflict=function(){return t.fn.toast=e,zt.jQueryInterface}}})),{Alert:F,Button:Y,Carousel:et,Collapse:st,Dropdown:mt,Modal:bt,Popover:Mt,ScrollSpy:Ut,Tab:Wt,Toast:zt,Tooltip:It}})); diff --git a/assets/js/jquery-3.3.1.min.js b/assets/js/jquery-3.3.1.min.js deleted file mode 100644 index 4d9b3a25..00000000 --- a/assets/js/jquery-3.3.1.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w(" - - - -
-
-

ptio-font contains 8 glyphs:

- Toggle Preview Characters -
- - -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - -
-
- - - -
- - diff --git a/assets/webfonts/ptio-font.eot b/assets/webfonts/ptio-font.eot index 2b2a7cc7..c0fd15e4 100644 Binary files a/assets/webfonts/ptio-font.eot and b/assets/webfonts/ptio-font.eot differ diff --git a/assets/webfonts/ptio-font.svg b/assets/webfonts/ptio-font.svg index 08bd533d..8e812895 100644 --- a/assets/webfonts/ptio-font.svg +++ b/assets/webfonts/ptio-font.svg @@ -1,11 +1,11 @@ -Created by FontForge 20190801 at Sun Sep 22 19:49:38 2019 +Created by FontForge 20190801 at Wed Nov 6 20:45:23 2019 By Dawid Potocki @@ -19,10 +19,10 @@ Created by FontForge 20190801 at Sun Sep 22 19:49:38 2019 panose-1="2 0 5 3 0 0 0 0 0 0" ascent="448" descent="-64" - bbox="-0.00195312 -64.0039 512.014 448" + bbox="-0.00195312 -64.0049 512.014 448" underline-thickness="25.6" underline-position="-51.2" - unicode-range="U+0020-F107" + unicode-range="U+0020-F10C" /> + + diff --git a/assets/webfonts/ptio-font.ttf b/assets/webfonts/ptio-font.ttf index d98ed112..06ccba79 100644 Binary files a/assets/webfonts/ptio-font.ttf and b/assets/webfonts/ptio-font.ttf differ diff --git a/assets/webfonts/ptio-font.woff b/assets/webfonts/ptio-font.woff index 9bb11561..8310d2f5 100644 Binary files a/assets/webfonts/ptio-font.woff and b/assets/webfonts/ptio-font.woff differ diff --git a/assets/webfonts/ptio-font.woff2 b/assets/webfonts/ptio-font.woff2 index 8bb1990a..03f91b94 100644 Binary files a/assets/webfonts/ptio-font.woff2 and b/assets/webfonts/ptio-font.woff2 differ diff --git a/font/README.md b/font/README.md index 769b1312..d5b2c0bf 100644 --- a/font/README.md +++ b/font/README.md @@ -10,6 +10,7 @@ This font contains icons we need, which Font Awesome does not have. | OpenBSD | `ptio-openbsd` | https://github.com/FortAwesome/Font-Awesome/issues/5345 | | NetBSD | `ptio-netbsd` | https://github.com/FortAwesome/Font-Awesome/issues/15496 | | Sailfish OS | `ptio-sailfish-os` | https://github.com/FortAwesome/Font-Awesome/issues/15498 | +| I2P | `ptio-i2p-garlic` | https://github.com/FortAwesome/Font-Awesome/issues/15772 | We also have custom Linux icon (`ptio-linux`), because I (@dawidpotocki) made it before and looks cleaner. And since we are bundling additional font anyway, why not. diff --git a/font/svg/i2p-garlic.svg b/font/svg/i2p-garlic.svg new file mode 100644 index 00000000..2d83cb33 --- /dev/null +++ b/font/svg/i2p-garlic.svg @@ -0,0 +1,2 @@ + + diff --git a/font/svg/tor.svg b/font/svg/tor.svg new file mode 100644 index 00000000..b372ffde --- /dev/null +++ b/font/svg/tor.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/index.html b/index.html index f72aa4d9..10ad264b 100644 --- a/index.html +++ b/index.html @@ -5,11 +5,15 @@ layout: default {% include sections/header.html %} {% include sections/resources.html %} -

Sponsors

-