git: 5bab21c20a58 - main - www/tor-browser: Update to 13.01
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 09 Nov 2023 19:39:26 UTC
The branch main has been updated by jsm:
URL: https://cgit.FreeBSD.org/ports/commit/?id=5bab21c20a580787a9906f4012743287141878d8
commit 5bab21c20a580787a9906f4012743287141878d8
Author: Jesper Schmitz Mouridsen <jsm@FreeBSD.org>
AuthorDate: 2023-11-09 19:16:52 +0000
Commit: Jesper Schmitz Mouridsen <jsm@FreeBSD.org>
CommitDate: 2023-11-09 19:39:10 +0000
www/tor-browser: Update to 13.01
Include locales upfront, the LOCAL/jsm l10n distfile is made
by a tor-browser-build of project l10n-firefox.
The tpo/translations do not keep tags so two files per locale
are out of sync with the linux release.
PR: 273416
PR: 272477
Tested by: Martin Filla freebsd@sysctl.cz,rene@
Approved by: freebsd@sysctl.cz (maintainer)
---
www/tor-browser/Makefile | 65 +-
www/tor-browser/distinfo | 14 +-
www/tor-browser/files/packagemanual.py | 69 +
www/tor-browser/files/patch-addon-search | 24 +-
.../files/patch-browser-app-nsBrowserApp.cpp | 14 +-
www/tor-browser/files/patch-browser-base-jar.mn | 227 +
.../patch-browser_app_profile_000-tor-browser.js | 16 +-
www/tor-browser/files/patch-bug1427152 | 10 +
www/tor-browser/files/patch-bug1504834_comment5 | 10 +-
www/tor-browser/files/patch-bug1504834_comment9 | 49 -
www/tor-browser/files/patch-bug1559213 | 39 +-
www/tor-browser/files/patch-bug1626236 | 40 +-
www/tor-browser/files/patch-bug1628567 | 4 +-
www/tor-browser/files/patch-bug1640982 | 17 -
www/tor-browser/files/patch-bug1659612 | 22 +-
www/tor-browser/files/patch-bug1664115 | 82 -
www/tor-browser/files/patch-bug1729459_comment12 | 93 -
www/tor-browser/files/patch-bug847568 | 10 +-
.../files/patch-gfx_skia_skia_src_base_SkEndian.h | 11 +
...patch-gfx_skia_skia_src_core_SkRasterPipeline.h | 11 +
.../files/patch-i386-protobuf-alignment | 15 +
www/tor-browser/files/patch-js_public_Utility.h | 35 +
www/tor-browser/files/patch-libwebrtc-generate | 159 -
www/tor-browser/files/patch-libwebrtc-generated | 50556 ++++++++++++++-----
www/tor-browser/files/patch-libwebrtc-powerpc64 | 264 +
.../files/patch-memory_mozalloc_throw__gcc.h | 2 +-
.../files/patch-modules_fdlibm_src_math__private.h | 27 +
www/tor-browser/files/patch-pipewire_init | 67 +-
...patch-python_mozbuild_mozbuild_gn__processor.py | 21 +-
www/tor-browser/files/patch-rust-1.70.0 | 33 -
www/tor-browser/files/patch-rust-1.73.0 | 83 -
...rd__party_libwebrtc_build_config_BUILDCONFIG.gn | 37 +
...third__party_libwebrtc_rtc__base_ip__address.cc | 23 +
...lkit_components_tor-launcher_TorProcess_sys_mjs | 26 +
...t_compononents_tor-launcher_TorLauncherUtil.jsm | 20 -
...oolkit_compononents_tor-launcher_TorProcess.jsm | 22 -
.../files/patch-toolkit_torbutton_jar.mn | 80 +
.../files/patch-toolkit_xre_glxtest.cpp | 17 +
.../files/patch-toolkit_xre_nsXREDirPRovider.cpp | 14 -
39 files changed, 39157 insertions(+), 13171 deletions(-)
diff --git a/www/tor-browser/Makefile b/www/tor-browser/Makefile
index 3ed152b2da2f..b2af395fb18d 100644
--- a/www/tor-browser/Makefile
+++ b/www/tor-browser/Makefile
@@ -1,11 +1,14 @@
PORTNAME= tor-browser
-DISTVERSION= 12.0.6
-PORTREVISION= 6
+DISTVERSION= 13.0.1
CATEGORIES= www net security wayland
-MASTER_SITES= TOR
-MASTER_SITE_SUBDIR=torbrowser/${DISTVERSION}
-DISTNAME= src-firefox-tor-browser-102.11.0esr-${DISTVERSION:R}-1-build1
-
+MASTER_SITES= TOR \
+ https://build-sources.tbb.torproject.org/:source1 \
+ LOCAL/jsm:source2
+MASTER_SITE_SUBDIR= torbrowser/${DISTVERSION}
+DISTNAME= src-firefox-tor-browser-115.4.0esr-13.0-1-build2
+DISTFILES= ${DISTNAME}.tar.xz \
+ manual_112141.zip:source1 \
+ firefox-tor-browser-13.0.1-build2-firefox-1l0n-out.tar:source2
MAINTAINER= freebsd@sysctl.cz
COMMENT= Tor Browser for FreeBSD
WWW= https://www.torproject.org/
@@ -25,11 +28,16 @@ BUILD_DEPENDS= nspr>=4.32:devel/nspr \
nasm:devel/nasm \
yasm:devel/yasm \
zip:archivers/zip
+USE_GITLAB=nodefault
+GL_SITE= https://gitlab.torproject.org/
+GL_ACCOUNT= tpo
+GL_PROJECT= translation:basebrowser translation:torbrowser
+GL_TAGNAME= 3faf7dcd545109f7bbd8a6374838e139ca422d6c:basebrowser 51bc08246d73990d461f747fb3c8cc7b6f66c1f4:torbrowser
RUN_DEPENDS= tor:security/tor \
obfs4proxy:security/obfs4proxy-tor
USES= compiler:c++11-lib libtool \
- perl5 pkgconfig python shebangfix localbase:ldflags tar:xz
+ perl5 pkgconfig python shebangfix localbase:ldflags tar:xz python:3
USE_GECKO= gecko
SSP_UNSAFE= yes
@@ -38,17 +46,19 @@ SUB_FILES= torrc-defaults tor-browser.desktop
BUNDLE_LIBS= yes
USE_MOZILLA= -sqlite
+MOZILLA_VER=115.4.0
CFLAGS_powerpc64le= -DSQLITE_BYTEORDER=1234
CONFIGURE_ENV+= BINDGEN_CFLAGS="-I${LOCALBASE}/include" \
- MOZ_BRANDING_DIRECTORY="browser/branding/official"
-
+ MOZ_CHROME_MULTILOCALE="ar ca cs da de el es-ES fa fi fr ga-IE he hu id is it ja ka ko lt mk ms my nb-NO nl pl pt-BR ro ru sq sv-SE th tr uk vi zh-CN zh-TW en-US"
+MAKE_ENV+= AB_CD="multi" \
+ LOCALES="ar ca cs da de el es-ES fa fi fr ga-IE he hu id is it ja ka ko lt mk ms my nb-NO nl pl pt-BR ro ru sq sv-SE th tr uk vi zh-CN zh-TW en-US"
MOZ_EXPORT+= MOZ_TELEMETRY_REPORTING="" \
MOZILLA_OFFICIAL="1" \
MOZ_OFFICIAL_BRANDING="1" \
MOZ_APP_DISPLAYNAME="Tor Browser" \
- MOZ_APP_NAME="tor-browser"
-
-MOZ_OPTIONS= --with-tor-browser-version=${DISTVERSION}-1 \
+ MOZ_APP_NAME="tor-browser" \
+ MOZ_CHROME_MULTILOCALE="ar ca cs da de el es-ES fa fi fr ga-IE he hu id is it ja ka ko lt mk ms my nb-NO nl pl pt-BR ro ru sq sv-SE th tr uk vi zh-CN zh-TW en-US"
+MOZ_OPTIONS= --with-base-browser-version=${DISTVERSION} \
--enable-official-branding \
--enable-optimize \
--enable-bundled-fonts \
@@ -60,12 +70,11 @@ MOZ_OPTIONS= --with-tor-browser-version=${DISTVERSION}-1 \
--enable-proxy-bypass-protection \
--disable-system-policies \
--disable-backgroundtasks \
- --enable-base-browser \
- --enable-verify-mar \
- --with-distribution-id=org.torproject
+ --with-distribution-id=org.torproject \
+ --with-branding=browser/branding/tb-release
WRKSRC= ${WRKDIR}/${DISTNAME:S/src-//}
-
+SHEBANG_FILES+= mach
.include "${.CURDIR}/../../www/firefox/Makefile.options"
.include <bsd.port.options.mk>
@@ -83,11 +92,29 @@ MOZ_OPTIONS+= --with-wasi-sysroot=${LOCALBASE}/share/wasi-sysroot
.endif
post-patch:
@${REINPLACE_CMD} 's|LOCALBASE|${LOCALBASE}|g' "${WRKSRC}/browser/app/profile/000-tor-browser.js"
+ ${MKDIR} ${WRKSRC}/tmp-manual
+ unzip -d ${WRKSRC}/tmp-manual ${DISTDIR}/manual_112141.zip
+ ${MKDIR} ${WRKSRC}/tmp-l10n-central
+ tar -C ${WRKSRC}/tmp-l10n-central -xf ${DISTDIR}/firefox-tor-browser-13.0.1-build2-firefox-1l0n-out.tar
pre-configure:
- (cd ${WRKSRC} && ${LOCALBASE}/bin/autoconf2.13)
- (cd ${WRKSRC}/js/src/ && ${LOCALBASE}/bin/autoconf2.13)
@${REINPLACE_CMD} 's|export MOZ_GOOGLE_.*||g' ${WRKSRC}/.mozconfig
- @${REINPLACE_CMD} 's|ac_add_options --enable-update-channel=release||g' ${WRKSRC}/.mozconfig
+ ${PYTHON_CMD} ${FILESDIR}/packagemanual.py ${WRKSRC}/tmp-manual/public ${WRKSRC}/browser/base/content/manual
+post-build:
+ ${MKDIR} -p ${WRKSRC}/../.mozbuild/l10n-central
+ find ${WRKSRC}/tmp-l10n-central -name "*.tar.xz" -exec tar -C ${WRKSRC}/../.mozbuild/l10n-central -xvf {} \;
+ cd ${WRKSRC}/../.build/ && MOZBUILD_STATE_PATH=${WRKSRC}/../.mozbuild MOZ_AUTOMATION="1" ${WRKSRC}/mach package-multi-locale --locales ar ca cs da de el es-ES fa fi fr ga-IE he hu id is it ja ka ko lt mk ms my nb-NO nl pl pt-BR ro ru sq sv-SE th tr uk vi zh-CN zh-TW
+.for i in ar ca cs da de el es-ES fa fi fr ga-IE he hu id is it ja ka ko lt mk ms my nb-NO nl pl pt-BR ro ru sq sv-SE th tr uk vi zh-CN zh-TW
+ ${CP} ${WRKDIR}/translation-3faf7dcd545109f7bbd8a6374838e139ca422d6c/${i}/base-browser.ftl ${WRKDIR}/.build/dist/bin/browser/localization/${i}/browser/base-browser.ftl
+ ${CP} ${WRKDIR}/translation-3faf7dcd545109f7bbd8a6374838e139ca422d6c/${i}/newIdentity.properties ${WRKDIR}/.build/dist/bin/browser/chrome/${i}/locale/browser/newIdentity.properties
+ ${CP} ${WRKDIR}/translation-3faf7dcd545109f7bbd8a6374838e139ca422d6c/${i}/securityLevel.properties ${WRKDIR}/.build/dist/bin/browser/chrome/${i}/locale/browser/securityLevel.properties
+ ${MKDIR} ${WRKDIR}/.build/dist/bin/chrome/torbutton/locale/${i}/browser
+ test -f ${WRKDIR}/translation-51bc08246d73990d461f747fb3c8cc7b6f66c1f4/${i}/tor-browser.ftl && ${CP} ${WRKDIR}/translation-51bc08246d73990d461f747fb3c8cc7b6f66c1f4/${i}/tor-browser.ftl ${WRKDIR}/.build/dist/bin/browser/localization/${i}/browser/tor-browser.ftl
+ ${CP} ${WRKDIR}/translation-51bc08246d73990d461f747fb3c8cc7b6f66c1f4/${i}/cryptoSafetyPrompt.properties ${WRKDIR}/.build/dist/bin/browser/chrome/${i}/locale/browser/cryptoSafetyPrompt.properties
+.for j in brand.dtd aboutDialog.dtd aboutTBUpdate.dtd torbutton.dtd onboarding.properties brand.properties torlauncher.properties branding/brand.ftl rulesets.properties settings.properties torConnect.properties onionLocation.properties aboutTor.dtd torbutton.properties browserOnboarding.properties
+ ${MKDIR} ${WRKDIR}/.build/dist/bin/chrome/torbutton/locale/${i}/branding
+ ${CP} ${WRKDIR}/translation-51bc08246d73990d461f747fb3c8cc7b6f66c1f4/${i}/${j} ${WRKDIR}/.build/dist/bin/chrome/torbutton/locale/${i}/${j}
+.endfor
+.endfor
post-install:
@${MKDIR} ${STAGEDIR}${DATADIR}
${INSTALL_DATA} ${WRKDIR}/torrc-defaults ${STAGEDIR}${DATADIR}/torrc-defaults
diff --git a/www/tor-browser/distinfo b/www/tor-browser/distinfo
index c8c74a3398cc..dc004626122e 100644
--- a/www/tor-browser/distinfo
+++ b/www/tor-browser/distinfo
@@ -1,3 +1,11 @@
-TIMESTAMP = 1684065683
-SHA256 (src-firefox-tor-browser-102.11.0esr-12.0-1-build1.tar.xz) = 9b64d00e9bb5ad63f005e8f950800ab3a12f75f214c55f900d88df26bce1ba5d
-SIZE (src-firefox-tor-browser-102.11.0esr-12.0-1-build1.tar.xz) = 511957244
+TIMESTAMP = 1699195800
+SHA256 (src-firefox-tor-browser-115.4.0esr-13.0-1-build2.tar.xz) = 7b8d90c9d5ac0cc527da5e8170893e6c5af0f7ad924cfcde9a7ebfbdf3f2e486
+SIZE (src-firefox-tor-browser-115.4.0esr-13.0-1-build2.tar.xz) = 544811340
+SHA256 (manual_112141.zip) = f767bc5f655f1263623b7af588cfb045d3e41ee019dc7ecd713decc5c1a0ea9b
+SIZE (manual_112141.zip) = 26293073
+SHA256 (firefox-tor-browser-13.0.1-build2-firefox-1l0n-out.tar) = bbd290cd134e3a114241077ba82582617ab6c5117ff2226381943c504bd09775
+SIZE (firefox-tor-browser-13.0.1-build2-firefox-1l0n-out.tar) = 18848768
+SHA256 (tpo-translation-3faf7dcd545109f7bbd8a6374838e139ca422d6c_GL0.tar.gz) = e6fdc79f74d2c438a44e5ffb6404e3d64bab879cf146e88a170ccdcef3596d9b
+SIZE (tpo-translation-3faf7dcd545109f7bbd8a6374838e139ca422d6c_GL0.tar.gz) = 108057
+SHA256 (tpo-translation-51bc08246d73990d461f747fb3c8cc7b6f66c1f4_GL0.tar.gz) = a57dd8210d347ca69f5731cd768862673d692c0a5a3364f411cc5fa1fb88c98e
+SIZE (tpo-translation-51bc08246d73990d461f747fb3c8cc7b6f66c1f4_GL0.tar.gz) = 1059523
diff --git a/www/tor-browser/files/packagemanual.py b/www/tor-browser/files/packagemanual.py
new file mode 100644
index 000000000000..7af51046aa30
--- /dev/null
+++ b/www/tor-browser/files/packagemanual.py
@@ -0,0 +1,69 @@
+#!/usr/bin/env python3
+from pathlib import Path
+import re
+import sys
+import shutil
+
+
+PAGE_NAME = 'offline-docs'
+STATIC_PATH = 'chrome://browser/content/manual/static'
+
+if len(sys.argv) < 3:
+ print(f'Usage: {sys.argv[0]} lektor-out-directory target-directory')
+ sys.exit(1)
+
+source = Path(sys.argv[1])
+target = Path(sys.argv[2])
+if not target.exists():
+ target.mkdir(exist_ok=True)
+
+static_re = re.compile('"(?:../)*static/([^"]+)"')
+link_re = re.compile('href="../([^"]+)"')
+
+
+def clean_urls(match):
+ m = re.match(r'(?:../)?([^/#]+)[/]?[#]?(.*)', match.group(1))
+ slug = m.group(1)
+ if m.group(2):
+ anchor = '_' + m.group(2)
+ else:
+ anchor = ''
+ return f'href="#{slug}{anchor}"'
+
+
+remove_images = []
+for p in (source / 'static/images').glob('**/*'):
+ if p.is_file():
+ rel = p.relative_to(source)
+ remove_images.append(rel)
+
+htmls = source.rglob(f'{PAGE_NAME}/index.html')
+for page in htmls:
+ with page.open(encoding='utf8') as f:
+ contents = f.read()
+
+ remove_images = list(filter(
+ lambda im: contents.find(str(im)) == -1, remove_images))
+
+ contents = static_re.sub(f'"{STATIC_PATH}/\\1"', contents)
+ contents = link_re.sub(clean_urls, contents)
+
+ rel = page.relative_to(source)
+ dest_name = str(list(rel.parents)[-2].name)
+ if dest_name == PAGE_NAME:
+ dest_name = 'en'
+ dest_name += '.html'
+ with (target / dest_name).open('w', encoding='utf8') as f:
+ f.write(contents)
+
+
+def ignore_images(path, names):
+ return [
+ n
+ for n in names
+ if Path(path, n).relative_to(source) in remove_images
+ ]
+
+
+shutil.rmtree(target / 'static', ignore_errors=True)
+shutil.copytree(source / 'static', target / 'static', ignore=ignore_images)
diff --git a/www/tor-browser/files/patch-addon-search b/www/tor-browser/files/patch-addon-search
index f405eab2aab1..b6dbf7924b43 100644
--- a/www/tor-browser/files/patch-addon-search
+++ b/www/tor-browser/files/patch-addon-search
@@ -2,7 +2,7 @@ https://github.com/mozilla/addons/issues/708
https://github.com/mozilla/addons-frontend/issues/4610
diff --git browser/app/profile/firefox.js browser/app/profile/firefox.js
-index af08811..77a3b18 100644
+index 621900f90fc1..401ef9074bd0 100644
--- browser/app/profile/firefox.js
+++ browser/app/profile/firefox.js
@@ -38,7 +38,7 @@ pref("extensions.postDownloadThirdPartyPrompt", true);
@@ -14,7 +14,7 @@ index af08811..77a3b18 100644
pref("extensions.getAddons.link.url", "https://addons.mozilla.org/%LOCALE%/firefox/");
pref("extensions.getAddons.langpacks.url", "https://services.addons.mozilla.org/api/v4/addons/language-tools/?app=firefox&type=language&appversion=%VERSION%");
pref("extensions.getAddons.discovery.api_url", "https://services.addons.mozilla.org/api/v4/discovery/?lang=%LOCALE%&edition=%DISTRIBUTION%");
-@@ -193,8 +193,8 @@ pref("app.update.langpack.enabled", true);
+@@ -204,8 +204,8 @@ pref("app.update.langpack.enabled", true);
// .. etc ..
//
pref("extensions.update.enabled", true);
@@ -25,24 +25,24 @@ index af08811..77a3b18 100644
pref("extensions.update.interval", 86400); // Check for updates to Extensions and
// Themes every day
-diff --git toolkit/mozapps/extensions/internal/AddonRepository.jsm toolkit/mozapps/extensions/internal/AddonRepository.jsm
-index 661c902..a41b32f 100644
---- toolkit/mozapps/extensions/internal/AddonRepository.jsm
-+++ toolkit/mozapps/extensions/internal/AddonRepository.jsm
-@@ -592,7 +592,7 @@ var AddonRepository = {
+diff --git toolkit/mozapps/extensions/internal/AddonRepository.sys.mjs toolkit/mozapps/extensions/internal/AddonRepository.sys.mjs
+index f906f244b658..7bb2eb6697c6 100644
+--- toolkit/mozapps/extensions/internal/AddonRepository.sys.mjs
++++ toolkit/mozapps/extensions/internal/AddonRepository.sys.mjs
+@@ -596,7 +596,7 @@ export var AddonRepository = {
addon.version = String(aEntry.current_version.version);
if (Array.isArray(aEntry.current_version.files)) {
for (let file of aEntry.current_version.files) {
-- if (file.platform == "all" || file.platform == PLATFORM) {
-+ if (file.platform == "all" || file.platform == "linux" || file.platform == PLATFORM) {
+- if (file.platform == "all" || file.platform == lazy.PLATFORM) {
++ if (file.platform == "all" || file.platform == "linux" || file.platform == lazy.PLATFORM) {
if (file.url) {
- addon.sourceURI = NetUtil.newURI(file.url);
+ addon.sourceURI = lazy.NetUtil.newURI(file.url);
}
diff --git toolkit/mozapps/extensions/internal/XPIDatabase.jsm toolkit/mozapps/extensions/internal/XPIDatabase.jsm
-index f8c99c7..c6ba8a1 100644
+index 03186dad43a4..4053fc6f2702 100644
--- toolkit/mozapps/extensions/internal/XPIDatabase.jsm
+++ toolkit/mozapps/extensions/internal/XPIDatabase.jsm
-@@ -520,7 +520,7 @@ class AddonInternal {
+@@ -634,7 +634,7 @@ class AddonInternal {
// Something is causing errors in here
try {
for (let platform of this.targetPlatforms) {
diff --git a/www/tor-browser/files/patch-browser-app-nsBrowserApp.cpp b/www/tor-browser/files/patch-browser-app-nsBrowserApp.cpp
index 3b9097714e21..68cb778b95a7 100644
--- a/www/tor-browser/files/patch-browser-app-nsBrowserApp.cpp
+++ b/www/tor-browser/files/patch-browser-app-nsBrowserApp.cpp
@@ -1,14 +1,12 @@
-diff --git browser/app/nsBrowserApp.cpp browser/app/nsBrowserApp.cpp
-index 87c2e16..a41f1d9 100644
---- browser/app/nsBrowserApp.cpp
+--- browser/app/nsBrowserApp.cpp.orig 2016-09-19 16:19:28 UTC
+++ browser/app/nsBrowserApp.cpp
-@@ -337,6 +337,9 @@ int main(int argc, char* argv[], char* envp[]) {
- }
- #endif
+@@ -324,6 +324,9 @@ int main(int argc, char* argv[], char* e
+ {
+ mozilla::TimeStamp start = mozilla::TimeStamp::Now();
+ setenv("MOZ_GMP_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0);
+ setenv("MOZ_PLUGIN_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0);
+
#ifdef HAS_DLL_BLOCKLIST
- DllBlocklist_Initialize(gBlocklistInitFlags);
- #endif
+ DllBlocklist_Initialize();
+
diff --git a/www/tor-browser/files/patch-browser-base-jar.mn b/www/tor-browser/files/patch-browser-base-jar.mn
new file mode 100644
index 000000000000..0dbfd0224b11
--- /dev/null
+++ b/www/tor-browser/files/patch-browser-base-jar.mn
@@ -0,0 +1,227 @@
+--- browser/base/jar.mn.orig 2023-10-21 13:09:52.025195000 +0000
++++ browser/base/jar.mn 2023-10-21 13:10:04.930188000 +0000
+@@ -112,3 +112,224 @@
+ * content/browser/default-bookmarks.html (content/default-bookmarks.html)
+
+ content/browser/languageNotification.js (content/languageNotification.js)
++ content/browser/manual/ar.html (content/manual/ar.html)
++ content/browser/manual/bn.html (content/manual/bn.html)
++ content/browser/manual/ca.html (content/manual/ca.html)
++ content/browser/manual/de.html (content/manual/de.html)
++ content/browser/manual/el.html (content/manual/el.html)
++ content/browser/manual/en.html (content/manual/en.html)
++ content/browser/manual/es.html (content/manual/es.html)
++ content/browser/manual/fa.html (content/manual/fa.html)
++ content/browser/manual/fi.html (content/manual/fi.html)
++ content/browser/manual/fr.html (content/manual/fr.html)
++ content/browser/manual/ga.html (content/manual/ga.html)
++ content/browser/manual/he.html (content/manual/he.html)
++ content/browser/manual/hu.html (content/manual/hu.html)
++ content/browser/manual/id.html (content/manual/id.html)
++ content/browser/manual/is.html (content/manual/is.html)
++ content/browser/manual/it.html (content/manual/it.html)
++ content/browser/manual/ka.html (content/manual/ka.html)
++ content/browser/manual/km.html (content/manual/km.html)
++ content/browser/manual/ko.html (content/manual/ko.html)
++ content/browser/manual/lt.html (content/manual/lt.html)
++ content/browser/manual/mk.html (content/manual/mk.html)
++ content/browser/manual/my.html (content/manual/my.html)
++ content/browser/manual/pl.html (content/manual/pl.html)
++ content/browser/manual/pt-BR.html (content/manual/pt-BR.html)
++ content/browser/manual/pt-PT.html (content/manual/pt-PT.html)
++ content/browser/manual/ro.html (content/manual/ro.html)
++ content/browser/manual/ru.html (content/manual/ru.html)
++ content/browser/manual/sq.html (content/manual/sq.html)
++ content/browser/manual/static/collapse.min.js (content/manual/static/collapse.min.js)
++ content/browser/manual/static/css/bootstrap-grid.css (content/manual/static/css/bootstrap-grid.css)
++ content/browser/manual/static/css/bootstrap-reboot.css (content/manual/static/css/bootstrap-reboot.css)
++ content/browser/manual/static/css/bootstrap.css (content/manual/static/css/bootstrap.css)
++ content/browser/manual/static/fonts/Corben/Corben-Bold.ttf (content/manual/static/fonts/Corben/Corben-Bold.ttf)
++ content/browser/manual/static/fonts/Corben/Corben.ttf (content/manual/static/fonts/Corben/Corben.ttf)
++ content/browser/manual/static/fonts/Hanuman/Hanuman-Black.ttf (content/manual/static/fonts/Hanuman/Hanuman-Black.ttf)
++ content/browser/manual/static/fonts/Hanuman/Hanuman-Bold.ttf (content/manual/static/fonts/Hanuman/Hanuman-Bold.ttf)
++ content/browser/manual/static/fonts/Hanuman/Hanuman-Light.ttf (content/manual/static/fonts/Hanuman/Hanuman-Light.ttf)
++ content/browser/manual/static/fonts/Hanuman/Hanuman-Regular.ttf (content/manual/static/fonts/Hanuman/Hanuman-Regular.ttf)
++ content/browser/manual/static/fonts/Hanuman/Hanuman-Thin.ttf (content/manual/static/fonts/Hanuman/Hanuman-Thin.ttf)
++ content/browser/manual/static/fonts/Hanuman/OFL.txt (content/manual/static/fonts/Hanuman/OFL.txt)
++ content/browser/manual/static/fonts/Kanit/kanit.woff2 (content/manual/static/fonts/Kanit/kanit.woff2)
++ content/browser/manual/static/fonts/LeagueGothic/LeagueGothic-Italic.otf (content/manual/static/fonts/LeagueGothic/LeagueGothic-Italic.otf)
++ content/browser/manual/static/fonts/LeagueGothic/League_Gothic_Regular.woff (content/manual/static/fonts/LeagueGothic/League_Gothic_Regular.woff)
++ content/browser/manual/static/fonts/SourceCodePro/OFL.txt (content/manual/static/fonts/SourceCodePro/OFL.txt)
++ content/browser/manual/static/fonts/SourceCodePro/SourceCodePro-Black.ttf (content/manual/static/fonts/SourceCodePro/SourceCodePro-Black.ttf)
++ content/browser/manual/static/fonts/SourceCodePro/SourceCodePro-Bold.ttf (content/manual/static/fonts/SourceCodePro/SourceCodePro-Bold.ttf)
++ content/browser/manual/static/fonts/SourceCodePro/SourceCodePro-ExtraLight.ttf (content/manual/static/fonts/SourceCodePro/SourceCodePro-ExtraLight.ttf)
++ content/browser/manual/static/fonts/SourceCodePro/SourceCodePro-Light.ttf (content/manual/static/fonts/SourceCodePro/SourceCodePro-Light.ttf)
++ content/browser/manual/static/fonts/SourceCodePro/SourceCodePro-Medium.ttf (content/manual/static/fonts/SourceCodePro/SourceCodePro-Medium.ttf)
++ content/browser/manual/static/fonts/SourceCodePro/SourceCodePro-Regular.ttf (content/manual/static/fonts/SourceCodePro/SourceCodePro-Regular.ttf)
++ content/browser/manual/static/fonts/SourceCodePro/SourceCodePro-Semibold.ttf (content/manual/static/fonts/SourceCodePro/SourceCodePro-Semibold.ttf)
++ content/browser/manual/static/fonts/SourceSansPro/OFL.txt (content/manual/static/fonts/SourceSansPro/OFL.txt)
++ content/browser/manual/static/fonts/SourceSansPro/SourceSansPro-Black.ttf (content/manual/static/fonts/SourceSansPro/SourceSansPro-Black.ttf)
++ content/browser/manual/static/fonts/SourceSansPro/SourceSansPro-BlackItalic.ttf (content/manual/static/fonts/SourceSansPro/SourceSansPro-BlackItalic.ttf)
++ content/browser/manual/static/fonts/SourceSansPro/SourceSansPro-Bold.ttf (content/manual/static/fonts/SourceSansPro/SourceSansPro-Bold.ttf)
++ content/browser/manual/static/fonts/SourceSansPro/SourceSansPro-BoldItalic.ttf (content/manual/static/fonts/SourceSansPro/SourceSansPro-BoldItalic.ttf)
++ content/browser/manual/static/fonts/SourceSansPro/SourceSansPro-ExtraLight.ttf (content/manual/static/fonts/SourceSansPro/SourceSansPro-ExtraLight.ttf)
++ content/browser/manual/static/fonts/SourceSansPro/SourceSansPro-ExtraLightItalic.ttf (content/manual/static/fonts/SourceSansPro/SourceSansPro-ExtraLightItalic.ttf)
++ content/browser/manual/static/fonts/SourceSansPro/SourceSansPro-Italic.ttf (content/manual/static/fonts/SourceSansPro/SourceSansPro-Italic.ttf)
++ content/browser/manual/static/fonts/SourceSansPro/SourceSansPro-Light.ttf (content/manual/static/fonts/SourceSansPro/SourceSansPro-Light.ttf)
++ content/browser/manual/static/fonts/SourceSansPro/SourceSansPro-LightItalic.ttf (content/manual/static/fonts/SourceSansPro/SourceSansPro-LightItalic.ttf)
++ content/browser/manual/static/fonts/SourceSansPro/SourceSansPro-Regular.ttf (content/manual/static/fonts/SourceSansPro/SourceSansPro-Regular.ttf)
++ content/browser/manual/static/fonts/SourceSansPro/SourceSansPro-SemiBold.ttf (content/manual/static/fonts/SourceSansPro/SourceSansPro-SemiBold.ttf)
++ content/browser/manual/static/fonts/SourceSansPro/SourceSansPro-SemiBoldItalic.ttf (content/manual/static/fonts/SourceSansPro/SourceSansPro-SemiBoldItalic.ttf)
++ content/browser/manual/static/fonts/SourceSerifPro/OFL.txt (content/manual/static/fonts/SourceSerifPro/OFL.txt)
++ content/browser/manual/static/fonts/SourceSerifPro/SourceSerifPro-Bold.ttf (content/manual/static/fonts/SourceSerifPro/SourceSerifPro-Bold.ttf)
++ content/browser/manual/static/fonts/SourceSerifPro/SourceSerifPro-Regular.ttf (content/manual/static/fonts/SourceSerifPro/SourceSerifPro-Regular.ttf)
++ content/browser/manual/static/fonts/SourceSerifPro/SourceSerifPro-Semibold.ttf (content/manual/static/fonts/SourceSerifPro/SourceSerifPro-Semibold.ttf)
++ content/browser/manual/static/fonts/TorIcons/tor-icons.eot (content/manual/static/fonts/TorIcons/tor-icons.eot)
++ content/browser/manual/static/fonts/TorIcons/tor-icons.svg (content/manual/static/fonts/TorIcons/tor-icons.svg)
++ content/browser/manual/static/fonts/TorIcons/tor-icons.ttf (content/manual/static/fonts/TorIcons/tor-icons.ttf)
++ content/browser/manual/static/fonts/TorIcons/tor-icons.woff (content/manual/static/fonts/TorIcons/tor-icons.woff)
++ content/browser/manual/static/fonts/TorIcons/tor-icons.woff2 (content/manual/static/fonts/TorIcons/tor-icons.woff2)
++ content/browser/manual/static/fonts/WhiteonBlack/WhiteOnBlack.ttf (content/manual/static/fonts/WhiteonBlack/WhiteOnBlack.ttf)
++ content/browser/manual/static/fonts/fontawesome/LICENSE.txt (content/manual/static/fonts/fontawesome/LICENSE.txt)
++ content/browser/manual/static/fonts/fontawesome/css/all.css (content/manual/static/fonts/fontawesome/css/all.css)
++ content/browser/manual/static/fonts/fontawesome/css/all.min.css (content/manual/static/fonts/fontawesome/css/all.min.css)
++ content/browser/manual/static/fonts/fontawesome/css/brands.css (content/manual/static/fonts/fontawesome/css/brands.css)
++ content/browser/manual/static/fonts/fontawesome/css/brands.min.css (content/manual/static/fonts/fontawesome/css/brands.min.css)
++ content/browser/manual/static/fonts/fontawesome/css/fontawesome.css (content/manual/static/fonts/fontawesome/css/fontawesome.css)
++ content/browser/manual/static/fonts/fontawesome/css/fontawesome.min.css (content/manual/static/fonts/fontawesome/css/fontawesome.min.css)
++ content/browser/manual/static/fonts/fontawesome/css/regular.css (content/manual/static/fonts/fontawesome/css/regular.css)
++ content/browser/manual/static/fonts/fontawesome/css/regular.min.css (content/manual/static/fonts/fontawesome/css/regular.min.css)
++ content/browser/manual/static/fonts/fontawesome/css/solid.css (content/manual/static/fonts/fontawesome/css/solid.css)
++ content/browser/manual/static/fonts/fontawesome/css/solid.min.css (content/manual/static/fonts/fontawesome/css/solid.min.css)
++ content/browser/manual/static/fonts/fontawesome/css/svg-with-js.css (content/manual/static/fonts/fontawesome/css/svg-with-js.css)
++ content/browser/manual/static/fonts/fontawesome/css/svg-with-js.min.css (content/manual/static/fonts/fontawesome/css/svg-with-js.min.css)
++ content/browser/manual/static/fonts/fontawesome/css/v4-shims.css (content/manual/static/fonts/fontawesome/css/v4-shims.css)
++ content/browser/manual/static/fonts/fontawesome/css/v4-shims.min.css (content/manual/static/fonts/fontawesome/css/v4-shims.min.css)
++ content/browser/manual/static/fonts/fontawesome/png/dark/solid/arrow-down.png (content/manual/static/fonts/fontawesome/png/dark/solid/arrow-down.png)
++ content/browser/manual/static/fonts/fontawesome/png/dark/solid/language.png (content/manual/static/fonts/fontawesome/png/dark/solid/language.png)
++ content/browser/manual/static/fonts/fontawesome/png/primary/brands/facebook.png (content/manual/static/fonts/fontawesome/png/primary/brands/facebook.png)
++ content/browser/manual/static/fonts/fontawesome/png/primary/brands/instagram.png (content/manual/static/fonts/fontawesome/png/primary/brands/instagram.png)
++ content/browser/manual/static/fonts/fontawesome/png/primary/brands/linkedin.png (content/manual/static/fonts/fontawesome/png/primary/brands/linkedin.png)
++ content/browser/manual/static/fonts/fontawesome/png/primary/brands/mastodon.png (content/manual/static/fonts/fontawesome/png/primary/brands/mastodon.png)
++ content/browser/manual/static/fonts/fontawesome/png/primary/brands/telegram.png (content/manual/static/fonts/fontawesome/png/primary/brands/telegram.png)
++ content/browser/manual/static/fonts/fontawesome/png/primary/brands/twitter.png (content/manual/static/fonts/fontawesome/png/primary/brands/twitter.png)
++ content/browser/manual/static/fonts/fontawesome/png/primary/brands/youtube.png (content/manual/static/fonts/fontawesome/png/primary/brands/youtube.png)
++ content/browser/manual/static/fonts/fontawesome/png/primary/regular/file-alt.png (content/manual/static/fonts/fontawesome/png/primary/regular/file-alt.png)
++ content/browser/manual/static/fonts/fontawesome/png/primary/solid/arrow-down.png (content/manual/static/fonts/fontawesome/png/primary/solid/arrow-down.png)
++ content/browser/manual/static/fonts/fontawesome/png/primary/solid/arrow-right.png (content/manual/static/fonts/fontawesome/png/primary/solid/arrow-right.png)
++ content/browser/manual/static/fonts/fontawesome/png/primary/solid/comments.png (content/manual/static/fonts/fontawesome/png/primary/solid/comments.png)
++ content/browser/manual/static/fonts/fontawesome/png/primary/solid/cube.png (content/manual/static/fonts/fontawesome/png/primary/solid/cube.png)
++ content/browser/manual/static/fonts/fontawesome/png/primary/solid/flag.png (content/manual/static/fonts/fontawesome/png/primary/solid/flag.png)
++ content/browser/manual/static/fonts/fontawesome/png/primary/solid/folder-open.png (content/manual/static/fonts/fontawesome/png/primary/solid/folder-open.png)
++ content/browser/manual/static/fonts/fontawesome/png/primary/solid/hands-helping.png (content/manual/static/fonts/fontawesome/png/primary/solid/hands-helping.png)
++ content/browser/manual/static/fonts/fontawesome/png/primary/solid/key.png (content/manual/static/fonts/fontawesome/png/primary/solid/key.png)
++ content/browser/manual/static/fonts/fontawesome/png/primary/solid/language.png (content/manual/static/fonts/fontawesome/png/primary/solid/language.png)
++ content/browser/manual/static/fonts/fontawesome/png/primary/solid/life-ring.png (content/manual/static/fonts/fontawesome/png/primary/solid/life-ring.png)
++ content/browser/manual/static/fonts/fontawesome/png/primary/solid/lock.png (content/manual/static/fonts/fontawesome/png/primary/solid/lock.png)
++ content/browser/manual/static/fonts/fontawesome/png/primary/solid/magnifying-glass.png (content/manual/static/fonts/fontawesome/png/primary/solid/magnifying-glass.png)
++ content/browser/manual/static/fonts/fontawesome/png/primary/solid/paper-plane.png (content/manual/static/fonts/fontawesome/png/primary/solid/paper-plane.png)
++ content/browser/manual/static/fonts/fontawesome/png/primary/solid/signature.png (content/manual/static/fonts/fontawesome/png/primary/solid/signature.png)
++ content/browser/manual/static/fonts/fontawesome/png/primary/solid/spider.png (content/manual/static/fonts/fontawesome/png/primary/solid/spider.png)
++ content/browser/manual/static/fonts/fontawesome/png/primary/solid/table-tennis.png (content/manual/static/fonts/fontawesome/png/primary/solid/table-tennis.png)
++ content/browser/manual/static/fonts/fontawesome/png/white/brands/android.png (content/manual/static/fonts/fontawesome/png/white/brands/android.png)
++ content/browser/manual/static/fonts/fontawesome/png/white/brands/apple.png (content/manual/static/fonts/fontawesome/png/white/brands/apple.png)
++ content/browser/manual/static/fonts/fontawesome/png/white/brands/facebook.png (content/manual/static/fonts/fontawesome/png/white/brands/facebook.png)
++ content/browser/manual/static/fonts/fontawesome/png/white/brands/github.png (content/manual/static/fonts/fontawesome/png/white/brands/github.png)
++ content/browser/manual/static/fonts/fontawesome/png/white/brands/instagram.png (content/manual/static/fonts/fontawesome/png/white/brands/instagram.png)
++ content/browser/manual/static/fonts/fontawesome/png/white/brands/linkedin.png (content/manual/static/fonts/fontawesome/png/white/brands/linkedin.png)
++ content/browser/manual/static/fonts/fontawesome/png/white/brands/linux.png (content/manual/static/fonts/fontawesome/png/white/brands/linux.png)
++ content/browser/manual/static/fonts/fontawesome/png/white/brands/mastodon.png (content/manual/static/fonts/fontawesome/png/white/brands/mastodon.png)
++ content/browser/manual/static/fonts/fontawesome/png/white/brands/twitter.png (content/manual/static/fonts/fontawesome/png/white/brands/twitter.png)
++ content/browser/manual/static/fonts/fontawesome/png/white/brands/windows.png (content/manual/static/fonts/fontawesome/png/white/brands/windows.png)
++ content/browser/manual/static/fonts/fontawesome/png/white/solid/arrow-down.png (content/manual/static/fonts/fontawesome/png/white/solid/arrow-down.png)
++ content/browser/manual/static/fonts/fontawesome/png/white/solid/arrow-right.png (content/manual/static/fonts/fontawesome/png/white/solid/arrow-right.png)
++ content/browser/manual/static/fonts/fontawesome/webfonts/fa-brands-400.eot (content/manual/static/fonts/fontawesome/webfonts/fa-brands-400.eot)
++ content/browser/manual/static/fonts/fontawesome/webfonts/fa-brands-400.svg (content/manual/static/fonts/fontawesome/webfonts/fa-brands-400.svg)
++ content/browser/manual/static/fonts/fontawesome/webfonts/fa-brands-400.ttf (content/manual/static/fonts/fontawesome/webfonts/fa-brands-400.ttf)
++ content/browser/manual/static/fonts/fontawesome/webfonts/fa-brands-400.woff (content/manual/static/fonts/fontawesome/webfonts/fa-brands-400.woff)
++ content/browser/manual/static/fonts/fontawesome/webfonts/fa-brands-400.woff2 (content/manual/static/fonts/fontawesome/webfonts/fa-brands-400.woff2)
++ content/browser/manual/static/fonts/fontawesome/webfonts/fa-regular-400.eot (content/manual/static/fonts/fontawesome/webfonts/fa-regular-400.eot)
++ content/browser/manual/static/fonts/fontawesome/webfonts/fa-regular-400.svg (content/manual/static/fonts/fontawesome/webfonts/fa-regular-400.svg)
++ content/browser/manual/static/fonts/fontawesome/webfonts/fa-regular-400.ttf (content/manual/static/fonts/fontawesome/webfonts/fa-regular-400.ttf)
++ content/browser/manual/static/fonts/fontawesome/webfonts/fa-regular-400.woff (content/manual/static/fonts/fontawesome/webfonts/fa-regular-400.woff)
++ content/browser/manual/static/fonts/fontawesome/webfonts/fa-regular-400.woff2 (content/manual/static/fonts/fontawesome/webfonts/fa-regular-400.woff2)
++ content/browser/manual/static/fonts/fontawesome/webfonts/fa-solid-900.eot (content/manual/static/fonts/fontawesome/webfonts/fa-solid-900.eot)
++ content/browser/manual/static/fonts/fontawesome/webfonts/fa-solid-900.svg (content/manual/static/fonts/fontawesome/webfonts/fa-solid-900.svg)
++ content/browser/manual/static/fonts/fontawesome/webfonts/fa-solid-900.ttf (content/manual/static/fonts/fontawesome/webfonts/fa-solid-900.ttf)
++ content/browser/manual/static/fonts/fontawesome/webfonts/fa-solid-900.woff (content/manual/static/fonts/fontawesome/webfonts/fa-solid-900.woff)
++ content/browser/manual/static/fonts/fontawesome/webfonts/fa-solid-900.woff2 (content/manual/static/fonts/fontawesome/webfonts/fa-solid-900.woff2)
++ content/browser/manual/static/fonts/grotesque/terminal-grotesque_open.otf (content/manual/static/fonts/grotesque/terminal-grotesque_open.otf)
++ content/browser/manual/static/images/android-censored.png (content/manual/static/images/android-censored.png)
++ content/browser/manual/static/images/android-configure.png (content/manual/static/images/android-configure.png)
++ content/browser/manual/static/images/android-connect.png (content/manual/static/images/android-connect.png)
++ content/browser/manual/static/images/android-new-identity.png (content/manual/static/images/android-new-identity.png)
++ content/browser/manual/static/images/android-provide-a-bridge.png (content/manual/static/images/android-provide-a-bridge.png)
++ content/browser/manual/static/images/android-provided-a-bridge.png (content/manual/static/images/android-provided-a-bridge.png)
++ content/browser/manual/static/images/android-security-settings.gif (content/manual/static/images/android-security-settings.gif)
++ content/browser/manual/static/images/android-select-a-bridge.png (content/manual/static/images/android-select-a-bridge.png)
++ content/browser/manual/static/images/android-selected-a-bridge.png (content/manual/static/images/android-selected-a-bridge.png)
++ content/browser/manual/static/images/android-uninstall-device-settings.png (content/manual/static/images/android-uninstall-device-settings.png)
++ content/browser/manual/static/images/android-uninstall-f-droid.png (content/manual/static/images/android-uninstall-f-droid.png)
++ content/browser/manual/static/images/android-uninstall-google-play.png (content/manual/static/images/android-uninstall-google-play.png)
++ content/browser/manual/static/images/android-update-f-droid.png (content/manual/static/images/android-update-f-droid.png)
++ content/browser/manual/static/images/android-update-google-play.png (content/manual/static/images/android-update-google-play.png)
++ content/browser/manual/static/images/android-view-logs.gif (content/manual/static/images/android-view-logs.gif)
++ content/browser/manual/static/images/bridge-qr.png (content/manual/static/images/bridge-qr.png)
++ content/browser/manual/static/images/bridgemoji.png (content/manual/static/images/bridgemoji.png)
++ content/browser/manual/static/images/built-in-bridge.png (content/manual/static/images/built-in-bridge.png)
++ content/browser/manual/static/images/circuit_full.png (content/manual/static/images/circuit_full.png)
++ content/browser/manual/static/images/client-auth.png (content/manual/static/images/client-auth.png)
++ content/browser/manual/static/images/configure.png (content/manual/static/images/configure.png)
++ content/browser/manual/static/images/connect.png (content/manual/static/images/connect.png)
++ content/browser/manual/static/images/connection-assist-auto.png (content/manual/static/images/connection-assist-auto.png)
++ content/browser/manual/static/images/connection-assist-offline.png (content/manual/static/images/connection-assist-offline.png)
++ content/browser/manual/static/images/connection-assist-select.png (content/manual/static/images/connection-assist-select.png)
++ content/browser/manual/static/images/connection-assist-test.png (content/manual/static/images/connection-assist-test.png)
++ content/browser/manual/static/images/connection-test-failure.png (content/manual/static/images/connection-test-failure.png)
++ content/browser/manual/static/images/connection-test-success.png (content/manual/static/images/connection-test-success.png)
++ content/browser/manual/static/images/gettor-bot-telegram.png (content/manual/static/images/gettor-bot-telegram.png)
++ content/browser/manual/static/images/how-tor-works.png (content/manual/static/images/how-tor-works.png)
++ content/browser/manual/static/images/http-website-error.png (content/manual/static/images/http-website-error.png)
++ content/browser/manual/static/images/https-only-mode.png (content/manual/static/images/https-only-mode.png)
++ content/browser/manual/static/images/linux-make-desktop-file-executable.png (content/manual/static/images/linux-make-desktop-file-executable.png)
++ content/browser/manual/static/images/macos-go-to-folder-menu.png (content/manual/static/images/macos-go-to-folder-menu.png)
++ content/browser/manual/static/images/macos-go-to-folder-window.png (content/manual/static/images/macos-go-to-folder-window.png)
++ content/browser/manual/static/images/new_identity.png (content/manual/static/images/new_identity.png)
++ content/browser/manual/static/images/onion-location.png (content/manual/static/images/onion-location.png)
++ content/browser/manual/static/images/pluggable-transport.png (content/manual/static/images/pluggable-transport.png)
++ content/browser/manual/static/images/provide-bridge.png (content/manual/static/images/provide-bridge.png)
++ content/browser/manual/static/images/proxy.png (content/manual/static/images/proxy.png)
++ content/browser/manual/static/images/quickstart.png (content/manual/static/images/quickstart.png)
++ content/browser/manual/static/images/request-a-bridge.png (content/manual/static/images/request-a-bridge.png)
++ content/browser/manual/static/images/security-settings-anim.gif (content/manual/static/images/security-settings-anim.gif)
++ content/browser/manual/static/images/security-settings-safest.png (content/manual/static/images/security-settings-safest.png)
++ content/browser/manual/static/images/tor-https-0.png (content/manual/static/images/tor-https-0.png)
++ content/browser/manual/static/images/tor-https-1.png (content/manual/static/images/tor-https-1.png)
++ content/browser/manual/static/images/tor-https-2.png (content/manual/static/images/tor-https-2.png)
++ content/browser/manual/static/images/tor-https-3.png (content/manual/static/images/tor-https-3.png)
++ content/browser/manual/static/images/update1.png (content/manual/static/images/update1.png)
++ content/browser/manual/static/images/update4.png (content/manual/static/images/update4.png)
++ content/browser/manual/static/js/anchor.min.js (content/manual/static/js/anchor.min.js)
++ content/browser/manual/static/js/bootstrap.bundle.js (content/manual/static/js/bootstrap.bundle.js)
++ content/browser/manual/static/js/bootstrap.bundle.js.map (content/manual/static/js/bootstrap.bundle.js.map)
++ content/browser/manual/static/js/bootstrap.bundle.min.js (content/manual/static/js/bootstrap.bundle.min.js)
++ content/browser/manual/static/js/bootstrap.bundle.min.js.map (content/manual/static/js/bootstrap.bundle.min.js.map)
++ content/browser/manual/static/js/bootstrap.js (content/manual/static/js/bootstrap.js)
++ content/browser/manual/static/js/bootstrap.js.map (content/manual/static/js/bootstrap.js.map)
++ content/browser/manual/static/js/bootstrap.min.js (content/manual/static/js/bootstrap.min.js)
++ content/browser/manual/static/js/bootstrap.min.js.map (content/manual/static/js/bootstrap.min.js.map)
++ content/browser/manual/static/js/clipboard.min.js (content/manual/static/js/clipboard.min.js)
++ content/browser/manual/static/js/collapse.min.js (content/manual/static/js/collapse.min.js)
++ content/browser/manual/static/js/download.js (content/manual/static/js/download.js)
++ content/browser/manual/static/js/errors.js (content/manual/static/js/errors.js)
++ content/browser/manual/static/js/fallback.js (content/manual/static/js/fallback.js)
++ content/browser/manual/static/js/holder.min.js (content/manual/static/js/holder.min.js)
++ content/browser/manual/static/js/jquery-3.2.1.min.js (content/manual/static/js/jquery-3.2.1.min.js)
++ content/browser/manual/static/js/jquery-slim.min.js (content/manual/static/js/jquery-slim.min.js)
++ content/browser/manual/static/js/modernizr.js (content/manual/static/js/modernizr.js)
++ content/browser/manual/static/js/popper.min.js (content/manual/static/js/popper.min.js)
++ content/browser/manual/static/js/scrollspy.min.js (content/manual/static/js/scrollspy.min.js)
++ content/browser/manual/static/js/util.min.js (content/manual/static/js/util.min.js)
++ content/browser/manual/sw.html (content/manual/sw.html)
++ content/browser/manual/th.html (content/manual/th.html)
++ content/browser/manual/tr.html (content/manual/tr.html)
++ content/browser/manual/uk.html (content/manual/uk.html)
++ content/browser/manual/vi.html (content/manual/vi.html)
++ content/browser/manual/zh-CN.html (content/manual/zh-CN.html)
++ content/browser/manual/zh-TW.html (content/manual/zh-TW.html)
diff --git a/www/tor-browser/files/patch-browser_app_profile_000-tor-browser.js b/www/tor-browser/files/patch-browser_app_profile_000-tor-browser.js
index 7ad39b4237ff..33dc6cdb02f8 100644
--- a/www/tor-browser/files/patch-browser_app_profile_000-tor-browser.js
+++ b/www/tor-browser/files/patch-browser_app_profile_000-tor-browser.js
@@ -1,6 +1,9 @@
---- browser/app/profile/000-tor-browser.js.orig 2022-11-30 11:37:40 UTC
+Set all path-related prefs to minimize patching of tl-util.jsm/tl-process.js
+
+Index: browser/app/profile/000-tor-browser.js
+--- browser/app/profile/000-tor-browser.js.orig
+++ browser/app/profile/000-tor-browser.js
-@@ -123,14 +123,17 @@ pref("extensions.torlauncher.socks_port_flags", "Exten
+@@ -100,7 +100,10 @@ pref("extensions.torlauncher.socks_port_flags", "Exten
// The tor_path is relative to the application directory. On Linux and
// Windows this is the Browser/ directory that contains the firefox
// executables, and on Mac OS it is the TorBrowser.app directory.
@@ -12,12 +15,3 @@
// The torrc_path and tordatadir_path are relative to the data directory,
// which is TorBrowser-Data/ if it exists as a sibling of the application
- // directory. If TorBrowser-Data/ does not exist, these paths are relative
- // to the TorBrowser/ directory within the application directory.
--pref("extensions.torlauncher.torrc_path", "");
--pref("extensions.torlauncher.tordatadir_path", "");
-+pref("extensions.torlauncher.torrc_path", "torrc");
-+pref("extensions.torlauncher.tordatadir_path", "tor_data");
-
- // BridgeDB-related preferences (used for Moat).
- pref("extensions.torlauncher.bridgedb_front", "cdn.sstatic.net");
diff --git a/www/tor-browser/files/patch-bug1427152 b/www/tor-browser/files/patch-bug1427152
new file mode 100644
index 000000000000..49bd5a581ac8
--- /dev/null
+++ b/www/tor-browser/files/patch-bug1427152
@@ -0,0 +1,10 @@
+--- modules/libpref/Preferences.cpp.orig 2023-05-11 21:42:41 UTC
++++ modules/libpref/Preferences.cpp
+@@ -6126,6 +6126,7 @@ static const PrefListEntry sDynamicPrefOverrideList[]{
+ PREF_LIST_ENTRY("logging.config.LOG_FILE"),
+ PREF_LIST_ENTRY("media.audio_loopback_dev"),
+ PREF_LIST_ENTRY("media.decoder-doctor."),
++ PREF_LIST_ENTRY("media.cubeb.backend"),
+ PREF_LIST_ENTRY("media.cubeb.output_device"),
+ PREF_LIST_ENTRY("media.getusermedia.fake-camera-name"),
+ PREF_LIST_ENTRY("media.hls.server.url"),
diff --git a/www/tor-browser/files/patch-bug1504834_comment5 b/www/tor-browser/files/patch-bug1504834_comment5
index 4d4886823f0f..b9897e0b7f66 100644
--- a/www/tor-browser/files/patch-bug1504834_comment5
+++ b/www/tor-browser/files/patch-bug1504834_comment5
@@ -37,10 +37,8 @@ index 6b3bdc7..7c6c342 100644
// The following values are OS and endian-independent synonyms.
//
-diff --git gfx/skia/skia/third_party/skcms/skcms.cc gfx/skia/skia/third_party/skcms/skcms.cc
-index 6b4d87b..7c0559d 100644
---- gfx/skia/skia/third_party/skcms/skcms.cc
-+++ gfx/skia/skia/third_party/skcms/skcms.cc
+--- gfx/skia/skia/modules/skcms/skcms.cc.orig
++++ gfx/skia/skia/modules/skcms/skcms.cc
@@ -30,6 +30,8 @@
#include <avx512fintrin.h>
#include <avx512dqintrin.h>
@@ -49,8 +47,8 @@ index 6b4d87b..7c0559d 100644
+ #define SKCMS_PORTABLE
#endif
- // sizeof(x) will return size_t, which is 32-bit on some machines and 64-bit on others.
-@@ -280,20 +282,28 @@ enum {
+ static bool runtime_cpu_detection = true;
+@@ -324,20 +326,28 @@
static uint16_t read_big_u16(const uint8_t* ptr) {
uint16_t be;
memcpy(&be, ptr, sizeof(be));
diff --git a/www/tor-browser/files/patch-bug1504834_comment9 b/www/tor-browser/files/patch-bug1504834_comment9
deleted file mode 100644
index c3d149ffa37b..000000000000
--- a/www/tor-browser/files/patch-bug1504834_comment9
+++ /dev/null
@@ -1,49 +0,0 @@
-https://bugzilla.mozilla.org/show_bug.cgi?id=1504834#c9
-https://bugzilla.mozilla.org/attachment.cgi?id=9111146
-mozilla-bmo1504834-part3.patch
-
-
-# HG changeset patch
-# Parent aecb4600e5da17443b224c79eee178c1d8e155e3
-For FF68, AntiAliasing of XULTexts seem to be broken on big endian (s390x). Text and icons of the sandwich-menu to the
-right of the address bar, as well as plugin-windows appears transparant, which usually means unreadable (white on white).
-
-diff -r aecb4600e5da gfx/skia/skia/include/private/SkNx.h
---- gfx/skia/skia/include/private/SkNx.h Tue Aug 20 09:46:55 2019 +0200
-+++ gfx/skia/skia/include/private/SkNx.h Mon Sep 09 10:04:06 2019 +0200
-@@ -238,7 +238,18 @@
- AI SkNx operator*(const SkNx& y) const { return fVal * y.fVal; }
- AI SkNx operator/(const SkNx& y) const { return fVal / y.fVal; }
-
-+ // On Big endian the commented out variant doesn't work,
-+ // and honestly, I have no idea why it exists in the first place.
-+ // The reason its broken is, I think, that it defaults to the double-variant of ToBits()
-+ // which gets a 64-bit integer, and FromBits returns 32-bit,
-+ // cutting off the wrong half again.
-+ // Overall, I see no reason to have ToBits and FromBits at all (even for floats/doubles).
-+ // Still we are only "fixing" this for big endian and leave little endian alone (never touch a running system)
-+#ifdef SK_CPU_BENDIAN
-+ AI SkNx operator&(const SkNx& y) const { return fVal & y.fVal; }
-+#else
- AI SkNx operator&(const SkNx& y) const { return FromBits(ToBits(fVal) & ToBits(y.fVal)); }
-+#endif
- AI SkNx operator|(const SkNx& y) const { return FromBits(ToBits(fVal) | ToBits(y.fVal)); }
- AI SkNx operator^(const SkNx& y) const { return FromBits(ToBits(fVal) ^ ToBits(y.fVal)); }
-
-diff -r aecb4600e5da gfx/skia/skia/src/opts/SkBlitMask_opts.h
---- gfx/skia/skia/src/opts/SkBlitMask_opts.h Tue Aug 20 09:46:55 2019 +0200
-+++ gfx/skia/skia/src/opts/SkBlitMask_opts.h Mon Sep 09 10:04:06 2019 +0200
-@@ -203,7 +203,13 @@
- // ~~~>
- // a = 1*aa + d(1-1*aa) = aa + d(1-aa)
- // c = 0*aa + d(1-1*aa) = d(1-aa)
-+
-+ // For big endian we have to swap the alpha-mask from 0,0,0,255 to 255,0,0,0
-+#ifdef SK_CPU_BENDIAN
-+ return Sk4px(Sk16b(aa) & Sk16b(255,0,0,0, 255,0,0,0, 255,0,0,0, 255,0,0,0))
-+#else
- return Sk4px(Sk16b(aa) & Sk16b(0,0,0,255, 0,0,0,255, 0,0,0,255, 0,0,0,255))
-+#endif
- + d.approxMulDiv255(aa.inv());
- };
- while (h --> 0) {
diff --git a/www/tor-browser/files/patch-bug1559213 b/www/tor-browser/files/patch-bug1559213
index 09b4dcc58e83..49bbb0fb05ff 100644
--- a/www/tor-browser/files/patch-bug1559213
+++ b/www/tor-browser/files/patch-bug1559213
@@ -63,26 +63,27 @@ index 8509aec..eb6f129 100644
EXPORTS += [
diff --git media/ffvpx/libavcodec/moz.build media/ffvpx/libavcodec/moz.build
index 0069865..e806fc8 100644
---- media/ffvpx/libavcodec/moz.build
+--- media/ffvpx/libavcodec/moz.build.orig
+++ media/ffvpx/libavcodec/moz.build
-@@ -112,9 +112,15 @@ if not CONFIG['MOZ_FFVPX_AUDIOONLY']:
- 'vaapi_vp8.c',
- 'vaapi_vp9.c',
- ]
-+ if CONFIG["MOZ_SYSTEM_AV1"]:
-+ CFLAGS += CONFIG['MOZ_SYSTEM_LIBDAV1D_CFLAGS']
-+ OS_LIBS += CONFIG['MOZ_SYSTEM_LIBDAV1D_LIBS']
-+ else:
-+ USE_LIBS += [
-+ 'dav1d',
-+ 'media_libdav1d_asm',
-+ ]
- USE_LIBS += [
-- 'dav1d',
-- 'media_libdav1d_asm',
- 'mozva'
- ]
-
+@@ -108,10 +108,14 @@
+ 'vp9prob.c',
+ 'vp9recon.c'
+ ]
+- USE_LIBS += [
+- 'dav1d',
+- 'media_libdav1d_asm',
+- ]
++ if CONFIG["MOZ_SYSTEM_AV1"]:
++ CFLAGS += CONFIG['MOZ_SYSTEM_LIBDAV1D_CFLAGS']
++ OS_LIBS += CONFIG['MOZ_SYSTEM_LIBDAV1D_LIBS']
++ else:
++ USE_LIBS += [
++ 'dav1d',
++ 'media_libdav1d_asm',
++ ]
+ if CONFIG['MOZ_WAYLAND']:
+ LOCAL_INCLUDES += ['/media/mozva']
+ SOURCES += [
diff --git toolkit/moz.configure toolkit/moz.configure
index 0069865..e806fc8 100644
--- toolkit/moz.configure
diff --git a/www/tor-browser/files/patch-bug1626236 b/www/tor-browser/files/patch-bug1626236
index ae3b522f6b90..ccb417b61f15 100644
--- a/www/tor-browser/files/patch-bug1626236
+++ b/www/tor-browser/files/patch-bug1626236
@@ -9,11 +9,10 @@ https://bug1626236.bmoattachments.org/attachment.cgi?id=9137096
# Parent 9cd90914846f667f18babc491a74c164ae5d6e9f
imported patch decoder_workaround.patch
-diff --git image/decoders/nsGIFDecoder2.cpp image/decoders/nsGIFDecoder2.cpp
-index ebb0b7d..d52ef47 100644
---- image/decoders/nsGIFDecoder2.cpp
-+++ image/decoders/nsGIFDecoder2.cpp
-@@ -422,6 +422,9 @@ void nsGIFDecoder2::ConvertColormap(uint32_t* aColormap, uint32_t aColors) {
+diff -r 9cd90914846f image/decoders/nsGIFDecoder2.cpp
+--- image/decoders/nsGIFDecoder2.cpp Thu Feb 27 12:57:14 2020 +0100
++++ image/decoders/nsGIFDecoder2.cpp Fri Mar 27 13:06:18 2020 +0100
+@@ -422,6 +422,9 @@
MOZ_ASSERT(mSwizzleFn);
uint8_t* data = reinterpret_cast<uint8_t*>(aColormap);
mSwizzleFn(data, data, aColors);
@@ -23,11 +22,10 @@ index ebb0b7d..d52ef47 100644
}
LexerResult nsGIFDecoder2::DoDecode(SourceBufferIterator& aIterator,
-diff --git image/decoders/nsJPEGDecoder.cpp image/decoders/nsJPEGDecoder.cpp
-index 9ea4403..d82772c 100644
---- image/decoders/nsJPEGDecoder.cpp
-+++ image/decoders/nsJPEGDecoder.cpp
-@@ -257,6 +257,9 @@ LexerTransition<nsJPEGDecoder::State> nsJPEGDecoder::ReadJPEGData(
+diff -r 9cd90914846f image/decoders/nsJPEGDecoder.cpp
+--- image/decoders/nsJPEGDecoder.cpp Thu Feb 27 12:57:14 2020 +0100
++++ image/decoders/nsJPEGDecoder.cpp Fri Mar 27 13:06:18 2020 +0100
+@@ -263,6 +263,9 @@
case JCS_YCbCr:
// By default, we will output directly to BGRA. If we need to apply
// special color transforms, this may change.
@@ -37,7 +35,7 @@ index 9ea4403..d82772c 100644
switch (SurfaceFormat::OS_RGBX) {
case SurfaceFormat::B8G8R8X8:
mInfo.out_color_space = JCS_EXT_BGRX;
-@@ -271,6 +274,7 @@ LexerTransition<nsJPEGDecoder::State> nsJPEGDecoder::ReadJPEGData(
+@@ -277,6 +280,7 @@
mState = JPEG_ERROR;
return Transition::TerminateFailure();
}
@@ -45,11 +43,10 @@ index 9ea4403..d82772c 100644
break;
case JCS_CMYK:
case JCS_YCCK:
-diff --git image/decoders/nsPNGDecoder.cpp image/decoders/nsPNGDecoder.cpp
-index e3e4ef4..3cc7315 100644
---- image/decoders/nsPNGDecoder.cpp
-+++ image/decoders/nsPNGDecoder.cpp
-@@ -356,7 +356,7 @@ LexerResult nsPNGDecoder::DoDecode(SourceBufferIterator& aIterator,
+diff -r 9cd90914846f image/decoders/nsPNGDecoder.cpp
+--- image/decoders/nsPNGDecoder.cpp Thu Feb 27 12:57:14 2020 +0100
++++ image/decoders/nsPNGDecoder.cpp Fri Mar 27 13:06:18 2020 +0100
+@@ -361,7 +361,7 @@
IResumable* aOnResume) {
MOZ_ASSERT(!HasError(), "Shouldn't call DoDecode after error!");
@@ -58,7 +55,7 @@ index e3e4ef4..3cc7315 100644
[=](State aState, const char* aData, size_t aLength) {
switch (aState) {
case State::PNG_DATA:
-@@ -366,6 +366,14 @@ LexerResult nsPNGDecoder::DoDecode(SourceBufferIterator& aIterator,
+@@ -371,6 +371,14 @@
}
MOZ_CRASH("Unknown State");
});
@@ -73,11 +70,10 @@ index e3e4ef4..3cc7315 100644
}
LexerTransition<nsPNGDecoder::State> nsPNGDecoder::ReadPNGData(
-diff --git image/decoders/nsWebPDecoder.cpp image/decoders/nsWebPDecoder.cpp
-index e58ca92..2056ebb 100644
---- image/decoders/nsWebPDecoder.cpp
-+++ image/decoders/nsWebPDecoder.cpp
-@@ -247,7 +247,12 @@ nsresult nsWebPDecoder::CreateFrame(const OrientedIntRect& aFrameRect) {
+diff -r 9cd90914846f image/decoders/nsWebPDecoder.cpp
+--- image/decoders/nsWebPDecoder.cpp Thu Feb 27 12:57:14 2020 +0100
++++ image/decoders/nsWebPDecoder.cpp Fri Mar 27 13:06:18 2020 +0100
+@@ -237,7 +237,12 @@
// WebP doesn't guarantee that the alpha generated matches the hint in the
// header, so we always need to claim the input is BGRA. If the output is
// BGRX, swizzling will mask off the alpha channel.
diff --git a/www/tor-browser/files/patch-bug1628567 b/www/tor-browser/files/patch-bug1628567
index 003ba36d3ad1..32b0dc260d22 100644
--- a/www/tor-browser/files/patch-bug1628567
+++ b/www/tor-browser/files/patch-bug1628567
@@ -1,10 +1,10 @@
Don't pass --target when CC/CXX contains clang
diff --git third_party/rust/cc/src/lib.rs third_party/rust/cc/src/lib.rs
-index 8cafd2a..f40b746 100644
+index 9d133a0..273e520 100644
--- third_party/rust/cc/src/lib.rs
+++ third_party/rust/cc/src/lib.rs
-@@ -2796,24 +2796,7 @@ impl Tool {
+@@ -2667,24 +2667,7 @@ impl Tool {
}
fn with_features(path: PathBuf, clang_driver: Option<&str>, cuda: bool) -> Self {
diff --git a/www/tor-browser/files/patch-bug1640982 b/www/tor-browser/files/patch-bug1640982
deleted file mode 100644
index 5ad0fbad6c72..000000000000
--- a/www/tor-browser/files/patch-bug1640982
+++ /dev/null
@@ -1,17 +0,0 @@
-Unbreak build with Rust 1.45.0
-
-error: options `-C embed-bitcode=no` and `-C lto` are incompatible
-
-diff --git config/makefiles/rust.mk config/makefiles/rust.mk
-index 75570d3..94ec33f 100644
---- config/makefiles/rust.mk
-+++ config/makefiles/rust.mk
-@@ -97,7 +97,7 @@ ifndef rustflags_sancov
- # Never enable when coverage is enabled to work around https://github.com/rust-lang/rust/issues/90045.
- ifndef MOZ_CODE_COVERAGE
- ifeq (,$(findstring gkrust_gtest,$(RUST_LIBRARY_FILE)))
--cargo_rustc_flags += -Clto
-+cargo_rustc_flags +=
- endif
- # We need -Cembed-bitcode=yes for all crates when using -Clto.
- RUSTFLAGS += -Cembed-bitcode=yes
diff --git a/www/tor-browser/files/patch-bug1659612 b/www/tor-browser/files/patch-bug1659612
index dce125b883d2..a7aea97734a0 100644
--- a/www/tor-browser/files/patch-bug1659612
+++ b/www/tor-browser/files/patch-bug1659612
@@ -20,16 +20,22 @@ media/libcubeb/src/cubeb_alsa.c:1168:3: note: include the header <stdlib.h> or e
^
2 errors generated.
---- media/libcubeb/src/cubeb_alsa.c.orig 2021-08-31 14:26:24.530548000 +0200
-+++ media/libcubeb/src/cubeb_alsa.c 2021-08-31 14:26:43.081470000 +0200
-@@ -5,9 +5,7 @@
+--- media/libcubeb/src/cubeb_alsa.c.orig 2023-03-29 20:51:00.139281000 +0200
++++ media/libcubeb/src/cubeb_alsa.c 2023-03-29 20:51:46.219013000 +0200
+@@ -5,12 +5,16 @@
* accompanying file LICENSE for details.
*/
#undef NDEBUG
--#define _DEFAULT_SOURCE
--#define _BSD_SOURCE
--#define _XOPEN_SOURCE 500
-+#define _GNU_SOURCE 1
++#if defined(__FreeBSD__)
++#define _GNU_SOURCE
++#else
+ #define _DEFAULT_SOURCE
+ #define _BSD_SOURCE
+ #if defined(__NetBSD__)
+ #define _NETBSD_SOURCE /* timersub() */
+ #endif
+ #define _XOPEN_SOURCE 500
++#endif
#include "cubeb-internal.h"
#include "cubeb/cubeb.h"
- #include <alsa/asoundlib.h>
+ #include "cubeb_tracing.h"
diff --git a/www/tor-browser/files/patch-bug1664115 b/www/tor-browser/files/patch-bug1664115
deleted file mode 100644
index 3be934a8c04e..000000000000
--- a/www/tor-browser/files/patch-bug1664115
+++ /dev/null
@@ -1,82 +0,0 @@
-Revert bug 1647717 to workaround the issue of occational tab crashing when
-using any cubeb backends other than pulse-rust to play media. The loss of
-such change will be that users will not be able to do profiling on threads
-created by libcubeb.
-
---- dom/media/AudioStream.cpp.orig 2022-04-19 19:43:36.505544000 +0200
-+++ dom/media/AudioStream.cpp 2022-04-19 19:47:53.111474000 +0200
-@@ -27,7 +27,6 @@
- #endif
- #include "Tracing.h"
- #include "webaudio/blink/DenormalDisabler.h"
--#include "AudioThreadRegistry.h"
- #include "mozilla/StaticPrefs_media.h"
-
- // Use abort() instead of exception in SoundTouch.
-@@ -144,8 +143,6 @@
- mOutChannels(aOutputChannels),
- mState(INITIALIZED),
- mDataSource(aSource),
-- mAudioThreadId(ProfilerThreadId{}),
-- mSandboxed(CubebUtils::SandboxEnabled()),
- mPlaybackComplete(false),
- mPlaybackRate(1.0f),
- mPreservesPitch(true) {}
-@@ -552,17 +549,6 @@
- aWriter.Available());
- }
-
--bool AudioStream::CheckThreadIdChanged() {
-- ProfilerThreadId id = profiler_current_thread_id();
-- if (id != mAudioThreadId) {
-- mAudioThreadId = id;
-- mAudioThreadChanged = true;
-- return true;
-- }
-- mAudioThreadChanged = false;
-- return false;
--}
--
- void AudioStream::AssertIsOnAudioThread() const {
- // This can be called right after CheckThreadIdChanged, because the audio
- // thread can change when not sandboxed.
-@@ -591,9 +577,6 @@
- }
-
- long AudioStream::DataCallback(void* aBuffer, long aFrames) {
-- if (CheckThreadIdChanged() && !mSandboxed) {
-- CubebUtils::GetAudioThreadRegistry()->Register(mAudioThreadId);
-- }
- WebCore::DenormalDisabler disabler;
-
*** 78491 LINES SKIPPED ***