tag to parse
@@ -185,25 +256,26 @@ RuleSets.prototype = {
parseOneRuleset: function(ruletag) {
var default_state = true;
var note = "";
- if (ruletag.attributes.default_off) {
+ var default_off = ruletag.getAttribute("default_off");
+ if (default_off) {
default_state = false;
- note += ruletag.attributes.default_off.value + "\n";
+ note += default_off + "\n";
}
// If a ruleset declares a platform, and we don't match it, treat it as
- // off-by-default
+ // off-by-default. In practice, this excludes "mixedcontent" & "cacert" rules.
var platform = ruletag.getAttribute("platform");
if (platform) {
- if (platform.search(this.localPlatformRegexp) == -1) {
- default_state = false;
+ default_state = false;
+ if (platform == "mixedcontent" && enableMixedRulesets) {
+ default_state = true;
}
note += "Platform(s): " + platform + "\n";
}
var rule_set = new RuleSet(ruletag.getAttribute("name"),
- ruletag.getAttribute("match_rule"),
- default_state,
- note.trim());
+ default_state,
+ note.trim());
// Read user prefs
if (rule_set.name in this.ruleActiveStates) {
@@ -211,46 +283,40 @@ RuleSets.prototype = {
}
var rules = ruletag.getElementsByTagName("rule");
- for(var j = 0; j < rules.length; j++) {
- rule_set.rules.push(new Rule(rules[j].getAttribute("from"),
- rules[j].getAttribute("to")));
+ for (let rule of rules) {
+ rule_set.rules.push(new Rule(rule.getAttribute("from"),
+ rule.getAttribute("to")));
}
var exclusions = ruletag.getElementsByTagName("exclusion");
- for(var j = 0; j < exclusions.length; j++) {
- rule_set.exclusions.push(
- new Exclusion(exclusions[j].getAttribute("pattern")));
+ if (exclusions.length > 0) {
+ rule_set.exclusions = [];
+ for (let exclusion of exclusions) {
+ rule_set.exclusions.push(
+ new Exclusion(exclusion.getAttribute("pattern")));
+ }
}
var cookierules = ruletag.getElementsByTagName("securecookie");
- for(var j = 0; j < cookierules.length; j++) {
- rule_set.cookierules.push(new CookieRule(cookierules[j].getAttribute("host"),
- cookierules[j].getAttribute("name")));
+ if (cookierules.length > 0) {
+ rule_set.cookierules = [];
+ for (let cookierule of cookierules) {
+ rule_set.cookierules.push(
+ new CookieRule(cookierule.getAttribute("host"),
+ cookierule.getAttribute("name")));
+ }
}
var targets = ruletag.getElementsByTagName("target");
- for(var j = 0; j < targets.length; j++) {
- var host = targets[j].getAttribute("host");
- if (!(host in this.targets)) {
- this.targets[host] = [];
- }
- this.targets[host].push(rule_set);
+ for (let target of targets) {
+ var host = target.getAttribute("host");
+ if (!this.targets.has(host)) {
+ this.targets.set(host, []);
+ }
+ this.targets.get(host).push(rule_set);
}
},
- /**
- * Insert any elements from fromList into intoList, if they are not
- * already there. fromList may be null.
- * @param intoList
- * @param fromList
- */
- setInsert: function(intoList, fromList) {
- if (!fromList) return;
- for (var i = 0; i < fromList.length; i++)
- if (intoList.indexOf(fromList[i]) == -1)
- intoList.push(fromList[i]);
- },
-
/**
* Return a list of rulesets that apply to this host
* @param host The host to check
@@ -260,67 +326,85 @@ RuleSets.prototype = {
// Have we cached this result? If so, return it!
var cached_item = this.ruleCache.get(host);
if (cached_item !== undefined) {
- log(DBUG, "Ruleset cache hit for " + host + " items:" + cached_item.length);
- return cached_item;
+ log(DBUG, "Ruleset cache hit for " + host + " items:" + cached_item.length);
+ return cached_item;
}
log(DBUG, "Ruleset cache miss for " + host);
var tmp;
var results = [];
- if (this.targets[host]) {
+ if (this.targets.has(host)) {
// Copy the host targets so we don't modify them.
- results = this.targets[host].slice();
+ results = results.concat(this.targets.get(host));
+ }
+
+ // Ensure host is well-formed (RFC 1035)
+ if (host.indexOf("..") != -1 || host.length > 255) {
+ log(WARN,"Malformed host passed to potentiallyApplicableRulesets: " + host);
+ return null;
}
// Replace each portion of the domain with a * in turn
var segmented = host.split(".");
- for (var i = 0; i < segmented.length; ++i) {
- tmp = segmented[i];
+ for (let i=0; i < segmented.length; i++) {
+ let tmp = segmented[i];
segmented[i] = "*";
- this.setInsert(results, this.targets[segmented.join(".")]);
+ results = results.concat(this.targets.get(segmented.join(".")));
segmented[i] = tmp;
}
// now eat away from the left, with *, so that for x.y.z.google.com we
// check *.z.google.com and *.google.com (we did *.y.z.google.com above)
for (var i = 2; i <= segmented.length - 2; ++i) {
- t = "*." + segmented.slice(i,segmented.length).join(".");
- this.setInsert(results, this.targets[t]);
+ var t = "*." + segmented.slice(i,segmented.length).join(".");
+ results = results.concat(this.targets.get(t));
}
+
+ // Clean the results list, which may contain duplicates or undefined entries
+ var resultSet = new Set(results);
+ resultSet.delete(undefined);
+
log(DBUG,"Applicable rules for " + host + ":");
- if (results.length == 0)
+ if (resultSet.size == 0) {
log(DBUG, " None");
- else
- for (var i = 0; i < results.length; ++i)
- log(DBUG, " " + results[i].name);
+ } else {
+ for (let target of resultSet.values()) {
+ log(DBUG, " " + target.name);
+ }
+ }
// Insert results into the ruleset cache
- this.ruleCache.set(host, results);
- return results;
+ this.ruleCache.set(host, resultSet);
+
+ // Cap the size of the cache. (Limit chosen somewhat arbitrarily)
+ if (this.ruleCache.size > 1000) {
+ // Map.prototype.keys() returns keys in insertion order, so this is a FIFO.
+ this.ruleCache.delete(this.ruleCache.keys().next().value);
+ }
+
+ return resultSet;
},
/**
- * Check to see if the Cookie object c meets any of our cookierule citeria for being marked as secure.
- * knownHttps is true if the context for this cookie being set is known to be https.
+ * Check to see if the Cookie object c meets any of our cookierule criteria for being marked as secure.
* @param cookie The cookie to test
- * @param knownHttps Is the context for setting this cookie is https ?
* @returns {*} ruleset or null
*/
- shouldSecureCookie: function(cookie, knownHttps) {
+ shouldSecureCookie: function(cookie) {
var hostname = cookie.domain;
// cookie domain scopes can start with .
- while (hostname.charAt(0) == ".")
+ while (hostname.charAt(0) == ".") {
hostname = hostname.slice(1);
+ }
- if (!knownHttps && !this.safeToSecureCookie(hostname)) {
- return null;
+ if (!this.safeToSecureCookie(hostname)) {
+ return null;
}
- var rs = this.potentiallyApplicableRulesets(hostname);
- for (var i = 0; i < rs.length; ++i) {
- var ruleset = rs[i];
- if (ruleset.active) {
- for (var j = 0; j < ruleset.cookierules.length; j++) {
- var cr = ruleset.cookierules[j];
+ var potentiallyApplicable = this.potentiallyApplicableRulesets(hostname);
+ for (let ruleset of potentiallyApplicable) {
+ if (ruleset.cookierules !== null && ruleset.active) {
+ for (let cookierules of ruleset.cookierules) {
+ var cr = cookierules;
if (cr.host_c.test(cookie.domain) && cr.name_c.test(cookie.name)) {
return ruleset;
}
@@ -348,14 +432,14 @@ RuleSets.prototype = {
// observed and the domain blacklisted, a cookie might already have been
// flagged as secure.
- if (domain in domainBlacklist) {
+ if (domainBlacklist.has(domain)) {
log(INFO, "cookies for " + domain + "blacklisted");
return false;
}
var cached_item = this.cookieHostCache.get(domain);
if (cached_item !== undefined) {
- log(DBUG, "Cookie host cache hit for " + domain);
- return cached_item;
+ log(DBUG, "Cookie host cache hit for " + domain);
+ return cached_item;
}
log(DBUG, "Cookie host cache miss for " + domain);
@@ -365,11 +449,19 @@ RuleSets.prototype = {
var nonce_path = "/" + Math.random().toString();
var test_uri = "http://" + domain + nonce_path + nonce_path;
+ // Cap the size of the cookie cache (limit chosen somewhat arbitrarily)
+ if (this.cookieHostCache.size > 250) {
+ // Map.prototype.keys() returns keys in insertion order, so this is a FIFO.
+ this.cookieHostCache.delete(this.cookieHostCache.keys().next().value);
+ }
+
log(INFO, "Testing securecookie applicability with " + test_uri);
- var rs = this.potentiallyApplicableRulesets(domain);
- for (var i = 0; i < rs.length; ++i) {
- if (!rs[i].active) continue;
- if (rs[i].apply(test_uri)) {
+ var potentiallyApplicable = this.potentiallyApplicableRulesets(domain);
+ for (let ruleset of potentiallyApplicable) {
+ if (!ruleset.active) {
+ continue;
+ }
+ if (ruleset.apply(test_uri)) {
log(INFO, "Cookie domain could be secured.");
this.cookieHostCache.set(domain, true);
return true;
@@ -388,10 +480,11 @@ RuleSets.prototype = {
*/
rewriteURI: function(urispec, host) {
var newuri = null;
- var rs = this.potentiallyApplicableRulesets(host);
- for(var i = 0; i < rs.length; ++i) {
- if (rs[i].active && (newuri = rs[i].apply(urispec)))
+ var potentiallyApplicable = this.potentiallyApplicableRulesets(host);
+ for (let ruleset of potentiallyApplicable) {
+ if (ruleset.active && (newuri = ruleset.apply(urispec))) {
return newuri;
+ }
}
return null;
}
diff --git a/chromium/send-message.js b/chromium/send-message.js
new file mode 100644
index 000000000000..2ed895523d79
--- /dev/null
+++ b/chromium/send-message.js
@@ -0,0 +1,8 @@
+function sendMessage(type, object, callback) {
+ var packet = {};
+ packet.type = type;
+ if(object){
+ packet.object = object;
+ }
+ chrome.runtime.sendMessage(packet, callback);
+}
diff --git a/chromium/storage.js b/chromium/storage.js
new file mode 100644
index 000000000000..0fed52997fcb
--- /dev/null
+++ b/chromium/storage.js
@@ -0,0 +1,12 @@
+var storage = chrome.storage.local;
+if (chrome.storage.sync) {
+ chrome.storage.sync.set({"sync-set-test": true}, () => {
+ if(!chrome.runtime.lastError){
+ storage = chrome.storage.sync;
+ initializeStoredGlobals();
+ }
+ });
+}
+if (typeof exports != 'undefined') {
+ exports = storage;
+}
diff --git a/chromium/switch-planner.html b/chromium/switch-planner.html
index 87fe4b5ef13a..b0d034a43afb 100644
--- a/chromium/switch-planner.html
+++ b/chromium/switch-planner.html
@@ -1,7 +1,11 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/chromium/switch-planner.js b/chromium/switch-planner.js
index 5ed4d8381f70..1d098e3dde08 100644
--- a/chromium/switch-planner.js
+++ b/chromium/switch-planner.js
@@ -1,7 +1,86 @@
window.onload = function() {
var backgroundPage = chrome.extension.getBackgroundPage();
var tab = document.location.search.match(/tab=([^&]*)/)[1];
- document.getElementById("content").innerHTML =
- backgroundPage.switchPlannerDetailsHtml(tab);
+ var content = document.getElementById("content");
+
+ var nrw_text_div = document.createElement("div");
+ nrw_text_div.innerText = "Unrewritten HTTP resources loaded from this tab (enable HTTPS on these domains and add them to HTTPS Everywhere):"
+ var nrw_div = switchPlannerDetailsHtmlSection(
+ backgroundPage.sortSwitchPlanner(tab, "nrw"),
+ backgroundPage.switchPlannerInfo[tab]["nrw"]
+ );
+ var rw_text_div = document.createElement("div");
+ rw_text_div.style.marginTop = "20px";
+ rw_text_div.innerText = "Resources rewritten successfully from this tab (update these in your source code):"
+ var rw_div = switchPlannerDetailsHtmlSection(
+ backgroundPage.sortSwitchPlanner(tab, "rw"),
+ backgroundPage.switchPlannerInfo[tab]["rw"]
+ );
+
+ content.appendChild(nrw_text_div);
+ content.appendChild(nrw_div);
+ content.appendChild(rw_text_div);
+ content.appendChild(rw_div);
};
+/**
+ * Generate the detailed html fot the switch planner, by section
+ * */
+function switchPlannerDetailsHtmlSection(asset_host_list, link_keys) {
+ var wrapper_div = document.createElement("div");
+ if (asset_host_list.length == 0) {
+ wrapper_div.style.fontWeight = "bold";
+ wrapper_div.innerText = "none";
+ return wrapper_div;
+ }
+
+ for (var i = asset_host_list.length - 1; i >= 0; i--) {
+ var host = asset_host_list[i][3];
+ var activeCount = asset_host_list[i][1];
+ var passiveCount = asset_host_list[i][2];
+
+ var div = document.createElement("div");
+ div.style.marginTop = "20px";
+ var b = document.createElement("b");
+ b.innerText = host;
+ div.appendChild(b);
+
+ if (activeCount > 0) {
+ var active_div = document.createElement("div");
+ active_div.appendChild(document.createTextNode(activeCount + " active"));
+ for(link of linksFromKeys(link_keys[host][1])){
+ active_div.appendChild(link);
+ }
+ div.appendChild(active_div);
+ }
+ if (passiveCount > 0) {
+ var passive_div = document.createElement("div");
+ passive_div.appendChild(document.createTextNode(passiveCount + " passive"));
+ for(link of linksFromKeys(link_keys[host][0])){
+ passive_div.appendChild(link);
+ }
+ div.appendChild(passive_div);
+ }
+ wrapper_div.appendChild(div);
+ }
+ return wrapper_div;
+}
+
+/**
+ * Generate a HTML link from urls in map
+ * map: the map containing the urls
+ * */
+function linksFromKeys(map) {
+ if (typeof map == 'undefined') return "";
+ var links = [];
+ for (var key in map) {
+ if (map.hasOwnProperty(key)) {
+ var link = document.createElement("a");
+ link.style.display = "block";
+ link.href = key;
+ link.innerText = key;
+ links.push(link);
+ }
+ }
+ return links;
+}
diff --git a/chromium/translation.js b/chromium/translation.js
new file mode 100644
index 000000000000..d4d65f925b4e
--- /dev/null
+++ b/chromium/translation.js
@@ -0,0 +1,7 @@
+document.addEventListener("DOMContentLoaded", function () {
+ // auto-translate all elements with i18n attributes
+ var elem = document.querySelectorAll("[i18n]");
+ for (let el of elem) {
+ el.innerText = chrome.i18n.getMessage(el.getAttribute("i18n"));
+ }
+});
diff --git a/chromium/util.js b/chromium/util.js
index 3af43d695a92..9d926dc1e76e 100644
--- a/chromium/util.js
+++ b/chromium/util.js
@@ -1,26 +1,27 @@
"use strict";
-var VERB=1;
-var DBUG=2;
-var INFO=3;
-var NOTE=4;
-var WARN=5;
+var VERB = 1;
+var DBUG = 2;
+var INFO = 3;
+var NOTE = 4;
+var WARN = 5;
// FYI: Logging everything is /very/ slow. Chrome will log & buffer
// these console logs even when the debug tools are closed. :(
// TODO: Add an easy UI to change the log level.
-// (Developers can just type DEFAULT_LOG_LEVEL=1 in the console)
-var DEFAULT_LOG_LEVEL=4;
+// (Developers can just type DEFAULT_LOG_LEVEL=VERB in the console)
+var DEFAULT_LOG_LEVEL = NOTE;
console.log("Hey developer! Want to see more verbose logging?");
-console.log("Type this into the console: DEFAULT_LOG_LEVEL=1");
+console.log("Type this into the console: DEFAULT_LOG_LEVEL=VERB");
+console.log("Accepted levels are VERB, DBUG, INFO, NOTE and WARN, default is NOTE");
function log(level, str) {
- if (level >= DEFAULT_LOG_LEVEL) {
- if (level === WARN) {
- // Show warning with a little yellow icon in Chrome.
- console.warn(str);
- } else {
- console.log(str);
- }
+ if (level >= DEFAULT_LOG_LEVEL) {
+ if (level === WARN) {
+ // Show warning with a little yellow icon in Chrome.
+ console.warn(str);
+ } else {
+ console.log(str);
}
+ }
}
diff --git a/common/https-everywhere-banner.png b/common/https-everywhere-banner.png
new file mode 100644
index 000000000000..980c1eee3e47
Binary files /dev/null and b/common/https-everywhere-banner.png differ
diff --git a/common/icons/icon-active-128.png b/common/icons/icon-active-128.png
new file mode 100644
index 000000000000..12c1a63bff5c
Binary files /dev/null and b/common/icons/icon-active-128.png differ
diff --git a/common/icons/icon-active-16.png b/common/icons/icon-active-16.png
new file mode 100644
index 000000000000..1c2df37087e6
Binary files /dev/null and b/common/icons/icon-active-16.png differ
diff --git a/common/icons/icon-active-24.png b/common/icons/icon-active-24.png
new file mode 100644
index 000000000000..cfaa83bd0e28
Binary files /dev/null and b/common/icons/icon-active-24.png differ
diff --git a/common/icons/icon-active-38.png b/common/icons/icon-active-38.png
new file mode 100644
index 000000000000..30a41b05d948
Binary files /dev/null and b/common/icons/icon-active-38.png differ
diff --git a/common/icons/icon-active-48.png b/common/icons/icon-active-48.png
new file mode 100644
index 000000000000..427a300151e3
Binary files /dev/null and b/common/icons/icon-active-48.png differ
diff --git a/common/icons/icon-blocking-128.png b/common/icons/icon-blocking-128.png
new file mode 100644
index 000000000000..55a7fde1aa7f
Binary files /dev/null and b/common/icons/icon-blocking-128.png differ
diff --git a/common/icons/icon-blocking-16.png b/common/icons/icon-blocking-16.png
new file mode 100644
index 000000000000..a9feab777af1
Binary files /dev/null and b/common/icons/icon-blocking-16.png differ
diff --git a/common/icons/icon-blocking-24.png b/common/icons/icon-blocking-24.png
new file mode 100644
index 000000000000..0fc12fb496f0
Binary files /dev/null and b/common/icons/icon-blocking-24.png differ
diff --git a/common/icons/icon-blocking-38.png b/common/icons/icon-blocking-38.png
new file mode 100644
index 000000000000..4dd9ab1caa03
Binary files /dev/null and b/common/icons/icon-blocking-38.png differ
diff --git a/common/icons/icon-blocking-48.png b/common/icons/icon-blocking-48.png
new file mode 100644
index 000000000000..ff13d72255ba
Binary files /dev/null and b/common/icons/icon-blocking-48.png differ
diff --git a/common/icons/icon-disabled-128.png b/common/icons/icon-disabled-128.png
new file mode 100644
index 000000000000..543b428ee391
Binary files /dev/null and b/common/icons/icon-disabled-128.png differ
diff --git a/common/icons/icon-disabled-16.png b/common/icons/icon-disabled-16.png
new file mode 100644
index 000000000000..505f2cf8028c
Binary files /dev/null and b/common/icons/icon-disabled-16.png differ
diff --git a/common/icons/icon-disabled-24.png b/common/icons/icon-disabled-24.png
new file mode 100644
index 000000000000..a887e380b16b
Binary files /dev/null and b/common/icons/icon-disabled-24.png differ
diff --git a/common/icons/icon-disabled-38.png b/common/icons/icon-disabled-38.png
new file mode 100644
index 000000000000..57c80f6a0f85
Binary files /dev/null and b/common/icons/icon-disabled-38.png differ
diff --git a/common/icons/icon-disabled-48.png b/common/icons/icon-disabled-48.png
new file mode 100644
index 000000000000..2f47a2036f43
Binary files /dev/null and b/common/icons/icon-disabled-48.png differ
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 000000000000..3a7d52816e87
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,7 @@
+# HTTPS Everywhere Documentation
+
+The markdown files contained in this path provide documentation for contributing to HTTPS Everywhere. These files are also templates that can be used to generate the markup for HTTPS Everywhere pages under `https://www.eff.org/https-everywhere`. To do so, install the program `pandoc` and run
+
+ pandoc faq.md
+
+Copy the output, excluding the header on the first line, to the source of the relevant page within the CMS. Note that some of the pages are dynamically generated and are not generated from templates contained here.
diff --git a/docs/default b/docs/default
new file mode 120000
index 000000000000..3e0b4191bfec
--- /dev/null
+++ b/docs/default
@@ -0,0 +1 @@
+en_US
\ No newline at end of file
diff --git a/docs/en_US/development.md b/docs/en_US/development.md
new file mode 100644
index 000000000000..0388e2573ea7
--- /dev/null
+++ b/docs/en_US/development.md
@@ -0,0 +1,82 @@
+## HTTPS Everywhere Development
+
+### Pointers for developers
+
+- **License:** GPL version 3+ (although most of the code is GPL-2 compatible)
+- **Source code:** Available via Git with `git clone https://github.com/EFForg/https-everywhere.git`. You can fork and open pull requests using Github at [https://github.com/EFForg/https-everywhere](https://github.com/EFForg/https-everywhere).
+- **Translations:** If you would like to help translate HTTPS Everywhere into another language, you can do that [through Transifex](https://www.transifex.com/otf/torproject/).
+- **Bug tracker:** Use the [GitHub issue tracker](https://github.com/EFForg/https-everywhere/issues/) or the [Tor Project issue tracker](https://trac.torproject.org/projects/tor/report/19). For the Tor Project issue tracker, you can make an account or use the anonymous one — "cypherpunks"/"writecode". You won't see replies unless you put an email address in the CC field. Bugs that are caused by rulesets should be tagged "httpse-ruleset-bug", and can be viewed [in this report](https://trac.torproject.org/projects/tor/report/48).
+- **Mailing lists:** The [https-everywhere](https://lists.eff.org/mailman/listinfo/https-everywhere) list ([archives](https://lists.eff.org/pipermail/https-everywhere/)) is for discussing the project as a whole; the [https-everywhere-rules](https://lists.eff.org/mailman/listinfo/https-everywhere-rules) mailing list ([archives](https://lists.eff.org/pipermail/https-everywhere-rules)) is for discussing the [rulesets](https://www.eff.org/https-everywhere/rulesets) and their contents, including patches and git pull requests.
+- **IRC:** `#https-everywhere` on `irc.oftc.net`. If you ask a question, be sure to stay in the channel — someone may reply a few hours or a few days later.
+
+### Testing and contributing changes to the source code
+
+HTTPS Everywhere consists of a large number of rules for switching sites from HTTP to HTTPS. You can read more about how to write these rules [here](https://www.eff.org/https-everywhere/rulesets).
+
+If you want to create new rules to submit to us, we expect them to be in the src/chrome/content/rules directory. That directory also contains a useful script, make-trivial-rule, to create a simple rule for a specified domain. There is also a script called trivial-validate.py, to check all the pending rules for several common errors and oversights. For example, if you wanted to make a rule for the example.com domain, you could run
+
+ bash ./make-trivial-rule example.com
+
+inside the rules directory. This would create Example.com.xml, which you could then take a look at and edit based on your knowledge of any specific URLs at example.com that do or don't work in HTTPS.
+
+Before submitting your change, you should test it in Firefox and/or Chrome, as applicable. You can build the latest version of the extension and run it in a standalone Firefox profile using:
+
+ bash ./test.sh --justrun
+
+Similarly, to build and run in a standalone Chromium profile, run:
+
+ bash ./run-chromium.sh
+
+You should thoroughly test your changes on the target site: Navigate to as wide a variety of pages as you can find. Try to comment or log in if applicable. Make sure everything still works properly.
+
+After running your manual tests, run the automated tests and the fetch tests:
+
+ bash ./test.sh
+
+ bash ./fetch-test.sh
+
+This will catch some of the most common types of errors, but is not a guaranteed of correctness.
+
+Once you've tested your changes, you can submit them for review via any of the following:
+
+- Open a pull request at [https://github.com/EFForg/https-everywhere](https://github.com/EFForg/https-everywhere).
+- Email https-everywhere-rules@eff.org to tell us about your changes. You can use the following command to create a patch file: `git format-patch`
+
+### A quick HOWTO on working with Git
+
+You may want to also look at the [Git Reference](http://gitref.org/), [GitHub Help Site](https://help.github.com/) and the [Tor Project's Git documentation](https://gitweb.torproject.org/githax.git/tree/doc/Howto.txt) to fill in the gaps here, but the below should be enough to get the basics of the workflow down.
+
+First, tell git your name:
+
+ git config --global user.name "Your Name" git config --global user.email "you@example.com"
+
+Then, get a copy of the 'origin' repository:
+
+ git clone https://github.com/EFForg/https-everywhere.git
+ cd https-everywhere
+
+Alternatively, if you already have a Github account, you can create a "fork" of the repository on Github at [https://github.com/EFForg/https-everywhere](https://github.com/EFForg/https-everywhere). See [this page](https://help.github.com/articles/fork-a-repo) for a tutorial.
+
+Once you have a local copy of the repository, create a new branch for your changes and check it out:
+
+ git checkout -b my-new-rules master
+
+When you want to send us your work, you'll need to add any new files to the index with git add:
+
+ git add ./src/chrome/content/rules/MyRule1.xml
+ git add ./src/chrome/content/rules/MyRule2.xml
+
+You can now commit your changes to the local branch. To make things easier, you should commit each xml file individually:
+
+ git commit ./src/chrome/content/rules/MyRule1.xml
+ git commit ./src/chrome/content/rules/MyRule2.xml
+
+Now, you need a place to publish your changes. You can create a github account here: [https://github.com/join](https://help.github.com/). [https://help.github.com/](https://help.github.com/) describes the account creation process and some other github-specific things.
+
+Once you have created your account and added your remote in your local checkout, you want to push your branch to your github remote:
+
+ git push github my-new-rules:my-new-rules
+
+Periodically, you should re-fetch the master repository:
+
+ git pull master
diff --git a/docs/en_US/faq.md b/docs/en_US/faq.md
new file mode 100644
index 000000000000..3ca4656371d7
--- /dev/null
+++ b/docs/en_US/faq.md
@@ -0,0 +1,136 @@
+## HTTPS Everywhere FAQ
+
+This page answers frequently-asked questions about EFF's [HTTPS Everywhere](https://www.eff.org/https-everywhere) project. If your question isn't answered below, you can try the resources [listed here](https://www.eff.org/https-everywhere/development).
+
+- [What if HTTPS Everywhere breaks some site that I use?](#what-if-https-everywhere-breaks-some-site-that-i-use)
+- [Why is HTTPS Everywhere preventing me from joining this hotel/school/other wireless network?](#why-is-https-everywhere-preventing-me-from-joining-this-hotelschoolother-wireless-network)
+- [Will there be a version of HTTPS Everywhere for IE, Safari, or some other browser?](#will-there-be-a-version-of-https-everywhere-for-ie-safari-or-some-other-browser)
+- [Why use a whitelist of sites that support HTTPS? Why can't you try to use HTTPS for every last site, and only fall back to HTTP if it isn't available?](#why-use-a-whitelist-of-sites-that-support-https-why-cant-you-try-to-use-https-for-every-last-site-and-only-fall-back-to-http-if-it-isnt-available)
+- [How do I get rid of/move the HTTPS Everywhere button in the toolbar?](#how-do-i-get-rid-ofmove-the-https-everywhere-button-in-the-toolbar)
+- [When does HTTPS Everywhere protect me? When does it not protect me?](#when-does-https-everywhere-protect-me-when-does-it-not-protect-me)
+- [What does HTTPS Everywhere protect me against?](#what-does-https-everywhere-protect-me-against)
+- [How do I get support for an additional site in HTTPS Everywhere?](#how-do-i-get-support-for-an-additional-site-in-https-everywhere)
+- [What if the site doesn't support HTTPS, or only supports it for some activities, like entering credit card information?](#what-if-the-site-doesnt-support-https-or-only-supports-it-for-some-activities-like-entering-credit-card-information)
+- [Isn't it more expensive or slower for a site to support HTTPS compared to regular HTTP?](#isnt-it-more-expensive-or-slower-for-a-site-to-support-https-compared-to-regular-http)
+- [Why should I use HTTPS Everywhere instead of just typing https:// at the beginning of site names?](#why-should-i-use-https-everywhere-instead-of-just-typing-https-at-the-beginning-of-site-names)
+- [Why does HTTPS Everywhere include rules for sites like PayPal that already require HTTPS on all their pages?](#why-does-https-everywhere-include-rules-for-sites-like-paypal-that-already-require-https-on-all-their-pages)
+- [What do the different colors for rulesets in the Firefox toolbar menu mean?](#what-do-the-different-colors-for-rulesets-in-the-firefox-toolbar-menu-mean)
+- [What do the different colors of the HTTPS Everywhere icon mean?](#what-do-the-different-colors-of-the-https-everywhere-icon-mean)
+- [I'm having a problem installing the browser extension.](#im-having-a-problem-installing-the-browser-extension.)
+- [How do I uninstall/remove HTTPS Everywhere?](#how-do-i-uninstallremove-https-everywhere)
+- [How do I add my own site to HTTPS Everywhere?](#how-do-i-add-my-own-site-to-https-everywhere)
+- [Can I help translate HTTPS Everywhere into my own language?](#can-i-help-translate-https-everywhere-into-my-own-language)
+
+### [What if HTTPS Everywhere breaks some site that I use?](#what-if-https-everywhere-breaks-some-site-that-i-use)
+
+This is occasionally possible because of inconsistent support for HTTPS on sites (e.g., when a site seems to support HTTPS access but makes a few, unpredictable, parts of the site unavailable in HTTPS). If you [report the problem to us](https://github.com/EFForg/https-everywhere/issues), we can try to fix it. In the meantime, you can disable the rule affecting that particular site in your own copy of HTTPS Everywhere by clicking on the HTTPS Everywhere toolbar button and unchecking the rule for that site.
+
+You can also report the problem to the site, since they have the power to fix it!
+
+### [Why is HTTPS Everywhere preventing me from joining this hotel/school/other wireless network?](#why-is-https-everywhere-preventing-me-from-joining-this-hotelschoolother-wireless-network)
+
+Some wireless networks hijack your HTTP connections when you first join them, in order to demand authentication or simply to try to make you agree to terms of use. HTTPS pages are protected against this type of hijacking, which is as it should be. If you go to a website that isn't protected by HTTPS Everywhere or by HSTS (currently, example.com is one such site), that will allow your connection to be captured and redirected to the authentication or terms of use page.
+
+### [Will there be a version of HTTPS Everywhere for IE, Safari, or some other browser?](#will-there-be-a-version-of-https-everywhere-for-ie-safari-or-some-other-browser)
+
+As of early 2012, the Safari extension API does not offer a way to perform secure rewriting of http requests to https. But if you happen to know a way to perform secure request rewriting in these browsers, feel free to let us know at https-everywhere at EFF.org (but note that modifying document.location or window.location in JavaScript is not secure).
+
+### [Why use a whitelist of sites that support HTTPS? Why can't you try to use HTTPS for every last site, and only fall back to HTTP if it isn't available?](#why-use-a-whitelist-of-sites-that-support-https-why-cant-you-try-to-use-https-for-every-last-site-and-only-fall-back-to-http-if-it-isnt-available)
+
+There are several problems with the idea of trying to automatically detect HTTPS on every site. There is no guarantee that sites are going to give the same response via HTTPS that they give via HTTP. Also, it's not possible to test for HTTPS in real time without introducing security vulnerabilities (What should the extension do if the HTTPS connection attempt fails? Falling back to insecure HTTP isn't safe). And in some cases, HTTPS Everywhere has to perform quite complicated transformations on URIs — for example until recently the Wikipedia rule had to turn an address like `http://en.wikipedia.org/wiki/World_Wide_Web` into one like `https://secure.wikimedia.org/wikipedia/en/wiki/World_Wide_Web` because HTTPS was not available on Wikipedia's usual domains.
+
+### [How do I get rid of/move the HTTPS Everywhere button in the toolbar?](#how-do-i-get-rid-ofmove-the-https-everywhere-button-in-the-toolbar)
+
+The HTTPS Everywhere button is useful because it allows you to see, and disable, a ruleset if it happens to be causing problems with a site. But if you'd rather disable it, go to View->Toolbars->Customize, and drag the button out of the toolbar into the Addons bar at the bottom of the page. Then you can hide the Addons bar. (In theory you should be able to drag it into the tray of available icons too, but that may trigger [this bug](https://trac.torproject.org/projects/tor/ticket/6276).
+
+### [When does HTTPS Everywhere protect me? When does it not protect me?](#when-does-https-everywhere-protect-me-when-does-it-not-protect-me)
+
+HTTPS Everywhere protects you only when you are using _encrypted portions of supported web sites_. On a supported site, it will automatically activate HTTPS encryption for all known supported parts of the site (for some sites, this might be only a portion of the entire site). For example, if your web mail provider does not support HTTPS at all, HTTPS Everywhere can't make your access to your web mail secure. Similarly, if a site allows HTTPS for text but not images, someone might be able to see which images your browser loads and guess what you're accessing.
+
+HTTPS Everywhere depends entirely on the security features of the individual web sites that you use; it _activates_ those security features, but it can't _create_ them if they don't already exist. If you use a site not supported by HTTPS Everywhere or a site that provides some information in an insecure way, HTTPS Everywhere can't provide additional protection for your use of that site. Please remember to check that a particular site's security is working to the level you expect before sending or receiving confidential information, including passwords.
+
+One way to determine what level of protection you're getting when using a particular site is to use a packet-sniffing tool like [Wireshark](https://www.wireshark.org/) to record your own communications with the site. The resulting view of your communications is about the same as what an eavesdropper on your wifi network or at your ISP would see. This way, you can determine whether some or all of your communications would be protected; however, it may be quite time-consuming to make sense of the Wireshark output with enough care to get a definitive answer.
+
+You can also turn on the "Block all HTTP requests" feature for added protection. Instead of loading insecure pages or images, HTTPS Everywhere will block them outright.
+
+### [What does HTTPS Everywhere protect me against?](#what-does-https-everywhere-protect-me-against)
+
+On supported parts of supported sites, HTTPS Everywhere enables the sites' HTTPS protection which can protect you against eavesdropping and tampering with the contents of the site or with the information you send to the site. Ideally, this provides some protection against an attacker learning the content of the information flowing in each direction — for instance, the text of e-mail messages you send or receive through a webmail site, the products you browse or purchase on an e-commerce site, or the particular articles you read on a reference site.
+
+However, HTTPS Everywhere **does not conceal the identities of the sites you access**, the amount of time you spend using them, or the amount of information you upload or download from a particular site. For example, if you access `http://www.eff.org/issues/nsa-spying` and HTTPS Everywhere rewrites it to `https://www.eff.org/issues/nsa-spying`, an eavesdropper can still trivially recognize that you are accessing www.eff.org (but might not know which issue you are reading about). In general, the entire hostname part of the URL remains exposed to the eavesdropper because this must be sent repeatedly in unencrypted form while setting up the connection. Another way of saying this is that HTTPS was never designed to conceal the identity of the sites that you visit.
+
+Researchers have also shown that it may be possible for someone to figure out more about what you're doing on a site merely through careful observation of the amount of data you upload and download, or the timing patterns of your use of the site. A simple example is that if the site only has one page of a certain total size, anyone downloading exactly that much data from the site is probably accessing that page.
+
+If you want to protect yourself against monitoring of the sites you visit, consider using HTTPS Everywhere together with software like [Tor](https://www.torproject.org/).
+
+### [How do I get support for an additional site in HTTPS Everywhere?](#how-do-i-get-support-for-an-additional-site-in-https-everywhere)
+
+You can learn [how to write rules](https://www.eff.org/https-everywhere/rulesets) that teach HTTPS Everywhere to support new sites. You can install these rules in your own browser or send them to us for possible inclusion in the official version.
+
+### [What if the site doesn't support HTTPS, or only supports it for some activities, like entering credit card information?](#what-if-the-site-doesnt-support-https-or-only-supports-it-for-some-activities-like-entering-credit-card-information)
+
+You could try to contact the site and point out that using HTTPS for all site features is an increasingly common practice nowadays and protects users (and sites) against a variety of Internet attacks. For instance, it defends against the ability of other people on a wifi network to spy on your use of the site or even take over your account. You can also point out that credit card numbers aren't the only information you consider private or sensitive.
+
+Sites like Google, Twitter, and Facebook now support HTTPS for non-financial information — for general privacy and security reasons.
+
+### [Isn't it more expensive or slower for a site to support HTTPS compared to regular HTTP?](#isnt-it-more-expensive-or-slower-for-a-site-to-support-https-compared-to-regular-http)
+
+It can be, but some sites have been pleasantly surprised to see how practical it can be. Also, experts at Google are currently implementing several enhancements to the TLS protocol that make HTTPS dramatically faster; if these enhancements are added to the standard soon, the speed gap between the two should almost disappear. See [Adam Langley's description of the HTTPS deployment situation](https://www.imperialviolet.org/2010/06/25/overclocking-ssl.html) for more details on these issues. Notably, Langley states: "In order to [enable HTTPS by default for Gmail] we had to deploy no additional machines and no special hardware. On our production frontend machines, SSL/TLS accounts for less than 1% of the CPU load, less than 10KB of memory per connection and less than 2% of network overhead."
+
+It used to be expensive to purchase a certificate for HTTPS usage, but they can now be obtained for free from [Let's Encrypt](https://letsencrypt.org/) as well.
+
+### [Why should I use HTTPS Everywhere instead of just typing https:// at the beginning of site names?](#why-should-i-use-https-everywhere-instead-of-just-typing-https-at-the-beginning-of-site-names)
+
+Even if you normally type https://, HTTPS Everywhere might protect you if you occasionally forget. Also, it can rewrite other people's links that you follow. For instance, if you click on a link to `http://en.wikipedia.org/wiki/EFF_Pioneer_Award`, HTTPS Everywhere will automatically rewrite the link to `https://en.wikimedia.org/wikipedia/en/wiki/EFF_Pioneer_Award`. Thus, you might get some protection even if you wouldn't have noticed that the target site is available in HTTPS.
+
+### [Why does HTTPS Everywhere include rules for sites like PayPal that already require HTTPS on all their pages?](#why-does-https-everywhere-include-rules-for-sites-like-paypal-that-already-require-https-on-all-their-pages)
+
+HTTPS Everywhere, like the [HSTS spec](https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security), tries to address an attack called [SSL stripping](https://moxie.org/software/sslstrip/). Users are only protected against the SSL stripping attack if their browsers don't even _try_ to connect to the HTTP version of the site — even if the site would have redirected them to the HTTPS version. With HTTPS Everywhere, the browser won't even attempt the insecure HTTP connection, even if that's what you ask it to do. (Note that HTTPS Everywhere currently does not include a comprehensive list of such sites, which are mainly financial institutions.)
+
+### [What do the different colors for rulesets in the Firefox toolbar menu mean?](#what-do-the-different-colors-for-rulesets-in-the-firefox-toolbar-menu-mean)
+
+The colors are:
+
+Dark Green: ruleset was active in loading the resources in the current page.
+
+Light Green: ruleset was ready to prevent HTTP loads in the current page, but everything that the ruleset would have covered was loaded over HTTPS anyway (in the code, light green is called a "moot rule").
+
+Dark Brown or Clockwise Red Arrow: broken rule -- the ruleset is active but the server is redirecting at least some URLs back from HTTPS to HTTP.
+
+Gray: the ruleset is disabled.
+
+### [What do the different colors of the HTTPS Everywhere icon mean?](#what-do-the-different-colors-of-the-https-everywhere-icon-mean)
+
+The colors are:
+
+Light Blue: HTTPS Everywhere is enabled.
+
+Dark Blue: HTTPS Everywhere is both enabled and active in loading resources in the current page.
+
+Red: All unencrypted requests will be blocked by HTTPS Everywhere.
+
+Gray: HTTPS Everywhere is disabled.
+
+### [I'm having a problem installing the browser extension.](#im-having-a-problem-installing-the-browser-extension.)
+
+Some people report that installing HTTPS Everywhere gives them the error: "The addon could not be downloaded because of a connection failure on www.eff.org." This may be caused by Avast anti-virus, which blocks installation of browser extensions. You may be able to [install from addons.mozilla.org instead](https://addons.mozilla.org/en-US/firefox/addon/https-everywhere/).
+
+### [How do I uninstall/remove HTTPS Everywhere?](#how-do-i-uninstallremove-https-everywhere)
+
+In Firefox: Click the menu button in the top right of the window at the end of the toolbar (it looks like three horizontal lines), and then click "Add-ons" (it looks like a puzzle piece). Scroll until you see HTTPS Everywhere, and then click the "Remove" button all the way on the right. You can then safely close the Add-ons tab.
+
+In Chrome: Click the menu button in the top right of the window at the end of the toolbar (it looks like three horizontal lines), and then click "Settings" near the bottom. On the left, click "Extensions". Scroll until you see HTTPS Everywhere, and then click the trash can icon on the right, and then click "Remove" to confirm removal. You can then safely close the Settings tab.
+
+### [How do I add my own site to HTTPS Everywhere?](#how-do-i-add-my-own-site-to-https-everywhere)
+
+We're excited that you want your site in HTTPS Everywhere! However, remember that not everyone who visits your site has our extension installed. If you run a web site, you can make it default to HTTPS for everyone, not just HTTPS Everywhere users. And it's less work! The steps you should take, in order, are:
+
+1. Set up a [redirect](https://www.sslshopper.com/apache-redirect-http-to-https.html) from HTTP to HTTPS on your site.
+2. [Add the Strict-Transport-Security (HSTS) header on your site.](https://raymii.org/s/tutorials/HTTP_Strict_Transport_Security_for_Apache_NGINX_and_Lighttpd.html)
+3. [Add your site to the HSTS Preload list.](https://hstspreload.appspot.com/)
+
+These steps will give your site much better protection than adding it to HTTPS Everywhere. Generally speaking, once you are done, there is no need to add your site to HTTPS Everywhere. However, if you would still like to, please follow the [instructions on writing rulesets](https://eff.org/https-everywhere/rulesets), and indicate that you are the author of the web site when you submit your pull request.
+
+### [Can I help translate HTTPS Everywhere into my own language? ](#can-i-help-translate-https-everywhere-into-my-own-language)
+
+Yes! We use the Tor Project's Transifex account for translations, please sign up to help translate at [https://www.transifex.com/otf/torproject](https://www.transifex.com/otf/torproject).
diff --git a/docs/en_US/rulesets.md b/docs/en_US/rulesets.md
new file mode 100644
index 000000000000..0ebde024a717
--- /dev/null
+++ b/docs/en_US/rulesets.md
@@ -0,0 +1,103 @@
+## HTTPS Everywhere Rulesets
+
+This page describes how to write rulesets for [HTTPS Everywhere](https://eff.org/https-everywhere), a browser extension that switches sites over from HTTP to HTTPS automatically. HTTPS Everywhere comes with [thousands](http://www.eff.org/https-everywhere/atlas/) of rulesets that tell HTTPS Everywhere which sites it should switch to HTTPS and how. If there is a site that offers HTTPS and is not handled by the extension, this guide will explain how to add that site.
+
+#### [Rulesets](#rulesets)
+
+A `ruleset` is an [XML](http://www.xml.com/pub/a/98/10/guide0.html?page=2) file describing behavior for a site or group of sites. A ruleset contains one or more `rules`. For example, here is [`RabbitMQ.xml`](https://github.com/efforg/https-everywhere/blob/master/src/chrome/content/rules/RabbitMQ.xml), from the addon distribution:
+
+```xml
+
+
+
+
+
+
+```
+
+The `target` tag specifies which web sites the ruleset applies to. The `rule` tag specifies how URLs on those web sites should be rewritten. This rule says that any URLs on `rabbitmq.com` and `www.rabbitmq.com` should be modified by replacing "http:" with "https:".
+
+When the browser loads a URL, HTTPS Everywhere takes the host name (e.g. www.rabbitmq.com ) and searches its ruleset database for rulesets that match that host name.
+
+HTTPS Everywhere then tries each rule in those rulesets against the full URL. If the [Regular Expression](http://www.regular-expressions.info/quickstart.html), or regexp, in one of those rules matches, HTTPS Everywhere [rewrites the URL](#rules-and-regular-expressions) according the `to` attribute of the rule.
+
+#### [Wildcard Targets](#wildcard-targets)
+
+To cover all of a domain's subdomains, you may want to specify a wildcard target like `*.twitter.com`. Specifying this type of left-side wildcard matches any host name with `.twitter.com` as a suffix, e.g. `www.twitter.com` or `urls.api.twitter.com`. You can also specify a right-side wildcard like `www.google.*`. Right-side wildcards, unlike left-side wildcards, apply only one level deep. So if you want to cover all countries you'll generally need to specify `www.google.*`, `www.google.co.*`, and `www.google.com.*` to cover domains like `www.google.co.uk` or `www.google.com.au`. You should use wildcard targets only when you have rules that apply to the entire wildcard space. If your rules only apply to specific hosts, you should list each host as a separate target.
+
+#### [Rules and Regular Expressions](#rules-and-regular-expressions)
+
+The `rule` tags do the actual rewriting work. The `from` attribute of each rule is a [regular expression](http://www.regular-expressions.info/quickstart.html) matched against a full URL. You can use rules to rewrite URLs in simple or complicated ways. Here's a simplified (and now obsolete) example for Wikipedia:
+
+```xml
+
+
+
+
+
+```
+
+The `to` attribute replaces the text matched by the `from` attribute. It can contain placeholders like `$1` that are replaced with the text matched inside the parentheses.
+
+This rule rewrites a URL like `http://fr.wikipedia.org/wiki/Chose` to `https://secure.wikimedia.org/wikipedia/fr/wiki/Chose`. Notice, again, that the target is allowed to contain (just one) * as a wildcard meaning "any".
+
+Rules are applied in the order they are listed within each ruleset. Order between rulesets is unspecified. Only the first rule or exception matching a given URL is applied.
+
+Rules are evaluated using [Javascript regular expressions](http://www.regular-expressions.info/javascript.html), which are similar but not identical to [Perl-style regular expressions.](http://www.regular-expressions.info/pcre.html) Note that if your rules include ampersands (&), they need to be appropriately XML-encoded: replace each occurrence of **&** with **&**.
+
+#### [Exclusions](#exclusions)
+
+An exclusion specifies a pattern, using a regular expression, for URLs where the rule should **not** be applied. The Stack Exchange rule contains an exclusion for the OpenID login path, which breaks logins if it is rewritten:
+
+```xml
+
+```
+
+Exclusions are always evaluated before rules in a given ruleset. Matching any exclusion means that a URL won't match any rules within the same ruleset. However, if other rulesets match the same target hosts, the rules in those rulesets will still be tried.
+
+#### [Style Guide](#style-guide)
+
+There are many different ways you can write a ruleset, or regular expression within the ruleset. It's easier for everyone to understand the rulesets if they follow similar practices. You should read and follow the [Ruleset style guide](https://github.com/EFForg/https-everywhere/blob/master/CONTRIBUTING.md#ruleset-style-guide). Some of the guidelines in that document are intended to make [Ruleset testing](https://github.com/EFForg/https-everywhere/blob/master/ruleset-testing.md) less cumbersome.
+
+#### [Secure Cookies](#secure-cookies)
+
+Many HTTPS websites fail to correctly set the [secure flag](https://secure.wikimedia.org/wikipedia/en/wiki/HTTP_cookie#Secure_and_HttpOnly) on authentication and/or tracking cookies. HTTPS Everywhere provides a facility for turning this flag on. For instance:
+
+```xml
+
+```
+
+The "host" parameter is a regexp specifying which domains should have their cookies secured; the "name" parameter is a regexp specifying which cookies should be secured. For a cookie to be secured, it must be sent by a target host for that ruleset. It must also be sent over HTTPS and match the name regexp. For cookies set by Javascript in a web page, the Firefox extension can't tell which host set the cookie and instead uses the domain attribute of the cookie to check against target hosts. A cookie whose domain attribute starts with a "." (the default, if not specified by Javascript) will be matched as if it was sent from a host name made by stripping the leading dot.
+
+#### [Testing](#testing)
+
+We use an [automated checker](https://github.com/hiviah/https-everywhere-checker) to run some basic tests on all rulesets. This is described in more detail in our [Ruleset Testing](https://github.com/EFForg/https-everywhere/blob/master/ruleset-testing.md) document, but in short there are two parts: Your ruleset must have enough test URLs to cover all the various types of URL covered by your rules. And each of those test URLs must load, both before rewriting and after rewriting. Every target host tag generates an implicit test URL unless it contains a wildcard. You can add additional test URLs manually using the ` ` tag. The test URLs you add this way should be real pages loaded from the site, or real images, CSS, and Javascript if you have rules that specifically affect those resources.
+
+You should also manually test your ruleset by placing it in the `HTTPSEverywhereUserRules/` subdirectory in [your Firefox profile directory](http://kb.mozillazine.org/Profile_folder_-_Firefox), and then restarting Firefox. While using the rule, check for messages in the Firefox Error Console to see if there are any issues with the way the site supports HTTPS.
+
+If you've tested your rule and are sure it would be of use to the world at large, submit it as a [pull request](https://help.github.com/articles/using-pull-requests/) on our [GitHub repository](https://github.com/EFForg/https-everywhere/) or send it to the rulesets mailing list at `https-everywhere-rules AT eff.org`. Please be aware that this is a public and publicly-archived mailing list.
+
+#### [make-trivial-rule](#make-trivial-rule)
+
+As an alternative to writing rules by hand, there are scripts you can run from a Unix command line to automate the process of creating a simple rule for a specified domain. These scripts are not included with HTTPS Everywhere releases but are available in our development repository and are described in [our development documentation](https://www.eff.org/https-everywhere/development).
+
+#### [Disabling a ruleset by default](#disabling-a-ruleset-by-default)
+
+Sometimes rulesets are useful or interesting, but cause problems that make them unsuitable for being enabled by default in everyone's browsers. Typically when a ruleset has problems we will disable it by default until someone has time to fix it. You can do this by adding a `default_off` attribute to the ruleset element, with a value explaining why the rule is off.
+
+```xml
+
+
+
+
+```
+
+You can add more details, like a link to a bug report, in the comments for the file.
+
+#### [Mixed Content Blocking (MCB)](#mixed-content-blocking-mcb)
+
+Some rulesets may trigger active mixed content (i.e. scripts loaded over HTTP instead of HTTPS). This type of mixed content is blocked in both [Chrome](https://trac.torproject.org/projects/tor/ticket/6975) and Firefox, before HTTPS Everywhere has a chance to rewrite the URLs to an HTTPS version. This generally breaks the site. However, the Tor Browser doesn't block mixed content, in order to allow HTTPS Everywhere to try and rewrite the URLs to an HTTPS version.
+
+To enable a rule only on platforms that allow mixed content (currently only the Tor Browser), you can add a `platform="mixedcontent"` attribute to the ruleset element.
diff --git a/docs/es/faq.md b/docs/es/faq.md
new file mode 100644
index 000000000000..e704754396c9
--- /dev/null
+++ b/docs/es/faq.md
@@ -0,0 +1,136 @@
+## Preguntas Frecuentes sobre "HTTPS Everywhere"
+
+Esta página responde a las preguntas más frecuentes sobre el proyecto de la EFF [HTTPS Everywhere](https://www.eff.org/https-everywhere) "HTTPS en todos lados". Si no encuentra la respuesta a su pregunta, puede intentar con los recursos [enumerados aquí](https://www.eff.org/https-everywhere/development).
+
+- [¿Qué pasa si HTTPS Everywhere rompe algún sitio que uso?](#what-if-https-everywhere-breaks-some-site-that-i-use)
+- [¿Por qué HTTPS Everywhere me impide unirme a la red del hotel/escuela u otra red inalámbrica?](#why-is-https-everywhere-preventing-me-from-joining-this-hotelschoolother-wireless-network)
+- [¿Habrá una versión de HTTPS Everywhere para IE, Safari o algún otro navegador?](#will-there-be-a-version-of-https-everywhere-for-ie-safari-or-some-other-browser)
+- [¿Por qué utilizar una lista blanca de sitios que admiten HTTPS? ¿Por qué no pueden intentar utilizar HTTPS para cada sitio, y sólo volver a HTTP si no está disponible?](#why-use-a-whitelist-of-sites-that-support-https-why-cant-you-try-to-use-https-for-every-last-site-and-only-fall-back-to-http-if-it-isnt-available)
+- [¿Cómo puedo eliminar o mover el botón HTTPS Everywhere de la barra de herramientas?](#how-do-i-get-rid-ofmove-the-https-everywhere-button-in-the-toolbar)
+- [¿Cuándo me protege HTTPS Everywhere? ¿Cuándo no me protege?](#when-does-https-everywhere-protect-me-when-does-it-not-protect-me)
+- [¿De qué me protege HTTPS Everywhere?](#what-does-https-everywhere-protect-me-against)
+- [¿Cómo obtengo soporte para un sitio adicional en HTTPS Everywhere?](#how-do-i-get-support-for-an-additional-site-in-https-everywhere)
+- [¿Qué pasa si el sitio no admite HTTPS, o si sólo lo admite para algunas actividades, como introducir información de la tarjeta de crédito?](#what-if-the-site-doesnt-support-https-or-only-supports-it-for-some-activities-like-entering-credit-card-information)
+- [¿No es más caro o lento para un sitio usar HTTPS en comparación con HTTP normal?](#isnt-it-more-expensive-or-slower-for-a-site-to-support-https-compared-to-regular-http)
+- [¿Por qué debría usar HTTPS Everywhere en lugar de simplemente teclear https:// al principio del nombre de un sitio?](#why-should-i-use-https-everywhere-instead-of-just-typing-https-at-the-beginning-of-site-names)
+- [¿Por qué HTTPS Everywhere incluye reglas para sitios como PayPal que ya requieren HTTPS en todas sus páginas?](#why-does-https-everywhere-include-rules-for-sites-like-paypal-that-already-require-https-on-all-their-pages)
+- [¿Qué significan los diferentes colores de las reglas en el menú de la barra de herramientas en Firefox?](#what-do-the-different-colors-for-rulesets-in-the-firefox-toolbar-menu-mean)
+- [¿Qué significan los diferentes colores del icono de HTTPS Everywhere?](#what-do-the-different-colors-of-the-https-everywhere-icon-mean)
+- [Tengo un problema al instalar la extensión del navegador.](#im-having-a-problem-installing-the-browser-extension.)
+- [¿Cómo desinstalo/elimino HTTPS Everywhere?](#how-do-i-uninstallremove-https-everywhere)
+- [¿Cómo agrego mi propio sitio a HTTPS Everywhere?](#how-do-i-add-my-own-site-to-https-everywhere)
+- [¿Puedo ayudar a traducir HTTPS Everywhere a mi propio idioma?](#can-i-help-translate-https-everywhere-into-my-own-language)
+
+### [¿Qué pasa si HTTPS Everywhere rompe algún sitio que uso?](#what-if-https-everywhere-breaks-some-site-that-i-use)
+
+Esto es ocasionalmente posible debido al soporte inconsistente de HTTPS en sitios (por ejemplo, cuando un sitio parece soportar HTTPS pero hace algunas partes del sitio, imprededicibles, indisponibles por medio de HTTPS). Si nos [informa del problema](https://github.com/EFForg/https-everywhere/issues), podemos intentar solucionarlo. Mientras tanto, puede desactivar la regla que afecta a ese sitio en particular en su propia copia de HTTPS Everywhere haciendo clic en el botón de la barra de herramientas HTTPS Everywhere y desmarcando la regla para ese sitio.
+
+También puede informar el problema al sitio, ya que ellos tienen el poder para solucionarlo!
+
+### [¿Por qué HTTPS Everywhere me impide unirme a la red del hotel/escuela u otra red inalámbrica?](#why-is-https-everywhere-preventing-me-from-joining-this-hotelschoolother-wireless-network)
+
+Algunas redes inalámbricas secuestran sus conexiones HTTP cuando se une por primera vez a ellas, con el fin de exigir su autenticación o simplemente intentar hacer que acepte los términos de uso. Las páginas HTTPS están protegidas contra este tipo de secuestro, que es como debería ser. Si va a un sitio web que no está protegido por HTTPS Everywhere o por HSTS (actualmente, example.com es uno de esos sitios), permitirá que su conexión sea capturada y redirigida a la página de autenticación o términos de uso.
+
+### [¿Habrá una versión de HTTPS Everywhere para IE, Safari o algún otro navegador?](#will-there-be-a-version-of-https-everywhere-for-ie-safari-or-some-other-browser)
+
+A principios de 2012, la API para extensiones de Safari no ofrece una forma de realizar la reescritura segura de las solicitudes HTTP a HTTPS. Pero si por casualidad conoce una forma de realizar la reescritura segura de solicitudes en estos navegadores, no dude en hacérnoslo saber en https-everywhere en EFF.org (pero tenga en cuenta que modificar document.location o window.location en JavaScript no es seguro).
+
+### [¿Por qué utilizar una lista blanca de sitios que admiten HTTPS? ¿Por qué no pueden intentar utilizar HTTPS para cada sitio, y sólo volver a HTTP si no está disponible?](#why-use-a-whitelist-of-sites-that-support-https-why-cant-you-try-to-use-https-for-every-last-site-and-only-fall-back-to-http-if-it-isnt-available)
+
+Hay varios problemas con la idea de tratar de detectar automáticamente HTTPS en cada sitio. No hay ninguna garantía de que los sitios van a dar la misma respuesta a través de HTTPS que a través de HTTP. Además, no es posible probar HTTPS en tiempo real sin introducir vulnerabilidades de seguridad (¿Qué debería hacer la extensión si falla el intento de conexión por HTTPS? Volver a un HTTP inseguro no es seguro). Y en algunos casos, HTTPS Everywhere tiene que llevar a cabo transformaciones bastante complicadas en URIs - por ejemplo, hasta recientemente la regla de Wikipedia tenía que convertir una dirección como `http://en.wikipedia.org/wiki/World_Wide_Web` en `https://secure.wikimedia.org/wikipedia/en/wiki/World_Wide_Web` por que HTTPS no estaba disponible en los dominios habituales de Wikipedia.
+
+### [¿Cómo puedo eliminar o mover el botón HTTPS Everywhere de la barra de herramientas?](#how-do-i-get-rid-ofmove-the-https-everywhere-button-in-the-toolbar)
+
+El botón HTTPS Everywhere es útil porque le permite ver y desactivar un conjunto de reglas si causa problemas con un sitio. Pero si prefiere desactivarla, vaya a Ver->Barras de herramientas->Personalizar y arrastre el botón fuera de la barra de herramientas y dentro en la barra de complementos en la parte inferior de la página. Después, puede ocultar la barra de complementos. (En teoría, debería poder arrastrarlo a la bandeja de iconos disponibles también, pero eso puede desencadenar [este error](https://trac.torproject.org/projects/tor/ticket/6276).
+
+### [¿Cuándo me protege HTTPS Everywhere? ¿Cuándo no me protege?](#when-does-https-everywhere-protect-me-when-does-it-not-protect-me)
+
+HTTPS Everywhere lo protege sólo cuando está utilizando _porciones cifradas de sitios web soportados_. En un sitio soportado, se activará automáticamente el cifrado HTTPS para todas las partes soportadas conocidas del sitio (para algunos sitios, esto podría ser sólo una parte de todo el sitio). Por ejemplo, si su proveedor de correo web no admite HTTPS en absoluto, HTTPS Everywhere no puede hacer que su acceso a su correo web sea seguro. Del mismo modo, si un sitio permite HTTPS para texto pero no para imágenes, es posible que alguien vea las imágenes que cargue el navegador y adivine a qué está accediendo.
+
+HTTPS Everywhere depende completamente de las características de seguridad de los sitios web individuales que utilice; _Activa_ estas funciones de seguridad, pero no las puede _crear_ si no existen. Si utiliza un sitio no no soportado por HTTPS Everywhere o un sitio que proporciona cierta información de forma insegura, HTTPS Everywhere no puede proporcionar protección adicional para su uso de ese sitio. Por favor recuerde verificar que la seguridad de un sitio en particular está funcionando al nivel que usted espera antes de enviar o recibir información confidencial, incluyendo contraseñas.
+
+Una forma de determinar el nivel de protección que obtendrá al utilizar un sitio en particular es utilizar una herramienta de análisis de paquetes como [Wireshark] (https://www.wireshark.org/) para registrar sus propias comunicaciones con el sitio. La vista resultante de sus comunicaciones es aproximadamente igual a lo que un escucha secreto vería en su red wifi o en su ISP. De esta manera, puede determinar si algunas o todas sus comunicaciones estarían protegidas; Sin embargo, puede tomar bastante tiempo hacer sentido a la vista de Wireshark con suficiente cuidado para obtener una respuesta definitiva.
+
+También puede activar la función "Bloquear todas las solicitudes HTTP" para obtener mayor protección. En lugar de cargar páginas o imágenes inseguras, HTTPS Everywhere las bloqueará completamente.
+
+### [¿De qué me protege HTTPS Everywhere?](#what-does-https-everywhere-protect-me-against)
+
+En las partes compatibles de los sitios admitidos, HTTPS Everywhere habilita la protección HTTPS de los sitios, lo que le puede proteger contra la escucha y la manipulación indebida del contenido del sitio o de la información que envía al sitio. Idealmente, esto proporciona cierta protección contra un atacante que aprende el contenido de la información que fluye en ambos sentidos - por ejemplo, el texto de los mensajes de correo electrónico que envía o recibe a través de un sitio de webmail, los productos que navega o compra en un comercio electrónico Sitio o los artículos particulares que lea en un sitio de referencia.
+
+Sin embargo, HTTPS Everywhere **no oculta las identidades de los sitios a los que accede**, la cantidad de tiempo que pasa con ellos ni la cantidad de información que carga o descarga desde un sitio en particular. Por ejemplo, si accede a `http://www.eff.org/issues/nsa-spying` y HTTPS Everywhere vuelve a escribirlo como `https://www.eff.org/issues/nsa-spying`, un espía todavía puede reconocer de forma trivial que está accediendo a www.eff.org (pero puede que no sepa qué tema está leyendo). En general, toda la parte del nombre de dominio de una URL permanece expuesta al intruso, ya que ésta debe enviarse repetidamente en forma no cifrada durante el establecimiento de la conexión. Otra forma de decirlo es que HTTPS nunca fue diseñado para ocultar la identidad de los sitios que visita.
+
+Investigadores también han demostrado que es posible que alguien pueda averiguar más acerca de lo que está haciendo en un sitio simplemente a través de una cuidadosa observación de la cantidad de datos que sube y descarga, o los patrones de tiempo de su uso del sitio. Un ejemplo simple es que si el sitio sólo tiene una página de cierto tamaño total, cualquier persona que descargue exactamente esa cantidad de datos del sitio probablemente está accediendo a esa página.
+
+Si desea protegerse contra el monitoreo de los sitios que visita, considere usar HTTPS Everywhere junto con software como [Tor](https://www.torproject.org/).
+
+### [¿Cómo obtengo soporte para un sitio adicional en HTTPS Everywhere?](#how-do-i-get-support-for-an-additional-site-in-https-everywhere)
+
+Puede aprender [como escribir reglas](https://www.eff.org/https-everywhere/rulesets) que enseñan a HTTPS Everywhere a soportar nuevos sitios. Puede instalar estas reglas en su propio navegador o enviárnoslas para su posible inclusión en la versión oficial.
+
+### [¿Qué pasa si el sitio no admite HTTPS, o si sólo lo admite para algunas actividades, como introducir información de la tarjeta de crédito?](#what-if-the-site-doesnt-support-https-or-only-supports-it-for-some-activities-like-entering-credit-card-information)
+
+Podría tratar de ponerse en contacto con el sitio y señalar que el uso de HTTPS para todas las características del sitio es una práctica cada vez más común hoy en día y protege a los usuarios (y sitios) contra una variedad de ataques de Internet. Por ejemplo, le defiende contra la capacidad de otras personas en una red inalámbrica de espiar su uso del sitio o incluso tomar control de su cuenta. También puede señalar que los números de tarjetas de crédito no son la única información que usted considera privada o sensible.
+
+Sitios como Google, Twitter y Facebook ahora soportan HTTPS para información no financiera, por razones de privacidad y seguridad general.
+
+### [¿No es más caro o lento para un sitio usar HTTPS en comparación con HTTP normal?](#isnt-it-more-expensive-or-slower-for-a-site-to-support-https-compared-to-regular-http)
+
+Puede ser, pero algunos sitios han sido gratamente sorprendidos al ver lo práctico que puede ser. Además, los expertos de Google están actualmente implementando varias mejoras en el protocolo TLS que hacen HTTPS dramáticamente más rápido; si estas mejoras se añaden a la norma pronto, la brecha de velocidad entre los dos debería casi desaparecer. Ver [la descripción de Adam Langley de la situación de la implementación de HTTPS](https://www.imperialviolet.org/2010/06/25/overclocking-ssl.html) para más detalles sobre esta cuestión. En particular, Langley afirma: "Para [habilitar HTTPS de forma predeterminada para Gmail] no tuvimos que desplegar máquinas adicionales ni hardware especial. En nuestras máquinas frontend de producción, SSL/TLS representa menos del 1% de la carga del CPU, menos de 10KB de memoria por conexión y menos del 2% de la sobrecarga de red".
+
+Solía ser caro comprar un certificado para el uso de HTTPS, pero ahora se puede obtener de forma gratuita en [Let's Encrypt](https://letsencrypt.org/) de igual manera.
+
+### [¿Por qué debría usar HTTPS Everywhere en lugar de simplemente teclear https:// al principio del nombre de un sitio?](#why-should-i-use-https-everywhere-instead-of-just-typing-https-at-the-beginning-of-site-names)
+
+Incluso si normalmente escribe https://, HTTPS Everywhere podría protegerlo si alguna vez lo olvida. Además, puede reescribir los enlaces que siga de otras personas. Por ejemplo, si hace clic en un enlace a `http://en.wikipedia.org/wiki/EFF_Pioneer_Award`, HTTPS Everywhere volverá a escribir el enlace de forma automática como `https://en.wikimedia.org/wikipedia/en/wiki/EFF_Pioneer_Award`. Por lo tanto, puede obtener alguna protección incluso si no hubiera notado que el sitio de destino está disponible en HTTPS.
+
+### [¿Por qué HTTPS Everywhere incluye reglas para sitios como PayPal que ya requieren HTTPS en todas sus páginas?](#why-does-https-everywhere-include-rules-for-sites-like-paypal-that-already-require-https-on-all-their-pages)
+
+HTTPS Everywhere, como la [especificación HSTS](https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security), trata de abordar un ataque llamado [SSL stripping](https://moxie.org/software/sslstrip/). Los usuarios sólo están protegidos contra un ataque "SSL stripping" si sus navegadores ni siquiera _intentan_ conectarse a la versión HTTP del sitio, incluso si el sitio los hubiera redirigido a la versión HTTPS. Con HTTPS Everywhere, el navegador ni siquiera intenta la conexión HTTP insegura, incluso si eso es lo que usted le pide que haga. (Tenga en cuenta que actualmente HTTPS Everywhere no incluye una lista completa de dichos sitios, que son principalmente instituciones financieras).
+
+### [¿Qué significan los diferentes colores de las reglas en el menú de la barra de herramientas en Firefox?](#what-do-the-different-colors-for-rulesets-in-the-firefox-toolbar-menu-mean)
+
+Los colores son:
+
+Verde oscuro: el conjunto de reglas estaba activa durante la carga de recursos en la página actual.
+
+Verde claro: el conjunto de reglas estaba listo para evitar las cargas HTTP en la página actual, pero todo lo que el conjunto de reglas habría cubierto se cargó a través de HTTPS de todos modos (en el código, verde claro se le llama una "regla discutible").
+
+Marrón oscuro o Flecha roja en el sentido de las agujas del reloj: regla rota -- el conjunto de reglas está activo, pero el servidor está redirigiendo al menos algunas direcciones URL de HTTPS a HTTP.
+
+Gris: el conjunto de reglas está deshabilitado.
+
+### [¿Qué significan los diferentes colores del icono de HTTPS Everywhere?](#what-do-the-different-colors-of-the-https-everywhere-icon-mean)
+
+Los colores son:
+
+Azul claro: HTTPS Everywhere está habilitado.
+
+Azul oscuro: HTTPS Everywhere está habilitado y activo para cargar recursos en la página actual.
+
+Rojo: Todas las peticiones sin cifrar serán bloqueadas por HTTPS Everywhere.
+
+Gris: HTTPS Everywhere está deshabilitado.
+
+### [Tengo un problema al instalar la extensión del navegador.](#im-having-a-problem-installing-the-browser-extension.)
+
+Algunas personas informan que la instalación de HTTPS Everywhere les da el error: "El complemento no se pudo descargar debido a un error de conexión en www.eff.org". Esto puede ser causado por el antivirus Avast, que bloquea la instalación de extensiones de navegador. Puede que pueda [instalarlo desde addons.mozilla.org](https://addons.mozilla.org/en-US/firefox/addon/https-everywhere/).
+
+### [¿Cómo desinstalo/elimino HTTPS Everywhere?](#how-do-i-uninstallremove-https-everywhere)
+
+En Firefox: Haga clic en el botón de menú en la parte superior derecha de la ventana al final de la barra de herramientas (aparece como tres líneas horizontales) y, a continuación, haga clic en "Complementos" (parece una pieza de rompecabezas). Desplácese hasta que vea HTTPS Everywhere y a continuación haga clic en el botón "Eliminar" que se encuentra completamente a la derecha. Al finalizar, puede cerrar la ventana de complementos.
+
+En Chrome: haga clic en el botón de menú situado en la parte superior derecha de la ventana al final de la barra de herramientas (aparece como tres líneas horizontales) y, a continuación, haz clic en "Configuración" cerca de la parte inferior. A la izquierda, haga clic en "Extensiones". Desplácese hasta que vea HTTPS Everywhere y a continuación, haga clic en el icono de la papelera de la derecha y haga clic en "Eliminar" para confirmar la eliminación. Al finalizar, puede cerrar la ventana de configuración.
+
+### [¿Cómo agrego mi propio sitio a HTTPS Everywhere?](#how-do-i-add-my-own-site-to-https-everywhere)
+
+Estamos contentos de que desee que su sitio en HTTPS Everywhere! Sin embargo, recuerde que no todos los que visitan su sitio tienen instalada nuestra extensión. Si administra un sitio web, puede configurarlo para que use de forma predeterminada HTTPS para todos, no solo para los usuarios de HTTPS Everywhere. Y es menos trabajo! Los pasos que usted debe tomar, en orden, son:
+
+1. Configure un [redireccionamiento](https://www.sslshopper.com/apache-redirect-http-to-https.html) de HTTP a HTTPS en su sitio.
+2. [Agregue el header "Strict-Transport-Security" (HSTS) en su sitio.](https://raymii.org/s/tutorials/HTTP_Strict_Transport_Security_for_Apache_NGINX_and_Lighttpd.html)
+3. [Agregue su sitio a la lista de precarga de HSTS.](https://hstspreload.appspot.com/)
+
+Estos pasos le darán a su sitio una protección mucho mejor que añadirlo a HTTPS Everywhere. En términos generales, una vez que haya terminado, no es necesario agregar su sitio a HTTPS Everywhere. Sin embargo, si lo aún desea, siga las [instrucciones sobre escribir conjuntos de reglas](https://eff.org/https-everywhere/rulesets), e indique que usted es el autor del sitio cuando solicite un "pull request".
+
+### [¿Puedo ayudar a traducir HTTPS Everywhere a mi propio idioma? ](#can-i-help-translate-https-everywhere-into-my-own-language)
+
+¡Sí! Utilizamos la cuenta Transifex de Tor Project para las traducciones, por favor inscríbase para ayudar a traducir en [https://www.transifex.com/otf/torproject](https://www.transifex.com/otf/torproject).
diff --git a/docs/rulesets.html b/docs/rulesets.html
deleted file mode 100644
index 9f0a6eff7323..000000000000
--- a/docs/rulesets.html
+++ /dev/null
@@ -1,304 +0,0 @@
-
-
- This page describes how to write rulesets for
- HTTPS Everywhere ,
- a browser extension that switches sites over from HTTP
- to HTTPS automatically. HTTPS Everywhere comes with
- thousands
- of rulesets that tell HTTPS Everywhere which sites it should switch
- to HTTPS and how. If there is a site that offers HTTPS and is not handled by
- the extension, this guide will explain how to add that site.
-
-
-
-
-
- A ruleset is an XML
- file describing behavior for a site or group of sites. A ruleset contains
- one or more rules . For example, here is
- RabbitMQ.xml ,
- from the plugin distribution:
-
-
-
-<ruleset name="RabbitMQ">
- <target host="rabbitmq.com" />
- <target host="www.rabbitmq.com" />
-
- <rule from="^http:"
- to="https:" />
-</ruleset>
-
-
-
- The target tag specifies which web sites the ruleset applies
- to. The rule tag specifies how URLs on those web sites should be
- rewritten. This rule says that any URLs on rabbitmq.com and
- www.rabbitmq.com should be modified by replacing "http:" with
- "https:".
-
-
-
- When the browser loads a URL, HTTPS Everywhere takes the host
- name (e.g. www.rabbitmq.com ) and searches its ruleset database for
- rulesets that match that host name.
-
-
-
- HTTPS Everywhere then tries each rule in those rulesets against the full URL.
- If the Regular Expression , or regexp, in one of those rules matches, HTTPS
- Everywhere rewrites the URL
- according the the to attribute of the rule.
-
-
-
-
-
- To cover all of a domain's subdomains, you may want to specify
- a wildcard target like *.twitter.com . Specifying
- this type of left-side wildcard matches any host name with
- .twitter.com as a suffix, e.g. www.twitter.com
- or urls.api.twitter.com . You can also specify a
- right-side wildcard like www.google.* . Right-side
- wildcards, unlike left-side wildcards, apply only one level
- deep. So if you want to cover all countries you'll generally
- need to specify www.google.* , www.google.co.* ,
- and www.google.com.* to cover domains like
- www.google.co.uk or www.google.com.au . You should
- use wildcard targets only when you have rules that apply to the
- entire wildcard space. If your rules only apply to specific hosts,
- you should list each host as a separate target.
-
-
-
-
-
- The rule tags do the actual rewriting work. The from attribute of
- each rule is a regular expression matched against a full URL. You can use rules to rewrite
- URLs in simple or complicated ways. Here's a simplified (and now obsolete) example
- for Wikipedia:
-
-
-
-<ruleset name="Wikipedia">
- <target host="*.wikipedia.org" />
-
- <rule from="^http://(\w{2})\.wikipedia\.org/wiki/"
- to="https://secure.wikimedia.org/wikipedia/$1/wiki/"/>
-</ruleset>
-
-
-
- The to attribute replaces the text matched by the from
- attribute. It can contain placeholders like $1 that are replaced with
- the text matched inside the parentheses.
-
-
-
- This rule rewrites a URL like
- http://fr.wikipedia.org/wiki/Chose to
- https://secure.wikimedia.org/wikipedia/fr/wiki/Chose . Notice,
- again, that the target is allowed to contain (just one) * as a wildcard
- meaning "any".
-
-
-
- Rules are applied in the order they are listed within each ruleset.
- Order between rulesets is unspecified. Only the first rule or exception
- matching a given URL is applied.
-
-
-
- Rules are evaluated using Javascript regular
- expressions , which are similar but not identical to Perl-style regular
- expressions.
- Note that if your rules include ampersands (&), they need
- to be appropriately XML-encoded: replace each occurence of
- & with & .
-
-
-Exclusions
-
- An exclusion specifies a pattern, using a
- regular expression, for URLs where the rule should not be
- applied. The Stack Exchange rule contains an exclusion for the OpenID login
- path, which breaks logins if it is rewritten:
-
-
-
-<exclusion pattern="^http://(?:\w+\.)?stack(?:exchange|overflow)\.com/users/authenticate/" />
-
-
-
- Exclusions are always evaluated before rules in a given ruleset. Matching any
- exclusion means that a URL won't match any rules within the same ruleset.
- However, if other rulesets match the same target hosts, the rules in those
- rulesets will still be tried.
-
-
-
-
-
-There are many different ways you can write a ruleset, or regular expression
-within the ruleset. It's easier for everyone to understand the rulesets if they
-follow similar practices. You should read and follow the
-Ruleset
-style guide . Some of the guidelines in that document are intended to make Ruleset
-testing less cumbersome.
-
-
-
-
-
-Many HTTPS websites fail to correctly set the secure
-flag on authentication and/or tracking cookies. HTTPS
-Everywhere provides a facility for turning this flag on. For instance:
-
-
-<securecookie host="^market\.android\.com$" name=".+" />
-
-
-The "host" parameter is a regexp specifying which domains
-should have their cookies secured; the "name" parameter is a
-regexp specifying which cookies should be secured. For a cookie to be secured,
-it must be sent by a target host for that ruleset. It must also be sent over
-HTTPS and match the name regexp. For cookies set by Javascript in a web page,
-the Firefox extension can't tell which host set the cookie and instead uses
-the domain attribute of the cookie to check against target hosts. A cookie whose
-domain attribute starts with a "." (the default, if not specified by
-Javascript) will be matched as if it was sent from a host
-name made by stripping the leading dot.
-
-
-
-
-
-We use an automated
-checker to run some basic tests on all rulesets. This is described in more
-detail in our Ruleset
-Testing document, but in short there are two parts: Your ruleset must have
-enough test URLs to cover all the various types of URL covered by your rules.
-And each of those test URLs must load, both before rewriting and after
-rewriting. Every target host tag generates an implicit test URL unless it
-contains a wildcard. You can add additional test URLs manually using the
-<test url="..."/> tag. The test URLs you add this way should be
-real pages loaded from the site, or real images, CSS, and Javascript if you have rules that
-specifically affect those resources.
-
-
-
-You should also manually test your ruleset by
-placing it in the HTTPSEverywhereUserRules/ subdirectory in
-your
-Firefox profile directory , and then restarting Firefox. While
-using the rule, check for messages in the Firefox Error Console
-to see if there are any issues with the way the site supports
-HTTPS.
-
-
-
- If you've tested your rule and are sure it would
- be of use to the world at large, submit it as a pull
- request on our GitHub
- repository or send it to the rulesets mailing list at
- https-everywhere-rules AT eff.org . Please be aware that this
- is a public and publicly-archived mailing list.
-
-
-
-
-
-As an alternative to writing rules by hand, there are scripts you
-can run from a Unix command line to automate the process of creating
-a simple rule for a specified domain. These scripts are not included
-with HTTPS Everywhere releases but are available in our development
-repository and are described in our development
-documentation .
-
-
-
-
-Sometimes rulesets are useful or interesting, but cause problems
-that make them unsuitable for being enabled by default in everyone's
-browsers. Typically when a ruleset has problems we will disable it by
-default until someone has time to fix it. You can do this by adding
-a default_off attribute to the ruleset element, with a value
-explaining why the rule is off.
-
-
-<ruleset name="Amazon (buggy)" default_off="breaks site">
- <target host="www.amazon.*" />
- <target host="amazon.*" />
-</ruleset>
-
-
-
-You can add more details, like a link to a bug report, in the comments for the
-file.
-
-
-
-
-
- Some rulesets may trigger active mixed content (i.e. scripts loaded over HTTP
- instead of HTTPS). This type of mixed content is blocked in both Chrome and
- Firefox, before HTTPS Everywhere has a chance to rewrite the URLs to an HTTPS
- version. This generally breaks the site.
- However, the Tor Browser doesn't block mixed content, in order to allow HTTPS
- Everywhere to try and rewrite the URLs to an HTTPS version.
-
-
-
- To enable a rule only on platforms that allow mixed content (currently
- only the Tor Browser), you can add a platform="mixedcontent"
- attribute to the ruleset element.
-
-
-
-
-
- By default, HTTPS Everywhere will refuse to allow rules that
- would downgrade a URL from HTTPS to HTTP. Occasionally, this is necessary
- because the extension rewrites a page to HTTPS, and that page contains relative
- links to resources which do not exist on the HTTPS part of the site.
- This is very rare, especially because these resources will typically be blocked
- by Mixed Content Blocking . If it necessary, you can
- add a downgrade="1" attribute to the rule to make it easier to audit
- the ruleset library for such rules.
-
diff --git a/image-src/https-everywhere-half-24.xcf.gz b/image-src/https-everywhere-half-24.xcf.gz
deleted file mode 100644
index ee5cfaf115fe..000000000000
Binary files a/image-src/https-everywhere-half-24.xcf.gz and /dev/null differ
diff --git a/image-src/https-everywhere.xcf b/image-src/https-everywhere.xcf
deleted file mode 100644
index 076a49ebdf56..000000000000
Binary files a/image-src/https-everywhere.xcf and /dev/null differ
diff --git a/image-src/ssl-observatory.jpg b/image-src/ssl-observatory.jpg
deleted file mode 100644
index 0241bee91b55..000000000000
Binary files a/image-src/ssl-observatory.jpg and /dev/null differ
diff --git a/install-dev-dependencies.sh b/install-dev-dependencies.sh
index e9e079bb3bd6..9ce7446491be 100755
--- a/install-dev-dependencies.sh
+++ b/install-dev-dependencies.sh
@@ -2,6 +2,11 @@
# Install packages that are necessary and/or useful to build and debug
# HTTPS Everywhere
set -o errexit -o xtrace
+
+if [ $UID != 0 ]; then
+ SUDO_SHIM=sudo
+fi
+
if type apt-get >/dev/null ; then
BROWSERS="firefox chromium-browser"
CHROMEDRIVER="chromium-chromedriver"
@@ -12,9 +17,18 @@ if type apt-get >/dev/null ; then
BROWSERS="iceweasel chromium"
CHROMEDRIVER="chromedriver"
fi
- sudo apt-get install libxml2-dev libxml2-utils libxslt1-dev python-dev \
- $BROWSERS zip sqlite3 python-pip libcurl4-openssl-dev \
- libssl-dev $CHROMEDRIVER
+ # In Debian, `python-` is assumed to be python 2.7, no need to specify - dkg
+ $SUDO_SHIM apt-get install libxml2-dev libxml2-utils libxslt1-dev \
+ python-dev $BROWSERS zip sqlite3 python-pip libcurl4-openssl-dev xvfb \
+ libssl-dev git curl $CHROMEDRIVER
+ if ! type geckodriver >/dev/null; then
+ curl -LO "https://github.com/mozilla/geckodriver/releases/download/v0.16.1/geckodriver-v0.16.1-linux64.tar.gz"
+ tar -zxvf "geckodriver-v0.16.1-linux64.tar.gz"
+ rm -f "geckodriver-v0.16.1-linux64.tar.gz"
+ $SUDO_SHIM mv geckodriver /usr/bin/geckodriver
+ $SUDO_SHIM chown root /usr/bin/geckodriver
+ $SUDO_SHIM chmod 755 /usr/bin/geckodriver
+ fi
elif type brew >/dev/null ; then
brew list python &>/dev/null || brew install python
brew install libxml2 gnu-sed chromedriver
@@ -22,7 +36,36 @@ elif type brew >/dev/null ; then
echo '/usr/local/bin not found in $PATH, please add it.'
fi
elif type dnf >/dev/null ; then
- sudo dnf install libxml2-devel python-devel libxslt-devel
+ $SUDO_SHIM dnf install firefox gcc git libcurl-devel libxml2-devel \
+ libxslt-devel python-devel redhat-rpm-config xorg-x11-server-Xvfb which \
+ findutils procps openssl chromium GConf2
+ if ! type chromedriver >/dev/null; then
+ if [ "`uname -m`" == "x86_64" ]; then
+ ARCH=64
+ else
+ ARCH=32
+ fi
+ curl -O "https://chromedriver.storage.googleapis.com/2.23/chromedriver_linux$ARCH.zip"
+ unzip "chromedriver_linux$ARCH.zip"
+ rm -f "chromedriver_linux$ARCH.zip"
+ $SUDO_SHIM mv chromedriver /usr/bin/chromedriver
+ $SUDO_SHIM chown root /usr/bin/chromedriver
+ $SUDO_SHIM chmod 755 /usr/bin/chromedriver
+ fi
+ if ! type geckodriver >/dev/null; then
+ curl -LO "https://github.com/mozilla/geckodriver/releases/download/v0.16.1/geckodriver-v0.16.1-macos.tar.gz"
+ tar -zxvf "geckodriver-v0.16.1-macos.tar.gz"
+ rm -f "geckodriver-v0.16.1-macos.tar.gz"
+ $SUDO_SHIM mv geckodriver /usr/bin/geckodriver
+ $SUDO_SHIM chown root /usr/bin/geckodriver
+ $SUDO_SHIM chmod 755 /usr/bin/geckodriver
+ fi
+ # This is needed for Firefox on some systems. See here for more information:
+ # https://github.com/EFForg/https-everywhere/pull/5584#issuecomment-238655443
+ if [ ! -f /var/lib/dbus/machine-id ]; then
+ $SUDO_SHIM sh -c 'dbus-uuidgen > /var/lib/dbus/machine-id'
+ fi
+ export PYCURL_SSL_LIBRARY=nss
fi
# Get the addon SDK submodule and rule checker
@@ -38,5 +81,5 @@ cd test/chromium
pip install --user -r requirements.txt
cd -
-# Install a hook to run tests before pushing.
+# Install git hook to run tests before pushing.
ln -sf ../../test.sh .git/hooks/pre-push
diff --git a/makecrx.sh b/makecrx.sh
index 98f7abbc9cc4..ecbe0bbceb02 100755
--- a/makecrx.sh
+++ b/makecrx.sh
@@ -4,8 +4,7 @@
#
# To build the current state of the tree:
#
-# ./makecrx.sh
-#
+# ./makecrx.sh #
# To build a particular tagged release:
#
# ./makecrx.sh
@@ -20,8 +19,7 @@
# releases signed by EFF :/. We should find a more elegant arrangement.
cd $(dirname $0)
-RULESETS_UNVALIDATED="$PWD/pkg/rulesets.unvalidated.sqlite"
-RULESETS_SQLITE="$PWD/src/defaults/rulesets.sqlite"
+RULESETS_JSON=pkg/rulesets.json
if [ -n "$1" ]; then
BRANCH=`git branch | head -n 1 | cut -d \ -f 2-`
@@ -30,33 +28,40 @@ if [ -n "$1" ]; then
cp -r -f -a .git $SUBDIR
cd $SUBDIR
git reset --hard "$1"
+ git submodule update --recursive -f
fi
-VERSION=`python -c "import json ; print(json.loads(open('chromium/manifest.json').read())['version'])"`
+VERSION=`python2.7 -c "import json ; print(json.loads(open('chromium/manifest.json').read())['version'])"`
echo "Building chrome version" $VERSION
[ -d pkg ] || mkdir -p pkg
[ -e pkg/crx ] && rm -rf pkg/crx
-# Only generate the sqlite database if any rulesets have changed. Tried
+# Clean up obsolete ruleset databases, just in case they still exist.
+rm -f src/chrome/content/rules/default.rulesets src/defaults/rulesets.sqlite
+
+# Only generate the ruleset database if any rulesets have changed. Tried
# implementing this with make, but make is very slow with 15k+ input files.
needs_update() {
- find src/chrome/content/rules/ -newer $RULESETS_UNVALIDATED |\
+ find src/chrome/content/rules/ -newer $RULESETS_JSON |\
grep -q .
}
-if [ ! -f "$RULESETS_UNVALIDATED" ] || needs_update ; then
- # Build the SQLite DB even though we don't yet use it in the Chrome extension,
- # because trivial-validate.py depends on it.
- echo "Generating sqlite DB"
- python2.7 ./utils/make-sqlite.py && bash utils/validate.sh
+if [ ! -f "$RULESETS_JSON" ] || needs_update ; then
+ echo "Generating ruleset DB"
+ python2.7 ./utils/make-json.py && bash utils/validate.sh && cp pkg/rulesets.json src/chrome/content/rulesets.json
fi
sed -e "s/VERSION/$VERSION/g" chromium/updates-master.xml > chromium/updates.xml
mkdir -p pkg/crx/rules
cd pkg/crx
-cp -a ../../chromium/* .
+rsync -aL ../../chromium/ ./
+# Turn the Firefox translations into the appropriate Chrome format:
+rm -rf _locales/
+mkdir _locales/
+python2.7 ../../utils/chromium-translations.py ../../translations/ _locales/
+python2.7 ../../utils/chromium-translations.py ../../src/chrome/locale/ _locales/
do_not_ship="*.py *.xml icon.jpg"
rm -f $do_not_ship
cd ../..
@@ -66,6 +71,9 @@ cd ../..
cp src/$RULESETS pkg/crx/rules/default.rulesets
sed -i -e "s/VERSION/$VERSION/g" pkg/crx/manifest.json
+
+python2.7 -c "import json; m=json.loads(open('pkg/crx/manifest.json').read()); e=m['author']; m['author']={'email': e}; del m['applications']; open('pkg/crx/manifest.json','w').write(json.dumps(m,indent=4,sort_keys=True))"
+
#sed -i -e "s/VERSION/$VERSION/g" pkg/crx/updates.xml
#sed -e "s/VERSION/$VERSION/g" pkg/updates-master.xml > pkg/crx/updates.xml
@@ -93,7 +101,6 @@ trap 'rm -f "$pub" "$sig" "$zip"' EXIT
# zip up the crx dir
cwd=$(pwd -P)
(cd "$dir" && ../../utils/create_xpi.py -n "$cwd/$zip" -x "../../.build_exclusions" .)
-echo >&2 "Unsigned package has shasum: `shasum "$cwd/$zip"`"
# signature
openssl sha1 -sha1 -binary -sign "$key" < "$zip" > "$sig"
@@ -110,13 +117,21 @@ crmagic_hex="4372 3234" # Cr24
version_hex="0200 0000" # 2
pub_len_hex=$(byte_swap $(printf '%08x\n' $(ls -l "$pub" | awk '{print $5}')))
sig_len_hex=$(byte_swap $(printf '%08x\n' $(ls -l "$sig" | awk '{print $5}')))
+
+# Case-insensitive matching is a GNU extension unavailable when using BSD sed.
+if [[ "$(sed --version 2>&1)" =~ "GNU" ]]; then
+ sed="sed"
+elif [[ "$(gsed --version 2>&1)" =~ "GNU" ]]; then
+ sed="gsed"
+fi
+
(
- echo "$crmagic_hex $version_hex $pub_len_hex $sig_len_hex" | sed -e 's/\s//g' -e 's/\([0-9A-F]\{2\}\)/\\\\\\x\1/gI' | xargs printf
+ echo "$crmagic_hex $version_hex $pub_len_hex $sig_len_hex" | $sed -e 's/\s//g' -e 's/\([0-9A-F]\{2\}\)/\\\\\\x\1/gI' | xargs printf
cat "$pub" "$sig" "$zip"
) > "$crx"
#rm -rf pkg/crx
-#python githubhelper.py $VERSION
+#python2.7 githubhelper.py $VERSION
#git add chromium/updates.xml
#git commit -m "release $VERSION"
diff --git a/makexpi.sh b/makexpi.sh
index ef9a3ea77574..778826222e24 100755
--- a/makexpi.sh
+++ b/makexpi.sh
@@ -16,9 +16,9 @@ APP_NAME=https-everywhere
# ./makexpi.sh 0.2.3.development.2
cd "`dirname $0`"
-RULESETS_UNVALIDATED="$PWD/pkg/rulesets.unvalidated.sqlite"
-RULESETS_SQLITE="$PWD/src/defaults/rulesets.sqlite"
+RULESETS_JSON=pkg/rulesets.json
ANDROID_APP_ID=org.mozilla.firefox
+VERSION=`echo $1 | cut -d "-" -f 2`
[ -d pkg ] || mkdir pkg
@@ -45,7 +45,7 @@ if [ -n "$1" ] && [ "$2" != "--no-recurse" ] ; then
# Now escape from the horrible mess we've made
cd ..
- XPI_NAME="$APP_NAME-$1"
+ XPI_NAME="$APP_NAME-$VERSION"
cp $SUBDIR/pkg/$XPI_NAME-eff.xpi pkg/
if ! cp $SUBDIR/pkg/$XPI_NAME-amo.xpi pkg/ 2> /dev/null ; then
echo Old version does not support AMO
@@ -54,13 +54,16 @@ if [ -n "$1" ] && [ "$2" != "--no-recurse" ] ; then
exit 0
fi
-# Only generate the sqlite database if any rulesets have changed. Tried
+# Clean up obsolete ruleset databases, just in case they still exist.
+rm -f src/chrome/content/rules/default.rulesets src/defaults/rulesets.sqlite
+
+# Only generate the ruleset database if any rulesets have changed. Tried
# implementing this with make, but make is very slow with 15k+ input files.
needs_update() {
- find src/chrome/content/rules/ -newer $RULESETS_UNVALIDATED |\
+ find src/chrome/content/rules/ -newer $RULESETS_JSON |\
grep -q .
}
-if [ ! -f "$RULESETS_UNVALIDATED" ] || needs_update ; then
+if [ ! -f "$RULESETS_JSON" ] || needs_update ; then
# This is an optimization to get the OS reading the rulesets into RAM ASAP;
# it's useful on machines with slow disk seek times; doing several of these
# at once allows the IO subsystem to seek more efficiently.
@@ -68,8 +71,8 @@ if [ ! -f "$RULESETS_UNVALIDATED" ] || needs_update ; then
# Those cover everything but it wouldn't matter if they didn't
nohup cat src/chrome/content/rules/"$firstchar"*.xml >/dev/null 2>/dev/null &
done
- echo "Generating sqlite DB"
- python2.7 ./utils/make-sqlite.py
+ echo "Generating ruleset DB"
+ python2.7 ./utils/make-json.py
fi
# =============== BEGIN VALIDATION ================
@@ -80,11 +83,7 @@ die() {
exit 1
}
-# If the unvalidated rulesets have changed, validate and copy to the validated
-# rulesets file.
-if [ "$RULESETS_UNVALIDATED" -nt "$RULESETS_SQLITE" ] ; then
- bash utils/validate.sh
-fi
+bash utils/validate.sh
# The name/version of the XPI we're building comes from src/install.rdf
XPI_NAME="pkg/$APP_NAME-`grep em:version src/install.rdf | sed -e 's/[<>]/ /g' | cut -f3`"
@@ -100,8 +99,30 @@ fi
# Prepare packages suitable for uploading to EFF and AMO, respectively.
[ -d pkg ] || mkdir pkg
-rsync -a --delete --delete-excluded --exclude /chrome/content/rules src/ pkg/xpi-eff
-cp -a translations/* pkg/xpi-eff/chrome/locale/
+rsync -aL --delete --delete-excluded --exclude /chrome/content/rules src/ pkg/xpi-eff
+
+# START: The next lines are for embedded WebExtensions, and can be deleted after the full transition to WebExtensions
+[ -d pkg/xpi-eff/webextension ] || mkdir pkg/xpi-eff/webextension
+rsync -aL --delete chromium/ pkg/xpi-eff/webextension/
+
+mkdir pkg/xpi-eff/webextension/_locales/
+python2.7 utils/chromium-translations.py translations/ pkg/xpi-eff/webextension/_locales/
+python2.7 utils/chromium-translations.py src/chrome/locale/ pkg/xpi-eff/webextension/_locales/
+
+cd pkg/xpi-eff/webextension
+do_not_ship="*.py *.xml icon.jpg"
+rm -f $do_not_ship
+cd ../../..
+
+rm -rf pkg/xpi-eff/chrome/content/rulesets.json
+rm -rf pkg/xpi-eff/chrome/locale
+
+mkdir pkg/xpi-eff/webextension/rules/
+. ./utils/merge-rulesets.sh || exit 1
+
+cp src/$RULESETS pkg/xpi-eff/webextension/rules/default.rulesets
+# END
+
rsync -a --delete pkg/xpi-eff/ pkg/xpi-amo
# The AMO version of the package cannot contain the updateKey or updateURL tags.
# Also, it has a different id than the eff-hosted version, because Firefox now
@@ -127,7 +148,7 @@ rm -f "${XPI_NAME}-amo.xpi"
python2.7 utils/create_xpi.py -n "${XPI_NAME}-eff.xpi" -x ".build_exclusions" "pkg/xpi-eff"
python2.7 utils/create_xpi.py -n "${XPI_NAME}-amo.xpi" -x ".build_exclusions" "pkg/xpi-amo"
-echo >&2 "Total included rules: `sqlite3 $RULESETS_SQLITE 'select count(*) from rulesets'`"
+echo >&2 "Total included rules: `find src/chrome/content/rules -name "*.xml" | wc -l`"
echo >&2 "Rules disabled by default: `find src/chrome/content/rules -name "*.xml" | xargs grep -F default_off | wc -l`"
echo >&2 "Created ${XPI_NAME}-eff.xpi and ${XPI_NAME}-amo.xpi"
diff --git a/requirements.txt b/requirements.txt
index e947e2a9b8bf..03aa65f5a7c0 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -3,3 +3,4 @@ pycurl
regex
bsdiff4
python-Levenshtein
+selenium
diff --git a/rewriter/.gitignore b/rewriter/.gitignore
new file mode 100644
index 000000000000..07e6e472cc75
--- /dev/null
+++ b/rewriter/.gitignore
@@ -0,0 +1 @@
+/node_modules
diff --git a/rewriter/package.json b/rewriter/package.json
index 7a219f2b1ab3..154cf45a3426 100644
--- a/rewriter/package.json
+++ b/rewriter/package.json
@@ -1,10 +1,10 @@
{
- "name" : "https-everywhere-rewriter",
- "version" : "1.0.0",
- "dependencies" : {
- "xmldom" : "0.1.17",
- "URIjs" : "1.11.2",
- "readdirp" : "0.3.2",
- "event-stream" : "3.0.20"
+ "name": "https-everywhere-rewriter",
+ "version": "1.0.0",
+ "dependencies": {
+ "event-stream": "3.0.20",
+ "readdirp": "0.3.2",
+ "urijs": "^1.18.1",
+ "xmldom": "0.1.17"
}
}
diff --git a/rewriter/rewriter.js b/rewriter/rewriter.js
index 359abbb95804..3fbda2938bdd 100644
--- a/rewriter/rewriter.js
+++ b/rewriter/rewriter.js
@@ -15,15 +15,14 @@
// git diff
var path = require("path"),
- fs = require("fs"),
- DOMParser = require('xmldom').DOMParser,
- readdirp = require('readdirp'),
- es = require('event-stream'),
+ fs = require("fs"),
+ DOMParser = require('xmldom').DOMParser,
+ readdirp = require('readdirp'),
+ es = require('event-stream'),
- lrucache = require("../chromium/lru"),
- rules = require("../chromium/rules"),
+ rules = require("../chromium/rules"),
- URI = require("URIjs");
+ URI = require("urijs");
var ruleSets = null;
@@ -36,26 +35,26 @@ function processDir(dir) {
var stream = readdirp({
root: dir,
fileFilter: ['*.html', '*.js', '*.rb', '*.erb', '*.mustache',
- '*.scala', '*.c', '*.cc', '*.cpp', '*.cxx',
- '*.java', '*.go', '*.php', '*.css', '*.pl', '*.py',
- '*.rhtml', '*.sh', '*.yaml']
+ '*.scala', '*.c', '*.cc', '*.cpp', '*.cxx',
+ '*.java', '*.go', '*.php', '*.css', '*.pl', '*.py',
+ '*.rhtml', '*.sh', '*.yaml']
});
stream
- .on('warn', function (err) {
- console.error('non-fatal error', err);
+ .on('warn', function (err) {
+ console.error('non-fatal error', err);
// Optionally call stream.destroy() here in order to abort and cause 'close' to be emitted
- })
- .on('error', function (err) { console.error('fatal error', err); })
- .pipe(es.mapSync(function (entry) {
- var filename = path.join(dir, entry.path);
- console.log("Rewriting " + filename);
- try {
- processFile(filename);
- } catch(e) {
- console.log(filename, e);
- }
- }));
+ })
+ .on('error', function (err) { console.error('fatal error', err); })
+ .pipe(es.mapSync(function (entry) {
+ var filename = path.join(dir, entry.path);
+ console.log("Rewriting " + filename);
+ try {
+ processFile(filename);
+ } catch(e) {
+ console.log(filename, e);
+ }
+ }));
}
/**
@@ -72,20 +71,14 @@ URI.find_uri_expression = /\b((?:http:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-
function processFile(filename) {
var contents = fs.readFileSync(filename, 'utf8');
var rewrittenFile = URI.withinString(contents, function(url) {
+ console.log("Found ", url);
var uri = new URI(url);
if (uri.protocol() != 'http') return url;
uri.normalize();
var rewritten = ruleSets.rewriteURI(uri.toString(), uri.host());
if (rewritten) {
- // If the rewrite was just a protocol change, output protocol-relative
- // URIs.
- var rewrittenUri = new URI(rewritten).protocol('http');
- if (rewrittenUri.toString() === uri.toString()) {
- return rewrittenUri.protocol('').toString();
- } else {
- return rewritten;
- }
+ return rewritten;
} else {
return url;
}
@@ -103,7 +96,7 @@ function loadRuleSets() {
console.log("Loading rules...");
var fileContents = fs.readFileSync(path.join(__dirname, '../pkg/crx/rules/default.rulesets'), 'utf8');
var xml = new DOMParser().parseFromString(fileContents, 'text/xml');
- ruleSets = new rules.RuleSets("fake user agent", lrucache.LRUCache, {});
+ ruleSets = new rules.RuleSets({});
ruleSets.addFromXml(xml);
}
diff --git a/ruleset-style.md b/ruleset-style.md
deleted file mode 100644
index ab6da9a727ef..000000000000
--- a/ruleset-style.md
+++ /dev/null
@@ -1,103 +0,0 @@
-# Ruleset Style Guide
-
-Goal: rules should be written in a way that is consistent, easy for humans to
-read and debug, reduces the chance of errors, and makes testing easy.
-
-To that end, here are some style guidelines for writing or modifying rulesets.
-They are intended to help and simplify in places where choices are ambiguous,
-but like all guidelines they can be broken if the circumstances require it.
-
-Avoid using the left-wildcard ("<target host='*.example.com'>") unless
-you intend to rewrite all or nearly all subdomains. Many rules today specify
-a left-wildcard target, but the rewrite rules only rewrite an explicit list
-of hostnames.
-
-Instead, prefer listing explicit target hosts and a single rewrite from "^http:" to
-"^https:". This saves you time as a ruleset author because each explicit target
-host automatically creates a an implicit test URL, reducing the need to add your
-own test URLs. These also make it easier for someone reading the ruleset to figure out
-which subdomains are covered.
-
-If you know all subdomains of a given domain support HTTPS, go ahead and use a
-left-wildcard, along with a plain rewrite from "^http:" to "^https:". Make sure
-to add a bunch of test URLs for the more important subdomains. If you're not
-sure what subdomains might exist, check the 'subdomain' tab on Wolfram Alpha:
-http://www.wolframalpha.com/input/?i=_YOUR_DOMAIN_GOES_HERE_.
-
-If there are a handful of tricky subdomains, but most subdomains can handle the
-plain rewrite from "^http:" to "^https:", specify the rules for the tricky
-subdomains first, and then then plain rule last. Earlier rules will take
-precedence, and processing stops at the first matching rule. There may be a tiny
-performance hit for processing exception cases earlier in the ruleset and the
-common case last, but in most cases the performance issue is trumped by readability.
-
-Avoid regexes with long strings of subdomains, e.g. <rule
-from="^http://(foo|bar|baz|bananas).example.com" />. These are hard to read and
-maintain, and are usually better expressed with a longer list of target hosts,
-plus a plain rewrite from "^http:" to "^https:".
-
-Prefer dashes over underscores in filenames. Dashes are easier to type.
-
-Use tabs and double quotes (`"`, not `'`).
-
-When matching an arbitrary DNS label (a single component of a hostname), prefer
-`([\w-]+)` for a single label (i.e www), or `([\w.-]+)` for multiple labels
-(i.e. www.beta). Avoid more visually complicated options like `([^/:@\.]+\.)?`.
-
-For `securecookie` tags, it's common to match any cookie name. For these, prefer
-`.+` over `.*`. They are functionally equivalent, but it's nice to be
-consistent.
-
-Avoid the negative lookahead operator `?!`. This is almost always better
-expressed using positive rule tags and negative exclusion tags. Some rulesets
-have exclusion tags that contain negative lookahead operators, which is very
-confusing.
-
-Prefer capturing groups `(www\.)?` over non-capturing `(?:www\.)?`. The
-non-capturing form adds extra line noise that makes rules harder to read.
-Generally you can achieve the same effect by choosing a correspondingly higher
-index for your replacement group to account for the groups you don't care about.
-
-Avoid snapping redirects. For instance, if https://foo.fm serves HTTPS
-correctly, but redirects to https://foo.com, it's tempting to rewrite foo.fm to
-foo.com, to save users the latency of the redirect. However, such rulesets are
-less obviously correct and require more scrutiny. And the redirect can go out of
-date and cause problems. HTTPS Everywhere rulesets should change requests the minimum
-amount necessary to ensure a secure connection.
-
-Here is an example ruleset pre-style guidelines:
-
-```
-
-
-
-
-
-
-
-```
-
-Here is how you could rewrite it according to these style guidelines, including
-test URLs:
-```
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruleset-testing.md b/ruleset-testing.md
index 4fec87070066..8a8c0635dbcc 100644
--- a/ruleset-testing.md
+++ b/ruleset-testing.md
@@ -30,18 +30,18 @@ target host with a left-side wildcard, and at least ten test URLs for each
target host with a right-side wildcard. But this is not yet implemented.
# Example:
-
-
-
-
-
-
-
-
-
-
-
+```xml
+
+
+
+
+
+
+
+
+
+```
This ruleset has one implicit test URL from a target host
("http://example.com/"). The other target host has a wildcard, so creates no
implicit test URL. There's a single rule. That rule contains a '+' and a '?', so
@@ -50,7 +50,7 @@ using explicit <test> tags.
# Testing and Continuous Build
-Testing for rulest coverage is now part of the Travis CI continuous build.
+Testing for ruleset coverage is now part of the Travis CI continuous build.
Currently we only test rulesets that have been modified since February 2 2015.
Submitting changes to any ruleset that does not meet the coverage requirements
will break the build. This means that even fixes of existing rules may require
@@ -63,4 +63,4 @@ a submodule of https-everywhere. To set it up, run:
To test a specific ruleset:
- ./fetch-test.sh rules/Example.xml
+ ./fetch-test.sh rules/Example.xml
diff --git a/src/Changelog b/src/Changelog
index 45a03ec8aa32..0007410ba0e7 100644
--- a/src/Changelog
+++ b/src/Changelog
@@ -1,3 +1,134 @@
+2017.8.19
+ * Fix wildcard matching
+ * Remove usage of HTML string assignment
+ * Ruleset updates
+
+2017.8.17
+ * Firefox: Fix localStorage reference for users with cookies disabled
+
+2017.8.15
+ * Incorporating numerous fixes for WebExtensions to work within Firefox
+ * Firefox: Creating Embedded WebExtension wrapper to migrate legacy settings
+ * Removing legacy XPCOM codebase, unifying Firefox and Chrome codebase
+ * Ruleset updates
+
+Firefox 5.2.21 / Chrome 2017.7.18
+ * Ruleset updates
+
+Firefox 5.2.20 / Chrome 2017.7.5
+ * Ruleset updates
+
+Firefox 5.2.19 / Chrome 2017.6.20
+ * Chrome: Allow advanced users to enable rulesets which cause MCB
+ * Chrome: Fix - removal of custom rulesets should persist
+ * Ruleset updates
+
+Firefox 5.2.18 / Chrome 2017.6.5
+ * FF: Suppress request to check.torproject.org if SSL Observatory is disabled
+ * Chrome: Adding "View All Rules" link to Atlas
+ * Chrome: Allow removal of user-added, custom rulesets
+ * Ruleset updates
+
+Firefox 5.2.17 / Chrome 2017.5.22
+ * Ruleset updates
+
+Firefox 5.2.16 / Chrome 2017.5.8
+ * Ruleset updates
+
+Firefox 5.2.15 / Chrome 2017.4.19
+ * Ruleset updates
+
+Firefox 5.2.14 / Chrome 2017.4.5
+ * Ruleset updates
+
+Firefox 5.2.13 / Chrome 2017.3.17
+ * Ruleset updates
+
+Firefox 5.2.12 / Chrome 2017.3.9
+ * Excepting loopback hostnames from 'HTTPS Nowhere' functionality
+ * Ruleset updates
+
+Firefox 5.2.11 / Chrome 2017.2.13
+ * Ruleset updates
+
+Firefox 5.2.10 / Chrome 2017.1.25
+ * Removing targets which are HSTS preloaded in all supported browsers
+ * Ruleset updates
+
+Firefox 5.2.9 / Chrome 2016.12.19
+ * Ruleset updates
+ * In HTTP Nowhere mode, attempt HTTPS before block
+
+Firefox 5.2.8 / Chrome 2016.11.30
+ * Ruleset fixes
+
+Firefox 5.2.7 / Chrome 2016.11.8
+ * Ruleset fixes
+
+Firefox 5.2.6 / Chrome 2016.10.20
+ * Ruleset fixes
+ * Fix for domain isolation in Tor Browser with SSL Observatory
+
+Firefox 5.2.5 / Chrome 2016.9.21
+ * Ruleset fixes
+ * Removing deprecated torbutton options
+
+Firefox 5.2.4 / Chrome 2016.9.1
+ * Ruleset fixes
+ * Chrome Dev: Possible fix to "Extension Corrupted" errors
+ * Firefox Android: Fixing numerous issues with UI and functionality
+ * Firefox: Expanding SSL Observatory popup window
+
+Firefox 5.2.3
+ * Bugfix release: fixing a possible DLL hijacking vulnerability
+
+Firefox 5.2.2 / Chrome 2016.8.24
+ * Ruleset fixes
+
+Firefox 5.2.1
+ * Bugfix release: fix CSS to prevent large icons
+
+Chrome 2016.7.19
+ * New release fixing icon inclusion problem
+
+Firefox 5.2.0 / Chrome 2016.7.18
+ * Ruleset fixes
+ * Updating icons
+ * 'Block all unencrypted requests' now allows requests to .onion addresses
+
+Firefox 5.1.10 / Chrome 2016.6.9
+ * Ruleset fixes
+ * Fixing Tor Browser race condition
+
+Firefox 5.1.9 / Chrome 2016.5.10
+ * Adds large Bitly branded domain ruleset
+ * Additional ruleset fixes
+
+Firefox 5.1.6 / Chrome 2016.4.4
+ * Ruleset fixes
+ * Fix bug in Chromium, Firefox to limit FQDN
+
+Firefox 5.1.5 / Chrome 2016.3.23
+ * Ruleset fixes
+ * Improve coverage tests
+ * Add trivialize-rules tool and trivialized rulesets
+ * Remove checker as submodule & add to mainline repo
+
+Firefox 5.1.4 / Chrome 2016.2.23
+ * Fixes for Firefox Dev Edition
+ * Chrome: Fix regressions in custom rule functions
+ * Firefox: Fix custom ruleset regression
+
+Firefox 5.1.3 / Chrome 2016.2.18
+ * Performance & memory usage improvements for Chrome
+ * Introduce temporary disable option on Chrome
+ * Bugfix: make custom rules disableable
+ * Improvements to tests
+ * Switch to using JSON to store rulesets
+
+Firefox 5.1.2 / Chrome 2015.12.16
+ * Ruleset fixes
+
Firefox 5.1.1 / Chrome 2015.8.25
* Ruleset fixes
* Clean up some unused code that was causing review problems on AMO.
@@ -87,11 +218,11 @@ Firefox 4.0.3 / Chrome-2015.01.22 (2015-01-22)
* Disable SSL 3 to Prevent POODLE attack:
https://github.com/EFForg/https-everywhere/pull/674
* NEW: HTTP Nowhere mode. Block all plaintext http
- * Updates to Yahoo APIs, Fastly, VMWare, Netflix, Maashable, LinkedIn ,
+ * Updates to Yahoo APIs, Fastly, VMWare, Netflix, Mashable, LinkedIn ,
Gitorious, Mozilla, msecnd, Hotmail, Live, Eniro, Steam, Phoronix,
net-security.org, Flickr, Craigslist, Apache.org, Joomla.org, Samsung,
Google IMages, Expedia, Akamai, Trip Advisor, Ikea, CEll, Leo.org, Facebook,
- F-Secure, Dropbox, Courage Campaign, Box, Atlassian, Internet Archvie,
+ F-Secure, Dropbox, Courage Campaign, Box, Atlassian, Internet Archive,
localbitcoins.com, SOny, SciVerse, Web.com, Urgan Dictionary, Pornhub,
Fool.com, ClickBank, MGID, Which?, Microsoft, Barnes and Noble, Royal
Institute of GB, Wall Street Journal
@@ -224,7 +355,7 @@ chrome-2014.4.14
* Remove SSL Observatory observers when disabled
* Don't set LOAD_REPLACE flag:
https://github.com/EFForg/https-everywhere/pull/134
- * Add script to merge rulesets in Alexa Top 1M, thanks to Claudio MOretti:
+ * Add script to merge rulesets in Alexa Top 1M, thanks to Claudio Moretti:
https://github.com/EFForg/https-everywhere/pull/149
* 8 new rules
* 59 modified rules
@@ -474,7 +605,7 @@ chrome-2012.6.4
4.0development.8 (2013-06-04)
* Fix broken ruleset dialog in Firefox 22+
https://trac.torproject.org/projects/tor/ticket/8997
- * The toolbar button chnages to indicate active rulesets:
+ * The toolbar button changes to indicate active rulesets:
https://trac.torproject.org/projects/tor/ticket/4886
* Ship 31 new rulesets
* New translations: Japanese and Sinhala
@@ -1492,7 +1623,7 @@ chrome-2012.02.06{,.01}
* Support global installation for OS distributions (thanks dm0)
0.9.2:
- * Fix a bug in our redirection loop detection that was causing touble with
+ * Fix a bug in our redirection loop detection that was causing trouble with
some parts of NYTimes, Facebook, and other sites
(closes: https://trac.torproject.org/projects/tor/ticket/2217)
@@ -1530,7 +1661,7 @@ chrome-2012.02.06{,.01}
* Add scrollbars if there are a lot of rules present in the Preferences
dialog (may still be somewhat buggy...)
* Optimise GoogleServices.xml and support Google code search
- * Patch for future compatiability with Request Policy:
+ * Patch for future compatibility with Request Policy:
https://trac.torproject.org/projects/tor/ticket/1574
* Support for the Firefox 4 API
* The Amazon rule was causing a lot of glitches; it is now off by default
@@ -1564,7 +1695,7 @@ chrome-2012.02.06{,.01}
0.2.1:
* Although google said https://www.google.com would continue to work, that
wasn't absolutely true.
- * The new encyrpted.google.com seems to require queries to be #q=thing
+ * The new encrypted.google.com seems to require queries to be #q=thing
rather than search?q=thing, at least some of the time. So let's do that.
0.2.0:
diff --git a/src/META-INF/manifest.mf b/src/META-INF/manifest.mf
index df6d5269ff95..4be8a4709a50 100644
--- a/src/META-INF/manifest.mf
+++ b/src/META-INF/manifest.mf
@@ -2,2806 +2,1116 @@ Manifest-Version: 1.0
Name: install.rdf
Digest-Algorithms: MD5 SHA1
-MD5-Digest: laCJ1qvV56BP/zJ+pAUQxg==
-SHA1-Digest: NuPfXjb4Tu0u2OIhu0nz9eF+AWA=
+MD5-Digest: Q+5WxHOjuqlcGFVlYB50Hw==
+SHA1-Digest: Wrl3u+Mww108X2cMqAra6HCtHuQ=
Name: chrome.manifest
Digest-Algorithms: MD5 SHA1
-MD5-Digest: rZZ7yvZZGLdL4lBT62CRZw==
-SHA1-Digest: qpuVi0r02Psyx216gmgPVqJEUB8=
+MD5-Digest: XOIxusmpoOTFU/UqnBXGKA==
+SHA1-Digest: Bhc67dKsPDaUhKWYKZqJDYj7Vjs=
-Name: Changelog
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: FP3Ax5ALL5uMeEnN+aRi3A==
-SHA1-Digest: t0J3+QnD/mZa55otq1c7RRuAwlc=
-
-Name: chrome/content/about.js
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: TO4DQ0ayWbNEXdYRvIy+Og==
-SHA1-Digest: LLBVoXQCCBga94313zUlZ11orfw=
-
-Name: chrome/content/about.xul
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 0Q5QWjpzv6ug/3jHowymwA==
-SHA1-Digest: GSNVm5xUXaphb41qtB00SXOQmA0=
-
-Name: chrome/content/meta-preferences.xul
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 9YYHQqlA0cwc7IgId/YYhQ==
-SHA1-Digest: jEBPCju6z4zzzNFf+2aXBXXG2C4=
-
-Name: chrome/content/observatory-popup.xul
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 14npcsxa30a6mQ+OV3WAyQ==
-SHA1-Digest: MVOG9C0q9l5UguYxrRADE+z4BBw=
-
-Name: chrome/content/observatory-preferences.xul
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Bnf0sFZsI/b7eGzcH1JE1Q==
-SHA1-Digest: /epomPtkK0HNTWKhwEbkIyVwB+w=
-
-Name: chrome/content/observatory-warning.xul
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: epqd6ikkve3I06atd0JUdQ==
-SHA1-Digest: arqj9jjAqjMA3Cpame/E+iXAUUg=
-
-Name: chrome/content/observatory-xul.js
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: qwMKKHdLBoF2kdB2KmXkLQ==
-SHA1-Digest: GSMCtGvcHTDq4BKI+kOzOggSBeY=
-
-Name: chrome/content/toolbar_button.js
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: p2UAguZ77gDOy0Chjsux0Q==
-SHA1-Digest: +pdeRYxLLdjq72XPeNoVVSmC/ds=
-
-Name: chrome/content/toolbar_button.xul
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: cn9Z46ZmULORTwbcyEm4Zg==
-SHA1-Digest: Wt4xdzGMyYH929kLfylciaoI3JU=
-
-Name: chrome/content/toolbar_button_binding.xml
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 2dbyVeRAL8JeouHbcLwqJw==
-SHA1-Digest: WccuJ8edCmDxzDdFG8x/qbDlxH8=
-
-Name: chrome/content/code/AndroidUI.jsm
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 5LiEVRBV8Zf6dg6NZDgdBA==
-SHA1-Digest: Ze0jpXS7C4/oRp9M7PuOhv2rm5U=
-
-Name: chrome/content/code/ApplicableList.js
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 3J8kzqjLvrAkR6CszNKsag==
-SHA1-Digest: xKlpXgS+iCm9yxc0ZXfb4se1bQc=
-
-Name: chrome/content/code/commonOCSP.json
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: ZF5tbgWyGTGMaY+Sry/TEA==
-SHA1-Digest: QyZP0mnVpfI8v9HafWSGVpggXFI=
-
-Name: chrome/content/code/Cookie.js
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 7qopPVlNOK0J3+QOrKyZyg==
-SHA1-Digest: bQ7CCZL833qNtLEac5z8KMG5Ky8=
-
-Name: chrome/content/code/HTTPS.js
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: PjqIt54QbHdk4CkCjfvskw==
-SHA1-Digest: XIW4ZQt1P9u9N+T6yS5oa6SaB08=
-
-Name: chrome/content/code/HTTPSRules.js
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: s76BQeSd66O0S14U9Xrg0w==
-SHA1-Digest: 3Fi+uQVk10oG5p3qK0VezA30KFw=
-
-Name: chrome/content/code/IOUtil.js
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Q5w8DgZk0cZpyBMMpIfO1g==
-SHA1-Digest: ECKctZABDHx+hMJtaSRTYAZ+2+A=
-
-Name: chrome/content/code/NSS.js
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: B0hSLngHeCNzYEjlCV7VIA==
-SHA1-Digest: vdvJRg2qSwNi0B6XDE6/SelVUqI=
-
-Name: chrome/content/code/Root-CAs.js
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: YfZ5JRnK/VVLJ3BexceymA==
-SHA1-Digest: p3cDVtcEcaBW/wX7zfiUdjI4d8w=
-
-Name: chrome/content/code/sha256.js
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: feCNjWXdf8uxYzQdWKKyKg==
-SHA1-Digest: id/qGgzRgxSXMMttuM2RKw+vpYY=
-
-Name: chrome/content/code/X509ChainWhitelist.js
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: JIjqgTDiupq8QqrVuki0AA==
-SHA1-Digest: mh2DCtzp2ISltw0WXLQNekM9uPs=
-
-Name: chrome/locale/README.txt
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: xdAkPVfASJh4FQgANym6GA==
-SHA1-Digest: 9FXQ1FtZw4Qp2b+iOyrFg/mGeow=
-
-Name: chrome/locale/ach/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/ach/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/ach/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/ady/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/ady/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/ady/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/af/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: G/HQInsMl1507RoqypVZMg==
-SHA1-Digest: QUcQ0CseixJja0OH0DLC+IYcpaY=
-
-Name: chrome/locale/af/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/af/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/af_ZA/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: yfo7YQeeQ66zBw59nBFIaA==
-SHA1-Digest: amF5uU+jEDSlVdXfDCdz02fZr0Y=
-
-Name: chrome/locale/af_ZA/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/af_ZA/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: jfitnUpdvsWwJ3JxBjohGg==
-SHA1-Digest: i3jufc9C9o2N98F2HpEpUn0tni8=
-
-Name: chrome/locale/ak/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/ak/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/ak/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/am/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Kx61ZwAK1qVJTPGTt1MdQA==
-SHA1-Digest: we6XrAYLD4T7ACROYnAztNBNfsA=
-
-Name: chrome/locale/am/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: d2gHWBuMboY/y+GU9KHD+A==
-SHA1-Digest: H/f7CXhBImHoF9UO5GJVJubDamc=
-
-Name: chrome/locale/am/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: t85Np/mlXi6mry6DfInsGw==
-SHA1-Digest: NqTGnOajiii9KcX+3kbxD/QUNDA=
-
-Name: chrome/locale/am_ET/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: yfo7YQeeQ66zBw59nBFIaA==
-SHA1-Digest: amF5uU+jEDSlVdXfDCdz02fZr0Y=
-
-Name: chrome/locale/am_ET/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/am_ET/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: jfitnUpdvsWwJ3JxBjohGg==
-SHA1-Digest: i3jufc9C9o2N98F2HpEpUn0tni8=
-
-Name: chrome/locale/ar/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: +wrs4SwGd1W3ahTQ9x6lBg==
-SHA1-Digest: xjIjj7onW4LBXNdwQ+szCOXjHvg=
-
-Name: chrome/locale/ar/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: rrhf/qvqYHOLnsLFKt0Elg==
-SHA1-Digest: nDC6RpC/SmyAIHcYGBbrwvditoI=
-
-Name: chrome/locale/ar/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: IJzryFM3hJLJd1vXkwHGIA==
-SHA1-Digest: S7AZKljyb3Lm0xbOzLFp0TsGi7Q=
-
-Name: chrome/locale/arn/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/arn/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/arn/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/ast/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Gw+l7nZKJ1ORI4ZHdD/9qw==
-SHA1-Digest: nSWV1DXRs9QXm/xMA0syhNoADZA=
-
-Name: chrome/locale/ast/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/ast/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: gutO5PrRuFOLXnM1KS+ffw==
-SHA1-Digest: o8FbuYhtG0JexInXq193UD3/Et8=
-
-Name: chrome/locale/az/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 7FE46sMYFAkjgf4Yq2cWHA==
-SHA1-Digest: GvG4qAk0yWq3TWf9BjTns/jVupQ=
-
-Name: chrome/locale/az/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: EYKtNNxU+1z0FAiMtzk4Jg==
-SHA1-Digest: MrwhPPQiP/lzVfBqPToAjAyg8rg=
-
-Name: chrome/locale/az/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 9YbqXUt4Z/ojNFX0SJT4fA==
-SHA1-Digest: ATb4BBuHYH20LU6tN+k2LChMt9g=
-
-Name: chrome/locale/ba/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/ba/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/ba/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/be/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: NRW5ZULF7W7cVg+h60pyqw==
-SHA1-Digest: kAIErNP2htrAyss/Tqtx4oPAiTo=
-
-Name: chrome/locale/be/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: OzkUu2yX5EwySRsPODNezg==
-SHA1-Digest: 6EhHIexamAi+wE5JXZgePdzvLPc=
-
-Name: chrome/locale/be/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: NI/sXLrjCbZAAS6KDNIg6w==
-SHA1-Digest: bgDWGNDUTkSm85cVc2njUtknHGQ=
-
-Name: chrome/locale/bg/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: DlMZMZ9RG2phUPlcc7j1mA==
-SHA1-Digest: EJnxpKomXqzNtl0azcKfCcO5GCw=
-
-Name: chrome/locale/bg/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: fVK+HP5SVK7c2ZZ9QyLN2g==
-SHA1-Digest: t+oCLmlMw/XFMKW0on1Ws4zLqAc=
-
-Name: chrome/locale/bg/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: a7PnLe9Q27wVKCKaKekPPg==
-SHA1-Digest: ql3bDLVVelkQ4tUygWJ6e7cebu4=
-
-Name: chrome/locale/bg_BG/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: yfo7YQeeQ66zBw59nBFIaA==
-SHA1-Digest: amF5uU+jEDSlVdXfDCdz02fZr0Y=
-
-Name: chrome/locale/bg_BG/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/bn/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: fAGyrBo1VER6lvRTj+t9Uw==
-SHA1-Digest: XoKD3TU7YPzHdHInuic29ne+gFg=
-
-Name: chrome/locale/bn/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: MM/s3bxOsL74Ft04VgwnkA==
-SHA1-Digest: Q5x5zIpYWDX+dLT5tGtuncDUizM=
-
-Name: chrome/locale/bn/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: VyeeG4i6OBehNi32hLt+oA==
-SHA1-Digest: MK/MNB/fATBz0JcQbI5uENOjZpM=
-
-Name: chrome/locale/bn_BD/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: yfo7YQeeQ66zBw59nBFIaA==
-SHA1-Digest: amF5uU+jEDSlVdXfDCdz02fZr0Y=
-
-Name: chrome/locale/bn_BD/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/bn_BD/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: jfitnUpdvsWwJ3JxBjohGg==
-SHA1-Digest: i3jufc9C9o2N98F2HpEpUn0tni8=
-
-Name: chrome/locale/bn_IN/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/bn_IN/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/bn_IN/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/bo/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/bo/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/bo/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/br/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/br/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/br/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/bs/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: U7lbMeTOH7NiqmX/w6RNUA==
-SHA1-Digest: L1RuSNRLzi8d8aqeL3QIGSveso0=
-
-Name: chrome/locale/bs/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/bs/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: ZNI97feqRtbDaRb5vQJ1/w==
-SHA1-Digest: sr+tDbYwOpO/hxIOMPDMQiyGl50=
-
-Name: chrome/locale/ca/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: e2yBHKkCUwUEQP++Im5zbA==
-SHA1-Digest: LCXcHeD4TXtVJbucDNTJwL7Df/c=
-
-Name: chrome/locale/ca/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Ljbmp7ivnzL6U+nE8naKxA==
-SHA1-Digest: WbUEa/c9NHhW9xBTM0A4kifZnYg=
-
-Name: chrome/locale/ca/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 5sr/B9xSBUN2n1TdQrzwtg==
-SHA1-Digest: /ZD6ZCCZr5dFNzJgyEeNcF7g4dQ=
-
-Name: chrome/locale/ca@valencia/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: wq1ftLJI/zu00jnty2UoTg==
-SHA1-Digest: W6qiQGN0W2GdUYLH5nTJLwHhdog=
-
-Name: chrome/locale/ca@valencia/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: JSS3FARi65XslQa5SDB16Q==
-SHA1-Digest: fYOX+8CyYrFIbb+AWYrN1O7W7UI=
-
-Name: chrome/locale/ca@valencia/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 3rXVOdQg/xpjPErJOGQZaw==
-SHA1-Digest: qnrzobq7E/EtGV23OWJiBN0i6jw=
-
-Name: chrome/locale/ca_ES/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: eSkZ69G/Tyu30mSw5Apjjw==
-SHA1-Digest: TQzUTfn1UOTSYlF1qjXWdQJgHFo=
-
-Name: chrome/locale/ca_ES/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: YtS2epu01TazFPbFmpsI/g==
-SHA1-Digest: Cv7tQJ78lyhjEuq0PYh91QMdi8E=
-
-Name: chrome/locale/cs/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: nNu9SVDVjAIGOLRq+l4EMw==
-SHA1-Digest: Fj1BRMCTI5s5pwBMBBsPeBQYISc=
-
-Name: chrome/locale/cs/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: FAklnVOMlJ6kWBf/5yRs3Q==
-SHA1-Digest: Q5kpJEkoPkSBImHQN1Z9+FvPMu8=
-
-Name: chrome/locale/cs/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: EyqSdOPe8YR5DqVwEYeZVw==
-SHA1-Digest: aSS+C8mCIjRok6aMBnslgqoofWY=
-
-Name: chrome/locale/cs_CZ/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: yfo7YQeeQ66zBw59nBFIaA==
-SHA1-Digest: amF5uU+jEDSlVdXfDCdz02fZr0Y=
-
-Name: chrome/locale/cs_CZ/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/cs_CZ/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: jfitnUpdvsWwJ3JxBjohGg==
-SHA1-Digest: i3jufc9C9o2N98F2HpEpUn0tni8=
-
-Name: chrome/locale/csb/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/csb/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/csb/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/cv/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/cv/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/cv/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: kIyH9l00bHAh6ADPQ5iArQ==
-SHA1-Digest: QL0BuE+ti76nOKz2d1tDu1LPz9U=
-
-Name: chrome/locale/cy/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: qqDzvJnJLIPsVHMerq1bzw==
-SHA1-Digest: h1kbi5cLApzw5icU1e2WMr9bD3o=
-
-Name: chrome/locale/cy/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: EcocIN7kKtTyJ6D2+1quVw==
-SHA1-Digest: d1L7HMkwuDQVQRIgqQYy1Tw3ljQ=
-
-Name: chrome/locale/cy/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: I78RJeHOI07rGHv3ZDB+sA==
-SHA1-Digest: OBSMk9WfDDCXvXVzKiCP9fwsC6c=
-
-Name: chrome/locale/cy_GB/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/cy_GB/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/cy_GB/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/da/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: jL9Y4o+n+OesXqYoadBn7g==
-SHA1-Digest: YPCV8wFEl06JtaHlHs0gJjp9jE8=
-
-Name: chrome/locale/da/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: w5nM93nrhX+Yz/JS91Qz2A==
-SHA1-Digest: S5/Vj5KyVp4EGZShvYGK9+QN/Z0=
-
-Name: chrome/locale/da/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /1vivPRtL3R65irMByGiLg==
-SHA1-Digest: ODfCjWUmnoz+XtQa9yrfhN8HE0E=
-
-Name: chrome/locale/de/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: LPM9PrNYIUJJ9SRqlako+A==
-SHA1-Digest: 7YRcKhNT5lcIwHxtd4kLH5zOijw=
-
-Name: chrome/locale/de/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: KZ86VAGHSiDQH/sa4g2XQA==
-SHA1-Digest: 2NkXR8m/i7WnKNgjyCNxv5OqnvM=
-
-Name: chrome/locale/de/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: g3P9W7O9E3iw8eGntpik7A==
-SHA1-Digest: guJ0GfZoPCmb2Ri0nZIzSpYXY50=
-
-Name: chrome/locale/dz/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/dz/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/dz/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/el/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 5mFI5VYJosKngZZGr3kmTA==
-SHA1-Digest: g+a9xHXPiXXiDChOhaKdv5g+a8A=
-
-Name: chrome/locale/el/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 6e/6s2Z7EmaeqLFvacR/aw==
-SHA1-Digest: R9ynfJDz/mmDBZUhpz6IS04gq+s=
-
-Name: chrome/locale/el/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: ENMfbc5OHzv11XTdP0BFrA==
-SHA1-Digest: 14yclFzpoPwvG7/l69j22tOgUcw=
-
-Name: chrome/locale/el_GR/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: yfo7YQeeQ66zBw59nBFIaA==
-SHA1-Digest: amF5uU+jEDSlVdXfDCdz02fZr0Y=
-
-Name: chrome/locale/el_GR/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/en/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/en/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/en/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: VdF6+z+uxg9i4YhmOpiyeA==
-SHA1-Digest: NN2PnCMaroBKjX67NWSsLTCwarM=
-
-Name: chrome/locale/en_GB/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/en_GB/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/en_GB/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 6On/olVPNVqbKpXzW1X2XA==
-SHA1-Digest: Ijz8la1nRxu5r+O6QbVZK3VSVaQ=
-
-Name: chrome/locale/eo/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: CD5KFwO7l7MTSJgZVri86w==
-SHA1-Digest: NKeMtoc1j6T4m7QF+VRQ3YQIR4c=
-
-Name: chrome/locale/eo/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Yf97lgxpKNLGpAjMvfK/MA==
-SHA1-Digest: fZVKrhE/OwB78CghulHRKR3Cru0=
-
-Name: chrome/locale/eo/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 0soxl9J7jSJqthKSnVZgDA==
-SHA1-Digest: 0VLL/32gqWwCgrncTLnxhn3ZT8I=
-
-Name: chrome/locale/es/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: KwhBrpAGGFSHP4Dzg5mJ6Q==
-SHA1-Digest: gDbaAdz9bHNkxHnPMXdiqIpt5JE=
-
-Name: chrome/locale/es/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: DTNvpe38N9BJMblCk/vrTA==
-SHA1-Digest: t+iUE39QJXMWCMX6LSVNttQ1r1w=
-
-Name: chrome/locale/es/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: OBjXp7DD5VWoPeaKLyRUpw==
-SHA1-Digest: IwWd7U0zpf4iBtn/Pv03tBhrAFY=
-
-Name: chrome/locale/es_AR/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /+IUBcnLwO4R+O6IaJZ6Dw==
-SHA1-Digest: DvmA3sDnobiHNacNRq9YDgXbu7c=
-
-Name: chrome/locale/es_AR/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: t197vjqc9+soRaRO2fbMFg==
-SHA1-Digest: tZPETRNxL06AyoL+1QvoL1EcdRw=
-
-Name: chrome/locale/es_AR/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: pDJ6YCTokY+YgtVUmM0W1Q==
-SHA1-Digest: 6RlkAbOq3Nvfl5T0lcQkMOqRC9k=
-
-Name: chrome/locale/es_CL/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 2wMB7qppfceBj2xvHCsVWw==
-SHA1-Digest: JTqmCdZ48Y6PVjNtTXqr6ovI/f8=
-
-Name: chrome/locale/es_CL/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: ku02cJMU/CU79CCHjm68hg==
-SHA1-Digest: YU/tSs5/QomJCk2jWGnFVaVRkUE=
-
-Name: chrome/locale/es_CL/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: +UfF4zLiXupqbEGdlIyDmQ==
-SHA1-Digest: O0nzY52MgvHQ5Qw/JAkRf8rsRcQ=
-
-Name: chrome/locale/es_CO/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 4xRvn2bilZo1XCkaGC/n1Q==
-SHA1-Digest: WLYb7c7IOixjwEY5P4ZCg8/MaYo=
-
-Name: chrome/locale/es_CO/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: S3Sa+bBVNs2GQvqez4PdQw==
-SHA1-Digest: NHaw5kmOifivBjtE//sO4YnFFJw=
-
-Name: chrome/locale/es_CO/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 9A5weLWeecYlxtF4QYdb9g==
-SHA1-Digest: 1QyaXe6xqoxYiFDcIiezvwa76eo=
-
-Name: chrome/locale/es_MX/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: lnlOijk8E8SZoumgbxOFVw==
-SHA1-Digest: FnwP8l4rZRwLfsxQRUpWjDsUIQU=
-
-Name: chrome/locale/es_MX/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/es_MX/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: n6O9csSMLiwiF9wT7DNgAQ==
-SHA1-Digest: cDYp9lx3gyJ9zUuA140+T2dssPc=
-
-Name: chrome/locale/es_NI/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: yfo7YQeeQ66zBw59nBFIaA==
-SHA1-Digest: amF5uU+jEDSlVdXfDCdz02fZr0Y=
-
-Name: chrome/locale/es_NI/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/es_NI/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: jfitnUpdvsWwJ3JxBjohGg==
-SHA1-Digest: i3jufc9C9o2N98F2HpEpUn0tni8=
-
-Name: chrome/locale/et/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: TpXDxn5JNEGOem7AxijCZA==
-SHA1-Digest: PEBNS91F4Cg7apg1pHZlyhDruTU=
-
-Name: chrome/locale/et/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Mx04kEuG4w0velOssyehoA==
-SHA1-Digest: TM0g8+S/1iPvtCebuuIFluYODAg=
-
-Name: chrome/locale/et/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: xYzYpEJbalFBV7cy8SE3nA==
-SHA1-Digest: HX06kkq2cBOWxfykbfZbbAGfo3E=
-
-Name: chrome/locale/eu/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: eSDSTV6bBlFegvUQBC7e3A==
-SHA1-Digest: lQmxM3MlA28hOsAXtHrPUhUSnOw=
-
-Name: chrome/locale/eu/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Dpg9ZDE+K/Qxz6MHg2+H9g==
-SHA1-Digest: 65XPAH6P2S0bCMPl8NacLrauulM=
-
-Name: chrome/locale/eu/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: SxQhm/CpUtMLnp4xyRO6eQ==
-SHA1-Digest: aOp2ToPN/20aHh4K9cNEF9k9pes=
-
-Name: chrome/locale/fa/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 2jEpzoQlqW81Zk+pOibfZA==
-SHA1-Digest: lAHkiko6wd0evKsCdT1TEegfcTc=
-
-Name: chrome/locale/fa/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: mGj2i2la6F155xMsd5kpQA==
-SHA1-Digest: OuPLXb/wCTU7bSq5atIoquEzbKg=
-
-Name: chrome/locale/fa/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LXeOLF4ZfAEjOqOu10jew==
-SHA1-Digest: oQhzbFAhEixn7dzTuy3MrrRugXI=
-
-Name: chrome/locale/fi/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: lVRbmFWi6Ti0OSmN45glWQ==
-SHA1-Digest: 6Mvu9X2/sL+5l7ccLAdn8UdKUsQ=
-
-Name: chrome/locale/fi/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: bMFYJJYyZNxJh9OJT8XFIA==
-SHA1-Digest: ElhnambE759W6e/4hZnzIA6HrvY=
-
-Name: chrome/locale/fi/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: eHDtz3NDVNSAvyNKhlUhnQ==
-SHA1-Digest: vp/idYkSRVaGqgusuKxyf8MjQMk=
-
-Name: chrome/locale/fil/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Oud24U1g4ZcVBb1Lk4H94Q==
-SHA1-Digest: L3pG77xjcFst8Mm6EG0P2Aruwf8=
-
-Name: chrome/locale/fil/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 9Cs/7QbluLICU52dHrUZ1w==
-SHA1-Digest: ujdlnjtRImrAgX/bf7PXg31uIUg=
-
-Name: chrome/locale/fil/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: +FFlHBicdb/0z/EDLVOtEw==
-SHA1-Digest: 5Wm79GVr0/HPjuC5dN+8/IDAuCM=
-
-Name: chrome/locale/fo/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 4em2D9P2Hlh9C0FJT2t5aw==
-SHA1-Digest: oOSgX/wKMptPkEi8sL1a2zW5o1c=
-
-Name: chrome/locale/fo/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: bnmewhOUCJnKrhIMw7McbQ==
-SHA1-Digest: G6fG9naOamJIThQcTfWlMyqXUXk=
-
-Name: chrome/locale/fo/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: SazPXSZl0Kn1DTBCSvrZEw==
-SHA1-Digest: eWCdOIKeRSDiPZ7YYqSAjVb8JSY=
-
-Name: chrome/locale/fr/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Be0rBsfQsNFPsh4gnMZ+Jg==
-SHA1-Digest: ZArZqyvYekx4aAj+tdxKu00UaSE=
-
-Name: chrome/locale/fr/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 0JnynxpjbBRKQtQCv8F2vg==
-SHA1-Digest: Y8gej6IWvkvE5b9KXU/nq85tK3E=
-
-Name: chrome/locale/fr/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: x+N5awTeQotsqJUl20CVlw==
-SHA1-Digest: EqXgHnzEfYLDxag/cKi6bT6uYxM=
-
-Name: chrome/locale/fr_CA/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: pZ3J6tKw7iueyH5YN+KFTw==
-SHA1-Digest: bYUCptWtLcBjDyZwl09ulpuKzsI=
-
-Name: chrome/locale/fr_CA/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /cR5zhXGPnYHHjDGWB5n/Q==
-SHA1-Digest: TDdg2iGP6NgRYZUJma3w2KeB1z8=
-
-Name: chrome/locale/fr_CA/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: OLYTQOqE8HbOpIMH59FlSA==
-SHA1-Digest: 5r2d10Rsz+RCujuV+XluAR/25UA=
-
-Name: chrome/locale/fur/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/fur/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/fur/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/fy/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 2TjzcC2bJPaZEx4SyrcGQA==
-SHA1-Digest: 4sRgSHQXK9rRvrffl6uF2xnjI24=
-
-Name: chrome/locale/fy/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 0iFxqKUaXCHvjSKB2sLubQ==
-SHA1-Digest: KUE4+4xLxabVD/RR6f+bxIqTktw=
-
-Name: chrome/locale/fy/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Ph4d+XSKtqpFHskZ+aNm2g==
-SHA1-Digest: TJ5/GODoHHzq+w1GlgCTxFYfPbo=
-
-Name: chrome/locale/ga/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: PTos8RuoxWkjUkLmmmHtKA==
-SHA1-Digest: 3FAuD6VuOf5WUxv6RIFro6Uz5os=
-
-Name: chrome/locale/ga/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/ga/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/gd/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/gd/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/gd/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/gl/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: NaQTd605+grL2vhIxm4Wdg==
-SHA1-Digest: hYVwhlqTxtrT5d83JDlHKOQQuM4=
-
-Name: chrome/locale/gl/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: vUvtE+vtKQSUbCEokhfZqw==
-SHA1-Digest: XRSjewWm/eBfu3PB9reT2xpWsH8=
-
-Name: chrome/locale/gl/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: RE53xjAb5Q/kGsotPaOCNQ==
-SHA1-Digest: 3S3zKEqp4+wKtON6uYh7TeSx7k0=
-
-Name: chrome/locale/gu/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: EoRuc752YNApiIZxB/G/Vw==
-SHA1-Digest: bl8FgsuPM8ObnYMCl1SXopBIsx8=
-
-Name: chrome/locale/gu/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/gu/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/gu_IN/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: z1OF1ojJ0p+6MrBZRnbN3A==
-SHA1-Digest: nSTVhUGghcA4CS52SM8acy42Y3A=
-
-Name: chrome/locale/gu_IN/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/gu_IN/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/gun/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/gun/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/gun/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/ha/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/ha/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/ha/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/he/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: +V3K2I/ko9OlySCNXeP+3g==
-SHA1-Digest: K9StYYyKbFxGLMkVPCNuzQJKqhs=
-
-Name: chrome/locale/he/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: c0p8v/D/5qfY10+Wqo9tcg==
-SHA1-Digest: qZsRo78JA8TLfocybhWK3uTI7BQ=
-
-Name: chrome/locale/he/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: O4Omn6Ok1WY7N3w2BtHtgg==
-SHA1-Digest: //w8DG1IKC9nyxdPF/oZGm4WoSQ=
-
-Name: chrome/locale/hi/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: JdQLBvI4217DE9uwqTzuJw==
-SHA1-Digest: fgQ4xYNkXb0aNZbLKVC6gND7Z8g=
-
-Name: chrome/locale/hi/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: +4BZM2tBVdmfXr2LMMAWAw==
-SHA1-Digest: mU3F6oBavOGN7+sEogTwTDkhLCg=
-
-Name: chrome/locale/hi/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Vpg1E34mBD0rbNeQH/3vsw==
-SHA1-Digest: ox39/cDNLNx91ddhl2J0p4ORBqc=
-
-Name: chrome/locale/hr/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: xPoxJ94hiwKAMCIuFIi1Dw==
-SHA1-Digest: GQTLuipIIB/dbxtpcAzbovyaWuw=
-
-Name: chrome/locale/hr/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/hr/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: JSAkBKxW/QHLYU2ihoa3NA==
-SHA1-Digest: ui/FpFXIFAb3harE9U24QFkj+C4=
-
-Name: chrome/locale/hr_HR/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: qTS2wtcwvsrULrqvmDK93w==
-SHA1-Digest: DN6jurWBS/Fwh8OjS4NLev2CHKM=
-
-Name: chrome/locale/hr_HR/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: a2DDhwHCHiUO6i3JivQwcQ==
-SHA1-Digest: /+Xec3ZIrueKZYdswg57HyWTSUg=
-
-Name: chrome/locale/hr_HR/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /8UUkmJWw4RdW2sP5SPhiQ==
-SHA1-Digest: XDOXJh3tfg+Dr8TrCaqB5mT0Bec=
-
-Name: chrome/locale/ht/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/ht/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/ht/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/hu/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 3KM0MFAjljj0iODETSJ+qA==
-SHA1-Digest: 7HimJkh8Dv9yyWWZR7YilV7LpCg=
-
-Name: chrome/locale/hu/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 5g+PYjspSeEAuFavnhkmsA==
-SHA1-Digest: +suJcmHMbglRrfOuYI5VL7c5S5g=
-
-Name: chrome/locale/hu/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: dt+eQfUDIli/ZcgRsSZrVg==
-SHA1-Digest: 1tkZ17evA2V1v6VYvPMaDc2Ixk0=
-
-Name: chrome/locale/hy/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/hy/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/hy/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/hy_AM/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 3e8UB9rQ0F6vFG1jKwRTWA==
-SHA1-Digest: 4pBBvEbO9VW9eqpdhtyp/ZtTnZ0=
-
-Name: chrome/locale/hy_AM/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/hy_AM/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: JIPujla3pDgt7HD3WRr06Q==
-SHA1-Digest: daF8/qDlckCVuw4Pl/EiMZcftyE=
-
-Name: chrome/locale/ia/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: vwb23yBbvaGP7u7SKAGx3g==
-SHA1-Digest: T7edgK2GAEHxRlpGqN7ZcjQbG1k=
-
-Name: chrome/locale/ia/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/ia/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: BVDxKblCch7KWR+Cp4nr5Q==
-SHA1-Digest: jBjkpT6gWgExjNYzbOvRsj7SxoQ=
-
-Name: chrome/locale/id/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: OUcpDekjrElPW1ZVG+SJHw==
-SHA1-Digest: rIqQPkQF8RObQBsl5f0gOR1SyLU=
-
-Name: chrome/locale/id/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: nIazzo6ZVcyR7QVf1ldoVg==
-SHA1-Digest: Z/Cz/e+N/Z4LsHb//71imDrWA7Q=
-
-Name: chrome/locale/id/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 2LhD0sqfO+jaZaeLQfQyqw==
-SHA1-Digest: 8i4qYQWn4vWGVVrXMuJ7CiWBzzU=
-
-Name: chrome/locale/is/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: vUVFzbrIPBgPqTajtlbTWQ==
-SHA1-Digest: oXtZ1m2EPP//fn/zz28BXrepODM=
-
-Name: chrome/locale/is/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Vgb9tuwyi0nU8aqZSGgQ4A==
-SHA1-Digest: Z35OA/U0YcvDXFUYNI+l6NGQlgk=
-
-Name: chrome/locale/is/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: aJXEB5cO7Hy9D1apce3l9w==
-SHA1-Digest: hhqgFhgE0J/C12kQ9JwmGHF0ldA=
-
-Name: chrome/locale/it/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Kk/lJiEBhHJxH6j95RkgJg==
-SHA1-Digest: iCuQJhBlZ4R4dWlQRqop/44uwxc=
-
-Name: chrome/locale/it/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: hTg05Q9CVQ4Z8MlGSjF04g==
-SHA1-Digest: gPRrF/iF/AkmoXMQ32k/clDikso=
-
-Name: chrome/locale/it/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: vGfd68HNd0xrGHwrD6WenA==
-SHA1-Digest: 4UiEsTLkXAYWq5lxdQTOilfg4bk=
-
-Name: chrome/locale/ja/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: idGEBJimRtctitTNrtYZLA==
-SHA1-Digest: J73m09Ci0Vs6xDEt9UXxmx8f8SQ=
-
-Name: chrome/locale/ja/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: mgEBN/VRGCQngfhHZTYqCA==
-SHA1-Digest: 1RAHMOc+d29QAKSXrXSWGVGRWYc=
-
-Name: chrome/locale/ja/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: FYQNj5wMzJJk14shidOYmA==
-SHA1-Digest: Zs+36FyqVNq1DWfrrDG2c2fVFNc=
-
-Name: chrome/locale/jbo/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/jbo/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/jbo/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/jv/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/jv/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/jv/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/ka/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: d8IYgS/pTHDsjW2VzjhskA==
-SHA1-Digest: RbQbk+w2EQOF/C0eLZbNvpswxuc=
-
-Name: chrome/locale/ka/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 2DOhXNct6qawoi8Wi/g9Kw==
-SHA1-Digest: 6/Dsbjc0oZF7S7dof+y0i4BhMew=
-
-Name: chrome/locale/ka/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/kk/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/kk/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/kk/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: QT+KO17Nci0AJAGtBnUVpg==
-SHA1-Digest: sF7Vm7l88m+gi7PqlUyysNXz1MY=
-
-Name: chrome/locale/km/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 0K2meHBFSKc0hWKLMhJhkw==
-SHA1-Digest: QT3MoGfUK9/SupOBwD4x8/deWvw=
-
-Name: chrome/locale/km/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: tPSDcmHV0pA40oO2p/OP/Q==
-SHA1-Digest: ZWmEHf7TyiDR4oYBjhyReUoNENg=
-
-Name: chrome/locale/km/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: GsDhn77ZLv1lyuoT6qYFRQ==
-SHA1-Digest: kJE9ojsNrCSskngluWsXOqXTSag=
-
-Name: chrome/locale/kn/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: eoArq62JmVBDRmMicpobWw==
-SHA1-Digest: Ieh9jYWLWFmhWVod2nfdtTtPZk0=
-
-Name: chrome/locale/kn/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: KDasH80ASwsGFTBg3JakPg==
-SHA1-Digest: XOEQjUOZhjPsNik5EDfWnLY8ZyQ=
-
-Name: chrome/locale/kn/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: iiOIe00Y0kQ8ThT2cRAXhQ==
-SHA1-Digest: ciXS3K8yC8HHIPQP8GZWfTe59zA=
-
-Name: chrome/locale/ko/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: xtcX/X/rfWGePZOFuERD4Q==
-SHA1-Digest: aRNsDlDl6k19WBrfiowVcd0Oz20=
-
-Name: chrome/locale/ko/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: wKv/GI+ZFYjky/pXwwRzFQ==
-SHA1-Digest: Kg9jVIQ2HcuYCTFTugG6V8VoyEg=
-
-Name: chrome/locale/ko/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: haYZubMgYLjfaohbfY5xGA==
-SHA1-Digest: E9or7WR5PvXOb6JwJ2adXAFY7Js=
-
-Name: chrome/locale/ko_KR/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: BHBacCjuEF0PRn1Mn4s/uQ==
-SHA1-Digest: 0gXM5B2a8RchSMkos3/5rN5RLGQ=
-
-Name: chrome/locale/ko_KR/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: f+cDX1veh7GedFmEXRsbmg==
-SHA1-Digest: wn5Dem8Kqjhd44sBdCmvhk9y3zU=
-
-Name: chrome/locale/ko_KR/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 4iBDBzmIoj0NaM1cB7v6yA==
-SHA1-Digest: 90cyRycHsYAdjmgqm0PN2v3vq24=
-
-Name: chrome/locale/ku/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/ku/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/ku/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/ku_IQ/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: AJevAtG+/kq6c0XXNxuRDw==
-SHA1-Digest: RUpMptYd93GGoAYD17K1Wky94K4=
-
-Name: chrome/locale/ku_IQ/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/ku_IQ/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: x9ull8xyV1xXhlfBcALCIg==
-SHA1-Digest: JlKX5Y4thiLbv1mH6hboBLfC+74=
-
-Name: chrome/locale/kw/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/kw/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/kw/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/ky/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 3eM4hyrs8vv0X40RzyyeUg==
-SHA1-Digest: U4I5YcPIYIIxk3Dr71hFWuh7Ibs=
-
-Name: chrome/locale/ky/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/ky/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/la/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/la/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/la/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/lb/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/lb/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/lb/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/lg/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/lg/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/lg/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/ln/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/ln/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/ln/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/lo/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: b0Vspkv6woolhJxpcRUWjg==
-SHA1-Digest: Wf1dLvcZuGR5vojCvYUrnYHcP+4=
-
-Name: chrome/locale/lo/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/lo/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 4ikhNExPcdQ/r9k+8XoC/w==
-SHA1-Digest: kz0PE0Ingou//teig1O94MQx4mE=
-
-Name: chrome/locale/lt/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: jlm9h4VOHDRB6jZ2fEY9lA==
-SHA1-Digest: KMPBQrWDBDfYHE2XMDlxqL3l8M4=
-
-Name: chrome/locale/lt/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Nfos9wS4q3xAXTzDeYKy6g==
-SHA1-Digest: Rb7ZEqUViuu81d4++rNp4JPlhAE=
-
-Name: chrome/locale/lt/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: iU6qeImNKfqgAn5y9oRmkw==
-SHA1-Digest: Lg4uyzNdnXk6lbXTyrEM5GRSLEU=
-
-Name: chrome/locale/lv/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: N1EqGwwsnQo6HxQMIDYpqg==
-SHA1-Digest: s2eYe53KcmBDsog7sf0bLU4rtUs=
-
-Name: chrome/locale/lv/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: F/TUbk92mmM/31oSB7bATA==
-SHA1-Digest: Xm1Yg7zAg/POeJIYdV0Y6LM+834=
-
-Name: chrome/locale/lv/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Du7oW4VzcmYt5aZT8sAOTg==
-SHA1-Digest: 8+fy38n0N4k+4BMVgz5rXMn/AMc=
-
-Name: chrome/locale/mg/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/mg/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/mg/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/mi/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/mi/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/mi/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/mk/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Vqj1XypRlmww3GjUiIquMw==
-SHA1-Digest: 1mnN4s7y6tVHoWllhmDBqydORkE=
-
-Name: chrome/locale/mk/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/mk/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/ml/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: hdhHKtXogChg+CDqEK4vRg==
-SHA1-Digest: M5Vt4mbcuyPYKyzGWUr+g7XDn5k=
-
-Name: chrome/locale/ml/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: nEIybj/AYZY243ChjeMt5w==
-SHA1-Digest: 3laMspwCVVNqLQWIaOTnY6+mgQk=
-
-Name: chrome/locale/ml/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/mn/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/mn/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/mn/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/mr/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: ZKC5XwM/YkGq8Vij1uFKVw==
-SHA1-Digest: xkbMKE2gS8f5BPzD4T8GOa7onC4=
-
-Name: chrome/locale/mr/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/mr/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: HJNNnfw2YBnFlJip0Yy+WA==
-SHA1-Digest: kQ0p37O9XXcPAra6VR8HDwKpYGc=
-
-Name: chrome/locale/ms/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: T4ZR4viMIw5OKZI3t8JkKA==
-SHA1-Digest: pP4xYuQBNtO/u+RdQ8rksSjTr/M=
-
-Name: chrome/locale/ms/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: JSS3FARi65XslQa5SDB16Q==
-SHA1-Digest: fYOX+8CyYrFIbb+AWYrN1O7W7UI=
-
-Name: chrome/locale/ms_MY/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: jBusJWeFY5FHV6qlOZI09Q==
-SHA1-Digest: r7Zs286IIGsE/nd7i6zqQ2xR6ss=
-
-Name: chrome/locale/ms_MY/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 9IFlxgFWG7N37F15EPtIpg==
-SHA1-Digest: LM8W64eIuAkaqqnLygTcVcSag3M=
-
-Name: chrome/locale/ms_MY/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: K4Iugdw8dCFfgEnGOg5ibA==
-SHA1-Digest: Umlsnc7Xmj36de1+RsgrwOmXqYU=
-
-Name: chrome/locale/mt/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/mt/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/mt/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/my/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: DNr0TXi6Kxgd+MgtJ8tvJA==
-SHA1-Digest: IjcHrtbY5bPWqrZU6TLnZvAoU8Q=
-
-Name: chrome/locale/my/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/my/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: kM882ex2hbYDre3xRToDhQ==
-SHA1-Digest: cRdqRXM2u8s9vw0VAFEGpFJG0dw=
-
-Name: chrome/locale/nah/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/nah/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/nah/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/nap/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/nap/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
-
-Name: chrome/locale/nap/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
-
-Name: chrome/locale/nb/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: h2bE6M+4tlRbsmAWeHaf/g==
-SHA1-Digest: 5IIMCS/rdwAzn2GexcTBNIKBZdY=
-
-Name: chrome/locale/nb/https-everywhere.properties
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: nQJ4lKNAofGmLvA0RcmPHQ==
-SHA1-Digest: oOVXX1pPyneduoBIZz15kUdH5n4=
-
-Name: chrome/locale/nb/ssl-observatory.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: GXv9ruVyG8yU77ORHiw52Q==
-SHA1-Digest: mqxEoUeXqiT8pz2kuUzgQh+tTzI=
-
-Name: chrome/locale/nds/https-everywhere.dtd
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
-
-Name: chrome/locale/nds/https-everywhere.properties
+Name: bootstrap.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: o2rUbaUguxoHd7CgtCvKAg==
+SHA1-Digest: Nc88V8RTLquKg53ez6k1EY4HGTw=
-Name: chrome/locale/nds/ssl-observatory.dtd
+Name: Changelog
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: Sx66kkYLaYRV6MEnX4SoMw==
+SHA1-Digest: py89b48OS5/PJ4emYzTCMPsGjfk=
-Name: chrome/locale/ne/https-everywhere.dtd
+Name: chrome/skin/icon-active-48.png
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: HnL4MsWBAIFEbOdSxgbs3Q==
+SHA1-Digest: VVqz4q4/4awX6PXZhnQmGFkAiqc=
-Name: chrome/locale/ne/https-everywhere.properties
+Name: defaults/preferences/preferences.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: EykkJFjpsNoGf/s2FXYWgw==
+SHA1-Digest: Y65sMAe8/tAhvaVWqnvGN1fyesc=
-Name: chrome/locale/ne/ssl-observatory.dtd
+Name: webextension/background.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: pfJrD7S/XgulsBYIeTTc8g==
-SHA1-Digest: ObhtCDb1nIInr5TABmRe7QScg98=
+MD5-Digest: iEo8Ka3mnq0Xh+GXaiJC7g==
+SHA1-Digest: l6Y7tU2QOwSR/ehzdP9ypq1aG8w=
-Name: chrome/locale/nl/https-everywhere.dtd
+Name: webextension/devtools-panel.html
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Jg/4VllLDnE0HdIq0cfm1w==
-SHA1-Digest: d4te9L++PwDLlPBYYRNy7DMQ078=
+MD5-Digest: EYxYGsjNZkCJmx2SNauDGg==
+SHA1-Digest: Ga7SHHFUvJW3V69Kiv/rw4+ERBM=
-Name: chrome/locale/nl/https-everywhere.properties
+Name: webextension/devtools-panel.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: UnAlbkCtkg0z/e2xLucsZg==
-SHA1-Digest: /xTlMI5yZFSN+7f88+5jw80yrzM=
+MD5-Digest: kYBvbPH2T7I4ohwWhG/IPA==
+SHA1-Digest: +Dg2GfUtUGUz8NhXxiaYrXAr3cI=
-Name: chrome/locale/nl/ssl-observatory.dtd
+Name: webextension/devtools.html
Digest-Algorithms: MD5 SHA1
-MD5-Digest: ESPblIjkcudzkirDQLNDnA==
-SHA1-Digest: Qnv+5hF8m9MNrzmzRWVyuuk96lI=
+MD5-Digest: H+Op/YENt9DdPDQ9hOa+gA==
+SHA1-Digest: MqGyIlPxuacMN/gRFfkkeiP+ZD0=
-Name: chrome/locale/nl_BE/https-everywhere.dtd
+Name: webextension/devtools.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: xpFx+ooasoiwj3YtfOFXhA==
-SHA1-Digest: oiz2iGlNWFUOf8diZD/xu8Jiv90=
+MD5-Digest: abhTOPm9uQQMhyiOytJDFQ==
+SHA1-Digest: hZQPTPlafCHixy0Umxu/9rEEzUA=
-Name: chrome/locale/nl_BE/https-everywhere.properties
+Name: webextension/icon128.png
Digest-Algorithms: MD5 SHA1
-MD5-Digest: dHUeIwNphXI4XPLVE6D1YA==
-SHA1-Digest: 4cLEaSiZC1fZ1EBfA5sVVXFyUSk=
+MD5-Digest: R4LR7lqx9JeZ4/sDV7jPOA==
+SHA1-Digest: 09Azze1rP2udD/PoXzsw2f1BEfw=
-Name: chrome/locale/nl_BE/ssl-observatory.dtd
+Name: webextension/icon16.png
Digest-Algorithms: MD5 SHA1
-MD5-Digest: R0TwAODuSLPLyIPIXC10Jg==
-SHA1-Digest: Fp+4no/koAOnPxVpMo9wW2GEwyA=
+MD5-Digest: EwCxLSaR1hIxV50Ndxy41w==
+SHA1-Digest: 8WNuILZ8TlGO8PAY7SZTvw2BM4Y=
-Name: chrome/locale/nn/https-everywhere.dtd
+Name: webextension/icon38-red.png
Digest-Algorithms: MD5 SHA1
-MD5-Digest: 8LCBpCsYPsPYmLtiL0epaA==
-SHA1-Digest: 6ADKPTcvYsMrXMHieGmYgtyhApc=
+MD5-Digest: QOVw86xRLuLPMURZcmgEDA==
+SHA1-Digest: XUdr8P6bQwxFbqiSH6iCX/TTDgk=
-Name: chrome/locale/nn/https-everywhere.properties
+Name: webextension/icon38.png
Digest-Algorithms: MD5 SHA1
-MD5-Digest: aJQYaKKWmSTHl0uupU/54g==
-SHA1-Digest: Y48T8JTpb18wN6sH5A+h6zg8+pQ=
+MD5-Digest: Hf+euywZSidVusdUTAZQwA==
+SHA1-Digest: xUnuG5ujqElgSyh4vEsX205dYiI=
-Name: chrome/locale/nn/ssl-observatory.dtd
+Name: webextension/icon48.png
Digest-Algorithms: MD5 SHA1
-MD5-Digest: 00GiF5Xo9YNWC2T7YvqSbw==
-SHA1-Digest: VjSteWr/MlO+ZStcBH8R1Axar0g=
+MD5-Digest: H6ThuRi9RofeGfla/6u9jw==
+SHA1-Digest: r39R3kp0chqcd7KPlS1wZCwrL84=
-Name: chrome/locale/nso/https-everywhere.dtd
+Name: webextension/incognito-cache-clearing.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: en6/7nTebol80jLIo0beeQ==
+SHA1-Digest: ypvRahH2WCR0HiIdHAltUAU0naA=
-Name: chrome/locale/nso/https-everywhere.properties
+Name: webextension/manifest.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: CqMwOFm7v4oqp+A2m79cbw==
+SHA1-Digest: n8hpEPQ0191WXExwCc06mMBdtPc=
-Name: chrome/locale/nso/ssl-observatory.dtd
+Name: webextension/options.css
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: b+385owbOTJ154r2oWZxSw==
+SHA1-Digest: YDerQly2O3aNi7252RzqN/j/HVY=
-Name: chrome/locale/oc/https-everywhere.dtd
+Name: webextension/options.html
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: avBlt/AXg5E6ntiKo9McGQ==
+SHA1-Digest: BJP7HIC7eq/YTmdGn4D+b1P2RG4=
-Name: chrome/locale/oc/https-everywhere.properties
+Name: webextension/options.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: OmoRYvJiOziuAUBcsmny5Q==
+SHA1-Digest: IOVbkntyjYXR+ci/qXJ7PBCR3DM=
-Name: chrome/locale/oc/ssl-observatory.dtd
+Name: webextension/popup.css
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: HnfHrTkdtel0VkotPg1s7g==
+SHA1-Digest: +/+OpbGmpPzloDSwyHWv1rDfK9M=
-Name: chrome/locale/or/https-everywhere.dtd
+Name: webextension/popup.html
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: uCOeTmpQFLqhh/vH3WBvtQ==
+SHA1-Digest: K+9psIehBRMROFxcHaMNEK0VU60=
-Name: chrome/locale/or/https-everywhere.properties
+Name: webextension/popup.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: Ue38KxRkVGnTHF370oqCYg==
+SHA1-Digest: 8H81IbVzvajpcpwhg1/h7v7aNd0=
-Name: chrome/locale/or/ssl-observatory.dtd
+Name: webextension/remove.png
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: 5cEC/96nu9+3tZZEOPpaqQ==
+SHA1-Digest: Pn9f97i3AIFlAMf420qZNzvA7DY=
-Name: chrome/locale/pa/https-everywhere.dtd
+Name: webextension/rules.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: 1K1Dke9Ro/q1tHrUdfUAgw==
-SHA1-Digest: 3zQyBLT9QrIfotqjyw9xBV1rOp8=
+MD5-Digest: Y5JOFJl7QH8C8cM6gTmDgQ==
+SHA1-Digest: lrmOSoqK9h891MqwwuZrhRCbiAo=
-Name: chrome/locale/pa/https-everywhere.properties
+Name: webextension/send-message.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: STsuIAMG7TTqOtLcBQ9zvA==
+SHA1-Digest: ZrcBR/Axi0k1+/KwYtw2X5S5I2s=
-Name: chrome/locale/pa/ssl-observatory.dtd
+Name: webextension/storage.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: HwCe4oNLmpwGLxGWpUJu8Q==
-SHA1-Digest: jYMWda13xj8i4+qWT19DlV40mRs=
+MD5-Digest: EF01Rr2R8YxRgwniTXFgGg==
+SHA1-Digest: Z/NmiEY9rz/7TN/99xdFwzThD1A=
-Name: chrome/locale/pap/https-everywhere.dtd
+Name: webextension/switch-planner.html
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: 2JisPY8mlSNjpR5Vw3FGjQ==
+SHA1-Digest: 6mXdkHPvuPisuFNmRNy0fvPIK2o=
-Name: chrome/locale/pap/https-everywhere.properties
+Name: webextension/switch-planner.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: Pun+sibPOPt6vYjqV2P4gA==
+SHA1-Digest: hqr9VWAj9t7f3whDo3xgnsB3V4Q=
-Name: chrome/locale/pap/ssl-observatory.dtd
+Name: webextension/translation.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: 5Ew/qMF7G9ldaviVnM7mOA==
+SHA1-Digest: wFPQy0Q4DwJAPz1UBxCDJ3Ta9LY=
-Name: chrome/locale/pl/https-everywhere.dtd
+Name: webextension/util.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: 3WLHcx9Ukdm0f2PL6ykrbw==
-SHA1-Digest: NdIxnbu0wCmz7UHS3ZawO8PZbPM=
+MD5-Digest: 47yplzdWWBXYyLtx7Ue9/Q==
+SHA1-Digest: wbts3rvnTBMcasxJdgsIuP7AN3k=
-Name: chrome/locale/pl/https-everywhere.properties
+Name: webextension/_locales/ach/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: PXr9Mp8ALJyigDFgjgGmzA==
-SHA1-Digest: jWXBXrLZ+dd4DqDwGBfXdD7m1fA=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/pl/ssl-observatory.dtd
+Name: webextension/_locales/ady/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: wPtzD/j21t03kwnnM2IU0g==
-SHA1-Digest: qOQKrt2rq1D8aUy4Q83gF6Q/8bI=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/pl_PL/https-everywhere.dtd
+Name: webextension/_locales/af/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Rj/CN4/vQ4LybAP+Ryhg4Q==
-SHA1-Digest: tZw5725a2jKDv7ZU97T5UKKg2tE=
+MD5-Digest: CpNCi+jTNHMuBi/GBJCOFQ==
+SHA1-Digest: iG6j+Eh5ZZPfgX4/C3jY3lMnhTA=
-Name: chrome/locale/pl_PL/https-everywhere.properties
+Name: webextension/_locales/af_ZA/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: zme7LDRZOJxYhP/bwo7zmg==
-SHA1-Digest: mdHj+D/94Xzf3psYTbD5lEI/fBA=
+MD5-Digest: C3rsjMopt60Go5RGI7QV5Q==
+SHA1-Digest: kKaZft5WxOVuvHK6ax/f4IUV1lw=
-Name: chrome/locale/pl_PL/ssl-observatory.dtd
+Name: webextension/_locales/ak/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: RztU7nkCSHzFw83ybf2vFQ==
-SHA1-Digest: JbeRdNZHmf8GRWEwHeNCRlgodPY=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/pms/https-everywhere.dtd
+Name: webextension/_locales/am/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: gyEwIlxnGHqKINRQd4U/Zg==
+SHA1-Digest: wNW6Tq6w9SBjubfKLggROq2pOlU=
-Name: chrome/locale/pms/https-everywhere.properties
+Name: webextension/_locales/am_ET/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: jc5+c7ZSijXJ6G9lDHntsA==
+SHA1-Digest: O/N2Bx4h2BvY0k1U6sR5WpA1uIE=
-Name: chrome/locale/pms/ssl-observatory.dtd
+Name: webextension/_locales/ar/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: 3wAj0ENZc3dGv7U74leW7Q==
+SHA1-Digest: x0KOR3b9VfL+LS6OzQvcniK5tc0=
-Name: chrome/locale/ps/https-everywhere.dtd
+Name: webextension/_locales/ar_AA/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: DARP7ysqdZQvIQQkbs0eIA==
+SHA1-Digest: rTEnTfMTGuI9wp3Nzya2YToC9dQ=
-Name: chrome/locale/ps/https-everywhere.properties
+Name: webextension/_locales/arn/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/ps/ssl-observatory.dtd
+Name: webextension/_locales/ast/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: 43BlDB5x2nwUg8orHdqwDA==
+SHA1-Digest: oqsluO6CR3zHFXpgs5kvdwygf08=
-Name: chrome/locale/pt/https-everywhere.dtd
+Name: webextension/_locales/az/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: IrqNhXxOwHvvFIWAz8XJdQ==
-SHA1-Digest: DBz8k8lrf8IVzebF/Sknwkq82MU=
+MD5-Digest: HclvFjr0ZCbcEWFiag+QtQ==
+SHA1-Digest: eYlytK/oS1qFPJ6CHiFzmExyypQ=
-Name: chrome/locale/pt/https-everywhere.properties
+Name: webextension/_locales/ba/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: O0iC9EoTgMH07ORXmpI/5w==
-SHA1-Digest: pbf5c5ly7C7srVpfmVyGKPqxPM4=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/pt/ssl-observatory.dtd
+Name: webextension/_locales/bal/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: rsGQ3vM0TttTkZX9Ua3a5g==
-SHA1-Digest: r1Y8YoM8Ua/kjHH//PPIvhF/fJE=
+MD5-Digest: WBu/Z9IdheTqYg7PN8qJ6w==
+SHA1-Digest: KLIySoU+8v3AyFfVTOUp/80nKIM=
-Name: chrome/locale/pt_BR/https-everywhere.dtd
+Name: webextension/_locales/be/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: d16xidN3NH2IJGxrhCL2nQ==
-SHA1-Digest: ZYogfmxmpzywmPz5I2/PB6su55M=
+MD5-Digest: GB2BEiEq5u7aafb9RfQFaA==
+SHA1-Digest: /hNWgkqKRAwJdU6WdJLZ/ClgLrE=
-Name: chrome/locale/pt_BR/https-everywhere.properties
+Name: webextension/_locales/bg/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: 3N3ins+wGJJwRT//Nv2pkA==
-SHA1-Digest: hsgMxmkh19jD8vWSJ+kVcZPYr9U=
+MD5-Digest: k/HwFsRg/3frmp8UJeHaVg==
+SHA1-Digest: mbybOT3rNTL334JZueqXrOXn1sA=
-Name: chrome/locale/pt_BR/ssl-observatory.dtd
+Name: webextension/_locales/bg_BG/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: 9XCJXoaIeI7zxMxVImZHFQ==
-SHA1-Digest: 6eEIE9sxM+dIE97Lkyvyvvjhfu0=
+MD5-Digest: C3rsjMopt60Go5RGI7QV5Q==
+SHA1-Digest: kKaZft5WxOVuvHK6ax/f4IUV1lw=
-Name: chrome/locale/ro/https-everywhere.dtd
+Name: webextension/_locales/bn/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: hIvMM30viKFt7xJs8nLHBg==
-SHA1-Digest: oeS0I2FjRR9bZpUosfxe89xhrtA=
+MD5-Digest: 8GaEPHSLLWgvDBcfOu82Dg==
+SHA1-Digest: D2c6Nw0WkrBS0A6/joFhTNZ/oqo=
-Name: chrome/locale/ro/https-everywhere.properties
+Name: webextension/_locales/bn_BD/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XN8nSkJSkgzKS5bevtxjdQ==
-SHA1-Digest: xFlQvzeLOlNLNqGLMWgiejw1ZFc=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/ro/ssl-observatory.dtd
+Name: webextension/_locales/bn_IN/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: DR+ECAAwnaZAP/2D7KRyoQ==
-SHA1-Digest: cM2h6XorZY3CuQy4Wk709ZalNz0=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/ru/https-everywhere.dtd
+Name: webextension/_locales/bo/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: TqHK1F7qNWVvoXa1NX3mFQ==
-SHA1-Digest: DYWNfEsyGpjAEHIFkoUzTnwZs+4=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/ru/https-everywhere.properties
+Name: webextension/_locales/br/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: ZW7L4md0IPTv9OFC5fI6Tg==
-SHA1-Digest: BxFfjtQh6Bw2LuAJnVjMn93EQzc=
+MD5-Digest: k98FBlV5/RtoQUcLWmGYsQ==
+SHA1-Digest: uAHiB+3mnEScWSevyNG3q1tD16c=
-Name: chrome/locale/ru/ssl-observatory.dtd
+Name: webextension/_locales/brx/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: 6zXoN/qFFiJHXWSCdliCqw==
-SHA1-Digest: 6DYdgVgNa4rbbFMnkXQGo9en+14=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/ru@petr1708/https-everywhere.dtd
+Name: webextension/_locales/bs/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: m0zhF/4Jp+7Bd5ntSAo8SA==
-SHA1-Digest: OvPYdR2LH1O4ATFlKSfygec8DHk=
+MD5-Digest: 8PJLjvU9eCLV5z/TiQqsuA==
+SHA1-Digest: TenTFtZVUKTiQgaSErIciwxtHBw=
-Name: chrome/locale/ru@petr1708/https-everywhere.properties
+Name: webextension/_locales/ca/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: fWKoKx6MgKla6MII9edZtw==
+SHA1-Digest: llZ9YttHBn/pkfdlahdrtnwSeeY=
-Name: chrome/locale/ru@petr1708/ssl-observatory.dtd
+Name: webextension/_locales/ca@valencia/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: gSjUeVoTvaEb1tTFJCutpw==
-SHA1-Digest: box3vl3XacHQPuLjXz8znhT+hZI=
+MD5-Digest: jMhLmj6EAEI1zQ+psOqPjg==
+SHA1-Digest: bK4cjrPGz8wM/CFaFxmg//91Dx4=
-Name: chrome/locale/sa/https-everywhere.dtd
+Name: webextension/_locales/ca_ES/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: xg1eQj0qTl0n/MtyCIAzVA==
+SHA1-Digest: 00AuDH7V+k8mRjeImQ9OU4zdMI8=
-Name: chrome/locale/sa/https-everywhere.properties
+Name: webextension/_locales/ceb/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/sa/ssl-observatory.dtd
+Name: webextension/_locales/co/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: WBu/Z9IdheTqYg7PN8qJ6w==
+SHA1-Digest: KLIySoU+8v3AyFfVTOUp/80nKIM=
-Name: chrome/locale/scn/https-everywhere.dtd
+Name: webextension/_locales/cs/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: GOJcJJFhzXkEIL1yKjSZsA==
+SHA1-Digest: 9AX8+Z7CrGA9RPKELNdz9+iWi9I=
-Name: chrome/locale/scn/https-everywhere.properties
+Name: webextension/_locales/cs_CZ/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: DARP7ysqdZQvIQQkbs0eIA==
+SHA1-Digest: rTEnTfMTGuI9wp3Nzya2YToC9dQ=
-Name: chrome/locale/scn/ssl-observatory.dtd
+Name: webextension/_locales/csb/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/sco/https-everywhere.dtd
+Name: webextension/_locales/cv/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/sco/https-everywhere.properties
+Name: webextension/_locales/cy/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: QzfnOcWtUet0PE+V3e+vzA==
+SHA1-Digest: NCfbU+x799XCfx84FZaS8qr1bsA=
-Name: chrome/locale/sco/ssl-observatory.dtd
+Name: webextension/_locales/cy_GB/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: DARP7ysqdZQvIQQkbs0eIA==
+SHA1-Digest: rTEnTfMTGuI9wp3Nzya2YToC9dQ=
-Name: chrome/locale/si/https-everywhere.dtd
+Name: webextension/_locales/da/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: VYwyoSwhSusnLeTd8PXo0g==
+SHA1-Digest: 2oOmSiNmVU4MI8Th4zuzv9ryWQM=
-Name: chrome/locale/si/https-everywhere.properties
+Name: webextension/_locales/da_DK/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: DARP7ysqdZQvIQQkbs0eIA==
+SHA1-Digest: rTEnTfMTGuI9wp3Nzya2YToC9dQ=
-Name: chrome/locale/si/ssl-observatory.dtd
+Name: webextension/_locales/de/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: 65rmrOQX1yyIVCNT6NROSA==
+SHA1-Digest: IA+ck4vioSHEKdKw1m6hXgSluv0=
-Name: chrome/locale/si_LK/https-everywhere.dtd
+Name: webextension/_locales/dz/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: CD8W07bMgD1Y7cY9x92CJw==
-SHA1-Digest: +JJmnwrq6NHsitQsRs197H2Ytb4=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/si_LK/https-everywhere.properties
+Name: webextension/_locales/el/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: QBAbWMiANOng5gZjBYUbqw==
-SHA1-Digest: rKpiA5gu39+Zn16haQ+EXOTgLT8=
+MD5-Digest: beNlK4ur/Af0QJu0Z57IVg==
+SHA1-Digest: 1bKfuinAveqwmYU9QVZSjn8Ml5g=
-Name: chrome/locale/si_LK/ssl-observatory.dtd
+Name: webextension/_locales/el_GR/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /r152YECXcrDqTjVKCUPeA==
-SHA1-Digest: HHqD8AsyR68mRnyINVQicYSsF0Q=
+MD5-Digest: C3rsjMopt60Go5RGI7QV5Q==
+SHA1-Digest: kKaZft5WxOVuvHK6ax/f4IUV1lw=
-Name: chrome/locale/sk/https-everywhere.dtd
+Name: webextension/_locales/en/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: ZBwvVmbHB5190hALJKQKGQ==
-SHA1-Digest: PBZECxDYohTE6yZSZBGBjFA/Xgo=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/sk/https-everywhere.properties
+Name: webextension/_locales/en_GB/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: lKnwxA5on8Kz/cswf5VylQ==
-SHA1-Digest: o/4FN4e3LkR+hYzKsObVmm/zPck=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/sk/ssl-observatory.dtd
+Name: webextension/_locales/eo/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: 6qfkKT7I7OrIOPoWfrOm0w==
-SHA1-Digest: C/M4h0f97dPcA398sipJy5ikSAs=
+MD5-Digest: ouY33gyQc7o7wzyCPs05lQ==
+SHA1-Digest: LqvKuyOGDMXIDyesxP5leaeCnJ4=
-Name: chrome/locale/sk_SK/https-everywhere.dtd
+Name: webextension/_locales/es/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: AMYsBcBaYeB8ghFUiPZKIw==
-SHA1-Digest: gZNnMOrDzNUp2qFUKztYFLoi1F4=
+MD5-Digest: hZyhaucl8vEkLVU3DGIxcQ==
+SHA1-Digest: BReg3cvty8gCn/9BSxiakDpsWRM=
-Name: chrome/locale/sk_SK/https-everywhere.properties
+Name: webextension/_locales/es_AR/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: HwneA92Jwc/9F8IbKHAakQ==
-SHA1-Digest: 9LHSU7IBve61RwkSqilrZy94FR8=
+MD5-Digest: EOloofZLKdzlwiFPzWh8sA==
+SHA1-Digest: idGNlGWa/u8IyrQIdw09HCleYxU=
-Name: chrome/locale/sk_SK/ssl-observatory.dtd
+Name: webextension/_locales/es_CL/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: O+3TBM9yaGNbYIicWb/umw==
-SHA1-Digest: 36v1zYobdxGv1B99q4K08435kDg=
+MD5-Digest: qJEIVcspT/8b2C8flIdHjw==
+SHA1-Digest: 8Zj/v7QBCIxGEGzv1s9GOG12Q+M=
-Name: chrome/locale/sl/https-everywhere.dtd
+Name: webextension/_locales/es_CO/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: BdyX5S2e2HO3j+cW0Nadew==
-SHA1-Digest: y5NTAJPUzRpptBqPp3tPENELr0I=
+MD5-Digest: YzNiwjrPG2hHRvZ2aWz4hg==
+SHA1-Digest: 74RzDxY7nC6jXNUPlnksb3B6diM=
-Name: chrome/locale/sl/https-everywhere.properties
+Name: webextension/_locales/es_MX/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: 54LHG55uLY/z88dQ1dAJSw==
-SHA1-Digest: NrZ5lkWAwvoXiGeJyzLQfuDaI44=
+MD5-Digest: 7p0aCCHCYiCNDMy/MQuJQA==
+SHA1-Digest: aYhzyuFI1/py1buR6uC6NgXaNSY=
-Name: chrome/locale/sl/ssl-observatory.dtd
+Name: webextension/_locales/es_NI/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: UH5KrUSlo/EY6voPFq3e2A==
-SHA1-Digest: wN/70HjrHBHhpyA8vQzqlZyAXc0=
+MD5-Digest: C3rsjMopt60Go5RGI7QV5Q==
+SHA1-Digest: kKaZft5WxOVuvHK6ax/f4IUV1lw=
-Name: chrome/locale/sl_SI/https-everywhere.dtd
+Name: webextension/_locales/et/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Dz0oqrbioJqOvo9/adDmBg==
-SHA1-Digest: 368cO0NsGn5QKhsWl7fh8NHmIhM=
+MD5-Digest: +zdyvEg2q8i+CgB8vtBXFg==
+SHA1-Digest: LZys1zPJpfefrqIOTXHWRB5ZnXs=
-Name: chrome/locale/sl_SI/https-everywhere.properties
+Name: webextension/_locales/eu/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: ZN3sJh8f2hZJIj3SRquWkg==
-SHA1-Digest: 5Wd36Io0rZcXIm+qeYU1oog96Bc=
+MD5-Digest: Mp8Y05QG9O/4hX529o+emg==
+SHA1-Digest: YwYYUJ7gyVtxziSERW1TMbHw8bc=
-Name: chrome/locale/sl_SI/ssl-observatory.dtd
+Name: webextension/_locales/fa/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: rr9dthYFWFXwUAbC+wRtoQ==
-SHA1-Digest: 0F0R9zCok0nR/W87+3IbwDGynZg=
+MD5-Digest: Wu3IsSt9r+MlYBezIRdS9Q==
+SHA1-Digest: CBYWH6M4D/rLoTiJVSPEfFPBbDE=
-Name: chrome/locale/sn/https-everywhere.dtd
+Name: webextension/_locales/fi/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: uYIj4mOrBMifrsWV2AA/TA==
+SHA1-Digest: 1VplSQ1qlpMpaXJ6F4klnaCDg/M=
-Name: chrome/locale/sn/https-everywhere.properties
+Name: webextension/_locales/fil/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: JvydL6z2B1wnSWqNOLyZVQ==
+SHA1-Digest: fXvsd9BZsZoe0y6rhLhlj57agrM=
-Name: chrome/locale/sn/ssl-observatory.dtd
+Name: webextension/_locales/fo/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: YvrdYaBtLDVYtj0QwXW0Aw==
+SHA1-Digest: +0jof0lTUYnMCcWA+k87tNS13rg=
-Name: chrome/locale/so/https-everywhere.dtd
+Name: webextension/_locales/fr/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: vt1OwbDrgDv+lajVOzOVhA==
+SHA1-Digest: ubvPEKr3K4GRuWWgbJOnwocAW/c=
-Name: chrome/locale/so/https-everywhere.properties
+Name: webextension/_locales/fr_CA/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: EFM0vf2W6EspI0rA4LlecQ==
+SHA1-Digest: 5ruJRaDIiL2UWk65KUNhL6mvYy4=
-Name: chrome/locale/so/ssl-observatory.dtd
+Name: webextension/_locales/fur/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/son/https-everywhere.dtd
+Name: webextension/_locales/fy/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: uZoMv6k8lns9B+OZTj/WVQ==
+SHA1-Digest: /uQjC3hpmv5sxCkVMuCNV87Bqgo=
-Name: chrome/locale/son/https-everywhere.properties
+Name: webextension/_locales/ga/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: 39qX5xQTJwmQp5uFwd+L+w==
+SHA1-Digest: /VvaACbXjUSqrE8mPCCHeTwEu2M=
-Name: chrome/locale/son/ssl-observatory.dtd
+Name: webextension/_locales/gd/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/sq/https-everywhere.dtd
+Name: webextension/_locales/gl/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: bJSyuLPG089txzszCvvEZw==
-SHA1-Digest: cfu4wadMK25q53zEvzSR3U0uOwo=
+MD5-Digest: ohCREiiQ6vHHaqfFBC5H9A==
+SHA1-Digest: WRUjGP9dyy1ShjNZGZCwx1egLac=
-Name: chrome/locale/sq/https-everywhere.properties
+Name: webextension/_locales/gu/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: BppRzqkk0XBOJ2MrjiMrrw==
-SHA1-Digest: HbwqM/DzGmq8SwbF2WmVaZEeQAc=
+MD5-Digest: fdLS+YO+H+MT9bKcyOK8ZA==
+SHA1-Digest: C8qCdl2riEzXGWjo0zbUVRQgEJQ=
-Name: chrome/locale/sq/ssl-observatory.dtd
+Name: webextension/_locales/gu_IN/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: NKN8As0wtXOj+FJ0mGBDHQ==
-SHA1-Digest: btVYnIy0eoelb8Age83pYrnRpNY=
+MD5-Digest: UlqJ9nQ/ETMVYukaTSXPcQ==
+SHA1-Digest: mF9wyOXrRDcmFjZfCH/yB3e/2U4=
-Name: chrome/locale/sq_AL/https-everywhere.dtd
+Name: webextension/_locales/gun/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: yfo7YQeeQ66zBw59nBFIaA==
-SHA1-Digest: amF5uU+jEDSlVdXfDCdz02fZr0Y=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/sq_AL/https-everywhere.properties
+Name: webextension/_locales/ha/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/sq_AL/ssl-observatory.dtd
+Name: webextension/_locales/he/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: jfitnUpdvsWwJ3JxBjohGg==
-SHA1-Digest: i3jufc9C9o2N98F2HpEpUn0tni8=
+MD5-Digest: 3ZLG1tqyrV19fgUKNnyNCw==
+SHA1-Digest: 6i9NvgGJjP3OUgofWUcQv72zDK0=
-Name: chrome/locale/sr/https-everywhere.dtd
+Name: webextension/_locales/hi/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: pgy9BMIu/yjJCb0Q9KDoaA==
-SHA1-Digest: vylBL5DBaeb+7jpX2mIY+AB7K5o=
+MD5-Digest: UGtyFPbEtCv8UIXqK1CVTA==
+SHA1-Digest: Dp4ll6ZLQ6PJlrCxqEjYZNLItUs=
-Name: chrome/locale/sr/https-everywhere.properties
+Name: webextension/_locales/hr/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: 26AFP6txN4+E4cjCP7oGMg==
-SHA1-Digest: nxcEU6QYPfqsqqwajpxu9rV0lD8=
+MD5-Digest: cRMWqQ5HlLPHvaFNttiyhQ==
+SHA1-Digest: rKeH0PpEc2IZeV+0yvAZ+6wKlME=
-Name: chrome/locale/sr/ssl-observatory.dtd
+Name: webextension/_locales/hr_HR/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: +zFvG7y/JFqaXv7DS/Qd1A==
-SHA1-Digest: WMvcAZ3M1QWK2NMRqMIQxliITqo=
+MD5-Digest: wekhGSOBFAI/BXF1dYuwxw==
+SHA1-Digest: L/sCjZTfrqx4cuVe6ExO5lgdkXU=
-Name: chrome/locale/sr@latin/https-everywhere.dtd
+Name: webextension/_locales/ht/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: U7lbMeTOH7NiqmX/w6RNUA==
-SHA1-Digest: L1RuSNRLzi8d8aqeL3QIGSveso0=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/sr@latin/https-everywhere.properties
+Name: webextension/_locales/hu/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: JKvrVWIRkUbGXUUvmN22bQ==
+SHA1-Digest: YemUnOaTcEyr17JkrttRupb5L7w=
-Name: chrome/locale/sr@latin/ssl-observatory.dtd
+Name: webextension/_locales/hy/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: ZNI97feqRtbDaRb5vQJ1/w==
-SHA1-Digest: sr+tDbYwOpO/hxIOMPDMQiyGl50=
+MD5-Digest: zGXnta2MDaRqHcxok+c0Pw==
+SHA1-Digest: Pjin92TDm5eA5oaBcsWH/KVPPN4=
-Name: chrome/locale/st/https-everywhere.dtd
+Name: webextension/_locales/hy_AM/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: WBu/Z9IdheTqYg7PN8qJ6w==
+SHA1-Digest: KLIySoU+8v3AyFfVTOUp/80nKIM=
-Name: chrome/locale/st/https-everywhere.properties
+Name: webextension/_locales/ia/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: FSpl+HMzfhbrb+pzGk4k4A==
+SHA1-Digest: 7OMFPxjkguVew016tHnbJDHgWc4=
-Name: chrome/locale/st/ssl-observatory.dtd
+Name: webextension/_locales/id/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: HsHvJBxteVejRVDenRn4lw==
+SHA1-Digest: 1YYdyuDUVCwMfUXM4no2IR/MXrA=
-Name: chrome/locale/su/https-everywhere.dtd
+Name: webextension/_locales/is/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: N9xX2CQTmlgEC55+lV0hPQ==
+SHA1-Digest: 1dlvp6xau0yXj6NDmVmcctgAlPE=
-Name: chrome/locale/su/https-everywhere.properties
+Name: webextension/_locales/it/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: KpBXtWf04KNU5AfUQQKN1w==
+SHA1-Digest: 12haF4P0t6d+bAdxAHgT1fUqPns=
-Name: chrome/locale/su/ssl-observatory.dtd
+Name: webextension/_locales/ja/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: ZwXwaJfPSoRm70rph+FfbA==
+SHA1-Digest: vDLFfW5yb6R0D+VE+WgRecUZaDA=
-Name: chrome/locale/sv/https-everywhere.dtd
+Name: webextension/_locales/jbo/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: aFlvEUuGg0Ahq8Ev8s9aWA==
-SHA1-Digest: CaWtgtM+WUbM63MfTsGzIyNQHhU=
+MD5-Digest: WBu/Z9IdheTqYg7PN8qJ6w==
+SHA1-Digest: KLIySoU+8v3AyFfVTOUp/80nKIM=
-Name: chrome/locale/sv/https-everywhere.properties
+Name: webextension/_locales/jv/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: dC+4uR5af9cZ5SmCp6LUMA==
-SHA1-Digest: w56f9qGZ9z6TtiAtko8dgwwxnPQ=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/sv/ssl-observatory.dtd
+Name: webextension/_locales/ka/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: oRhjFTNIafuNUxgYnBLYKQ==
-SHA1-Digest: DPJJJtJxPtVldcWFrOS/NjLlfCQ=
+MD5-Digest: WYyYSHX+3YoVlqeQNb35IA==
+SHA1-Digest: +JX0McaEL0qNO2TSF6ijplEBehU=
-Name: chrome/locale/sv_SE/https-everywhere.dtd
+Name: webextension/_locales/kk/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: T4ZR4viMIw5OKZI3t8JkKA==
-SHA1-Digest: pP4xYuQBNtO/u+RdQ8rksSjTr/M=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/sv_SE/https-everywhere.properties
+Name: webextension/_locales/km/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: JSS3FARi65XslQa5SDB16Q==
-SHA1-Digest: fYOX+8CyYrFIbb+AWYrN1O7W7UI=
+MD5-Digest: OkdLfjRQFhiekX1Np/lzIw==
+SHA1-Digest: vz+Bbns9NSSxg0QZhx+t3iHQNhE=
-Name: chrome/locale/sv_SE/ssl-observatory.dtd
+Name: webextension/_locales/kn/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: 3rXVOdQg/xpjPErJOGQZaw==
-SHA1-Digest: qnrzobq7E/EtGV23OWJiBN0i6jw=
+MD5-Digest: mdyFRQlt7NvXrzNe5nimWA==
+SHA1-Digest: oHi8vFBxEZhnhf5kkMNCD8txM7g=
-Name: chrome/locale/sw/https-everywhere.dtd
+Name: webextension/_locales/ko/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: kU5jx5Ghlm0NcU/bqvK+uw==
+SHA1-Digest: w8PbIkdtxG36Z/CQK1YxVXjwZwI=
-Name: chrome/locale/sw/https-everywhere.properties
+Name: webextension/_locales/ko_KR/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: 9bKxpy6C0zGTJHM+G885GA==
+SHA1-Digest: LipUodYMQuaWbAy5uXHVbCLKIV4=
-Name: chrome/locale/sw/ssl-observatory.dtd
+Name: webextension/_locales/ku/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/szl/https-everywhere.dtd
+Name: webextension/_locales/ku_IQ/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: ZVrSAY9OJ0b5zE8cs/Ke7Q==
+SHA1-Digest: LNJac+QkkGe0SOBtnw28n8yXlgE=
-Name: chrome/locale/szl/https-everywhere.properties
+Name: webextension/_locales/kw/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/szl/ssl-observatory.dtd
+Name: webextension/_locales/ky/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: d1Tclm9JV81ChY1vVt/auw==
+SHA1-Digest: pum65CG4ZtkuU0uCbC9XjhdmyQA=
-Name: chrome/locale/ta/https-everywhere.dtd
+Name: webextension/_locales/la/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Qs8MgcbuVwbc3/bOC16/CA==
-SHA1-Digest: U5BfTwZgdVOD9cLmkhX+cZ8XVtg=
+MD5-Digest: 9ZadGQz20LvTKhIESvq/WQ==
+SHA1-Digest: ptKYS2QMFhyGLktjjMZjme03oCU=
-Name: chrome/locale/ta/https-everywhere.properties
+Name: webextension/_locales/lb/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: 5tAXMVfcu/PyTiffFzyd4w==
-SHA1-Digest: 59KjWJla9s0hI20sEzRYy6zanew=
+MD5-Digest: S/VcWgGlO2Ko4Jwshm2O8Q==
+SHA1-Digest: lH8kzMW3HykIDiH4AIH8qAe7EKY=
-Name: chrome/locale/ta/ssl-observatory.dtd
+Name: webextension/_locales/lg/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: 2rQU2YQk3OdqU+I+iZfXTw==
-SHA1-Digest: Y8WJ/4avyAarZPGj3+fAzmW9Mkw=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/te/https-everywhere.dtd
+Name: webextension/_locales/ln/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/te/https-everywhere.properties
+Name: webextension/_locales/lo/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: HL+7bwAtsfMdLuxVMTJPvw==
+SHA1-Digest: iGO9syFjaHKPCdzZA2Lj8iWHfb4=
-Name: chrome/locale/te/ssl-observatory.dtd
+Name: webextension/_locales/lt/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: zxQhyX24rYz/mq1INCAFfA==
+SHA1-Digest: nXzcn/iTyBIsTnUDbEx4JKyVwrE=
-Name: chrome/locale/te_IN/https-everywhere.dtd
+Name: webextension/_locales/lv/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: vOXh1tkj/x1XGhNfeXsTtw==
+SHA1-Digest: QZBVWiX351LkdZbG7kOs3kdhAUY=
-Name: chrome/locale/te_IN/https-everywhere.properties
+Name: webextension/_locales/mg/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/te_IN/ssl-observatory.dtd
+Name: webextension/_locales/mi/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/templates/https-everywhere.dtd
+Name: webextension/_locales/mk/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: T2C43t1d6wJNpBcCPT41hw==
+SHA1-Digest: wEzXzy0l6e63rJElEHRrhqB+0Zc=
-Name: chrome/locale/templates/https-everywhere.properties
+Name: webextension/_locales/ml/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: s3M1PmptDUlscyIn0Ha8BA==
+SHA1-Digest: V8WwqGh+/oybVNYHZg8GyR4E4+s=
-Name: chrome/locale/templates/ssl-observatory.dtd
+Name: webextension/_locales/mn/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: EoU1rLdDkfac4YY2L5FG2Q==
+SHA1-Digest: lo0msScNnWl3vXt6qkbxfmlmk34=
-Name: chrome/locale/tg/https-everywhere.dtd
+Name: webextension/_locales/mr/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: FKnZt1cHJSwWBYT6J5pXpQ==
+SHA1-Digest: ZPhK3qrKFZqOFUSDiIMt6LbH/8s=
-Name: chrome/locale/tg/https-everywhere.properties
+Name: webextension/_locales/ms/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: nncMdJtLDd94XtqIXeKqZA==
+SHA1-Digest: CvaJH1jojZgUrS5YxQ0OH+6Y7og=
-Name: chrome/locale/tg/ssl-observatory.dtd
+Name: webextension/_locales/ms_MY/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: B3TofqiQNV9AfjQ1cScQZQ==
+SHA1-Digest: 40tkEYgjZQW3P7yJSI4NJr4Di64=
-Name: chrome/locale/th/https-everywhere.dtd
+Name: webextension/_locales/mt/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: jk2bKAjca6lArlHTrLKN2g==
-SHA1-Digest: 8B13iEyTik9pSZWtJ2FZPjy88l0=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/th/https-everywhere.properties
+Name: webextension/_locales/my/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: 4zqI4NbA080nYluFRAKlcA==
-SHA1-Digest: etI1fNK0Me1Ut10SHyvv8pnAqcE=
+MD5-Digest: OURkpsr1AATHRZ+pwlyVWA==
+SHA1-Digest: EDNzyaKihJsfU1nD8VazSfCtisQ=
-Name: chrome/locale/th/ssl-observatory.dtd
+Name: webextension/_locales/nah/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: QQQSmRpmWTI4LMRbCabFKA==
-SHA1-Digest: 9zUiD/FeqAmcs7DiE9N6n0a4RgU=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/ti/https-everywhere.dtd
+Name: webextension/_locales/nap/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/ti/https-everywhere.properties
+Name: webextension/_locales/nb/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: +T8+ub7wqpUn1kec8ClWTA==
+SHA1-Digest: irkB0BCQbpMyi6JHRt2IRZnwc9g=
-Name: chrome/locale/ti/ssl-observatory.dtd
+Name: webextension/_locales/nds/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/tk/https-everywhere.dtd
+Name: webextension/_locales/ne/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/tk/https-everywhere.properties
+Name: webextension/_locales/nl/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: 3UM78bfW62XxcFQuT3trdw==
+SHA1-Digest: wuodmpRlrp1MO3ix2ATfEMT0lzE=
-Name: chrome/locale/tk/ssl-observatory.dtd
+Name: webextension/_locales/nl_BE/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: 3Nyqz7n0S0LrQUTXBtzJJw==
+SHA1-Digest: Fzxeu4GZZzhJBhnf+g/mGlaW+xA=
-Name: chrome/locale/tl_PH/https-everywhere.dtd
+Name: webextension/_locales/nn/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: 3Zq7dnD2hEbUcxriJeZXZg==
-SHA1-Digest: JWRqU6GyP1evr1Itj+m/3BmqfC4=
+MD5-Digest: Yc0HOOL1MsQLqLBNlJF16w==
+SHA1-Digest: DGprXTAcsgiyi7NAbLX0Wxt7C54=
-Name: chrome/locale/tl_PH/https-everywhere.properties
+Name: webextension/_locales/nso/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/tl_PH/ssl-observatory.dtd
+Name: webextension/_locales/oc/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/tr/https-everywhere.dtd
+Name: webextension/_locales/om/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: DA2zapvvU3xrUj1rl0wECA==
-SHA1-Digest: ewpj3+H0Z83dyEY/b4lpJo451dY=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/tr/https-everywhere.properties
+Name: webextension/_locales/or/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: LBrze6Lp60n5HCr1mhpZUw==
-SHA1-Digest: buUhfxx5JLDTwYARuT3WDNvcydA=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/tr/ssl-observatory.dtd
+Name: webextension/_locales/pa/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: 5fUoFKLNEzCqM9UJ52NnLQ==
-SHA1-Digest: lfqBDTTuBMrMNuzPOpwco07clBQ=
+MD5-Digest: JK/VaQzGENZ78SKF+hOXow==
+SHA1-Digest: 3pBocVJMiIQJPDUTZb/FrEa7+rc=
-Name: chrome/locale/ug@Arab/https-everywhere.dtd
+Name: webextension/_locales/pap/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/ug@Arab/https-everywhere.properties
+Name: webextension/_locales/pl/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: CakJg5SROxT8xe8ucPm3aw==
+SHA1-Digest: yRrvdD8hr+sxHOZfxAk4DHtOtSY=
-Name: chrome/locale/ug@Arab/ssl-observatory.dtd
+Name: webextension/_locales/pl_PL/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: 3MaorGP93lUpZgCyNy7evQ==
+SHA1-Digest: ZqhyMN29VqIF5zQbqf6rC5JIGko=
-Name: chrome/locale/uk/https-everywhere.dtd
+Name: webextension/_locales/pms/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: U+HLPss6lE8HDKcfXcTlKw==
-SHA1-Digest: zQjaTUrLdeTwruySPVl1wPypCQ8=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/uk/https-everywhere.properties
+Name: webextension/_locales/ps/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: A3GITxTpo9e7ZcwrtWJwsg==
-SHA1-Digest: hhkL89cihRWgrZLdC7rhKsPbMRo=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/uk/ssl-observatory.dtd
+Name: webextension/_locales/pt/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: 2RgpQGXAZBnNN+GfPj0zvw==
-SHA1-Digest: q3lOHdF1WoJUfpt4GIompO0A0uU=
+MD5-Digest: zityb222Z/w+iY3X2jpXlw==
+SHA1-Digest: s+Mewx9/P9SGNiwBOe0Y+DXzyY0=
-Name: chrome/locale/ur/https-everywhere.dtd
+Name: webextension/_locales/pt_BR/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: EsTFk9/6LuG8jvdkynOu3g==
+SHA1-Digest: ogDqCs+kxQqlsw7Kys4aFGekO+0=
-Name: chrome/locale/ur/https-everywhere.properties
+Name: webextension/_locales/ro/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: CgLOg2kssm+9BtO9Vbi9lQ==
+SHA1-Digest: MnmRFKFmn2dM8nbygDtvfd8Rkrs=
-Name: chrome/locale/ur/ssl-observatory.dtd
+Name: webextension/_locales/ru/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: aybAt7O87wZ9Gceb7Gyi3w==
+SHA1-Digest: ZTKQH71ygtK+81n2h+CtkfeabQ4=
-Name: chrome/locale/ur_PK/https-everywhere.dtd
+Name: webextension/_locales/ru@petr1708/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: l9dttH3FSvTlkF2Q30qtGw==
-SHA1-Digest: 4p3Ylj+y3RGF7OHThTFhOwwHssE=
+MD5-Digest: ijUHs0x2526Tg3poU+qxoA==
+SHA1-Digest: zPUg3Ubq8dCRI3RGMSF7G7xdxgU=
-Name: chrome/locale/ur_PK/https-everywhere.properties
+Name: webextension/_locales/sa/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: WBu/Z9IdheTqYg7PN8qJ6w==
+SHA1-Digest: KLIySoU+8v3AyFfVTOUp/80nKIM=
-Name: chrome/locale/ur_PK/ssl-observatory.dtd
+Name: webextension/_locales/scn/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: h9AM5suZavf7+46hHTd/3g==
-SHA1-Digest: icLEwbi+ccL/luKqVT5u7kI7pkY=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/uz/https-everywhere.dtd
+Name: webextension/_locales/sco/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: nmxL6NSAyJbyh/tyl7luKg==
-SHA1-Digest: SIGsPfy3LjRDxBP+GJ3vQhh5TpU=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/uz/https-everywhere.properties
+Name: webextension/_locales/si/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: WBu/Z9IdheTqYg7PN8qJ6w==
+SHA1-Digest: KLIySoU+8v3AyFfVTOUp/80nKIM=
-Name: chrome/locale/uz/ssl-observatory.dtd
+Name: webextension/_locales/si_LK/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: KVmPI62j4jDp549vptP6Kw==
-SHA1-Digest: nRwuatYoCEKqEps4yCrooZ/F3T8=
+MD5-Digest: e8YNEucg1sOgTVkTSmVSXw==
+SHA1-Digest: 1zld6LIYWj0PcBz/546rFJaIfdo=
-Name: chrome/locale/ve/https-everywhere.dtd
+Name: webextension/_locales/sk/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: p9rgkSjqdrbhnFQXSL4QiQ==
+SHA1-Digest: iFBGFbO/mBcRWOi7lOAwjWeeiSs=
-Name: chrome/locale/ve/https-everywhere.properties
+Name: webextension/_locales/sk_SK/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: VIxea2dKmMVqCVtNgFqDGg==
+SHA1-Digest: CRlnmjWpfQhTjOvwZtNRpQtRkUk=
-Name: chrome/locale/ve/ssl-observatory.dtd
+Name: webextension/_locales/sl/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: UK+Uz9IR05QI7tysM9zwig==
+SHA1-Digest: 627cVCPXCuuczZUb9lhg/oXpOB4=
-Name: chrome/locale/vi/https-everywhere.dtd
+Name: webextension/_locales/sl_SI/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: +fEy4lTr4hv9nP1PswZtdg==
-SHA1-Digest: KcW225SIB7vDMM9AS9F9Suafr/w=
+MD5-Digest: BFIcz5ivH5AGMwi8tlNf1Q==
+SHA1-Digest: U/Po9bFxzoug3bt82J6EguMqcTA=
-Name: chrome/locale/vi/https-everywhere.properties
+Name: webextension/_locales/sn/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XnKJP1wT2LkrVeXkiuFE/A==
-SHA1-Digest: aHlJH588F7TPc2R/xYQlOiNabZk=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/vi/ssl-observatory.dtd
+Name: webextension/_locales/so/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: HylqJWHMY4YenUHOELQnNA==
-SHA1-Digest: pXhzEKZJxrObU8ulcxjW2GgV6Vw=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/wa/https-everywhere.dtd
+Name: webextension/_locales/son/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/wa/https-everywhere.properties
+Name: webextension/_locales/sq/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: giyjJOE34zd6PoyfWBvezw==
+SHA1-Digest: X0AfE5f7ihJna6wZMq9Dv0jGqCQ=
-Name: chrome/locale/wa/ssl-observatory.dtd
+Name: webextension/_locales/sq_AL/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: DARP7ysqdZQvIQQkbs0eIA==
+SHA1-Digest: rTEnTfMTGuI9wp3Nzya2YToC9dQ=
-Name: chrome/locale/wo/https-everywhere.dtd
+Name: webextension/_locales/sr/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: 2zj2GPvxvdLmY5iqi2MIMg==
+SHA1-Digest: 8KERyhrUBQtg62PPfBsH9hKEQr4=
-Name: chrome/locale/wo/https-everywhere.properties
+Name: webextension/_locales/sr@latin/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: 8PJLjvU9eCLV5z/TiQqsuA==
+SHA1-Digest: TenTFtZVUKTiQgaSErIciwxtHBw=
-Name: chrome/locale/wo/ssl-observatory.dtd
+Name: webextension/_locales/st/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/yo/https-everywhere.dtd
+Name: webextension/_locales/su/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/yo/https-everywhere.properties
+Name: webextension/_locales/sv/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: sbR7RUlbEHMPBqOE9x026Q==
+SHA1-Digest: GubsHo8StH+/mEYEU8bfJmIsPIU=
-Name: chrome/locale/yo/ssl-observatory.dtd
+Name: webextension/_locales/sv_SE/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: nncMdJtLDd94XtqIXeKqZA==
+SHA1-Digest: CvaJH1jojZgUrS5YxQ0OH+6Y7og=
-Name: chrome/locale/zh-CN/https-everywhere.dtd
+Name: webextension/_locales/sw/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: xE2wMjzetw4w49Rj59tTpw==
-SHA1-Digest: 2X4T2yat0/AJqHtELk3EraWcUUc=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/zh-CN/https-everywhere.properties
+Name: webextension/_locales/szl/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: 7WRDyMx26GnCJRG0z+R3IQ==
-SHA1-Digest: aF/qWGBba52OatyWDhlqkFVlX8c=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/zh-CN/ssl-observatory.dtd
+Name: webextension/_locales/ta/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: YWMkr4TUHtYPXGKwyvuklQ==
-SHA1-Digest: hm4D1wtxncd/pRy7KEHThSIdKsg=
+MD5-Digest: R4e4vhLfcSTxTrcYSq4Cuw==
+SHA1-Digest: bFmP4KlmRgyJ600/khyqfE3dydc=
-Name: chrome/locale/zh/https-everywhere.dtd
+Name: webextension/_locales/te/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: yfo7YQeeQ66zBw59nBFIaA==
-SHA1-Digest: amF5uU+jEDSlVdXfDCdz02fZr0Y=
+MD5-Digest: 4pvVrdsXXYkvpEzAHRMQpg==
+SHA1-Digest: LGUKDJHJt1OZa3+r+TsxefdjqeI=
-Name: chrome/locale/zh/https-everywhere.properties
+Name: webextension/_locales/te_IN/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: YtS2epu01TazFPbFmpsI/g==
-SHA1-Digest: Cv7tQJ78lyhjEuq0PYh91QMdi8E=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/zh/ssl-observatory.dtd
+Name: webextension/_locales/templates/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: jfitnUpdvsWwJ3JxBjohGg==
-SHA1-Digest: i3jufc9C9o2N98F2HpEpUn0tni8=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/zh_CN.GB2312/https-everywhere.dtd
+Name: webextension/_locales/tg/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: yfo7YQeeQ66zBw59nBFIaA==
-SHA1-Digest: amF5uU+jEDSlVdXfDCdz02fZr0Y=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/zh_CN.GB2312/https-everywhere.properties
+Name: webextension/_locales/th/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: YtS2epu01TazFPbFmpsI/g==
-SHA1-Digest: Cv7tQJ78lyhjEuq0PYh91QMdi8E=
+MD5-Digest: uJW4oHGn3Myp8rgGFCEJDw==
+SHA1-Digest: nr3sJMcPeoQ8VBaDPO0DY4dbiX0=
-Name: chrome/locale/zh_CN.GB2312/ssl-observatory.dtd
+Name: webextension/_locales/ti/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: jfitnUpdvsWwJ3JxBjohGg==
-SHA1-Digest: i3jufc9C9o2N98F2HpEpUn0tni8=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/zh_HK/https-everywhere.dtd
+Name: webextension/_locales/tk/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Qwid2vWFnc6NAYh8YSVHng==
-SHA1-Digest: xhy+uxDfTWUU5ayQttP4EtSYltE=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/zh_HK/https-everywhere.properties
+Name: webextension/_locales/tl_PH/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: N/fxK3TbM42McThylOYCZg==
-SHA1-Digest: ipz0PPOkCfrh1zrB4gAOVvv6FGA=
+MD5-Digest: lhpAKx7UadONNJc9NjJqVw==
+SHA1-Digest: Q5SYWHUziW+WZDR4WC/L2DRtt1g=
-Name: chrome/locale/zh_HK/ssl-observatory.dtd
+Name: webextension/_locales/tr/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: VI5hHXDTwYBc9V6zpcgKBA==
-SHA1-Digest: Ysacze8GSOFsyR9GUVKJd9TykYE=
+MD5-Digest: Ezrdi5aCzziDi4RfZeCDuA==
+SHA1-Digest: ETYvBgeZ6RNSxiw79AhegxmaY9Y=
-Name: chrome/locale/zh_TW/https-everywhere.dtd
+Name: webextension/_locales/tzm/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: 8Cw6ci4yvrp1rYuR0GEK5w==
-SHA1-Digest: TTJuvenzDgkMlu4cj4eHyE0eoCQ=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/locale/zh_TW/https-everywhere.properties
+Name: webextension/_locales/ug@Arab/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: p1L8+gg/bwIWu5fN4fGnsA==
-SHA1-Digest: 57Mey+G1jnjNhTgTw9n78Kkqejg=
+MD5-Digest: mo3PQlynsmGh1rVLjR9NpQ==
+SHA1-Digest: hxVWDwrrwh2G/7us7vduwT/mZLE=
-Name: chrome/locale/zh_TW/ssl-observatory.dtd
+Name: webextension/_locales/uk/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: bYXoQZMMz/OFsgFKUbmczA==
-SHA1-Digest: GFJ5aPMhyUI/cwjTY/Cv3imKs5Q=
+MD5-Digest: dOM/j3yzd5RtJKgz37JWAw==
+SHA1-Digest: UU6iGilzksDCWdxZdxx5fhfdLkY=
-Name: chrome/locale/zu/https-everywhere.dtd
+Name: webextension/_locales/ur/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /LMdumbZxkctzFI2q9kbTw==
-SHA1-Digest: PtyTCbC8kYortQT7iyRNfOHljag=
+MD5-Digest: fSYzkzC/IzbocWS7edduNw==
+SHA1-Digest: SM51eopNVMdtsVOrNumwWajIXp4=
-Name: chrome/locale/zu/https-everywhere.properties
+Name: webextension/_locales/ur_PK/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: XDAzRIKmfyAo2rnb6Rw+Kw==
-SHA1-Digest: FyxdJkAsnBOyiBFHWAthoWu72Ds=
+MD5-Digest: MnbZLctxhNV3tWAWlmPcjw==
+SHA1-Digest: lrY282+UOG5Kdmqkgs5P/h//xF4=
-Name: chrome/locale/zu/ssl-observatory.dtd
+Name: webextension/_locales/uz/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hl9eTckPVjvEcAIp5mY7aA==
-SHA1-Digest: xrBgVJCRqLeGb/wPIqZ7EdXqXgU=
+MD5-Digest: SnNOjUTZ2CUv2jdCzMPGwA==
+SHA1-Digest: xAlyhfD625MTr/7oIA5cAMCiD9M=
-Name: chrome/skin/cross.png
+Name: webextension/_locales/ve/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: bgHvUPVhsTSHZ6/9OiM9GQ==
-SHA1-Digest: lRQBVkT7+spdDBm/AcnceJCVonA=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/skin/eff-16.png
+Name: webextension/_locales/vi/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: HGyJUQ/uTVld1pcjT1SNvA==
-SHA1-Digest: nwX4H0BzO0cZ4eXxw6OGTzMWLJU=
+MD5-Digest: JCdJImqma5edjIHBuNNdCg==
+SHA1-Digest: 4ldOjg39yAPprIRSY9gm/AfPotI=
-Name: chrome/skin/https-everywhere-128.png
+Name: webextension/_locales/wa/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: tDx9xdTq6mFpDq+NoGB/1g==
-SHA1-Digest: O/sOrTssRNlo4MCNbG+H5M2/RnY=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/skin/https-everywhere-16-gray.png
+Name: webextension/_locales/wo/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: /uZbLpQ6tAloLwSgdUwUuQ==
-SHA1-Digest: jffcr/V5gbI9i7X5QzTF17vwh9I=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/skin/https-everywhere-16-red.png
+Name: webextension/_locales/yo/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: F8Lv4r2BP20psRFbodiOEg==
-SHA1-Digest: 0wcdNI9Bxh7yN5MvcrY2YkUDc6E=
+MD5-Digest: 64O/rshBUXPeaQOqX9sJUg==
+SHA1-Digest: OaF+IFszompPxiSDf2XvJ0DNU9c=
-Name: chrome/skin/https-everywhere-16.png
+Name: webextension/_locales/zh-CN/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: VP3H0R1tFxW92ZykNUW6dA==
-SHA1-Digest: pPlwxdQpsxlcbYJrEZ8OFCSETmM=
+MD5-Digest: LakdBy+4Q9jIQeKbsxV7Qw==
+SHA1-Digest: 5wUQ124LnkjFpdGnsex3fAJnf/0=
-Name: chrome/skin/https-everywhere-24-gray.png
+Name: webextension/_locales/zh/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: ldkMJFFYJBfHqqAYo80Cqg==
-SHA1-Digest: txq2dBI5m/3WxUCRCbC05Ouzm44=
+MD5-Digest: C3rsjMopt60Go5RGI7QV5Q==
+SHA1-Digest: kKaZft5WxOVuvHK6ax/f4IUV1lw=
-Name: chrome/skin/https-everywhere-24-red.png
+Name: webextension/_locales/zh_CN/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: BgED7Un11JwVKlLiWfcGbQ==
-SHA1-Digest: +V5WC+nwrt9vWfit5f88SINvosg=
+MD5-Digest: 0Wjrp0bZb918hFDIld14oQ==
+SHA1-Digest: mWR1Zk6IRB0Akn+7Ok9OqpsXROY=
-Name: chrome/skin/https-everywhere-24.png
+Name: webextension/_locales/zh_HK/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: hRiBGCvtxhdWU+kdz9Bs4w==
-SHA1-Digest: N0dAERhSEbx+CzAkPJW8vNZDZGA=
+MD5-Digest: p8EmE4Zl9rG/xUUfejEBxw==
+SHA1-Digest: jyo2Y5Z7OLrsrgPZkEMQ45A2lGg=
-Name: chrome/skin/https-everywhere-banner.jpg
+Name: webextension/_locales/zh_TW/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: rvASLHcCTzxIpHhK3uui/w==
-SHA1-Digest: 1OWO9r6SHq27vU2JrXjkJoZeMmQ=
+MD5-Digest: fkwuVBejZxZTwwifcHp0dg==
+SHA1-Digest: xIFb8ZxEuhLYZrWcWmCeZst3iL0=
-Name: chrome/skin/https-everywhere-half-24.png
+Name: webextension/_locales/zu/messages.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: hRiBGCvtxhdWU+kdz9Bs4w==
-SHA1-Digest: N0dAERhSEbx+CzAkPJW8vNZDZGA=
+MD5-Digest: kVfOMXMfs1zX9DJMmR289Q==
+SHA1-Digest: 7bN3bVRJgEjqLrqP0YhPohnTfd8=
-Name: chrome/skin/https-everywhere.css
+Name: webextension/chrome-resources/css/chrome_shared.css
Digest-Algorithms: MD5 SHA1
-MD5-Digest: U5sreUDk5IRxECkJrHIGHg==
-SHA1-Digest: Y0XVRNzGkJKL89rotsgGv3jrlDY=
+MD5-Digest: 88+Pdhg00hYai96pEZhqRQ==
+SHA1-Digest: dh24apFNccM2qazpiCZkd/0E3LA=
-Name: chrome/skin/https-everywhere.png
+Name: webextension/chrome-resources/css/widgets.css
Digest-Algorithms: MD5 SHA1
-MD5-Digest: 9O/4Vj/ai47FKvqYib+WCA==
-SHA1-Digest: Cec+Ldtuejaj5Veu2L2HiNLuvAE=
+MD5-Digest: RZiMHJdh6CtO2KjgiN0k+w==
+SHA1-Digest: 58BQXe4ZaBV6+QsfXY4UtpdhSog=
-Name: chrome/skin/loop.png
+Name: webextension/chrome-resources/images/check.png
Digest-Algorithms: MD5 SHA1
-MD5-Digest: JhmXqu7bW4uq+9HnGmVpwg==
-SHA1-Digest: PQem1uTMEFYpmKO7yn3BMnFSnUo=
+MD5-Digest: O2KIZejq3oRn0iI3gjOiqg==
+SHA1-Digest: VA5OcL77FHIDH5KtDKG5adE5+Pg=
-Name: chrome/skin/ssl-observatory-messy.jpg
+Name: webextension/icons/icon-active-128.png
Digest-Algorithms: MD5 SHA1
-MD5-Digest: L2pRKIgu3Cq2pakKS2TJVg==
-SHA1-Digest: eDWqW3/z5rs3PnFKNEIZBO1Qv0s=
+MD5-Digest: lIl6t/HENidgZJkkLmHO8w==
+SHA1-Digest: p71skXMtghXylXMvFLnYW/jPos0=
-Name: chrome/skin/tick-moot.png
+Name: webextension/icons/icon-active-38.png
Digest-Algorithms: MD5 SHA1
-MD5-Digest: wQ8ZYkcOtFOWLKLeaDsGVw==
-SHA1-Digest: 1YrCtnOCobbHuua8II86Z3PYphs=
+MD5-Digest: AOpKNhC5hOWlgXEIWgONbw==
+SHA1-Digest: EleX4C/tgOj+W71fueie7ZoXAAY=
-Name: chrome/skin/tick.png
+Name: webextension/icons/icon-active-48.png
Digest-Algorithms: MD5 SHA1
-MD5-Digest: a8GmLX+5SSrILGWEISWLKg==
-SHA1-Digest: wKpcrCI+KRe71KlW3HJsvtEnKA0=
+MD5-Digest: HnL4MsWBAIFEbOdSxgbs3Q==
+SHA1-Digest: VVqz4q4/4awX6PXZhnQmGFkAiqc=
-Name: components/https-everywhere.js
+Name: webextension/icons/icon-blocking-38.png
Digest-Algorithms: MD5 SHA1
-MD5-Digest: sFC5jhvyH2qyuDMAcrXNqQ==
-SHA1-Digest: YAG+JSJqgXlaxhHHtx8/kIZxFjY=
+MD5-Digest: 1lt5NoNjnQyk9V8eu7AUIg==
+SHA1-Digest: IebllmIP/cUmB0piMroSEA7HnHc=
-Name: components/ssl-observatory.js
+Name: webextension/icons/icon-disabled-38.png
Digest-Algorithms: MD5 SHA1
-MD5-Digest: dKSOqxTZFjH4JhX84WXtXQ==
-SHA1-Digest: LGQm7JL+K7OXvISV2ej0/QFJqjo=
+MD5-Digest: zqGLqPGDGsV629Ubs5TxxQ==
+SHA1-Digest: PJqzR54BFgNofExLbYn8DMEyvzE=
-Name: defaults/rulesets.sqlite
+Name: webextension/icons/icon-inactive-38.png
Digest-Algorithms: MD5 SHA1
-MD5-Digest: 9jhEKPwFM8ZDm0bRGakI/w==
-SHA1-Digest: QCSXSthBbHp7BiMO3ioKJk8MTT8=
+MD5-Digest: YSmKAAExed1mAkd5gfQzog==
+SHA1-Digest: dF/ofp5XH78/7EMNtvMeTCzpjDU=
-Name: defaults/preferences/preferences.js
+Name: webextension/rules/default.rulesets
Digest-Algorithms: MD5 SHA1
-MD5-Digest: Hvk31b+DjMnRcUxHQEX+zw==
-SHA1-Digest: 0IkerBi6u7H08qlyjijIJ6cwvdY=
+MD5-Digest: QhRoehlsAIxMGH0ffwa+Gw==
+SHA1-Digest: TKwIPPl5Av/CAkZHkebC0/BV+OM=
diff --git a/src/META-INF/mozilla.rsa b/src/META-INF/mozilla.rsa
index a0cc68535d3f..3c9178ca1262 100644
Binary files a/src/META-INF/mozilla.rsa and b/src/META-INF/mozilla.rsa differ
diff --git a/src/META-INF/mozilla.sf b/src/META-INF/mozilla.sf
index cf74f3a90058..d0bd0044555f 100644
--- a/src/META-INF/mozilla.sf
+++ b/src/META-INF/mozilla.sf
@@ -1,4 +1,4 @@
Signature-Version: 1.0
-MD5-Digest-Manifest: vbpn/nBFmE05CaCJoguRPw==
-SHA1-Digest-Manifest: BAveeiq1RF0sEUaGHlHtESNt/eM=
+MD5-Digest-Manifest: OSWjHPcB61ocUoseHFeeFg==
+SHA1-Digest-Manifest: ccND8/gzJVpI1Gqa+tUPDSAkGDY=
diff --git a/src/bootstrap.js b/src/bootstrap.js
new file mode 100644
index 000000000000..c55cb440ba7d
--- /dev/null
+++ b/src/bootstrap.js
@@ -0,0 +1,118 @@
+"use strict";
+
+const CI = Components.interfaces;
+const CC = Components.classes;
+
+function get_prefs(branch_name){
+ let o_prefs = CC["@mozilla.org/preferences-service;1"]
+ .getService(CI.nsIPrefService);
+ let o_branch = o_prefs.getBranch(branch_name);
+ return o_branch;
+}
+
+function get_custom_rulesets_array(){
+ var loc = "ProfD"; // profile directory
+ var dir =
+ CC["@mozilla.org/file/directory_service;1"]
+ .getService(CI.nsIProperties)
+ .get(loc, CI.nsILocalFile)
+ .clone();
+ dir.append("HTTPSEverywhereUserRules");
+ // Check for existence, if not, create.
+ if (!dir.exists()) {
+ return [];
+ }
+
+ var entries = dir.directoryEntries;
+ var files = [];
+ while(entries.hasMoreElements()) {
+ var entry = entries.getNext();
+ entry.QueryInterface(CI.nsIFile);
+ files.push(entry);
+ }
+
+ let file_data = []
+ for(let file of files){
+ var data = "";
+ var fstream = CC["@mozilla.org/network/file-input-stream;1"]
+ .createInstance(CI.nsIFileInputStream);
+ var sstream = CC["@mozilla.org/scriptableinputstream;1"]
+ .createInstance(CI.nsIScriptableInputStream);
+ fstream.init(file, -1, 0, 0);
+ sstream.init(fstream);
+
+ var str = sstream.read(4096);
+ while (str.length > 0) {
+ data += str;
+ str = sstream.read(4096);
+ }
+
+ sstream.close();
+ fstream.close();
+ file_data.push(data);
+ }
+
+ return file_data;
+}
+
+function startup({webExtension}) {
+ webExtension.startup().then(api => {
+ const {browser} = api;
+ browser.runtime.onMessage.addListener((msg, sender, sendReply) => {
+ if (msg == "import-legacy-data") {
+ let globals = get_prefs("extensions.https_everywhere.");
+ if(!pref_retrieve_bool_with_default(globals, "webextension-migrated", false)){
+ let changed = false;
+
+ let prefs = {
+ http_nowhere_enabled: pref_retrieve_bool_with_default(globals, "http_nowhere.enabled", false),
+ global_enabled: pref_retrieve_bool_with_default(globals, "globalEnabled", true),
+ show_counter: pref_retrieve_bool_with_default(globals, "show_counter", true)
+ };
+
+ if(prefs.http_nowhere_enabled == true ||
+ prefs.global_enabled == false ||
+ prefs.show_counter == true
+ ){
+ changed = true;
+ }
+
+ let rule_toggle = {}
+ let rules = get_prefs("extensions.https_everywhere.rule_toggle.");
+ for(let rule_toggle_key of rules.getChildList("", {})){
+ rule_toggle[rule_toggle_key] = rules.getBoolPref(rule_toggle_key);
+ changed = true;
+ }
+
+ let custom_rulesets = get_custom_rulesets_array();
+ if(custom_rulesets.length > 0){
+ changed = true;
+ }
+
+ sendReply({
+ prefs: prefs,
+ rule_toggle: rule_toggle,
+ custom_rulesets: custom_rulesets,
+ changed: changed
+ });
+
+ globals.setBoolPref("webextension-migrated", true);
+ } else {
+ sendReply({changed: false});
+ }
+ }
+ });
+ });
+}
+
+function pref_retrieve_bool_with_default(pref_branch, element, default_value){
+ const pref_array = pref_branch.getChildList("", {});
+
+ if(pref_array.indexOf(element) !== -1){
+ return pref_branch.getBoolPref(element);
+ }
+ return default_value;
+}
+
+function shutdown(data) {
+}
diff --git a/src/chrome.manifest b/src/chrome.manifest
index 37d5ffead2b7..8745305ff854 100644
--- a/src/chrome.manifest
+++ b/src/chrome.manifest
@@ -1,5 +1,4 @@
content https-everywhere chrome/content/
-override chrome://https-everywhere/content/rulesets.sqlite defaults/rulesets.sqlite
locale https-everywhere en chrome/locale/en/
locale https-everywhere ar chrome/locale/ar/
@@ -48,6 +47,13 @@ locale https-everywhere tr chrome/locale/tr/
locale https-everywhere uk chrome/locale/uk/
locale https-everywhere zh-CN chrome/locale/zh-CN/
locale https-everywhere zh-TW chrome/locale/zh_TW/
+locale https-everywhere ar-AA chrome/locale/ar_AA/
+locale https-everywhere bal chrome/locale/bal/
+locale https-everywhere brx chrome/locale/brx/
+locale https-everywhere ceb chrome/locale/ceb/
+locale https-everywhere co chrome/locale/co/
+locale https-everywhere da-DK chrome/locale/da-DK/
+
skin https-everywhere classic/1.0 chrome/skin/
diff --git a/src/chrome/content/about.js b/src/chrome/content/about.js
deleted file mode 100644
index 7a37815f1454..000000000000
--- a/src/chrome/content/about.js
+++ /dev/null
@@ -1,14 +0,0 @@
-const CC = Components.classes;
-
-function window_opener(uri) {
- // we don't use window.open, because we need to work around TorButton's state control
- if(typeof gBrowser == "undefined"){
- var window = CC["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator);
- var browserWindow = window.getMostRecentWindow("navigator:browser").getBrowser();
- var newTab = browserWindow.addTab(uri, null, null);
- browserWindow.selectedTab = newTab;
-
- }
- else
- gBrowser.selectedTab = gBrowser.addTab(uri);
-}
diff --git a/src/chrome/content/about.xul b/src/chrome/content/about.xul
deleted file mode 100644
index e7882613e967..000000000000
--- a/src/chrome/content/about.xul
+++ /dev/null
@@ -1,72 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- &https-everywhere.about.ext_name;
- &https-everywhere.about.ext_description;
-
-
- &https-everywhere.about.contribute;
-
- &https-everywhere.about.or;
-
-
-
-
-
- 5.1.1
-
-
-
-
- Mike Perry, Peter Eckersley, and Yan Zhu
-
-
-
-
- Seth Schoen, MB and Andreas Jonsson
-
-
-
-
- Many many contributors, including Aaron Swartz, Alec Moskvin,
- Aleksey Kosterin, Alex Xu, Anas Qtiesh, Artyom Gavrichenkov, Brian
- Carpenter, Chris Palmer, Christian Inci, Christopher Liu, Claudio
- Moretti, Colonel Graff, Dan Auerbach, Daniel Kahn Gillmor, dm0, The
- Doctor, Felix Geyer, Fruitless Creek, George Kargiotakis, haviah, Heiko
- Adams, Jeroen van der Gun, Jay Weisskopf, Jacob Taylor, Jonathan Davies, Jorge Bernal,
- katmagic, Kevin Jacobs, Korte, Liam K, Leonardo Brondani Schenkel, Marti Raudsepp, Micah Lee, Mike
- Cardwell, Mangix, Matthias-Christian Ott, Mikko Harhanen, Mishari Muqbil, Neheb, Ori Avtalion, Osama Khalid,
- nitrox, Pablo Castellano, Paul Wise, Pavel Kazakov, Phol Paucar, Richard
- Green, Roan Kattouw, Rules Moore, Stefan Tomanek, Sam Reed, Steve
- Milner, Sujit Rao, TK-999, Vendo, Victor Garin, Weiland Hoffmann, Whizz
- Mo and Yan Zhu. Also, portions of HTTPS Everywhere are based on code
- from NoScript, by Giorgio Maone and others. We are grateful for their
- excellent work!
-
-
-
diff --git a/src/chrome/content/code/AndroidUI.jsm b/src/chrome/content/code/AndroidUI.jsm
deleted file mode 100644
index 1a4936dadf4a..000000000000
--- a/src/chrome/content/code/AndroidUI.jsm
+++ /dev/null
@@ -1,236 +0,0 @@
-const CC = Components.classes;
-const CI = Components.interfaces;
-const CU = Components.utils;
-
-var HTTPSEverywhere = CC["@eff.org/https-everywhere;1"]
- .getService(CI.nsISupports).wrappedJSObject;
-
-CU.import("resource://gre/modules/Prompt.jsm");
-
-var menuId;
-var urlbarId;
-var aWindow = getWindow();
-
-
-/*
- * Setup/Teardown for the UI
- */
-
-function loadIntoWindow() {
- if (!aWindow) {
- return;
- }
- var enabled = HTTPSEverywhere.prefs.getBoolPref("globalEnabled");
- addToggleItemToMenu(enabled);
- if (enabled) {
- urlbarId = aWindow.NativeWindow.pageactions.add(urlbarOptions);
- } else if (urlbarId) {
- aWindow.NativeWindow.pageactions.remove(urlbarId);
- }
-
- // When navigating away from a page, we want to clear the applicable list for
- // that page. There are a few different APIs to do this, but this is the one
- // that work on mobile. We trigger on pagehide rather than pageshow because we
- // want to capture subresources during load.
- var BrowserApp = aWindow.BrowserApp;
- BrowserApp.deck.addEventListener("pagehide", function(evt) {
- var browser = BrowserApp.getBrowserForDocument(evt.target);
- HTTPSEverywhere.resetApplicableList(browser);
- }, true);
-}
-
-function unloadFromWindow() {
- if (!aWindow) {
- return;
- }
- aWindow.NativeWindow.menu.remove(menuId);
- aWindow.NativeWindow.pageactions.remove(urlbarId);
-}
-
-
-/*
- * Add a menu item to toggle HTTPS Everywhere
- */
-
-function addToggleItemToMenu(enabled) {
- if (menuId) { aWindow.NativeWindow.menu.remove(menuId); }
- var menuLabel = enabled ? "HTTPS Everywhere on" : "HTTPS Everywhere off";
- menuId = aWindow.NativeWindow.menu.add(menuLabel, null, function() {
- popupToggleMenu(aWindow, enabled);
- });
-}
-
-function popupToggleMenu(aWindow, enabled) {
- var buttons = [
- {
- label: "Yes",
- callback: function() {
- toggleEnabledState();
- var msg = enabled ? "HTTPS Everywhere disabled!" : "HTTPS Everywhere enabled!";
- aWindow.NativeWindow.toast.show(msg, "short");
- return true;
- }
- }, {
- label: "No",
- callback: function() { return false; }
- }
- ];
- var newState = enabled ? "off?" : "on?";
- aWindow.NativeWindow.doorhanger.show("Would you like to turn HTTPS Everywhere "+newState,
- "doorhanger-toggle", buttons);
-}
-
-
-/*
- * The HTTPS Everywhere icon in the URL bar shows a popup of rules that the
- * user can activate/deactivate. On long click, reset all rules to defaults.
- */
-
-var popupInfo = {
- rules: [],
- ruleItems: [],
- ruleStatus: [],
- alist: null,
- getApplicableList: function() {
- var browser = aWindow.BrowserApp.selectedBrowser;
- return HTTPSEverywhere.getApplicableListForBrowser(browser);
- },
- fill: function() {
- this.clear();
- this.alist = this.getApplicableList();
- HTTPSEverywhere.log(4,"applicable list active: "+JSON.stringify(this.alist.active));
- HTTPSEverywhere.log(4,"applicable list inactive: "+JSON.stringify(this.alist.inactive));
- for (var rule in this.alist.all) {
- if (this.alist.active.hasOwnProperty(rule)) {
- // active rules are checked and toggleable
- this.ruleItems.push({ label: rule, selected: true });
- this.ruleStatus.push(true);
- this.rules.push(this.alist.active[rule]);
- } else if (this.alist.moot.hasOwnProperty(rule)) {
- // moot rules are checked and toggleable too
- this.ruleItems.push({ label: rule, selected: true });
- this.ruleStatus.push(true);
- this.rules.push(this.alist.moot[rule]);
- } else if (this.alist.inactive.hasOwnProperty(rule)) {
- // inactive rules are unchecked and toggleable
- this.ruleItems.push({ label: rule });
- this.ruleStatus.push(false);
- this.rules.push(this.alist.inactive[rule]);
- } else if (this.alist.breaking.hasOwnProperty(rule)) {
- // breaking rules are get a unicode clockwise arrow next to them
- var ruleLabel = "\u21B7"+rule;
- var isSelected = this.alist.breaking[rule].active;
- this.ruleItems.push({ label: ruleLabel, selected: isSelected });
- this.ruleStatus.push(isSelected);
- this.rules.push(this.alist.breaking[rule]);
- }
- }
- },
- clear: function() {
- this.rules = [];
- this.ruleItems = [];
- this.ruleStatus = [];
- this.alist = {};
- }
-};
-
-var urlbarOptions = {
-
- title: "HTTPS Everywhere",
-
- icon: "chrome://https-everywhere/skin/https-everywhere-128.png",
-
- clickCallback: function() {
- popupInfo.fill();
- rulesPrompt.setMultiChoiceItems(popupInfo.ruleItems);
- rulesPrompt.show(function(data) {
- var db = data.button;
- if (db === -1) { return null; } // user didn't click the accept button
- if (popupInfo.rules.length !== db.length) {
- // Why does db sometimes have an extra entry that doesn't correspond
- // to any of the ruleItems? No idea, but let's log it.
- HTTPSEverywhere.log(5,"Got length mismatch between popupInfo.ruleItems and data.button");
- HTTPSEverywhere.log(4,"Applicable rules: "+JSON.stringify(popupInfo.rules));
- HTTPSEverywhere.log(4, "data.button: "+JSON.stringify(db));
- }
- for (var i=0; i " +
- this.uri.spec+ " serial " + this.serial);
- this.active[ruleset.name] = ruleset;
- this.all[ruleset.name] = ruleset;
- },
-
- breaking_rule: function(ruleset) {
- this.log(NOTE,"breaking rule " + ruleset.name +" in "+ this.home +" -> " +
- this.uri.spec+ " serial " + this.serial);
- this.breaking[ruleset.name] = ruleset;
- this.all[ruleset.name] = ruleset;
- },
-
- inactive_rule: function(ruleset) {
-
- this.log(INFO,"inactive rule " + ruleset.name +" in "+ this.home +" -> " +
- this.uri.spec+ " serial " + this.serial);
- this.inactive[ruleset.name] = ruleset;
- this.all[ruleset.name] = ruleset;
- },
-
- moot_rule: function(ruleset) {
- this.log(INFO,"moot rule " + ruleset.name +" in "+ this.home + " serial " + this.serial);
- this.moot[ruleset.name] = ruleset;
- this.all[ruleset.name] = ruleset;
- },
-
- dom_handler: function(operation,key,data,src,dst) {
- // See https://developer.mozilla.org/En/DOM/UserDataHandler
- if (src && dst)
- dst.setUserData(key, data, this.dom_handler);
- },
-
- populate_list: function() {
- // The base URI of the dom tends to be loaded from some /other/
- // ApplicableList, so pretend we're loading it from here.
- HTTPSEverywhere.instance.https_rules.rewrittenURI(this, this.uri);
- this.log(DBUG, "populating using alist #" + this.serial);
- },
-
- populate_menu: function(document, menupopup, weird) {
- this.populate_list();
- this.document = document;
-
- var https_everywhere = CC["@eff.org/https-everywhere;1"].getService(Components.interfaces.nsISupports).wrappedJSObject;
-
- // get the menu popup
- this.menupopup = menupopup;
-
- // empty it all of its menuitems
- while(this.menupopup.firstChild.tagName != "menuseparator") {
- this.menupopup.removeChild(this.menupopup.firstChild);
- }
-
- // add global enable/disable toggle button
- var strings = document.getElementById("HttpsEverywhereStrings");
-
- var enableLabel = document.createElement('menuitem');
- var text = strings.getString("https-everywhere.menu.globalDisable");
- if(!https_everywhere.prefs.getBoolPref("globalEnabled"))
- text = strings.getString("https-everywhere.menu.globalEnable");
-
- enableLabel.setAttribute('label', text);
- enableLabel.setAttribute('command', 'https-everywhere-menuitem-globalEnableToggle');
- this.prepend_child(enableLabel);
-
- // add the label at the top
- var any_rules = false;
- for(var x in this.all) {
- any_rules = true; // how did JavaScript get this ugly?
- break;
- }
- // This label just describes the fact that the items underneath it enable
- // and disable rules.
- var label = document.createElement('menuitem');
- label.setAttribute('label', strings.getString('https-everywhere.menu.enableDisable'));
- label.setAttribute('disabled', 'true');
- label.setAttribute('class', 'menuitem-non-iconic');
- label.setAttribute('style', 'color:#000000;');
- var label2 = false;
- if (!any_rules) {
- label2 = document.createElement('menuitem');
- if (!weird) text = strings.getString('https-everywhere.menu.noRules');
- else text = strings.getString('https-everywhere.menu.unknownRules');
- label2.setAttribute('label', text);
- label2.setAttribute('command', 'https-everywhere-menuitem-preferences');
- label2.setAttribute('style', 'color:#909090;');
- }
-
- // create a commandset if it doesn't already exist
- this.commandset = document.getElementById('https-everywhere-commandset');
- if(!this.commandset) {
- this.commandset = document.createElement('commandset');
- this.commandset.setAttribute('id', 'https-everywhere-commandset');
- var win = document.getElementById('main-window');
- win.appendChild(this.commandset);
- } else {
- // empty commandset
- while(this.commandset.firstChild)
- this.commandset.removeChild(this.commandset.firstChild);
- }
-
- var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
- .getService(Components.interfaces.nsIWindowMediator);
-
- var browser = wm.getMostRecentWindow("navigator:browser").gBrowser.selectedBrowser;
- var location = browser.currentURI.asciiSpec; //full url, including about:certerror details
-
- if(location.substr(0, 6) == "about:"){
- //"From" portion of the rule is retrieved from the location bar via document.getElementById("urlbar").value
-
- var fromHost = document.getElementById("urlbar").value;
-
- //scheme must be trimmed out to check for applicable rulesets
- if(fromHost.indexOf("://") != -1)
- fromHost = fromHost.substr(fromHost.indexOf("://") + 3, fromHost.length);
-
- //trim off any page locations - we only want the host - e.g. domain.com
- if(fromHost.indexOf("/") != -1)
- fromHost = fromHost.substr(0, fromHost.indexOf("/"));
-
- // Search for applicable rulesets for the host listed in the location bar
- var plist = HTTPSRules.potentiallyApplicableRulesets(fromHost);
- for (var i = 0 ; i < plist.length ; i++){
- //For each applicable rulset, determine active/inactive, and append to proper list.
- var ruleOn = false;
- try {
- if(https_everywhere.rule_toggle_prefs.getBoolPref(plist[i].name))
- ruleOn = true;
- } catch(e) {
- if(https_everywhere.https_rules.rulesetsByName[plist[i].name].active)
- ruleOn = true;
- }
- if(ruleOn)
- this.active_rule(plist[i]);
- else
- this.inactive_rule(plist[i]);
- }
- }
-
- // add all applicable commands
- for(var x in this.breaking)
- this.add_command(this.breaking[x]);
- for(var x in this.active)
- this.add_command(this.active[x]);
- for(var x in this.moot)
- this.add_command(this.moot[x]);
- for(var x in this.inactive)
- this.add_command(this.inactive[x]);
-
- if(https_everywhere.prefs.getBoolPref("globalEnabled")){
- // add all the menu items
- for (var x in this.inactive)
- this.add_menuitem(this.inactive[x], 'inactive');
- // rules that are active for some uris are not really moot
- for (var x in this.moot)
- if (!(x in this.active))
- this.add_menuitem(this.moot[x], 'moot');
- // break once break everywhere
- for (var x in this.active)
- if (!(x in this.breaking))
- this.add_menuitem(this.active[x], 'active');
- for (var x in this.breaking)
- this.add_menuitem(this.breaking[x], 'breaking');
-
- if (label2) this.prepend_child(label2);
- this.prepend_child(label);
- }
-
- },
-
- prepend_child: function(node) {
- this.menupopup.insertBefore(node, this.menupopup.firstChild);
- },
-
- add_command: function(rule) {
- var command = this.document.getElementById("https-everywhere-menuitem-rule-toggle-template").cloneNode();
- command.setAttribute('id', JSON.stringify(rule.id)+'-command');
- command.setAttribute('data-id', JSON.stringify(rule.id));
- command.setAttribute('label', rule.name);
- this.commandset.appendChild(command);
- },
-
- // add a menu item for a rule -- type is "active", "inactive", "moot",
- // or "breaking"
-
- add_menuitem: function(rule, type) {
- // create the menuitem
- var item = this.document.createElement('menuitem');
- item.setAttribute('command', rule.id+'-command');
- item.setAttribute('class', type+'-item menuitem-iconic');
- item.setAttribute('type', 'checkbox');
- item.setAttribute('label', rule.name);
-
- // we can get confused if rulesets have their state changed after the
- // ApplicableList was constructed
- if (!rule.active && (type == 'active' || type == 'moot'))
- type = 'inactive';
- if (rule.active && type == 'inactive')
- type = 'moot';
-
- // set the icon
- var image_src;
- if (type == 'active') image_src = 'tick.png';
- else if (type == 'inactive') image_src = 'cross.png';
- else if (type == 'moot') image_src = 'tick-moot.png';
- else if (type == 'breaking') image_src = 'loop.png';
- item.setAttribute('image', 'chrome://https-everywhere/skin/'+image_src);
-
- // all done
- this.prepend_child(item);
- },
-
- show_applicable: function() {
- this.log(WARN, "Applicable list number " + this.serial);
- for (var x in this.active)
- this.log(WARN,"Active: " + this.active[x].name);
-
- for (var x in this.breaking)
- this.log(WARN,"Breaking: " + this.breaking[x].name);
-
- for (x in this.inactive)
- this.log(WARN,"Inactive: " + this.inactive[x].name);
-
- for (x in this.moot)
- this.log(WARN,"Moot: " + this.moot[x].name);
-
- }
-};
-
diff --git a/src/chrome/content/code/Cookie.js b/src/chrome/content/code/Cookie.js
deleted file mode 100644
index f9134bc4df75..000000000000
--- a/src/chrome/content/code/Cookie.js
+++ /dev/null
@@ -1,150 +0,0 @@
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-
-function Cookie(s, host) {
- this.parse(s, host);
-}
-Cookie.computeId = function(c) {
- return c.name + ";" + c.host + "/" + c.path;
-};
-Cookie.find = function(f) {
- var cc = Cookie.prototype.cookieManager.enumerator;
- var c;
- while (cc.hasMoreElements()) {
- if (f(c = cc.getNext())) return c;
- }
- return null;
-};
-
-Cookie.attributes = { host: 'domain', path: 'path', expires: 'expires', isHttpOnly: 'HttpOnly', isSecure: 'Secure' };
-Cookie.prototype = {
-
- name: '',
- value: '',
- source: '',
- domain: '',
- host: '',
- rawHost: '',
- path: '',
- secure: false,
- httponly: false,
- session: true,
- expires: 0,
-
- id: '',
-
-
- toString: function() {
- var c = [this['name'] + "=" + this.value];
- var v;
- const aa = Cookie.attributes;
- for (var k in aa) {
- var p = aa[k];
- v = this[k];
- switch(typeof(v)) {
- case "string":
- if (v) c.push(p + "=" + v);
- break;
- case "boolean":
- if (v) c.push(p);
- break;
- case "number":
- if (!this.isSession) c.push(p + "=" + new Date(v * 1000).toUTCString());
- break;
- }
- }
- return c.join("; ");
- },
- parse: function(s, host) {
- var p;
- if (this.source) {
- // cleanup for recycle
- for (p in this) {
- if (typeof (p) != "function") delete this[p];
- }
- }
- this.source = s;
- this.host = host;
-
- var parts = s.split(/;\s*/);
- var nv = parts.shift().split("=");
-
- this.name = nv.shift() || '';
- this.value = nv.join('=') || '';
-
- var n, v;
- for each (p in parts) {
- nv = p.split("=");
- switch (n = nv[0].toLowerCase()) {
- case 'expires':
- v = Math.round(Date.parse((nv[1] || '').replace(/\-/g, ' ')) / 1000);
- break;
- case 'domain':
- case 'path':
- v = nv[1] || '';
- break;
- case 'secure':
- case 'httponly':
- v = true;
- break;
- default:
- n = 'unknown';
- }
- this[n] = v;
- }
- if (!this.expires) {
- this.session = true;
- this.expires = Math.round(new Date() / 1000) + 31536000;
- }
- if (this.domain) {
- if (!this.isDomain) this.domain = "." + this.domain;
- this.host = this.domain;
- }
- this.rawHost = this.host.replace(/^\./, '');
-
- this.id = Cookie.computeId(this);
- },
-
-
- get cookieManager() {
- delete Cookie.prototype.cookieManager;
- var cman = Cc["@mozilla.org/cookiemanager;1"]
- .getService(Ci.nsICookieManager2).QueryInterface(Ci.nsICookieManager);
- return Cookie.prototype.cookieManager = cman;
- },
- belongsTo: function(host, path) {
- if (path && this.path && path.indexOf(this.path) != 0) return false;
- if (host == this.rawHost) return true;
- var d = this.domain;
- return d && (host == d || this.isDomain && host.slice(-d.length) == d);
- },
- save: function() {
- this.save = ("cookieExists" in this.cookieManager)
- ? function() { this.cookieManager.add(this.host, this.path, this.name, this.value, this.secure, this.httponly, this.session, this.expires); }
- : function() { this.cookieManager.add(this.host, this.path, this.name, this.value, this.secure, this.session, this.expires);}
- ;
- return this.save();
- },
- exists: function() {
- var cc = this.cookieManager.enumerator;
- while(cc.hasMoreElements()) {
- if (this.sameAs(cc.getNext())) return true;
- }
- return false;
- },
-
- sameAs: function(c) {
- (c instanceof Ci.nsICookie) && (c instanceof Ci.nsICookie2);
- return Cookie.computeId(c) == this.id;
- },
-
- // nsICookie2 interface extras
- get isSecure() { return this.secure; },
- get expiry() { return this.expires; },
- get isSession() { return this.session; },
- get isHttpOnly() { return this.httponly; },
- get isDomain() { return this.domain && this.domain[0] == '.'; },
- policy: 0,
- status: 0,
- QueryInterface: XPCOMUtils.generateQI([Ci.nsICookie, Ci.nsICookie2])
-
-};
diff --git a/src/chrome/content/code/HTTPS.js b/src/chrome/content/code/HTTPS.js
deleted file mode 100644
index c5834ddd0d03..000000000000
--- a/src/chrome/content/code/HTTPS.js
+++ /dev/null
@@ -1,318 +0,0 @@
-INCLUDE('Cookie');
-
-var securityService = CC['@mozilla.org/ssservice;1']
- .getService(CI.nsISiteSecurityService);
-
-// Hack. We only need the part of the policystate that tracks content
-// policy loading.
-const PolicyState = {
- attach: function(channel) {
- IOUtil.attachToChannel(channel, "httpseverywhere.policyLoaded", true);
- },
-
- extract: function(channel) {
- var res = IOUtil.extractFromChannel(channel,
- "httpseverywhere.policyLoaded", true);
- return res;
- },
-};
-
-const HTTPS = {
- ready: false,
-
- secureCookies: true,
- secureCookiesExceptions: null,
- secureCookiesForced: null,
- httpsForced: null,
- httpsForcedExceptions: null,
- httpsRewrite: null,
-
- /**
- * Given a channel and a list of potentially applicable rules,
- * redirect or abort a request if appropriate.
- *
- * @param {RuleSet[]} applicable_list A list of potentially applicable rules
- * (i.e. those that match on a hostname basis).
- * @param {nsIChannel} channel The channel to be manipulated.
- * @param {boolean} httpNowhereEnabled Whether to abort non-https requests.
- * @returns {boolean} True if the request was redirected; false if it was
- * untouched or aborted.
- */
- replaceChannel: function(applicable_list, channel, httpNowhereEnabled) {
- var blob = HTTPSRules.rewrittenURI(applicable_list, channel.URI.clone());
- var isSTS = securityService.isSecureURI(
- CI.nsISiteSecurityService.HEADER_HSTS, channel.URI, 0);
- if (blob === null) {
- // Abort insecure requests if HTTP Nowhere is on
- if (httpNowhereEnabled && channel.URI.schemeIs("http") && !isSTS) {
- IOUtil.abort(channel);
- }
- return false; // no rewrite
- }
- var uri = blob.newuri;
- if (!uri) this.log(WARN, "OH NO BAD ARGH\nARGH");
-
- // Abort downgrading if HTTP Nowhere is on
- if (httpNowhereEnabled && uri.schemeIs("http")) {
- IOUtil.abort(channel);
- }
-
- var c2 = channel.QueryInterface(CI.nsIHttpChannel);
- this.log(DBUG, channel.URI.spec+": Redirection limit is " + c2.redirectionLimit);
- // XXX This used to be (c2.redirectionLimit == 1), but that's very
- // inefficient in a case (eg amazon) where this may happen A LOT.
- // Rather than number like 10, we should use the starting value
- // in network.http.redirection-limit minus some counter
- if (c2.redirectionLimit < 10) {
- this.log(WARN, "Redirection loop trying to set HTTPS on:\n " +
- channel.URI.spec +"\n(falling back to HTTP)");
- if (!blob.applied_ruleset) {
- this.log(WARN,"Blacklisting rule for: " + channel.URI.spec);
- https_everywhere_blacklist[channel.URI.spec] = true;
- }
- https_everywhere_blacklist[channel.URI.spec] = blob.applied_ruleset;
- var domain = null;
- try { domain = channel.URI.host; } catch (e) {}
- if (domain) https_blacklist_domains[domain] = true;
- if (httpNowhereEnabled && channel.URI.schemeIs("http")) {
- IOUtil.abort(channel);
- }
- return false;
- }
-
- // Check for the new internal redirect API. If it exists, use it.
- if (!"redirectTo" in channel) {
- this.log(WARN, "nsIHTTPChannel.redirectTo API is missing. This version of HTTPS Everywhere is useless!!!!\n!!!\n");
- return false;
- }
-
- this.log(INFO, "Using nsIHttpChannel.redirectTo: " + channel.URI.spec + " -> " + uri.spec);
- try {
- channel.redirectTo(uri);
- return true;
- } catch(e) {
- // This should not happen. We should only get exceptions if
- // the channel was already open.
- this.log(WARN, "Exception on nsIHttpChannel.redirectTo: "+e);
- }
- this.log(WARN,"Aborting redirection " + channel.name + ", should be HTTPS!");
- IOUtil.abort(channel);
- return false;
- },
-
- // getApplicableListForContext was remove along with the nsIContentPolicy
- // bindings and the and forceURI path that used them.
-
- onCrossSiteRequest: function(channel, origin, browser, rw) {
- try {
- this.handleCrossSiteCookies(channel, origin, browser);
- } catch(e) {
- this.log(WARN, e + " --- " + e.stack);
- }
- },
-
- registered: false,
- handleSecureCookies: function(req) {
-
- try {
- req = req.QueryInterface(CI.nsIHttpChannel);
- } catch(e) {
- this.log(WARN, "Request is not an nsIHttpChannel: " + req);
- return;
- }
- if (!this.secureCookies) return;
- var uri = req.URI;
- if (!uri) {
- this.log(WARN,"No URI inside request " +req);
- return;
- }
- //this.log(DBUG, "Cookie hunting in " + uri.spec);
- var alist = HTTPSEverywhere.instance.getApplicableListForChannel(req);
- if (!alist)
- this.log(INFO, "No alist for cookies for "+(req.URI) ? req.URI.spec : "???");
-
- if (uri.schemeIs("https")) {
- var host = uri.host;
- try {
- var cookies = req.getResponseHeader("Set-Cookie");
- } catch(mayHappen) {
- //this.log(VERB,"Exception hunting Set-Cookie in headers: " + mayHappen);
- return;
- }
- if (!cookies) return;
- var c;
- for each (var cs in cookies.split("\n")) {
- this.log(DBUG, "Examining cookie: ");
- c = new Cookie(cs, host);
- if (!c.secure && HTTPSRules.shouldSecureCookie(alist, c, true)) {
- this.log(INFO, "Securing cookie: " + c.domain + " " + c.name);
- c.secure = true;
- req.setResponseHeader("Set-Cookie", c.source + ";Secure", true);
- }
- }
-
- }
- },
-
- handleInsecureCookie: function(c) {
- if (HTTPSRules.shouldSecureCookie(null, c, false)) {
- this.log(INFO, "Securing cookie from event: " + c.host + " " + c.name);
- var cookieManager = Components.classes["@mozilla.org/cookiemanager;1"]
- .getService(Components.interfaces.nsICookieManager2);
- //some braindead cookies apparently use umghzabilliontrabilions
- var expiry = Math.min(c.expiry, Math.pow(2,31));
- cookieManager.remove(c.host, c.name, c.path, false);
- cookieManager.add(c.host, c.path, c.name, c.value, true, c.isHTTPOnly, c.isSession, expiry);
- }
- },
-
- handleCrossSiteCookies: function(req, origin, browser) {
-
- var unsafeCookies = this.getUnsafeCookies(browser);
- if (!unsafeCookies) return;
-
- var uri = req.URI;
- var dscheme = uri.scheme;
-
- var oparts = origin && origin.match(/^(https?):\/\/([^\/:]+).*?(\/.*)/);
- if (!(oparts && /https?/.test(dscheme))) return;
-
- var oscheme = oparts[1];
- if (oscheme == dscheme) return; // we want to check only cross-scheme requests
-
- var dsecure = dscheme == "https";
-
- if (dsecure && !ns.getPref("secureCookies.recycle", false)) return;
-
- var dhost = uri.host;
- var dpath = uri.path;
-
- var ohost = oparts[2];
- var opath = oparts[3];
-
- var ocookieCount = 0, totCount = 0;
- var dcookies = [];
- var c;
-
- for (var k in unsafeCookies) {
- c = unsafeCookies[k];
- if (!c.exists()) {
- delete unsafeCookies[k];
- } else {
- totCount++;
- if (c.belongsTo(dhost, dpath) && c.secure != dsecure) { // either secure on http or not secure on https
- dcookies.push(c);
- }
- if (c.belongsTo(ohost, opath)) {
- ocookieCount++;
- }
- }
- }
-
- if (!totCount) {
- this.setUnsafeCookies(browser, null);
- return;
- }
-
- // We want to "desecurify" cookies only if cross-navigation to unsafe
- // destination originates from a site sharing some secured cookies
-
- if (ocookieCount == 0 && !dsecure || !dcookies.length) return;
-
- if (dsecure) {
- this.log(WARN,"Detected cross-site navigation with secured cookies: " + origin + " -> " + uri.spec);
-
- } else {
- this.log(WARN,"Detected unsafe navigation with NoScript-secured cookies: " + origin + " -> " + uri.spec);
- this.log(WARN,uri.prePath + " cannot support secure cookies because it does not use HTTPS. Consider forcing HTTPS for " + uri.host + " in NoScript's Advanced HTTPS options panel.");
- }
-
- var cs = CC['@mozilla.org/cookieService;1'].getService(CI.nsICookieService).getCookieString(uri, req);
-
- for each (c in dcookies) {
- c.secure = dsecure;
- c.save();
- this.log(WARN,"Toggled secure flag on " + c);
- }
-
- if (cs) {
- dcookies.push.apply(
- dcookies, cs.split(/\s*;\s*/).map(function(cs) { var nv = cs.split("="); return { name: nv.shift(), value: nv.join("=") }; })
- .filter(function(c) { return dcookies.every(function(x) { return x.name != c.name; }); })
- );
- }
-
- cs = dcookies.map(function(c) { return c.name + "=" + c.value; }).join("; ");
-
- this.log(WARN,"Sending Cookie for " + dhost + ": " + cs);
- req.setRequestHeader("Cookie", cs, false); // "false" because merge syntax breaks Cookie header
- },
-
-
- cookiesCleanup: function(refCookie) {
- var downgraded = [];
-
- var ignored = this.secureCookiesExceptions;
- var disabled = !this.secureCookies;
- var bi = DOM.createBrowserIterator();
- var unsafe, k, c, total, deleted;
- for (var browser; browser = bi.next();) {
- unsafe = this.getUnsafeCookies(browser);
- if (!unsafe) continue;
- total = deleted = 0;
- for (k in unsafe) {
- c = unsafe[k];
- total++;
- if (disabled || (refCookie ? c.belongsTo(refCookie.host) : ignored && ignored.test(c.rawHost))) {
- if (c.exists()) {
- this.log(WARN,"Cleaning Secure flag from " + c);
- c.secure = false;
- c.save();
- }
- delete unsafe[k];
- deleted++;
- }
- }
- if (total == deleted) this.setUnsafeCookies(browser, null);
- if (!this.cookiesPerTab) break;
- }
- },
-
- get cookiesPerTab() {
- return ns.getPref("secureCookies.perTab", false);
- },
-
- _globalUnsafeCookies: {},
- getUnsafeCookies: function(browser) {
- return this.cookiesPerTab
- ? browser && ns.getExpando(browser, "unsafeCookies")
- : this._globalUnsafeCookies;
- },
- setUnsafeCookies: function(browser, value) {
- return this.cookiesPerTab
- ? browser && ns.setExpando(browser, "unsafeCookies", value)
- : this._globalUnsafeCookies = value;
- },
-
- _getParent: function(req, w) {
- return w && w.frameElement || DOM.findBrowserForNode(w || IOUtil.findWindow(req));
- }
-
-};
-
-(function () {
- ["secureCookies", "secureCookiesExceptions", "secureCookiesForced"].forEach(function(p) {
- var v = HTTPS[p];
- delete HTTPS[p];
- HTTPS.__defineGetter__(p, function() {
- return v;
- });
- HTTPS.__defineSetter__(p, function(n) {
- v = n;
- if (HTTPS.ready) HTTPS.cookiesCleanup();
- return v;
- });
- });
-})();
-
-HTTPS.ready = true;
diff --git a/src/chrome/content/code/HTTPSRules.js b/src/chrome/content/code/HTTPSRules.js
deleted file mode 100644
index f100a79f2939..000000000000
--- a/src/chrome/content/code/HTTPSRules.js
+++ /dev/null
@@ -1,776 +0,0 @@
-// Compilation of RegExps is now delayed until they are first used...
-
-function Rule(from, to) {
- this.to = to;
- this.from_c = from; // This will become a RegExp after compilation
-}
-
-function Exclusion(pattern) {
- this.pattern_c = pattern; // Will become a RegExp after compilation
-}
-
-function CookieRule(host, cookiename) {
- this.host = host;
- this.name = cookiename;
-
- // These will be made during compilation:
-
- //this.host_c = new RegExp(host);
- //this.name_c = new RegExp(cookiename);
-}
-
-function RuleSet(id, name, xmlName, match_rule, default_off, platform) {
- if(xmlName == "WordPress.xml" || xmlName == "Github.xml") {
- this.log(NOTE, "RuleSet( name="+name+", xmlName="+xmlName+", match_rule="+match_rule+", default_off="+default_off+", platform="+platform+" )");
- }
-
- this.id=id;
- this.on_by_default = true;
- this.compiled = false;
- this.name = name;
- this.xmlName = xmlName;
- this.notes = "";
-
- if (match_rule) this.ruleset_match_c = new RegExp(match_rule);
- else this.ruleset_match_c = null;
- if (default_off) {
- // Perhaps problematically, this currently ignores the actual content of
- // the default_off XML attribute. Ideally we'd like this attribute to be
- // "valueless"
- this.notes = default_off;
- this.on_by_default = false;
- }
- if (platform)
- if (platform.search(HTTPSRules.localPlatformRegexp) == -1) {
- this.on_by_default = false;
- this.notes = "Only for " + platform;
- }
-
- this.rules = [];
- this.exclusions = [];
- this.cookierules = [];
-
- this.rule_toggle_prefs = HTTPSEverywhere.instance.rule_toggle_prefs;
-
- try {
- // if this pref exists, use it
- this.active = this.rule_toggle_prefs.getBoolPref(name);
- } catch(e) {
- // if not, use the default
- this.active = this.on_by_default;
- }
-}
-
-var dom_parser = Cc["@mozilla.org/xmlextras/domparser;1"].createInstance(Ci.nsIDOMParser);
-
-RuleSet.prototype = {
-
- ensureCompiled: function() {
- // Postpone compilation of exclusions, rules and cookies until now, to accelerate
- // browser load time.
- if (this.compiled) return;
- var i;
-
- for (i = 0; i < this.exclusions.length; ++i) {
- this.exclusions[i].pattern_c = new RegExp(this.exclusions[i].pattern_c);
- }
- for (i = 0; i < this.rules.length; ++i) {
- this.rules[i].from_c = new RegExp(this.rules[i].from_c);
- }
-
- for (i = 0; i < this.cookierules.length; i++) {
- var cr = this.cookierules[i];
- cr.host_c = new RegExp(cr.host);
- cr.name_c = new RegExp(cr.name);
- }
-
- this.compiled = true;
- },
-
- apply: function(urispec) {
- // return null if it does not apply
- // and the new url if it does apply
- var i;
- var returl = null;
- this.ensureCompiled();
- // If a rulset has a match_rule and it fails, go no further
- if (this.ruleset_match_c && !this.ruleset_match_c.test(urispec)) {
- this.log(VERB, "ruleset_match_c excluded " + urispec);
- return null;
- }
- // Even so, if we're covered by an exclusion, go home
- for (i = 0; i < this.exclusions.length; ++i) {
- if (this.exclusions[i].pattern_c.test(urispec)) {
- this.log(DBUG,"excluded uri " + urispec);
- return null;
- }
- }
- // Okay, now find the first rule that triggers
- for (i = 0; i < this.rules.length; ++i) {
- // This is just for displaying inactive rules
- returl = urispec.replace(this.rules[i].from_c, this.rules[i].to);
- if (returl != urispec) {
- // we rewrote the uri
- this.log(DBUG, "Rewrote " + urispec + " -> " + returl + " using " + this.xmlName + ": " + this.rules[i].from_c + " -> " + this.rules[i].to);
- return returl;
- }
- }
-
- return null;
- },
- log: function(level, msg) {
- https_everywhereLog(level, msg);
- },
-
- wouldMatch: function(hypothetical_uri, alist) {
- // return true if this ruleset would match the uri, assuming it were http
- // used for judging moot / inactive rulesets
- // alist is optional
-
- // if the ruleset is already somewhere in this applicable list, we don't
- // care about hypothetical wouldMatch questions
- if (alist && (this.name in alist.all)) return false;
-
- this.log(DBUG,"Would " +this.name + " match " +hypothetical_uri.spec +
- "? serial " + (alist && alist.serial));
-
- var uri = hypothetical_uri.clone();
- if (uri.scheme == "https") uri.scheme = "http";
- var urispec = uri.spec;
-
- this.ensureCompiled();
-
- if (this.ruleset_match_c && !this.ruleset_match_c.test(urispec))
- return false;
-
- for (var i = 0; i < this.exclusions.length; ++i)
- if (this.exclusions[i].pattern_c.test(urispec)) return false;
-
- for (var i = 0; i < this.rules.length; ++i)
- if (this.rules[i].from_c.test(urispec)) return true;
- return false;
- },
-
- transformURI: function(uri) {
- // If no rule applies, return null; if a rule would have applied but was
- // inactive, return 0; otherwise, return a fresh uri instance
- // for the target
- var newurl = this.apply(uri.spec);
- if (null == newurl)
- return null;
- var newuri = Components.classes["@mozilla.org/network/standard-url;1"].
- createInstance(CI.nsIStandardURL);
- newuri.init(CI.nsIStandardURL.URLTYPE_STANDARD, 80,
- newurl, uri.originCharset, null);
- newuri = newuri.QueryInterface(CI.nsIURI);
- return newuri;
- },
-
- enable: function() {
- // Enable us.
- this.rule_toggle_prefs.setBoolPref(this.name, true);
- this.active = true;
- },
-
- disable: function() {
- // Disable us.
- this.rule_toggle_prefs.setBoolPref(this.name, false);
- this.active = false;
- },
-
- toggle: function() {
- this.active = !this.active;
- this.rule_toggle_prefs.setBoolPref(this.name, this.active);
- },
-
- clear: function() {
- try {
- this.rule_toggle_prefs.clearUserPref(this.name);
- } catch(e) {
- // this ruleset has never been toggled
- }
- this.active = this.on_by_default;
- }
-};
-
-const RuleWriter = {
-
- getCustomRuleDir: function() {
- var loc = "ProfD"; // profile directory
- var file =
- CC["@mozilla.org/file/directory_service;1"]
- .getService(CI.nsIProperties)
- .get(loc, CI.nsILocalFile)
- .clone();
- file.append("HTTPSEverywhereUserRules");
- // Check for existence, if not, create.
- if (!file.exists()) {
- file.create(CI.nsIFile.DIRECTORY_TYPE, 0700);
- }
- if (!file.isDirectory()) {
- // XXX: Arg, death!
- }
- return file;
- },
-
- chromeToPath: function (aPath) {
- if (!aPath || !(/^chrome:/.test(aPath)))
- return; //not a chrome url
-
- var ios =
- CC['@mozilla.org/network/io-service;1']
- .getService(CI.nsIIOService);
- var uri = ios.newURI(aPath, "UTF-8", null);
- var cr =
- CC['@mozilla.org/chrome/chrome-registry;1']
- .getService(CI.nsIChromeRegistry);
- var rv = cr.convertChromeURL(uri).spec;
-
- if (/^file:/.test(rv))
- rv = this.urlToPath(rv);
- else
- rv = this.urlToPath("file://"+rv);
-
- return rv;
- },
-
- urlToPath: function (aPath) {
- if (!aPath || !/^file:/.test(aPath))
- return ;
-
- var ph =
- CC["@mozilla.org/network/protocol;1?name=file"]
- .createInstance(CI.nsIFileProtocolHandler);
- var rv = ph.getFileFromURLSpec(aPath).path;
-
- return rv;
- },
-
- read: function(file) {
- if (!file.exists())
- return null;
- var data = "";
- var fstream = CC["@mozilla.org/network/file-input-stream;1"]
- .createInstance(CI.nsIFileInputStream);
- var sstream = CC["@mozilla.org/scriptableinputstream;1"]
- .createInstance(CI.nsIScriptableInputStream);
- fstream.init(file, -1, 0, 0);
- sstream.init(fstream);
-
- var str = sstream.read(4096);
- while (str.length > 0) {
- data += str;
- str = sstream.read(4096);
- }
-
- sstream.close();
- fstream.close();
- return data;
- },
-
- write: function(file, data) {
- //if (!file.exists())
- // return null;
- this.log(DBUG, "Opening " + file.path + " for writing");
- var fstream = CC["@mozilla.org/network/file-output-stream;1"]
- .createInstance(CI.nsIFileOutputStream);
- fstream.init(file, -1, -1, 0);
-
- var retval = fstream.write(data, data.length);
- this.log(DBUG, "Got retval " + retval);
- fstream.close();
- return data;
- },
-
- rulesetFromFile: function(file, rule_store, ruleset_id) {
- if ((rule_store.targets == null) && (rule_store.targets != {}))
- this.log(WARN, "TARGETS IS NULL");
- var data = this.read(file);
- if (!data) return null;
- return this.readFromString(data, rule_store, ruleset_id);
- },
-
- readFromString: function(data, rule_store, ruleset_id) {
- try {
- var xmlruleset = dom_parser.parseFromString(data, "text/xml");
- } catch(e) { // file has been corrupted; XXX: handle error differently
- this.log(WARN,"Error in XML data: " + e + "\n" + data);
- return null;
- }
- this.parseOneRuleset(xmlruleset.documentElement, rule_store, ruleset_id);
- },
-
- parseOneRuleset: function(xmlruleset, rule_store, ruleset_id) {
- // Extract an xmlruleset into the rulestore
- if (!xmlruleset.getAttribute("name")) {
- this.log(WARN, "This blob: '" + xmlruleset + "' is not a ruleset\n");
- return null;
- }
-
- this.log(DBUG, "Parsing " + xmlruleset.getAttribute("name"));
-
- var match_rl = xmlruleset.getAttribute("match_rule");
- var dflt_off = xmlruleset.getAttribute("default_off");
- var platform = xmlruleset.getAttribute("platform");
- var rs = new RuleSet(ruleset_id, xmlruleset.getAttribute("name"), xmlruleset.getAttribute("f"), match_rl, dflt_off, platform);
-
- // see if this ruleset has the same name as an existing ruleset;
- // if so, this ruleset is ignored; DON'T add or return it.
- if (rs.name in rule_store.rulesetsByName) {
- this.log(WARN, "Error: found duplicate rule name " + rs.name);
- return null;
- }
-
- // Add this ruleset id into HTTPSRules.targets if it's not already there.
- // This should only happen for custom user rules. Built-in rules get
- // their ids preloaded into the targets map, and have their
- // tags stripped when the sqlite database is built.
- var targets = xmlruleset.getElementsByTagName("target");
- for (var i = 0; i < targets.length; i++) {
- var host = targets[i].getAttribute("host");
- if (!host) {
- this.log(WARN, " missing host in " + xmlruleset.getAttribute("name"));
- return null;
- }
- if (! rule_store.targets[host])
- rule_store.targets[host] = [];
- this.log(DBUG, "Adding " + host + " to targets, pointing at " + ruleset_id);
- rule_store.targets[host].push(ruleset_id);
- }
-
- var exclusions = xmlruleset.getElementsByTagName("exclusion");
- for (var i = 0; i < exclusions.length; i++) {
- var exclusion = new Exclusion(exclusions[i].getAttribute("pattern"));
- rs.exclusions.push(exclusion);
- }
-
- var rules = xmlruleset.getElementsByTagName("rule");
- for (var i = 0; i < rules.length; i++) {
- var rule = new Rule(rules[i].getAttribute("from"),
- rules[i].getAttribute("to"));
- rs.rules.push(rule);
- }
-
- var securecookies = xmlruleset.getElementsByTagName("securecookie");
- for (var i = 0; i < securecookies.length; i++) {
- var c_rule = new CookieRule(securecookies[i].getAttribute("host"),
- securecookies[i].getAttribute("name"));
- rs.cookierules.push(c_rule);
- this.log(DBUG,"Cookie rule "+ c_rule.host+ " " +c_rule.name);
- }
-
- rule_store.rulesets.push(rs);
- rule_store.rulesetsByID[rs.id] = rs;
- rule_store.rulesetsByName[rs.name] = rs;
- },
-
- enumerate: function(dir) {
- // file is the given directory (nsIFile)
- var entries = dir.directoryEntries;
- var ret = [];
- while(entries.hasMoreElements()) {
- var entry = entries.getNext();
- entry.QueryInterface(Components.interfaces.nsIFile);
- ret.push(entry);
- }
- return ret;
- },
-};
-
-
-
-const HTTPSRules = {
- init: function() {
- try {
- this.rulesets = [];
- this.targets = {}; // dict mapping target host pattern -> list of
- // applicable ruleset ids
- this.rulesetsByID = {};
- this.rulesetsByName = {};
- var t1 = new Date().getTime();
- this.checkMixedContentHandling();
- var rulefiles = RuleWriter.enumerate(RuleWriter.getCustomRuleDir());
- this.scanRulefiles(rulefiles);
-
- // Initialize database connection.
- var dbFile = new FileUtils.File(RuleWriter.chromeToPath("chrome://https-everywhere/content/rulesets.sqlite"));
- var rulesetDBConn = Services.storage.openDatabase(dbFile);
- this.queryForRuleset = rulesetDBConn.createStatement(
- "select contents from rulesets where id = :id");
-
- // Preload the mapping of hostname target -> ruleset ID from DB.
- // This is a little slow (287 ms on a Core2 Duo @ 2.2GHz with SSD),
- // but is faster than loading all of the rulesets. If this becomes a
- // bottleneck, change it to load in a background webworker, or load
- // a smaller bloom filter instead.
- var targetsQuery = rulesetDBConn.createStatement("select host, ruleset_id from targets");
- this.log(DBUG, "Loading targets...");
- while (targetsQuery.executeStep()) {
- var host = targetsQuery.row.host;
- var id = targetsQuery.row.ruleset_id;
- if (!this.targets[host]) {
- this.targets[host] = [id];
- } else {
- this.targets[host].push(id);
- }
- }
- this.log(DBUG, "Loading adding targets.");
- } catch(e) {
- this.log(DBUG,"Rules Failed: "+e);
- }
- var t2 = new Date().getTime();
- this.log(NOTE,"Loading targets took " + (t2 - t1) / 1000.0 + " seconds");
-
- return;
- },
-
- checkMixedContentHandling: function() {
- // Firefox 23+ blocks mixed content by default, so rulesets that create
- // mixed content situations should be disabled there
- var appInfo = CC["@mozilla.org/xre/app-info;1"].getService(CI.nsIXULAppInfo);
- var platformVer = appInfo.platformVersion;
- var versionChecker = CC["@mozilla.org/xpcom/version-comparator;1"]
- .getService(CI.nsIVersionComparator);
- var prefs = Components.classes["@mozilla.org/preferences-service;1"]
- .getService(Components.interfaces.nsIPrefService).getBranch("");
-
-
- // If mixed content is present and enabled, and the user hasn't opted to enable
- // mixed content triggering rules, leave them out. Otherwise add them in.
- if(versionChecker.compare(appInfo.version, "23.0a1") >= 0
- && prefs.getBoolPref("security.mixed_content.block_active_content")
- && !prefs.getBoolPref("extensions.https_everywhere.enable_mixed_rulesets")) {
- this.log(INFO, "Not activating rules that trigger mixed content errors.");
- this.localPlatformRegexp = new RegExp("firefox");
- } else {
- this.log(INFO, "Activating rules that would normally trigger mixed content");
- this.localPlatformRegexp = new RegExp("(firefox|mixedcontent)");
- }
- },
-
- scanRulefiles: function(rulefiles) {
- var i = 0;
- var r = null;
- for(i = 0; i < rulefiles.length; ++i) {
- try {
- this.log(DBUG,"Loading ruleset file: "+rulefiles[i].path);
- var ruleset_id = "custom_" + i;
- RuleWriter.rulesetFromFile(rulefiles[i], this, ruleset_id);
- } catch(e) {
- this.log(WARN, "Error in ruleset file: " + e);
- if (e.lineNumber)
- this.log(WARN, "(line number: " + e.lineNumber + ")");
- }
- }
- },
-
- resetRulesetsToDefaults: function() {
- // Callable from within the prefs UI and also for cleaning up buggy
- // configurations...
- for (var i in this.rulesets) {
- this.rulesets[i].clear();
- }
- },
-
-
- rewrittenURI: function(alist, input_uri) {
- // This function oversees the task of working out if a uri should be
- // rewritten, what it should be rewritten to, and recordkeeping of which
- // applicable rulesets are and aren't active. Previously this returned
- // the new uri if there was a rewrite. Now it returns a JS object with a
- // newuri attribute and an applied_ruleset attribute (or null if there's
- // no rewrite).
- var i = 0;
- userpass_present = false; // Global so that sanitiseURI can tweak it.
- // Why does JS have no tuples, again?
- var blob = {}; blob.newuri = null;
- if (!alist) this.log(DBUG, "No applicable list rewriting " + input_uri.spec);
- this.log(DBUG, "Processing " + input_uri.spec);
-
- var uri = this.sanitiseURI(input_uri);
-
- // Get the list of rulesets that target this host
- try {
- var rs = this.potentiallyApplicableRulesets(uri.host);
- } catch(e) {
- this.log(NOTE, 'Could not check applicable rules for '+uri.spec + '\n'+e);
- return null;
- }
-
- // ponder each potentially applicable ruleset, working out if it applies
- // and recording it as active/inactive/moot/breaking in the applicable list
- for (i = 0; i < rs.length; ++i) {
- if (!rs[i].active) {
- if (alist && rs[i].wouldMatch(uri, alist))
- alist.inactive_rule(rs[i]);
- continue;
- }
- blob.newuri = rs[i].transformURI(uri);
- if (blob.newuri) {
- if (alist) {
- if (uri.spec in https_everywhere_blacklist)
- alist.breaking_rule(rs[i]);
- else
- alist.active_rule(rs[i]);
- }
- if (userpass_present) blob.newuri.userPass = input_uri.userPass;
- blob.applied_ruleset = rs[i];
- return blob;
- }
- if (uri.scheme == "https" && alist) {
- // we didn't rewrite but the rule applies to this domain and the
- // requests are going over https
- if (rs[i].wouldMatch(uri, alist)) alist.moot_rule(rs[i]);
- continue;
- }
- }
- return null;
- },
-
- sanitiseURI: function(input_uri) {
- // Rulesets shouldn't try to parse usernames and passwords. If we find
- // those, apply the ruleset without them (and then add them back later).
- // When .userPass is absent, sometimes it is false and sometimes trying
- // to read it raises an exception (probably depending on the URI type).
- var uri = input_uri;
- try {
- if (input_uri.userPass) {
- uri = input_uri.clone();
- userpass_present = true; // tweaking a global in our caller :(
- uri.userPass = null;
- }
- } catch(e) {}
-
- // example.com. is equivalent to example.com
- // example.com.. is invalid, but firefox would load it anyway
- try {
- if (uri.host)
- try {
- var h = uri.host;
- if (h.charAt(h.length - 1) == ".") {
- while (h.charAt(h.length - 1) == ".")
- h = h.slice(0,-1);
- uri = uri.clone();
- uri.host = h;
- }
- } catch(e) {
- this.log(WARN, "Failed to normalise domain: ");
- try {this.log(WARN, input_uri.host);}
- catch(e2) {this.log(WARN, "bang" + e + " & " + e2 + " & "+ input_uri);}
- }
- } catch(e3) {
- this.log(INFO, "uri.host is explosive!");
- try { this.log(INFO, "(" + uri.spec + ")"); } // happens for about: uris and soforth
- catch(e4) { this.log(WARN, "(and unprintable!!!!!!)"); }
- }
- return uri;
- },
-
- setInsert: function(intoList, fromList) {
- // Insert any elements from fromList into intoList, if they are not
- // already there. fromList may be null.
- if (!fromList) return;
- for (var i = 0; i < fromList.length; i++)
- if (intoList.indexOf(fromList[i]) == -1)
- intoList.push(fromList[i]);
- },
-
- // Load a ruleset by numeric id, e.g. 234
- // NOTE: This call runs synchronously, which can lock up the browser UI. Is
- // there any way to fix that, given that we need to run blocking in the request
- // flow? Perhaps we can preload all targets from the DB into memory at startup
- // so we only hit the DB when we know there is something to be had.
- loadRulesetById: function(ruleset_id) {
- this.queryForRuleset.params.id = ruleset_id;
-
- try {
- if (this.queryForRuleset.executeStep()) {
- RuleWriter.readFromString(this.queryForRuleset.row.contents, this, ruleset_id);
- } else {
- this.log(WARN,"Couldn't find ruleset for id " + ruleset_id);
- }
- } finally {
- this.queryForRuleset.reset();
- }
- },
-
- // Get all rulesets matching a given target, lazy-loading from DB as necessary.
- rulesetsByTarget: function(target) {
- var rulesetIds = this.targets[target];
-
- var output = [];
- if (rulesetIds) {
- this.log(INFO, "For target " + target + ", found ids " + rulesetIds.toString());
- for (var i = 0; i < rulesetIds.length; i++) {
- var id = rulesetIds[i];
- if (!this.rulesetsByID[id]) {
- this.loadRulesetById(id);
- }
- if (this.rulesetsByID[id]) {
- output.push(this.rulesetsByID[id]);
- }
- }
- } else {
- this.log(DBUG, "For target " + target + ", found no ids in DB");
- }
- return output;
- },
-
- /**
- * Return a list of rulesets that declare targets matching a given hostname.
- * The returned rulesets include those that are disabled for various reasons.
- * This function is only defined for fully-qualified hostnames. Wildcards and
- * cookie-style domain attributes with a leading dot are not permitted.
- * @param host {string}
- * @return {Array.}
- */
- potentiallyApplicableRulesets: function(host) {
- var i, tmp, t;
- var results = [];
-
- var attempt = function(target) {
- this.setInsert(results, this.rulesetsByTarget(target));
- }.bind(this);
-
- attempt(host);
-
- // replace each portion of the domain with a * in turn
- var segmented = host.split(".");
- for (i = 0; i < segmented.length; ++i) {
- tmp = segmented[i];
- if (tmp.length === 0) {
- this.log(WARN,"Malformed host passed to potentiallyApplicableRulesets: " + host);
- return null;
- }
- segmented[i] = "*";
- t = segmented.join(".");
- segmented[i] = tmp;
- attempt(t);
- }
- // now eat away from the left, with *, so that for x.y.z.google.com we
- // check *.z.google.com and *.google.com (we did *.y.z.google.com above)
- for (i = 2; i <= segmented.length - 2; ++i) {
- t = "*." + segmented.slice(i,segmented.length).join(".");
- attempt(t);
- }
- this.log(DBUG,"Potentially applicable rules for " + host + ":");
- for (i = 0; i < results.length; ++i)
- this.log(DBUG, " " + results[i].name);
- return results;
- },
-
- /**
- * If a cookie's domain attribute has a leading dot to indicate it should be
- * sent for all subdomains (".example.com"), return the actual host part (the
- * part after the dot).
- *
- * @param cookieDomain {string} A cookie domain to strip a leading dot from.
- * @return {string} a fully qualified hostname.
- */
- hostFromCookieDomain: function(cookieDomain) {
- if (cookieDomain.length > 0 && cookieDomain[0] == ".") {
- return cookieDomain.slice(1);
- } else {
- return cookieDomain;
- }
- },
-
- /**
- * Check to see if the Cookie object c meets any of our cookierule citeria
- * for being marked as secure.
- *
- * @param applicable_list {ApplicableList} an ApplicableList for record keeping
- * @param c {nsICookie2} The cookie we might secure.
- * @param known_https {boolean} True if the cookie appeared in an HTTPS request and
- * so we know it is okay to mark it secure (assuming a cookierule matches it.
- * TODO(jsha): Double-check that the code calling this actually does that.
- * @return {boolean} True if the cookie in question should have the 'secure'
- * flag set to true.
- */
- shouldSecureCookie: function(applicable_list, c, known_https) {
- this.log(DBUG," rawhost: " + c.rawHost + " name: " + c.name + " host" + c.host);
- var i,j;
- // potentiallyApplicableRulesets is defined on hostnames not cookie-style
- // "domain" attributes, so we strip a leading dot before calling.
- var rs = this.potentiallyApplicableRulesets(this.hostFromCookieDomain(c.host));
- for (i = 0; i < rs.length; ++i) {
- var ruleset = rs[i];
- if (ruleset.active) {
- ruleset.ensureCompiled();
- // Never secure a cookie if this page might be HTTP
- if (!(known_https || this.safeToSecureCookie(c.rawHost))) {
- continue;
- }
- for (j = 0; j < ruleset.cookierules.length; j++) {
- var cr = ruleset.cookierules[j];
- if (cr.host_c.test(c.host) && cr.name_c.test(c.name)) {
- if (applicable_list) applicable_list.active_rule(ruleset);
- this.log(INFO,"Active cookie rule " + ruleset.name);
- return true;
- }
- }
- if (ruleset.cookierules.length > 0 && applicable_list) {
- applicable_list.moot_rule(ruleset);
- }
- } else if (ruleset.cookierules.length > 0) {
- if (applicable_list) {
- applicable_list.inactive_rule(ruleset);
- }
- this.log(INFO,"Inactive cookie rule " + ruleset.name);
- }
- }
- return false;
- },
-
- /**
- * Check if the domain might be being served over HTTP. If so, it isn't
- * safe to secure a cookie! We can't always know this for sure because
- * observing cookie-changed doesn't give us enough context to know the
- * full origin URI. In particular, if cookies are set from Javascript (as
- * opposed to HTTP/HTTPS responses), we don't know what page context that
- * Javascript ran in.
-
- * First, if there are any redirect loops on this domain, don't secure
- * cookies. XXX This is not a very satisfactory heuristic. Sometimes we
- * would want to secure the cookie anyway, because the URLs that loop are
- * not authenticated or not important. Also by the time the loop has been
- * observed and the domain blacklisted, a cookie might already have been
- * flagged as secure.
- *
- * @param domain {string} The cookie's 'domain' attribute.
- * @return {boolean} True if it's safe to secure a cookie on that domain.
- */
- safeToSecureCookie: function(domain) {
- if (domain in https_blacklist_domains) {
- this.log(INFO, "cookies for " + domain + "blacklisted");
- return false;
- }
-
- // If we passed that test, make up a random URL on the domain, and see if
- // we would HTTPSify that.
- try {
- var nonce_path = "/" + Math.random().toString();
- nonce_path = nonce_path + nonce_path;
- var test_uri = "http://" + domain + nonce_path;
- } catch (e) {
- this.log(WARN, "explosion in safeToSecureCookie for " + domain + "\n"
- + "(" + e + ")");
- return false;
- }
-
- this.log(DBUG, "Testing securecookie applicability with " + test_uri);
- // potentiallyApplicableRulesets is defined on hostnames not cookie-style
- // "domain" attributes, so we strip a leading dot before calling.
- var rs = this.potentiallyApplicableRulesets(this.hostFromCookieDomain(domain));
- for (var i = 0; i < rs.length; ++i) {
- if (!rs[i].active) continue;
- var rewrite = rs[i].apply(test_uri);
- if (rewrite) {
- this.log(DBUG, "Safe to secure cookie for " + test_uri + ": " + rewrite);
- return true;
- }
- }
- this.log(DBUG, "Unsafe to secure cookie for " + test_uri);
- return false;
- }
-};
diff --git a/src/chrome/content/code/IOUtil.js b/src/chrome/content/code/IOUtil.js
deleted file mode 100644
index f3a5bee05b7b..000000000000
--- a/src/chrome/content/code/IOUtil.js
+++ /dev/null
@@ -1,265 +0,0 @@
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-
-const IO = {
- readFile: function(file, charset) {
- var res;
-
- const is = Cc["@mozilla.org/network/file-input-stream;1"]
- .createInstance(Ci.nsIFileInputStream );
- is.init(file ,0x01, 256 /*0400*/, null);
- const sis = Cc["@mozilla.org/scriptableinputstream;1"]
- .createInstance(Ci.nsIScriptableInputStream);
- sis.init(is);
-
- res = sis.read(sis.available());
- is.close();
-
- if (charset !== null) { // use "null" if you want uncoverted data...
- const unicodeConverter = Cc["@mozilla.org/intl/scriptableunicodeconverter"]
- .createInstance(Ci.nsIScriptableUnicodeConverter);
- try {
- unicodeConverter.charset = charset || "UTF-8";
- } catch(ex) {
- unicodeConverter.charset = "UTF-8";
- }
- res = unicodeConverter.ConvertToUnicode(res);
- }
-
- return res;
- },
- writeFile: function(file, content, charset) {
- const unicodeConverter = Cc["@mozilla.org/intl/scriptableunicodeconverter"]
- .createInstance(Ci.nsIScriptableUnicodeConverter);
- try {
- unicodeConverter.charset = charset || "UTF-8";
- } catch(ex) {
- unicodeConverter.charset = "UTF-8";
- }
-
- content = unicodeConverter.ConvertFromUnicode(content);
- const os = Cc["@mozilla.org/network/file-output-stream;1"]
- .createInstance(Ci.nsIFileOutputStream);
- os.init(file, 0x02 | 0x08 | 0x20, 448 /*0700*/, 0);
- os.write(content, content.length);
- os.close();
- },
-
- safeWriteFile: function(file, content, charset) {
- var tmp = file.clone();
- var name = file.leafName;
- tmp.leafName = name + ".tmp";
- tmp.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, file.exists() ? file.permissions : 384 /*0600*/);
- this.writeFile(tmp, content, charset);
- tmp.moveTo(file.parent, name);
- }
-};
-
-
-function nsISupportsWrapper(wrapped) {
- this.wrappedJSObject = wrapped;
-}
-nsISupportsWrapper.prototype = {
- QueryInterface: XPCOMUtils.generateQI([])
-};
-
-const IOUtil = {
- asyncNetworking: true,
- proxiedDNS: 0,
-
- attachToChannel: function(channel, key, requestInfo) {
- if (channel instanceof Ci.nsIWritablePropertyBag2)
- channel.setPropertyAsInterface(key, requestInfo);
- },
- extractFromChannel: function(channel, key, preserve) {
- if (channel instanceof Ci.nsIPropertyBag2) {
- let p = channel.get(key);
- if (p) {
- if (!preserve && (channel instanceof Ci.nsIWritablePropertyBag)) channel.deleteProperty(key);
- if (p.wrappedJSObject) return p.wrappedJSObject;
- p instanceof Ci.nsIURL || p instanceof Ci.nsIURL;
- return p;
- }
- }
- return null;
- },
-
- extractInternalReferrer: function(channel) {
- if (channel instanceof Ci.nsIPropertyBag2) {
- const key = "docshell.internalReferrer";
- if (channel.hasKey(key))
- try {
- return channel.getPropertyAsInterface(key, Ci.nsIURL);
- } catch(e) {}
- }
- return null;
- },
- extractInternalReferrerSpec: function(channel) {
- var ref = this.extractInternalReferrer(channel);
- return ref && ref.spec || null;
- },
-
- getProxyInfo: function(channel) {
- return Ci.nsIProxiedChannel && (channel instanceof Ci.nsIProxiedChannel)
- ? channel.proxyInfo
- : Components.classes["@mozilla.org/network/protocol-proxy-service;1"]
- .getService(Components.interfaces.nsIProtocolProxyService)
- .resolve(channel.URI, 0);
- },
-
-
- canDoDNS: function(channel) {
- if (!channel || IOS.offline) return false;
-
- var proxyInfo = this.getProxyInfo(channel);
- switch(this.proxiedDNS) {
- case 1:
- return !(proxyInfo && (proxyInfo.flags & Ci.nsIProxyInfo.TRANSPARENT_PROXY_RESOLVES_HOST));
- case 2:
- return true;
- default:
- return !proxyInfo || proxyInfo.type == "direct";
- }
-
- },
-
- abort: function(channel, noNetwork) {
- channel.cancel(Components.results.NS_ERROR_ABORT);
- },
-
- findWindow: function(channel) {
- for each(var cb in [channel.notificationCallbacks,
- channel.loadGroup && channel.loadGroup.notificationCallbacks]) {
- if (cb instanceof Ci.nsIInterfaceRequestor) {
- if (Ci.nsILoadContext) try {
- // For Gecko 1.9.1
- return cb.getInterface(Ci.nsILoadContext).associatedWindow;
- } catch(e) {}
-
- try {
- // For Gecko 1.9.0
- return cb.getInterface(Ci.nsIDOMWindow);
- } catch(e) {}
- }
- }
- return null;
- },
-
- readFile: IO.readFile,
- writeFile: IO.writeFile,
- safeWriteFIle: IO.safeWriteFile,
-
- _protocols: {}, // caching them we gain a 33% speed boost in URI creation :)
- newURI: function(url) {
- try {
- let scheme = url.substring(0, url.indexOf(':'));
- return (this._protocols[scheme] ||
- (this._protocols[scheme] =
- Cc["@mozilla.org/network/protocol;1?name=" + scheme]
- .getService(Ci.nsIProtocolHandler)))
- .newURI(url, null, null);
- } catch(e) {
- return IOS.newURI(url, null, null);
- }
- },
-
- unwrapURL: function(url) {
- try {
- if (!(url instanceof Ci.nsIURI))
- url = this.newURI(url);
-
- switch (url.scheme) {
- case "view-source":
- return this.unwrapURL(url.path);
- case "feed":
- let u = url.spec.substring(5);
- if (u.substring(0, 2) == '//') u = "http:" + u;
- return this.unwrapURL(u);
- case "wyciwyg":
- return this.unwrapURL(url.path.replace(/^\/\/\d+\//, ""));
- case "jar":
- if (url instanceof Ci.nsIJARURI)
- return this.unwrapURL(url.JARFile);
- }
- }
- catch (e) {}
-
- return url;
- },
-
-
- get _channelFlags() {
- delete this._channelFlags;
- const constRx = /^[A-Z_]+$/;
- const ff = {};
- [Ci.nsIHttpChannel, Ci.nsICachingChannel].forEach(function(c) {
- for (var p in c) {
- if (constRx.test(p)) ff[p] = c[p];
- }
- });
- return this._channelFlags = ff;
- },
- humanFlags: function(loadFlags) {
- var hf = [];
- var c = this._channelFlags;
- for (var p in c) {
- if (loadFlags & c[p]) hf.push(p + "=" + c[p]);
- }
- return hf.join("\n");
- },
-
- queryNotificationCallbacks: function(chan, iid) {
- var cb;
- try {
- cb = chan.notificationCallbacks.getInterface(iid);
- if (cb) return cb;
- } catch(e) {}
-
- try {
- return chan.loadGroup && chan.loadGroup.notificationCallbacks.getInterface(iid);
- } catch(e) {}
-
- return null;
- },
-
-
- anonymizeURI: function(uri, cookie) {
- if (uri instanceof Ci.nsIURL) {
- uri.query = this.anonymizeQS(uri.query, cookie);
- } else return this.anonymizeURL(uri, cookie);
- return uri;
- },
- anonymizeURL: function(url, cookie) {
- var parts = url.split("?");
- if (parts.length < 2) return url;
- parts[1] = this.anonymizeQS(parts[1], cookie);
- return parts.join("?");
- },
-
- _splitName: function(nv) nv.split("=")[0],
- _qsRx: /[&=]/,
- _anonRx: /(?:auth|s\w+(?:id|key)$)/,
- anonymizeQS: function(qs, cookie) {
- if (!qs) return qs;
- if (!this._qsRx.test(qs)) return '';
-
- var cookieNames, hasCookies;
- if ((hasCookies = !!cookie)) cookieNames = cookie.split(/\s*;\s*/).map(this._splitName);
-
- let parms = qs.split("&");
- for (j = parms.length; j-- > 0;) {
- let nv = parms[j].split("=");
- let name = nv[0];
- if (this._anonRx.test(name) || cookie && cookieNames.indexOf(name) > -1)
- parms.splice(j, 1);
- }
- return parms.join("&");
- },
-
- get TLDService() {
- delete this.TLDService;
- return this.TLDService = Cc["@mozilla.org/network/effective-tld-service;1"].getService(Ci.nsIEffectiveTLDService);
- }
-
-};
-
-
diff --git a/src/chrome/content/code/NSS.js b/src/chrome/content/code/NSS.js
deleted file mode 100644
index 878b90f7378c..000000000000
--- a/src/chrome/content/code/NSS.js
+++ /dev/null
@@ -1,496 +0,0 @@
-// Copyright (c) 2011 Moxie Marlinspike
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as
-// published by the Free Software Foundation; either version 3 of the
-// License, or (at your option) any later version.
-
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-// USA
-
-
-/**
- * This class manages the ctypes bridge to the NSS (crypto) libraries
- * distributed with Mozilla.
- *
- **/
-
-function NSS() {
-
-}
-
-// Alias to reduce the number of spurious warnings from amo-validator.
-let tcypes = ctypes;
-
-NSS.initialize = function(nssPath) {
- var sharedLib;
-
- try {
- sharedLib = tcypes.open(nssPath);
- } catch (e) {
- Components.utils.import("resource://gre/modules/Services.jsm");
- var nssFile = Services.dirsvc.get("GreD", Ci.nsILocalFile);
- nssFile.append(tcypes.libraryName("nss3"));
- sharedLib = tcypes.open(nssFile.path);
- }
-
- NSS.types = new Object();
-
- NSS.types.CERTDistNames = tcypes.StructType("CERTDistNames");
-
- NSS.types.SECItem = tcypes.StructType("SECItem",
- [{'type' : tcypes.int},
- {'data' : tcypes.unsigned_char.ptr},
- {'len' : tcypes.uint32_t}]);
-
- NSS.types.PLArenaPool = tcypes.StructType("PLArenaPool");
-
- NSS.types.CERTCertificateList = tcypes.StructType("CERTCertificateList",
- [{'certs' : NSS.types.SECItem.ptr},
- {'len' : tcypes.int},
- {'arena' : NSS.types.PLArenaPool.ptr}]),
-
- NSS.types.CERTAVA = tcypes.StructType("CERTAVA",
- [{'type' : NSS.types.SECItem},
- {'value' : NSS.types.SECItem}]);
-
- NSS.types.CERTRDN = tcypes.StructType("CERTRDN",
- [{'avas' : NSS.types.CERTAVA.ptr.ptr}]);
-
- NSS.types.SECAlgorithmID = tcypes.StructType("SECAlgorithmID",
- [{'algorithm' : NSS.types.SECItem},
- {'parameters' : NSS.types.SECItem}]);
-
- NSS.types.CERTSignedData = tcypes.StructType("CERTSignedData",
- [{'data' : NSS.types.SECItem},
- {'signatureAlgorithm' : NSS.types.SECAlgorithmID},
- {'signature' : NSS.types.SECItem}]);
-
- NSS.types.CERTOKDomainName = tcypes.StructType("CERTOKDomainName");
-
- NSS.types.NSSCertificateStr = tcypes.StructType("NSSCertificateStr");
-
- NSS.types.CERTAuthKeyID = tcypes.StructType("CERTAuthKeyID");
-
- NSS.types.CERTName = tcypes.StructType("CERTName",
- [{'arena' : tcypes.voidptr_t},
- {'rdns' : NSS.types.CERTRDN.ptr.ptr}]);
-
- NSS.types.CERTValidity = tcypes.StructType("CERTValidity",
- [{'arena' : tcypes.voidptr_t},
- {'notBefore' : NSS.types.SECItem},
- {'notAfter' : NSS.types.SECItem}]);
-
- NSS.types.CERTCertExtension = tcypes.StructType("CERTCertExtension",
- [{'id' : NSS.types.SECItem},
- {'critical' : NSS.types.SECItem},
- {'value' : NSS.types.SECItem}]);
-
- NSS.types.CERTCertDBHandle = tcypes.StructType("CERTCertDBHandle");
-
- NSS.types.PK11SlotInfo = tcypes.StructType("PK11SlotInfo");
-
- NSS.types.PK11SlotListElement = tcypes.StructType("PK11SlotListElement",
- [{'next' : tcypes.StructType("PK11SlotListElement").ptr},
- {'prev' : tcypes.StructType("PK11SlotListElement").ptr},
- {'slot' : NSS.types.PK11SlotInfo.ptr},
- {'refCount' : tcypes.int}]),
-
- NSS.types.PK11SlotList = tcypes.StructType("PK11SlotList",
- [{'head' : NSS.types.PK11SlotListElement.ptr},
- {'tail' : NSS.types.PK11SlotListElement.ptr},
- {'lock' : tcypes.StructType("PZLock").ptr}]),
-
- NSS.types.SECKEYPrivateKey = tcypes.StructType("SECKEYPrivateKey",
- [{'arena' : NSS.types.PLArenaPool.ptr},
- {'keyType' : tcypes.int},
- {'pkcs11Slot' : NSS.types.PK11SlotInfo.ptr},
- {'pkcs11ID' : tcypes.unsigned_long},
- {'pkcs11IsTemp' : tcypes.int},
- {'wincx' : tcypes.voidptr_t},
- {'staticflags' : tcypes.int32_t}]);
-
- NSS.types.SECKEYPublicKey = tcypes.StructType("SECKEYPublicKey");
-
- NSS.types.CERTSubjectPublicKeyInfo = tcypes.StructType("CERTSubjectPublicKeyInfo",
- [{'arena' : NSS.types.PLArenaPool.ptr},
- {'algorithm' : NSS.types.SECAlgorithmID},
- {'subjectPublicKey' : NSS.types.SECItem}]);
-
- NSS.types.CERTCertificateRequest = tcypes.StructType("CERTCertificateRequest");
-
- NSS.types.SEC_ASN1Template = tcypes.StructType("SEC_ASN1Template",
- [{'kind' : tcypes.unsigned_long},
- {'offset' : tcypes.unsigned_long},
- {'sub' : tcypes.voidptr_t},
- {'size' : tcypes.unsigned_int}]);
-
- NSS.types.PK11RSAGenParams = tcypes.StructType("PK11RSAGenParams",
- [{'keySizeInBits' : tcypes.int},
- {'pe' : tcypes.unsigned_long}]);
-
- NSS.types.CERTCertTrust = tcypes.StructType("CERTCertTrust",
- [{'sslFlags' : tcypes.uint32_t},
- {'emailFlags' : tcypes.uint32_t},
- {'objectSigningFlags' : tcypes.uint32_t}]);
-
- NSS.types.CERTSubjectList = tcypes.StructType("CERTSubjectList");
-
- NSS.types.CERTGeneralName = tcypes.StructType("CERTGeneralName");
-
- NSS.types.CERTCertificate = tcypes.StructType("CERTCertificate",
- [{'arena' : NSS.types.PLArenaPool.ptr},
- {'subjectName' : tcypes.char.ptr},
- {'issuerName' : tcypes.char.ptr},
- {'signatureWrap' : NSS.types.CERTSignedData},
- {'derCert' : NSS.types.SECItem},
- {'derIssuer' : NSS.types.SECItem},
- {'derSubject' : NSS.types.SECItem},
- {'derPublicKey' : NSS.types.SECItem},
- {'certKey' : NSS.types.SECItem},
- {'version' : NSS.types.SECItem},
- {'serialNumber' : NSS.types.SECItem},
- {'signature' : NSS.types.SECAlgorithmID},
- {'issuer' : NSS.types.CERTName},
- {'validity' : NSS.types.CERTValidity},
- {'subject' : NSS.types.CERTName},
- {'subjectPublicKeyInfo' : NSS.types.CERTSubjectPublicKeyInfo},
- {'issuerID' : NSS.types.SECItem},
- {'subjectID' : NSS.types.SECItem},
- {'extensions' : NSS.types.CERTCertExtension.ptr.ptr},
- {'emailAddr' : tcypes.char.ptr},
- {'dbhandle' : NSS.types.CERTCertDBHandle.ptr},
- {'subjectKeyID' : NSS.types.SECItem},
- {'keyIDGenerated' : tcypes.int},
- {'keyUsage' : tcypes.unsigned_int},
- {'rawKeyUsage' : tcypes.unsigned_int},
- {'keyUsagePresent' : tcypes.int},
- {'nsCertType' : tcypes.uint32_t},
- {'keepSession' : tcypes.int},
- {'timeOK' : tcypes.int},
- {'domainOK' : NSS.types.CERTOKDomainName.ptr},
- {'isperm' : tcypes.int},
- {'istemp' : tcypes.int},
- {'nickname' : tcypes.char.ptr},
- {'dbnickname' : tcypes.char.ptr},
- {'nssCertificate' : NSS.types.NSSCertificateStr.ptr},
- {'trust' : NSS.types.CERTCertTrust.ptr},
- {'referenceCount' : tcypes.int},
- {'subjectList' : NSS.types.CERTSubjectList.ptr},
- {'authKeyID' : NSS.types.CERTAuthKeyID.ptr},
- {'isRoot' : tcypes.int},
- {'options' : tcypes.voidptr_t},
- {'series' : tcypes.int},
- {'slot' : NSS.types.PK11SlotInfo.ptr},
- {'pkcs11ID' : tcypes.unsigned_long},
- {'ownSlot' : tcypes.int}]);
-
- NSS.types.CERTBasicConstraints = tcypes.StructType("CERTBasicConstraints",
- [{'isCA': tcypes.int},
- {'pathLenConstraint' : tcypes.int}]);
-
-
- NSS.lib = {
- SEC_OID_MD5 : 3,
- SEC_OID_SHA1 : 4,
- SEC_OID_X509_KEY_USAGE : 81,
- SEC_OID_NS_CERT_EXT_COMMENT : 75,
- CKM_RSA_PKCS_KEY_PAIR_GEN : 0,
- buffer : tcypes.ArrayType(tcypes.char),
- ubuffer : tcypes.ArrayType(tcypes.unsigned_char),
-
- // CERT_CertificateTemplate : sharedLib.declare("CERT_CertificateTemplate",
- // NSS.types.SEC_ASN1Template),
-
- NSS_Get_CERT_CertificateTemplate : sharedLib.declare("NSS_Get_CERT_CertificateTemplate",
- tcypes.default_abi,
- NSS.types.SEC_ASN1Template.ptr),
-
- PK11_HashBuf : sharedLib.declare("PK11_HashBuf",
- tcypes.default_abi,
- tcypes.int,
- tcypes.int,
- tcypes.unsigned_char.ptr,
- tcypes.unsigned_char.ptr,
- tcypes.int32_t),
-
- CERT_GetDefaultCertDB : sharedLib.declare("CERT_GetDefaultCertDB",
- tcypes.default_abi,
- NSS.types.CERTCertDBHandle.ptr),
-
- CERT_ChangeCertTrust : sharedLib.declare("CERT_ChangeCertTrust",
- tcypes.default_abi,
- tcypes.int32_t,
- NSS.types.CERTCertDBHandle.ptr,
- NSS.types.CERTCertificate.ptr,
- NSS.types.CERTCertTrust.ptr),
-
- CERT_FindCertByNickname : sharedLib.declare("CERT_FindCertByNickname",
- tcypes.default_abi,
- NSS.types.CERTCertificate.ptr,
- NSS.types.CERTCertDBHandle.ptr,
- tcypes.char.ptr),
-
- CERT_FindCertByDERCert : sharedLib.declare("CERT_FindCertByDERCert",
- tcypes.default_abi,
- NSS.types.CERTCertificate.ptr,
- NSS.types.CERTCertDBHandle.ptr,
- NSS.types.SECItem.ptr),
-
- CERT_VerifyCertNow : sharedLib.declare("CERT_VerifyCertNow",
- tcypes.default_abi,
- tcypes.int,
- NSS.types.CERTCertDBHandle.ptr,
- NSS.types.CERTCertificate.ptr,
- tcypes.int,
- tcypes.int,
- tcypes.voidptr_t),
-
- CERT_CertChainFromCert : sharedLib.declare("CERT_CertChainFromCert",
- tcypes.default_abi,
- NSS.types.CERTCertificateList.ptr,
- NSS.types.CERTCertificate.ptr,
- tcypes.int,
- tcypes.int),
-
- PK11_FindKeyByAnyCert : sharedLib.declare("PK11_FindKeyByAnyCert",
- tcypes.default_abi,
- NSS.types.SECKEYPrivateKey.ptr,
- NSS.types.CERTCertificate.ptr,
- tcypes.voidptr_t),
-
- PK11_GetInternalKeySlot : sharedLib.declare("PK11_GetInternalKeySlot",
- tcypes.default_abi,
- NSS.types.PK11SlotInfo.ptr),
-
- PK11_GetAllSlotsForCert : sharedLib.declare("PK11_GetAllSlotsForCert",
- tcypes.default_abi,
- NSS.types.PK11SlotList.ptr,
- NSS.types.CERTCertificate.ptr,
- tcypes.voidptr_t),
-
- PK11_GetTokenName : sharedLib.declare("PK11_GetTokenName",
- tcypes.default_abi,
- tcypes.char.ptr,
- NSS.types.PK11SlotInfo.ptr),
-
- PK11_GenerateKeyPair : sharedLib.declare("PK11_GenerateKeyPair",
- tcypes.default_abi,
- NSS.types.SECKEYPrivateKey.ptr,
- NSS.types.PK11SlotInfo.ptr,
- tcypes.int,
- NSS.types.PK11RSAGenParams.ptr,
- NSS.types.SECKEYPublicKey.ptr.ptr,
- tcypes.int,
- tcypes.int,
- tcypes.voidptr_t),
-
- PK11_SetPrivateKeyNickname : sharedLib.declare("PK11_SetPrivateKeyNickname",
- tcypes.default_abi,
- tcypes.int,
- NSS.types.SECKEYPrivateKey.ptr,
- tcypes.char.ptr),
-
- SEC_ASN1EncodeItem : sharedLib.declare("SEC_ASN1EncodeItem",
- tcypes.default_abi,
- NSS.types.SECItem.ptr,
- NSS.types.PLArenaPool.ptr,
- NSS.types.SECItem.ptr,
- tcypes.voidptr_t,
- NSS.types.SEC_ASN1Template.ptr),
-
- SEC_DerSignData : sharedLib.declare("SEC_DerSignData",
- tcypes.default_abi,
- tcypes.int,
- NSS.types.PLArenaPool.ptr,
- NSS.types.SECItem.ptr,
- tcypes.unsigned_char.ptr,
- tcypes.int,
- NSS.types.SECKEYPrivateKey.ptr,
- tcypes.int),
-
- SEC_GetSignatureAlgorithmOidTag : sharedLib.declare("SEC_GetSignatureAlgorithmOidTag",
- tcypes.default_abi,
- tcypes.int,
- tcypes.int,
- tcypes.int),
-
- SECOID_SetAlgorithmID : sharedLib.declare("SECOID_SetAlgorithmID",
- tcypes.default_abi,
- tcypes.int,
- NSS.types.PLArenaPool.ptr,
- NSS.types.SECAlgorithmID.ptr,
- tcypes.int,
- NSS.types.SECItem.ptr),
-
-
- CERT_Hexify : sharedLib.declare("CERT_Hexify",
- tcypes.default_abi,
- tcypes.char.ptr,
- NSS.types.SECItem.ptr,
- tcypes.int),
-
- CERT_AsciiToName : sharedLib.declare("CERT_AsciiToName",
- tcypes.default_abi,
- NSS.types.CERTName.ptr,
- tcypes.char.ptr),
-
- SECKEY_CreateSubjectPublicKeyInfo : sharedLib.declare("SECKEY_CreateSubjectPublicKeyInfo",
- tcypes.default_abi,
- NSS.types.CERTSubjectPublicKeyInfo.ptr,
- NSS.types.SECKEYPublicKey.ptr),
-
- CERT_CreateCertificateRequest : sharedLib.declare("CERT_CreateCertificateRequest",
- tcypes.default_abi,
- NSS.types.CERTCertificateRequest.ptr,
- NSS.types.CERTName.ptr,
- NSS.types.CERTSubjectPublicKeyInfo.ptr,
- NSS.types.SECItem.ptr.ptr),
-
- CERT_CreateCertificate : sharedLib.declare("CERT_CreateCertificate",
- tcypes.default_abi,
- NSS.types.CERTCertificate.ptr,
- tcypes.uint32_t,
- NSS.types.CERTName.ptr,
- NSS.types.CERTValidity.ptr,
- NSS.types.CERTCertificateRequest.ptr),
-
- CERT_DestroyCertificate : sharedLib.declare("CERT_DestroyCertificate",
- tcypes.default_abi,
- tcypes.int,
- NSS.types.CERTCertificate.ptr),
-
- CERT_DestroyCertificateList : sharedLib.declare("CERT_DestroyCertificateList",
- tcypes.default_abi,
- tcypes.int,
- NSS.types.CERTCertificateList.ptr),
-
- CERT_NewTempCertificate : sharedLib.declare("CERT_NewTempCertificate",
- tcypes.default_abi,
- NSS.types.CERTCertificate.ptr,
- NSS.types.CERTCertDBHandle.ptr,
- NSS.types.SECItem.ptr,
- tcypes.char.ptr,
- tcypes.int,
- tcypes.int),
-
- CERT_CreateValidity : sharedLib.declare("CERT_CreateValidity",
- tcypes.default_abi,
- NSS.types.CERTValidity.ptr,
- tcypes.int64_t,
- tcypes.int64_t),
-
- CERT_CertListFromCert : sharedLib.declare("CERT_CertListFromCert",
- tcypes.default_abi,
- NSS.types.CERTCertificateList.ptr,
- NSS.types.CERTCertificate.ptr),
-
- CERT_StartCertExtensions : sharedLib.declare("CERT_StartCertExtensions",
- tcypes.default_abi,
- tcypes.voidptr_t,
- NSS.types.CERTCertificate.ptr),
-
- CERT_AddExtension : sharedLib.declare("CERT_AddExtension",
- tcypes.default_abi,
- tcypes.int,
- tcypes.voidptr_t,
- tcypes.int,
- NSS.types.SECItem.ptr,
- tcypes.int,
- tcypes.int),
-
-
- CERT_EncodeBasicConstraintValue : sharedLib.declare("CERT_EncodeBasicConstraintValue",
- tcypes.default_abi,
- tcypes.int,
- NSS.types.PLArenaPool.ptr,
- NSS.types.CERTBasicConstraints.ptr,
- NSS.types.SECItem.ptr),
-
- CERT_EncodeAndAddBitStrExtension : sharedLib.declare("CERT_EncodeAndAddBitStrExtension",
- tcypes.default_abi,
- tcypes.int,
- tcypes.voidptr_t,
- tcypes.int,
- NSS.types.SECItem.ptr,
- tcypes.int),
-
- CERT_EncodeAltNameExtension : sharedLib.declare("CERT_EncodeAltNameExtension",
- tcypes.default_abi,
- tcypes.int,
- NSS.types.PLArenaPool.ptr,
- NSS.types.CERTGeneralName.ptr,
- NSS.types.SECItem.ptr),
-
- CERT_FinishExtensions : sharedLib.declare("CERT_FinishExtensions",
- tcypes.default_abi,
- tcypes.int,
- tcypes.voidptr_t),
-
- CERT_ImportCerts : sharedLib.declare("CERT_ImportCerts",
- tcypes.default_abi,
- tcypes.int,
- NSS.types.CERTCertDBHandle.ptr,
- tcypes.int,
- tcypes.int,
- NSS.types.SECItem.ptr.ptr,
- NSS.types.CERTCertificate.ptr.ptr.ptr,
- tcypes.int,
- tcypes.int,
- tcypes.char.ptr),
-
- PORT_NewArena : sharedLib.declare("PORT_NewArena",
- tcypes.default_abi,
- NSS.types.PLArenaPool.ptr,
- tcypes.uint32_t),
-
- PORT_ArenaZAlloc : sharedLib.declare("PORT_ArenaZAlloc",
- tcypes.default_abi,
- tcypes.voidptr_t,
- NSS.types.PLArenaPool.ptr,
- tcypes.int),
-
- PORT_FreeArena : sharedLib.declare("PORT_FreeArena",
- tcypes.default_abi,
- tcypes.void_t,
- NSS.types.PLArenaPool.ptr,
- tcypes.int),
-
- CERT_GetCommonName : sharedLib.declare("CERT_GetCommonName",
- tcypes.default_abi,
- tcypes.char.ptr,
- NSS.types.CERTName.ptr),
-
- CERT_GetOrgUnitName : sharedLib.declare("CERT_GetOrgUnitName",
- tcypes.default_abi,
- tcypes.char.ptr,
- NSS.types.CERTName.ptr),
-
- CERT_GetCertificateNames : sharedLib.declare("CERT_GetCertificateNames",
- tcypes.default_abi,
- NSS.types.CERTGeneralName.ptr,
- NSS.types.CERTCertificate.ptr,
- NSS.types.PLArenaPool.ptr),
-
- CERT_DecodeDERCertificate : sharedLib.declare("__CERT_DecodeDERCertificate",
- tcypes.default_abi,
- NSS.types.CERTCertificate.ptr,
- NSS.types.SECItem.ptr,
- tcypes.int,
- tcypes.char.ptr),
-
- CERT_FindCertExtension : sharedLib.declare("CERT_FindCertExtension",
- tcypes.default_abi,
- tcypes.int,
- NSS.types.CERTCertificate.ptr,
- tcypes.int,
- NSS.types.SECItem.ptr),
- };
-
-};
diff --git a/src/chrome/content/code/Root-CAs.js b/src/chrome/content/code/Root-CAs.js
deleted file mode 100644
index 15372bc4b4eb..000000000000
--- a/src/chrome/content/code/Root-CAs.js
+++ /dev/null
@@ -1,348 +0,0 @@
-// These are concatenated md5 and sha1 fingerprints for the Firefox and
-// Microsoft root CAs as of Aug 2010
-
-var root_ca_hashes = {
- '00531D1D7201D423C820D00B6088C5D143DDB1FFF3B49B73831407F6BC8B975023D07C50' : true,
- '015A99C3D64FA94B3C3BB1A3AB274CBFFC219A76112F76C1C508833C9A2FA2BA84AC087A' : true,
- '019408DE857F8D806CE602CA89522848750251B2C632536F9D917279543C137CD721C6E0' : true,
- '0208EE8CAAB8387A6824DCB4E26A52337E206939CC5FA883635F64C750EBF5FDA9AEE653' : true,
- '0226C3015E08303743A9D07DCF37E6BF323C118E1BF7B8B65254E2E2100DD6029037F096' : true,
- '034287D7C1167D18AFA4703CB8312C3E4EF2E6670AC9B5091FE06BE0E5483EAAD6BA32D9' : true,
- '03DC08EEC4703FFA20E5E179E81AE7C59ED18028FB1E8A9701480A7890A59ACD73DFF871' : true,
- '044BFDC96CDA2A32857C598461468A64BEB5A995746B9EDF738B56E6DF437A77BE106B81' : true,
- '0468E9247E41CED76C441630703DDDB9AB16DD144ECDC0FC4BAAB62ECF0408896FDE52B7' : true,
- '068690F2195471FDDD3DE6EEA161CAFF7030AABF8432A800666CCCC42A887E42B7553E2B' : true,
- '069F6979166690021B8C8CA2C3076F3A627F8D7827656399D27D7F9044C9FEB3F33EFA9A' : true,
- '06F0171EB1E961ED7A363CA594A1374AFAAA27B8CAF5FDF5CDA98AC3378572E04CE8F2E0' : true,
- '06F9EBECCC569D88BA90F5BAB01AE00216D424FE9610E17519AF232BB68774E24144BE6E' : true,
- '076192047EA6B9CD5E6B007AE3BF1D0434D499426F9FC2BB27B075BAB682AAE5EFFCBA74' : true,
- '087C581F522B44B43B79CD01F8C5C3C995E6ADF8D77146024DD56A21B2E73FCDF23B35FF' : true,
- '0B092C1CD721866F94376FE6A7F3224D0409565B77DA582E6495AC0060A72354E64B0192' : true,
- '0C412F135BA054F596662D7ECD0E03F4DA79C1711150C23439AA2B0B0C62FD55B2F9F580' : true,
- '0C5ADD5AAE29F7A77679FA4151FEF035B865130BEDCA38D27F69929420770BED86EFBC10' : true,
- '0C7FDD6AF42AB9C89BBD207EA9DB5C3760D68974B5C2659E8A0FC1887C88D246691B182C' : true,
- '0CF89E17FCD403BDE68D9B3C0587FE8433A335C23CE8034B04E13DE5C48E791AEB8C3204' : true,
- '0E40A76CDE035D8FD10FE4D18DF96CA9A9E9780814375888F20519B06D2B0D2B6016907D' : true,
- '0EFA4BF7D760CD65F7A7068857986239D29F6C98BEFC6D986521543EE8BE56CEBC288CF3' : true,
- '0FA01300C3558AB7D37E2D04739EDE3C8B1A1106B8E26B232980FD652E6181376441FD11' : true,
- '100EADF35C841D8E035F2DC93937F552742CDF1594049CBF17A2046CC639BB3888E02E33' : true,
- '10FC635DF6263E0DF325BE5F79CD6767742C3192E607E424EB4549542BE1BBC53E6174E2' : true,
- '119279403CB18340E5AB664A679280DFA9628F4B98A91B4835BAD2C1463286BB66646A8C' : true,
- '14F108AD9DFA64E289E71CCFA8AD7D5E3921C115C15D0ECA5CCB5BC4F07D21D8050B566A' : true,
- '155EF5117AA2C1150E927E66FE3B84C3B38FECEC0B148AA686C3D00F01ECC8848E8085EB' : true,
- '15ACA5C2922D79BCE87FCB67ED02CF36E7B4F69D61EC9069DB7E90A7401A3CF47D4FE8EE' : true,
- '15B298A354704048703A375582C45AFA0048F8D37B153F6EA2798C323EF4F318A5624A9E' : true,
- '15EE9F5AA08528DF6BDD34A3A056D8307F8A77836BDC6D068F8B0737FCC5725413068CA4' : true,
- '160A1613C17FF01D887EE3D9E71261CCF88015D3F98479E1DA553D24FD42BA3F43886AEF' : true,
- '173574AF7B611CEBF4F93CE2EE40F9A2925A8F8D2C6D04E0665F596AFF22D863E8256F3F' : true,
- '1802B00127036A191B323B83DE9AA985D6BF7994F42BE5FA29DA0BD7587B591F47A44F22' : true,
- '1898C0D6E93AFCF9B0F50CF74B014417FAB7EE36972662FB2DB02AF6BF03FDE87C4B2F9B' : true,
- '18AE695D15CAB917673267D597B260C04BA7B9DDD68788E12FF852E1A024204BF286A8F6' : true,
- '1AD00CB9A6E68A3B6E95860C5B8CD8195A4D0E8B5FDCFDF64E7299A36C060DB222CA78E4' : true,
- '1B2E00CA2606903DADFE6F1568D36BB367650DF17E8E7E5B8240A4F4564BCFE23D69C6F0' : true,
- '1BD75F76734CC0DC98CA442BCC0F78DD31E2C52CE1089BEFFDDADB26DD7C782EBC4037BD' : true,
- '1C4BE2C62DB9AC3114F4400769CB1F4011C5B5F75552B011669C2E9717DE6D9BFF5FA810' : true,
- '1D3554048578B03F42424DBF20730A3F02FAF3E291435468607857694DF5E45B68851868' : true,
- '1D6496AF2D821A300BA0620D76BC53AA7FBB6ACD7E0AB438DAAF6FD50210D007C6C0829C' : true,
- '1E240EA0F876D785A3F5F8A1493D2EBAFD1ED1E2021B0B9F73E8EB75CE23436BBCC746EB' : true,
- '1E42950233926BB95FC07FDAD6B24BFCCCAB0EA04C2301D6697BDD379FCD12EB24E3949D' : true,
- '1E74C3863C0C35C53EC27FEF3CAA3CD9209900B63D955728140CD13622D8C687A4EB0085' : true,
- '200B4A7A88A7A942868A5F74567B880593E6AB220303B52328DCDA569EBAE4D1D1CCFB65' : true,
- '206BD68B4A8F48ABE488090DE5651A500CFD83DBAE44B9A0C8F676F3B570650B94B69DBF' : true,
- '2124A681C1D8F219AF4998E39DFE0BF46A174570A916FBE84453EED3D070A1D8DA442829' : true,
- '21BC82AB49C4133B4BB22B5C6B909C198BAF4C9B1DF02A92F7DA128EB91BACF498604B6F' : true,
- '21D84C822B990933A2EB14248D8E5FE84054DA6F1C3F4074ACED0FECCDDB79D153FB901D' : true,
- '21EFB85040393F756F27FEE3EA5870EBA59C9B10EC7357515ABB660C4D94F73B9E6E9272' : true,
- '222DA601EA7C0AF7F06C56433F7776D3FEB8C432DCF9769ACEAE3DD8908FFD288665647D' : true,
- '224D8F8AFCF735C2BB5734907B8B22163E2BF7F2031B96F38CE6C4D8A85D3E2D58476A0F' : true,
- '246DABD2F2EA4A66AE5BBCAE50AD6E56F9DD19266B2043F1FE4B3DCB0190AFF11F31A69D' : true,
- '2477D9A891D13BFA882DC2FFF8CD3393D8C5388AB7301B1B6ED47AE645253A6F9F1A2761' : true,
- '252AC6C5896839F9557202165EA39ED23C71D70E35A5DAA8B2E3812DC3677417F5990DF3' : true,
- '255BA669B87BF8780DC18FA6EAE47063FA0882595F9CA6A11ECCBEAF65C764C0CCC311D0' : true,
- '257ABA832EB6A20BDAFEF5020F08D7AD81968B3AEF1CDC70F5FA3269C292A3635BD123D3' : true,
- '259DCF5EB3259D95B93F00865F47943D43F9B110D5BAFD48225231B0D0082B372FEF9A54' : true,
- '266D2C1998B6706838505419EC9034600B77BEBBCB7AA24705DECC0FBD6A02FC7ABD9B52' : true,
- '27DE36FE72B70003009DF4F01E6C0424DE3F40BD5093D39B6C60F6DABC076201008976C9' : true,
- '27EC3947CDDA5AAFE29A016521A94CBB4D2378EC919539B5007F758F033B211EC54D8BCF' : true,
- '2A5D003739469475397B11A6F29341E13F85F2BB4A62B0B58BE1614ABB0D4631B4BEF8BA' : true,
- '2A954ECA79B2874573D92D90BAF99FB6A43489159A520F0D93D032CCAF37E7FE20A8B419' : true,
- '2B508718392D3BFFC3917F2D7DC08A97B19DD096DCD4E3E0FD676885505A672C438D4E9C' : true,
- '2B7020568682A018C807531228702172F17F6FB631DC99E3A3C87FFE1CF1811088D96033' : true,
- '2C20269DCB1A4A0085B5B75AAEC201378C96BAEBDD2B070748EE303266A0F3986E7CAE58' : true,
- '2C6F17A39562012065D2076EFCB83F6DB1EAC3E5B82476E9D50B1EC67D2CC11E12E0B491' : true,
- '2C8C175EB154AB9317B5365ADBD1C6F2A073E5C5BD43610D864C21130A855857CC9CEA46' : true,
- '2C8F9F661D1890B147269D8E86828CA96252DC40F71143A22FDE9EF7348E064251B18118' : true,
- '2CC2B0D5D622C52E901EF4633F0FBB324A058FDFD761DB21B0C2EE48579BE27F42A4DA1C' : true,
- '2DBBE525D3D165823AB70EFAE6EBE2E1B3EAC44776C9C81CEAF29D95B6CCA0081B67EC9D' : true,
- '2E03FDC5F5D72B9464C1BE8931F1169B96995C7711E8E52DF9E34BECEC67D3CBF1B6C4D2' : true,
- '30C908DDD73E63A4092814C74EB97E2CCFE4313DBA05B8A7C30063995A9EB7C247AD8FD5' : true,
- '30C9E71E6BE614EB65B216692031674D3BC0380B33C3F6A60C86152293D9DFF54B81C004' : true,
- '31853C62949763B9AAFD894EAF6FE0CF1F4914F7D874951DDDAE02C0BEFD3A2D82755185' : true,
- '324A4BBBC863699BBE749AC6DD1D4624AD7E1C28B064EF8F6003402014C3D0E3370EB58A' : true,
- '3327D16CFC9185FC8C7E98FA854EF305E70715F6F728365B5190E271DEE4C65EBEEACAF3' : true,
- '33B784F55F27D76827DE14DE122AED6F0747220199CE74B97CB03D79B264A2C855E933FF' : true,
- '343339FC6D033A8FA25385443270DEC45E5A168867BFFF00987D0B1DC2AB466C4264F956' : true,
- '34FCB8D036DB9E14B3C2F2DB8FE494C7379A197B418545350CA60369F33C2EAF474F2079' : true,
- '354895364A545A72968EE064CCEF2C8CC90D1BEA883DA7D117BE3B79F4210E1A5894A72D' : true,
- '370971C4AFEB7501AE636C3016BFD1E5A399F76F0CBF4C9DA55E4AC24E8960984B2905B6' : true,
- '3741491B18569A26F5ADC266FB40A54C4313BB96F1D5869BC14E6A92F6CFF63469878237' : true,
- '3785445332451F20F0F395E125C4434EF48B11BFDEABBE94542071E641DE6BBE882B40B9' : true,
- '37A56ED4B1258497B7FD56157AF9A200B435D4E1119D1C6690A749EBB394BD637BA782B7' : true,
- '3916AAB96A41E11469DF9E6C3B72DCB6879F4BEE05DF98583BE360D633E70D3FFE9871AF' : true,
- '3AB2DE229A209349F9EDC8D28AE7680D36863563FD5128C7BEA6F005CFE9B43668086CCE' : true,
- '3AE550B039BEC7463633A1FE823E8D943CBB5DE0FCD6397C0588E56697BD462ABDF95C76' : true,
- '3B0AE4BB416A84B39D2C575E6542BE478E1032E9245944F84791983EC9E829CB1059B4D3' : true,
- '3C4C25CC0A19CAEE6AEB55160086725F23E833233E7D0CC92B7C4279AC19C2F474D604CA' : true,
- '3D4129CB1EAA1174CD5DB062AFB0435BDDE1D2A901802E1D875E84B3807E4BB1FD994134' : true,
- '3E455215095192E1B75D379FB187298AB1BC968BD4F49D622AA89A81F2150152A41D829C' : true,
- '3E80175BADD77C104BF941B0CF1642B000EA522C8A9C06AA3ECCE0B4FA6CDC21D92E8099' : true,
- '3F459639E25087F7BBFE980C3C2098E62AC8D58B57CEBF2F49AFF2FC768F511462907A41' : true,
- '400125068D21436A0E43009CE743F3D5F9CD0E2CDA7624C18FBDF0F0ABB645B8F7FED57A' : true,
- '410352DC0FF7501B16F0028EBA6F45C5DAC9024F54D8F6DF94935FB1732638CA6AD77C13' : true,
- '41B807F7A8D109EEB49A8E704DFC1B787A74410FB0CD5C972A364B71BF031D88A6510E9E' : true,
- '4265CABE019A9A4CA98C4149CDC0D57F293621028B20ED02F566C532D1D6ED909F45002F' : true,
- '42769768CFA6B43824AAA11BF267DECA4178AB4CBFCE7B4102ACDAC4933E6FF50DCF715C' : true,
- '4281A0E21CE35510DE558942659622E6E0B4322EB2F6A568B654538448184A5036874384' : true,
- '429BD669C6D445AD2E81511D355A89624F555CE20DCD3364E0DC7C41EFDD40F50356C122' : true,
- '45E1A572C5A93664409EF5E45884678C6B2F34AD8958BE62FDB06B5CCEBB9DD94F4E39F3' : true,
- '45F750114EC5ADBD53688663EC7B6AE1C09AB0C8AD7114714ED5E21A5A276ADCD5E7EFCB' : true,
- '468C210EAB92214659DBA6DB0061DE265A5A4DAF7861267C4B1F1E67586BAE6ED4FEB93F' : true,
- '48D11E627801C26E4369A42CEE130AB564902AD7277AF3E32CD8CC1DC79DE1FD7F8069EA' : true,
- '4963AE27F4D5953DD8DB2486B89C0753D3C063F219ED073E34AD5D750B327629FFD59AF2' : true,
- '497904B0EB8719AC47B0BC11519B74D0D1EB23A46D17D68FD92564C2F1F1601764D8E349' : true,
- '49EFA6A1F0DE8EA76AEE5B7D1E5FC4463E42A18706BD0C9CCF594750D2E4D6AB0048FDC4' : true,
- '4B1C568CA0E8C79E1EF5EE32939965FE4C95A9902ABE0777CED18D6ACCC3372D2748381E' : true,
- '4B6771BE33B90DB64B3A400187F08B1F7AC5FFF8DCBC5583176877073BF751735E9BD358' : true,
- '4B798DD41D0392AA51EE04E5906F474954F9C163759F19045121A319F64C2D0555B7E073' : true,
- '4BE2C99196650CF40E5A9392A00AFEB28CF427FD790C3AD166068DE81E57EFBB932272D4' : true,
- '4C5641E50DBB2BE8CAA3ED1808AD43390483ED3399AC3608058722EDBC5E4600E3BEF9D7' : true,
- '4D56677ECCE6457259B74F511172E169C0DB578157E9EE82B5917DF0DD6D82EE9039C4E2' : true,
- '4FEBF1F070C280635D589FDA123CA9C4E392512F0ACFF505DFF6DE067F7537E165EA574B' : true,
- '50193E2FE8B6F4055449F3AEC98B3E1947AFB915CDA26D82467B97FA42914468726138DD' : true,
- '5186E81FBCB1C371B51810DB5FDCF62078E9DD0650624DB9CB36B50767F209B843BE15B3' : true,
- '556EBEF54C1D7C0360C43418BC9649C1245C97DF7514E7CF2DF8BE72AE957B9E04741E85' : true,
- '565FAA80611217F66721E62B6D61568E8025EFF46E70C8D472246584FE403B8A8D6ADBF5' : true,
- '58EB470764D62CBAE29B96552B9700B56A6F2A8B6E2615088DF59CD24C402418AE42A3F1' : true,
- '59736628512B98B410FF7D06FA22D6C8A0F8DB3F0BF417693B282EB74A6AD86DF9D448A3' : true,
- '5A11B922850289E1C3F22CE14EC101844B421F7515F6AE8A6ECEF97F6982A400A4D9224E' : true,
- '5B6F532CBB8188FA6C042C325DA56B967CA04FD8064C1CAA32A37AA94375038E8DF8DDC0' : true,
- '5B9EFD3B6035EA688E52FE1319144AA36B81446A5CDDF474A0F800FFBE69FD0DB6287516' : true,
- '5C48DCF74272EC56946D1CCC713580756631BF9EF74F9EB6C9D5A60CBA6ABED1F7BDEF7B' : true,
- '5E397BDDF8BAEC82E9AC62BA0C54002BCA3AFBCF1240364B44B216208880483919937CF7' : true,
- '5E809E845A0E650B1702F355182A3ED7786A74AC76AB147F9C6A3050BA9EA87EFE9ACE3C' : true,
- '5F944A7322B8F7D131EC5939F78EFE6E9FC796E8F8524F863AE1496D381242105F1B78F5' : true,
- '60847C5ACEDB0CD4CBA7E9FE02C6A9C0101DFA3FD50BCBBB9BB5600C1955A41AF4733A04' : true,
- '649CEF2E44FCC68F5207D051738FCB3DDA40188B9189A3EDEEAEDA97FE2F9DF5B7D18A41' : true,
- '65295911BB8F5166890D47824002C5AFC4674DDC6CE2967FF9C92E072EF8E8A7FBD6A131' : true,
- '6558AB15AD576C1EA8A7B569ACBFFFEBE5DF743CB601C49B9843DCAB8CE86A81109FE48E' : true,
- '67AC0D773011DED143AE7B737190BCA9ED8DC8386C4886AEEE079158AAC3BFE658E394B4' : true,
- '67CB9DC013248A829BB2171ED11BECD4D23209AD23D314232174E40D7F9D62139786633A' : true,
- '689B17C654E0E0E099551642F75A86D8027268293E5F5D17AAA4B3C3E6361E1F92575EAA' : true,
- '6960ECBE8C94D76E6F2EC4782F55F08397226AAE4A7A64A59BD16787F27F841C0A001FD0' : true,
- '6C397DA40E5559B23FD641B11250DE435F3B8CF2F810B37D78B4CEEC1919C37334B9C774' : true,
- '6CC9A76E47F10CE3533B784C4DC26AC5B72FFF92D2CE43DE0A8D4C548C503726A81E2B93' : true,
- '6D38C49B22244CA3A8B3A09345E157FA89C32E6B524E4D65388B9ECEDC637134ED4193A3' : true,
- '70B57C4881953E80DC289BBAEF1EE4854072BA31FEC351438480F62E6CB95508461EAB2F' : true,
- '711F0E21E7AAEA323A6623D3AB50D66996974CD6B663A7184526B1D648AD815CF51E801A' : true,
- '71AA6AAF1FA5C0D50E90D40BF6AADFCC55C86F7414AC8BDD6814F4D86AF15F3710E104D0' : true,
- '71E265FBCD7B0B845BE3BCD76320C598CFF810FB2C4FFC0156BFE1E1FABCB418C68D31C5' : true,
- '72E44A87E369408077EABCE3F4FFF0E15F43E5B1BFF8788CAC1CC7CA4A9AC6222BCC34C6' : true,
- '733A747AECBBA396A6C2E4E2C89BC0C3AEC5FB3FC8E1BFC4E54F03075A9AE800B7F7B6FA' : true,
- '739DD35FC63C95FEC6ED89E58208DD897FB9E2C995C97A939F9E81A07AEA9B4D70463496' : true,
- '74014A91B108C458CE47CDF0DD11530885A408C09C193E5D51587DCDD61330FD8CDE37BF' : true,
- '747B820343F0009E6BB3EC47BF85A5934463C531D7CCC1006794612BB656D3BF8257846F' : true,
- '74A82C81432B35609B78056B58F36582CFF360F524CB20F1FEAD89006F7F586A285B2D5B' : true,
- '770D19B121FD00429C3E0CA5DD0B028E25019019CFFBD9991CB76825748D945F30939542' : true,
- '774AF42C9DB027B747B515E4C762F0FCDF646DCB7B0FD3A96AEE88C64E2D676711FF9D5F' : true,
- '782A02DFDB2E14D5A75F0ADFB68E9C5D4F65566336DB6598581D584A596C87934D5F2AB4' : true,
- '78A5FB104BE4632ED26BFBF2B6C24B8EEC0C3716EA9EDFADD35DFBD55608E60A05D3CBF3' : true,
- '79E4A9840D7D3A96D7C04FE2434C892EA8985D3A65E5E5C4B2D7D66D40C6DD2FB19C5436' : true,
- '7A79544D07923B5BFF41F00EC739A298C060ED44CBD881BD0EF86C0BA287DDCF8167478C' : true,
- '7BB508999A8C18BF85277D0EAEDAB2AB24BA6D6C8A5B5837A48DB5FAE919EA675C94D217' : true,
- '7C62FF749D31535E684AD578AA1EBF239F744E9F2B4DBAEC0F312C50B6563B8E2D93C311' : true,
- '7CA50FF85B9A7D6D30AE545AE342A28A59AF82799186C7B47507CBCF035746EB04DDB716' : true,
- '7D86908F5BF1F240C0F73D62B5A4A93B72997913EC9B0DAE65D1B6D7B24A76A3AEC2EE16' : true,
- '7E234E5BA7A5B425E90007741162AED67F8AB0CFD051876A66F3360F47C88D8CD335FC74' : true,
- '7F667A71D3EB6978209A51149D83DA20BE36A4562FB2EE05DBB3D32323ADF445084ED656' : true,
- '803ABC22C1E6FB8D9B3B274A321B9A0147BEABC922EAE80E78783462A79F45C254FDE68B' : true,
- '8135B9FBFB12CA186936EBAE6978A1F1DCBB9EB7194BC47205C111752986835B53CAE4F8' : true,
- '81D6ED354F1F26D031D040DD8AE5810DE0925E18C7765E22DABD9427529DA6AF4E066428' : true,
- '8212F789E10B9160A4B6229F9468119268ED18B309CD5291C0D3357C1D1141BF883866B1' : true,
- '824AD493004D66B6A32CA77B3536CF0B687EC17E0602E3CD3F7DFBD7E28D57A0199A3F44' : true,
- '8292BA5BEFCD8A6FA63D55F984F6D6B7F9B5B632455F9CBEEC575F80DCE96E2CC7B278B7' : true,
- '84901D95304956FC4181F045D776C46B439E525F5A6A47C32CEBC45C63ED39317CE5F4DF' : true,
- '852FF4764CD5426CCB5E7DF717E835BD4EFCED9C6BDD0C985CA3C7D253063C5BE6FC620C' : true,
- '85CA765A1BD16822DCA22312CAC680345BCDCDCC66F6DCE4441FE37D5CC3134C46F47038' : true,
- '86386D5E49636C855CDB6DDC94B7D0F7ACED5F6553FD25CE015F1F7A483B6A749F6178C6' : true,
- '86420509BCA79DEC1DF32E0EBAD81DD01D8259CA2127C3CBC16CD932F62C65298CA88712' : true,
- '86ACDE2BC56DC3D98C2888D38D16131ECE6A64A309E42FBBD9851C453E6409EAE87D60F1' : true,
- '86EF8E319D9F8569A2A41A127168BA1B90DECE77F8C825340E62EBD635E1BE20CF7327DD' : true,
- '8714AB83C4041BF193C750E2D721EBEF30779E9315022E94856A3FF8BCF815B082F9AEFD' : true,
- '879055F2CE31153C33D927C876E37DE13070F8833E4AA6803E09A646AE3F7D8AE1FD1654' : true,
- '87CE0B7B2A0E4900E158719B37A893720563B8630D62D75ABBC8AB1E4BDFB5A899B24D43' : true,
- '882C8C52B8A23CF3F7BB03EAAEAC420B74207441729CDD92EC7931D823108DC28192E2BB' : true,
- '8949548CC8689A8329ECDC067321AB97A60F34C8626C81F68BF77DA9F667588A903F7D36' : true,
- '8956AA4D441E59D805A1886DEAC828B26372C49DA9FFF051B8B5C7D4E5AAE30384024B9C' : true,
- '8BCA525F7553D02C6F630D8F882E1CD78EB03FC3CF7BB292866268B751223DB5103405CB' : true,
- '8CCADC0B22CEF5BE72AC411A11A8D81291C6D6EE3E8AC86384E548C299295C756C817B81' : true,
- '8CD79FEBC7B8144C5478A7903BA935671F55E8839BAC30728BE7108EDE7B0BB0D3298224' : true,
- '8D26FF2F316D5929DDE636A7E2CE6425720FC15DDC27D456D098FABF3CDD78D31EF5A8DA' : true,
- '8D639B56C114E4EE9A128586119082A3D2441AA8C203AECAA96E501F124D52B68FE4C375' : true,
- '8D7251DBA03ACF2077DFF265065EDFEFC8C25F169EF85074D5BEE8CDA2D43CAEE75FD257' : true,
- '8EADB501AA4D81E48C1DD1E1140095193679CA35668772304D30A5FB873B0FA77BB70D54' : true,
- '8F5D770627C4983C5B9378E7D77D9BCC7E784A101C8265CC2DE1F16D47B440CAD90A1945' : true,
- '8F91E7EEE3FCDA86CAFCDC70EDB7B70C8250BED5A214433A66377CBC10EF83F669DA3A67' : true,
- '911B3F6ECD9EABEE07FE1F71D2B36127E19FE30E8B84609E809B170D72A8C5BA6E1409BD' : true,
- '91DE0625ABDAFD32170CBB25172A84672796BAE63F1801E277261BA0D77770028F20EEE4' : true,
- '91F4035520A1F8632C62DEACFB611C8E21FCBD8E7F6CAF051BD1B343ECA8E76147F20F8A' : true,
- '9265588BA21A317273685CB4A57A0748E621F3354379059A4B68309D8A2F74221587EC79' : true,
- '932A3EF6FD23690D7120D42B47992BA6CBA1C5F8B0E35EB8B94512D3F934A2E90610D336' : true,
- '937F901CED846717A4655F9BCB3002978781C25A96BDC2FB4C65064FF9390B26048A0E01' : true,
- '93C28E117BD4F30319BD2875134A454AAB48F333DB04ABB9C072DA5B0CC1D057F0369B46' : true,
- '93EB36130BC154F13E7505E5E01CD4375F4E1FCF31B7913B850B54F6E5FF501A2B6FC6CF' : true,
- '93F1AD340B2BE7A85460E2738CA49431705D2B4565C7047A540694A79AF7ABB842BDC161' : true,
- '9414777E3E5EFD8F30BD41B0CFE7D03075E0ABB6138512271C04F85FDDDE38E4B7242EFE' : true,
- '96897D61D1552B27E25A39B42A6C446F8EFDCABC93E61E925D4D1DED181A4320A467A139' : true,
- '9760E8575FD35047E5430C94368AB06290AEA26985FF14804C434952ECE9608477AF556F' : true,
- '978FC66B3B3E40857724750B76BB55F8B5D303BF8682E152919D83F184ED05F1DCE5370C' : true,
- '9A771918ED96CFDF1BB70EF58DB9882ECF74BFFF9B86815B08335440363E87B6B6F0BF73' : true,
- '9AAEF722F533FB4EEC0A249DC63D7D255E997CA5945AAB75FFD14804A974BF2AE1DFE7E1' : true,
- '9B340D1A315B97462698BCA6136A71969E6CEB179185A29EC6060CA53E1974AF94AF59D4' : true,
- '9D666ACCFFD5F543B4BF8C16D12BA8998939576E178DF705780FCC5EC84F84F6253A4893' : true,
- '9DFBF9ACED893322F428488325235BE0A69A91FD057F136A42630BB1760D2D51120C1650' : true,
- '9E80FF78010C2EC136BDFE96906E08F34ABDEEEC950D359C89AEC752A12C5B29F6D6AA0C' : true,
- '9F6C1F0F07AC1921F915BBD5C72CD82AF5C27CF5FFF3029ACF1A1A4BEC7EE1964C77D784' : true,
- '9FDDDBABFF8EFF45215FF06C9D8FFE2B9656CD7B57969895D0E141466806FBB8C6110687' : true,
- 'A10B44B3CA10D8006E9D0FD80F920AD1B80186D1EB9C86A54104CF3054F34C52B7E558C6' : true,
- 'A208E4B33EEFDE084B60D0BF7952498D8CC4307BC60755E7B22DD9F7FEA245936C7CF288' : true,
- 'A2339B4C747873D46CE7C1F38DCB5CE985371CA6E550143DCE2803471BDE3A09E8F8770F' : true,
- 'A26F53B7EE40DB4A68E7FA18D9104B7269BD8CF49CD300FB592E1793CA556AF3ECAA35FB' : true,
- 'A33D88FE161BDDF95C9F1A7FD8C89008A3E31E20B2E46A328520472D0CDE9523E7260C6D' : true,
- 'A37D2C27E4A7F3AA5F75D4C49264026AB6AF5BE5F878A00114C3D7FEF8C775C34CCD17B6' : true,
- 'A3EC750F2E88DFFA48014E0B5C486FFB37F76DE6077C90C5B13E931AB74110B4F2E49A27' : true,
- 'A66B6090239B3F2DBB986FD6A7190D46E0AB059420725493056062023670F7CD2EFC6666' : true,
- 'A771FD26FC3CE540F19906EBC1936DE9E619D25B380B7B13FDA33E8A58CD82D8A88E0515' : true,
- 'A7F2E41606411150306B9CE3B49CB0C9E12DFB4B41D7D9C32B30514BAC1D81D8385E2D46' : true,
- 'A80D6F3978B9436D77426D985ACC23CAD6DAA8208D09D2154D24B52FCB346EB258B28A58' : true,
- 'A8EDDEEB938866D82FC3BD1DBE45BE4D7639C71847E151B5C7EA01C758FBF12ABA298F7A' : true,
- 'A923759BBA49366E31C2DBF2E766BA87317A2AD07F2B335EF5A1C34E4B57E8B7D8F1FCA6' : true,
- 'A981C0B73A9250BC91A521FF3D47879FCB658264EA8CDA186E1752FB52C397367EA387BE' : true,
- 'AA088FF6F97BB7F2B1A71E9BEAEABD79CF9E876DD3EBFC422697A3B5A37AA076A9062348' : true,
- 'AA8E5DD9F8DB0A58B78D26876C823555409D4BD917B55C27B69B64CB9822440DCD09B889' : true,
- 'AABFBF6497DA981D6FC6083A957033CA394FF6850B06BE52E51856CC10E180E882B385CC' : true,
- 'AB57A65B7D428219B5D85826285EFDFFB12E13634586A46F1AB2606837582DC4ACFD9497' : true,
- 'ABAB8D2DB740E5973D2FF2A63BDA6A05C18211328A92B3B23809B9B5E2740A07FB12EB5E' : true,
- 'ABBFEAE36B29A6CCA6783599EFAD2B802F173F7DE99667AFA57AF80AA2D1B12FAC830338' : true,
- 'ACB694A59C17E0D791529BB19706A6E4D4DE20D05E66FC53FE1A50882C78DB2852CAE474' : true,
- 'AD8E0F9E016BA0C574D50CD368654F1ECFDEFE102FDA05BBE4C78D2E4423589005B2571D' : true,
- 'AFB8336E7CDDC60264AD58FC0D4F7BCFBC7B3C6FEF26B9F7AB10D7A1F6B67C5ED2A12D3D' : true,
- 'B001EE14D9AF291894768EF169332A846E3A55A4190C195C93843CC0DB722E313061F0B1' : true,
- 'B147BC1857D118A0782DEC71E82A9573204285DCF7EB764195578E136BD4B7D1E98E46A5' : true,
- 'B39C25B1C32E32538015309D4D02773E6782AAE0EDEEE21A5839D3C0CD14680A4F60142A' : true,
- 'B3A53E77216DAC4AC0C9FBD5413DCA0658119F0E128287EA50FDD987456F4F78DCFAD6D4' : true,
- 'B44ADBE85916461E5AD86EDA064352622964B686135B5DFDDD3253A89BBC24D74B08C64D' : true,
- 'B465220A7CADDF41B7D544D5ADFA9A75BC9219DDC98E14BF1A781F6E280B04C27F902712' : true,
- 'B4819E89AC1724FD2A4285271D0C2B5D20CB594FB4EDD895763FD5254E959A6674C6EEB2' : true,
- 'B5E83436C910445848706D2E83D4B805039EEDB80BE7A03C6953893B20D2D9323A4C2AFD' : true,
- 'B75274E292B48093F275E4CCD7F2EA263BC49F48F8F373A09C1EBDF85BB1C365C7D811B3' : true,
- 'B774CD487C5F9A0D3BF3FE66F41B3DFA5B4E0EC28EBD8292A51782241281AD9FEEDD4E4C' : true,
- 'B7B0D1EC1A033ECEA91511CCB16FB2AEE3D73606996CDFEF61FA04C335E98EA96104264A' : true,
- 'B8089AF003CC1B0DC86C0B76A1756423A0A1AB90C9FC847B3B1261E8977D5FD32261D3CC' : true,
- 'B816334C4C4CF2D8D34D06B4A65B4003838E30F77FDD14AA385ED145009C0E2236494FAA' : true,
- 'B8D312034E8C0C5A47C9B6C59E5B97FD0560A2C738FF98D1172A94FE45FB8A47D665371E' : true,
- 'BA21EA20D6DDDB8FC1578B40ADA1FCFC801D62D07B449D5C5C035C98EA61FA443C2A58FE' : true,
- 'BA926442161FCBA116481AF6405C59870456F23D1E9C43AECB0D807F1C0647551A05F456' : true,
- 'BC6C5133A7E9D366635415721B2192935922A1E15AEA163521F898396A4646B0441B0FA9' : true,
- 'BD8ACE34A8AE6148E85EC87A1CE8CCBFD2EDF88B41B6FE01461D6E2834EC7C8F6C77721E' : true,
- 'BDD6F58A7C3CC4A6F934CCC38961F6B2CABB51672400588E6419F1D40878D0403AA20264' : true,
- 'BE395ABE078AB1121725CC1D46343CB2DE990CED99E0431F60EDC3937E7CD5BF0ED9E5FA' : true,
- 'BF6059A35BBAF6A77642DA6F1A7B50CF5D989CDB159611365165641B560FDBEA2AC23EF1' : true,
- 'BFB5E77D3DEA6F1DF08A50BC8C1CFA1DE4554333CA390E128B8BF81D90B70F4002D1D6E9' : true,
- 'C1623E23C582739C03594B2BE977497F2AB628485E78FBF3AD9E7910DD6BDF99722C96E5' : true,
- 'C1D43E07AEEBECFD7589E67EA84CEBCD76B76096DD145629AC7585D37063C1BC47861C8B' : true,
- 'C1D951C084B86A75E82FD7D65F7EAC460B972C9EA6E7CC58D93B20BF71EC412E7209FABF' : true,
- 'C22A59ABCF152F4CF7E631A316AE840C9158C5EF987301A8903CFDAB03D72DA1D88909C9' : true,
- 'C2DBAB8E9652C5EEAEF25500896D55953913853E45C439A2DA718CDFB6F3E033E04FEE71' : true,
- 'C45D0E48B6AC28304E0ABCF938168757D8A6332CE0036FB185F6634F7D6A066526322827' : true,
- 'C463AB44201C36E437C05F279D0F6F6E97E2E99636A547554F838FBA38B82E74F89A830A' : true,
- 'C4D7F0B2A3C57D6167F004CD43D3BA5890DEDE9E4C4E9F6FD88617579DD391BC65A68964' : true,
- 'C570C4A2ED53780CC810538164CBD01D23E594945195F2414803B4D564D2A3A3F5D88B8C' : true,
- 'C5A1B7FF73DDD6D7343218DFFC3CAD8806083F593F15A104A069A46BA903D006B7970991' : true,
- 'C5DFB849CA051355EE2DBA1AC33EB028D69B561148F01C77C54578C10926DF5B856976AD' : true,
- 'C5E67BBF06D04F43EDC47A658AFB6B19339B6B1450249B557A01877284D9E02FC3D2D8E9' : true,
- 'C69F6D5CB379B00389CBF03FA4C09F8AEF2DACCBEABB682D32CE4ABD6CB90025236C07BC' : true,
- 'C7BD11D6918A3582C53666017C6F4779634C3B0230CF1B78B4569FECF2C04A8652EFEF0E' : true,
- 'C86E97F335A729144782892391A6BEC84A3F8D6BDC0E1ECFCD72E377DEF2D7FF92C19BC7' : true,
- 'C91962D0DA7E1020FCA4CD0380872DF551A44C28F313E3F9CB5E7C0A1E0E0DD2843758AE' : true,
- 'C9982777281E3D0E153C8400B88503E656E0FAC03B8F18235518E5D311CAE8C24331AB66' : true,
- 'CA3DD368F1035CD032FAB82B59E85ADB97817950D81C9670CC34D809CF794431367EF474' : true,
- 'CB17E431673EE209FE455793F30AFA1C4EB6D578499B1CCF5F581EAD56BE3D9B6744A5E5' : true,
- 'CBBDC3682DB3CB1859D32952E8C66489C9321DE6B5A82666CF6971A18A56F2D3A8675602' : true,
- 'CC4DAEFB306BD838FE50EB86614BD2269C615C4D4D85103A5326C24DBAEAE4A2D2D5CC97' : true,
- 'CD3B3D625B09B80936879E122F7164BA67EB337B684CEB0EC2B0760AB488278CDD9597DD' : true,
- 'CD68B6A7C7C4CE75E01D4F5744619209132D0D45534B6997CDB2D5C339E25576609B5CC6' : true,
- 'CD996CDB2AC296155ABF879EAEA5EE93EE29D6EA98E632C6E527E0906F0280688BDF44DC' : true,
- 'CDF439F3B51850D73EA4C591A03E214BE1A45B141A21DA1A79F41A42A961D669CD0634C1' : true,
- 'CE78335C5978016E18EAB936A0B92E23AE5083ED7CF45CBC8F61C621FE685D794221156E' : true,
- 'CF8F3B62A3CACA711BA3E1CB4857351F5D003860F002ED829DEAA41868F788186D62127F' : true,
- 'CFF4270DD4EDDC6516496D3DDABF6EDE3A44735AE581901F248661461E3B9CC45FF53A1B' : true,
- 'D2EDEE7992F78272180BFED98BEC13D8A7F8390BA57705096FD36941D42E7198C6D4D9D5' : true,
- 'D35376E3CE58C5B0F29FF42A05F0A1F2211165CA379FBB5ED801E31C430A62AAC109BCB4' : true,
- 'D3D9BDAE9FAC6724B3C81B52E1B9A9BD4A65D5F41DEF39B8B8904A4AD3648133CFC7A1D1' : true,
- 'D3F3A616C0FA6B1D59B12D964D0E112E74F8A3C3EFE7B390064B83903C21646020E5DFCE' : true,
- 'D474DE575C39B2D39C8583C5C065498A5FB7EE0633E259DBAD0C4C9AE6D38F1A61C7DC25' : true,
- 'D480656824F9892228DBF5A49A178F14016897E1A0B8F2C3B134665C20A727B7A158E28F' : true,
- 'D59788DA6416E71D664AA6EA37FC7ADCEC93DE083C93D933A986B3D5CDE25ACB2FEECF8E' : true,
- 'D5BEFFB5EE826CF0E2578EA7E5346F03D904080A4929C838E9F185ECF7A22DEF99342407' : true,
- 'D5E98140C51869FC462C8975620FAA7807E032E020B72C3F192F0628A2593A19A70F069E' : true,
- 'D63981C6527E9669FCFCCA66ED05F296B51C067CEE2B0C3DF855AB2D92F4FE39D4E70F0E' : true,
- 'D6A5C3ED5DDD3E00C13D87921F1D3FE4B31EB1B740E36C8402DADC37D44DF5D4674952F9' : true,
- 'D6ED3CCAE2660FAF10430D779B0409BF85B5FF679B0C79961FC86E4422004613DB179284' : true,
- 'D7343DEF1D270928E131025B132BDDF7B172B1A56D95F91FE50287E14D37EA6A4463768A' : true,
- 'D87E32EF69F8BF72031D4082E8A775AF42EFDDE6BFF35ED0BAE6ACDD204C50AE86C4F4FA' : true,
- 'DA26B6E6C7C2F7B79E4659B3577718653E84D3BCC544C0F6FA19435C851F3F2FCBA8E814' : true,
- 'DB233DF969FA4BB9958044735E7D4183273EE12457FDC4F90C55E82B56167F62F532E547' : true,
- 'DBC8F2272EB1EA6A29235DFE563E33DFC8EC8C879269CB4BAB39E98D7E5767F31495739D' : true,
- 'DC32C3A76D2557C768099DEA2DA9A2D18782C6C304353BCFD29692D2593E7D44D934FF11' : true,
- 'DC6D6FAF897CDD17332FB5BA9035E9CE7F88CD7223F3C813818C994614A89C99FA3B5247' : true,
- 'DD753F56BFBBC5A17A1553C690F9FBCC24A40A1F573643A67F0A4B0749F6A22BF28ABB6B' : true,
- 'DF0DBC7CC836B77699A1ABF0D20F896A342CD9D3062DA48C346965297F081EBC2EF68FDC' : true,
- 'DF168A83EA83845DB96501C6A65D193EDBAC3C7AA4254DA1AA5CAAD68468CB88EEDDEEA8' : true,
- 'DF3C735981E7395081044C34A2CBB37B61573A11DF0ED87ED5926522EAD056D744B32371' : true,
- 'DFF28073CCF1E66173FCF542E9C57CEE99A69BE61AFE886B4D2B82007CB854FC317E1539' : true,
- 'E006A1C97DCFC9FC0DC0567596D862139BAAE59F56EE21CB435ABE2593DFA7F040D11DCB' : true,
- 'E14B5273D71BDB9330E5BDE4096EBEFB216B2A29E62A00CE820146D8244141B92511B279' : true,
- 'E1C07EA0AABBD4B77B84C228117808A7CDD4EEAE6000AC7F40C3802C171E30148030C072' : true,
- 'E2D52023ECEEB872E12B5D296FFA43DA9BACF3B664EAC5A17BED08437C72E4ACDA12F7E7' : true,
- 'E2D8F867F4509435FC5E05FC822295C30446C8BB9A6983C95C8A2E5464687C1115AAB74A' : true,
- 'E2F8E080D0083F1EC1E9D23F8069AE06C73026E325FE21916B55C4B53A56B13DCAF3D625' : true,
- 'E60BD2C9CA2D88DB1A710E4B78EB024140E78C1D523D1CD9954FAC1A1AB3BD3CBAA15BFC' : true,
- 'E77ADCB11F6E061F746C591627C34BC07454535C24A3A758207E3E3ED324F816FB211649' : true,
- 'E8CC9FB09B40C51F4FBA7421F952857A688B6EB807E8EDA5C7B17C4393D0795F0FAE155F' : true,
- 'EBB04F1D3A2E372F1DDA6E27D6B680FA18F7C1FCC3090203FD5BAA2F861A754976C8DD25' : true,
- 'EBF59D290D61F9421F7CC2BA6DE3150928903A635B5280FAE6774C0B6DA7D6BAA64AF2E8' : true,
- 'EC407D2B765267052CEAF23A4F65F0D8A5EC73D48C34FCBEF1005AEB85843524BBFAB727' : true,
- 'ED41F58C50C52B9C73E6EE6CEBC2A8261B4B396126276B6491A2686DD70243212D1F1D96' : true,
- 'EE2931BC327E9AE6E8B5F751B4347190503006091D97D4F5AE39F7CBE7927D7D652D3431' : true,
- 'EE7A41E0CF757D889280A21A9A7BA157679A4F81FC705DDEC419778DD2EBD875F4C242C6' : true,
- 'EEFE6169656EF89CC62AF4D72B63EFA29FAD91A6CE6AC6C50047C44EC9D4A50D92D84979' : true,
- 'EF5AF133EFF1CDBB5102EE12144B96C4A1DB6393916F17E4185509400415C70240B0AE6B' : true,
- 'F058C503826717AB8FDA0310278E19C2CB44A097857C45FA187ED952086CB9841F2D51B5' : true,
- 'F096B62FC510D5678E832532E85E2EE52388C9D371CC9E963DFF7D3CA7CEFCD625EC190D' : true,
- 'F09E639376A595BC1861F19BFBD364DD80BF3DE9A41D768D194B293C85632CDBC8EA8CF7' : true,
- 'F16A2218C9CDDFCE821D1DB7785CA9A57998A308E14D6585E6C21E153A719FBA5AD34AD9' : true,
- 'F1BC636A54E0B527F5CDE71AE34D6E4A36B12B49F9819ED74C9EBC380FC6568F5DACB2F7' : true,
- 'F20598E5964BBE5D55181B55B388E3929078C5A28F9A4325C2A7C73813CDFE13C20F934E' : true,
- 'F27DE954E4A3220D769FE70BBBB3242B049811056AFE9FD0F5BE01685AACE6A5D1C4454C' : true,
- 'F37E3A13DC746306741A3C38328CFBA9253F775B0E7797AB645F15915597C39E263631D1' : true,
- 'F3D752A875FD18ECE17D35B1706EA59C968338F113E36A7BABDD08F7776391A68736582E' : true,
- 'F4FF97428070FE66168BBED35315819BF44095C238AC73FC4F77BF8F98DF70F8F091BC52' : true,
- 'F520DA5203862B92768D5CB72D8B93ADA65CB4733D94A5C865A864647C2C01272C89B143' : true,
- 'F775AB29FB514EB7775EFF053C998EF5DE28F4A4FFE5B92FA3C503D1A349A7F9962A8212' : true,
- 'F7B661AB03C25C463E2D2CF4A124D854FAA7D9FB31B746F200A85E65797613D816E063B5' : true,
- 'F8387C7788DF2C16682EC2E2524BB8F95F3AFC0A8B64F686673474DF7EA9A2FEF9FA7A51' : true,
- 'F8BEC46322C9A846748BB81D1E4A2BF661EF43D77FCAD46151BC98E0C35912AF9FEB6311' : true,
- 'FB1B5D438A94CD44C676F2434B47E731F18B538D1BE903B6A6F056435B171589CAF36BF2' : true,
- 'FC11B8D8089330006D23F97EEB521E0270179B868C00A4FA609152223F9F3E32BDE00562' : true,
- 'FD49BE5B185A25ECF9C354851040E8D4086418E906CEE89C2353B6E27FBD9E7439F76316' : true
-};
diff --git a/src/chrome/content/code/X509ChainWhitelist.js b/src/chrome/content/code/X509ChainWhitelist.js
deleted file mode 100644
index e208d159b342..000000000000
--- a/src/chrome/content/code/X509ChainWhitelist.js
+++ /dev/null
@@ -1,1007 +0,0 @@
-
-// These are SHA256 fingerprints for the most common chains observed by the
-// Decentralized SSL Observatory. These should not be resubmitted.
-// This file is automatically generated by utils/mk_client_whitelist.py
-
-const X509ChainWhitelist = {
- '000AA4E99FE86D84F762DFB2DC29323D0614B95AA335A270AF204EBA2F2240AF' : true,
- '002F83BE1562B658A7BA747EEE36FFBA25A7D6C66E263B2901184058802D9A43' : true,
- '006014E5A5190652C3475AA099483A273989F403FDB282AAD77DB72397C274A8' : true,
- '013470D100AFBBA6D4E03735C1D924EFA6E25E66F781E9DBB6155EF713336307' : true,
- '0147A7B139D599058A43CDE86602DA56375CC78C2C15AC512953E3C98592D4D2' : true,
- '016BBB29A76DA59A20C5E9909D8D0A9CD25824D7462BD51B022D61B503569936' : true,
- '018BCB77EB89BD658CFB6388F57F22E40942E08FD6BF3A26DE05A2F992F6E5A2' : true,
- '01B1568F4757D7222D2E2AB9FA13E7EBBEE1B5D622CB6FA3DC45D552C2086B4C' : true,
- '01E42F89ABE23F6B00E5A35240F35DF38A861FADA04A0B07B6DA9FFA4B57075C' : true,
- '01FC275FB7BB83082EA2C546876545030D74F68355AF2B0CCB1972993B393E58' : true,
- '020E3FCA9BCBC32FF8E96460F1666CF889EAC42A586CCC76B46BBE85AAEAA450' : true,
- '02748B445F904F6C04BB42BB810B11B77BDE047350F3181DF40C3BA79D4DC89F' : true,
- '028CD123ABEA12F150435947299419928DC5E80E94E9148841265B64344C3DBC' : true,
- '028D7A3A5ACA6156AA42F1DAE25BD6116A417EFD8E64B7E6A004B1911CABCAC0' : true,
- '0299AD4101A95EA006706582B2E55A35DFD2224EB9A8F8AA822D2354BAC4C640' : true,
- '02E266B8D011CF92708D0DD0D9D840BB8EF54B4A4670BF700AE90EE6F7E445A8' : true,
- '02FB82CE0C8614F748564CB3D14C2BCDDFCF982D6187EC85E5A33B28E5340CF7' : true,
- '0333E05678F411BCFDAEFB069DDAC8BE1B3B7E45376AE4C3827771C10A53D294' : true,
- '0369D2A3E853610AD59F13C199134850D43D07356DD83ED5A3C366DD6326C118' : true,
- '043B68D81BB683927B40D3DAFC7F89C56F400F859DE68C0EA88AAB1FB1D75A27' : true,
- '045B734DD0081F9504751492B6059B22BC201018436701D98832E3A9AF050ADE' : true,
- '0494ED6BB7E16B78F2AEAAC053DAE6B31B52E39F0E10F5E8D95B77ECBA0A0BAC' : true,
- '04BE558E6D064E92B741B3C551CFE1F38462EF3A08AC56470894D1A80278AD5E' : true,
- '0508390E2DF4B63477E49A461AE883335BC71F03A24BAA06F46EB0DBF42641EF' : true,
- '0529FFECC3EB688DEA32684A0348F89876F1BD45FEA23DC8E9A25D524E7B1333' : true,
- '052AEDFBE22BDAB88C89277692F4510A2605F64112E3024EE508A92B2D0E71CC' : true,
- '054806D84102E23956A821100183D32EC4B5E8E9DE72912A1F8E6EE53FF9A839' : true,
- '05546BBD905F23086AF150C0B1E30F0BCA2705B6E0CBDB56092D8E62CFD09D0E' : true,
- '055C88BD28194042771FF813973E086A30710231DB219FF377B79FA075E7F2AD' : true,
- '0562EA3C474A2003D2CF45418458B126AC9CBF29151CCA9B6C4A5E7AB0279CAD' : true,
- '0589AF9C3A578488F4259AB8BBFFB2089D4C678B63D4C40B6A46CE2405346C0D' : true,
- '06183C90C1DCDC3E9340477D37DC231361321A9960C1948E92D1A175A1500A08' : true,
- '06354AFD85075A5BDE2D84F8408B185CCFD354C2D75988D8FC67948AA6F60562' : true,
- '06808645F29D708E4C31AC40FA00000733238E10A56D2067AA62803C9736E923' : true,
- '0698D7B65AF15F9A903D8D364BB7DBC1B238DACA79505B8BCE8D44AEAAB5709D' : true,
- '06D7D04035F29672F6921CF0BB432541AE7579AA2591ABFA9155639DBEFFD2F5' : true,
- '073B1FDF3C2009FD1E4201F3490526B49F66CD11D683A70A8D5B8A9E6E4EBF64' : true,
- '0742E85FE9C68350E070039897F5B790BDA92D92229D74BA9C6906D958A5C510' : true,
- '077495BFAEEBF5E62CEA015EDCE70CE78AF13C813920FD9D4AB72C999F60D4DC' : true,
- '0780AB0F9801F169F4E7DE6F6F40F9575707D4561E4EFEBBADE71279825E0CE6' : true,
- '07B61AF096B72D71AF801B9C7EB9F76C42CC20A7192C78DF1336611644289BE5' : true,
- '07C228652318F79E189338C3704D4E6329632563103B494C5116C53343A073FA' : true,
- '07CF2A06F1718D6E476B98C2B42E370A35FAFE4C1F41CF7A1DE115CDB6222FAC' : true,
- '07D5A15EAED5AE2CA304FFCAD864791055797B0252F925AE9177B686461E2C17' : true,
- '081B43CA6CFFA952AF4C08D1335449BCA854BE5CE2C555783A0900A7867E6120' : true,
- '08522737DBEF2F7400033E866B61B3F9E19066EC71294DC9CE2138231921AFAB' : true,
- '08DC876F1AE5A29F9E8B6CA628966C6FAFD1E474C3207A78792D4AA4D5C7EF9C' : true,
- '093314E52E8CC862C2C0C8A1C57DB5CA4BED8824A3DC7C40B8675DAE1781DC05' : true,
- '095FB0FC3CC67539621E292205E758437D94D3B651714049E6F99130BD5ADB6D' : true,
- '0B0F28E1CE5038D9C7CD8FA557669A9E78FA0BC4BE9DBFB0BE6C96462E2CC065' : true,
- '0B1C1033250F6DED11E4C0A7E43138AD3D52F5661FEC896519BEBCBEFDC16E41' : true,
- '0B1D9276FF6C18184DDF7409CB6C0916D24320DEC0505096AC79C0D3FFA9C1CD' : true,
- '0BA75006139D075BF8CD7D94B460A850F46509B23AD572CD1A1E23134F59431F' : true,
- '0C2154A365A0DE7DC5BD0AE6EE05A8E06EE782AC5C41F1D3823E2F95C61E0D2C' : true,
- '0C5B47050FC50334C9C440D6121486F466BB1D2444232ADCC21BC143CB1A79D8' : true,
- '0DAB05854E84AABD75D30CE09246103436A4C41E931374E16CC374596C8DBB94' : true,
- '0DB35F56EEAE4C5580F3231EA19F4DBB0FD46DE1BF85F4CCF40103E012CDDA4B' : true,
- '0E3BD8F8BC06B326EF672A487855F0E9752EF7D4A2A913A41374088B6215EA44' : true,
- '0E49A9594364BFD4E6943DB24A2F77FA125596414D46F46AFCF070A1645AAC48' : true,
- '0E7CFF7FA1B013E7EFA9407E167C8255BCB1976C2CB3144C00C39B6DFB8CE21B' : true,
- '0E8071ED091D6F502E2649CEF26818C0D1DE8F752632B670395E916F1BE748FE' : true,
- '0ECB53FDA2349AB6008BBC0E5CD361EEC5B6BD769281800FF4B1C9764A925277' : true,
- '0EF8FA5AAD4BACDB842959378F18935855B027B0BADDCBDEADC9CC958C4C603B' : true,
- '0F01342B195E54DA8265E4B3928A2692F6CF05F41CB85152A8122FE6E914C67B' : true,
- '0F0B2EAF8B0C4FBF1A47C048E13196C163ED9D8628AFA4AA264A4624B1CBCF3D' : true,
- '0F7391E841B068E145E12DBF6CC16DF16410083111E5F093302BA163AD4EF39F' : true,
- '0F820CFB486D8564C83E968049AD119FD838B2CD21C0B342A0D9B5D22C445C25' : true,
- '0FBBC11F4627D5AA5F7A7847E0F8DE298021E175EC69ECA90A62740A71DC9B1F' : true,
- '0FEC8F0781CB9193F4996B43806C6D2C539847FBBC0C28146B64FC35617BAB99' : true,
- '105993C03E3F5C7E94D5A78242FCD6D0C7B7E5104295F8275752D7C6908428B8' : true,
- '1089E7487C08428CAACCCDBA18B8982049B6A915FBA4598E953395B4493CC358' : true,
- '10B8161FF4FC64020AD40EA57306CFC5010BF9682B18DEEF2544DD4D5DF0466E' : true,
- '10E65A16F0DEE4B2499EBD5C96CD416BD2713C73A422F3BDBA81899C736437C5' : true,
- '1134E778B42A8DBD01C547E9676F5294D4B16297DB8F6A512394F77B21F22052' : true,
- '116A5D5F3E99CFE5F72A4AFAC8699CC225C130F4B8520CDB350A1262D9585973' : true,
- '118FF53B6BEB35CBFE6592D45BE082BA1228D1817E46B2CC14B8855FCC5C9D59' : true,
- '11D4CF9A8FEC8EB2ADC4EA3B4E7036BB041BDCF45B5563A38F409CC8F6E531C1' : true,
- '11F7A939F33BDF6270E16C747C0B0918902CD4501AF1843D9EA4445A2E708C58' : true,
- '1243C75D0F805DA54E780D0D9C55247B1ABB31FC09EB65A7017695945F2A0D4A' : true,
- '1260F631D1FBC3640BE637469748889E23A2EA907F33F78286408AB56F450A66' : true,
- '12826065A034136FFC2258AA1A65F9E550A582B4017E396077917C775D42E553' : true,
- '12F18371A507D5861569D0AEA4A8E66E551FFE7F312721E9122243EE006D8C46' : true,
- '1306A4D21476D28D3E2F7D6E4385686E1BCB6D7EEBB1A5217346A6E5855DF944' : true,
- '130753A8008BBCA6A0DD9037C6C7DA2D149BA8978C5E5444AE1B8C98F3C3DB60' : true,
- '130F0A3C4B9E9132D1676B4EBBAB2B17AFD2AF39E291C983A696D8BF0DD379BD' : true,
- '142BA9FFCEF5D09FF3DE4BBF8110156D52FEF1C8C707E4B916692D7DDB335A6D' : true,
- '1491DCCE9B3E3F5EEA92C26671244EB7203C30F539EF5B6131459F389A0D2CD8' : true,
- '14CF0BEC6B8811A81FF5AD015C62BC85AF172E86B7504D40E9F27F0E0A6F9BDC' : true,
- '14D5F704481C18BA8A23559A9E49942C499BA8011926C09F4D721D92ACA5F20E' : true,
- '150B877BB614A98F2186C3B0978D190C77A605146A6A569036728F544520CDC8' : true,
- '154C4C43AAF5F838B7B9BE748FF671521BDF0ECF3D749EB85487F9C315239778' : true,
- '15DDBE5ABC768035989DD30C6A2BC696AA7E5AB2ADDF1F3AA8FEEA35D319B47E' : true,
- '15ECBA98523C315922CFC13469827BC118123E02D1ADF24C3BF8305769869181' : true,
- '161AAA4D4A25BB68199DBE8BDDA1E8FBC52E9C7B299EC5BFAA7B36040B3916E5' : true,
- '163227E6A01ADF06502730FF25F39D8F52B79F9AE61D5AA2876980A21985A211' : true,
- '1632D9CADAB9444AAC7BBF6389BA59C12CD866725786D9284BF9B205E2586A28' : true,
- '1713C91C21F442044156AAD0A65E96A4C0020B2F765492A1431C6ABC3AF67D96' : true,
- '1715E347E92C85ADCEFCA2ED0C4B56DF7D7A3FA9C834B1F2DFA7CE115DC8DBC4' : true,
- '171F671393FB5CF2856957CB6925964B3C328E79EAF083DB15DE3D52233D6268' : true,
- '1765ACDC57A9EEDE87E6573443C7EBC42B17E012FE153D6D7158402D5CF9365C' : true,
- '1882C2D8D817DD1078933D244E379CFC5BA8EAAE302BCF9FA22636B08FAC86CE' : true,
- '18C1218D9ED6A609650AADB754644377914C34E7C35F305D12861D7C28BDBB80' : true,
- '18D46E40DC2A1F815A02742F6AAB8CCCB80BABB108B349D2E875762F7D80B2CC' : true,
- '197B67187392F9D4653EC70C8BB277DD7DA843E62BA1A47B0BD95B89CB2C1735' : true,
- '1985D79429E03A4B25EF4195F04D0D6E770B36E8AB4369232CF3A1C1E40886D3' : true,
- '198719FE25A84786A0C2BD4053E93940AF864498D6071994E09A5335B675A73D' : true,
- '19EA658B0817FBEDC5742659375F2BE78A5C76532A516F4687C6033562FAE9D5' : true,
- '1A30713C34D901235DF30605AFB82AF55EE4D3940B86E60B50692145013AFBB5' : true,
- '1A483DB77B1FD7D997B7044556C59DD6893641CC7F92178D5346394C2E522ACC' : true,
- '1A86C1C38DC645A40F8DF9EDC584DC4175CC30F133737BEE3D19530929708509' : true,
- '1AA2692979DFDFEFD4854EC9EAB4CC323BE159529C3E85799E2C3C51350FB9C2' : true,
- '1AC37940540C25A5A2E2CC1DFF939F3FAE61C194894FD82F5861AC98E1D1ACE6' : true,
- '1B53976D26A5F691CEFCF098279AAEADDE2651B698FC3F7088F5C2A5B9CB2C5A' : true,
- '1BCC11E5459BEF3D48BCCFB10F57B0D640EC74C4BFAA3F0AA221B777170A5B6D' : true,
- '1BDD0D8B130AB4FE89DB814276912F04405F2D202CE9DA8B89C4420740517437' : true,
- '1D16AA433A5042924AE1BB07FC1B53E8549BB93D0F3E40723DE9CF95720D593A' : true,
- '1D2A6A876B8C8A835206E337529E6C222E272D4AB79E2224E23A5B6414039D50' : true,
- '1D9D0031DF904A27E15FB3AF4E004B0A7350788FFEE1C7FC17F0E6118C678AEC' : true,
- '1DA6DEBFCC0A4BADEB9672E523C95F42B2D16B168759F75FD03EFBD2CD482032' : true,
- '1DB7BCE9E799B17DD372C52C9BAA4B213F041B697880932F8AA93D8B609DBBEE' : true,
- '1E07BA293C78E14CDFC629A797E8046A33F21981334BF6BFF9B4DD2D3C148CF4' : true,
- '1E51AC35C0CF103BB39F51DBC7096C53D1F3A255DC15A473B5882CC03C266198' : true,
- '1E5D810BCB8DA3AF393761C59CC88D22669ECB7D4F926760BE1EC6CD83E60765' : true,
- '1EE116E4B79A340456A72C49C1EDDD86786C97258ABEB9966108A9E01AB3836B' : true,
- '1F4C963A9BA39CE44E46F135EFEAD5B30D6A0A3A43545E18CBE59DE452A6468B' : true,
- '200F113FB8BE9CD93DCF38AF69F714D686AE4D227572F482F774574A5CCFA6DB' : true,
- '2088FE71BC64663BEA0FB04CF93E3053228D41914681A3F17DA61CA996D453AF' : true,
- '20BFFF5C6EF0AB849F78A1259C766EFF0FE4652DF02731E4F8408B1E27897932' : true,
- '20C2806DEA7B729E29F7B7BB8B2653B8D71805605AD46394473D1B1F81103664' : true,
- '20C6290C0D7F1DC37BE540410CE80976FDC523C201D3BAF204454EF851F721E9' : true,
- '20E0911E2A528C3DC143646F9369D844E82CDA53C48549125DD690ED1047D8FF' : true,
- '20F5CF34D9A134A8920507B12EB84CB24C2F09152FE9B78FDADF57D892BE79E1' : true,
- '2128E4E9D372E50A94E43591AAA7C8B6BCDD8BF303C0B22F923B1DCD596E79B6' : true,
- '2156D89DFDE0B0676EBDE6CC82DF46DA81467DF96F9B8DC4A8B62F71DDA5DF95' : true,
- '215D8B74267F138F2936F74E6B2029CD8991DD6AAA1CC001ADF88B0202F637F9' : true,
- '21B2E2C095E47F4762069BA39AAD86802201AC4ED5B6DDBC20D1C7863AE511ED' : true,
- '21C612A4E2CD066893391249E3C4DF22613E9DA5FF37690E3F806AA708B0401F' : true,
- '21CA97793B165187383669364CEFC96F19BAF3F8987F7260CC46F3852721BA5C' : true,
- '21D70F62B14A3B2175742DB9F3C49999B67C15D0FF8ACA95B0C6A5393E043FA1' : true,
- '223264A2EEB01CD24524FB9273B38688A0AA8E3A2E7D63ECB76012B060039760' : true,
- '2234133DD7FCAE5D199EB31E1ED8A798554B29A355A895066FA6AE445386D9ED' : true,
- '225C19F21F4CC5241C15ACC6007060605DDF10817681F676CB8BD1B72014D52E' : true,
- '23980A7B935B10CA69315CDA05E61B4ABAE7876724C0E0C3CC7BE9748E41ACCC' : true,
- '23B4591985CFCEFE811945510306C145B21FCE6B79686DC5D245DA69DD6D4128' : true,
- '240968FE922EFB9937AF8923AA4F0478D7F679937B9FA9BC1A2B1DF18994B9F8' : true,
- '244EE1B87977A42E7CA64725F7DD82F337A432744853EFA58C9F386DD4E0283D' : true,
- '2518D06777FE96E9D7D1B0D531149A5862177805443AC9D271BBCFEC660ACFC2' : true,
- '257335B1AD2B1D562552738ECA1C534A6331FD83B95C91A1EB3B6C2A44650BA9' : true,
- '261DD192486C36B9BF5DC0C4140F670FDD2BC62EA80C64123D827B5F32E0190B' : true,
- '2635178113FBBCC75EABC09C497D411C994AD0170CF9DF999A4FF5C16872CDBB' : true,
- '2677470F2FBD067904B7014B88988BB94F72403C014240B9843AE5A5FA21661D' : true,
- '26A15E073F71406D8AFF4A4A623F956FA8E3ED70F0C04CB4B28031EA103DB975' : true,
- '26D106DF3FE6E9C99924142C9DA27551E012C72C71FDE6EDD3CF4B5C87D59A26' : true,
- '2741D5D511257BAB37E2DD48559D3FE3998CB3A5BA4FC1EA9C8656D5694D7BFD' : true,
- '274C93C8441ED469C7B7E01B5A4DB6D9923C3947C87CA4B71D09F34D13F37D47' : true,
- '27560906A3548AB767BA0992FD2F93575AD11AB83AED3354B6267C3F3228C858' : true,
- '27893DE92514608F647A44E85314B90F983BD7E6BCD6CE9BE428FA52EEE34DD9' : true,
- '27B5CA8FBD760D881A9769019B0EC43CDADA9AAC3900861E1E14EE9348736FB9' : true,
- '27E83ECCF1CAB639F44A2B74BF9A3D463B18BE6D600C1186C336421DF0A8B752' : true,
- '28445F7C648AB6025EB469E9C5FD10C6C8D0D21B6A20F078854EFF406C55D3F7' : true,
- '2855C813E2F7369732C35656DD791928668591AC6AB3F9C73061B80AA7713920' : true,
- '286C62823B119606F33D5761CF39C86D4DFBC1531AC399969455CA227344D5C7' : true,
- '28B49BD8083286E1E01C3B94D6358697FE6827CCE71D7C1D0892941B49D83416' : true,
- '28C725A83ABDD4F961356B2B5583C1F165094C5BC820CF15A4FE18086272107E' : true,
- '28F5AFFD30157F1A5DE7CB914129A6BCA4BD8EBC41A61841E1033C512F78E68B' : true,
- '290DE5FFD5BBBE1A557D3DABD01F3CF8FA5FDCFED4A919F4B73CF80B6CA2E4DF' : true,
- '296C5D3A18B056644774C03385700A24690EB9CD1114CD9E643E4813B69363ED' : true,
- '29E0C5434734C0FC43246F066EFA19F533AD59E3A713F97455F8C338F1C3638C' : true,
- '2A1E01990593F5DE1C300ED5ACD94B694DECF9DE34BF2836A764910F82BE664B' : true,
- '2AC8168217387601B753D08652B1FE2CD14E8A7C9A7DE7DF74A8300C976FBED2' : true,
- '2AE917E3AB4B867883088BCFFED53EBEF9F87988C77AE47FE325547B181931A1' : true,
- '2B1B6843B33770E84785D0FACA5AA6EAB6C480AFA07E95F7A282534BEB69B065' : true,
- '2BE6A67777765CE8EB868416D68CA6AEA8C57D31523F4A683957DF560C152066' : true,
- '2C01A7027A6FCCB3EF0B70F134229605465295EE1249F5A582D04CD82689BFC9' : true,
- '2C43EC0374BC603A1B191B88ADBCD5C1A0409120427995C2684A1590C7AB1432' : true,
- '2CAB9683916ADE98D778D3394221D8D07E07353E546771D507232A26FA577902' : true,
- '2CB02C933CD41CDB146CA0256A99AE53D9320BAFBDDE82EB24891AF68BC6E19B' : true,
- '2CD5E37B2C388FECDF839EE16998A0F0850B5A6BB39AA5A507AE676622001CB0' : true,
- '2CDCECA60D7F0E4700411340E6CBFE1B3C8FAFA9081E219462D25A14B61F9AB5' : true,
- '2CF8647F049667F93FC50EBEED00FE30965114437763C339393FA19E306E9CD5' : true,
- '2DBAF94C053FCCFA1EC09CBB22F54DAFF2DB4ABE1B3C61CFF1BEBC31260F4821' : true,
- '2DE3B602EC7847028D2EA59A8E241EDE63CEFAE7456802CAFFFAA8433CE9D885' : true,
- '2DEC053F97460AAAFB67EAB8C769B34049E9D44286F199A8D776D2FBC4A8A41C' : true,
- '2E40BCD87CC3A1033F406FD9FB81C5F405BDFC21283B22CE396562EC17CDDF02' : true,
- '2E936472C0CBE755C72128EECCF5BB8AE91AF188CB2F3277B205E27904A9EF20' : true,
- '2E9AA94F913F869B027272668BCA46D5076503EB9550737482C337950749E946' : true,
- '2F3A46F3C2FC1EBB5FB46B3135B7B4ED88CB515C2DB9A508716102340AC3583B' : true,
- '2F56C46CCFDB3A3F0192313C4801F02FFB1738F328CCF0F33F44C0731D340DD5' : true,
- '2FB44A33A5795F520D20CB4ABC4AE4E239FC193CC2E3D3A85056685ABDA9E0A5' : true,
- '2FEC6D75CCD95ADD4DB327257B4E73A880CC462E1760267970030576C46E0077' : true,
- '300B5DFEFE98F5280E47725FE63D7A0967CA022E4CF3531023A3969867677C6E' : true,
- '30354519FFD4794257A7EBEDB0D47DEC9A547B4E7213199000F41EB65C233EF7' : true,
- '305B4CDDF744AA543DA713E7E60C19ED5537D49ED2252330B46B7E664C4E588C' : true,
- '305D58D32D2FBAA00A386E3BCCE2202522B78C6B10E3D83C6A7402706ADEB4F6' : true,
- '30664111831B947406CEAFC2E660230B307F401DD060852E0E5281C95D9F526E' : true,
- '3074E85BD8520085B6E6AE099964DEF737BF95AF53A0A8F3C5F4B4D714CA2824' : true,
- '308F0B0CF08358D501CB807667A31FEE7FDBF7539E1AE74945DD9245AB9F2CF6' : true,
- '309DBF5FE6C52E6C7143E63BA07B9FE59D4ED38944409ECBECBDD74ACDE4E78E' : true,
- '30E358967DCBDB42F759C5380FE945EF7142DD37D820E199AEA23DBA51EF541F' : true,
- '311F6B428C4994F2677A56588DA04B704926D737669A76B1B3C8504EECCE4A61' : true,
- '317B7685779DAFF1AD898FA790781D54D3EDC11621D1EAA3F4A9BA3262462557' : true,
- '3264E084FB98F560090992151EFBCB41AA84EAE0C3D8378127A974DF81473E9E' : true,
- '326F94C0B20B06F11A54904E31BCAB0C1A4DEC790BA2D1947E0E11F9B7210F58' : true,
- '32707DD6FF2DAE577C4097176D936DE4E46E5CF428B0831D12574128BBFF6309' : true,
- '32D398E73D053561EC78257EB01F0945C2A38D9F80674F6F2B4B10BA35A2B4E4' : true,
- '32ED76AE2E09C58605B9C2BF6A27080DB8C7EEB70889BCCCEA72104C7F33F95D' : true,
- '33512B5F197ED2B530575C71046268C4E2F5724B645B8DF1C689EC535C0FC791' : true,
- '3361788E20F935BE971D4A9B9F49BCF9951C7B30E8E1B00E18130777401E634D' : true,
- '3379517964657D6F875971C1ED6218D9F890BEFC7390CA654C79A666D1989A18' : true,
- '33AF2CA60F79D526019EDEA838ADAD51FE541F589F09B0C69A0AA288363D3C72' : true,
- '33E0C503F4B4CE3AB1851ABE4630DDCCA720DBE3634CF7A5203ACEAC15031F12' : true,
- '34535CB0A54193C144158D23C5A7F6F0F448FDD8EB9C21542A1203BB66BB8144' : true,
- '34B1CD29AECA7639010C4082C4609B8EC6EFC5DF272CC90D2650D01ADEEA8A53' : true,
- '350123506BA002EA62350E82CFEC1DA7BF24B405C4160EF1BF4C445F7DC31757' : true,
- '3551069D5774095145A9731885485CE10FBF3FB46144F33A4E48C03CF2E475E0' : true,
- '359BA4063DD43F04725A67F7E425EC48A593838AC97328374F83A31FFBB1EBF7' : true,
- '36267B2A60E0B5997DEEE17CDBE6AC7F7D54D279C6AB4F06CD469919F442E6AE' : true,
- '366B123FA1EA2FF7FDBCA0422E504C8E0AB62334AC8941D307060F5ACDFB58AA' : true,
- '36E58C6DDB5038020FC61F17D2728311DEA600AD9FBFBEBAE2EFBB7B5071D884' : true,
- '3757DF53FF77E5BF111290CE7F03B821455E2D1D7B70033F649D7B60ED8D602B' : true,
- '375A5FEFE06518B0BFD2CE02034E185A44118CA92BEC6FE2D5809762C89E8C67' : true,
- '376690DCA49A37377D699141D59A549953B2A0B730729BC6FF8BFDA67433F763' : true,
- '37DFE2D5440429C8D48258C7E68500C526C81FA4606E45B6611E68C6AF2917B1' : true,
- '381FB3EE49812423C2F3CA943350617377D0E36E0D7FAE21159F648DA79FD32F' : true,
- '383BD359B34DEAADBEF73CF41B93362BB3C59688EFCE1E8403C50C5783F1C50E' : true,
- '38BDD8D544DD1094861968FB021D7E27BC2A9D0031AA914F3398C377A4B5F9EB' : true,
- '38C737C9B8240CCA0A28FD58D0C0C697B8D1DDDCF895D3F3256D1DAC8C08F513' : true,
- '38D12483160C6E3AC330EDC1DE173382B4C2AD79A298155181CCBC9A10CF6495' : true,
- '3917E4EF55DFBA1A48DF46B693E2E72D708B7B6146C8686C5B3F94FF8B3704FC' : true,
- '392944F5A1C82284C698C6BB512CB5ABA48445376D54BDDF0A53C66B832D1BB2' : true,
- '3958BB2CE60148D4CDAE6266E4E04A6356E00B693621A4E9E05FC78C9709EF33' : true,
- '39863EF0FA91E0729FB834D4F99A376FE60A015301FBDC91EF818346489EA0E3' : true,
- '39BF13F759A9161866C6DC6898A5E6D71FDDAEB9EC5925FFED274FA8E5FE34D4' : true,
- '3A260A20CB6DC9BCEE25A21284C2304A9744F494B37359F5F0AFB46A1D0DABA6' : true,
- '3A2AC86801E185B3B8A189C42AF1574721D452DA425CEDEC6FA0CCD44894BBF2' : true,
- '3ACDE8B9E6B1100535007AC7316F4587DEA84EE0DF1B344DECEFFA952AEEDF96' : true,
- '3B00662EE3F01FFE2C40842F0F3B76C039ABB785962E371767E89E2AFA311A74' : true,
- '3B209B5718F54F113C557AB8D670B1501B05A16B92E6E16BC97D026087B90C3E' : true,
- '3B98E076AAEB1E46BA5DAFF4914C9E279EFDB41A348AD849756FC33CB6A4881D' : true,
- '3BB4AB8E09B6EFC71B2B292A489372337E48085BCC4C08431D090D63C8920C78' : true,
- '3BD39467620E6ABD6EDEECDB96477E54E67F1F63377B977E1C9E2371F0911922' : true,
- '3C49B9DC9307C6B33E0DBE135836504ACB9F6204B7172A412C28E797E56CA02A' : true,
- '3C96E89F8B86936DC4FFF044FF1AE0F5C26BBB357356C47EB977C5E5620EE434' : true,
- '3C9AD3DFF4DB327C01C03D00389A76E5E699D4C4707E23221DA6C61F949AD532' : true,
- '3D1C44AA234496D76A6BAC3434418253903B3C5019FF91F78348AC7C14E39CB6' : true,
- '3D666AC8FDB8483D6006C9E22E5E9539E27B322D5BCD0AF264DC8878F9476DB0' : true,
- '3D76435F7EA7583AD6F474333B7F8AC6368ACB53FAF4AFF9E8644765025ED427' : true,
- '3DB253A22F1FBD071CBAB9E97294CD6534BC74430123B82198F7A29ECF800D64' : true,
- '3E08AEB4D01EEE9C19968EDE2D5FEE0E974E6B7FD65769E767C28CCDADD85D46' : true,
- '3E09F448ED5A72584FA305F82A25706D2AE756083530B4E18665DA2AE46C1410' : true,
- '3E0C00CF982CC013733E0AEA478B7329E28EE2A7627E7BE5A53630744F024765' : true,
- '3E5558CB92AEDC7E01DB0FBCD0825CC0F51AA7B683ABFD01D1E5E04C8A4D716B' : true,
- '3E5CFCFEB58445BB4A2C7D31BECCD7D28302E69396E3BA6F7DD8FE5AA11DFFD2' : true,
- '3EE396E9C7E97016AFACE8285C152EC6781728AFFD747291AAA596D573C6ED5E' : true,
- '3EFF635571ED85551721F01985D1B2C62613C2B7DE25C8DAF17A8767ECFCC39F' : true,
- '3F1F9323436BD390A2355115CC333592B4B5AE3F3BA2755D342CD863371EAB1E' : true,
- '3F933B11C350C08B98993CBD045F11249CB355ADAA8FC405B9B3AAB0CBC72F7C' : true,
- '3FA41F7E559B84FA6918FAD6709B5026B05A1C1AC589049A4D5F05F3A6B7D65B' : true,
- '3FC8022D0C28EBFD45DC1D07E14F9E83F0CAD2E7ECEDBFDB991E01EBF2400F54' : true,
- '3FC92874F07DB0DEE11CCB2CA7BDF187641DC78ECE4C76E71B2253FBBC17E3FE' : true,
- '3FCBCC65096D7D731244167CCEAA21757E56D6EFC05A632AB3E062643E5B380F' : true,
- '3FE67F5B06535FC13DE42FBF82AB1238C7C899491A460D62CD2FC08DC87DCB73' : true,
- '4007AA6804EBD54CF48E514FC8BE08DE5BBBE5E6536D678DAC71DE0C05D05B07' : true,
- '40812953C19613BA9042911FFFEAEE1C00A952E5D97D358B6603AB7DB69C867C' : true,
- '41717287E2E15F9E79F144B822458F9DBD930C194668167C06B87128E9C21042' : true,
- '41748175B1E9E26507156E326B06719603CCC2E54D9D1FAE0F6881012101F692' : true,
- '4181BB2178C564FEA4F0F5C87337921A1DB4C1CB1264B1E2168FFAF334C7DA55' : true,
- '41A4B72E197905E02DA1199B4B9D2B20CA9B1502151A14FE19D8470FCDF60E0C' : true,
- '41CD7602C418FD0831F1F207DD50A19A0A03679113F8508F43DE863AFD32FF45' : true,
- '420E1CF047C7A0FEA28411C545C2E0AAC2AB31DE5BBD13F63022C0193E03DF9D' : true,
- '422E906DC5CFDA0E2B9711F05E3A36299B9298E7D23392C3ECB11C4173F9DCEF' : true,
- '42A2B7BAFC9E81A94112C062E15EC8017861988A458D8C52A686702633559BEF' : true,
- '42D891E625A2FE563C10EC705A036928A9EED088915D480F5DDEDBC4BB35A557' : true,
- '43555C20820B179886354E63251A21247292B3B7BA46D8BEE860A0313258136A' : true,
- '440D00F6A763CEAF241756BFC150BABBB724D3AD48D6739ADEBC84004E24FB7A' : true,
- '448771ECDB6FF9B0B1A817E6C23048CAC06987EE2A6FCB6B84A6F0A75D7DAA6E' : true,
- '44C748D62020862C698F3A1BE86A0261BEEF4337B6E28B3597F7FA0E4A01E49A' : true,
- '450608B6DCC297A7FC00DACC4455E165091B8A4B56873B61C4ACD495A32AA2B7' : true,
- '452F8C17E67135B1FF58F58BC411FA165E80838C8705B1F6BAF1C90F287BBDC9' : true,
- '45C9985056B6629C3B4566E54648AE5DC504ACDA5569CE68023C39D9E554A217' : true,
- '45CEF64AA866F2A2A72E13722374190F8EEDFE984F022C3B23B492A073741EBD' : true,
- '45D1C3C1E96982C752313C9059D4D6291BC0652ED7B266E25F67738E4D74915E' : true,
- '45EFC525BACC3D6E5AF98E1BFA4A60582231A423EE2E52D5760C184E66241DA5' : true,
- '4603C35A8304F6057C253381D39404E8B40AE0958B4EB2CEAB7777CD85802C0C' : true,
- '460D4CA817FB242D2263900689B3CBA7261A390B018391C7E1716991BE8ECAA0' : true,
- '46236B9468DB40FAF467AFB0C35B517E514251530785695F54440E6730AAE44A' : true,
- '464CC49DD9D781670D5B24D203D45F2CD011F63C8775862C2D7FAF4B23C64EEC' : true,
- '46601DC361A7306BA942625822C757F0702F63A009A5B0FA96CDB92CFDD07FB9' : true,
- '46CF8D35D0A439E7E4BF019F73EBC9636C9C3DCCDBBB4B707A21BC4B36F3EB22' : true,
- '46E74AF8240C97D2E91E118761CA4F74371BF7D2266601BAF6084BB1924B62D6' : true,
- '47F4235DE4F1BBD02682F65A8B465D04721124582B6DEAFDAC164A699F56F419' : true,
- '4800E67D74EEC480EF1C5E3B2CF779C940C3177A5713BD1E1B8CB445DCA65345' : true,
- '48544D794B99D6942B8C3B2CF051782C2F6CE051860BECDE2736C2CD6A429893' : true,
- '48DF42F374FDCD58EB650256F421F6C1A73F663DCB8DE0972DF9421205509F8C' : true,
- '48E8ED415FD8EFB4407D0C67F3A4EBF15286569D29D566DEFA8B7AD8F135A5CD' : true,
- '49558145AB82E7F795C2E45402260F1AD1ED43D4DF145CF2577BA1615CD00843' : true,
- '4A12F9678B1A5B4677054BDA1CB6B41AD8A4F556A184E7E4C33669EDD31EA50D' : true,
- '4A25089DCED84BE3DB1816DA1A2619E2D39D037A7561AB7859949D1401BB6C39' : true,
- '4A69353F89397B7FBF7B34B298BBA87342EE33C9F5B75660195F8B308FC892E9' : true,
- '4A80A015BEC13BF13BF90A093212BC7E939DF1F5F535730273342AE942769A2A' : true,
- '4A978057E01B2F443BFC218B48E7D00D2542DBA58ABD2609ECE7E152A8F86292' : true,
- '4AF86DB451BCBBB3BD8BB3D5982DBF4451CD96394540DE9FE6210E69F7C2F8D3' : true,
- '4B14ADF4E6015B7F5E4EBBEAE635E5FCA547B1885B9386DFD76A25B8D2A2A63C' : true,
- '4B29F275C3803C8B4E50951895FE2A4C94442F4A7D14922D54EADBCAAABF4056' : true,
- '4B50DC7F1BFC4867D02B551EBF66F63645DD5BC27681BA715154809449F381E4' : true,
- '4BA4EDD1EF23CC54D0287D277BD59A3EA14C6E7B37C508155E0EF9A01D048318' : true,
- '4C31265DEE511FAEF9E6B7543D920AB1884D164D630380446406C4C4EFCFC6AD' : true,
- '4C71A0F5907EDCF7950980BCC1B7B6E00141C1FDD4A50D445BB43E1E054B59C5' : true,
- '4D112C44F7DBE6E0A55667E639E192515C54B00CE5E964EF696B13AA049BA656' : true,
- '4D26A014A4C4007564C743D9BBF9C2DC9A5A881C05E549DFFDAFCD3814F3966C' : true,
- '4D2E2CCFE3A068F7C89D22E4EA6F738F99D3E62287FC8B9C8787D78A7EA77B30' : true,
- '4D3CD85A0580A0298BECD2FA69BB246CA91261145CA03370847FEDD2BA707CB1' : true,
- '4D6CCD149A9BF9FA30CD78345F827ADB4A51553FCCDE1811FA39872E293EFE59' : true,
- '4D934EEB8A02C8031AB9A12A52416AAEEDB4B2EE58FDAA767FAAE917AAF8B645' : true,
- '4DC761701AB68524A6BACAD94CAF1D8480229B66D8B9B9C0CDA3D3B233A6B785' : true,
- '4E49086BA0B8B96D1C31415D8A1464F19B93CF45B46D04AE4C21672279ECEFFB' : true,
- '4E5AD8D52C37A505176F9BA95BAF43CB5FD5A7FC4654DC71178ABEA8188E7ED6' : true,
- '4EEC544B64210519ACB153834E7AFE21867AA949946FEB78CE5A254D12A0934A' : true,
- '4EF7A69DC3625A39A416CCF7F607228D8A715D7419781218E4B827B83A504CCF' : true,
- '505707224B14F1FFF2F5937865DE662C85B0C21D090C59658E24B53CA635EFEA' : true,
- '50CC4D1AE164F66EC09AA6B7D5931074094FA1BB6788AFF3525D7711449CEA81' : true,
- '50DB534A27B601C2268FB45FC5F496F4457DC030EBCDFD6221A85B1D6F612837' : true,
- '513B3B0E023E7013AD1D77E77AFDAC7D99627F8EE3C8FB291064D6D56C3CDFE4' : true,
- '518B663FE089FF3E12F169F8EB5DE2EDC6635A11F14B7FD4207B307BDF2DAED5' : true,
- '51951278BE011B8562F6F9F629855BCFC7F28856755EA274F29109E2489CCAC4' : true,
- '51D06F5BD10CCE82EF993587A687822C99C3D8F3DD2F04408E99A5388C07333B' : true,
- '51F3918557C9F6EED321444D170BB23E4A558FDDE7B966D11FC6B426C51D1676' : true,
- '51F5AC607BCB1882F792585357C63B23D08267F717AAC5BE2AF557123EB19446' : true,
- '52064B1A1610B2374CC7319E51B4ABFAD46FA995B9447DF18ECBFC68382A9ACF' : true,
- '5208CCACD74C6B569607B3AAB6639B318FD5CEB9E3A3C763F11D6C4BD603ED5A' : true,
- '526D901BB36A96CF7AEA36490FE1A58EE0970BCD409CDA3E8659D8DDDD59560C' : true,
- '527E1D8CBE4936132EB16202101509A3A0535CEF78476DD9317AE7A31C097327' : true,
- '528F9666D1C35F9AB6C5E9E6496B0618C6A3F5C37D6808E0601A8F2829A352F5' : true,
- '52AFEFBC93919093868483354CF11C747FB38F946CDEFDCFA6E5117FB0F5039B' : true,
- '52E62F52537E672C499E0902B25BC800C87BD8C45BAB7B9683811A7D09C4559F' : true,
- '533D8997AAFFA435583E114FAF33F105F8CB1B87020DC86F5DA948808EE81AB4' : true,
- '5376577409E17E8F37B2CC6FD486FBD356FF2AD0B5EF520DB7CDAD06C6A6F3E0' : true,
- '53CB6E4A76F1BDA96200BC21FA943685A88C33EC1A4510F4073BF54644475390' : true,
- '5401D639B63C7A3075C6C5B61F64AD5246B8E06895EA510AA9D7C1418C3E06F4' : true,
- '550C98DA3C1CCC2DB49A389D57397C73C4304F4A4B65A1EE1A300EBBFAB97478' : true,
- '55360AB9E4626C6A5CABE53D4DC3FFE3339671F040B96E93C3B8ACB6CB1AD4D1' : true,
- '557AE25211574C66868033236E50981E6DD3AAC09C9A7916CE3A26D03420E774' : true,
- '55DB7B0ADB76D9C23CFF1CE64083074EAEFFB1F83642E1AEC2A7FBD365A9E962' : true,
- '5603628307C37436A0A6FD92B580DEDE34FE08652C3E73010745E471230A5B36' : true,
- '563A36F203C4A0D86BC2ADC38B1006499E3CD3D651B5C97AA848494CBC5582AC' : true,
- '56A2C00BEDBCD3A014C22A89A1E887CB0F9A2095FED90ECF196F6719EFA35A5E' : true,
- '56B6BEB3100D40CAB0EA4E450188CDDA653F473F3F182578AAB314006E66FA5C' : true,
- '5747EF64E7C857584498831611D042B568A3FFFBA79F476ED22F4D07E5239266' : true,
- '57A0A93A8193B5CC90AEED1D0B92696C9516F2C3A6FAF86F7BB8126B5A691311' : true,
- '57A0B57635F2D75EBC9C3B166E68E35E1CF91BD074AA9D5CBCB3359D93F02859' : true,
- '57B2958E7031793509E2EB58DE05C460E0791C4F78A43244640F7926FA3BD7D6' : true,
- '581247229E9E4F0D67498BD22646654479F5E0E21C96DF47CF84EC94218EFAA6' : true,
- '585568A4010D0650BF0F0C2F78402F25FBF6D0B8C82879E5B475708DA6617E35' : true,
- '5878388C3C9B65DD3896113A5E88AC085793C21BE84ED1583D7939DF87D09D7A' : true,
- '58B590F006C3B293A57D41FF491EDACB580EBBF8AB20A91D6F8F0ACC3D3C19EC' : true,
- '58C1439E2FF88E70D837218AA52270706EBA8C66B587805DC54AB12215416A05' : true,
- '590F7D88D52E1E705632486F4CB869B519331ABADB9B139951F8705F33E42C55' : true,
- '59148BECF90A7738D4915EE2C70C38F7789A26131E0FDC0240A76CA7153EAC00' : true,
- '5A4A8137AC418073C8912C4393D72D833960641E7343C43A2382861389B433D3' : true,
- '5A53389620711EDF33A7992A0ACD5EDA7D1AB729D6513ADFA26AA03C8A38675E' : true,
- '5AA7341552FF047164227AEFB41437582F7116D76B854F54920A5D6A9B72271C' : true,
- '5B3B3DEBC9899E074F2AFFE1A660013CDFD66E4F70948B72AAA20DF84433A80C' : true,
- '5C1BDEA6E4051D2FE99D2502AC86707BD008636200DBEE30816399996D796DD0' : true,
- '5C3F4C823A953A561E8D0787CE7AD8FAC7434EF57CDEFA4520C18A5667C82003' : true,
- '5C568C32C672A2B3F7242D5CEAA2718B08CED5BDA028B84224D605079DBD0DD7' : true,
- '5CDDF1DF7B5333F1B4C0FAA66297AD72ACA5258C5E9FDE4B9ACD9EAE832C7A02' : true,
- '5CF1D1896FCEF8E0B72BF6E617D8210ACE7DC6393E38FD4BD4C68E2EFE2EDC03' : true,
- '5D0D6A8831205E33D40CA0CA2B8F396D05735A8D91B97DAFA61FBCB60ACC2BB1' : true,
- '5D133D3BC732EFC05E4C91931F8ACEC74F9BE1FFEC30F8C5E38616D2AF7BB20D' : true,
- '5D8DBE824180E72B5972E68A8373AC984757EAD57281A973B44B18C36DF6724B' : true,
- '5E03C9E7A51C7F8539BB4B25ABC9ED0CDB47B48D6A07B0C051D38939AAF91782' : true,
- '5E650BBA8E8037D6BBEE78A730F740DDDCDD7EC828120AD912F4BBD72794070C' : true,
- '5EA032BC171418766EB1B1F71A7868FAB9DA3C484A487BB1FE062566DF166002' : true,
- '5F05ACF54EAA38008B650AAA2DBB3722805C793616B1A21B43E1879107254E38' : true,
- '5FB6ECAF5FD5CA42241B12521D7BB6F06B7D804C60C84D7BBA7B7A7543FE754E' : true,
- '5FEA0DFD20247FA12D63859439FF9F4D5D0207D6E1134820CAA9CFE4A1B08FEF' : true,
- '60B7C0E860123DF4BD6CD8EAC6560CAE6E9CE12DEA9B119B2FB90C57DB328EDE' : true,
- '60BDF27D143EA5E065460D76C87F245DF44D9C1D5D818C62832A3B83B9973824' : true,
- '60E9F3B150DCF1BD90562DEDD083FD783E2CA9A982C08BCA2C455F50BF977B98' : true,
- '6129C7157898F2D29FDF04A78AC6730FFB248F7467858C9F3441A5D4D6B88C8D' : true,
- '613E70A1BE3CA6314EDB7C00B2477990271E0C8DE8210EED56ACD391E8CFF28F' : true,
- '618F1FA3F38C857898847A865AE73D87B0071C8DCFD4EBB7E80828B11862151A' : true,
- '61BA185CD2FAB39562813CDCDDFCD75184A1572E2B2B87667728C2EE8596AC65' : true,
- '61C0C838E39FD9CB6B924046875626383C616DC9E106BFB5573C5CD2DF7C8738' : true,
- '61FDD344421DEEB7314FAA2A6C1A5CD97720CB90B48C801EC4AE74C7D88F1E39' : true,
- '62210E1578BEBACCA159EED5A0EEE3192B7FA0C17FA2556A686E28B251D80C60' : true,
- '626042CAC6DE8C95C77C0E732144FCBD63418D72ED04CCB42FCBF260B38B21D5' : true,
- '626D3DAAE3451C750616F520086766043D22C2E2C34F483D6C7EB06E76ABF206' : true,
- '62AD913E74BC37FCF69CB86718E13A47FDF1440C2B18A4241D3EEE7831456160' : true,
- '62B59DE2632C2A03669FF060A2C2047B9A95F49050C64B6BF5A782806AC10E99' : true,
- '62C9A052080F8EBA5E8FEB9615B5CDDFFF1D74F8467653030CB1BA12337EB5D7' : true,
- '63448627F20BDD4F11B278941D82DE56AD3A689CC06064D867FF060FCFE29A49' : true,
- '6345E8D1EC10F5092710B275C7E48D8CD6C5D1885994B18DBDFCB2E5AFB9793B' : true,
- '63A4A98B9778705A9CD9A0F1A40827B0A6C86E2A520DEFFB1AD8F815D760D992' : true,
- '63B7D2C03D1507A80B8617E50895472A3C9E47CA34E8756069378DCEF952CFD3' : true,
- '63E6A22E453B17B4EA3E35C6E39EB315DBB77A237B1BBA9BFB2B3BCF675A63B9' : true,
- '640AD0B7F4803223887EAE106DDD628BED925569AB309C01E1C8B640FF05B2B5' : true,
- '644685FCA2BDCE4C6D4AA3876174676CB961619414083ADA90FE2443CF929D32' : true,
- '64831454483CA9CA55859BBD324F492638DA8179EAAED19EA3CC8E16FCE7A83B' : true,
- '6489A71D718B44D5479D3C5AA2CEE70A2E6738AF25F0288B2BFFEF833280C0C5' : true,
- '648B6539CC321D112EE1762198FAC01AFC8B598E29317833ACFA9C02307F5E72' : true,
- '64D1D9522071A54B43A6C43A759223AEA7AE209FEAB423EA24E3E95FD83BDFCC' : true,
- '64E4359CB75DDA1A17413906C2881931CCBA16E52A52F13F16E65A752C2097A4' : true,
- '651F8FBEC4C5909A0FDC3B8E8D557574FAF01B33981B5B725311B57DEBB47B24' : true,
- '6581498408FD7D10902F7D56704A23B3278D6EE675FBA214F305D43C1B620CE9' : true,
- '65ACF48C5CF24783794CB8D5AFC30737273D3DDF93F62EF803EDCD05650D775F' : true,
- '66795B4CC33E5CF75F1467F1D97528306D8CFD78DCA8D838A11D5A4E6D3F374F' : true,
- '6688912D47D0A49A3BF7EBA09AFCEA36E0D4DDF4BB571B383C134B763B17DF7A' : true,
- '668B926F5EAA59F351B7ABFCBBE5FA17B547B01C5A7D4AE385736CE8FD13359E' : true,
- '66B10F427AD63DB6544E9E20191BDE4F827A7C96F1DB17E01E0B254D67BE282E' : true,
- '66D67EC6407BBAA2F4A0EAF49D81F223332DEAADC96292827CD749DB07A82C02' : true,
- '6750705DF61157E112906D9D3BD36F21696B0DFEC5D6E1CF728A443D76912C57' : true,
- '67DBD139B060C071667F2A45E06C7E159117263D593C95138066C7BA3AD20DF0' : true,
- '67F7903A02481CD91A864899AE21E1D8C7E7D3FFEA34021EDB6F29C3DC9FE9CC' : true,
- '6860622481E0AB0EAD93B771290792279985D4989D072D5C1E376F451FFB1360' : true,
- '686E60A6CA7744B42193C83E73617621EBE2C59C438B7A32FEA9D7DD14F2072F' : true,
- '688CBCC96F65054917A6D042282C3E33BC4B2F7A7F3C2AA0EFA97F31F2FEF21F' : true,
- '68F575FF9F2EE5CBBE2975DB80B0D2E8582B2B5A1624A70EE6470FD562D59E93' : true,
- '692C0A28DE13EBB75674023CC105A5F663CF5C67153225EF1193209E985CB1D4' : true,
- '69643C10B6E53A5667D8BAF683B1D566BB54B001E0588D7B791E648EA5681BBB' : true,
- '69CE183BD9B04AD76F8FEBE25095D92D95888AA7D8735400158CD60B836FCF05' : true,
- '6A7D32C4F099C8D7ECA61CECDFCE82C5D241F33F6A02B3A00D89802D4689DCBC' : true,
- '6AC112C1828538894A1FAC7CECE0ACFEE75658118041513498E880274BD2B7C9' : true,
- '6AD39077DC61A2347F25E34A809107D3F11E18B1E197A88A9A39F5FDBB0A3861' : true,
- '6AEEBBFBD6A2EB3C41164F87A2491C293A66DB518999827273FDEA3F1892ADAD' : true,
- '6B02CD14A3675354A800006220E94D8D4D5F9774D60EC984955FF720D927E529' : true,
- '6B16CAD6D99596442162EEE7113248C0C77EBA7DBE1D3BDC044AB9802337D2CE' : true,
- '6B8153379F9AD865DAA48C0B805430D7B62D6624C4AA9389FBD770A366439995' : true,
- '6BC4B8F5756C6E11852DEAF28C2208733B463931BC5413937F897D4735CC2F01' : true,
- '6BF2234F99577BEF099F5A651C125E660A765202F83A7FF24C82FFC87F87C3FB' : true,
- '6CF13EB678D9631F8E425073339FF5B4FC020969732BBE54ED0D3087FA774303' : true,
- '6D1FC10BB256C71CF8A543B99AE433A55FD8EA467FB11EBAF9ABB24C923B4DBF' : true,
- '6D2E55B7B10EC7E3F82F060350C9BB7DAEED8B6ACB8E79B4B088D9B711A9CC6E' : true,
- '6D4210568EBEADBB8782B6345952223B49407EEF3F8FEAFAE6D14DDB9DCFE710' : true,
- '6D53AA3328CC9AC46F2872113922BC105CC4A5C2B3EB7F45C331A93BBE4ADE3E' : true,
- '6DB177AE67C272A729818F26A5DC8A327236919BDF09E43961204BD9538CB09F' : true,
- '6DC90241CFAD3946A0A53940327E950D8D7248FA5896CFEFB60F543000A0B165' : true,
- '6EAC221C01F1C4E158E51B8AA15965260D186BDF22A579C9CE8D89E787A36FB3' : true,
- '6FCE4CF77E254C2920BE515857DAB1929ECE7638DD8C370C1AF6A374F36517A6' : true,
- '701E5C167D1D2A47E29F6E0EF64D59D978CA3287D20E3590ABF531EEFDDD885F' : true,
- '704172C04EB3CE46ADA086772ABDD4DEE208909ABA10D59D1815E9533107CE5C' : true,
- '707966CCAEC5908E84C5AE646566426234491D2F78CC00BA7C7B9E5F009924B0' : true,
- '70A137BA9CBC1043B06D08AF2800FC09F4D3334ACDC0915124CDC834A77564A1' : true,
- '70DF998D006A8684F543CF929F8223770479451AC680070169CF11B6B409CBD5' : true,
- '711280787458F0E54B0C9294A54270FA83E8CAB29E212ADAF665D7F6345C4DF9' : true,
- '71CBA0C7ADFA0E0688BBE75D856278A477C4041C6F0895AB384BAD02B9D951BA' : true,
- '71F2DAF17AC798022DF73260BCDA153082CE08952CAED20A66A588B46E83000A' : true,
- '721728072AA0815DC7EC109C8737500ECAD862B2003518851C323664A749BB7C' : true,
- '722368B696E375C97556E68FA5D53C3BA7CDCA15B13B72DB9E49090EE7C9C163' : true,
- '7225F14A44AC70458F5C98BD93C0A381A68899F718AF8300C897612E65461827' : true,
- '72950D958C6C1FFDAED4C597635776C7EC60B32CC683D03AF405B023C686FEC0' : true,
- '72F3DB1BB2B0B3D65683F62D927E20C95303A00E8C845E0088E4DACD4F3B19FE' : true,
- '730C9CFC51120B6E5C66F07772ECB96F2933EB184A397BAF90453D2BB43BB600' : true,
- '7334856F73A23C5F0A60FD1EB2DD14EDB444B1B8B62516FFFC38589D1200B09D' : true,
- '73A621FFE0ABD75757F5C92C8EF20E63EC8F4A279A450BACC7E4FA9D75E0EE5A' : true,
- '73C4C95F998FC60D5EAE1283F28C36C63697C481E6B321EE7DC46DAE585B0E11' : true,
- '73D889F527C021A7BB8B363C2467F7499145D97DB7B6E0207D6CB12DFA550903' : true,
- '74395721FEE13356EFDE73462CBBFB2A471B4C95563BCDB979DA57B786D16A88' : true,
- '74711F9774C66CEC41DE4FD32197132B13A40A6758A106DC95BCADB9298A6241' : true,
- '74A9F7B27B38326F64792AAF791E5A5969071CD05C8ECB1E068035AF9AEAF482' : true,
- '757071EF34F3CA907D7D29C6420EC14B6953F433FA03F2049636F55265E456B0' : true,
- '7572D3C2860E9D28159C0337E8DC7C693F307AE0F1F02E0C35E091AC1C1571F6' : true,
- '75893F8249D9326D2316BFA87F7DE3062EA1E00116C921C6876AFF322B636664' : true,
- '75A9264209E9CFFCF8C4D74F1988A6AD0F509269A5DDA3DAEFC0068EDBE6AB26' : true,
- '760650CA663BAF50AB023FB340DC4316998A7E66FE226C3A66E7D31CAACC9330' : true,
- '76180E9A156833EF0B8FA7D3C83404086F9F1141580FEB3710AE5B93B2E819C1' : true,
- '7621A0521A873D9B899C1F5BB52AF07870D8C98B5FF0797383C26A7D151789F6' : true,
- '7644E55E75802D6FF784B75B8D77DCFADDADA23DA2FBF95836FA3CB975C6B982' : true,
- '76498ECB08242DC8AB6DE47C0EF0F87127C2809D2C1E1B8216D6297ED7D791D0' : true,
- '76D1EE820C99B447CE9277881319CD5B5D2BDE8182D5AE5EED8326244CDA6621' : true,
- '770784FC2B1A52F110194800E972006E868F055C52A8BE467F3AD7BCD7E441CC' : true,
- '77C5EFEDC19C242BDC746C5EF4A1DF4117918CBE078CF6DD65FC274DB64CFBAD' : true,
- '780AD07FBA71E98848DABAE3B6B94B292E5959CCC36769683E0213E78B759DEB' : true,
- '7871679EEF661F72EE1CCD043F1B7C597E8F23196B653B42634C37F2B6619B00' : true,
- '7889B1659DAF073B50A3FED9BDD6CA3F3F69E90E22C9EAC126E2F915C476984D' : true,
- '78E4E5B9DC94A09084EF738F43D30114F90F95DDC550D6BC2ED203D722323EE3' : true,
- '78EA89695196A279F7B44D8F1AA15080C91C3BB240F1D1878A88F2B27228D430' : true,
- '79244B0AFBB3B26770A470A4F23555757DC25D3856F56D0096D9F06EB47D5889' : true,
- '792EE0B202E6A45AAA85E918497D9C9F16FEAC99500A7940C0FC812ECC42120C' : true,
- '79506C5663C38F43902B55BE2FFABE0757A806105C2A18473770E9DEE5322E40' : true,
- '7A081DEE8006EF40615953A1EF9BA820BADAA31338157E69660B3EBE7852838C' : true,
- '7A95B01B834A4CFF097B69C8D84488E0843D9C51A8045BF5AF6AC2CEAB65B079' : true,
- '7AE7C2EA08D84EB5EE0F978D061FC9D6DDFB57C1382D5215977205894898E0EF' : true,
- '7B90E5B537B13743AC7B5B9F3EA28B3F5F5E95A6D9F4AA0904DE22858F38C780' : true,
- '7BA22815A242ED9FF3AA2FFD5F121935346190B63E61E0EE4EFC6EAAF76BA6F6' : true,
- '7C63B78CCB8DE59051349EFBA4A9E34EB627F65855F3C754312DCFCDBFDC270C' : true,
- '7C99FBE3E1BF4CE4683186F8BC44BEA34B07919C1542ACDE9420CD75BBF3F388' : true,
- '7D08B399CE7B4D7A6DAD696C24FD870D577ED45A8081D3E1BF34577B6DEC77B9' : true,
- '7D3EF8DEBFDDD39FA7CA90EAC62E660639521686926488A315B10FB2A0005F6A' : true,
- '7D7CB9E4195E89426B889E09DD6EF0018B702EEA4C8E1C5C39DDB538E20CF150' : true,
- '7D817F280F1D664E0C9E717287D6AADB1132D4F3A3E2001B94009119733C9434' : true,
- '7DDD5D1914FD375229088F2E7E2CCC9F557B2E86956356D21E4FAC6B5D5B7EC2' : true,
- '7DFD6433613550E46711F591EB0B0790233460AB951DCCB4B60B61C91C359B83' : true,
- '7E01E1EBA9D9E46D3DEBEC868180199AE64DB3BC878F66066E91CB4C060B55D0' : true,
- '7E0AB095FE17F430AAE0B4AB7490366DF97BADF13AC223D96AF0913D6919BE7D' : true,
- '7E723113D07305D5E9843032E474637331F1567CF33EDD8316059148AA2E3ED8' : true,
- '7EAF183A91E8DA3866531C499039CEF3AEC4F214BEE293F268A28616B67D0474' : true,
- '7F1566D05D1E3A90A9D5D551AEF51D2F1827FC9E82922F2BB32A08CDC5BDEC7F' : true,
- '7F7453584CDB1B6048A5508FD8FE1FB7009FB225E754CA38FDFFC28206BD2640' : true,
- '802B6D5941983A1F76B514028EDEAC33214B4F27AA490345BCE94DF9B1494516' : true,
- '806791E1F1BCA3B3AFECAB7D1EC6FD66C2616C6CF13A3256AF0D53AB0A759BCF' : true,
- '80BB61C435AE010A1BBBC72F9CDD1BA74CCFFAEE4C74E07446ABED3DA2685427' : true,
- '80BCFC1145A7F287ABB29FD26F6FF09F2F9299D43DBFC2214B15BC346D1A7EE5' : true,
- '810C819EF5A6F077751EDAD2FD0E77BDDC9567EA2C27ACDBE677BB3FBE3E4E4A' : true,
- '8117437E2D53CBAF96B03A772D719EA4783D32C4401D6C590BA9F941C52E54FF' : true,
- '8133AEBBA592FF513EB1EA61723A0CEF57A583CDE66794FA9DE2FC0A8F573B54' : true,
- '8179173BEEC9E5175036B790F2CED009213A8FF7D62CDED95DE000BE2B03B068' : true,
- '8253A0516BAE8FA0D24AB03D7E4AF8898FD1EB8333D2925CE515FC3DB6ABC5CC' : true,
- '826F129EED33C26A96D2FA3EA71B7897E065E2A68280A77C03E948C9EAD80945' : true,
- '829124925C3F7AB9329A17C8329D55F04DE8C98994845083D9293F2546CFEED3' : true,
- '82D1AEF2AFC46271D18C5FE50811DF9A5EAB812156C2FE6F531A34FD529E75A9' : true,
- '82F25208D7357EE223C6715E802CD0F8D019E3004DEFD76A90BFAB18D2DF07CE' : true,
- '836E748E62C7EF083DEC6A11521F79E4F2EFA40CE0EFCDBE43CF3228F905CE14' : true,
- '844B51F620215D6845EB82700563692BDD5EE144D097D24FFA8D99C8FB5FCF28' : true,
- '848E7A1C6E45D88BF111E43067FCF92F6F17BEE0B52C99381668797B108FE80A' : true,
- '84A093B67AC79FA09CC2E40B54BE4027DE363B86EDF64B623BC346188B877ACF' : true,
- '84A8C623C4304D57CE03893ACBF4E51FC9975C58658B89127508E5C33BE992A7' : true,
- '84B91F7D19D03A64195173E28A98C6A24AD166106B5AC14B36A404C45608B2D6' : true,
- '8540F78EF676D50879CFF30B3CAFCDCDB1287CE9472D0E39AD221AC0B049BF5C' : true,
- '8544A63131F49B49F2802FA5FFB5BB62D726E1A5972F668781040E2342770042' : true,
- '8565CBCC3E3484929C4C2D7408530788E83FF8CE2B8502125176AA2F89D3C350' : true,
- '856D54922C6DB9C5747A1EE5ADB099907C63E0BB928B1D00BEFBF81E6B0E83A6' : true,
- '857EB3AE3D76F7A86260D7DF2583D65053D7DBC30558CF41078A51A841A15408' : true,
- '85CFBF3F71BABAFF31DBBAE3EE6615A269748572AACEC462E501B017A4B58C2F' : true,
- '8620FBF8F4B3D858B8AE9A6EF3423068026CEAD38ED1B70B12E65A66EBE62845' : true,
- '8632291EE6C74182159207F88A43B60EDD3715D9B23CB51B878C7DFA413AEBAC' : true,
- '878C8800E459A4D4B9989B0DB92C628E8A13574E71B3324E50484F70555B840C' : true,
- '878F9A1345B5F3F76831E0AA2CEC43E51FD88455FD70FF0C671DDB8D8646BECF' : true,
- '87C002662AAAB5BE7B6A7CF4B1CE9036E3A2A70A0A3CD80F64005C889ECCDDBE' : true,
- '8858520A8D4E5C88D777C33963CC7F43E796B555E7FC573681B59DCFAFB43EFA' : true,
- '88A9F13EF3721A05CD57C6E13E4B2D6F699C00312E92C24E04D86990177BFD3D' : true,
- '88C3951EA08F6218D53C848FD0745408A54B8588AD3728B9634AFF9280055838' : true,
- '88D68B8F6C5B10D7E9413E6B62A450E74806DA84C0EB558EE9E98E2BDEDD16E7' : true,
- '891419933107B0EC0222BF502DB271240F352C825D2E32776842C40D13C2F8C1' : true,
- '8998929C795E1C1A4D769B9E0FB886892FBA9D8F1542DD894E15E12530424BCC' : true,
- '8A0A728D550D96C56A17DA2A0A97A6A9CAF22D5AEC3BA7A6434C51FDBF698785' : true,
- '8A0D973D9BC8BA74619B1D55816F7931E1114D8A72901D7AA3966A89D96A0AD3' : true,
- '8AA440E22415685F4A009BA8F14D9B8251614D78159C926A712542B0E9FCA143' : true,
- '8ADE74E6435437386C63E8C22DBF3BF0533A4B49E6668F5F15824AB58AF721D0' : true,
- '8B1225A29F8C7203B6154A99814B028517B03B3D4B5A3E25239EC91650206C0D' : true,
- '8B41B56DC76B41CBEF93FD4F1F74525CF5B11723140CB81A7DD29AA3D95703BD' : true,
- '8B52AE402628DBFA70BFCE1B172D676422D5E720F7E3AE2E7B195D4FB4E3F285' : true,
- '8B83806B610FF233FDE11E892A0023140E5CAD1500847E29F5E5C6CC21BF33C5' : true,
- '8BD1BB8CD29EBAEB36A58AFE2BA070CBB92EC003064B71AEC49E812E39C2874E' : true,
- '8BD3D0A64D73FCD8450DF0224F56F2B44F88D2B89B94EBBA3B5CB7E905DFCB74' : true,
- '8BF51CFA32BD64F3D54AF63295B5F890FF439D7FDF854D43F25F4D72E396021F' : true,
- '8C2DDBA5CA9E4CF79937A5A3AFCA79F371B6F235B37308EB53ADF12C319A7EC9' : true,
- '8C4AA99089DE2B772FA47DE3D9901FE175AA49A46B9D056BD8211B53848276AF' : true,
- '8C6DDA18A4CB339717E1321FBFDC9A3ACC52F2FEF6FB453EA389A2B43FFFC63C' : true,
- '8C742B891F670721F4F8E1D4DADEC74C9E9256E0C7D132578973823FE27C3A33' : true,
- '8C959CC99EA9E228577582BB36DBC373836E4D91CDD4FA3C89B20A289B11CD23' : true,
- '8D0394524B030A612B174B7F2FA75A535F6DE732E9317A394BA9286CD3F42F18' : true,
- '8D0CF6F0B227BE9394DA0DADABAB81A44900D104A915645ABF030220F3AE187C' : true,
- '8D1EBA5F6A209614B68AF63D583392DF844036E8BE335440D0740396366FFC4C' : true,
- '8D2E6A0020C2C53A264A392C371146ACBC83A8966438387CA289807BB5583C15' : true,
- '8DD64FF5EE29EAEA20DFFB1B446F1441CD291260939D41C7784AF872CDD60FAD' : true,
- '8E8FBD2654D291051FC080C47960747B4191C58D85765C77CAC1C239FF3DDD1C' : true,
- '8EB48C6A21AF524F446D3F9F4BBB78C5CCA368441B9858FA87DD6664D603AC2F' : true,
- '8F31ABA69837A432E88579184085B0AE867412379E04666EF880DE539CB03257' : true,
- '8F8515B35B665B69D0DB9661EAE9FF0829B71CF4AFEB3BBF988BEE73985F5D3B' : true,
- '8F9608587BFDD90423D96C82A5338A09203663970E435AF25EE4079922B60E21' : true,
- '8FA478A1DE3999FD32313D519AB1BF7DA3C485C1EC90176E34F82CA74EE170B6' : true,
- '8FA49556B9E8C97F768F94A3D2653ED2E3E927D31EC7A916D0744BFF07B5E685' : true,
- '90C2F31A64343BA4CBEEAC90A43FCBDB46932CC21CC58095FB6D6CDA7B33F362' : true,
- '91490F346E9CE34F77126105D7CB01AD7C58E0891B398289095613F1D1162F6C' : true,
- '91728081A414570C9CFDDB6A7F70CE56010D44F4E165762B73F4B05436D85351' : true,
- '918B02B75417DE289310E10FC77AF7041D1F380F02939D64F063776F121AD61E' : true,
- '91EE28B14AB2C7571BE6CDE2D75FD4C05C960FB033DA819EDD463D5D3C494591' : true,
- '92059CF4A0175D14DDA7D7EC71DFC76A7A91A75F4B9BD886E5595413920885FC' : true,
- '922D7192C60ECCB0A2367C8E7897C8289C2CD7010B98CF82A964ACA2B56D8BF7' : true,
- '9244CDCD0DED69F9AECD82846D0467062DDA89CD32D8174CD69F9DE602AED97E' : true,
- '9295435D6B38A570B2F537814147422BC442A7E39E1AA307550DDEF0AB93C3DC' : true,
- '92E91A15A0542407788FCD78EF9287724B2B25A27F703C9FBF2F5BEE709A68F3' : true,
- '92FD30739B92B5509945785B19CA286449968DDF5EF7B8F44C6C8556711DD3B5' : true,
- '93671EC41A75DADCAD2454D2D9951DA643ADD6C899C6F4EDF6E8806217949732' : true,
- '9386153F7472D5A4E3218FC3353ECF45BE32905B7FDA3D7882C4FFE6CF966AA3' : true,
- '93DCEAA3D67BD8992097C446EECE4A6A02DCF89EAB0008EFAE7D0C9BE26B7C00' : true,
- '9446A5F64DFA26478AFBF6D0F3A0773ACDD46F1A4F7691A72BF24A58A411B340' : true,
- '94CE12FB5F69E4273C8F813ED37ECB954AD667BC81C4E37DD27A40C291DDB12E' : true,
- '951A1AEC1EFF82FA3366E4569838AC37BCE65385B88CF81B0D96B6A552258690' : true,
- '956DE14452F6966BDC2C3CFE4874878D446083AE81BCD83C705B8E757FA0A390' : true,
- '95A4DD514D4B5F9B29118B3CE20FD8D4996F40424D7D64BF678A252262608C70' : true,
- '95A80082CCA2E52DFF16CA0E49B9FFE32F7ECB93770D20913605BBD47A2C65A6' : true,
- '9658D54C28C27DD6E9B79098D7D86C1EA32215492E8AE9DB225E3410EEBC39CE' : true,
- '9668363E5A4509F63E66C774CC7374E8D7654D0D63E833131665F65BB0116D90' : true,
- '96B78900F165A1CA3843F3036950C7A5CB299CFA98F7A1BA6950AADB5DC1459A' : true,
- '96ED7F4947B39E44EDCEEA05043F9B286C35BFA932C02D88A00B5338BE7829D5' : true,
- '973CA0AA2F294AE5068B75F5562CDBD51AE5ABD2E25C8F20CE38572587589799' : true,
- '976ECEBA965B747F498F8E4D26E3BABEFC48A6DD2645210168D7D82BB97C15C5' : true,
- '977C77EDC0AE3D98F2FE87B8C309DACC9306DC575D2D8FC358973DC716EAD715' : true,
- '9787C483E07B0D1A0251A93D9F86495C6E39D25375C395E9939145D6C1E818D6' : true,
- '979F95AFF9D71DE4B8ECE178862627DE62E0E24E5ABDA2E8A20E5177E8F428D2' : true,
- '983120089E357F1255EAA175207B7DB3462CC8481C2D4F8150B5C4FB93E274C7' : true,
- '9874E435B3A12419DA88FE7AE98EEFA9DE47D098DC95AA6204B499202AB1A0CB' : true,
- '995FB24A5192D81E32B762C20EA1298A1C67820CC360914FCCE1613A12CEF526' : true,
- '99A4816C0BCDE615242EF4FCB3CD6E84EC60952E9F97E248424080DAD5D0629F' : true,
- '99BD9F4C25AF74058C9E443467C9FBA76EB37661CBEF5A1E1244D8077200A250' : true,
- '99DDDA7A8D6D222C3111DDF5E85A45261AE9A7CAE2972567996A7729D0FD6E68' : true,
- '99E2609E0CDCFD36015CC659568D5C5B01CE4F7FA0C5671738D525FD8C518B44' : true,
- '99E437DA5156E02DE52D0D95AFDE0FDBAF8F626F4D3BAD2FFFE7F4C75D76BD60' : true,
- '9A01E5759613554A5FAEB7E8889F18EEE16568073CCEDEFA0485F01969535C43' : true,
- '9A36248A6C3142FB6AE62E262E0F519CD609A0207BCB6891443BD5AA5C02AEDF' : true,
- '9A9B087A4581C1FE71B3F4D7C041E93D4EC1093B01AF3ED96548AB93254EF65A' : true,
- '9AC79E2916EDA1EB936B7FC6779F139ACC665C33F143340C5CE540B69F2E9F18' : true,
- '9ADA51307C3FA225DB6F8E1FA3A218E477F775FA3D3DBE839232E3C385310902' : true,
- '9AF3A66EB67ED022E3F99B1E810BA8C0A110F83F0BF250914AA5F1F0989B2196' : true,
- '9B128E182D224AE31F63FA92892A8A322AE42BF2D4723D62F5A6744973C82F6C' : true,
- '9B37ABC1012C67357E1B828C3F70EF7584EA128D20968DA23969B0BE939CB83B' : true,
- '9B80DD5C98B0F0A7AE343DBB896DBCE45DA52EB4E31BE057287A2A738D9CE3D6' : true,
- '9B8B430BCC7FFDD28FA85A1B18690D76DE8F18DE340656F63BD1472816A3C83E' : true,
- '9B8E5BB6E9E655E4547D6782EE9018C8BE585F7BF89555A920C9157DCC15D0C1' : true,
- '9BAE8B30BBFA182D0BC3DCE5BADF78381980EE69F15884A0B93F291EA09A7EB9' : true,
- '9BEB9D4CF88A648ACC9CFFA48A687370D76E9F8188AB3BD638D9BFABD2D6AB24' : true,
- '9C0F47FE70B9E636409CD37362B052B40B3CF765DFE80E71D999E7EB1AE1D4C2' : true,
- '9C5435D416BDB4EAE642E2A66B8382BC848B362E3937069725DEFD9282772612' : true,
- '9C7DCBE2DF8C0BC947A09C39B1B6CD2EE137D366554F8CB46AFD80C5FA9C3B81' : true,
- '9CFB4802809B54253FD655390678454D0AFFE4E5B0239AF6E4D5CFD90FEF6931' : true,
- '9D28BF964F6C820DD26D42FFC18689C1D2FD43F4C4DA9B35F11CEB8FA24F2073' : true,
- '9D98952A99B9FF1B2B7A86D21F50E311B3147CD9475830A856A4C63798B05630' : true,
- '9E418F784C18C79930946ED9BC408D8E2F694BE1E3DBAE4BB20917F8E1B277A7' : true,
- '9E492AEE3B5838FF2E4BDA9FF98D73B48CA846FBD2AEEDA19FB885A489F58DF1' : true,
- '9EBA1808D31F89FD26CA580E6FD37B15D0261A807154FBAF11A7DA4B0C9A5E06' : true,
- '9FB66B76C9B0AB6ED5DA3188A3DC6FCBC369AB273DCA99468C1EE4604A1E9E99' : true,
- 'A0212D4EE874832A0202ECD1349ED750083B1D238DB6E30120702BE1256F53D8' : true,
- 'A03D7CE2FA040738CCFEF1F20872DDC1E321745B2C34095822A51B3BDC07D9F5' : true,
- 'A03F32B0A7677B8D7102BCE24F121EE6CC503FF173C43CDD6B914BC69D954ACA' : true,
- 'A06E313693C42005CB7B7AE33A96E3ABD66E05A57012B6294671FBBEF4A84AAC' : true,
- 'A08110BB7D0D5F694D791F82071E44B4C968D4990C73A402B25E0E0ACA5EA6E7' : true,
- 'A0B4E9AFEFA1B8966355614B201506B13CC213060D2661264491601F7FAD8269' : true,
- 'A0B9ADCD27CD63E8842BAE80188453C09DEC27270C32748A4EC2508372AD36A5' : true,
- 'A13EAF82F0814BE5FA12BFB4D2FFBB75FC6375DF19E16B8490D140CFEB54AEE3' : true,
- 'A1504C131B0FE702B64AA259B901DA2D9B2AE9D85AADE02F1528C1147F98E535' : true,
- 'A15455BAF823A9C2A7B971C6F11D799D4C6E5B59D274150AE67294035C94ADC0' : true,
- 'A15BB49CD56693B9881AD43F6366FD2966AF816643BB107E8A249E07227F67EA' : true,
- 'A16BC03AE3E35E7C39B45D339A22BEB39CEC134D6B9CCA289E873F91A384DCBF' : true,
- 'A19514A23AD3729EF69553D8293E9693528EC67609464D4EA0A96CEF8E9C3E05' : true,
- 'A219A198FA5CE79A2ADBC1EAB8BE34F086699B9A16F88DD2F823325F7481FA8D' : true,
- 'A277B893194AE7687EBBCFA344178B3578AA6228D2B430BBE2FC8D5EAEE43135' : true,
- 'A278FEDD023B6A1BE29917353E38320B8D8EBED9ADB0F88A8D00434D9B1A0851' : true,
- 'A28337D306B9F107098D473AF3F34D8C14DCCBF62D725D5F8EEAE11BAAC558B0' : true,
- 'A29725F7446E6A2AD03DF0B7D77B72F9CF0249733B42F48DA80AE41C6B206C49' : true,
- 'A2C85895E192F69BFF3BD6CE420B8C84A6FC87B3A999F84701F0230887DD3344' : true,
- 'A300C56C8CB909C4F6ABAD6A7FCACC5E621BE17D5209717912B3F3BF2F7D6CAF' : true,
- 'A32A8197E25FF03AC02B1548EC597DC93B2F3376E971B143538542A6A2212AA1' : true,
- 'A32C868E44827044CE85B05E7E694717A5D3A7F8B9D28C41B7770DCD84F81218' : true,
- 'A334A1C1BCBBE82C131CA48858CC1D56495D2CE2B598E5C6E81672D7E9FF9FC7' : true,
- 'A33C924A4181FC26CCE183DF2C30AD332CF6D6A94626E2B6455CEF77560438F4' : true,
- 'A35426EFDAE7DC04D5F7926E254D5CEA23D4CAC5371D577ADA3A4AF828766F1F' : true,
- 'A369DC916C6CA5851F181C38EAAFA733310F462384651762FDA4B2CFBFFF07D6' : true,
- 'A37B9444FE3BB0FB2EC43F2677926EF458D0ED4F0688FEA6443A5F243F10C2AB' : true,
- 'A41920689CEE150BF8CDA57D32B36D32985FE08AD4F0E52D150D1CE5C7096810' : true,
- 'A42FFF1190531FF187F05767CF5029A8CD637C72A8AFD222118463200A27FB84' : true,
- 'A432841B8E8CE4F3B7992A740AB014B3D78ACD930DA113753E8D2E2E34A5358C' : true,
- 'A46D4265BD5168CB36068465327371B2B9E2ACFBA66E368A8B90CF77A251ED09' : true,
- 'A61D1D1BF3A48836E418525F674E32CB457F4C74ECF525BC18A3035A26DB1CBE' : true,
- 'A6436C7837EB4F0FD89A1F3ECE954BCDC0D76E3817AD0289B64A22B78B071D7E' : true,
- 'A686BB3EA8129BEA261D5B99357BDD2BC22DE15F0140AFA2D7CA3ADBCB64DE14' : true,
- 'A696B059AC99AA5CAF081FE9DE0F113EF0032A9F799A92663985EA5939B6F30B' : true,
- 'A6B23EA2BFF90B8406D914D1D5B5B11D84F759C88B9AFAF64B77B2DCE08D28F4' : true,
- 'A7636BE0A08F56D7F05A8D69AF0B7199FA7C05AAC123DCE71AB57C538A4D910A' : true,
- 'A828D902865C9F63FCD670F5752ADB8F8D95C6DD434F33962466496EB8D6BB3C' : true,
- 'A82D480B6360B97B8FA507BD461FA4E2D6B73BDF171723C707FDBFD7C9C2C144' : true,
- 'A84DC1DB143EEE938A45743268683770BA0FB2EE69A4EB4B131841555CF1E124' : true,
- 'A8FFD3DCAC35478A6187DB3E317D7A9BA8D9823BDDA70440B8FCD5D83F49B836' : true,
- 'A90478E1DFC0653194083700E5101CB3B58FF56E9E68ECF36E1D970522A60681' : true,
- 'A9869713F6E5332E3F4902E82E81EACF34994042C411A28C8AAC116131EE90E9' : true,
- 'A9913780644EF0A55C80B8BBFFA76A7453DF7F9FC04E9BB09FB9434240D03961' : true,
- 'A9C3D776062E86182D7BFAD9005B716E1189EBD051D477078341EBA83F602DC7' : true,
- 'AA0F48D748A88A3DF4392B0AF891FB99981D3D66D213B261AF14863E44F66870' : true,
- 'AA33D12B28CCA921C5DAB6E8055B0F162ED6B6B9F92D85F93749619165B1D3A2' : true,
- 'AA4FC2B4CCD9E52767C35AA8321783EDF85CD1F2F631BE5606C9B35C88486D54' : true,
- 'AA6A6EB3A263EC4DD20257BAD1C1A94F80FD17E51BB03DF1BF0332AF48FDA5EF' : true,
- 'AA70F6E381B7B7BE508E8D5EB062186FB323FE00A75B264F43B771B731FE96AB' : true,
- 'AAA0B610FC8267716C7703C164E8E8A47B0DB68F821405F83AFBF5F4D7BB5219' : true,
- 'AB33CA8B659481B0120C5A227487E4F99D28106362B530D054FD812F7278CA51' : true,
- 'AB3975DCF7B531638F8E8EE570E416890F6E1FA4DFB66CD2EA62E81F6CB19383' : true,
- 'ABEAC0745A8B282D5BB1DB3044B94C07D11F414A514894CCE62C067DF99382A5' : true,
- 'ABF22A6F97015839A27CBED234E40E5BC875A95E81F4485ABC66FF6D35E38E2C' : true,
- 'AC1199A88C3BB6564557B6BA422B776E8032D9457EE1099D0BD3E53DC44F73F5' : true,
- 'AC33C7B064D8FD9A0E5A00BC70581133E949AA0E61209B55010E310791339D4A' : true,
- 'AC3DBED034C44698984D68EA44B0B3D74C0DE3B7615C3240A71C1709958DC3BF' : true,
- 'AC72106DE06D4C1A17E641546E6DC5C53A1F48FCED34B9BD09368429F828CD70' : true,
- 'ACD1D0DF8BE51A80520D345BB16B04745BCBB48B01D936B018FFDA71981F817C' : true,
- 'AD0C2E82F0B607A9B4D0571DF0302FF442E2B99ECE91C18E22C416B46B67E4F7' : true,
- 'AD56E6AD659C808689220F5959DECE86001E37EEB88F452E2111BBAD634B4AFC' : true,
- 'AD5A935C6684CDB2459FA1D67250E8F9B6A6CB6455BC628750F9633FCF6EBF62' : true,
- 'AE3359DA4CEE82D978C3C7B4954AD6E0A80E53D1CEDB3A6262996F9CA0B77D83' : true,
- 'AE51B75FD36BE0B6CF478F2441E57E91C216179A93BC05E35983D5FCD582CA91' : true,
- 'AE7D10798CDAEF50F7599FB03394DE7DED48C3054CE987479DB018E789E3718C' : true,
- 'AEA0E3A8AC6F70B681BDEFB28D9F156116F80230149D8E5C9DE76E9062EC015B' : true,
- 'AEDE30ABFD76FFEFF77B437F8862FF677913239CB0DE0360FF93EDA6B515F731' : true,
- 'AF6F25BC29AA257FB80826165B3AA5BECB2CEF777817998D0619544F02FAF897' : true,
- 'AFBAAD26120F25FACFB7E1ABAD16A58455814B1A46DA986FCD04330A88DC1502' : true,
- 'AFDCE2C9BDE084811D64F5408E8AF94945CFB9F7FC69C9A27C8EE39102858DD3' : true,
- 'AFE6418D301202651844A84CC8B19A56C479D627DE922366E532643D995470A9' : true,
- 'B040095E5483E488179D07D81A9C14C6CE026480DBA570A6D16D75A7414D7499' : true,
- 'B05633EABB92254800392A31FA1627F077F2C91B29D82CF1EB1D507EC7D44038' : true,
- 'B0A3CC901A3D58371289521F9345843F7ADEA438660729BE9B7B520DDB0BB965' : true,
- 'B145A895F26B09540185848A600F7F58C0B03740C17B61A1B43BDC652740B80B' : true,
- 'B19BEC326EB5F611BA8CE10410932955840A0818BFD2C1C690BC1C06C63A686F' : true,
- 'B1B58B7EEBC1947CB840FC4C2713D0DDB23DEBC75E58DB15610AB4EA9A1DE1C3' : true,
- 'B1BEE5F876D9695E23EBE9D0BF32D0DB4D05096C004A073487C5B3FA26719FCB' : true,
- 'B1D9B3EE2512A48A8E703E2D2263EEB4B0A3D24963F5165DB3719CD4750D2986' : true,
- 'B1EA0EB5DC9C9766C903870A4E9DD90C92C8780189ACCADDD9012E1D9911591B' : true,
- 'B2618AD6AE584F2CDCEC050ECB0FCE8E5BF0E9E978AFE692E4A1BCB8B7D03044' : true,
- 'B278FB3D58DC99E1CA192EEC63A0F34F9EB8294A23EF98C73F7C5F52A5C86FE4' : true,
- 'B295FDC9D7462488EBD4E5FA8E5B062FE5E2D0432C6A02B99F4CAD1F9BE6D0BB' : true,
- 'B29A6DB4686379EB52C1D8F249A74FA55A1DD9F2162B0B3E0683912C1E942437' : true,
- 'B2CB5A2A69339A575A4198D5B76822E6A0F90871A45C8348F2A060CEE67EC98D' : true,
- 'B31C07387E56AA457F17CA3D3A4C485683253CF387E6DCE37469B6A8E51CBF29' : true,
- 'B3251BB9A1B4F219400E69789FB08CA2BBA396C6D2FD3C4B69F4B7E1C0DDB615' : true,
- 'B33419AF991DF06128CC6A1EF6CAD190F68C1903CFB16B5346D0653C9C5139CA' : true,
- 'B3381C627EFBEF5DF3BCC9DB71A9B6E4C0A4F3114F7E7408A356FB33FBA5D20B' : true,
- 'B36D72C8B1F436DA49520421FC0A2869A9952DA405DA5E29EC3A1919453DD6F5' : true,
- 'B38307BF753F924511125E6FE9542C79A8541FCC780FF6905BA237A4C7FCBB13' : true,
- 'B3B278DD571DDC491FD26D3B0942C78EC4A1AE3D9A5D07C1E317CE901E6B8979' : true,
- 'B4130785116E5A84BF7B191696B213BA8877228388B18C2DA38DCB9EE14AC8CA' : true,
- 'B458C6F566E833CA5856703868BF09531CCC61D32AAB1BE65808DEEEC56EEF25' : true,
- 'B478303C0A26FF8A262C29BA3A9683FFC4CF075735E637F6A958640C5EC33669' : true,
- 'B49A2871E348639F681896FB62D6535C945182A3524297258EE2E356D6D5B3A0' : true,
- 'B4C49BF02ECA8D4E0648B386A408C377ED9A9E8E3DFEAC1D7904D3D14C5E2F76' : true,
- 'B4C5319F6F6A80B60C2A5A715FB1444F974024960339D49E0301E7F5A530595B' : true,
- 'B50AADEEA7AEA0CC344AFC4BDC81C75292E1F52374DC4E405CA9376CBA5594BF' : true,
- 'B54B1776D34DF92E8E090FBF0C927D9852E6F18F98E6F306AE0369229A4AE2E6' : true,
- 'B5A37CEF1BF2C02B97F06094BA1FC88C650D4F46C43091914D5BC9CC1836A0D1' : true,
- 'B5E58034813A6D2A70A162E5C9469EA7D31FE15F7478564E5698A388F201A646' : true,
- 'B5F50267B0042B154B8529FCD98F5E01C986F7D23628B49B63011A3C90398CEC' : true,
- 'B613D69F10DE096E664C3B4AA083E0BC9F50A98D0F9B682C496FDABB2E4AC9D2' : true,
- 'B663B6C8C60A5969BEE4F6844813AAB8945EE2CE2253CFBA67500B991CD8A07F' : true,
- 'B6B0AB34677500F9A39F33BFB229A8B211E9A75506BC0D4E894DA99804B40603' : true,
- 'B72804ECFF97803B8A40A2FEB3686B4CC1918E9605AA9EA4775441E762D73687' : true,
- 'B75601AB7AE44FB2C77FF1E9C6FBC4B4D9ECB548009BF40C46CDDBBA8C0FE493' : true,
- 'B7EC03174DAD602E897345B072749AA86CAF05151062989E183C3039DE25569D' : true,
- 'B8845702F28C3AF9B35D8B5F1DFFFA014CE411CF592B18395F700CD8B937F3B9' : true,
- 'B89D04CAFB7A2D049F425329570E4582ACDFC0B92F54A8709716A3001377887B' : true,
- 'B902076C4F3E4FC9D45AE90E5AF637247D3A4566DBA2D6DAB15364828CF7BCD3' : true,
- 'B93093DB93D5FE8D16B007F9E40D627BB7B78D617879EC6C4F8528F4B21BDD6F' : true,
- 'B9891F4ABEA7FE5802FA2C07E596905422C39B16E36612B37FFABB81F49A0BCA' : true,
- 'B9B8984BD73419077A912955DEF673CCB572907E2C494256D627DCCAF86226A0' : true,
- 'B9EF83009F5C8B4C3A0C1B8EB263B4AADA87D4D2263887F8AFCA40FD4A7F78CE' : true,
- 'B9F8D7E05743BCE5E58CA2A0CDE89E7E1A9397417F75813B492785D72D4F8510' : true,
- 'BA43FBF51015CAA4D822D17A43F4DFB32561617B62E711D921112F12B76F9E43' : true,
- 'BA5BE146EA09B76F106B28AC62830E5240D1B7DC43BAD171EECC9998B1718E28' : true,
- 'BA8089CC9A0F25A27251DAD14E47714A331C35ACCE2EDFCC51CD73EFA83E2EB4' : true,
- 'BAFBC5503CBB29FE4D094BB0B0D04B22852E9120DD54D34D9247A4E570FD458B' : true,
- 'BB3C208314AFEC26DCB183A0E4DA2C1169F9CC435F1EDB38C349AD97B2C3F6B9' : true,
- 'BB998A2EEB4ED3C4251EB69296AE91EAE7360B0CBAF690FD250C38A710ACB38A' : true,
- 'BC0C5DBC1020476F067127D89E5C9A2AA88F141312919D7C0BF1B964D4820FF7' : true,
- 'BC86367AF49A238438C89460780C94DE2C1E49021437B3DFC590A63F46332888' : true,
- 'BC9B66EC1AF4106896624836D64B109922DA4163B83288E2131FD9A012CC95AC' : true,
- 'BCCC1893C98C4BD177A414C7B3D5EBD74893F964FB9A62B96B48A84F1FE64B53' : true,
- 'BCEAEC2D8B8C18B58BD320D77850EC38285F419ACA8A9E939DAE7DFDF26696D0' : true,
- 'BD273332A459B8980589FD5B8D03967EA78809CFB4F77AF25F578EA77CE9C785' : true,
- 'BD4309D792EBF40F5962B65405970EC2ACC7ED1109A1F5FEB486C84327FF6D46' : true,
- 'BDB42DE005453117D2B60263504B9B58E9AB64B57A7385279CA0323D7246F02A' : true,
- 'BE6E70EB169369668EF9523107E95867B1B9C0320C750180303720B35CF09798' : true,
- 'BED1A9D1A4414F4D465F04F9D8C8EC331F89388E19419D0371D0D177FA60287C' : true,
- 'BEEA29655F2F0DE938C7460012B5265BDF623C09F11529CDC33A4B6BEAF96616' : true,
- 'BEEB38B82A906102D7CD92E5FD98661DAB5D3C9B7DCA9DE3533565EA9607C5EA' : true,
- 'BF61A5AF1BAF57E17B092D5A833B4C9A392BDC7529676D4C7248816F00CDA5EB' : true,
- 'BF7EAFFAA2647F47D816A83ADD1D7579F0CDDA690CBA00F75BC6ABD564987346' : true,
- 'C0144D1B67F2AB403DD08B73E5F1772F050E9713D8F2FD98BE999FCEE51D2792' : true,
- 'C03976BCBA4A9A4ADD099CE8F878A6DFF9B066179EC7DCF932EC4AA737FE415A' : true,
- 'C0AB8B4E884A20E51AB9325567115F185D18654803E08E2C2C6A4632D7ACC2D0' : true,
- 'C0CDB9DCBD1FC873712C871C230C327A9E53E6D78FBD0E5CE1ABED5DA0D1C7D2' : true,
- 'C1726BABAC393C02850032B1C43B095C3805E1DEB1FBB2CD8C76E533AFA80484' : true,
- 'C1EB50953EE0D16410A5DDFD97F5C05060B39F2902807F139EF6B015D0C66729' : true,
- 'C2118D84846AAB7DE521B0379672EC639CFD745D82E3D504EF68CA723725C5F6' : true,
- 'C2295D7C0FD4FC4DC7681FAF3CE851F6B416405554781C77FC8212DA169C258D' : true,
- 'C2C9A263D5F88D7064870FD13AB8633A10CD97E8281F0ECC49C2C1C3F54327A6' : true,
- 'C31135D0EE5E0B74D6A39E1FC67E9DB5CEAAE9F1D15338359CE02643C198634F' : true,
- 'C33DB47CE54F64CE33394E20A96D122EFB6F8DAB2584CF26120D8A8C5C380245' : true,
- 'C34069193CBFC866E03EB745416B50B25BBCAA00B5DE50D1D62D3365749CEDE4' : true,
- 'C34CDEA10E72069587970C7033095864B6F069B6637C6263A1E7A7A5187923BB' : true,
- 'C391E32BB11DD8F6F13BF71E0B9CE225364A50006E3F91147EDE39D2AA6E70E0' : true,
- 'C3DCE474FB44F22E6497A1FCE2C45DEE167853134C6F1C21C13F1707B0BC7FBC' : true,
- 'C4BDB4AF6E9CEE6017D3FB7ADD286E4B6348088E14D994CF698095DC86C939EB' : true,
- 'C51ADC8D1B7014B4B9DB3EE230C67BF6F164956C390D41E5F8415977D9D9491E' : true,
- 'C58563CE93B0DF900E0681376244F32977F577D130320226D3BD9CF82863402E' : true,
- 'C58F0FF2DF810FAC8EA095F349A2E6D7E0D9C09D6FBE7D45895408530E1C75F4' : true,
- 'C591A346116A065185360B973A875B0329B48D924E15BE8D4FC4C0B849182732' : true,
- 'C689F3B9238DB156A7D563E76DF45FCA607B4B5F6CD62BDDC1AD1AC720E67952' : true,
- 'C6B197D2663DD850504C900569A800D914A5C99FD7E0DC7C2424A063B6C42CE5' : true,
- 'C6D78C940B53FE313A3DB674498E62C0B10E4C63B2D5E2A84D437BEE64A3F4F1' : true,
- 'C6F63ACDAA452E008A1DCC711CAD36D00AFE55F958F2CC82A139BB53E27D11EB' : true,
- 'C6F893D20A417841D7584A029E6E6A2A44B044D858ADFBAD4B11F35B7199309A' : true,
- 'C700D31BDB3076006337BC249FF7CDFDFBB8A3677F206CB475E7807FE6FBE286' : true,
- 'C71294A0124420512711C918C36F77192D2B45CDF8C99824B4BC862D0B31C3B0' : true,
- 'C74B4D9C0A7CB22F6F7B60BD4CEF94A34820E3A0419CA5CCA3CF187612693FAD' : true,
- 'C77AF2D81D578D009F9859CDEFD2E19A5B3DFA98FCE909C353E235D650DB514F' : true,
- 'C82AE26EBA1954BC778047DF9684F330C424E9FF778033485305AE0C87E57D68' : true,
- 'C84E5F64496198370D4E53DD6FD1828388E878759375F498A8670C035275D6C1' : true,
- 'C936FEC68191D7AF75334834906C8CFB18F91FD53BDE7C2F0B2ACF8100ED3855' : true,
- 'C9462B9099A574DBBB9E2BB9B87C4AEA825DA388EE8153AB74414555420AA6DC' : true,
- 'C959CD326D9F3AA21FDEDD42A5AF0B7A2FAA5E9B92907654F29F1ACDC691DBE6' : true,
- 'C9D7767021698AB5CFE3F43AB281F424E1515A52A0868C8752018CB292DE3190' : true,
- 'CA157632863D3E7B499F141741724FA84DBA48AEB51B04A53A9D3DFEA7F70BF1' : true,
- 'CA353A661EFF3C6EA9C66AA7585C19EDCD1C00085C06BB9B0DA2DA78C84D8CB2' : true,
- 'CA400A13D999554CB3EE03F1F12F7E578ED5C52CBCAF9748124E3402052F921E' : true,
- 'CA46DA728E76E97AD214DBB6AC9CB1EA2DC87202C88C35E87CE574FC1F2E0438' : true,
- 'CA529AC5A7489D57CEC2D6BA5881213C5A163409BD6946558DACFE899A977009' : true,
- 'CA846077B68DCA99AE30BAC33929143E856784B64E70098CBC7FF5BBD85C824B' : true,
- 'CAAF21212D1AFB10BA4844150A49541967BC1C9879801E43064429A632DFD941' : true,
- 'CAB896F9E8F1D4C0BBF05F4A48DEC534FB7A2E9E21D3C3B36F72D50131917243' : true,
- 'CAF98B60B1CE36971AD2DA67A18E72E53345EFCA16382827BD1C2022D009E751' : true,
- 'CB133229997821E418467CC3A72F77A7B9E31CC62B41032D6A82577B7AF1C6A2' : true,
- 'CC2E477D4A2640BCF70F232C040954DFC4878E536A4B03E788173E673A2D31FD' : true,
- 'CC8E9439ED527517579A913E8489CA704B4370AE09A823D36431063C53609C82' : true,
- 'CC99A37B34F4914C3E3B8B8D6236CE0E8F92DC77CEBEB09D50C6004D51C8D4CC' : true,
- 'CCE21382C4DDCED2E4101F6FC5A1B8B76166EC8ECE79DBAA58F3339508B48CBF' : true,
- 'CD35C7ABA0839C0D865DEA4C1DB624F709E5EA041A68DB55842E2C189F38BAC1' : true,
- 'CDB02DBACBAD381EB4F6854E84372DAD1FD76462ACBC26A9DC86164E81E75C85' : true,
- 'CDEA4B65584E4EA2889F73E5907E95849BC6A2CA76B17EAD2B1FC7368193B550' : true,
- 'CED6501D3B06CDB7033EE79351EC3080BBC2993D0991AB91325DFC0550689AA7' : true,
- 'CEDFCE64CD03E3F512AC1CB6EE68C26F7C48C6753E8708E3A7D5AC867BA3ADC6' : true,
- 'CF099A3A9DBE3D79F3E420A47A8447A50A2F87ACF2874CA86D49F271B82A68C5' : true,
- 'CF19B1004488D5D9C882E2C4D0A47789618E0BCD6475F6D9C6B5591C2BF333C9' : true,
- 'CF2A79710CABB0EB440EE621B37934C249C50612DB4FF926EDDE5B8A30686BED' : true,
- 'CF44B5D052E8869D4632230291A81F3EBB7F681276D371161609BC23E40C8636' : true,
- 'CFE1E4D56E0D95E238F3317CC981740011F0D3E4DE08ECD27313F83378F150BA' : true,
- 'CFF31BD8AB9FBB4681C17AA4135E67D402345E32CA8DC9D566537CA530F27B7D' : true,
- 'D03547E78303C9FBD70A38BEAFE87AA9F266A92275D818D1A8758DCB9D08DAE0' : true,
- 'D07441504C544C3C3374E4314A2FB91266585AE94460B2FBE5CD4292556CA20D' : true,
- 'D0DA9A42796D063B8246DC549D1CDD1D64B0AEF50E7094F0A29F243B51012DC7' : true,
- 'D0F94901C782E50EA3A7B7300F6D9A113E45B5DA8944E956CE6629AF9C4C92B2' : true,
- 'D103ECB2B7F74BEFD44109C1CA30EA92D9016C0F9347F1DF3E5467C3AC20221B' : true,
- 'D10DFC97304D163140768E2D1698B1A0A3AF8331C4941F928622AB80091A3273' : true,
- 'D1C4E4D1F014FB8F889F45AFA39485BE742F64268C662BB28494855E393ADE96' : true,
- 'D207EED2218BA7CF564AD049677741A526B9ECB5BBB23CAF2B817A3B0085F004' : true,
- 'D277E65331EFA2A6668143F8BC5334AF870208332990F977BD7F3588689F4686' : true,
- 'D2785F7C48F180342D70978EEABFFC424D33A495A07D04F32C08B771BC4E43A4' : true,
- 'D39BD0C1656F99A47DA9D2957E2D7A49FC9EDD92CC6BE729C29299ECECFC42E7' : true,
- 'D3D5C3556B8724C6601E217415EA7E89740A9F1B2523D6421ED2BD2E3044145C' : true,
- 'D44DF644880E56596405F1364D8C3E5301F05ACBF82FD66B671D895288C75360' : true,
- 'D462D57028E10CB7A7C87ADA83EBD7FE9B4DA384D2971BD7A708816C4EA8711F' : true,
- 'D46D29E4176A93E3DCD80BA5861A87E84FB7866B784488A977E7E4E4076DD2BD' : true,
- 'D4CB5B06AF9ABEBF5639377BF36B289CA95A3205A84537D36B4506DF51430669' : true,
- 'D52C9B39197E2769C185EC17A56A6E7890CDB1D0B18D15F65FA3B52E94DE94F7' : true,
- 'D5846E29C203E6EAFF8D474085653A1F9E2E123C4E9E8C1172D1CB62474789E4' : true,
- 'D5B0165C0F4C8F14A2E0C2310AE4A51B6EA08D2FD9790DFD49BCF3FD78AD5198' : true,
- 'D5EDEAF240AD74C81017160821DE0FF6470839A2F8AB998D84E7392E90280D0D' : true,
- 'D60AFE53C8CF92DC2D9E8DD1E4003246A16A692A1F619426CE43EEE621319BCE' : true,
- 'D652650A3DE79A5C0DFEC1925007DA094925533D13F14094722A80F936FC9A8B' : true,
- 'D666DA4D49E47B079AD7864678B4807D5CA035B3FDA103926CEFD053F50E5F2B' : true,
- 'D7198C80471105D95103DB11B6BD2F6CDC8E7A7E67DB8329F1FA75C5F5D5E8CE' : true,
- 'D7632272521683A38E88A18C2CC6AED79B2C5E854483BDB6EE83D82BF41B96CA' : true,
- 'D780EB94814F0CE1AD1A2F8A1EFD6170C019F0B446E726C7C874C0730E59FF1C' : true,
- 'D80A44887D03596492FC8CBFEA9878F46AFFEF1E077645169B129C419D3E8C6E' : true,
- 'D83D1AED881CB22ED4E92AABA18DC390D6931CCF74591C64C236C662EFCDF557' : true,
- 'D844DEE1597B654C0E645C787DB52F6EA5C855C6C35626BD7787E71E873CAF8F' : true,
- 'D86562629BA86C435C0965C4AC302160729F27804FEBA36E211F96CDEFB5DF8E' : true,
- 'D8B8F53177C1E04D93746C8460A7296707654094814772BFAD31F79C03802240' : true,
- 'D904379306D37F489337D71508E1CA3FE9FDC8188286D24265D3437BC069EA15' : true,
- 'D9E191EC52F4ECE1E0C43968EAD53E421ED62A7A7DBC0C39ECB2B8FF7962F01C' : true,
- 'D9FDB29EF83808BC82A97839FB2F22C2D20DAB2E6B67BF5862C8922BB1FA9068' : true,
- 'DA0D9391992825F7A10312F7E85568086F18DB901838A303E721E58239158EA0' : true,
- 'DA29D8725034D89C221F415CC5282F82A6502E1EAF416DFA41507BC662C90258' : true,
- 'DA5D20F1A6CF6CEC3AA7028A6E17D8F2E1A60069E497758B0CC938C08F4E76BC' : true,
- 'DAA384D0D2A94A18A14E3DDF7A963E59BE41C06B978F3DC8862E1EE6C8E76DD0' : true,
- 'DAA9CED5BA817CED9942DB9CFAD0210505937A9DB2214298E0BEB831BFC8A31B' : true,
- 'DAFB1BB231A0D93B70726F2D3D8D8C8C54EFFCD901BB415C7A85AF02D09AA2A4' : true,
- 'DB301590A7DE580916559C6DE948B95A3F7FC50A7AB8678BC365595A4DCE4E4B' : true,
- 'DB7B1361B066EC2F777AE104F88A846DC163200AEB05B47D5BFEC91B6F13AC53' : true,
- 'DB995D854C4EDEF4DB5CCF20B2B30719056F3EDAA0CCF4B9D9C5C898407C5C7A' : true,
- 'DBB0C3CC436B5E592960BE7E8836AE58D8D632D435365ED2EA3CFAA86681E272' : true,
- 'DBBF2D4498ED91C779C81FED5E96F9B5210CE86EA463712268BCAF098FE2E285' : true,
- 'DBCB7851A6EC87DF3B603CDC26C5A9F958C8AE75485E1649A7CEF218B4E4D5BE' : true,
- 'DC2FCD6AEAEE45D7E82C443FD3F76EDE1C88CE43E5FCEC3B4DEC9F12AF34BAA8' : true,
- 'DC8D710118FF258F27ED436F585756252FDB30F42DBB58B23B8CD3B2140E13B8' : true,
- 'DCA17501D12F98C84EE99DF4BC8EFC1FFFA9B65E2BC5A92B20C9296EC61C96CA' : true,
- 'DCDE97B03688D8CB9F603AEF4D97110A38679F8EE01975E4B0B55855E4A8DD05' : true,
- 'DCF33FB3953551E4B5F06060A7EC211432C30FEF86FA7B45EE76A8F9F3473C86' : true,
- 'DD10B2E1AFF8298CC67F58955608C74ECE657F1DEEC77D6C465C1C7D2C8D26D9' : true,
- 'DD55F1E1BEBA4CF9F582CBEEF4A35E1C1DE36750A3403489C1C98955FCE9950E' : true,
- 'DD64C7D9E60AE6748B449ACE8CF9C21B5551BC6427EDDCE1D77B7C7720FD21E4' : true,
- 'DE327172F9BCDA3DBD4E6EEFC759F3EE88FBC635BAD34D76E360541420CDC8BC' : true,
- 'DE411E4537133A4D436E0D730AE192277792AA1D0584E60B1CECCDC736F53407' : true,
- 'DEA472B5BED8DA9F6F5539F8DC66FB5340010F7316FB28055E14EA76E03BBE41' : true,
- 'DEC7DC8AB8ED70C1D2FB2875F0F99FA99FB53E6BED70CD47B244ABA2104DA5AD' : true,
- 'DEF20D4F0C0D98AE8C9786C364182CCD8990A834C96C1F0989AAE9ECAF33720F' : true,
- 'DF0525A7807F3709BAD2DEC2ECC569A1D473F97F0C382C932DF726C79926DA0E' : true,
- 'DF4482289B54CB444569A5436AEEBEBFB348D966D2FBC8C5115376F3E5496303' : true,
- 'DF533C33DB800394971D608B89269426D3A2F58B76F190229C0573985E4F7CB8' : true,
- 'DF7FBA4917800A850600F3E7BD4DD0A717F2649060B300F5AF3B1F490BD26536' : true,
- 'DFE29EDC6A77622D4963EAF8CEEAD0ED5DE393DD069425FE30175AD008D609DE' : true,
- 'E01A5251FAC16C537237EE4249874187E3BE3AF9B0F1D472E6C69E6C8B8832ED' : true,
- 'E09CD94E0A501BB4D25D5BBB02CCAE95A24D0BAF8CABADEC9D55A74B7D2C5BD8' : true,
- 'E0D7FA4702E25E7F51F94DD0D12C39A352DF48DE10A5249AE2687CBC15020CB3' : true,
- 'E1117A0AB7E1A80334C1C56891A4306CB553C100424773BB0F10C7574CF44ED5' : true,
- 'E113CDDD84A81BB13795798E245E5D1B3CA1650D6A59AC34777577AB764DFC69' : true,
- 'E1176E46C4FA7841D94FC724013E3D192E7B414933F92CD50EA36C51617A2C60' : true,
- 'E1595A9AA15B24610100AEB57ED619460CA1D976B769B856398EADA5A01F952B' : true,
- 'E1A55E7ABA746B4A053359D13C91DCD7415F2CEECB7E87292DFD697213986946' : true,
- 'E1A583C63BCEBAC1136939B65CBD0E6DBD7493EA45910275D56E0E2DE209D2BF' : true,
- 'E1C97EFF3C246073604F341DBB3CEC9683EB6692463D85C1D23FA5269D9F3FFD' : true,
- 'E26F4C34273553354334DC7A22DC56A781F2491181799287CC91F12871FEB50D' : true,
- 'E276249DEAEA8F9B735592C3355A2E3822F67A5979A3CCA988F98EBEEB2A8309' : true,
- 'E276DC254DCFC8C0F2752221EE5D59EC0C86E714522A6600DB67A05E22E01740' : true,
- 'E27966B8B9C67C751F9AB8315D0BD1CEE334D96A8C5F60C764070EF8B8FCE61A' : true,
- 'E297439120E6E2701069440EC321BA98A5CFF9EA3F407FF16185671E466B87F0' : true,
- 'E2D55EAADCF87AD1BD50E53B7168CCC08561F0172004C1EC4DC13D8166D1A313' : true,
- 'E30234ADF36D445F582C956B26E63BB76FF13FE90048CE1F37B40285BAE6529D' : true,
- 'E32ECC9EEA662085C10C003A5C910D77A6DCC1E99BD187576EFDD1BFA84591C4' : true,
- 'E37314E72C7304D32336940ABB576DBD7BE3190CD9A5E8F87413CEEB7579D502' : true,
- 'E381DF6792973BFE322D23C6CF2A6C24A4ECFC77F43F03D2FC04EE39FAD7C683' : true,
- 'E40B4275F6249EF4CDDE56EBB983AF4DE4C9A811B4095F8E9F700FA18C951759' : true,
- 'E43EB6A898FEB796E084C684078E8683417373F468EB087D4130EC6BD7A8510A' : true,
- 'E469E3D28BF6AB0280F989BA50C11FF4D9EE608BAD2282219A5C4E60C0AD348E' : true,
- 'E4D680D0579075DCA20740BD4EF6AA4CEFD5542727071005774421A247941B8D' : true,
- 'E4F069C24D7162E3C94AB295EA33C8926BDDF79934CA28D8982A35650EB60B05' : true,
- 'E692108B3683F3C6362DF92476D62BAE60687035B70B9119F962190C9C215B04' : true,
- 'E696A05D698717888181DFB7B903B380E42454076BA429EC8AB0FB58206AB166' : true,
- 'E756F7776AE92525EABD29B4CE8963EDE748438DE24393263F2118D77CC77C74' : true,
- 'E7EB8B4D5DE598BED2B9C817AB7D42F1EC99F16640B8C673AF2152D42F5344C4' : true,
- 'E7F4465713E093B4F7D970C89ED3A5E745457B80A974523648F07C6AAFCDC86C' : true,
- 'EA64F2625FAFE2EC122B493D4754C2B090153F167213AB6F07A87C1D993E5292' : true,
- 'EA7AD4DE86B47BEC726BFE21172676F92E0C0BB86888417916CB3123086E84A1' : true,
- 'EAA0454F2BBEED65A2FC7AAB8F308982387BDF33E6B56A1F3203F70F2981083A' : true,
- 'EB11019A7642C75F4DDC1DC9CF3B469BFB4C44B71C615693C73175F16DCA036C' : true,
- 'EB17EADBF0EA09B71BADD853CED1E5170C3A2D9FDE4F5C4A0EEC93E44C4B442C' : true,
- 'EB59182D7ACE742ED7D7AEE751763EF9F09EDF68D1DDF765E80BE40A53AD0E10' : true,
- 'EB6D34EFBF063DCACDFB823734B9788D9FB5E22A48372B7EA8AAFED8046652E1' : true,
- 'EB98F744424597BB5AF5F209D20D161DB2682089271EC2662BE177D36A737FBA' : true,
- 'EBABE928B643E1B9FD6F61D67ACC4BA6A9BFCC95927D31D265F701AC4613B9AE' : true,
- 'EBD2581C1B0224FBDA489A642503CF3D3306751C336A66EB1816989900DA52BE' : true,
- 'EC3A708B75908F8EA0660EF8A9C14B07DAB3AECB71E96E87EB06BB317790A118' : true,
- 'EC521C3B04AF772AF812B63555A7C24BDA282C06EC619E1766CC346780EC6E04' : true,
- 'EC869ABCCE3A1C036F1AFABE5ECD4FDA581D16C0E81E16A2734E6004A55896BC' : true,
- 'ECA7333D185C924CBADF8CD96EEFA90F63B12225555B3C72631C841AA37BA917' : true,
- 'ECB0646FEF13F818B1ACD2A8AFE448F3B39EC0EF6F623175931C48DC386EAF73' : true,
- 'ED4D737C0BBE1DC2CD305D8A912D1C1D923C1C4325401D66349541F754233B53' : true,
- 'ED918BDFDFCB9E4E679BC7C1938F9CE412AA85500BA3531FC550AD5213D5BDC7' : true,
- 'EDD929C40001C1ACDABD51797B63D689A0B80434FA323B4F7AD213AB8A530B8C' : true,
- 'EE5B8C42532363A48222B1493803B14EC2C98366CD0C5BA4126F468BA19C559D' : true,
- 'EE5D710097EAD11639F98940D1F32793ECC114F0408856CCB6536F1EF2366704' : true,
- 'EF0EE2FBF54D87B6AC02AEB88050155A27E1A60A5A8C4AC46FF24B529D912B04' : true,
- 'F09ECA7EC8BF7B582C42AEB4A0733A0D40FDFD28CEA2C70DA1BBCF1FF85E29FF' : true,
- 'F0BF33EE5C1D9A83A7BBDCDE95426DCD201D1C071CF1FB58CA4FE3776996A99F' : true,
- 'F0EDB0C989C20672BAFC51FA2710F3841BA5793BE379FC212D7ACC3AD4743455' : true,
- 'F1147FBF98A54E12693453EC571CE8B86C05D7FDF3995D775DFF135E10B9C520' : true,
- 'F11BB294EAD89BC4AAB21DD82BA85FFA6573215720E347D687D6D5D89EE33EEF' : true,
- 'F153813F6CD126543E985CEFA06C8B978FE5D4825C189F58944DC0DE17D5A0E9' : true,
- 'F15E12419E936A907F201FD9D6D3DE2E01E5F8465AC4D8EDDCE1E58262183223' : true,
- 'F1B73AEECC6698895051EE69179C3897A1DC398C2D72DDD720A29F9C9520457C' : true,
- 'F205928C933AFF1F1A6411AB779CFAE3FAAF43754AB86735DB52F74DB1DA81D2' : true,
- 'F20CBF1FC073F7E7DEBC38DFE2042E2CDC5D82898773D6283C680A3BC966BC02' : true,
- 'F22F96FB88C9D96104167D95B3AD8B5888C92680B0AD13DC785FD5AD3E19EDB7' : true,
- 'F234FBFD807A0302CBF855175C73ABF27C94915B95135E3146C0ED73662DE3F5' : true,
- 'F28C56AA368BC4F8DA6B77CF3F8D2A7EF4994BBDE7DF85AA40FF740DC004750B' : true,
- 'F2C91876EDB36EAD7E4821C2A6581144F1E5A67B2DEF4A5E4AFDF79F5E1CC4D7' : true,
- 'F35B9D7C54418022E6FD4FDFE88C3261FD138329A11C013AD640145D40BE934A' : true,
- 'F3926080B8F8289E7DCC479153999D4F459951765A0A22977F056D8249BF5FF5' : true,
- 'F3CA880E8CF918E29D956A8306A2A0EB9CF76E82135F60A9885033E22B7874E8' : true,
- 'F3D480D69675A57DC2061544BF7F52B631BB02716680C0E5605413C9B2A6183F' : true,
- 'F402A9D58A73C40B396B5CE756EDFCA68257AC6D8DE80AA8217F16C97512C51B' : true,
- 'F49BADFFBB2D2836A995A12E44ECF62E584F1B8D0740E0EDC7610C0C6765CDAA' : true,
- 'F513DC8D7F8B425FCF55E74BDCF2675EF2ABF98523E5226CF8A2391B0A36A919' : true,
- 'F55617B92584757BB516B19BFCBDA9B4A71237075487651831CD9C5F9C6F5F29' : true,
- 'F5B19B2D5D880A4C1ADECA3D760FCB7E75FC2137B2EC99F3EEE034ADF788BADB' : true,
- 'F5CACF11F3673BFE76BC638692B907E7E1407AD77F3C8943CF4F4BF22A2D5137' : true,
- 'F5D715B6BE56D1A677ECBF7C26B4D79716F5EC2D2E2EC323ABDFE3442F40BD31' : true,
- 'F5E43F516D61A0329F78A2560454B8346732A9420C172AC9983C0BEFFD8DEA0A' : true,
- 'F5FAC17F4DDD973352CBCD311E21AE81EEFA06150CE85B8C32126D7F1661EDA0' : true,
- 'F605AA2BD611765748A88F933BCBCEC70272F6C6A1A4AC614C2D02D17DAC6CEC' : true,
- 'F6620F848AB3CFC1695D2AF5399FD8FDD8F2FEC43F73F2924DF78C1A26C22653' : true,
- 'F6B9B7A36ADF7095D44420CCDCE4A739926841BC695ED40E78856D8F71D41257' : true,
- 'F74D9E23F4CB53775CA60178347F2A029F77579000B21AA08EC62A1C2932348A' : true,
- 'F754352E819D0C33E6CFC06EECBB4356DB5D8BD1FD2591C7C817CCE662BE2BC4' : true,
- 'F7FC63254BF2472575C6D5DEC8DDF02B24B6F1BDCE03D807B159A69820262D4A' : true,
- 'F805AE1FEDB2D94096F0D341B703ECD4975D773A179555DDC83D424F85578571' : true,
- 'F94C306978496ED2183DC7591DA0240B513527293E5D522CF7089530E4C58D29' : true,
- 'F961BA44302F5AF5DC4045A7E3989D4B77AD4BDD53DE92A45F39FE56947293BF' : true,
- 'F9E220AC82D672997DC20E9EE89BF0713BC4153FB5F2EBC8D9AC9EE35A6E494D' : true,
- 'FA0E3BFAEEA2FBC6A9E4A33EB6F289EF6C35228008ABAD3878AC4B2C8E87F957' : true,
- 'FA1B8F32DE3B7F4ACA8FEF5414B5D985FE3705D0E3371D4FE4AF46698B68B01B' : true,
- 'FA500D7B8D9BED2323488F83C9A6093C012143DEE3E453C1F75738625571E708' : true,
- 'FA616BE68A75F14CA6331BD5BFDBE3840CE34CC3C3C98E3C8C3E10F027389F2F' : true,
- 'FA75601E87823F0B02F8764B29377F4EBB02A179051297597E93FB4B1F5FCAD5' : true,
- 'FAEDB6948B44BBBEB18CC3DE18788AD31CE938A2BA36BD84765BF47728C415E9' : true,
- 'FB067C05D337FC01FC0721FA712A9E1A4FFDE059A35F3B494D36FFE241107465' : true,
- 'FB1DF67EE132C7163167839175485C179E82024AD59EF806AF9D968A97F2ACA2' : true,
- 'FB3A5B27D3488E28ABA3F303A726C2F0440133025981816FEDF798E45B9B1751' : true,
- 'FB52A9B5EB7A494C06FB5CE4BB4505F32D6C666931AF2A018E6066244802A00D' : true,
- 'FB7EF701469F77B6412100BB2D6399B1A574BB9610186FFFCC0119E14CB2021F' : true,
- 'FB81BF294DB8EDE0C4DFFB7F5528EB3EB406FE435A6D62E6894482D8B42CCC48' : true,
- 'FBCC79E05CC135E183F4963C2A206F9DFDBC2DD0D379A743D5FB301741796921' : true,
- 'FBF769E6019DEA2724DB5768974B5D32E8A91F8045707B4F50552FE1D3BEAE4E' : true,
- 'FC072A7AD4E6E41680493AF4BEB98215D4D2F7CE040C95004BB3A1621A9DD513' : true,
- 'FCA9C3A036EA797D58CA26F793C98A9952E59D37C35E352B67A30D4F8F49FC7D' : true,
- 'FCABE5BABEB2D2785BBA66B5D465FAF9F9A8E74E77AC1161273F49F4261F17B3' : true,
- 'FCC12514DEB82E09AFF7A8B73DAC3CF80683D447101F048804D0B1100169D87E' : true,
- 'FCF4BA663F0032118EADF9D327B65AB502C7A8B336462A397238884E9A28508E' : true,
- 'FDB416F216D943190D8CADA2EB8F138F77A99CB1BC1334246697D37D8C04AB38' : true,
- 'FE4A5357D197340536C61A1493D6EB64732D628B4435BCF43A1D52BCC5BF4CFD' : true,
- 'FEE9BBCB25431C59C14C72C963CEDF437D795B6BEFE79EBF262B7054B0E583A1' : true,
- 'FEFEF80071B0D8E2B57D6601BB353A435A425EAA701827370C3585CE09F2CE50' : true,
- 'FF7B4EA9730875FF721ACEB86B327F7A6FB57A203B061CC3A4048E1D68F828B9' : true,
- 'FF8C4E466EBCD5BD1A16F83E6096501479D74D077F84F2EDEA264781DFD82270' : true,
- 'FFAE947BA6D3D7E8D31D04F02EEEE60601B0200ACDEBCB12AA5D617F650D5FD0' : true,
- 'FFFB09720CCEF3A610BCB81EEF5FCD614C1602D4968A9DE8400C05256AEDC1ED' : true,
-} ;
diff --git a/src/chrome/content/code/commonOCSP.json b/src/chrome/content/code/commonOCSP.json
deleted file mode 100644
index 106916d6cdbb..000000000000
--- a/src/chrome/content/code/commonOCSP.json
+++ /dev/null
@@ -1,289 +0,0 @@
-[
-"https://safebrowsing-cache.google.com/",
-"http://ocsp.pca.dfn.de/OCSP-Server/OCSP",
-"http://ocsp.digicert.com",
-"http://ocsp.verisign.com",
-"http://ocsp.comodoca.com",
-"http://clients1.google.com/ocsp",
-"http://ocsp.usertrust.com",
-"http://ocsp.disa.mil",
-"http://ocsp.quovadisglobal.com",
-"http://ocsp.nsn0.rcvs.nit.disa.mil",
-"http://ocsp.camerfirma.com",
-"http://ocsp.thawte.com",
-"http://ocsp.serverpass.telesec.de/ocspr",
-"http://ocsp.certum.pl",
-"http://ocsp.certisign.com.br",
-"http://ocsp.entrust.net",
-"http://telstra-ocsp.pki.telstra.com.au/ocsp",
-"http://ocsp.a-trust.at/ocsp",
-"http://ocsp.godaddy.com",
-"https://ocspaces.trustdst.com",
-"http://ocsp.identrust.com",
-"http://ocsp.pki.auth.gr",
-"http://ocsp2.globalsign.com/gsorganizationvalg2",
-"http://ocsp.starfieldtech.com",
-"http://ocsp.pki.bayern.de:8080",
-"http://ocsp.netsolssl.com",
-"http://ocsp.europki.org:8026",
-"http://ocsp.starfieldtech.com",
-"http://ocsp.treas.gov",
-"http://ocsp.trust-provider.com",
-"http://ocsp.rcsc.lt/ocspresponder.rcsc",
-"http://ocsp.globessl.com",
-"http://ocsp1.wosign.com/ca1",
-"http://gtssl-ocsp.geotrust.com",
-"http://ocsp.turktrust.com.tr",
-"http://ocsp.quovadisoffshore.com",
-"http://eva.orc.com",
-"http://ocsp.incosolutions.com/ocsp",
-"http://validator.wellsfargo.com",
-"http://jjedsocsp1.jnj.com",
-"http://ocsp.cybertrust.ne.jp/OcspServer",
-"http://ocsp.digsigtrust.com",
-"http://ocsp.trust.teliasonera.com",
-"http://ocsp.harica.gr",
-"http://ocsp.pki-services.siemens.com",
-"http://sd.symcd.com",
-"http://ocsp.catcert.cat",
-"http://ocsp.certificateservices.eads.com",
-"http://dc/ocsp",
-"http://ocsp.wosign.com/ca",
-"http://ocsp.swissdigicert.ch/rubin",
-"http://ocsp.unimelb.edu.au/ocsp",
-"http://ocsp.gandi.net",
-"http://ca.multistructure.co.id/ocsp",
-"http://ocsp.buypass.no/ocsp/BPOcsp",
-"http://rapidssl-ocsp.geotrust.com",
-"http://ocsp.tcclass3-II.trustcenter.de",
-"http://ocsp2.globalsign.com/gsalphasha2g2",
-"http://ldap.takata-petri.com:2560",
-"http://ocsp.dpwn.net",
-"http://ocsp.certyfikatyssl.pl",
-"https://ocsp.quovadisoffshore.com",
-"http://ocsp.swissdigicert.ch/smaragd",
-"http://sureseries-ocsp.cybertrust.ne.jp/OcspServer",
-"http://wongtaisin.ms.local/ocsp",
-"http://nsc.vrm.lt/OCSP/ocspresponder.nsc",
-"http://ocsp.webspace-forum.de",
-"http://ocsp.luxtrust.lu",
-"https://ca.e-szigno.hu/aocsp",
-"http://ocsp.trustsign.com.br",
-"http://ocspape.cert.fnmt.es/ocspape/OcspResponder",
-"http://telstra-ocsp.pki.telstra.com.au/ocsp",
-"http://ocsp.tcclass2.trustcenter.de",
-"http://ocsp.inmeta.net/ejbca/publicweb/status/ocsp",
-"http://igc.auf.org/ocsp",
-"http://ocsp.certification.tn",
-"http://ocsp.globaltrust.eu",
-"http://ocsp.e-tugra.com/status/ocsp",
-"http://ocsp.bezeq.com",
-"http://ocsp.nsn0.rcvs.gds.disa.mil",
-"http://certinfo-ocsp.ubs.com:53417",
-"http://ocsp.tbs-x509.com",
-"http://ocsp.ll.mit.edu",
-"http://pki.utg.ua/ocsp",
-"http://ocsp.accv.es",
-"http://crl.itsumo.pl/ocsphttp://corppki/ocsp",
-"http://tr-dc-r2.telering.biz/ocsp",
-"http://ocsp.eme.lv/responder.eme",
-"http://ocsp2.globalsign.com/gsalphag2",
-"http://ocsp.ssl.com",
-"http://ocsp.certificadodigital.com.br/serasa_cd2006",
-"http://la-email.corp.valueclick.com/ocsp",
-"http://ocsp.startssl.com/sub/class3/server/ca",
-"http://acbridge.ds.commun.test.fc2consortium.org:8080/ejbca/publicweb/status/ocsp",
-"http://remote.hirschmann.nl/ocsp",
-"http://ocsp1jca.defence.gov.sg",
-"http://ocsp02.telesec.de/ocspr",
-"http://certs.vonagenetworks.net/ocsp/vonsca",
-"http://ca-ocsp.disig.sk",
-"http://www.isscorp.com/PKI/ra/ocsp",
-"http://ocsp.digi-sign.com",
-"http://ocsp.certificadodigital.com.br/serasarfbv1",
-"http://certificates.medsigroup.ru/ocsp",
-"http://ocsp.bee.vimpelcom.ru/ocsp",
-"http://cert1.cert.internal.loc1.gathowin.net/ocsp",
-"http://ocsp-ext.pki.wellsfargo.com",
-"http://ocsp.innossl.com",
-"http://ocsp.pcf.pl/ocsp",
-"http://nts15.etoncollege.org.uk/ocsp",
-"http://ocsp.dreamhost.com",
-"http://ocspISAca.cert.fnmt.es/ocspISAca/OcspResponder",
-"http://bt1svl0a.bpa.bouyguestelecom.fr/ocsp",
-"http://ocsp.co.vectis.local/ocsp",
-"http://localhost:8080/ejbca/publicweb/status/ocsp",
-"http://ocsp.siteblindadocerts.com",
-"http://corpcert.app.corpintra.net/ocsp",
-"http://ocsp.nlss.com",
-"http://ocsp.bobo-rousselin.com",
-"http://cert.bioscomputers.com/ocsp",
-"http://ocsp.lienvietpostbank.com.vn/ocsp",
-"http://sslocsp.twca.com.tw",
-"http://ocsp.mdais.co.il",
-"http://pki.sana-bb.de/ocsp",
-"http://ocsp.wisekey.com",
-"https://ocsp.rcsc.lt/ocspresponder.rcsc",
-"http://ocsp.startssl.com/sub/class2/server/ca",
-"http://ocsp-cpki.telekom.de/ocsp",
-"http://ocsp2.ssc.lt:2560",
-"http://ocsp.it.point/RMGRCA/http://ocsp.extranet.royalmail.com/RMGRCA",
-"http://eca.ocspts.identrust.com",
-"http://ocsp.vkb-bank.com/ocsp",
-"http://pki.automobiletechnologies.com/ocsp",
-"http://ocsp.g4s.no/ocsp",
-"http://vpn.ozero.com/ocsp",
-"http://ocsp.village-roadshow.com/ocsp",
-"http://ocsp.groupensia.com/ocsp",
-"http://pki.rosautoprom.ru/ocsp",
-"http://ogbl-ocsp2.ogbl.lan/ocsp",
-"http://ocsp.southernco.com/ocsp",
-"http://ocsp.swiss.signdemo.com",
-"http://ocsp.itexcellence.rs/ocsp",
-"http://www.cepsa.com/pki/ocsp",
-"https://ocspaces.identrust.com",
-"http://ocsp.dtica.eu",
-"http://www.tys.org/aia",
-"http://ocsp2.globalsign.com/gsextendvalg2",
-"http://caors.wiltshire.ac.uk/ocsp",
-"http://ocsp1.ssp-strong-id.net/SSP-CA-A1",
-"http://cert.econgas.com/ocsp",
-"http://ocsp.wienerberger.net/ocsp",
-"http://ocsp.pki.wayport.net:2560",
-"http://pkib.mallesons.com/ocsp",
-"http://ocsp.ovh.com",
-"http://ocsp.certificadodigital.com.br/serasacdv1",
-"http://pkiva.indra.es",
-"http://itcert.stanford.edu/ocsp",
-"http://certenroll.bogdanov-associates.com/ocsp",
-"http://srv-pki/ocsp",
-"http://ocsp.godaddy.com",
-"http://ocsp.pki.slb.com/ocsp",
-"http://ocsp.swisssign.net",
-"http://cert.naftogaz.com/ocsp",
-"http://ocsp.uk.deloitte.com",
-"http://ocsp.comodoca3.com",
-"http://ocsp.exzumin.de/ocsp",
-"http://ocsp.msocsp.com",
-"http://cdp2.nis.rs/ocsp",
-"http://corptestcert.app.corpintra.net/ocsp",
-"http://ocsp.comodoca2.com",
-"http://ocsp.ersca.com",
-"http://ocsp.xth.cc",
-"http://ocsp1.ssp-strong-id.net/VA-SSP-CA-B2",
-"http://ocsp.vnpt-ca.vn/responder",
-"http://ocspts.identrust.com",
-"http://ocsp2.globalsign.com/gsdomainvalg2",
-"http://pkiva.bde.es",
-"http://certs.mapservices.fr/ocsp",
-"http://ino.inosoft.de/ocsp",
-"http://rootca.poclabs.net/ocsp",
-"http://pki.rtc-leasing.ru/ocsp",
-"http://ocsp.startssl.com/ca",
-"http://ocsp.ca.vodafone.com/ocsp",
-"http://ocsp.cs.auscert.org.au",
-"http://ocsp.tcclass2-II.trustcenter.de",
-"http://www.er76.ru/ocsp",
-"http://ocsp.walgreens.com/ocsp",
-"http://www.pki.nosc.us/ocsp",
-"http://test_pki1/ocsp",
-"http://ocsp.mytrc.net/ocsp",
-"http://certs.ankalagon.ru/ocsp",
-"http://www.ocsp.gpo.gov",
-"http://ocsp.bayanca.ir",
-"http://va.pfizer.com:1025",
-"http://certificates.dnv.com/ocsp",
-"http://ocsp.orapharma.com/ocsp",
-"http://ocsp.seattlecca.org/ocsp",
-"http://backbone.cnsd.interno.it/ocsp",
-"http://nyppki02/ocsp",
-"http://ocsp2.globalsign.com/gsorganizationvalsha2g2",
-"http://gtssl2-ocsp.geotrust.com",
-"http://ocsp.tcuniversal-I.trustcenter.de",
-"http://ocsp.register.com",
-"http://ocsp.ncdc.gov.sa",
-"http://pki.life.com.by/ocsp",
-"http://ocsp.sgssl.net",
-"http://pki.gmprint.local/ocsp",
-"http://pki.solitdev.com/ocsp",
-"http://ocsp.dics.ua/ocsp",
-"http://ocsp.pre.swissdigicert.ch/rubin",
-"http://ocsp.affirmtrust.com/commev",
-"http://aia.gdir.vt.ru/ocsp",
-"http://ocsp.averius.nl/ocsp",
-"http://ocsp.bechtel.com/ocsp",
-"http://ac.ds.commun.test.fc2consortium.org:8080/ejbca/publicweb/status/ocsp",
-"http://cert-services.e-control.at/OCSP?ca=EControl_IntermediateCA",
-"http://nfiocsp.managed.entrust.com",
-"http://cert.bernards.com/ocsp",
-"http://bhca2.baker-hostetler.com/ocsp",
-"http://pki.suva.ch/ocsp",
-"http://EVSecure-ocsp.verisign.com",
-"http://ocsp.go",
-"http://pki.wabag.com/ocsp",
-"http://ocsp.startssl.com/sub/class4/server/ca",
-"http://nfi2.eva.orc.com",
-"http://onsite-ocsp.verisign.com",
-"http://ocspsslv3.kamusm.gov.tr",
-"http://ocsp.pki.belgium.be",
-"https://www.isscorp.com/PKI/ra/ocsp",
-"http://ocsp.statoil.com:3502",
-"http://pki-ocsp.allscriptscloud.com/ocsp",
-"http://swoop-pki.swoopin.com/ocsp",
-"http://kzatpki0002.okioc.com/ocsp",
-"http://ocsp.policia.es",
-"http://ocsp.startssl.com/sub/class1/client/ca",
-"http://dc01/ocsp",
-"http://ocsp2.pki.wayfair.com/ocsp",
-"http://10.1.101.2/publicweb/status/ocsp",
-"http://ocsp.bt.com/ocsp",
-"http://ocsp.sanofi-aventis.com/ocsp",
-"http://dc-01.raise.group",
-"http://ocsp.spar-ics.eu/ocsp",
-"http://ocsp.vodokanal.spb.ru/ocsp",
-"http://socsp.turktrust.com.tr",
-"http://ocsp.thermocolor.com/ocsp",
-"http://ocsp.lisec-sw.com",
-"http://ocsp.csctrustedsecure.com",
-"http://houpki2.nov.com/ocsp",
-"http://ocsp.bwinservices.com/ocsp",
-"http://ocsp2.globalsign.com/gsextendvalsha2g2",
-"http://ocsp.tcclass3.trustcenter.de",
-"http://ocsp-b.pki.wayport.net:2560",
-"http://devdc01.dev.gatesfoundation.org/ocsp",
-"http://certsrv1.dc1.thomson-webcast.net/ocsp",
-"http://relay.systemshouse.ru/ocsp",
-"http://gold-root-g2.ocsp.swisssign.net",
-"http://pecs1.unisys.com/ocsp",
-"http://ocsp.europeanssl.eu",
-"http://gw.idsaas.de/ocsp",
-"http://ocsp.tcs.terena.org",
-"http://ocsp.trendmicro.com/tmca",
-"http://ocsp-ent.pki.wellsfargo.com",
-"http://www.meridian-capital.kz/ocsp",
-"http://ca.x-any.com/ocsp",
-"http://crl.inditex.com/ocsp",
-"http://ocsp.firmaprofesional.com",
-"http://ocsp2.globalsign.com/gsdomainvalsha2g2",
-"http://exchange.cdl.cz/ocsp",
-"http://pkicvs.cisco.com/pki/ocsp",
-"http://ocsp.affirmtrust.com/premev",
-"http://ocsp.icewarp.com",
-"http://ocsp.ferbritas.pt/ocsp",
-"http://cert.energokaskad.com/ocsp",
-"http://ocsp.utn.com.ua:2560",
-"http://ocsp.affirmtrust.com/ntwkev",
-"http://ocsp.omniroot.com/baltimoreroot",
-"http://ocsp.shamusclan.com",
-"http://ocsp.wurthnet.com/ocsp",
-"http://ocsp.pkic.es/ocsp",
-"http://ocsp.strixchomutov.cz",
-"http://sha2ocsp.dnsalias.com/responder",
-"http://ocsp-test.ncdc.gov.sa",
-"http://ocsp.sysadmins.lv",
-"http://cert.incoma.ru/ocsp",
-"http://ocsp.north-winds.org",
-"http://iis1.eeza.csic.es/ocsp",
-"http://pki.winextreme.org/ocsp",
-"http://ocsp.startssl.com/sub/class1/server/ca",
-"http://pki.eduuni.local/ocsp"]
diff --git a/src/chrome/content/code/sha256.js b/src/chrome/content/code/sha256.js
deleted file mode 100644
index 7e15f1af10d0..000000000000
--- a/src/chrome/content/code/sha256.js
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- * A JavaScript implementation of the SHA256 hash function.
- *
- * FILE:sha256.js
- * VERSION:0.8
- * AUTHOR:Christoph Bichlmeier
- *
- * NOTE: This version is not tested thoroughly!
- *
- * Copyright (c) 2003, Christoph Bichlmeier
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the copyright holder nor the names of contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * ======================================================================
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/* SHA256 logical functions */
-function rotateRight(n,x) {
- return ((x >>> n) | (x << (32 - n)));
-}
-function choice(x,y,z) {
- return ((x & y) ^ (~x & z));
-}
-function majority(x,y,z) {
- return ((x & y) ^ (x & z) ^ (y & z));
-}
-function sha256_Sigma0(x) {
- return (rotateRight(2, x) ^ rotateRight(13, x) ^ rotateRight(22, x));
-}
-function sha256_Sigma1(x) {
- return (rotateRight(6, x) ^ rotateRight(11, x) ^ rotateRight(25, x));
-}
-function sha256_sigma0(x) {
- return (rotateRight(7, x) ^ rotateRight(18, x) ^ (x >>> 3));
-}
-function sha256_sigma1(x) {
- return (rotateRight(17, x) ^ rotateRight(19, x) ^ (x >>> 10));
-}
-function sha256_expand(W, j) {
- return (W[j&0x0f] += sha256_sigma1(W[(j+14)&0x0f]) + W[(j+9)&0x0f] +
- sha256_sigma0(W[(j+1)&0x0f]));
-}
-
-/* Hash constant words K: */
-var K256 = new Array(
- 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
- 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
- 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
- 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
- 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
- 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
- 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
- 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
- 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
- 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
- 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
- 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
- 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
- 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
- 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
- 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
- );
-
-/* global arrays */
-var ihash, count, buffer;
-var sha256_hex_digits = "0123456789abcdef";
-
-/* Add 32-bit integers with 16-bit operations (bug in some JS-interpreters:
- overflow) */
-function safe_add(x, y)
-{
- var lsw = (x & 0xffff) + (y & 0xffff);
- var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
- return (msw << 16) | (lsw & 0xffff);
-}
-
-/* Initialise the SHA256 computation */
-function sha256_init() {
- ihash = new Array(8);
- count = new Array(2);
- buffer = new Array(64);
- count[0] = count[1] = 0;
- ihash[0] = 0x6a09e667;
- ihash[1] = 0xbb67ae85;
- ihash[2] = 0x3c6ef372;
- ihash[3] = 0xa54ff53a;
- ihash[4] = 0x510e527f;
- ihash[5] = 0x9b05688c;
- ihash[6] = 0x1f83d9ab;
- ihash[7] = 0x5be0cd19;
-}
-
-/* Transform a 512-bit message block */
-function sha256_transform() {
- var a, b, c, d, e, f, g, h, T1, T2;
- var W = new Array(16);
-
- /* Initialize registers with the previous intermediate value */
- a = ihash[0];
- b = ihash[1];
- c = ihash[2];
- d = ihash[3];
- e = ihash[4];
- f = ihash[5];
- g = ihash[6];
- h = ihash[7];
-
- /* make 32-bit words */
- for(var i=0; i<16; i++)
- W[i] = ((buffer[(i<<2)+3]) | (buffer[(i<<2)+2] << 8) | (buffer[(i<<2)+1]
- << 16) | (buffer[i<<2] << 24));
-
- for(var j=0; j<64; j++) {
- T1 = h + sha256_Sigma1(e) + choice(e, f, g) + K256[j];
- if(j < 16) T1 += W[j];
- else T1 += sha256_expand(W, j);
- T2 = sha256_Sigma0(a) + majority(a, b, c);
- h = g;
- g = f;
- f = e;
- e = safe_add(d, T1);
- d = c;
- c = b;
- b = a;
- a = safe_add(T1, T2);
- }
-
- /* Compute the current intermediate hash value */
- ihash[0] += a;
- ihash[1] += b;
- ihash[2] += c;
- ihash[3] += d;
- ihash[4] += e;
- ihash[5] += f;
- ihash[6] += g;
- ihash[7] += h;
-}
-
-/* Read the next chunk of data and update the SHA256 computation */
-function sha256_update(data, inputLen) {
- var i, index, curpos = 0;
- /* Compute number of bytes mod 64 */
- index = ((count[0] >> 3) & 0x3f);
- var remainder = (inputLen & 0x3f);
-
- /* Update number of bits */
- if ((count[0] += (inputLen << 3)) < (inputLen << 3)) count[1]++;
- count[1] += (inputLen >> 29);
-
- /* Transform as many times as possible */
- for(i=0; i+63> 3) & 0x3f);
- buffer[index++] = 0x80;
- if(index <= 56) {
- for(var i=index; i<56; i++)
- buffer[i] = 0;
- } else {
- for(var i=index; i<64; i++)
- buffer[i] = 0;
- sha256_transform();
- for(var i=0; i<56; i++)
- buffer[i] = 0;
- }
- buffer[56] = (count[1] >>> 24) & 0xff;
- buffer[57] = (count[1] >>> 16) & 0xff;
- buffer[58] = (count[1] >>> 8) & 0xff;
- buffer[59] = count[1] & 0xff;
- buffer[60] = (count[0] >>> 24) & 0xff;
- buffer[61] = (count[0] >>> 16) & 0xff;
- buffer[62] = (count[0] >>> 8) & 0xff;
- buffer[63] = count[0] & 0xff;
- sha256_transform();
-}
-
-/* Split the internal hash values into an array of bytes */
-function sha256_encode_bytes() {
- var j=0;
- var output = new Array(32);
- for(var i=0; i<8; i++) {
- output[j++] = ((ihash[i] >>> 24) & 0xff);
- output[j++] = ((ihash[i] >>> 16) & 0xff);
- output[j++] = ((ihash[i] >>> 8) & 0xff);
- output[j++] = (ihash[i] & 0xff);
- }
- return output;
-}
-
-/* Get the internal hash as a hex string */
-function sha256_encode_hex() {
- var output = new String();
- for(var i=0; i<8; i++) {
- for(var j=28; j>=0; j-=4)
- output += sha256_hex_digits.charAt((ihash[i] >>> j) & 0x0f);
- }
- return output;
-}
-
-/* Main function: returns a hex string representing the SHA256 value of the
- given data */
-function sha256_digest(data) {
- sha256_init();
- sha256_update(data, data.length);
- sha256_final();
- return sha256_encode_hex();
-}
-
-/* test if the JS-interpreter is working properly */
-function sha256_self_test()
-{
- return sha256_digest("message digest") ==
- "f7846f55cf23e14eebeab5b4e1550cad5b509e3348fbc4efa3a1413d393cb650";
-}
-
diff --git a/src/chrome/content/meta-preferences.xul b/src/chrome/content/meta-preferences.xul
deleted file mode 100644
index 3e48010c2cb7..000000000000
--- a/src/chrome/content/meta-preferences.xul
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/observatory-popup.xul b/src/chrome/content/observatory-popup.xul
deleted file mode 100644
index 60da68fdc620..000000000000
--- a/src/chrome/content/observatory-popup.xul
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
-
-
-
-
- &ssl-observatory.popup.text;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/observatory-preferences.xul b/src/chrome/content/observatory-preferences.xul
deleted file mode 100644
index e686107d0f9a..000000000000
--- a/src/chrome/content/observatory-preferences.xul
+++ /dev/null
@@ -1,114 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- &ssl-observatory.prefs.explanation;
-
- &ssl-observatory.prefs.explanation2;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- &ssl-observatory.prefs.asn_tooltip;
-
-
-
-
- &ssl-observatory.prefs.show_cert_warning_tooltip;
-
-
-
-
-
-
-
-
-
-
-
-
- &ssl-observatory.prefs.alt_roots_tooltip;
-
-
- &ssl-observatory.prefs.priv_dns_tooltip;
-
-
- &ssl-observatory.prefs.self_signed_tooltip;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/observatory-warning.xul b/src/chrome/content/observatory-warning.xul
deleted file mode 100644
index 1f64e128620e..000000000000
--- a/src/chrome/content/observatory-warning.xul
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-
-
-
-
-
-
- &ssl-observatory.warning.text;
-
-
-
-
-
-
-
-
-
- &ssl-observatory.warning.defense;
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/observatory-xul.js b/src/chrome/content/observatory-xul.js
deleted file mode 100644
index 1d9169ec0164..000000000000
--- a/src/chrome/content/observatory-xul.js
+++ /dev/null
@@ -1,201 +0,0 @@
-const CC = Components.classes;
-const CI = Components.interfaces;
-VERB=1;
-DBUG=2;
-INFO=3;
-NOTE=4;
-WARN=5;
-
-var ssl_observatory = CC["@eff.org/ssl-observatory;1"]
- .getService(Components.interfaces.nsISupports)
- .wrappedJSObject;
-var obsprefs = ssl_observatory.prefs;
-
-const pref_prefix = "extensions.ssl_observatory.";
-
-function observatory_prefs_init(doc) {
- // Is the Observatory on?
- var enabled = obsprefs.getBoolPref("extensions.https_everywhere._observatory.enabled");
- document.getElementById("use-observatory").checked = enabled;
- set_observatory_configurability(enabled);
- // Other settings
- document.getElementById("alt-roots").checked =
- obsprefs.getBoolPref("extensions.https_everywhere._observatory.alt_roots");
- document.getElementById("priv-dns").checked =
- obsprefs.getBoolPref("extensions.https_everywhere._observatory.priv_dns");
- document.getElementById("self-signed").checked =
- obsprefs.getBoolPref("extensions.https_everywhere._observatory.self_signed");
- document.getElementById("send-asn").checked =
- obsprefs.getBoolPref("extensions.https_everywhere._observatory.send_asn");
- document.getElementById("show-cert-warning").checked =
- obsprefs.getBoolPref("extensions.https_everywhere._observatory.show_cert_warning");
-
- // More complicated: is it anonymised by Tor?
- var obs_how = doc.getElementById("ssl-obs-how");
- var anon_radio = document.getElementById("ssl-obs-anon");
- var nonanon_radio = document.getElementById("ssl-obs-nonanon");
- var anon = !obsprefs.getBoolPref(
- "extensions.https_everywhere._observatory.use_custom_proxy");
-
- // first set the radios to match the current settings variables
- obs_how.selectedItem = (anon) ? anon_radio : nonanon_radio;
-
- // But if the user hasn't turned the observatory on,
- // the default should be the maximally sensible one
- var torbutton_avail = ssl_observatory.proxy_test_successful;
- if (!enabled) {
- set_obs_anon(torbutton_avail);
- obs_how.selectedItem = (torbutton_avail) ? anon_radio : nonanon_radio;
- }
- //scale_title_logo();
-}
-
-// The user has responded to the popup in a final way; don't show it to them
-// again
-function popup_done() {
- obsprefs.setBoolPref("extensions.https_everywhere._observatory.popup_shown", true);
- obsprefs.setBoolPref("extensions.https_everywhere._observatory.clean_config", true);
- window.close();
-}
-
-
-function scale_title_logo() {
- // The image is naturally 500x207, but if it's shrunk we don't want it
- // distorted
- var img = document.getElementById("obs-title-logo");
- alert("ch is " + img.height);
- if (img.height != "207")
- img.width = (500.0/207.0) * img.height;
-}
-
-// grey/ungrey UI elements that control observatory operation
-function set_observatory_configurability(enabled) {
- // the relevant widgets are tagged with class="ssl-obs-conf"
- var ui_elements = document.querySelectorAll(".ssl-obs-conf");
- for (var i =0; i < ui_elements.length; i++)
- ui_elements[i].disabled = !enabled;
- // the "use tor" option can't be ungreyed unless tor is available
- if (ssl_observatory.proxy_test_successful == false) {
- var tor_opt = document.getElementById("ssl-obs-anon")
- tor_opt.disabled = true;
- tor_opt.label = tor_opt.getAttribute("alt_label");
- }
- if (!enabled)
- hide_advanced();
-}
-
-// show/hide advanced options in the preferences dialog
-function show_advanced() {
- var enabled = obsprefs.getBoolPref("extensions.https_everywhere._observatory.enabled");
- if (enabled) {
- var adv_opts_box = document.getElementById("observatory-advanced-opts");
- recursive_set(adv_opts_box, "hidden", "false");
- document.getElementById("show-advanced-button").hidden = true;
- document.getElementById("hide-advanced-button").hidden = false;
- }
- //scale_title_logo();
-}
-function hide_advanced() {
- var adv_opts_box = document.getElementById("observatory-advanced-opts");
- recursive_set(adv_opts_box, "hidden", "true");
- document.getElementById("show-advanced-button").hidden = false;
- document.getElementById("hide-advanced-button").hidden = true;
-}
-
-function recursive_set(node, attrib, value) {
- node.setAttribute(attrib, value);
- for (var i=0; i < node.childNodes.length; i++)
- recursive_set(node.childNodes[i], attrib, value)
-}
-
-
-function set_obs_anon(val) {
- obsprefs.setBoolPref( "extensions.https_everywhere._observatory.use_custom_proxy", !val);
-}
-
-// called from the popup only
-function enable_observatory() {
- obsprefs.setBoolPref("extensions.https_everywhere._observatory.enabled", true);
- var torbutton_avail = ssl_observatory.proxy_test_successful;
- set_obs_anon(torbutton_avail);
-}
-
-function disable_observatory() {
- // default but be sure...
- obsprefs.setBoolPref("extensions.https_everywhere._observatory.enabled", false);
-}
-
-// called from within the prefs window, we have more work to do:
-function toggle_enabled() {
- var use_obs = document.getElementById("use-observatory").checked;
- obsprefs.setBoolPref("extensions.https_everywhere._observatory.enabled", use_obs);
- set_observatory_configurability(use_obs);
-}
-
-function toggle_send_asn() {
- var send_asn = document.getElementById("send-asn").checked;
- obsprefs.setBoolPref("extensions.https_everywhere._observatory.send_asn", send_asn);
- if (send_asn) ssl_observatory.setupASNWatcher()
- else ssl_observatory.stopASNWatcher();
-}
-
-function toggle_show_cert_warning() {
- var show_cert_warning = document.getElementById("show-cert-warning").checked;
- obsprefs.setBoolPref("extensions.https_everywhere._observatory.show_cert_warning", show_cert_warning);
-}
-
-function toggle_alt_roots() {
- var alt_roots = document.getElementById("alt-roots").checked;
- obsprefs.setBoolPref("extensions.https_everywhere._observatory.alt_roots", alt_roots);
-}
-
-function toggle_priv_dns() {
- var priv_dns = document.getElementById("priv-dns").checked;
- obsprefs.setBoolPref("extensions.https_everywhere._observatory.priv_dns", priv_dns);
-}
-
-function toggle_self_signed() {
- var self_signed = document.getElementById("self-signed").checked;
- obsprefs.setBoolPref("extensions.https_everywhere._observatory.self_signed", self_signed);
-}
-
-function observatory_prefs_accept() {
- // This is *horrid*, but
- // https://developer.mozilla.org/en/working_with_windows_in_chrome_code#Accessing_the_elements_of_the_top-level_document_from_a_child_window
- var outer = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
- .getInterface(Components.interfaces.nsIWebNavigation)
- .QueryInterface(Components.interfaces.nsIDocShellTreeItem)
- .rootTreeItem
- .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
- .getInterface(Components.interfaces.nsIDOMWindow);
-
- if (outer) outer.close()
- else alert("no outer space");
-
- return true; // https://developer.mozilla.org/en/XUL/dialog#a-ondialogaccept
- // also close things if there is no out meta prefs window
-}
-
-function warning_populate(warningObj) {
- // Fill in the SSL Observatory Warning labels...
- var container = document.getElementById("warning-container");
- for (var hash in warningObj) {
- var label=document.createElement("label");
- label.setAttribute("style","padding:5px 25px 5px;");
- label.textContent = warningObj[hash].long_desc;
- container.appendChild(label);
- //var spacer=document.createElement("spacer");
- //separator.setAttribute("flex","1");
- //container.appendChild(spacer);
- }
-}
-
-function show_certs() {
- var parent_win = window.arguments[1];
- var cert = window.arguments[2];
- if (!parent_win)
- alert("no parent window trying to show certs");
- CC["@mozilla.org/nsCertificateDialogs;1"]
- .getService(CI.nsICertificateDialogs)
- .viewCert(parent_win, cert);
-}
diff --git a/src/chrome/content/rules/00f.net.xml b/src/chrome/content/rules/00f.net.xml
deleted file mode 100644
index 333fe17a8591..000000000000
--- a/src/chrome/content/rules/00f.net.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/0bin.net.xml b/src/chrome/content/rules/0bin.net.xml
new file mode 100644
index 000000000000..9958af696a90
--- /dev/null
+++ b/src/chrome/content/rules/0bin.net.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/0p.no.xml b/src/chrome/content/rules/0p.no.xml
new file mode 100644
index 000000000000..f56269cbdb1b
--- /dev/null
+++ b/src/chrome/content/rules/0p.no.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/0x.co.xml b/src/chrome/content/rules/0x.co.xml
new file mode 100644
index 000000000000..41fccfa0e771
--- /dev/null
+++ b/src/chrome/content/rules/0x.co.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/0x539.se.xml b/src/chrome/content/rules/0x539.se.xml
index 43c02ab07547..f897ea8fdb41 100644
--- a/src/chrome/content/rules/0x539.se.xml
+++ b/src/chrome/content/rules/0x539.se.xml
@@ -1,16 +1,23 @@
-
-
+
+
+
+
+
-
+
+
+
diff --git a/src/chrome/content/rules/0xdb.org.xml b/src/chrome/content/rules/0xdb.org.xml
new file mode 100644
index 000000000000..eeebfc8cfacd
--- /dev/null
+++ b/src/chrome/content/rules/0xdb.org.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/100R.org.xml b/src/chrome/content/rules/100R.org.xml
index 1e6d7acd578d..c683f925df4f 100644
--- a/src/chrome/content/rules/100R.org.xml
+++ b/src/chrome/content/rules/100R.org.xml
@@ -1,4 +1,16 @@
+
-
+
diff --git a/src/chrome/content/rules/100_Fans.org.de.xml b/src/chrome/content/rules/100_Fans.org.de.xml
new file mode 100644
index 000000000000..9aafbe83747d
--- /dev/null
+++ b/src/chrome/content/rules/100_Fans.org.de.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/101domain.com-falsemixed.xml b/src/chrome/content/rules/101domain.com-falsemixed.xml
index 3a4dc6bf3f0e..240046213d09 100644
--- a/src/chrome/content/rules/101domain.com-falsemixed.xml
+++ b/src/chrome/content/rules/101domain.com-falsemixed.xml
@@ -1,8 +1,13 @@
+
-
+
diff --git a/src/chrome/content/rules/101domain.com.xml b/src/chrome/content/rules/101domain.com.xml
index b09f30bba304..dbb50871c567 100644
--- a/src/chrome/content/rules/101domain.com.xml
+++ b/src/chrome/content/rules/101domain.com.xml
@@ -1,4 +1,13 @@
+
-
+
diff --git a/src/chrome/content/rules/101domain.ru.xml b/src/chrome/content/rules/101domain.ru.xml
new file mode 100644
index 000000000000..dd0c68812fb9
--- /dev/null
+++ b/src/chrome/content/rules/101domain.ru.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/101weiqi.xml b/src/chrome/content/rules/101weiqi.xml
new file mode 100644
index 000000000000..76ec97c5ba64
--- /dev/null
+++ b/src/chrome/content/rules/101weiqi.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/104.com.tw.xml b/src/chrome/content/rules/104.com.tw.xml
new file mode 100644
index 000000000000..5133450c3139
--- /dev/null
+++ b/src/chrome/content/rules/104.com.tw.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/10antz.co.jp.xml b/src/chrome/content/rules/10antz.co.jp.xml
new file mode 100644
index 000000000000..4b8978114d35
--- /dev/null
+++ b/src/chrome/content/rules/10antz.co.jp.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/10dollar.ca.xml b/src/chrome/content/rules/10dollar.ca.xml
new file mode 100644
index 000000000000..3dbe10401993
--- /dev/null
+++ b/src/chrome/content/rules/10dollar.ca.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/1105_Media.com.xml b/src/chrome/content/rules/1105_Media.com.xml
index 621ec7389de9..552625d48bd6 100644
--- a/src/chrome/content/rules/1105_Media.com.xml
+++ b/src/chrome/content/rules/1105_Media.com.xml
@@ -4,7 +4,9 @@
- 1105_pubs.com.xml
- ADTmag.com.xml
- AWSInsider.net.xml
+ - campustechnology.com.xml
- ESJ.com.xml
+ - FCW.com.xml
- MCPmag.com.xml
- RCPmag.com.xml
- Redmondmag.com.xml
@@ -14,6 +16,7 @@
Insecure cookies are set for these hosts:
- 1105media.com
+ - design.1105media.com
- www.1105media.com
-->
@@ -22,14 +25,15 @@
+
-
+
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/112-uitgeest.nl.xml b/src/chrome/content/rules/112-uitgeest.nl.xml
new file mode 100644
index 000000000000..ea0e3e19e2d3
--- /dev/null
+++ b/src/chrome/content/rules/112-uitgeest.nl.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/115.com.xml b/src/chrome/content/rules/115.com.xml
new file mode 100644
index 000000000000..c714d24d7c2f
--- /dev/null
+++ b/src/chrome/content/rules/115.com.xml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/1177.se.xml b/src/chrome/content/rules/1177.se.xml
index 8932d9a2b05c..88c8687566e3 100644
--- a/src/chrome/content/rules/1177.se.xml
+++ b/src/chrome/content/rules/1177.se.xml
@@ -8,7 +8,6 @@
-
+
diff --git a/src/chrome/content/rules/118-Information.xml b/src/chrome/content/rules/118-Information.xml
index 68852151445f..fc68c273e898 100644
--- a/src/chrome/content/rules/118-Information.xml
+++ b/src/chrome/content/rules/118-Information.xml
@@ -4,7 +4,7 @@
- (www.)my118information.co.uk (times out)
-->
-
+
diff --git a/src/chrome/content/rules/11_Main.com.xml b/src/chrome/content/rules/11_Main.com.xml
index 6414d4de19bd..bd58a1a5e968 100644
--- a/src/chrome/content/rules/11_Main.com.xml
+++ b/src/chrome/content/rules/11_Main.com.xml
@@ -22,7 +22,7 @@
-
+
+
+
+
-
+
+
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/123-reg.xml b/src/chrome/content/rules/123-reg.xml
index 803ae98ae177..40c8e8e28874 100644
--- a/src/chrome/content/rules/123-reg.xml
+++ b/src/chrome/content/rules/123-reg.xml
@@ -4,7 +4,7 @@ Disabled by https-everywhere-checker because:
Non-2xx HTTP code: http://ssllin1.123-secure.com/ (200) => https://ssllin1.123-secure.com/ (404)
-->
-
+
diff --git a/src/chrome/content/rules/123ContactForm.com.xml b/src/chrome/content/rules/123ContactForm.com.xml
new file mode 100644
index 000000000000..bc29f89d9d8f
--- /dev/null
+++ b/src/chrome/content/rules/123ContactForm.com.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/126.com.xml b/src/chrome/content/rules/126.com.xml
new file mode 100644
index 000000000000..7b7dd31e2e20
--- /dev/null
+++ b/src/chrome/content/rules/126.com.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/126.net.xml b/src/chrome/content/rules/126.net.xml
new file mode 100644
index 000000000000..9efb418ac629
--- /dev/null
+++ b/src/chrome/content/rules/126.net.xml
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/127.net.xml b/src/chrome/content/rules/127.net.xml
new file mode 100644
index 000000000000..afafbb9c6579
--- /dev/null
+++ b/src/chrome/content/rules/127.net.xml
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/12_Foot_Hedgehog.com.xml b/src/chrome/content/rules/12_Foot_Hedgehog.com.xml
deleted file mode 100644
index d836cdf70b26..000000000000
--- a/src/chrome/content/rules/12_Foot_Hedgehog.com.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/chrome/content/rules/1337x.org.xml b/src/chrome/content/rules/1337x.org.xml
index 81f5937dcba0..1bf758b02647 100644
--- a/src/chrome/content/rules/1337x.org.xml
+++ b/src/chrome/content/rules/1337x.org.xml
@@ -1,10 +1,15 @@
+
-
+
diff --git a/src/chrome/content/rules/1431am.org.xml b/src/chrome/content/rules/1431am.org.xml
new file mode 100644
index 000000000000..560bdc25be73
--- /dev/null
+++ b/src/chrome/content/rules/1431am.org.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/148apps.com.xml b/src/chrome/content/rules/148apps.com.xml
new file mode 100644
index 000000000000..b44873843429
--- /dev/null
+++ b/src/chrome/content/rules/148apps.com.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/15Mcc.xml b/src/chrome/content/rules/15Mcc.xml
deleted file mode 100644
index 326a3f6787c8..000000000000
--- a/src/chrome/content/rules/15Mcc.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/16163.com.xml b/src/chrome/content/rules/16163.com.xml
new file mode 100644
index 000000000000..c426dbe545aa
--- /dev/null
+++ b/src/chrome/content/rules/16163.com.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/163.com-problematic.xml b/src/chrome/content/rules/163.com-problematic.xml
new file mode 100644
index 000000000000..7414b1ab2690
--- /dev/null
+++ b/src/chrome/content/rules/163.com-problematic.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/163.com.xml b/src/chrome/content/rules/163.com.xml
new file mode 100644
index 000000000000..ddf5322468af
--- /dev/null
+++ b/src/chrome/content/rules/163.com.xml
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/1688.com.xml b/src/chrome/content/rules/1688.com.xml
index 9efd23117f19..8d334db14439 100644
--- a/src/chrome/content/rules/1688.com.xml
+++ b/src/chrome/content/rules/1688.com.xml
@@ -1,68 +1,175 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
diff --git a/src/chrome/content/rules/16chan.nl.xml b/src/chrome/content/rules/16chan.nl.xml
new file mode 100644
index 000000000000..8ef588083958
--- /dev/null
+++ b/src/chrome/content/rules/16chan.nl.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/16personalities.com.xml b/src/chrome/content/rules/16personalities.com.xml
index a3410056013e..310e1b445560 100644
--- a/src/chrome/content/rules/16personalities.com.xml
+++ b/src/chrome/content/rules/16personalities.com.xml
@@ -6,7 +6,7 @@ Fetch error: http://16personalities.com/ => https://www.16personalities.com/: Cy
(www.)?: Dropped
-->
-
+
diff --git a/src/chrome/content/rules/17track.net.xml b/src/chrome/content/rules/17track.net.xml
index 8015fd84f91b..45e481b582d3 100644
--- a/src/chrome/content/rules/17track.net.xml
+++ b/src/chrome/content/rules/17track.net.xml
@@ -2,5 +2,5 @@
-
+
diff --git a/src/chrome/content/rules/1823.gov.hk.xml b/src/chrome/content/rules/1823.gov.hk.xml
new file mode 100644
index 000000000000..b6cea30a346b
--- /dev/null
+++ b/src/chrome/content/rules/1823.gov.hk.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/1984.is.xml b/src/chrome/content/rules/1984.is.xml
index bd91a3bb9823..0c6819235f20 100644
--- a/src/chrome/content/rules/1984.is.xml
+++ b/src/chrome/content/rules/1984.is.xml
@@ -1,4 +1,8 @@
+
-
+
diff --git a/src/chrome/content/rules/1984.live.xml b/src/chrome/content/rules/1984.live.xml
new file mode 100644
index 000000000000..73a099e153b9
--- /dev/null
+++ b/src/chrome/content/rules/1984.live.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/19h17.info.xml b/src/chrome/content/rules/19h17.info.xml
new file mode 100644
index 000000000000..7f3b4c45a2e3
--- /dev/null
+++ b/src/chrome/content/rules/19h17.info.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/1Cart.xml b/src/chrome/content/rules/1Cart.xml
index 4de11330d16f..c518a6f0a41c 100644
--- a/src/chrome/content/rules/1Cart.xml
+++ b/src/chrome/content/rules/1Cart.xml
@@ -1,4 +1,4 @@
-
+
diff --git a/src/chrome/content/rules/1LotSTP.com.xml b/src/chrome/content/rules/1LotSTP.com.xml
index 57bfd92dc6ef..160937820d32 100644
--- a/src/chrome/content/rules/1LotSTP.com.xml
+++ b/src/chrome/content/rules/1LotSTP.com.xml
@@ -1,13 +1,21 @@
-
+
+
+
-
+
+
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/1PipFix.xml b/src/chrome/content/rules/1PipFix.xml
index 1888c8a16078..b88e35caa893 100644
--- a/src/chrome/content/rules/1PipFix.xml
+++ b/src/chrome/content/rules/1PipFix.xml
@@ -1,13 +1,19 @@
-
+
+
+
-
+
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/1ShoppingCart.com.xml b/src/chrome/content/rules/1ShoppingCart.com.xml
new file mode 100644
index 000000000000..e6a5a7768990
--- /dev/null
+++ b/src/chrome/content/rules/1ShoppingCart.com.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/1X.xml b/src/chrome/content/rules/1X.xml
index a51f68ef79d3..d140fde2d896 100644
--- a/src/chrome/content/rules/1X.xml
+++ b/src/chrome/content/rules/1X.xml
@@ -1,4 +1,9 @@
+
-
+
diff --git a/src/chrome/content/rules/1_Deg.org.xml b/src/chrome/content/rules/1_Deg.org.xml
index a63dea288bd6..e97d2348dfcc 100644
--- a/src/chrome/content/rules/1_Deg.org.xml
+++ b/src/chrome/content/rules/1_Deg.org.xml
@@ -1,10 +1,15 @@
-
+
+
+
-
+
diff --git a/src/chrome/content/rules/1and1-Internet.xml b/src/chrome/content/rules/1and1-Internet.xml
index 4ca6f18505d1..6f07de864c8a 100644
--- a/src/chrome/content/rules/1and1-Internet.xml
+++ b/src/chrome/content/rules/1and1-Internet.xml
@@ -1,68 +1,81 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/1and1.ca.xml b/src/chrome/content/rules/1and1.ca.xml
new file mode 100644
index 000000000000..598e1338b8c7
--- /dev/null
+++ b/src/chrome/content/rules/1and1.ca.xml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/1and1.co.uk.xml b/src/chrome/content/rules/1and1.co.uk.xml
new file mode 100644
index 000000000000..dfbfb2b62ebb
--- /dev/null
+++ b/src/chrome/content/rules/1and1.co.uk.xml
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/1and1.es.xml b/src/chrome/content/rules/1and1.es.xml
new file mode 100644
index 000000000000..3b0e5f37d1ae
--- /dev/null
+++ b/src/chrome/content/rules/1and1.es.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/chrome/content/rules/1anh.com.xml b/src/chrome/content/rules/1anh.com.xml
index ad50c3be4a2e..f494bb3b1621 100644
--- a/src/chrome/content/rules/1anh.com.xml
+++ b/src/chrome/content/rules/1anh.com.xml
@@ -1,7 +1,12 @@
-
-
+
+
+
diff --git a/src/chrome/content/rules/1d4.us.xml b/src/chrome/content/rules/1d4.us.xml
new file mode 100644
index 000000000000..585da30d3793
--- /dev/null
+++ b/src/chrome/content/rules/1d4.us.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/1dedic.ru.xml b/src/chrome/content/rules/1dedic.ru.xml
new file mode 100644
index 000000000000..ab34933dbf8b
--- /dev/null
+++ b/src/chrome/content/rules/1dedic.ru.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/1dmp.io.xml b/src/chrome/content/rules/1dmp.io.xml
new file mode 100644
index 000000000000..b691f1ad05c4
--- /dev/null
+++ b/src/chrome/content/rules/1dmp.io.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/1f0.de.xml b/src/chrome/content/rules/1f0.de.xml
index b099763a9bb9..08339502780c 100644
--- a/src/chrome/content/rules/1f0.de.xml
+++ b/src/chrome/content/rules/1f0.de.xml
@@ -1,17 +1,14 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/1fichier.xml b/src/chrome/content/rules/1fichier.xml
new file mode 100644
index 000000000000..69fec7acf0ab
--- /dev/null
+++ b/src/chrome/content/rules/1fichier.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/1nightstandstory.xml b/src/chrome/content/rules/1nightstandstory.xml
deleted file mode 100644
index e6f9793669d6..000000000000
--- a/src/chrome/content/rules/1nightstandstory.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/1nsk.ru.xml b/src/chrome/content/rules/1nsk.ru.xml
index 9fff6e79069e..fd48956f8b1c 100644
--- a/src/chrome/content/rules/1nsk.ru.xml
+++ b/src/chrome/content/rules/1nsk.ru.xml
@@ -1,4 +1,8 @@
+
-
+
diff --git a/src/chrome/content/rules/1prime.ru.xml b/src/chrome/content/rules/1prime.ru.xml
new file mode 100644
index 000000000000..3800699fed09
--- /dev/null
+++ b/src/chrome/content/rules/1prime.ru.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/1s_and_0s.nl.xml b/src/chrome/content/rules/1s_and_0s.nl.xml
index e3a4291e05c1..1048be7e213d 100644
--- a/src/chrome/content/rules/1s_and_0s.nl.xml
+++ b/src/chrome/content/rules/1s_and_0s.nl.xml
@@ -1,10 +1,15 @@
-
+
+
+
-
+
diff --git a/src/chrome/content/rules/1st-ART-Studio.xml b/src/chrome/content/rules/1st-ART-Studio.xml
deleted file mode 100644
index fd6ea61adb4a..000000000000
--- a/src/chrome/content/rules/1st-ART-Studio.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/1stwebdesigner.com.xml b/src/chrome/content/rules/1stwebdesigner.com.xml
new file mode 100644
index 000000000000..5889ced5c57d
--- /dev/null
+++ b/src/chrome/content/rules/1stwebdesigner.com.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/1time.aero.xml b/src/chrome/content/rules/1time.aero.xml
new file mode 100644
index 000000000000..bb9583fa82a4
--- /dev/null
+++ b/src/chrome/content/rules/1time.aero.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/1time.co.za.xml b/src/chrome/content/rules/1time.co.za.xml
deleted file mode 100644
index 4bcc195f9f64..000000000000
--- a/src/chrome/content/rules/1time.co.za.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/1tulatv.ru.xml b/src/chrome/content/rules/1tulatv.ru.xml
new file mode 100644
index 000000000000..9f9275a12434
--- /dev/null
+++ b/src/chrome/content/rules/1tulatv.ru.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/chrome/content/rules/1tv.ru.xml b/src/chrome/content/rules/1tv.ru.xml
new file mode 100644
index 000000000000..160bd931d417
--- /dev/null
+++ b/src/chrome/content/rules/1tv.ru.xml
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/1ty.me.xml b/src/chrome/content/rules/1ty.me.xml
index 30f91a16c67d..652c03f0ee75 100644
--- a/src/chrome/content/rules/1ty.me.xml
+++ b/src/chrome/content/rules/1ty.me.xml
@@ -4,7 +4,6 @@
-
+
diff --git a/src/chrome/content/rules/1und1.de.xml b/src/chrome/content/rules/1und1.de.xml
index 218b669932aa..94222196f5cd 100644
--- a/src/chrome/content/rules/1und1.de.xml
+++ b/src/chrome/content/rules/1und1.de.xml
@@ -1,4 +1,11 @@
+
-
+
@@ -88,7 +95,6 @@
-->
-
@@ -116,9 +122,6 @@
-
-
diff --git a/src/chrome/content/rules/2020mobile.es.xml b/src/chrome/content/rules/2020mobile.es.xml
index bc2d4387f365..c256ffde06f0 100644
--- a/src/chrome/content/rules/2020mobile.es.xml
+++ b/src/chrome/content/rules/2020mobile.es.xml
@@ -1,4 +1,9 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/20min.ch.xml b/src/chrome/content/rules/20min.ch.xml
new file mode 100644
index 000000000000..e32f1767010f
--- /dev/null
+++ b/src/chrome/content/rules/20min.ch.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/20minutes.fr.xml b/src/chrome/content/rules/20minutes.fr.xml
new file mode 100644
index 000000000000..1143959632a5
--- /dev/null
+++ b/src/chrome/content/rules/20minutes.fr.xml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/20minuti.ch.xml b/src/chrome/content/rules/20minuti.ch.xml
new file mode 100644
index 000000000000..561bce8b1020
--- /dev/null
+++ b/src/chrome/content/rules/20minuti.ch.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/21.co.xml b/src/chrome/content/rules/21.co.xml
new file mode 100644
index 000000000000..aba675c3c6c3
--- /dev/null
+++ b/src/chrome/content/rules/21.co.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/220volt.hu.xml b/src/chrome/content/rules/220volt.hu.xml
index b30d24449d86..1154be5196b2 100644
--- a/src/chrome/content/rules/220volt.hu.xml
+++ b/src/chrome/content/rules/220volt.hu.xml
@@ -1,9 +1,16 @@
-
+
+
+
-
-
-
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/2345.cn.xml b/src/chrome/content/rules/2345.cn.xml
new file mode 100644
index 000000000000..20b50c7264fd
--- /dev/null
+++ b/src/chrome/content/rules/2345.cn.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/2345.com.xml b/src/chrome/content/rules/2345.com.xml
new file mode 100644
index 000000000000..a036db34f38c
--- /dev/null
+++ b/src/chrome/content/rules/2345.com.xml
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/23Systems.xml b/src/chrome/content/rules/23Systems.xml
index 1a292f58c21e..b517473c8f75 100644
--- a/src/chrome/content/rules/23Systems.xml
+++ b/src/chrome/content/rules/23Systems.xml
@@ -1,13 +1,12 @@
-
+
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/23andMe.com.xml b/src/chrome/content/rules/23andMe.com.xml
index eefed9d724e9..6a76ef026b30 100644
--- a/src/chrome/content/rules/23andMe.com.xml
+++ b/src/chrome/content/rules/23andMe.com.xml
@@ -1,42 +1,18 @@
-
-
+
-
+
+
+
+
+
-
-
-
-
+
diff --git a/src/chrome/content/rules/24-7-Media-clients.xml b/src/chrome/content/rules/24-7-Media-clients.xml
deleted file mode 100644
index 8c1095a67051..000000000000
--- a/src/chrome/content/rules/24-7-Media-clients.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/24-7-Media.xml b/src/chrome/content/rules/24-7-Media.xml
index 59d0f4fcbcd2..ce9fbe17bcd9 100644
--- a/src/chrome/content/rules/24-7-Media.xml
+++ b/src/chrome/content/rules/24-7-Media.xml
@@ -1,7 +1,4 @@
-
+
+
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/24-ways.xml b/src/chrome/content/rules/24-ways.xml
index 3a5884cb6f5e..f10a61ddcd31 100644
--- a/src/chrome/content/rules/24-ways.xml
+++ b/src/chrome/content/rules/24-ways.xml
@@ -1,24 +1,9 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/247exchange.com.xml b/src/chrome/content/rules/247exchange.com.xml
new file mode 100644
index 000000000000..c5ddd861c198
--- /dev/null
+++ b/src/chrome/content/rules/247exchange.com.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/247filmz.xml b/src/chrome/content/rules/247filmz.xml
index 2b46b36b937d..73a1481ae283 100644
--- a/src/chrome/content/rules/247filmz.xml
+++ b/src/chrome/content/rules/247filmz.xml
@@ -1,4 +1,11 @@
-
+
+
+
@@ -7,7 +14,6 @@
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/24img.com.xml b/src/chrome/content/rules/24img.com.xml
new file mode 100644
index 000000000000..0eb5b5692210
--- /dev/null
+++ b/src/chrome/content/rules/24img.com.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/24pay.me.xml b/src/chrome/content/rules/24pay.me.xml
new file mode 100644
index 000000000000..74125c2721b1
--- /dev/null
+++ b/src/chrome/content/rules/24pay.me.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/24paybank.com.xml b/src/chrome/content/rules/24paybank.com.xml
new file mode 100644
index 000000000000..73940e4967bf
--- /dev/null
+++ b/src/chrome/content/rules/24paybank.com.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/254a.com.xml b/src/chrome/content/rules/254a.com.xml
index 55520d9a989c..7696aec103b9 100644
--- a/src/chrome/content/rules/254a.com.xml
+++ b/src/chrome/content/rules/254a.com.xml
@@ -6,7 +6,6 @@
-
+
diff --git a/src/chrome/content/rules/256.com.xml b/src/chrome/content/rules/256.com.xml
deleted file mode 100644
index 4fbd649ad289..000000000000
--- a/src/chrome/content/rules/256.com.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/2600.com.xml b/src/chrome/content/rules/2600.com.xml
new file mode 100644
index 000000000000..879f22088f6a
--- /dev/null
+++ b/src/chrome/content/rules/2600.com.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/2Checkout-mismatches.xml b/src/chrome/content/rules/2Checkout-mismatches.xml
index e8d293e19e08..25e040158b65 100644
--- a/src/chrome/content/rules/2Checkout-mismatches.xml
+++ b/src/chrome/content/rules/2Checkout-mismatches.xml
@@ -2,13 +2,15 @@
For rules that are on by default, see 2Checkout.xml.
-->
-
+
-
-
+
-
+
+
+
+
diff --git a/src/chrome/content/rules/2Checkout.xml b/src/chrome/content/rules/2Checkout.xml
index 12957b211f5b..80349c0eedc7 100644
--- a/src/chrome/content/rules/2Checkout.xml
+++ b/src/chrome/content/rules/2Checkout.xml
@@ -1,25 +1,55 @@
-
+
-
-
-
+
+
-
-
+
+
+
-
-
-
-
+
diff --git a/src/chrome/content/rules/2Dialog.com.xml b/src/chrome/content/rules/2Dialog.com.xml
index c8d45374ddb4..28f1e62ac87d 100644
--- a/src/chrome/content/rules/2Dialog.com.xml
+++ b/src/chrome/content/rules/2Dialog.com.xml
@@ -1,4 +1,9 @@
+
-
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
diff --git a/src/chrome/content/rules/2K_Sports.xml b/src/chrome/content/rules/2K_Sports.xml
index bd595d17024e..beead9daa9b0 100644
--- a/src/chrome/content/rules/2K_Sports.xml
+++ b/src/chrome/content/rules/2K_Sports.xml
@@ -1,8 +1,13 @@
+
-
+
diff --git a/src/chrome/content/rules/2_Ton.com.au.xml b/src/chrome/content/rules/2_Ton.com.au.xml
index 2d8a5143f4ae..ac431509e373 100644
--- a/src/chrome/content/rules/2_Ton.com.au.xml
+++ b/src/chrome/content/rules/2_Ton.com.au.xml
@@ -1,4 +1,10 @@
-
+
+
+
diff --git a/src/chrome/content/rules/2buntu.com.xml b/src/chrome/content/rules/2buntu.com.xml
new file mode 100644
index 000000000000..f95da5e5163a
--- /dev/null
+++ b/src/chrome/content/rules/2buntu.com.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/2ch.cm.xml b/src/chrome/content/rules/2ch.cm.xml
index 7e7f35284570..84e8a9f03c81 100644
--- a/src/chrome/content/rules/2ch.cm.xml
+++ b/src/chrome/content/rules/2ch.cm.xml
@@ -1,13 +1,20 @@
-
+
+
+
-
+
-
+
-
+
diff --git a/src/chrome/content/rules/2ch.hk.xml b/src/chrome/content/rules/2ch.hk.xml
index 36e3fa1811ce..b07f1e74960b 100644
--- a/src/chrome/content/rules/2ch.hk.xml
+++ b/src/chrome/content/rules/2ch.hk.xml
@@ -1,12 +1,13 @@
-
+
-
+
-
+
+
diff --git a/src/chrome/content/rules/2ch.net.xml b/src/chrome/content/rules/2ch.net.xml
new file mode 100644
index 000000000000..3952be46332c
--- /dev/null
+++ b/src/chrome/content/rules/2ch.net.xml
@@ -0,0 +1,248 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/2co.co.xml b/src/chrome/content/rules/2co.co.xml
new file mode 100644
index 000000000000..d595601d8221
--- /dev/null
+++ b/src/chrome/content/rules/2co.co.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/2cyr.com.xml b/src/chrome/content/rules/2cyr.com.xml
new file mode 100644
index 000000000000..67541316df25
--- /dev/null
+++ b/src/chrome/content/rules/2cyr.com.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/2ip.ru.xml b/src/chrome/content/rules/2ip.ru.xml
new file mode 100644
index 000000000000..a6f23359ebcc
--- /dev/null
+++ b/src/chrome/content/rules/2ip.ru.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/2kom.ru.xml b/src/chrome/content/rules/2kom.ru.xml
new file mode 100644
index 000000000000..87258edf931b
--- /dev/null
+++ b/src/chrome/content/rules/2kom.ru.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/2mdn.net.xml b/src/chrome/content/rules/2mdn.net.xml
index 52c4d714b8dc..f9d314dc2268 100644
--- a/src/chrome/content/rules/2mdn.net.xml
+++ b/src/chrome/content/rules/2mdn.net.xml
@@ -7,12 +7,11 @@
-
+ -->
diff --git a/src/chrome/content/rules/2nd_Vote.com.xml b/src/chrome/content/rules/2nd_Vote.com.xml
index 8bb1131c1f57..93edbf0b5507 100644
--- a/src/chrome/content/rules/2nd_Vote.com.xml
+++ b/src/chrome/content/rules/2nd_Vote.com.xml
@@ -12,7 +12,6 @@
-
+
diff --git a/src/chrome/content/rules/2pay.ru.xml b/src/chrome/content/rules/2pay.ru.xml
index d4de613a7ffc..200d90c53664 100644
--- a/src/chrome/content/rules/2pay.ru.xml
+++ b/src/chrome/content/rules/2pay.ru.xml
@@ -19,7 +19,7 @@
-
-
+
+
diff --git a/src/chrome/content/rules/2shared.xml b/src/chrome/content/rules/2shared.xml
index 7b67b7a6602d..32711803f4a4 100644
--- a/src/chrome/content/rules/2shared.xml
+++ b/src/chrome/content/rules/2shared.xml
@@ -1,4 +1,4 @@
-
+
diff --git a/src/chrome/content/rules/2x.com.xml b/src/chrome/content/rules/2x.com.xml
new file mode 100644
index 000000000000..aec295bcdcff
--- /dev/null
+++ b/src/chrome/content/rules/2x.com.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/chrome/content/rules/3.cn.xml b/src/chrome/content/rules/3.cn.xml
new file mode 100644
index 000000000000..9502217fb2df
--- /dev/null
+++ b/src/chrome/content/rules/3.cn.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/30_Boxes.com.xml b/src/chrome/content/rules/30_Boxes.com.xml
deleted file mode 100644
index f3d3b645c219..000000000000
--- a/src/chrome/content/rules/30_Boxes.com.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/33option.com.xml b/src/chrome/content/rules/33option.com.xml
new file mode 100644
index 000000000000..0c78a1874a67
--- /dev/null
+++ b/src/chrome/content/rules/33option.com.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/350.org.xml b/src/chrome/content/rules/350.org.xml
new file mode 100644
index 000000000000..4ddbb90df781
--- /dev/null
+++ b/src/chrome/content/rules/350.org.xml
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/350.xml b/src/chrome/content/rules/350.xml
deleted file mode 100644
index 47ff4a7a0824..000000000000
--- a/src/chrome/content/rules/350.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/350zEvolution.com.xml b/src/chrome/content/rules/350zEvolution.com.xml
index a2e0e54394e7..94f864bb33b2 100644
--- a/src/chrome/content/rules/350zEvolution.com.xml
+++ b/src/chrome/content/rules/350zEvolution.com.xml
@@ -2,16 +2,15 @@
(www.)?: Refused
-->
-
+
-
+
-
+
diff --git a/src/chrome/content/rules/360.cn.xml b/src/chrome/content/rules/360.cn.xml
new file mode 100644
index 000000000000..ec4babe55fef
--- /dev/null
+++ b/src/chrome/content/rules/360.cn.xml
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/360_Safe.com.xml b/src/chrome/content/rules/360_Safe.com.xml
new file mode 100644
index 000000000000..f2777591444a
--- /dev/null
+++ b/src/chrome/content/rules/360_Safe.com.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/360_Total_Security.com.xml b/src/chrome/content/rules/360_Total_Security.com.xml
new file mode 100644
index 000000000000..56b8ea48e40c
--- /dev/null
+++ b/src/chrome/content/rules/360_Total_Security.com.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/360_Yield.xml b/src/chrome/content/rules/360_Yield.xml
index b862aef4071b..108f9b0c3d8f 100644
--- a/src/chrome/content/rules/360_Yield.xml
+++ b/src/chrome/content/rules/360_Yield.xml
@@ -1,37 +1,18 @@
-
-
+
-
-
+
+
+
+
-
-
-
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/360buy.com.xml b/src/chrome/content/rules/360buy.com.xml
index 56074e2eae4d..9cb622e4dea9 100644
--- a/src/chrome/content/rules/360buy.com.xml
+++ b/src/chrome/content/rules/360buy.com.xml
@@ -1,12 +1,24 @@
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/360buyimg.com.xml b/src/chrome/content/rules/360buyimg.com.xml
new file mode 100644
index 000000000000..6bac7996e2bf
--- /dev/null
+++ b/src/chrome/content/rules/360buyimg.com.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/365_Tickets.co.uk.xml b/src/chrome/content/rules/365_Tickets.co.uk.xml
index 226270b8fbd7..9bdad5dd9cad 100644
--- a/src/chrome/content/rules/365_Tickets.co.uk.xml
+++ b/src/chrome/content/rules/365_Tickets.co.uk.xml
@@ -5,7 +5,7 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/38.de.xml b/src/chrome/content/rules/38.de.xml
index 95c56533c969..5ef5de2652cd 100644
--- a/src/chrome/content/rules/38.de.xml
+++ b/src/chrome/content/rules/38.de.xml
@@ -4,19 +4,24 @@
^38.de: Mismatched
+
+ STS header includes includeSubdomains
+
-->
-
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/3D_Robotics.com.xml b/src/chrome/content/rules/3D_Robotics.com.xml
index a80de50833e1..ff41d350ef67 100644
--- a/src/chrome/content/rules/3D_Robotics.com.xml
+++ b/src/chrome/content/rules/3D_Robotics.com.xml
@@ -1,4 +1,8 @@
+
-
+
-
+
+
-
+
diff --git a/src/chrome/content/rules/3M.com.xml b/src/chrome/content/rules/3M.com.xml
index 4d782fc91ad3..6caa5297b33e 100644
--- a/src/chrome/content/rules/3M.com.xml
+++ b/src/chrome/content/rules/3M.com.xml
@@ -28,7 +28,9 @@
-
+
+
+
-
-
-
-
-
-
-
-
-
+
+
-
+ to="https://cdn.mediaworks.nz/" />
diff --git a/src/chrome/content/rules/3bbwifi.com.xml b/src/chrome/content/rules/3bbwifi.com.xml
index 5bef001a0c4c..3d8dcac15c04 100644
--- a/src/chrome/content/rules/3bbwifi.com.xml
+++ b/src/chrome/content/rules/3bbwifi.com.xml
@@ -1,4 +1,11 @@
-
+
+
+
diff --git a/src/chrome/content/rules/3cdn.net.xml b/src/chrome/content/rules/3cdn.net.xml
new file mode 100644
index 000000000000..b7b12ca0d598
--- /dev/null
+++ b/src/chrome/content/rules/3cdn.net.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/3cdn.xml b/src/chrome/content/rules/3cdn.xml
deleted file mode 100644
index c129edf403ef..000000000000
--- a/src/chrome/content/rules/3cdn.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/3conline.com.xml b/src/chrome/content/rules/3conline.com.xml
new file mode 100644
index 000000000000..1b153bbcbfe0
--- /dev/null
+++ b/src/chrome/content/rules/3conline.com.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/3dcenter.xml b/src/chrome/content/rules/3dcenter.xml
deleted file mode 100644
index 771b7d281bf5..000000000000
--- a/src/chrome/content/rules/3dcenter.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/3dnews.ru.xml b/src/chrome/content/rules/3dnews.ru.xml
new file mode 100644
index 000000000000..1a4ea6f92ce2
--- /dev/null
+++ b/src/chrome/content/rules/3dnews.ru.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/3dr.com.xml b/src/chrome/content/rules/3dr.com.xml
new file mode 100644
index 000000000000..adfb681c681a
--- /dev/null
+++ b/src/chrome/content/rules/3dr.com.xml
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/3dsupply.de.xml b/src/chrome/content/rules/3dsupply.de.xml
new file mode 100644
index 000000000000..b8394e91d620
--- /dev/null
+++ b/src/chrome/content/rules/3dsupply.de.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/3g2upl4pq6kufc4m.onion.xml b/src/chrome/content/rules/3g2upl4pq6kufc4m.onion.xml
new file mode 100644
index 000000000000..ad046cc1c13a
--- /dev/null
+++ b/src/chrome/content/rules/3g2upl4pq6kufc4m.onion.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/3sat.xml b/src/chrome/content/rules/3sat.xml
new file mode 100644
index 000000000000..8104f510c603
--- /dev/null
+++ b/src/chrome/content/rules/3sat.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/3scale.net.xml b/src/chrome/content/rules/3scale.net.xml
new file mode 100644
index 000000000000..38af47c4846c
--- /dev/null
+++ b/src/chrome/content/rules/3scale.net.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/3scale.xml b/src/chrome/content/rules/3scale.xml
deleted file mode 100644
index 12632442fd57..000000000000
--- a/src/chrome/content/rules/3scale.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/chrome/content/rules/3taps.xml b/src/chrome/content/rules/3taps.xml
index 8fc29d99b3a4..2fe2cd365ee3 100644
--- a/src/chrome/content/rules/3taps.xml
+++ b/src/chrome/content/rules/3taps.xml
@@ -1,13 +1,21 @@
-
+
+
+
-
+
+
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/3v1n0.net.xml b/src/chrome/content/rules/3v1n0.net.xml
new file mode 100644
index 000000000000..1011e615def9
--- /dev/null
+++ b/src/chrome/content/rules/3v1n0.net.xml
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/419_Eater.com.xml b/src/chrome/content/rules/419_Eater.com.xml
index 8ad6551bbfbb..dc83a2b302dd 100644
--- a/src/chrome/content/rules/419_Eater.com.xml
+++ b/src/chrome/content/rules/419_Eater.com.xml
@@ -19,7 +19,6 @@
-
+
diff --git a/src/chrome/content/rules/42Floors.com.xml b/src/chrome/content/rules/42Floors.com.xml
index bee79dc03b3f..8bd4015b8c86 100644
--- a/src/chrome/content/rules/42Floors.com.xml
+++ b/src/chrome/content/rules/42Floors.com.xml
@@ -1,4 +1,8 @@
+
-
+
diff --git a/src/chrome/content/rules/435_by_MJC.com.xml b/src/chrome/content/rules/435_by_MJC.com.xml
index 0f82cf965143..7606988d6232 100644
--- a/src/chrome/content/rules/435_by_MJC.com.xml
+++ b/src/chrome/content/rules/435_by_MJC.com.xml
@@ -1,4 +1,9 @@
+
-
+
diff --git a/src/chrome/content/rules/444.hu.xml b/src/chrome/content/rules/444.hu.xml
new file mode 100644
index 000000000000..86cfa71c61e7
--- /dev/null
+++ b/src/chrome/content/rules/444.hu.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/451Unavailable.org.xml b/src/chrome/content/rules/451Unavailable.org.xml
new file mode 100644
index 000000000000..ef3030326d8a
--- /dev/null
+++ b/src/chrome/content/rules/451Unavailable.org.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/451_Unavailable.org.xml b/src/chrome/content/rules/451_Unavailable.org.xml
deleted file mode 100644
index 31c6f15bb82e..000000000000
--- a/src/chrome/content/rules/451_Unavailable.org.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/45_Million_Voices.xml b/src/chrome/content/rules/45_Million_Voices.xml
deleted file mode 100644
index 5e28009ef038..000000000000
--- a/src/chrome/content/rules/45_Million_Voices.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/chrome/content/rules/48months.ie.xml b/src/chrome/content/rules/48months.ie.xml
index bc0d5864ca2a..6f1a42a0fc40 100644
--- a/src/chrome/content/rules/48months.ie.xml
+++ b/src/chrome/content/rules/48months.ie.xml
@@ -1,8 +1,4 @@
-
-
+
diff --git a/src/chrome/content/rules/49gov.ru.xml b/src/chrome/content/rules/49gov.ru.xml
new file mode 100644
index 000000000000..b746dc6891c0
--- /dev/null
+++ b/src/chrome/content/rules/49gov.ru.xml
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/4DO.xml b/src/chrome/content/rules/4DO.xml
index a1ef3c998244..929be4efb849 100644
--- a/src/chrome/content/rules/4DO.xml
+++ b/src/chrome/content/rules/4DO.xml
@@ -1,4 +1,4 @@
-
+
diff --git a/src/chrome/content/rules/4PDA.xml b/src/chrome/content/rules/4PDA.xml
new file mode 100644
index 000000000000..faae363b026d
--- /dev/null
+++ b/src/chrome/content/rules/4PDA.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/4RX.com.xml b/src/chrome/content/rules/4RX.com.xml
deleted file mode 100644
index 576b8bf3d6e1..000000000000
--- a/src/chrome/content/rules/4RX.com.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/chrome/content/rules/4RunnerForex.com.xml b/src/chrome/content/rules/4RunnerForex.com.xml
deleted file mode 100644
index 344954b45e83..000000000000
--- a/src/chrome/content/rules/4RunnerForex.com.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/chrome/content/rules/4Shared.xml b/src/chrome/content/rules/4Shared.xml
index ce9cd6e6d613..d826b7ca283a 100644
--- a/src/chrome/content/rules/4Shared.xml
+++ b/src/chrome/content/rules/4Shared.xml
@@ -1,18 +1,79 @@
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
-
+
diff --git a/src/chrome/content/rules/4Tulemar.xml b/src/chrome/content/rules/4Tulemar.xml
index 4261173884b2..28c9eeec7977 100644
--- a/src/chrome/content/rules/4Tulemar.xml
+++ b/src/chrome/content/rules/4Tulemar.xml
@@ -1,4 +1,8 @@
+
-
+
-
+
+
-
+
diff --git a/src/chrome/content/rules/4dsply.com.xml b/src/chrome/content/rules/4dsply.com.xml
new file mode 100644
index 000000000000..02fb273a6f17
--- /dev/null
+++ b/src/chrome/content/rules/4dsply.com.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/4mlinux.com.xml b/src/chrome/content/rules/4mlinux.com.xml
new file mode 100644
index 000000000000..fa28035ba346
--- /dev/null
+++ b/src/chrome/content/rules/4mlinux.com.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
diff --git a/src/chrome/content/rules/4plebs.org.xml b/src/chrome/content/rules/4plebs.org.xml
index ec2c7bd9fecb..71b01abd0ce2 100644
--- a/src/chrome/content/rules/4plebs.org.xml
+++ b/src/chrome/content/rules/4plebs.org.xml
@@ -1,7 +1,8 @@
-
+
+
-
-
+
-
-
+
diff --git a/src/chrome/content/rules/508surveys.com.xml b/src/chrome/content/rules/508surveys.com.xml
deleted file mode 100644
index 22bedea4fde5..000000000000
--- a/src/chrome/content/rules/508surveys.com.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/chrome/content/rules/50gameslike.com.xml b/src/chrome/content/rules/50gameslike.com.xml
new file mode 100644
index 000000000000..80d3ebe20c9e
--- /dev/null
+++ b/src/chrome/content/rules/50gameslike.com.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/511tactical.com.xml b/src/chrome/content/rules/511tactical.com.xml
index 6bfb2da88934..d30718f0d489 100644
--- a/src/chrome/content/rules/511tactical.com.xml
+++ b/src/chrome/content/rules/511tactical.com.xml
@@ -2,5 +2,5 @@
-
+
diff --git a/src/chrome/content/rules/512_Pixels.xml b/src/chrome/content/rules/512_Pixels.xml
index 3399d7213ff4..5718594fd48b 100644
--- a/src/chrome/content/rules/512_Pixels.xml
+++ b/src/chrome/content/rules/512_Pixels.xml
@@ -1,10 +1,10 @@
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/55ch.org.xml b/src/chrome/content/rules/55ch.org.xml
index 25ad62c4cf4e..acf1b118b4c9 100644
--- a/src/chrome/content/rules/55ch.org.xml
+++ b/src/chrome/content/rules/55ch.org.xml
@@ -1,13 +1,19 @@
-
+
+
+
-
+
-
+
diff --git a/src/chrome/content/rules/55chan.org.xml b/src/chrome/content/rules/55chan.org.xml
index 4d8db38d7b30..eafa00d4d218 100644
--- a/src/chrome/content/rules/55chan.org.xml
+++ b/src/chrome/content/rules/55chan.org.xml
@@ -1,13 +1,12 @@
-
+
-
+
diff --git a/src/chrome/content/rules/58.com.xml b/src/chrome/content/rules/58.com.xml
new file mode 100644
index 000000000000..d7fcc292ea27
--- /dev/null
+++ b/src/chrome/content/rules/58.com.xml
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/58CDN.com.cn.xml b/src/chrome/content/rules/58CDN.com.cn.xml
new file mode 100644
index 000000000000..3f6e6c6a2094
--- /dev/null
+++ b/src/chrome/content/rules/58CDN.com.cn.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/5NINES.xml b/src/chrome/content/rules/5NINES.xml
index e801aa8a0c0f..78aca6ef13b3 100644
--- a/src/chrome/content/rules/5NINES.xml
+++ b/src/chrome/content/rules/5NINES.xml
@@ -1,11 +1,15 @@
+
-
+
diff --git a/src/chrome/content/rules/5_July.org.xml b/src/chrome/content/rules/5_July.org.xml
index 099c18aa7b19..03045fe68084 100644
--- a/src/chrome/content/rules/5_July.org.xml
+++ b/src/chrome/content/rules/5_July.org.xml
@@ -1,7 +1,8 @@
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/5dec.ru.xml b/src/chrome/content/rules/5dec.ru.xml
new file mode 100644
index 000000000000..838376b7c304
--- /dev/null
+++ b/src/chrome/content/rules/5dec.ru.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/5ka.ru.xml b/src/chrome/content/rules/5ka.ru.xml
new file mode 100644
index 000000000000..bdcaf98274dd
--- /dev/null
+++ b/src/chrome/content/rules/5ka.ru.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/5min.com.xml b/src/chrome/content/rules/5min.com.xml
index 943a96c369b3..d699dc1478b8 100644
--- a/src/chrome/content/rules/5min.com.xml
+++ b/src/chrome/content/rules/5min.com.xml
@@ -1,4 +1,19 @@
+
-
+
@@ -75,12 +71,15 @@
+
+
+
diff --git a/src/chrome/content/rules/5vpn.net.xml b/src/chrome/content/rules/5vpn.net.xml
index 28162f1587b2..1c49aefd7f78 100644
--- a/src/chrome/content/rules/5vpn.net.xml
+++ b/src/chrome/content/rules/5vpn.net.xml
@@ -7,7 +7,6 @@
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/66option.com.xml b/src/chrome/content/rules/66option.com.xml
new file mode 100644
index 000000000000..de2db8f310f5
--- /dev/null
+++ b/src/chrome/content/rules/66option.com.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/6PM.com.xml b/src/chrome/content/rules/6PM.com.xml
index eead38441978..aecbef4ad1cb 100644
--- a/src/chrome/content/rules/6PM.com.xml
+++ b/src/chrome/content/rules/6PM.com.xml
@@ -7,16 +7,9 @@
(www.)?: Mismatched
-
- Fully covered hosts in *6pm.com:
-
- - secure-www
-
-->
-
diff --git a/src/chrome/content/rules/6Scan.com.xml b/src/chrome/content/rules/6Scan.com.xml
deleted file mode 100644
index 7477d35cb6c8..000000000000
--- a/src/chrome/content/rules/6Scan.com.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/6Scan_Security.com.xml b/src/chrome/content/rules/6Scan_Security.com.xml
new file mode 100644
index 000000000000..f3cd6c21a7c9
--- /dev/null
+++ b/src/chrome/content/rules/6Scan_Security.com.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/6Wunderkinder.xml b/src/chrome/content/rules/6Wunderkinder.xml
index 04154c8ec6ce..d6503316b982 100644
--- a/src/chrome/content/rules/6Wunderkinder.xml
+++ b/src/chrome/content/rules/6Wunderkinder.xml
@@ -1,10 +1,4 @@
-
-
+
diff --git a/src/chrome/content/rules/6connect.com.xml b/src/chrome/content/rules/6connect.com.xml
new file mode 100644
index 000000000000..b7c6c6d8d84b
--- /dev/null
+++ b/src/chrome/content/rules/6connect.com.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/6to4.ru.xml b/src/chrome/content/rules/6to4.ru.xml
new file mode 100644
index 000000000000..60f957bf7f8c
--- /dev/null
+++ b/src/chrome/content/rules/6to4.ru.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/6xq.net.xml b/src/chrome/content/rules/6xq.net.xml
index f3fb2f0c413c..eeb062a71207 100644
--- a/src/chrome/content/rules/6xq.net.xml
+++ b/src/chrome/content/rules/6xq.net.xml
@@ -1,15 +1,16 @@
-
+ Non-functional hosts
+ SSL peer certificate was not OK:
+ - ns.6xq.net
-
-
+-->
+
+
+
+
+
-
-
+
+
diff --git a/src/chrome/content/rules/7-Eleven.com.xml b/src/chrome/content/rules/7-Eleven.com.xml
index 471f29475983..97428923c846 100644
--- a/src/chrome/content/rules/7-Eleven.com.xml
+++ b/src/chrome/content/rules/7-Eleven.com.xml
@@ -1,7 +1,9 @@
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
-
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
-
+
diff --git a/src/chrome/content/rules/77777i.com.xml b/src/chrome/content/rules/77777i.com.xml
deleted file mode 100644
index 9ff3201bb8cf..000000000000
--- a/src/chrome/content/rules/77777i.com.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/chrome/content/rules/777coin.com.xml b/src/chrome/content/rules/777coin.com.xml
deleted file mode 100644
index 9329fa852f99..000000000000
--- a/src/chrome/content/rules/777coin.com.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/7Headlines.com.xml b/src/chrome/content/rules/7Headlines.com.xml
index 680d8ab6d56b..e0830a2a803e 100644
--- a/src/chrome/content/rules/7Headlines.com.xml
+++ b/src/chrome/content/rules/7Headlines.com.xml
@@ -2,15 +2,25 @@
For other Pixnet coverage, see Pixnet.net.xml.
- ^: refused
+ CDN buckets:
+ - asset-7headlines.pixfs.net
+
+
+ ^7headlines.com: Refused
asset.7headlines.net: 503, akamai
-->
-
+
+
+
+
+
-
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/7_Elements.co.uk.xml b/src/chrome/content/rules/7_Elements.co.uk.xml
new file mode 100644
index 000000000000..0a416d1689cb
--- /dev/null
+++ b/src/chrome/content/rules/7_Elements.co.uk.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/7_Springs.com.xml b/src/chrome/content/rules/7_Springs.com.xml
index 659e35199576..e664eb7b535e 100644
--- a/src/chrome/content/rules/7_Springs.com.xml
+++ b/src/chrome/content/rules/7_Springs.com.xml
@@ -15,7 +15,7 @@ Fetch error: http://www.7springs.com/ => https://www.7springs.com/: (7, 'Failed
- Images on (www.) from www.7springsresortrealty.com
-->
-
+
@@ -24,7 +24,6 @@ Fetch error: http://www.7springs.com/ => https://www.7springs.com/: (7, 'Failed
-
+
diff --git a/src/chrome/content/rules/7chan.xml b/src/chrome/content/rules/7chan.xml
index c66e1505d759..21add2a99dab 100644
--- a/src/chrome/content/rules/7chan.xml
+++ b/src/chrome/content/rules/7chan.xml
@@ -1,6 +1,25 @@
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/7digital.xml b/src/chrome/content/rules/7digital.xml
index 43bd1e1cdd09..08e22129a2fe 100644
--- a/src/chrome/content/rules/7digital.xml
+++ b/src/chrome/content/rules/7digital.xml
@@ -1,52 +1,48 @@
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
diff --git a/src/chrome/content/rules/7search.com.xml b/src/chrome/content/rules/7search.com.xml
new file mode 100644
index 000000000000..d4617af617d3
--- /dev/null
+++ b/src/chrome/content/rules/7search.com.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/7static.com.xml b/src/chrome/content/rules/7static.com.xml
new file mode 100644
index 000000000000..377fc77a9f47
--- /dev/null
+++ b/src/chrome/content/rules/7static.com.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/7x7-journal.ru.xml b/src/chrome/content/rules/7x7-journal.ru.xml
new file mode 100644
index 000000000000..2ca082a1a489
--- /dev/null
+++ b/src/chrome/content/rules/7x7-journal.ru.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/80.lv.xml b/src/chrome/content/rules/80.lv.xml
new file mode 100644
index 000000000000..eb72f012fbd9
--- /dev/null
+++ b/src/chrome/content/rules/80.lv.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/80s_Purple.com.xml b/src/chrome/content/rules/80s_Purple.com.xml
index 02569ef9067a..df30f27eb2f9 100644
--- a/src/chrome/content/rules/80s_Purple.com.xml
+++ b/src/chrome/content/rules/80s_Purple.com.xml
@@ -29,7 +29,7 @@ Fetch error: http://80spurple.com/ => https://80spurple.com/: (28, 'Operation ti
- .www
-->
-
+
diff --git a/src/chrome/content/rules/888173.net.xml b/src/chrome/content/rules/888173.net.xml
index 25d7e15a8b9e..70b4a871ac3d 100644
--- a/src/chrome/content/rules/888173.net.xml
+++ b/src/chrome/content/rules/888173.net.xml
@@ -22,7 +22,6 @@
-
+
diff --git a/src/chrome/content/rules/888VoIP.com.xml b/src/chrome/content/rules/888VoIP.com.xml
index 1e4da445b5c6..95c888019d7b 100644
--- a/src/chrome/content/rules/888VoIP.com.xml
+++ b/src/chrome/content/rules/888VoIP.com.xml
@@ -1,13 +1,19 @@
-
+
+
+
-
+
-
+
diff --git a/src/chrome/content/rules/8ch.net.xml b/src/chrome/content/rules/8ch.net.xml
index a220227eebb9..8d44d1437753 100644
--- a/src/chrome/content/rules/8ch.net.xml
+++ b/src/chrome/content/rules/8ch.net.xml
@@ -6,7 +6,12 @@
-->
+
+
+
+
@@ -14,7 +19,7 @@
-->
-
+
+
+
+
diff --git a/src/chrome/content/rules/8tracks.xml b/src/chrome/content/rules/8tracks.xml
index 50e724911b61..f3ece9cbf230 100644
--- a/src/chrome/content/rules/8tracks.xml
+++ b/src/chrome/content/rules/8tracks.xml
@@ -1,4 +1,8 @@
+
-
+
diff --git a/src/chrome/content/rules/8win88win.com.xml b/src/chrome/content/rules/8win88win.com.xml
deleted file mode 100644
index 6666593e18a4..000000000000
--- a/src/chrome/content/rules/8win88win.com.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/chrome/content/rules/91.com.xml b/src/chrome/content/rules/91.com.xml
new file mode 100644
index 000000000000..5fba17bec7dd
--- /dev/null
+++ b/src/chrome/content/rules/91.com.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/911.gov.xml b/src/chrome/content/rules/911.gov.xml
new file mode 100644
index 000000000000..efafecf6c827
--- /dev/null
+++ b/src/chrome/content/rules/911.gov.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/918autoloans.com.xml b/src/chrome/content/rules/918autoloans.com.xml
deleted file mode 100644
index dec92c9369dc..000000000000
--- a/src/chrome/content/rules/918autoloans.com.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/95516.com.xml b/src/chrome/content/rules/95516.com.xml
new file mode 100644
index 000000000000..3c967fbb85ec
--- /dev/null
+++ b/src/chrome/content/rules/95516.com.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/96boards.org.xml b/src/chrome/content/rules/96boards.org.xml
new file mode 100644
index 000000000000..79b2ab8921fa
--- /dev/null
+++ b/src/chrome/content/rules/96boards.org.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/99Bitcoins.com.xml b/src/chrome/content/rules/99Bitcoins.com.xml
new file mode 100644
index 000000000000..4585483ccbd6
--- /dev/null
+++ b/src/chrome/content/rules/99Bitcoins.com.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/9gag.com.xml b/src/chrome/content/rules/9gag.com.xml
new file mode 100644
index 000000000000..386d33da0a88
--- /dev/null
+++ b/src/chrome/content/rules/9gag.com.xml
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/9gag.xml b/src/chrome/content/rules/9gag.xml
deleted file mode 100644
index 809b08385403..000000000000
--- a/src/chrome/content/rules/9gag.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/9to5google.com.xml b/src/chrome/content/rules/9to5google.com.xml
new file mode 100644
index 000000000000..6658437739fe
--- /dev/null
+++ b/src/chrome/content/rules/9to5google.com.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/9to5mac.com.xml b/src/chrome/content/rules/9to5mac.com.xml
new file mode 100644
index 000000000000..61bdd464cfc1
--- /dev/null
+++ b/src/chrome/content/rules/9to5mac.com.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/9to5toys.com.xml b/src/chrome/content/rules/9to5toys.com.xml
new file mode 100644
index 000000000000..5aa16d930750
--- /dev/null
+++ b/src/chrome/content/rules/9to5toys.com.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/9tv.co.il.xml b/src/chrome/content/rules/9tv.co.il.xml
new file mode 100644
index 000000000000..f334837fd545
--- /dev/null
+++ b/src/chrome/content/rules/9tv.co.il.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/A-3.ru.xml b/src/chrome/content/rules/A-3.ru.xml
new file mode 100644
index 000000000000..6b738399a606
--- /dev/null
+++ b/src/chrome/content/rules/A-3.ru.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/A.fsdn.com.xml b/src/chrome/content/rules/A.fsdn.com.xml
deleted file mode 100644
index b87aa5e35de0..000000000000
--- a/src/chrome/content/rules/A.fsdn.com.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/A14_Electronics.com.xml b/src/chrome/content/rules/A14_Electronics.com.xml
index b0621f34ff6e..d239b200e61b 100644
--- a/src/chrome/content/rules/A14_Electronics.com.xml
+++ b/src/chrome/content/rules/A14_Electronics.com.xml
@@ -1,7 +1,13 @@
-
+
+
+
-
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/A3li.li.xml b/src/chrome/content/rules/A3li.li.xml
new file mode 100644
index 000000000000..c56b943cabf1
--- /dev/null
+++ b/src/chrome/content/rules/A3li.li.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/A3li.xml b/src/chrome/content/rules/A3li.xml
deleted file mode 100644
index e0e51a5db981..000000000000
--- a/src/chrome/content/rules/A3li.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/chrome/content/rules/A4apphack-mismatches.xml b/src/chrome/content/rules/A4apphack-mismatches.xml
index cc6b83fbfd8f..d92baf46dd23 100644
--- a/src/chrome/content/rules/A4apphack-mismatches.xml
+++ b/src/chrome/content/rules/A4apphack-mismatches.xml
@@ -1,8 +1,4 @@
-
-
+
diff --git a/src/chrome/content/rules/A4apphack.xml b/src/chrome/content/rules/A4apphack.xml
deleted file mode 100644
index 95da43418382..000000000000
--- a/src/chrome/content/rules/A4apphack.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/A8.net.xml b/src/chrome/content/rules/A8.net.xml
new file mode 100644
index 000000000000..82f31db724dc
--- /dev/null
+++ b/src/chrome/content/rules/A8.net.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/AA.xml b/src/chrome/content/rules/AA.xml
index 1d0f46fc72cf..170833a412f5 100644
--- a/src/chrome/content/rules/AA.xml
+++ b/src/chrome/content/rules/AA.xml
@@ -1,14 +1,18 @@
+
-
+
-
-
-
+
+
+
-
+
diff --git a/src/chrome/content/rules/AAAI.org.xml b/src/chrome/content/rules/AAAI.org.xml
new file mode 100644
index 000000000000..3efc8e5868e5
--- /dev/null
+++ b/src/chrome/content/rules/AAAI.org.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/AAAS.org.xml b/src/chrome/content/rules/AAAS.org.xml
index c8a8be8a911c..389dbdf7462a 100644
--- a/src/chrome/content/rules/AAAS.org.xml
+++ b/src/chrome/content/rules/AAAS.org.xml
@@ -1,16 +1,20 @@
@@ -18,7 +22,7 @@
-
+
-
\ No newline at end of file
+
diff --git a/src/chrome/content/rules/AACQA.gov.au.xml b/src/chrome/content/rules/AACQA.gov.au.xml
new file mode 100644
index 000000000000..74724e317a7b
--- /dev/null
+++ b/src/chrome/content/rules/AACQA.gov.au.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/AACQA.xml b/src/chrome/content/rules/AACQA.xml
deleted file mode 100644
index 2c4b45ab45db..000000000000
--- a/src/chrome/content/rules/AACQA.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/chrome/content/rules/AARP.org.xml b/src/chrome/content/rules/AARP.org.xml
index 3c25a11beb8a..315415537e10 100644
--- a/src/chrome/content/rules/AARP.org.xml
+++ b/src/chrome/content/rules/AARP.org.xml
@@ -1,4 +1,9 @@
+
-
+
diff --git a/src/chrome/content/rules/AAS.org.xml b/src/chrome/content/rules/AAS.org.xml
index af9644f35d94..9dd34e0c832b 100644
--- a/src/chrome/content/rules/AAS.org.xml
+++ b/src/chrome/content/rules/AAS.org.xml
@@ -1,5 +1,12 @@
+
-
+
+
-
+
+
+
+
+
+
+
+
+
-
-
+
+
+
diff --git a/src/chrome/content/rules/AAU.at.xml b/src/chrome/content/rules/AAU.at.xml
index 96584e265b51..13d4451b2a2c 100644
--- a/src/chrome/content/rules/AAU.at.xml
+++ b/src/chrome/content/rules/AAU.at.xml
@@ -3,7 +3,6 @@
-
+
diff --git a/src/chrome/content/rules/AB9IL.net.xml b/src/chrome/content/rules/AB9IL.net.xml
index 3e09bdddb8e8..5473f1b45291 100644
--- a/src/chrome/content/rules/AB9IL.net.xml
+++ b/src/chrome/content/rules/AB9IL.net.xml
@@ -4,7 +4,6 @@
-
+
diff --git a/src/chrome/content/rules/ABC-Music-Publishing.xml b/src/chrome/content/rules/ABC-Music-Publishing.xml
index 76fccbf13739..1696a57180c8 100644
--- a/src/chrome/content/rules/ABC-Music-Publishing.xml
+++ b/src/chrome/content/rules/ABC-Music-Publishing.xml
@@ -4,7 +4,7 @@
- ABC-Digital.xml
-->
-
+
diff --git a/src/chrome/content/rules/ABC_News-falsemixed.xml b/src/chrome/content/rules/ABC_News-falsemixed.xml
index 60a76181fa7b..a0556f6807b6 100644
--- a/src/chrome/content/rules/ABC_News-falsemixed.xml
+++ b/src/chrome/content/rules/ABC_News-falsemixed.xml
@@ -2,7 +2,7 @@
For rules not causing false/broken MCB, see ABC_News.xml.
-->
-
+
diff --git a/src/chrome/content/rules/ABC_News.xml b/src/chrome/content/rules/ABC_News.xml
index 87b6a8bc52cc..54e916a19a73 100644
--- a/src/chrome/content/rules/ABC_News.xml
+++ b/src/chrome/content/rules/ABC_News.xml
@@ -25,7 +25,7 @@
- abcnews.go.com from pixel.quantserve.com
-->
-
+
diff --git a/src/chrome/content/rules/ABI.org.uk.xml b/src/chrome/content/rules/ABI.org.uk.xml
new file mode 100644
index 000000000000..fcb6bd0f4ac4
--- /dev/null
+++ b/src/chrome/content/rules/ABI.org.uk.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/ABIS-studien.se.xml b/src/chrome/content/rules/ABIS-studien.se.xml
index 9e9b011beffb..ee6186dd274c 100644
--- a/src/chrome/content/rules/ABIS-studien.se.xml
+++ b/src/chrome/content/rules/ABIS-studien.se.xml
@@ -1,7 +1,6 @@
-
-
+
diff --git a/src/chrome/content/rules/ABI_Research.xml b/src/chrome/content/rules/ABI_Research.xml
index d715b8ac294b..1e9ca7c95e38 100644
--- a/src/chrome/content/rules/ABI_Research.xml
+++ b/src/chrome/content/rules/ABI_Research.xml
@@ -1,22 +1,22 @@
-
+
-
+
-
\ No newline at end of file
+
diff --git a/src/chrome/content/rules/ABNAMRO.xml b/src/chrome/content/rules/ABNAMRO.xml
index ab1688e5b55b..521722787d60 100644
--- a/src/chrome/content/rules/ABNAMRO.xml
+++ b/src/chrome/content/rules/ABNAMRO.xml
@@ -18,7 +18,6 @@
-
+
diff --git a/src/chrome/content/rules/ABestWeb.com.xml b/src/chrome/content/rules/ABestWeb.com.xml
index a1bd6ca46690..6415c37f24eb 100644
--- a/src/chrome/content/rules/ABestWeb.com.xml
+++ b/src/chrome/content/rules/ABestWeb.com.xml
@@ -17,7 +17,6 @@
-
+
diff --git a/src/chrome/content/rules/ACCAN.xml b/src/chrome/content/rules/ACCAN.xml
index e58c1dc05b89..e87354c60c01 100644
--- a/src/chrome/content/rules/ACCAN.xml
+++ b/src/chrome/content/rules/ACCAN.xml
@@ -1,11 +1,6 @@
-
-
+
-
+
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/ACI-Europe.org.xml b/src/chrome/content/rules/ACI-Europe.org.xml
new file mode 100644
index 000000000000..4c088a0391a4
--- /dev/null
+++ b/src/chrome/content/rules/ACI-Europe.org.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/ACLS.org.xml b/src/chrome/content/rules/ACLS.org.xml
index f82d7157961b..abe586ff4d7c 100644
--- a/src/chrome/content/rules/ACLS.org.xml
+++ b/src/chrome/content/rules/ACLS.org.xml
@@ -1,4 +1,9 @@
+
-
+
diff --git a/src/chrome/content/rules/ACLU-of-Arizona.xml b/src/chrome/content/rules/ACLU-of-Arizona.xml
new file mode 100644
index 000000000000..2b6d495317d5
--- /dev/null
+++ b/src/chrome/content/rules/ACLU-of-Arizona.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/ACLU-of-California.xml b/src/chrome/content/rules/ACLU-of-California.xml
new file mode 100644
index 000000000000..a58f0fdc9462
--- /dev/null
+++ b/src/chrome/content/rules/ACLU-of-California.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/ACLU-of-Florida.xml b/src/chrome/content/rules/ACLU-of-Florida.xml
new file mode 100644
index 000000000000..14c52940ef39
--- /dev/null
+++ b/src/chrome/content/rules/ACLU-of-Florida.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/ACLU-of-Georgia.xml b/src/chrome/content/rules/ACLU-of-Georgia.xml
new file mode 100644
index 000000000000..33b9c3d359d6
--- /dev/null
+++ b/src/chrome/content/rules/ACLU-of-Georgia.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/ACLU-of-Kansas.xml b/src/chrome/content/rules/ACLU-of-Kansas.xml
new file mode 100644
index 000000000000..fcd2bd7b71c3
--- /dev/null
+++ b/src/chrome/content/rules/ACLU-of-Kansas.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/ACLU-of-Maine.xml b/src/chrome/content/rules/ACLU-of-Maine.xml
new file mode 100644
index 000000000000..75be52a3eee7
--- /dev/null
+++ b/src/chrome/content/rules/ACLU-of-Maine.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/ACLU-of-Mississippi.xml b/src/chrome/content/rules/ACLU-of-Mississippi.xml
new file mode 100644
index 000000000000..88e0cac9f449
--- /dev/null
+++ b/src/chrome/content/rules/ACLU-of-Mississippi.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/ACLU-of-Missouri.xml b/src/chrome/content/rules/ACLU-of-Missouri.xml
new file mode 100644
index 000000000000..605201f7ec72
--- /dev/null
+++ b/src/chrome/content/rules/ACLU-of-Missouri.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/ACLU-of-Montana.xml b/src/chrome/content/rules/ACLU-of-Montana.xml
new file mode 100644
index 000000000000..80831fe0b851
--- /dev/null
+++ b/src/chrome/content/rules/ACLU-of-Montana.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/ACLU-of-New-Mexico.xml b/src/chrome/content/rules/ACLU-of-New-Mexico.xml
new file mode 100644
index 000000000000..883faf13a090
--- /dev/null
+++ b/src/chrome/content/rules/ACLU-of-New-Mexico.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/ACLU-of-San-Diego.xml b/src/chrome/content/rules/ACLU-of-San-Diego.xml
new file mode 100644
index 000000000000..1b262a28d893
--- /dev/null
+++ b/src/chrome/content/rules/ACLU-of-San-Diego.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/ACLU-of-Southern-California.xml b/src/chrome/content/rules/ACLU-of-Southern-California.xml
index 923ac265ca2d..ba90fc9d6428 100644
--- a/src/chrome/content/rules/ACLU-of-Southern-California.xml
+++ b/src/chrome/content/rules/ACLU-of-Southern-California.xml
@@ -1,6 +1,17 @@
+
+
+
+
+
+
-
-
\ No newline at end of file
+
diff --git a/src/chrome/content/rules/ACLU-of-Washington.xml b/src/chrome/content/rules/ACLU-of-Washington.xml
index 728cae22cdac..b3f188e18f57 100644
--- a/src/chrome/content/rules/ACLU-of-Washington.xml
+++ b/src/chrome/content/rules/ACLU-of-Washington.xml
@@ -1,7 +1,13 @@
-
+
+
-
+
diff --git a/src/chrome/content/rules/ACLU.xml b/src/chrome/content/rules/ACLU.xml
index e0f4a0cdf92f..7e1fe34a75d2 100644
--- a/src/chrome/content/rules/ACLU.xml
+++ b/src/chrome/content/rules/ACLU.xml
@@ -1,40 +1,68 @@
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
+
diff --git a/src/chrome/content/rules/ACLU_SoCal.org.xml b/src/chrome/content/rules/ACLU_SoCal.org.xml
new file mode 100644
index 000000000000..f0ec4bb299bb
--- /dev/null
+++ b/src/chrome/content/rules/ACLU_SoCal.org.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/ACLU_of_Northern_California.xml b/src/chrome/content/rules/ACLU_of_Northern_California.xml
index e8c117c57a1f..c196cf298dd1 100644
--- a/src/chrome/content/rules/ACLU_of_Northern_California.xml
+++ b/src/chrome/content/rules/ACLU_of_Northern_California.xml
@@ -10,7 +10,7 @@
-
+
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/ACM.org.xml b/src/chrome/content/rules/ACM.org.xml
index 900ff9915ef4..e764b43d69ed 100644
--- a/src/chrome/content/rules/ACM.org.xml
+++ b/src/chrome/content/rules/ACM.org.xml
@@ -1,134 +1,56 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/ACNC.gov.au.xml b/src/chrome/content/rules/ACNC.gov.au.xml
new file mode 100644
index 000000000000..84cccceb9614
--- /dev/null
+++ b/src/chrome/content/rules/ACNC.gov.au.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/ACPICA.org.xml b/src/chrome/content/rules/ACPICA.org.xml
index 50cc1ee4b15d..66006b4e169c 100644
--- a/src/chrome/content/rules/ACPICA.org.xml
+++ b/src/chrome/content/rules/ACPICA.org.xml
@@ -1,4 +1,8 @@
+
-
+
diff --git a/src/chrome/content/rules/ACSAC.org.xml b/src/chrome/content/rules/ACSAC.org.xml
index 323ea1540d00..b6a0fda4bd43 100644
--- a/src/chrome/content/rules/ACSAC.org.xml
+++ b/src/chrome/content/rules/ACSAC.org.xml
@@ -1,7 +1,5 @@
-
diff --git a/src/chrome/content/rules/ACTION_Kooperative.xml b/src/chrome/content/rules/ACTION_Kooperative.xml
index 0fbc4dd1bcd9..199a15940a32 100644
--- a/src/chrome/content/rules/ACTION_Kooperative.xml
+++ b/src/chrome/content/rules/ACTION_Kooperative.xml
@@ -1,4 +1,8 @@
+
diff --git a/src/chrome/content/rules/AD4mat.xml b/src/chrome/content/rules/AD4mat.xml
new file mode 100644
index 000000000000..bdbb22d4d9da
--- /dev/null
+++ b/src/chrome/content/rules/AD4mat.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/ADCocktail.xml b/src/chrome/content/rules/ADCocktail.xml
index 20b59defd6d7..5c395f07d98d 100644
--- a/src/chrome/content/rules/ADCocktail.xml
+++ b/src/chrome/content/rules/ADCocktail.xml
@@ -15,7 +15,6 @@
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/ADD-Assoc-Southern-Region.xml b/src/chrome/content/rules/ADD-Assoc-Southern-Region.xml
index a0d0a4ab6f5b..4d3531a765a7 100644
--- a/src/chrome/content/rules/ADD-Assoc-Southern-Region.xml
+++ b/src/chrome/content/rules/ADD-Assoc-Southern-Region.xml
@@ -1,4 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/ADP_Retirement_Services.xml b/src/chrome/content/rules/ADP_Retirement_Services.xml
index 01d77d07689a..2dce6fb2c363 100644
--- a/src/chrome/content/rules/ADP_Retirement_Services.xml
+++ b/src/chrome/content/rules/ADP_Retirement_Services.xml
@@ -3,6 +3,12 @@
Disabled by https-everywhere-checker because:
Fetch error: http://mykplan.com/ => https://mykplan.com/: (51, "SSL: no alternative certificate subject name matches target host name 'mykplan.com'")
+-->
+
+
diff --git a/src/chrome/content/rules/ADP_VirtualEdge.xml b/src/chrome/content/rules/ADP_VirtualEdge.xml
index 51df1c39731f..70e64cca26c9 100644
--- a/src/chrome/content/rules/ADP_VirtualEdge.xml
+++ b/src/chrome/content/rules/ADP_VirtualEdge.xml
@@ -1,13 +1,11 @@
-
+
diff --git a/src/chrome/content/rules/ADTmag.com.xml b/src/chrome/content/rules/ADTmag.com.xml
index 978f769211c6..5eccdce5871c 100644
--- a/src/chrome/content/rules/ADTmag.com.xml
+++ b/src/chrome/content/rules/ADTmag.com.xml
@@ -19,7 +19,7 @@
-->
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/AD_Security.org.xml b/src/chrome/content/rules/AD_Security.org.xml
new file mode 100644
index 000000000000..a7957046da7b
--- /dev/null
+++ b/src/chrome/content/rules/AD_Security.org.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/ADindex.xml b/src/chrome/content/rules/ADindex.xml
index 25a462f83e93..29812a0fc204 100644
--- a/src/chrome/content/rules/ADindex.xml
+++ b/src/chrome/content/rules/ADindex.xml
@@ -1,13 +1,12 @@
-
+
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/AEGEE-Enschede.nl.xml b/src/chrome/content/rules/AEGEE-Enschede.nl.xml
index 2fe975b56a7e..b4983e5dfd3b 100644
--- a/src/chrome/content/rules/AEGEE-Enschede.nl.xml
+++ b/src/chrome/content/rules/AEGEE-Enschede.nl.xml
@@ -7,13 +7,12 @@
-
+
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/AEMI.xml b/src/chrome/content/rules/AEMI.xml
index 1ab878a83778..6d2a928f107a 100644
--- a/src/chrome/content/rules/AEMI.xml
+++ b/src/chrome/content/rules/AEMI.xml
@@ -1,4 +1,10 @@
-
+
+
+
diff --git a/src/chrome/content/rules/AFCOM.com.xml b/src/chrome/content/rules/AFCOM.com.xml
index c6f77a58018e..711458996862 100644
--- a/src/chrome/content/rules/AFCOM.com.xml
+++ b/src/chrome/content/rules/AFCOM.com.xml
@@ -17,7 +17,6 @@
-
+
diff --git a/src/chrome/content/rules/AFNIC.fr.xml b/src/chrome/content/rules/AFNIC.fr.xml
index 761dda12f3fc..d4a8673acb95 100644
--- a/src/chrome/content/rules/AFNIC.fr.xml
+++ b/src/chrome/content/rules/AFNIC.fr.xml
@@ -1,34 +1,19 @@
-
-
+
+
+
+
+
-
-
-
-
-
-
\ No newline at end of file
+
diff --git a/src/chrome/content/rules/AFP548.com-falsemixed.xml b/src/chrome/content/rules/AFP548.com-falsemixed.xml
deleted file mode 100644
index c6d943b98d2b..000000000000
--- a/src/chrome/content/rules/AFP548.com-falsemixed.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/AFP548.com.xml b/src/chrome/content/rules/AFP548.com.xml
deleted file mode 100644
index b05eb5e020d0..000000000000
--- a/src/chrome/content/rules/AFP548.com.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/AFRA-Berlin.de.xml b/src/chrome/content/rules/AFRA-Berlin.de.xml
index 449968d0a49a..7eef09e09dc4 100644
--- a/src/chrome/content/rules/AFRA-Berlin.de.xml
+++ b/src/chrome/content/rules/AFRA-Berlin.de.xml
@@ -4,7 +4,6 @@
-
+
diff --git a/src/chrome/content/rules/AFSP.org.xml b/src/chrome/content/rules/AFSP.org.xml
new file mode 100644
index 000000000000..51ad76c14e31
--- /dev/null
+++ b/src/chrome/content/rules/AFSP.org.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/AGU.org.xml b/src/chrome/content/rules/AGU.org.xml
index 8305150879b9..04da98e0bc22 100644
--- a/src/chrome/content/rules/AGU.org.xml
+++ b/src/chrome/content/rules/AGU.org.xml
@@ -56,7 +56,23 @@
-->
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/AIIB.org.xml b/src/chrome/content/rules/AIIB.org.xml
new file mode 100644
index 000000000000..f43caf8b6f66
--- /dev/null
+++ b/src/chrome/content/rules/AIIB.org.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/AIP.org.xml b/src/chrome/content/rules/AIP.org.xml
new file mode 100644
index 000000000000..ee8871ff01dd
--- /dev/null
+++ b/src/chrome/content/rules/AIP.org.xml
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/AJC.com.xml b/src/chrome/content/rules/AJC.com.xml
index 600e29463337..7329529c63e8 100644
--- a/src/chrome/content/rules/AJC.com.xml
+++ b/src/chrome/content/rules/AJC.com.xml
@@ -1,27 +1,35 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
diff --git a/src/chrome/content/rules/AJs_Ski_and_Sports.xml b/src/chrome/content/rules/AJs_Ski_and_Sports.xml
index a02eed41ea82..eeb1614bde8d 100644
--- a/src/chrome/content/rules/AJs_Ski_and_Sports.xml
+++ b/src/chrome/content/rules/AJs_Ski_and_Sports.xml
@@ -1,17 +1,11 @@
-
-
+
-
+
+
-
+
-
-
-
-
\ No newline at end of file
+
diff --git a/src/chrome/content/rules/AK-Vorrat.de.xml b/src/chrome/content/rules/AK-Vorrat.de.xml
index df9e2cd6b95b..87e6a3d93407 100644
--- a/src/chrome/content/rules/AK-Vorrat.de.xml
+++ b/src/chrome/content/rules/AK-Vorrat.de.xml
@@ -1,17 +1,30 @@
-
+
-
-
-
-
+
+
+
+
-
+
diff --git a/src/chrome/content/rules/AKA.ms.xml b/src/chrome/content/rules/AKA.ms.xml
index 273c19e90c98..9b128f2f0895 100644
--- a/src/chrome/content/rules/AKA.ms.xml
+++ b/src/chrome/content/rules/AKA.ms.xml
@@ -18,7 +18,7 @@
-->
-
+
https://listen.akvorrat.org/: (60, 'SSL certificate problem: unable to get local issuer certificate')
- (www.): refused, redirect destination uses CAcert
-
-
- Mixed content:
-
- - Image on listen from www.heinlein-support.de *
-
- * Secured by us
+ (www.)?akvorrat.org: Refused, redirect destination uses CAcert
-->
-
+
-
-
+
+
+
+
+
-
-
-
+
diff --git a/src/chrome/content/rules/ALA.org.xml b/src/chrome/content/rules/ALA.org.xml
index c1a70a431e81..cb74822769a1 100644
--- a/src/chrome/content/rules/ALA.org.xml
+++ b/src/chrome/content/rules/ALA.org.xml
@@ -1,6 +1,15 @@
+
-
+
diff --git a/src/chrome/content/rules/ALDI.xml b/src/chrome/content/rules/ALDI.xml
index eaa99f18775e..0636cc71db2c 100644
--- a/src/chrome/content/rules/ALDI.xml
+++ b/src/chrome/content/rules/ALDI.xml
@@ -1,5 +1,11 @@
+
-
+
diff --git a/src/chrome/content/rules/ALTS.Trade.xml b/src/chrome/content/rules/ALTS.Trade.xml
index 92f32a9c18de..6869bbeae7e4 100644
--- a/src/chrome/content/rules/ALTS.Trade.xml
+++ b/src/chrome/content/rules/ALTS.Trade.xml
@@ -1,4 +1,9 @@
+
-
+
diff --git a/src/chrome/content/rules/AM-Best-Company.xml b/src/chrome/content/rules/AM-Best-Company.xml
deleted file mode 100644
index f0b4bd5eb097..000000000000
--- a/src/chrome/content/rules/AM-Best-Company.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/AMC.xml b/src/chrome/content/rules/AMC.xml
index ecf9a2ed53c7..059e60ce487c 100644
--- a/src/chrome/content/rules/AMC.xml
+++ b/src/chrome/content/rules/AMC.xml
@@ -1,28 +1,57 @@
+
-
+
+
+
+
+
+
-
-
+
+
-
-
+
diff --git a/src/chrome/content/rules/AMCTheatres.xml b/src/chrome/content/rules/AMCTheatres.xml
index 8fa4808c36eb..d9304094fd58 100644
--- a/src/chrome/content/rules/AMCTheatres.xml
+++ b/src/chrome/content/rules/AMCTheatres.xml
@@ -4,5 +4,5 @@
-
+
diff --git a/src/chrome/content/rules/AMR.xml b/src/chrome/content/rules/AMR.xml
new file mode 100644
index 000000000000..9dda5ea5bb78
--- /dev/null
+++ b/src/chrome/content/rules/AMR.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/AMS.org.xml b/src/chrome/content/rules/AMS.org.xml
index c875bfab1799..8fefacd38a19 100644
--- a/src/chrome/content/rules/AMS.org.xml
+++ b/src/chrome/content/rules/AMS.org.xml
@@ -1,18 +1,67 @@
-
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
diff --git a/src/chrome/content/rules/AM_Best.com.xml b/src/chrome/content/rules/AM_Best.com.xml
new file mode 100644
index 000000000000..022bd84e3f44
--- /dev/null
+++ b/src/chrome/content/rules/AM_Best.com.xml
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/AMetSoc.org.xml b/src/chrome/content/rules/AMetSoc.org.xml
index c1ed3f136cc3..d469d853050e 100644
--- a/src/chrome/content/rules/AMetSoc.org.xml
+++ b/src/chrome/content/rules/AMetSoc.org.xml
@@ -41,7 +41,11 @@
-
+
+
+
+
+
@@ -61,7 +65,6 @@
-
+
diff --git a/src/chrome/content/rules/AMoAd.xml b/src/chrome/content/rules/AMoAd.xml
new file mode 100644
index 000000000000..3ce6c69a1b94
--- /dev/null
+++ b/src/chrome/content/rules/AMoAd.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/AMuseWiki.org.xml b/src/chrome/content/rules/AMuseWiki.org.xml
new file mode 100644
index 000000000000..8c5e4bd1b9d0
--- /dev/null
+++ b/src/chrome/content/rules/AMuseWiki.org.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/ANB.xml b/src/chrome/content/rules/ANB.xml
index de970b0b1e73..5cc26a93f6bc 100644
--- a/src/chrome/content/rules/ANB.xml
+++ b/src/chrome/content/rules/ANB.xml
@@ -2,7 +2,7 @@
Disabled by https-everywhere-checker because:
Fetch error: http://anb.com.sa/ => https://www.anb.com.sa/: (60, 'SSL certificate problem: unable to get local issuer certificate')
-->
-
+
diff --git a/src/chrome/content/rules/ANXBTC.com.xml b/src/chrome/content/rules/ANXBTC.com.xml
index 135f34675ef3..379607bbbb6a 100644
--- a/src/chrome/content/rules/ANXBTC.com.xml
+++ b/src/chrome/content/rules/ANXBTC.com.xml
@@ -1,7 +1,7 @@
-
+
-
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
diff --git a/src/chrome/content/rules/AOK.de.xml b/src/chrome/content/rules/AOK.de.xml
index 8458d499a49d..3caa416f009a 100644
--- a/src/chrome/content/rules/AOK.de.xml
+++ b/src/chrome/content/rules/AOK.de.xml
@@ -1,4 +1,33 @@
-
+
+
+
diff --git a/src/chrome/content/rules/AOL-Advertising.xml b/src/chrome/content/rules/AOL-Advertising.xml
index 5b75b08d524a..956ed6e9b005 100644
--- a/src/chrome/content/rules/AOL-Advertising.xml
+++ b/src/chrome/content/rules/AOL-Advertising.xml
@@ -1,4 +1,11 @@
+
-
+
+
+
+
+
-
+
-
+
diff --git a/src/chrome/content/rules/AOL.co.uk.xml b/src/chrome/content/rules/AOL.co.uk.xml
index 5c0bb63d55ad..6d5ffe8e6cd4 100644
--- a/src/chrome/content/rules/AOL.co.uk.xml
+++ b/src/chrome/content/rules/AOL.co.uk.xml
@@ -1,4 +1,9 @@
+
-
+
diff --git a/src/chrome/content/rules/AOL.xml b/src/chrome/content/rules/AOL.xml
index f81bdfd74b5a..03385b28eed2 100644
--- a/src/chrome/content/rules/AOL.xml
+++ b/src/chrome/content/rules/AOL.xml
@@ -1,4 +1,5 @@
-
+
+
-
+
+
+
-
+
+
+
+
+
-
-
+
+
+
+
-
+
+
-
-
-
-
+
@@ -233,29 +222,30 @@
-
+
+
+
+
-
-
+
+
-
-
-
+
+
diff --git a/src/chrome/content/rules/AOL_CDN.com.xml b/src/chrome/content/rules/AOL_CDN.com.xml
index bccfb7e6e541..a70d8f7eff72 100644
--- a/src/chrome/content/rules/AOL_CDN.com.xml
+++ b/src/chrome/content/rules/AOL_CDN.com.xml
@@ -22,65 +22,30 @@
Problematic hosts in *aolcdn.com:
- - o *
- portal *
- * o
* Mismatched
-
- Nonfunctional o.aolcdn.com paths:
-
- - hss/storage/
-
-->
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/AOL_On_Network.com.xml b/src/chrome/content/rules/AOL_On_Network.com.xml
index a38ef77ebabd..175785bdd705 100644
--- a/src/chrome/content/rules/AOL_On_Network.com.xml
+++ b/src/chrome/content/rules/AOL_On_Network.com.xml
@@ -1,4 +1,9 @@
+
-
+
-
diff --git a/src/chrome/content/rules/APA.org.xml b/src/chrome/content/rules/APA.org.xml
index 23dc38fbfca6..97145bda284b 100644
--- a/src/chrome/content/rules/APA.org.xml
+++ b/src/chrome/content/rules/APA.org.xml
@@ -1,9 +1,41 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
diff --git a/src/chrome/content/rules/APAN.org.xml b/src/chrome/content/rules/APAN.org.xml
index 83e4342bbdb4..b1f54eaee2ab 100644
--- a/src/chrome/content/rules/APAN.org.xml
+++ b/src/chrome/content/rules/APAN.org.xml
@@ -1,4 +1,8 @@
+
-
+
diff --git a/src/chrome/content/rules/APC-Magazine.xml b/src/chrome/content/rules/APC-Magazine.xml
index a87d4e4db988..d51fe7616124 100644
--- a/src/chrome/content/rules/APC-Magazine.xml
+++ b/src/chrome/content/rules/APC-Magazine.xml
@@ -1,15 +1,10 @@
-
-
+
-
+
-
+
-
+
+
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/chrome/content/rules/APNews.com.xml b/src/chrome/content/rules/APNews.com.xml
new file mode 100644
index 000000000000..567fb55c1bda
--- /dev/null
+++ b/src/chrome/content/rules/APNews.com.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/AP_Schedule.com.xml b/src/chrome/content/rules/AP_Schedule.com.xml
new file mode 100644
index 000000000000..69a93eedeaa2
--- /dev/null
+++ b/src/chrome/content/rules/AP_Schedule.com.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/AR15.com.xml b/src/chrome/content/rules/AR15.com.xml
index fd1f35f67169..abdd3f435706 100644
--- a/src/chrome/content/rules/AR15.com.xml
+++ b/src/chrome/content/rules/AR15.com.xml
@@ -17,10 +17,12 @@
- www from $self
- www from i\d+.photobucket.com
- - www from s\d+.postimg.org
+ - www from s\d+.postimg.org ˢ
- favicon on www from $self
+ ˢ Secured by us
+
-->
diff --git a/src/chrome/content/rules/AREWEFASTYET.com.xml b/src/chrome/content/rules/AREWEFASTYET.com.xml
new file mode 100644
index 000000000000..3f4dc9209818
--- /dev/null
+++ b/src/chrome/content/rules/AREWEFASTYET.com.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/ARIN.net.xml b/src/chrome/content/rules/ARIN.net.xml
index 030daa185f2f..0010a4f9f563 100644
--- a/src/chrome/content/rules/ARIN.net.xml
+++ b/src/chrome/content/rules/ARIN.net.xml
@@ -1,4 +1,8 @@
+
-
+
-
+
+
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/ARMservers.com.xml b/src/chrome/content/rules/ARMservers.com.xml
new file mode 100644
index 000000000000..683c92911fd7
--- /dev/null
+++ b/src/chrome/content/rules/ARMservers.com.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/ASADA.xml b/src/chrome/content/rules/ASADA.xml
index b6c5017fbdb3..d3450d1e856e 100644
--- a/src/chrome/content/rules/ASADA.xml
+++ b/src/chrome/content/rules/ASADA.xml
@@ -1,8 +1,4 @@
-
-
+
diff --git a/src/chrome/content/rules/ASC_Trust.com.xml b/src/chrome/content/rules/ASC_Trust.com.xml
new file mode 100644
index 000000000000..6201b97d2a60
--- /dev/null
+++ b/src/chrome/content/rules/ASC_Trust.com.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/ASDA.xml b/src/chrome/content/rules/ASDA.xml
index a56ef9e5eab3..d99e3de9f656 100644
--- a/src/chrome/content/rules/ASDA.xml
+++ b/src/chrome/content/rules/ASDA.xml
@@ -1,66 +1,200 @@
+
-
+ Partially covered hosts in *asda.com:
-
+ - direct ʰ
+ ʰ Some pages redirect to http
-
+ These altnames do not exist:
-
+ - priceguarantee.asda.com
-
-
+ Insecure cookies are set for these domains and hosts: ᶜ
+
+ - .asda.com
+ - cards.asda.com
+ - groceries.asda.com
+ - .groceries.asda.com
+ - home-insurance.asda.com
+ - mobile.asda.com
+ - storelocator.asda.com
+
+ ᶜ See https://owasp.org/index.php/SecureFlag
+
+
+ Mixed content:
+
+ - Images, on:
+
+ - direct from asda.scene7.com
+ - your from pbs.twimg.com ˢ
+ - www from $self
+
+ - favicon on www from $self
+ - Bug on storelocator from dev.virtualearth.net ˢ
+
+ ˢ Secured by us, see https://www.paulirish.com/2010/the-protocol-relative-url/
+
+-->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
diff --git a/src/chrome/content/rules/ASI_robots.com.xml b/src/chrome/content/rules/ASI_robots.com.xml
index 8fd528c29ff8..f889e97acc26 100644
--- a/src/chrome/content/rules/ASI_robots.com.xml
+++ b/src/chrome/content/rules/ASI_robots.com.xml
@@ -9,13 +9,12 @@
-
+
-
+
diff --git a/src/chrome/content/rules/ASL19.org.xml b/src/chrome/content/rules/ASL19.org.xml
index 74a0298f1d86..2dd590cc6051 100644
--- a/src/chrome/content/rules/ASL19.org.xml
+++ b/src/chrome/content/rules/ASL19.org.xml
@@ -9,13 +9,12 @@
-
+
-
+
diff --git a/src/chrome/content/rules/ASP.NET.xml b/src/chrome/content/rules/ASP.NET.xml
index c30c000fb807..cfc2980d38cb 100644
--- a/src/chrome/content/rules/ASP.NET.xml
+++ b/src/chrome/content/rules/ASP.NET.xml
@@ -22,9 +22,20 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/ASUS.xml b/src/chrome/content/rules/ASUS.xml
deleted file mode 100644
index 54914b2581ce..000000000000
--- a/src/chrome/content/rules/ASUS.xml
+++ /dev/null
@@ -1,96 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/ATBank.xml b/src/chrome/content/rules/ATBank.xml
index 1067657aea48..29625fe0ea3c 100644
--- a/src/chrome/content/rules/ATBank.xml
+++ b/src/chrome/content/rules/ATBank.xml
@@ -1,11 +1,4 @@
-
-
-
+
diff --git a/src/chrome/content/rules/ATS.aq.xml b/src/chrome/content/rules/ATS.aq.xml
new file mode 100644
index 000000000000..f56b2561b3d8
--- /dev/null
+++ b/src/chrome/content/rules/ATS.aq.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/ATV.hu.xml b/src/chrome/content/rules/ATV.hu.xml
index ef04a1edf885..24c69c72a0d9 100644
--- a/src/chrome/content/rules/ATV.hu.xml
+++ b/src/chrome/content/rules/ATV.hu.xml
@@ -1,4 +1,8 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/ATbar.xml b/src/chrome/content/rules/ATbar.xml
index 76ab5e87f6eb..6be6115abe70 100644
--- a/src/chrome/content/rules/ATbar.xml
+++ b/src/chrome/content/rules/ATbar.xml
@@ -13,7 +13,6 @@
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/ATech.io.xml b/src/chrome/content/rules/ATech.io.xml
new file mode 100644
index 000000000000..6de6da49c2ad
--- /dev/null
+++ b/src/chrome/content/rules/ATech.io.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/ATech_Media.xml b/src/chrome/content/rules/ATech_Media.xml
index dfa03dc540ce..f629ce66a871 100644
--- a/src/chrome/content/rules/ATech_Media.xml
+++ b/src/chrome/content/rules/ATech_Media.xml
@@ -1,56 +1,86 @@
-
+
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
+
diff --git a/src/chrome/content/rules/AV-Comparatives.org.xml b/src/chrome/content/rules/AV-Comparatives.org.xml
new file mode 100644
index 000000000000..02b03d895fc2
--- /dev/null
+++ b/src/chrome/content/rules/AV-Comparatives.org.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/AV-Comparatives.xml b/src/chrome/content/rules/AV-Comparatives.xml
deleted file mode 100644
index 24a31d758585..000000000000
--- a/src/chrome/content/rules/AV-Comparatives.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/AVM.de-problematic.xml b/src/chrome/content/rules/AVM.de-problematic.xml
deleted file mode 100644
index 564baa96c80e..000000000000
--- a/src/chrome/content/rules/AVM.de-problematic.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/AVON.cz.xml b/src/chrome/content/rules/AVON.cz.xml
new file mode 100644
index 000000000000..7248005852d8
--- /dev/null
+++ b/src/chrome/content/rules/AVON.cz.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/AWEmpire.com-problematic.xml b/src/chrome/content/rules/AWEmpire.com-problematic.xml
deleted file mode 100644
index 28d0d4323314..000000000000
--- a/src/chrome/content/rules/AWEmpire.com-problematic.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/AWSCloud.com.xml b/src/chrome/content/rules/AWSCloud.com.xml
new file mode 100644
index 000000000000..78fb3d1fa935
--- /dev/null
+++ b/src/chrome/content/rules/AWSCloud.com.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/AWS_Trust.com.xml b/src/chrome/content/rules/AWS_Trust.com.xml
new file mode 100644
index 000000000000..8119734bcb90
--- /dev/null
+++ b/src/chrome/content/rules/AWS_Trust.com.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/AWcloud.net.xml b/src/chrome/content/rules/AWcloud.net.xml
index 33dfd89d6feb..630ce2aa0bcc 100644
--- a/src/chrome/content/rules/AWcloud.net.xml
+++ b/src/chrome/content/rules/AWcloud.net.xml
@@ -6,10 +6,10 @@
-->
-
+
+
-
+
diff --git a/src/chrome/content/rules/AXA.xml b/src/chrome/content/rules/AXA.xml
index e21329c7aaff..b17581b781c4 100644
--- a/src/chrome/content/rules/AXA.xml
+++ b/src/chrome/content/rules/AXA.xml
@@ -1,27 +1,12 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
-
\ No newline at end of file
+
+
diff --git a/src/chrome/content/rules/AZHCA.org.xml b/src/chrome/content/rules/AZHCA.org.xml
index feeaa83f37e6..fe20a8dc163c 100644
--- a/src/chrome/content/rules/AZHCA.org.xml
+++ b/src/chrome/content/rules/AZHCA.org.xml
@@ -1,17 +1,26 @@
-
-
-
-
+
+
-
-
\ No newline at end of file
+
diff --git a/src/chrome/content/rules/A_1000_Words.com.xml b/src/chrome/content/rules/A_1000_Words.com.xml
index 31668606bc36..c64bf0bd04a0 100644
--- a/src/chrome/content/rules/A_1000_Words.com.xml
+++ b/src/chrome/content/rules/A_1000_Words.com.xml
@@ -1,10 +1,8 @@
-
+
diff --git a/src/chrome/content/rules/A_Plus_Flint_River_Ranch.xml b/src/chrome/content/rules/A_Plus_Flint_River_Ranch.xml
index 728132b3543c..fddaa17a1db5 100644
--- a/src/chrome/content/rules/A_Plus_Flint_River_Ranch.xml
+++ b/src/chrome/content/rules/A_Plus_Flint_River_Ranch.xml
@@ -1,10 +1,14 @@
+
-
+
diff --git a/src/chrome/content/rules/A_Voice_for_Men.com.xml b/src/chrome/content/rules/A_Voice_for_Men.com.xml
index 45f8182a7f71..0ffa40540783 100644
--- a/src/chrome/content/rules/A_Voice_for_Men.com.xml
+++ b/src/chrome/content/rules/A_Voice_for_Men.com.xml
@@ -3,13 +3,12 @@ Automatically by https-everywhere-checker because:
Fetch error: http://avoiceformen.com/ => https://avoiceformen.com/: Cycle detected - URL already encountered: https://avoiceformen.com/
Fetch error: http://www.avoiceformen.com/ => https://www.avoiceformen.com/: Cycle detected - URL already encountered: https://www.avoiceformen.com/
-->
-
+
-
+
diff --git a/src/chrome/content/rules/Aaai.org.xml b/src/chrome/content/rules/Aaai.org.xml
deleted file mode 100644
index 60a87c684602..000000000000
--- a/src/chrome/content/rules/Aaai.org.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/Aalborg_University.xml b/src/chrome/content/rules/Aalborg_University.xml
index dd21e4b913bb..5baf364cbd2c 100644
--- a/src/chrome/content/rules/Aalborg_University.xml
+++ b/src/chrome/content/rules/Aalborg_University.xml
@@ -26,13 +26,14 @@
-->
+
-
+
-
+
-
\ No newline at end of file
+
diff --git a/src/chrome/content/rules/Aalto.fi.xml b/src/chrome/content/rules/Aalto.fi.xml
new file mode 100644
index 000000000000..806438726aa8
--- /dev/null
+++ b/src/chrome/content/rules/Aalto.fi.xml
@@ -0,0 +1,158 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Aan.sh.xml b/src/chrome/content/rules/Aan.sh.xml
index eb385abbbf52..8abe6fa3f966 100644
--- a/src/chrome/content/rules/Aan.sh.xml
+++ b/src/chrome/content/rules/Aan.sh.xml
@@ -1,4 +1,11 @@
-
+
+
+
diff --git a/src/chrome/content/rules/Aaron_Brothers.xml b/src/chrome/content/rules/Aaron_Brothers.xml
index 657245e34df5..56d1af295657 100644
--- a/src/chrome/content/rules/Aaron_Brothers.xml
+++ b/src/chrome/content/rules/Aaron_Brothers.xml
@@ -1,13 +1,12 @@
-
+
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/Aaronparecki.com.xml b/src/chrome/content/rules/Aaronparecki.com.xml
index 1a535d934ae9..1b241095b902 100644
--- a/src/chrome/content/rules/Aaronparecki.com.xml
+++ b/src/chrome/content/rules/Aaronparecki.com.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/src/chrome/content/rules/Aastatus.net.xml b/src/chrome/content/rules/Aastatus.net.xml
new file mode 100644
index 000000000000..3b94914fdebb
--- /dev/null
+++ b/src/chrome/content/rules/Aastatus.net.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Aaulan.dk.xml b/src/chrome/content/rules/Aaulan.dk.xml
new file mode 100644
index 000000000000..59cfc8c8a525
--- /dev/null
+++ b/src/chrome/content/rules/Aaulan.dk.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Abbott-Laboratories.xml b/src/chrome/content/rules/Abbott-Laboratories.xml
index 17f220ca063f..5d3049d7c822 100644
--- a/src/chrome/content/rules/Abbott-Laboratories.xml
+++ b/src/chrome/content/rules/Abbott-Laboratories.xml
@@ -1,4 +1,8 @@
+
@@ -11,7 +15,6 @@ Fetch error: http://abbott.com/ => https://abbott.com/: (60, 'SSL certificate pr
-
+
diff --git a/src/chrome/content/rules/Abdn.ac.uk.xml b/src/chrome/content/rules/Abdn.ac.uk.xml
index 0a1eabd3e24d..7a10fbbaf6de 100644
--- a/src/chrome/content/rules/Abdn.ac.uk.xml
+++ b/src/chrome/content/rules/Abdn.ac.uk.xml
@@ -27,7 +27,6 @@
-
+
diff --git a/src/chrome/content/rules/Abdullah-ocalan.com.xml b/src/chrome/content/rules/Abdullah-ocalan.com.xml
new file mode 100644
index 000000000000..9a7caa9afac2
--- /dev/null
+++ b/src/chrome/content/rules/Abdullah-ocalan.com.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/AbenteuerLand.at.xml b/src/chrome/content/rules/AbenteuerLand.at.xml
index 36bc189dbd71..23f02597436f 100644
--- a/src/chrome/content/rules/AbenteuerLand.at.xml
+++ b/src/chrome/content/rules/AbenteuerLand.at.xml
@@ -1,15 +1,12 @@
-
+
-
+
diff --git a/src/chrome/content/rules/AberdeenMosque.org.xml b/src/chrome/content/rules/AberdeenMosque.org.xml
new file mode 100644
index 000000000000..1bfb9c0f3adb
--- /dev/null
+++ b/src/chrome/content/rules/AberdeenMosque.org.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Aberdeen_City.gov.uk-falsemixed.xml b/src/chrome/content/rules/Aberdeen_City.gov.uk-falsemixed.xml
new file mode 100644
index 000000000000..4ec50ab93b5f
--- /dev/null
+++ b/src/chrome/content/rules/Aberdeen_City.gov.uk-falsemixed.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Aberdeen_City.gov.uk.xml b/src/chrome/content/rules/Aberdeen_City.gov.uk.xml
new file mode 100644
index 000000000000..785d86edcd43
--- /dev/null
+++ b/src/chrome/content/rules/Aberdeen_City.gov.uk.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Aberdeenshire.gov.uk.xml b/src/chrome/content/rules/Aberdeenshire.gov.uk.xml
new file mode 100644
index 000000000000..702aa1f3ee09
--- /dev/null
+++ b/src/chrome/content/rules/Aberdeenshire.gov.uk.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Aberystwyth-University-mismatches.xml b/src/chrome/content/rules/Aberystwyth-University-mismatches.xml
deleted file mode 100644
index 2b47288d443f..000000000000
--- a/src/chrome/content/rules/Aberystwyth-University-mismatches.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/Aberystwyth-University.xml b/src/chrome/content/rules/Aberystwyth-University.xml
index 6e813c71e14e..799f78f8e267 100644
--- a/src/chrome/content/rules/Aberystwyth-University.xml
+++ b/src/chrome/content/rules/Aberystwyth-University.xml
@@ -1,89 +1,66 @@
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Abftracker.com.xml b/src/chrome/content/rules/Abftracker.com.xml
index 8a898840d0f8..8cc868f63e66 100644
--- a/src/chrome/content/rules/Abftracker.com.xml
+++ b/src/chrome/content/rules/Abftracker.com.xml
@@ -3,7 +3,6 @@
-
+
diff --git a/src/chrome/content/rules/Abila.com.xml b/src/chrome/content/rules/Abila.com.xml
index 548be47a9f93..2f9d4485e6b8 100644
--- a/src/chrome/content/rules/Abila.com.xml
+++ b/src/chrome/content/rules/Abila.com.xml
@@ -1,26 +1,34 @@
-
-
+
-
+
-
+
-
+
diff --git a/src/chrome/content/rules/Abiliba.xml b/src/chrome/content/rules/Abiliba.xml
deleted file mode 100644
index e4a965889b31..000000000000
--- a/src/chrome/content/rules/Abiliba.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/AbleGamers.xml b/src/chrome/content/rules/AbleGamers.xml
index b081ccd3be4d..6b1c62f0b323 100644
--- a/src/chrome/content/rules/AbleGamers.xml
+++ b/src/chrome/content/rules/AbleGamers.xml
@@ -1,9 +1,4 @@
-
-
+
@@ -12,7 +7,6 @@ Fetch error: http://www.ablegamers.com/ => https://www.ablegamers.com/: (60, 'SS
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/Abma.de.xml b/src/chrome/content/rules/Abma.de.xml
deleted file mode 100644
index 4aaa90d73c8e..000000000000
--- a/src/chrome/content/rules/Abma.de.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/Abosgratis.de.xml b/src/chrome/content/rules/Abosgratis.de.xml
index 856f1da96605..0c02c0e97fb6 100644
--- a/src/chrome/content/rules/Abosgratis.de.xml
+++ b/src/chrome/content/rules/Abosgratis.de.xml
@@ -2,5 +2,5 @@
-
+
diff --git a/src/chrome/content/rules/About-Ads.xml b/src/chrome/content/rules/About-Ads.xml
index c6e09ecce4a5..9c7c82664f41 100644
--- a/src/chrome/content/rules/About-Ads.xml
+++ b/src/chrome/content/rules/About-Ads.xml
@@ -1,15 +1,31 @@
-
-
-
-
+
+ Expired:
+ - jasperserver.aboutads.info
+ Mixed JS:
+ - www.aboutads.info/choices/
+-->
+
+
+
+
+
+
+
+
+
+
+
-
+
+
diff --git a/src/chrome/content/rules/AboutMe.xml b/src/chrome/content/rules/AboutMe.xml
index 74904aa3690f..7cf63f27d4fa 100644
--- a/src/chrome/content/rules/AboutMe.xml
+++ b/src/chrome/content/rules/AboutMe.xml
@@ -11,7 +11,6 @@
-
+
diff --git a/src/chrome/content/rules/About_My_Vote.co.uk.xml b/src/chrome/content/rules/About_My_Vote.co.uk.xml
index 0735415f6c8e..487678ebf945 100644
--- a/src/chrome/content/rules/About_My_Vote.co.uk.xml
+++ b/src/chrome/content/rules/About_My_Vote.co.uk.xml
@@ -1,5 +1,13 @@
-
+
+
+
+
+
+
-
+
+
+
+
-
+
+
diff --git a/src/chrome/content/rules/About_the_Data.com.xml b/src/chrome/content/rules/About_the_Data.com.xml
index d5ea32181ec6..6bb895e7cea8 100644
--- a/src/chrome/content/rules/About_the_Data.com.xml
+++ b/src/chrome/content/rules/About_the_Data.com.xml
@@ -8,7 +8,6 @@
-
+
diff --git a/src/chrome/content/rules/Above.com.xml b/src/chrome/content/rules/Above.com.xml
index e692e2596349..025be1b24742 100644
--- a/src/chrome/content/rules/Above.com.xml
+++ b/src/chrome/content/rules/Above.com.xml
@@ -26,7 +26,6 @@
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/Absolute.xml b/src/chrome/content/rules/Absolute.xml
index a7099da3c764..8d95a1fa08f8 100644
--- a/src/chrome/content/rules/Absolute.xml
+++ b/src/chrome/content/rules/Absolute.xml
@@ -1,4 +1,10 @@
-
+
+
+
diff --git a/src/chrome/content/rules/Abuse.ch.xml b/src/chrome/content/rules/Abuse.ch.xml
index cb87045cab5d..8be728043325 100644
--- a/src/chrome/content/rules/Abuse.ch.xml
+++ b/src/chrome/content/rules/Abuse.ch.xml
@@ -1,12 +1,18 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
diff --git a/src/chrome/content/rules/AbuseIPDB.com.xml b/src/chrome/content/rules/AbuseIPDB.com.xml
new file mode 100644
index 000000000000..9afb214beada
--- /dev/null
+++ b/src/chrome/content/rules/AbuseIPDB.com.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Abusix.com.xml b/src/chrome/content/rules/Abusix.com.xml
index 3f31f98778ec..22f9bfc7b076 100644
--- a/src/chrome/content/rules/Abusix.com.xml
+++ b/src/chrome/content/rules/Abusix.com.xml
@@ -1,10 +1,13 @@
-
+
+
+
+
+
-
+
diff --git a/src/chrome/content/rules/Abysmal.nl.xml b/src/chrome/content/rules/Abysmal.nl.xml
index 54c67485459a..aef9c68b5a1f 100644
--- a/src/chrome/content/rules/Abysmal.nl.xml
+++ b/src/chrome/content/rules/Abysmal.nl.xml
@@ -1,13 +1,18 @@
-
+
+
+
-
+
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/Academia-assets.com.xml b/src/chrome/content/rules/Academia-assets.com.xml
index 092a06b0d9b8..90d457a39b3e 100644
--- a/src/chrome/content/rules/Academia-assets.com.xml
+++ b/src/chrome/content/rules/Academia-assets.com.xml
@@ -7,7 +7,6 @@
-
+
diff --git a/src/chrome/content/rules/Academia.edu.xml b/src/chrome/content/rules/Academia.edu.xml
index d4d086eac96d..820c0cd8bfbd 100644
--- a/src/chrome/content/rules/Academia.edu.xml
+++ b/src/chrome/content/rules/Academia.edu.xml
@@ -12,21 +12,31 @@
assets[012].academia\.edu
- Fully covered subdomains:
+ Nearly all subdomains (with two exceptions) are covered using a wildcard:
+ The Academia.edu website has SSL enabled for subdomains www and of the form
+ .academia.edu.
- - (www.)?
- - independent
+
+ Exceptions:
+
+ - mail
+ - support
-->
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Academics.de.xml b/src/chrome/content/rules/Academics.de.xml
index 73940e2c5fd5..38121c5f9eff 100644
--- a/src/chrome/content/rules/Academics.de.xml
+++ b/src/chrome/content/rules/Academics.de.xml
@@ -1,7 +1,14 @@
-
+
+
+
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/Accellion.xml b/src/chrome/content/rules/Accellion.xml
index a7fab39d5e35..229d6c752226 100644
--- a/src/chrome/content/rules/Accellion.xml
+++ b/src/chrome/content/rules/Accellion.xml
@@ -1,12 +1,12 @@
-
+
+
-
+
-
+
diff --git a/src/chrome/content/rules/Accenture.com.xml b/src/chrome/content/rules/Accenture.com.xml
index a59d4b0186c8..70b18d14a9d7 100644
--- a/src/chrome/content/rules/Accenture.com.xml
+++ b/src/chrome/content/rules/Accenture.com.xml
@@ -1,6 +1,6 @@
-
+
-
+
diff --git a/src/chrome/content/rules/Acceptiva.com.xml b/src/chrome/content/rules/Acceptiva.com.xml
index d48e2c2746bb..c376a8752b9f 100644
--- a/src/chrome/content/rules/Acceptiva.com.xml
+++ b/src/chrome/content/rules/Acceptiva.com.xml
@@ -9,7 +9,6 @@
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/Access-kaiseki-tools.com.xml b/src/chrome/content/rules/Access-kaiseki-tools.com.xml
index 532ba3257b4e..3c2828a8b4fa 100644
--- a/src/chrome/content/rules/Access-kaiseki-tools.com.xml
+++ b/src/chrome/content/rules/Access-kaiseki-tools.com.xml
@@ -8,7 +8,6 @@
-
+
diff --git a/src/chrome/content/rules/AccessGuardian.com.xml b/src/chrome/content/rules/AccessGuardian.com.xml
index ade6b3c81539..f799e41495c1 100644
--- a/src/chrome/content/rules/AccessGuardian.com.xml
+++ b/src/chrome/content/rules/AccessGuardian.com.xml
@@ -1,4 +1,11 @@
-
+
+
+
@@ -7,7 +14,6 @@
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/AccessLabs.xml b/src/chrome/content/rules/AccessLabs.xml
deleted file mode 100644
index d22393e14b83..000000000000
--- a/src/chrome/content/rules/AccessLabs.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/AccessNow.xml b/src/chrome/content/rules/AccessNow.xml
index 48d278506e04..50c556ea9033 100644
--- a/src/chrome/content/rules/AccessNow.xml
+++ b/src/chrome/content/rules/AccessNow.xml
@@ -1,16 +1,19 @@
-
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/AccessPrivacy.ca.xml b/src/chrome/content/rules/AccessPrivacy.ca.xml
index 152b03ed0cc4..055f830e0d19 100644
--- a/src/chrome/content/rules/AccessPrivacy.ca.xml
+++ b/src/chrome/content/rules/AccessPrivacy.ca.xml
@@ -1,4 +1,9 @@
+
-
+
-
+
-
+
diff --git a/src/chrome/content/rules/Access_Office_Products.xml b/src/chrome/content/rules/Access_Office_Products.xml
index fcf62ca43d20..c04bafe7e0fb 100644
--- a/src/chrome/content/rules/Access_Office_Products.xml
+++ b/src/chrome/content/rules/Access_Office_Products.xml
@@ -1,17 +1,21 @@
+
-
+
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/Access_Privacy.com.xml b/src/chrome/content/rules/Access_Privacy.com.xml
index 7deb5b9fe7d4..600a1e4f33f0 100644
--- a/src/chrome/content/rules/Access_Privacy.com.xml
+++ b/src/chrome/content/rules/Access_Privacy.com.xml
@@ -19,13 +19,12 @@
-
+
-
+
diff --git a/src/chrome/content/rules/AccessibilityNL.xml b/src/chrome/content/rules/AccessibilityNL.xml
index 148fc1c9cb51..de4889581dfe 100644
--- a/src/chrome/content/rules/AccessibilityNL.xml
+++ b/src/chrome/content/rules/AccessibilityNL.xml
@@ -4,5 +4,5 @@
-
+
diff --git a/src/chrome/content/rules/Accessible-Information-Management.xml b/src/chrome/content/rules/Accessible-Information-Management.xml
index 417f27c406a0..567937c8dcea 100644
--- a/src/chrome/content/rules/Accessible-Information-Management.xml
+++ b/src/chrome/content/rules/Accessible-Information-Management.xml
@@ -1,4 +1,10 @@
-
+
+
+
diff --git a/src/chrome/content/rules/AccesstoJustice.xml b/src/chrome/content/rules/AccesstoJustice.xml
deleted file mode 100644
index a7c047bc4f6a..000000000000
--- a/src/chrome/content/rules/AccesstoJustice.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/Accesstrade.net.xml b/src/chrome/content/rules/Accesstrade.net.xml
index 9736a971da7d..9a10d7039e80 100644
--- a/src/chrome/content/rules/Accesstrade.net.xml
+++ b/src/chrome/content/rules/Accesstrade.net.xml
@@ -18,7 +18,6 @@
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/Account3000.com.xml b/src/chrome/content/rules/Account3000.com.xml
index dc3093fbd196..d1c857b2328c 100644
--- a/src/chrome/content/rules/Account3000.com.xml
+++ b/src/chrome/content/rules/Account3000.com.xml
@@ -17,7 +17,6 @@
-
+
diff --git a/src/chrome/content/rules/AccountSupport.com.xml b/src/chrome/content/rules/AccountSupport.com.xml
index 406965a5cc6d..05890ec2d30d 100644
--- a/src/chrome/content/rules/AccountSupport.com.xml
+++ b/src/chrome/content/rules/AccountSupport.com.xml
@@ -7,13 +7,13 @@
-
+
+
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/Account_Chooser.xml b/src/chrome/content/rules/Account_Chooser.xml
index fff91e070693..250b561bed7e 100644
--- a/src/chrome/content/rules/Account_Chooser.xml
+++ b/src/chrome/content/rules/Account_Chooser.xml
@@ -4,7 +4,6 @@
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/Accredible.com.xml b/src/chrome/content/rules/Accredible.com.xml
new file mode 100644
index 000000000000..d87c058caa90
--- /dev/null
+++ b/src/chrome/content/rules/Accredible.com.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/AccuWeather.xml b/src/chrome/content/rules/AccuWeather.xml
index faa3c7d47c50..2592fc0483ce 100644
--- a/src/chrome/content/rules/AccuWeather.xml
+++ b/src/chrome/content/rules/AccuWeather.xml
@@ -1,4 +1,8 @@
+
-
+
-
-
+
+
+
+
+
+
+
+
+
-
+
-
-
+
-
\ No newline at end of file
+
diff --git a/src/chrome/content/rules/Accuen-problematic.xml b/src/chrome/content/rules/Accuen-problematic.xml
index 14d0ba866d08..f6f136ea8fc9 100644
--- a/src/chrome/content/rules/Accuen-problematic.xml
+++ b/src/chrome/content/rules/Accuen-problematic.xml
@@ -2,7 +2,7 @@
For rules that are on by default, see Accuen.xml.
-->
-
+
diff --git a/src/chrome/content/rules/Accuen.xml b/src/chrome/content/rules/Accuen.xml
index fe873d1c439d..c25f8e43442a 100644
--- a/src/chrome/content/rules/Accuen.xml
+++ b/src/chrome/content/rules/Accuen.xml
@@ -5,7 +5,7 @@
d: Included on 3rd-party websites.
-->
-
+
diff --git a/src/chrome/content/rules/Accuvant.com.xml b/src/chrome/content/rules/Accuvant.com.xml
index 5d13625a71e9..48287f5a8369 100644
--- a/src/chrome/content/rules/Accuvant.com.xml
+++ b/src/chrome/content/rules/Accuvant.com.xml
@@ -1,4 +1,8 @@
+
-
+
diff --git a/src/chrome/content/rules/Ace-analyzer.com.xml b/src/chrome/content/rules/Ace-analyzer.com.xml
index aa36d2c28672..e3c652490c8e 100644
--- a/src/chrome/content/rules/Ace-analyzer.com.xml
+++ b/src/chrome/content/rules/Ace-analyzer.com.xml
@@ -18,7 +18,6 @@
-
+
diff --git a/src/chrome/content/rules/Ace_Hotel.com.xml b/src/chrome/content/rules/Ace_Hotel.com.xml
index c892653e41f2..7f5128e5a09e 100644
--- a/src/chrome/content/rules/Ace_Hotel.com.xml
+++ b/src/chrome/content/rules/Ace_Hotel.com.xml
@@ -1,7 +1,8 @@
-
+
+
@@ -19,7 +20,6 @@
-
+
diff --git a/src/chrome/content/rules/Acessa.xml b/src/chrome/content/rules/Acessa.xml
new file mode 100644
index 000000000000..b0641dae0429
--- /dev/null
+++ b/src/chrome/content/rules/Acessa.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Achelem.org.xml b/src/chrome/content/rules/Achelem.org.xml
deleted file mode 100644
index 69071b02e05d..000000000000
--- a/src/chrome/content/rules/Achelem.org.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/Achievementstats.com.xml b/src/chrome/content/rules/Achievementstats.com.xml
new file mode 100644
index 000000000000..3a4c704ba1cb
--- /dev/null
+++ b/src/chrome/content/rules/Achievementstats.com.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Acik_Akademi.com.xml b/src/chrome/content/rules/Acik_Akademi.com.xml
index 643bab15f021..e76d835a4966 100644
--- a/src/chrome/content/rules/Acik_Akademi.com.xml
+++ b/src/chrome/content/rules/Acik_Akademi.com.xml
@@ -4,11 +4,7 @@
For other Microsoft coverage, see Microsoft.xml.
- Problematic domains:
-
- - acikakademi.com *
-
- * Cert only matches www
+ ^acikakademi.com: Cert only matches www
-->
@@ -22,7 +18,7 @@
-
+
-
+
diff --git a/src/chrome/content/rules/Acoustics.org.xml b/src/chrome/content/rules/Acoustics.org.xml
index ccea3f155689..f25e2ce81048 100644
--- a/src/chrome/content/rules/Acoustics.org.xml
+++ b/src/chrome/content/rules/Acoustics.org.xml
@@ -1,10 +1,16 @@
-
+
+
+
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/Acrobat.com.xml b/src/chrome/content/rules/Acrobat.com.xml
index b88d990eac3d..04d0a56a7f7e 100644
--- a/src/chrome/content/rules/Acrobat.com.xml
+++ b/src/chrome/content/rules/Acrobat.com.xml
@@ -1,4 +1,9 @@
+
-
+
+
@@ -35,6 +33,8 @@
-->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Acrocomcontent.com.xml b/src/chrome/content/rules/Acrocomcontent.com.xml
deleted file mode 100644
index 819d721897c3..000000000000
--- a/src/chrome/content/rules/Acrocomcontent.com.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/Acronymfinder.com.xml b/src/chrome/content/rules/Acronymfinder.com.xml
new file mode 100644
index 000000000000..d0f3265d44eb
--- /dev/null
+++ b/src/chrome/content/rules/Acronymfinder.com.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Act.demandprogress.org.xml b/src/chrome/content/rules/Act.demandprogress.org.xml
deleted file mode 100644
index 8d56ac39850d..000000000000
--- a/src/chrome/content/rules/Act.demandprogress.org.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/src/chrome/content/rules/Actionable_Intelligence.xml b/src/chrome/content/rules/Actionable_Intelligence.xml
index 2c27c4ac89f2..70b9538d7e01 100644
--- a/src/chrome/content/rules/Actionable_Intelligence.xml
+++ b/src/chrome/content/rules/Actionable_Intelligence.xml
@@ -11,7 +11,6 @@
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/Actionallocator.com.xml b/src/chrome/content/rules/Actionallocator.com.xml
deleted file mode 100644
index c7260a51291d..000000000000
--- a/src/chrome/content/rules/Actionallocator.com.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/chrome/content/rules/Activatejavascript.xml b/src/chrome/content/rules/Activatejavascript.xml
index 7bade1494600..d5ffb8461bb5 100644
--- a/src/chrome/content/rules/Activatejavascript.xml
+++ b/src/chrome/content/rules/Activatejavascript.xml
@@ -2,7 +2,7 @@
CN: secure.syllabushare.com
-->
-
+
diff --git a/src/chrome/content/rules/Active-srv02.de.xml b/src/chrome/content/rules/Active-srv02.de.xml
index ba59924872dc..23742ff663ac 100644
--- a/src/chrome/content/rules/Active-srv02.de.xml
+++ b/src/chrome/content/rules/Active-srv02.de.xml
@@ -5,13 +5,12 @@
-
+
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/Active_Network.com.xml b/src/chrome/content/rules/Active_Network.com.xml
index 20f03638fad3..611b339c9d27 100644
--- a/src/chrome/content/rules/Active_Network.com.xml
+++ b/src/chrome/content/rules/Active_Network.com.xml
@@ -27,8 +27,7 @@
-->
-
-
+
@@ -43,10 +42,7 @@
-
-
-
+
diff --git a/src/chrome/content/rules/Active_static.net.xml b/src/chrome/content/rules/Active_static.net.xml
index 737c3684abfe..f1377ddd89c2 100644
--- a/src/chrome/content/rules/Active_static.net.xml
+++ b/src/chrome/content/rules/Active_static.net.xml
@@ -1,14 +1,18 @@
+
-
+
-
+
diff --git a/src/chrome/content/rules/Activision.xml b/src/chrome/content/rules/Activision.xml
new file mode 100644
index 000000000000..0d762454c870
--- /dev/null
+++ b/src/chrome/content/rules/Activision.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Activision_Blizzard.com.xml b/src/chrome/content/rules/Activision_Blizzard.com.xml
index 14ec40d1f05d..7765d3c3c2ca 100644
--- a/src/chrome/content/rules/Activision_Blizzard.com.xml
+++ b/src/chrome/content/rules/Activision_Blizzard.com.xml
@@ -11,16 +11,13 @@
-->
-
+
-
-
diff --git a/src/chrome/content/rules/Acuity_Scheduling.com.xml b/src/chrome/content/rules/Acuity_Scheduling.com.xml
new file mode 100644
index 000000000000..b38e84f83734
--- /dev/null
+++ b/src/chrome/content/rules/Acuity_Scheduling.com.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Acuity_platform.com.xml b/src/chrome/content/rules/Acuity_platform.com.xml
index 00aa2c110083..c39cbb1db1e1 100644
--- a/src/chrome/content/rules/Acuity_platform.com.xml
+++ b/src/chrome/content/rules/Acuity_platform.com.xml
@@ -5,13 +5,13 @@
-
+
+
-
+
diff --git a/src/chrome/content/rules/Aculab.com.xml b/src/chrome/content/rules/Aculab.com.xml
index cd73825d84f5..0dd01bfefc15 100644
--- a/src/chrome/content/rules/Aculab.com.xml
+++ b/src/chrome/content/rules/Aculab.com.xml
@@ -12,7 +12,6 @@
-
+
diff --git a/src/chrome/content/rules/Acxiom-online.com.xml b/src/chrome/content/rules/Acxiom-online.com.xml
index 5944f25eab19..48c74f829d35 100644
--- a/src/chrome/content/rules/Acxiom-online.com.xml
+++ b/src/chrome/content/rules/Acxiom-online.com.xml
@@ -1,20 +1,29 @@
-
+
-
+
+
-
+
-
\ No newline at end of file
+
diff --git a/src/chrome/content/rules/Acxiom.xml b/src/chrome/content/rules/Acxiom.xml
index 1134529d323e..580e73acd672 100644
--- a/src/chrome/content/rules/Acxiom.xml
+++ b/src/chrome/content/rules/Acxiom.xml
@@ -1,13 +1,10 @@
-
+
diff --git a/src/chrome/content/rules/Ad-Center.com.xml b/src/chrome/content/rules/Ad-Center.com.xml
index 89914942137d..f88bd169a464 100644
--- a/src/chrome/content/rules/Ad-Center.com.xml
+++ b/src/chrome/content/rules/Ad-Center.com.xml
@@ -12,7 +12,6 @@
-
+
diff --git a/src/chrome/content/rules/Ad-Stir.com.xml b/src/chrome/content/rules/Ad-Stir.com.xml
index adbdde92b5d1..e99bd276450e 100644
--- a/src/chrome/content/rules/Ad-Stir.com.xml
+++ b/src/chrome/content/rules/Ad-Stir.com.xml
@@ -9,6 +9,7 @@
Fully covered hosts in *ad-stir.com:
- (www.)?
+ - js
- en
- news
- sync
@@ -25,6 +26,7 @@
-->
+
diff --git a/src/chrome/content/rules/Ad6media.xml b/src/chrome/content/rules/Ad6media.xml
index 5997e94f495b..b0dba4b46f3c 100644
--- a/src/chrome/content/rules/Ad6media.xml
+++ b/src/chrome/content/rules/Ad6media.xml
@@ -19,7 +19,6 @@
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/AdBit.co.xml b/src/chrome/content/rules/AdBit.co.xml
index 3d8db6fd5e1e..61bf2ed9420b 100644
--- a/src/chrome/content/rules/AdBit.co.xml
+++ b/src/chrome/content/rules/AdBit.co.xml
@@ -1,11 +1,16 @@
+
-
+
diff --git a/src/chrome/content/rules/AdBlock.xml b/src/chrome/content/rules/AdBlock.xml
index f8b5ef1255bb..3c88a1532c20 100644
--- a/src/chrome/content/rules/AdBlock.xml
+++ b/src/chrome/content/rules/AdBlock.xml
@@ -1,49 +1,29 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/AdExcite.xml b/src/chrome/content/rules/AdExcite.xml
index beba86096454..da9a1bc9c8b7 100644
--- a/src/chrome/content/rules/AdExcite.xml
+++ b/src/chrome/content/rules/AdExcite.xml
@@ -1,4 +1,8 @@
+
-
+
diff --git a/src/chrome/content/rules/AdF.ly.xml b/src/chrome/content/rules/AdF.ly.xml
index beb58d8c96b2..04cf93f04b15 100644
--- a/src/chrome/content/rules/AdF.ly.xml
+++ b/src/chrome/content/rules/AdF.ly.xml
@@ -1,24 +1,45 @@
-
+ Peer certificate cannot be authenticated with given CA certificates:
+ - custom.adf.ly
+ Mixed content blocking (MCB) tiggered:
+ - api.adf.ly
+ - kb.adf.ly
+ - v2.adf.ly
+-->
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/AdFox.ru.xml b/src/chrome/content/rules/AdFox.ru.xml
index b4d52c149fbd..208b4ae9e6e4 100644
--- a/src/chrome/content/rules/AdFox.ru.xml
+++ b/src/chrome/content/rules/AdFox.ru.xml
@@ -1,46 +1,43 @@
-
+
-
+
+
+
+
+
+
+
-
+
+
-
-
+
-
+
+
-
+
diff --git a/src/chrome/content/rules/AdJug.com.xml b/src/chrome/content/rules/AdJug.com.xml
index fb4056decba1..93636f016650 100644
--- a/src/chrome/content/rules/AdJug.com.xml
+++ b/src/chrome/content/rules/AdJug.com.xml
@@ -1,4 +1,18 @@
+
-
+
@@ -50,7 +64,6 @@
-
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/AdMaster.com.cn.xml b/src/chrome/content/rules/AdMaster.com.cn.xml
index f15c3e87cc99..dfd91ff59c4d 100644
--- a/src/chrome/content/rules/AdMaster.com.cn.xml
+++ b/src/chrome/content/rules/AdMaster.com.cn.xml
@@ -1,4 +1,8 @@
+
-
+
diff --git a/src/chrome/content/rules/AdMatrix.jp.xml b/src/chrome/content/rules/AdMatrix.jp.xml
index 5019aa7f56de..2789a5975526 100644
--- a/src/chrome/content/rules/AdMatrix.jp.xml
+++ b/src/chrome/content/rules/AdMatrix.jp.xml
@@ -1,20 +1,30 @@
-
-
-
-
-
-
+
-
-
-
+-->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
diff --git a/src/chrome/content/rules/AdReactor.xml b/src/chrome/content/rules/AdReactor.xml
index 33dfc8fd4516..03946c86a1cc 100644
--- a/src/chrome/content/rules/AdReactor.xml
+++ b/src/chrome/content/rules/AdReactor.xml
@@ -9,7 +9,6 @@
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/AdRiver.xml b/src/chrome/content/rules/AdRiver.xml
index 6f238f4dd2b5..cf2f68abc191 100644
--- a/src/chrome/content/rules/AdRiver.xml
+++ b/src/chrome/content/rules/AdRiver.xml
@@ -1,4 +1,11 @@
+
+
-
+
@@ -51,6 +58,11 @@
+
+
+
+
+
-
+
+
-
-
-
+
-
-
+
diff --git a/src/chrome/content/rules/AdSafe_protected.com.xml b/src/chrome/content/rules/AdSafe_protected.com.xml
new file mode 100644
index 000000000000..4fe193ab3363
--- /dev/null
+++ b/src/chrome/content/rules/AdSafe_protected.com.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/AdSonar.com.xml b/src/chrome/content/rules/AdSonar.com.xml
index 4c5f5acf554a..7a218bbbfafe 100644
--- a/src/chrome/content/rules/AdSonar.com.xml
+++ b/src/chrome/content/rules/AdSonar.com.xml
@@ -1,4 +1,14 @@
+
-
+
diff --git a/src/chrome/content/rules/AdSpeed.biz.xml b/src/chrome/content/rules/AdSpeed.biz.xml
new file mode 100644
index 000000000000..6f950ef3dafb
--- /dev/null
+++ b/src/chrome/content/rules/AdSpeed.biz.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/AdSpeed.net.xml b/src/chrome/content/rules/AdSpeed.net.xml
new file mode 100644
index 000000000000..c3ea8d5fcc4b
--- /dev/null
+++ b/src/chrome/content/rules/AdSpeed.net.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/AdSpeed.xml b/src/chrome/content/rules/AdSpeed.xml
index 82a3786feba9..446d94698883 100644
--- a/src/chrome/content/rules/AdSpeed.xml
+++ b/src/chrome/content/rules/AdSpeed.xml
@@ -1,38 +1,36 @@
-
+
-
-
-
-
-
-
-
-
+
+
-
+
-
-
+
diff --git a/src/chrome/content/rules/AdSpirit.xml b/src/chrome/content/rules/AdSpirit.xml
index c88697175b55..0376c15e3ee0 100644
--- a/src/chrome/content/rules/AdSpirit.xml
+++ b/src/chrome/content/rules/AdSpirit.xml
@@ -1,9 +1,14 @@
+
-
+
diff --git a/src/chrome/content/rules/AdSupply.xml b/src/chrome/content/rules/AdSupply.xml
index 00d30c39c5ff..9c798748802d 100644
--- a/src/chrome/content/rules/AdSupply.xml
+++ b/src/chrome/content/rules/AdSupply.xml
@@ -1,56 +1,30 @@
-
-
-
-
-
-
-
+
-
-
+
+
+
+
+
-
+
-
-
+
-
\ No newline at end of file
+
diff --git a/src/chrome/content/rules/AdXpansion.com.xml b/src/chrome/content/rules/AdXpansion.com.xml
index 8ff3a7d81925..9dc1f2c62942 100644
--- a/src/chrome/content/rules/AdXpansion.com.xml
+++ b/src/chrome/content/rules/AdXpansion.com.xml
@@ -1,22 +1,19 @@
-
+
-
+
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/Ad_Peeps_hosted.com.xml b/src/chrome/content/rules/Ad_Peeps_hosted.com.xml
index 5e9a7569e8b9..d5922e2f4168 100644
--- a/src/chrome/content/rules/Ad_Peeps_hosted.com.xml
+++ b/src/chrome/content/rules/Ad_Peeps_hosted.com.xml
@@ -13,7 +13,6 @@
-
+
diff --git a/src/chrome/content/rules/Ada.lt.xml b/src/chrome/content/rules/Ada.lt.xml
index 53becd3d0615..d2b9faa2a09c 100644
--- a/src/chrome/content/rules/Ada.lt.xml
+++ b/src/chrome/content/rules/Ada.lt.xml
@@ -16,7 +16,6 @@
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/AdaCore.xml b/src/chrome/content/rules/AdaCore.xml
index a683ce82e201..c096f80ff59b 100644
--- a/src/chrome/content/rules/AdaCore.xml
+++ b/src/chrome/content/rules/AdaCore.xml
@@ -1,7 +1,8 @@
-
-
+
+
+
@@ -14,7 +15,6 @@
Other subdomains may not work:
https://trac.torproject.org/projects/tor/ticket/7219
-->
-
+
diff --git a/src/chrome/content/rules/Ada_Initiative.org.xml b/src/chrome/content/rules/Ada_Initiative.org.xml
deleted file mode 100644
index 209d884607c6..000000000000
--- a/src/chrome/content/rules/Ada_Initiative.org.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/Adagio.com.xml b/src/chrome/content/rules/Adagio.com.xml
index 8a790c138bcf..cd2a6587127f 100644
--- a/src/chrome/content/rules/Adagio.com.xml
+++ b/src/chrome/content/rules/Adagio.com.xml
@@ -2,5 +2,5 @@
-
+
diff --git a/src/chrome/content/rules/Adam_Caudill.com.xml b/src/chrome/content/rules/Adam_Caudill.com.xml
index d80ce71cd46e..878781a26f21 100644
--- a/src/chrome/content/rules/Adam_Caudill.com.xml
+++ b/src/chrome/content/rules/Adam_Caudill.com.xml
@@ -31,7 +31,7 @@
-->
-
+
https://adap.tv/: (7, 'Failed to connect to adap.tv port 443: Connection refused')
+Fetch error: http://www.adap.tv/ => https://adap.tv/: (7, 'Failed to connect to adap.tv port 443: Connection refused')
+
For other AOL coverage, see AOL.xml.
@@ -28,7 +33,7 @@
- sync
-->
-
+
diff --git a/src/chrome/content/rules/Adaptavist.com.xml b/src/chrome/content/rules/Adaptavist.com.xml
index 2529e65aedf4..87d9e47a9d6d 100644
--- a/src/chrome/content/rules/Adaptavist.com.xml
+++ b/src/chrome/content/rules/Adaptavist.com.xml
@@ -1,7 +1,8 @@
-
+
+
@@ -12,7 +13,6 @@
-
+
diff --git a/src/chrome/content/rules/Adaptec.com.xml b/src/chrome/content/rules/Adaptec.com.xml
index e5abb491bf1d..2b1c40cf0368 100644
--- a/src/chrome/content/rules/Adaptec.com.xml
+++ b/src/chrome/content/rules/Adaptec.com.xml
@@ -1,4 +1,9 @@
+
-
+
diff --git a/src/chrome/content/rules/Adapteva.com.xml b/src/chrome/content/rules/Adapteva.com.xml
index 8536e0ebce57..e71375e8c7d9 100644
--- a/src/chrome/content/rules/Adapteva.com.xml
+++ b/src/chrome/content/rules/Adapteva.com.xml
@@ -1,4 +1,8 @@
+
-
+
diff --git a/src/chrome/content/rules/Adaptive_Computing.xml b/src/chrome/content/rules/Adaptive_Computing.xml
index 7f2689664efb..545a66af6eb0 100644
--- a/src/chrome/content/rules/Adaptive_Computing.xml
+++ b/src/chrome/content/rules/Adaptive_Computing.xml
@@ -1,4 +1,10 @@
-
+
+
+
diff --git a/src/chrome/content/rules/Adaway.org.xml b/src/chrome/content/rules/Adaway.org.xml
new file mode 100644
index 000000000000..ec436613dca3
--- /dev/null
+++ b/src/chrome/content/rules/Adaway.org.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Adblade.xml b/src/chrome/content/rules/Adblade.xml
index 930b665a3af8..1b7a867b9188 100644
--- a/src/chrome/content/rules/Adblade.xml
+++ b/src/chrome/content/rules/Adblade.xml
@@ -1,21 +1,38 @@
@@ -27,36 +44,24 @@
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
+
https://www.sitescout.com/adbrite/?utm_source=adbrite: (51, "SSL: no alternative certificate subject name matches target host name 'www.sitescout.com'")
+Fetch error: http://adbrite.com/ => https://www.sitescout.com/adbrite/?utm_source=adbrite: (51, "SSL: no alternative certificate subject name matches target host name 'www.sitescout.com'")
+Fetch error: http://files.adbrite.com/ => https://www.adbrite.com/: (28, 'Connection timed out after 20000 milliseconds')
+
+-->
+
-
+
diff --git a/src/chrome/content/rules/Adcash.xml b/src/chrome/content/rules/Adcash.xml
index 40664a29ece0..be3e34f4d9ed 100644
--- a/src/chrome/content/rules/Adcash.xml
+++ b/src/chrome/content/rules/Adcash.xml
@@ -7,7 +7,6 @@
-
+
diff --git a/src/chrome/content/rules/Add2Net-mismatches.xml b/src/chrome/content/rules/Add2Net-mismatches.xml
index 7aede6bbbf26..7c84ca4c630a 100644
--- a/src/chrome/content/rules/Add2Net-mismatches.xml
+++ b/src/chrome/content/rules/Add2Net-mismatches.xml
@@ -1,4 +1,4 @@
-
+
diff --git a/src/chrome/content/rules/Add2Net.xml b/src/chrome/content/rules/Add2Net.xml
index a688a902273c..8434fff5d162 100644
--- a/src/chrome/content/rules/Add2Net.xml
+++ b/src/chrome/content/rules/Add2Net.xml
@@ -1,4 +1,14 @@
+
+
-
-
+
diff --git a/src/chrome/content/rules/AddThis.xml b/src/chrome/content/rules/AddThis.xml
index cc986d43cf02..6a013057fc8f 100644
--- a/src/chrome/content/rules/AddThis.xml
+++ b/src/chrome/content/rules/AddThis.xml
@@ -1,98 +1,148 @@
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
-
-
+
-
+
diff --git a/src/chrome/content/rules/AddThisedge.com.xml b/src/chrome/content/rules/AddThisedge.com.xml
index ee2722858dfa..930a51dd1924 100644
--- a/src/chrome/content/rules/AddThisedge.com.xml
+++ b/src/chrome/content/rules/AddThisedge.com.xml
@@ -1,5 +1,5 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/Addictech.xml b/src/chrome/content/rules/Addictech.xml
index 32b04ad0a6c4..985281314bb9 100644
--- a/src/chrome/content/rules/Addictech.xml
+++ b/src/chrome/content/rules/Addictech.xml
@@ -4,6 +4,13 @@ Disabled by https-everywhere-checker because:
Fetch error: http://addictech.com/ => https://www.addictech.com/: Too many redirects while fetching 'https://www.addictech.com/'
Fetch error: http://www.addictech.com/ => https://www.addictech.com/: Too many redirects while fetching 'https://www.addictech.com/'
+-->
+
+
diff --git a/src/chrome/content/rules/Addison_Lee.xml b/src/chrome/content/rules/Addison_Lee.xml
index 473435c895b4..0d06186aa923 100644
--- a/src/chrome/content/rules/Addison_Lee.xml
+++ b/src/chrome/content/rules/Addison_Lee.xml
@@ -4,7 +4,7 @@ Disabled by https-everywhere-checker because:
Fetch error: http://addisonlee.com/ => https://www.addisonlee.com/: Too many redirects while fetching 'https://www.addisonlee.com/'
-->
-
+
diff --git a/src/chrome/content/rules/Addy.co.xml b/src/chrome/content/rules/Addy.co.xml
deleted file mode 100644
index 6b215fff655f..000000000000
--- a/src/chrome/content/rules/Addy.co.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/Adecco_Way_to_Work.xml b/src/chrome/content/rules/Adecco_Way_to_Work.xml
index 47306436f553..c2355d5a67f1 100644
--- a/src/chrome/content/rules/Adecco_Way_to_Work.xml
+++ b/src/chrome/content/rules/Adecco_Way_to_Work.xml
@@ -4,7 +4,6 @@
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/Adelphi.de.xml b/src/chrome/content/rules/Adelphi.de.xml
new file mode 100644
index 000000000000..6fe1342eeae4
--- /dev/null
+++ b/src/chrome/content/rules/Adelphi.de.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Adentifi.com.xml b/src/chrome/content/rules/Adentifi.com.xml
index ab5ba1d5b884..ca93eba2b687 100644
--- a/src/chrome/content/rules/Adentifi.com.xml
+++ b/src/chrome/content/rules/Adentifi.com.xml
@@ -1,17 +1,11 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
diff --git a/src/chrome/content/rules/Adestra.xml b/src/chrome/content/rules/Adestra.xml
index 5bc284a1cf7f..b122dfd4589f 100644
--- a/src/chrome/content/rules/Adestra.xml
+++ b/src/chrome/content/rules/Adestra.xml
@@ -10,11 +10,9 @@
-
+
-
+
diff --git a/src/chrome/content/rules/Adform.net.xml b/src/chrome/content/rules/Adform.net.xml
new file mode 100644
index 000000000000..6c5e546add90
--- /dev/null
+++ b/src/chrome/content/rules/Adform.net.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Adform.xml b/src/chrome/content/rules/Adform.xml
index bffe4f3c901d..bab5d438e125 100644
--- a/src/chrome/content/rules/Adform.xml
+++ b/src/chrome/content/rules/Adform.xml
@@ -1,66 +1,28 @@
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Adformdsp.net.xml b/src/chrome/content/rules/Adformdsp.net.xml
new file mode 100644
index 000000000000..e4c66582f1ee
--- /dev/null
+++ b/src/chrome/content/rules/Adformdsp.net.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Adgenie.co.uk.xml b/src/chrome/content/rules/Adgenie.co.uk.xml
deleted file mode 100644
index c66c21f6d4f1..000000000000
--- a/src/chrome/content/rules/Adgenie.co.uk.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/Adify.xml b/src/chrome/content/rules/Adify.xml
index 8f5a1edff2e1..f213eedc7c29 100644
--- a/src/chrome/content/rules/Adify.xml
+++ b/src/chrome/content/rules/Adify.xml
@@ -3,7 +3,6 @@
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/Adility.xml b/src/chrome/content/rules/Adility.xml
new file mode 100644
index 000000000000..a308ee5d1673
--- /dev/null
+++ b/src/chrome/content/rules/Adility.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Adingo.jp.xml b/src/chrome/content/rules/Adingo.jp.xml
new file mode 100644
index 000000000000..3215070795e5
--- /dev/null
+++ b/src/chrome/content/rules/Adingo.jp.xml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Adingo.xml b/src/chrome/content/rules/Adingo.xml
deleted file mode 100644
index 63eac7371caf..000000000000
--- a/src/chrome/content/rules/Adingo.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/Adis.ws.xml b/src/chrome/content/rules/Adis.ws.xml
index 5359c97db790..a774bda39d27 100644
--- a/src/chrome/content/rules/Adis.ws.xml
+++ b/src/chrome/content/rules/Adis.ws.xml
@@ -1,9 +1,13 @@
+
-
+
+
diff --git a/src/chrome/content/rules/Adition.com.xml b/src/chrome/content/rules/Adition.com.xml
index 8537960fae1d..80ce2e21cb68 100644
--- a/src/chrome/content/rules/Adition.com.xml
+++ b/src/chrome/content/rules/Adition.com.xml
@@ -1,32 +1,37 @@
-
+
+
-
+
+
+
+
+
+
+
+
-
+
+
+
+
+
-
+
-
\ No newline at end of file
+
diff --git a/src/chrome/content/rules/Adjust-net.jp.xml b/src/chrome/content/rules/Adjust-net.jp.xml
index 5d239206c376..be954687fd6a 100644
--- a/src/chrome/content/rules/Adjust-net.jp.xml
+++ b/src/chrome/content/rules/Adjust-net.jp.xml
@@ -1,9 +1,9 @@
-
+
+
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/Adjust.com.xml b/src/chrome/content/rules/Adjust.com.xml
index 636336b75c2a..e5652639ee39 100644
--- a/src/chrome/content/rules/Adjust.com.xml
+++ b/src/chrome/content/rules/Adjust.com.xml
@@ -1,14 +1,7 @@
-
-
+
diff --git a/src/chrome/content/rules/Adk2.xml b/src/chrome/content/rules/Adk2.xml
index fb0c468d41a9..73d62b51d56e 100644
--- a/src/chrome/content/rules/Adk2.xml
+++ b/src/chrome/content/rules/Adk2.xml
@@ -1,4 +1,8 @@
+
+
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/Admatic.xml b/src/chrome/content/rules/Admatic.xml
index c32736525500..f64e8fade0f1 100644
--- a/src/chrome/content/rules/Admatic.xml
+++ b/src/chrome/content/rules/Admatic.xml
@@ -1,13 +1,12 @@
-
+
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/Admeta-Aktiebolag.xml b/src/chrome/content/rules/Admeta-Aktiebolag.xml
index a2393d20fbf1..2a80e860dd0d 100644
--- a/src/chrome/content/rules/Admeta-Aktiebolag.xml
+++ b/src/chrome/content/rules/Admeta-Aktiebolag.xml
@@ -1,15 +1,30 @@
-
-
+
+
+
+
+
+
+
+
+
+
-
-
+
diff --git a/src/chrome/content/rules/Admitad.com.xml b/src/chrome/content/rules/Admitad.com.xml
index 9fdba4c73d04..cc48cfd7ffd9 100644
--- a/src/chrome/content/rules/Admitad.com.xml
+++ b/src/chrome/content/rules/Admitad.com.xml
@@ -7,10 +7,10 @@
-->
-
+
+
-
+
diff --git a/src/chrome/content/rules/Admized.xml b/src/chrome/content/rules/Admized.xml
index 43fae3b51b27..b57305cfc4b2 100644
--- a/src/chrome/content/rules/Admized.xml
+++ b/src/chrome/content/rules/Admized.xml
@@ -1,5 +1,5 @@
-
+
-
+
diff --git a/src/chrome/content/rules/Adnxs.com.xml b/src/chrome/content/rules/Adnxs.com.xml
index 57eb500554cf..9be82126d31e 100644
--- a/src/chrome/content/rules/Adnxs.com.xml
+++ b/src/chrome/content/rules/Adnxs.com.xml
@@ -2,42 +2,57 @@
For other AppNexus coverage, see AppNexus.xml.
- Problematic domains:
+ Problematic hosts in *adnxs.com:
- - cdn.adnxs.com (akamai)
+ - cdn ᴬ
+
+ ᴬ Akamai / mismatched
^adnxs.com doesn't exist.
- Insecure cookies are set for these domains and hosts:
+ Insecure cookies are set for these domains and hosts: ᶜ
- .adnxs.com
- www.adnxs.com
+ ᶜ See https://owasp.org/index.php/SecureFlag
+
-->
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
diff --git a/src/chrome/content/rules/Adobe-mismatches.xml b/src/chrome/content/rules/Adobe-mismatches.xml
index 808a611ada0c..9baf37ce1fb7 100644
--- a/src/chrome/content/rules/Adobe-mismatches.xml
+++ b/src/chrome/content/rules/Adobe-mismatches.xml
@@ -9,7 +9,6 @@
-
+
diff --git a/src/chrome/content/rules/Adobe.xml b/src/chrome/content/rules/Adobe.xml
index 38e24251f840..c57d872511d0 100644
--- a/src/chrome/content/rules/Adobe.xml
+++ b/src/chrome/content/rules/Adobe.xml
@@ -1,4 +1,3 @@
-
@@ -341,9 +337,6 @@
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/Adobe_Connect.xml b/src/chrome/content/rules/Adobe_Connect.xml
index 629ba04530ed..481de2ff8d6d 100644
--- a/src/chrome/content/rules/Adobe_Connect.xml
+++ b/src/chrome/content/rules/Adobe_Connect.xml
@@ -1,4 +1,8 @@
+
-
+
diff --git a/src/chrome/content/rules/Adobe_forms_central.com.xml b/src/chrome/content/rules/Adobe_forms_central.com.xml
index 1354757203fd..319b925aab08 100644
--- a/src/chrome/content/rules/Adobe_forms_central.com.xml
+++ b/src/chrome/content/rules/Adobe_forms_central.com.xml
@@ -1,8 +1,12 @@
+
-
+
diff --git a/src/chrome/content/rules/Adobetag.com.xml b/src/chrome/content/rules/Adobetag.com.xml
index e4dcef154987..914a897b4ec8 100644
--- a/src/chrome/content/rules/Adobetag.com.xml
+++ b/src/chrome/content/rules/Adobetag.com.xml
@@ -13,12 +13,22 @@
-
-
+
+
-
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/Adperium.com.xml b/src/chrome/content/rules/Adperium.com.xml
index 463804368a4b..a739c720a076 100644
--- a/src/chrome/content/rules/Adperium.com.xml
+++ b/src/chrome/content/rules/Adperium.com.xml
@@ -1,4 +1,10 @@
-
+
+
+
diff --git a/src/chrome/content/rules/Adrolays.xml b/src/chrome/content/rules/Adrolays.xml
index faaf3438cef9..7b036410ce94 100644
--- a/src/chrome/content/rules/Adrolays.xml
+++ b/src/chrome/content/rules/Adrolays.xml
@@ -9,7 +9,8 @@
-
+
+
diff --git a/src/chrome/content/rules/Adscale.xml b/src/chrome/content/rules/Adscale.xml
index 5d64769171a8..dd957366981f 100644
--- a/src/chrome/content/rules/Adscale.xml
+++ b/src/chrome/content/rules/Adscale.xml
@@ -1,4 +1,8 @@
+
-
+
diff --git a/src/chrome/content/rules/Adscend-Media.xml b/src/chrome/content/rules/Adscend-Media.xml
index 653fca62eb3a..6adf6fbe4e27 100644
--- a/src/chrome/content/rules/Adscend-Media.xml
+++ b/src/chrome/content/rules/Adscend-Media.xml
@@ -7,7 +7,6 @@
-
+
diff --git a/src/chrome/content/rules/Adseekmedia.xml b/src/chrome/content/rules/Adseekmedia.xml
index 61014339e846..ab70ab2eb1f8 100644
--- a/src/chrome/content/rules/Adseekmedia.xml
+++ b/src/chrome/content/rules/Adseekmedia.xml
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/Adshostnet.com.xml b/src/chrome/content/rules/Adshostnet.com.xml
deleted file mode 100644
index 2c4c183f88a6..000000000000
--- a/src/chrome/content/rules/Adshostnet.com.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/Adsimilis.xml b/src/chrome/content/rules/Adsimilis.xml
index 2824e0efa1e5..7b8bb76dd620 100644
--- a/src/chrome/content/rules/Adsimilis.xml
+++ b/src/chrome/content/rules/Adsimilis.xml
@@ -1,13 +1,19 @@
-
+
+
+
-
+
-
+
diff --git a/src/chrome/content/rules/Adsrvr.org.xml b/src/chrome/content/rules/Adsrvr.org.xml
index 0f5619a27115..cbcea66e9341 100644
--- a/src/chrome/content/rules/Adsrvr.org.xml
+++ b/src/chrome/content/rules/Adsrvr.org.xml
@@ -1,34 +1,91 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
+
diff --git a/src/chrome/content/rules/Adtech.de.xml b/src/chrome/content/rules/Adtech.de.xml
index 6257c799fcc2..b638dd7d61e5 100644
--- a/src/chrome/content/rules/Adtech.de.xml
+++ b/src/chrome/content/rules/Adtech.de.xml
@@ -1,4 +1,8 @@
+
-
+
diff --git a/src/chrome/content/rules/Adult-FriendFinder.xml b/src/chrome/content/rules/Adult-FriendFinder.xml
index cda7b91a0a08..091d3f692e93 100644
--- a/src/chrome/content/rules/Adult-FriendFinder.xml
+++ b/src/chrome/content/rules/Adult-FriendFinder.xml
@@ -4,26 +4,25 @@
CDN buckets:
- - cs77.wac.edgecastcdn.net
+ - cs77.wac.edgecastcdn.net ← graphics
- - graphics.adultfriendfinder.com
+ Problematic hosts in *adultfriendfinder.com:
- Problematic subdomains:
+ - (www.)? ᵐ
+ - graphics ᵐ
- - (www.) (works, mismatched, CN: secure.adultfriendfinder.com)
- - graphics (works, mismatched, CN: *.securedataimages.com)
+ ᵐ Mismatched
- Fully covered subdomains:
+ Insecure cookies are set for these domains: ᶜ
- - (www.) (→ secure)
- - banners (→ secure)
- - graphics (→ secureimage.securedataimages.com)
- - secure
+ - .adultfriendfinder.com
+
+ ᶜ See https://owasp.org/index.php/SecureFlag
-->
-
+
@@ -36,6 +35,17 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/AdultShopping.com.xml b/src/chrome/content/rules/AdultShopping.com.xml
index f7a0c54ea1a0..bf25b893580f 100644
--- a/src/chrome/content/rules/AdultShopping.com.xml
+++ b/src/chrome/content/rules/AdultShopping.com.xml
@@ -1,5 +1,24 @@
+
-
+
@@ -30,13 +53,26 @@
+
+
+
-
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/AdultWork.com.xml b/src/chrome/content/rules/AdultWork.com.xml
index a50d193c9deb..c28a176e6112 100644
--- a/src/chrome/content/rules/AdultWork.com.xml
+++ b/src/chrome/content/rules/AdultWork.com.xml
@@ -1,28 +1,43 @@
-
+
+
+
+
+
+
+
+
-
+
+
-
+
-
+
diff --git a/src/chrome/content/rules/Adult_Toys_4_U.com.xml b/src/chrome/content/rules/Adult_Toys_4_U.com.xml
index 31e6d16ffa26..485f5c60036b 100644
--- a/src/chrome/content/rules/Adult_Toys_4_U.com.xml
+++ b/src/chrome/content/rules/Adult_Toys_4_U.com.xml
@@ -1,15 +1,25 @@
-
+
+
-
+
-
+
+
+
-
+
diff --git a/src/chrome/content/rules/Adult_Webmaster_Empire.xml b/src/chrome/content/rules/Adult_Webmaster_Empire.xml
index f118f4d7cd8c..96869a64aad3 100644
--- a/src/chrome/content/rules/Adult_Webmaster_Empire.xml
+++ b/src/chrome/content/rules/Adult_Webmaster_Empire.xml
@@ -1,49 +1,53 @@
-
-
+
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/Advance_Digital.xml b/src/chrome/content/rules/Advance_Digital.xml
index ff694a22cb33..d2bcec506d38 100644
--- a/src/chrome/content/rules/Advance_Digital.xml
+++ b/src/chrome/content/rules/Advance_Digital.xml
@@ -9,7 +9,6 @@
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/Advanced-Micro-Devices-mismatches.xml b/src/chrome/content/rules/Advanced-Micro-Devices-mismatches.xml
deleted file mode 100644
index 57c62e73caca..000000000000
--- a/src/chrome/content/rules/Advanced-Micro-Devices-mismatches.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/Advanced-Micro-Devices.xml b/src/chrome/content/rules/Advanced-Micro-Devices.xml
deleted file mode 100644
index 0e46a8a95db2..000000000000
--- a/src/chrome/content/rules/Advanced-Micro-Devices.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/Advantage-Business-Media.xml b/src/chrome/content/rules/Advantage-Business-Media.xml
index 7d0dd5f578bd..a04585026f44 100644
--- a/src/chrome/content/rules/Advantage-Business-Media.xml
+++ b/src/chrome/content/rules/Advantage-Business-Media.xml
@@ -4,7 +4,6 @@
-
+
diff --git a/src/chrome/content/rules/Advantage.xml b/src/chrome/content/rules/Advantage.xml
index 18ce013374fd..7221c0659ee7 100644
--- a/src/chrome/content/rules/Advantage.xml
+++ b/src/chrome/content/rules/Advantage.xml
@@ -1,4 +1,10 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Advent.com.xml b/src/chrome/content/rules/Advent.com.xml
index 84e0aee8116d..8b4886c84bda 100644
--- a/src/chrome/content/rules/Advent.com.xml
+++ b/src/chrome/content/rules/Advent.com.xml
@@ -1,4 +1,9 @@
+
-
+
diff --git a/src/chrome/content/rules/Adventori.com.xml b/src/chrome/content/rules/Adventori.com.xml
new file mode 100644
index 000000000000..b83809cc997d
--- /dev/null
+++ b/src/chrome/content/rules/Adventori.com.xml
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Adversary.org.xml b/src/chrome/content/rules/Adversary.org.xml
deleted file mode 100644
index 7d2ef1991561..000000000000
--- a/src/chrome/content/rules/Adversary.org.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/Advertisers-OpenX.com.xml b/src/chrome/content/rules/Advertisers-OpenX.com.xml
index 82a40fe06405..ef907f7d7776 100644
--- a/src/chrome/content/rules/Advertisers-OpenX.com.xml
+++ b/src/chrome/content/rules/Advertisers-OpenX.com.xml
@@ -1,4 +1,8 @@
+
-
+
diff --git a/src/chrome/content/rules/Advertising.com.xml b/src/chrome/content/rules/Advertising.com.xml
index d77a4e1c0af3..1958bab4c205 100644
--- a/src/chrome/content/rules/Advertising.com.xml
+++ b/src/chrome/content/rules/Advertising.com.xml
@@ -38,11 +38,13 @@
- secure.uac
- Insecure cookies are set for these domains:
+ Insecure cookies are set for these domains: ᶜ
- .advertising.com
- .adaptv.advertising.com
+ ᶜ See https://owasp.org/index.php/SecureFlag
+
-->
diff --git a/src/chrome/content/rules/Advg.jp.xml b/src/chrome/content/rules/Advg.jp.xml
index f9719f0d2229..ee96ed6738f7 100644
--- a/src/chrome/content/rules/Advg.jp.xml
+++ b/src/chrome/content/rules/Advg.jp.xml
@@ -3,7 +3,6 @@
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/Adviceguide.xml b/src/chrome/content/rules/Adviceguide.xml
index a61f456e90c0..e84a0dc76d53 100644
--- a/src/chrome/content/rules/Adviceguide.xml
+++ b/src/chrome/content/rules/Adviceguide.xml
@@ -1,19 +1,36 @@
-
+
-
+
+
+
-
-
+
+
-
+
+
+