summaryrefslogtreecommitdiff
path: root/data/extensions/https-everywhere@eff.org/chrome/content
diff options
context:
space:
mode:
authorRuben Rodriguez <ruben@gnu.org>2015-07-13 22:53:00 -0500
committerRuben Rodriguez <ruben@gnu.org>2015-07-13 22:53:00 -0500
commit23103d7773e24fdf15b79ed69c67089b593fb31a (patch)
treeee1b744a80dd192e62fefc72ff1f0bf978d0d24c /data/extensions/https-everywhere@eff.org/chrome/content
parent9cb91f8a48f9467e448f88984c20b3429e8a2510 (diff)
HTTPS-Everywhere updated to 5.0.5
Diffstat (limited to 'data/extensions/https-everywhere@eff.org/chrome/content')
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/about.xul4
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/code/AndroidUI.jsm14
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/code/ApplicableList.js28
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/code/HTTPS.js627
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/code/HTTPSRules.js152
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/code/IOUtil.js2
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/code/NSS.js6
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/code/STS.js228
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/code/X509ChainWhitelist.js818
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/code/commonOCSP.json289
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/fetch-source.js4
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/observatory-preferences.xul8
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/observatory-xul.js7
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/preferences.js9
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/preferences.xul2
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/rules/00README17
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests.js1
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/toolbar_button.js163
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/toolbar_button.xul4
19 files changed, 1281 insertions, 1102 deletions
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/about.xul b/data/extensions/https-everywhere@eff.org/chrome/content/about.xul
index 9b6dce6..6a99d94 100644
--- a/data/extensions/https-everywhere@eff.org/chrome/content/about.xul
+++ b/data/extensions/https-everywhere@eff.org/chrome/content/about.xul
@@ -21,7 +21,7 @@
<groupbox>
<caption label="&https-everywhere.about.version;" />
- <label>4.0.3</label>
+ <label>5.0.5</label>
</groupbox>
<groupbox>
@@ -60,7 +60,7 @@
onmouseover="event.target.style.cursor='pointer'"
onmouseout="event.target.style.cursor='default'"
onclick="window_opener('https://www.torproject.org/donate/donate.html.en')"/>
- or
+ &https-everywhere.about.or;
<label id="donate link2"
value="&https-everywhere.about.donate_eff;"
style="color: blue; cursor:hand; text-decoration:underline; font-style:bold"
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/AndroidUI.jsm b/data/extensions/https-everywhere@eff.org/chrome/content/code/AndroidUI.jsm
index e476345..1a4936d 100644
--- a/data/extensions/https-everywhere@eff.org/chrome/content/code/AndroidUI.jsm
+++ b/data/extensions/https-everywhere@eff.org/chrome/content/code/AndroidUI.jsm
@@ -27,6 +27,16 @@ function loadIntoWindow() {
} 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() {
@@ -82,8 +92,8 @@ var popupInfo = {
ruleStatus: [],
alist: null,
getApplicableList: function() {
- var domWin = aWindow.BrowserApp.selectedTab.window;
- return HTTPSEverywhere.getApplicableListForDOMWin(domWin);
+ var browser = aWindow.BrowserApp.selectedBrowser;
+ return HTTPSEverywhere.getApplicableListForBrowser(browser);
},
fill: function() {
this.clear();
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/ApplicableList.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/ApplicableList.js
index 247f5b7..351530a 100644
--- a/data/extensions/https-everywhere@eff.org/chrome/content/code/ApplicableList.js
+++ b/data/extensions/https-everywhere@eff.org/chrome/content/code/ApplicableList.js
@@ -2,20 +2,18 @@
// were applied, and which ones weren't but might have been, to the contents
// of a given page (top level nsIDOMWindow)
-serial_number = 0;
+var serial_number = 0;
-function ApplicableList(logger, doc, domWin) {
- this.domWin = domWin;
- this.uri = doc.baseURIObject.clone();
+function ApplicableList(logger, uri) {
+ this.log = logger;
+ this.uri = uri.clone();
if (!this.uri) {
this.log(WARN,"NULL CLONING URI " + doc);
- if (doc)
- this.log(WARN,"NULL CLONING URI " + doc.baseURIObject);
- if (doc.baseURIObject)
- this.log(WARN,"NULL CLONING URI " + doc.baseURIObject.spec);
+ if (uri) {
+ this.log(WARN,"NULL CLONING URI " + uri.spec);
+ }
}
- this.home = doc.baseURIObject.spec; // what doc we're housekeeping for
- this.log = logger;
+ this.home = uri.spec; // what doc we're housekeeping for
this.active = {};
this.breaking = {}; // rulesets with redirection loops
this.inactive = {};
@@ -40,14 +38,14 @@ ApplicableList.prototype = {
active_rule: function(ruleset) {
this.log(INFO,"active rule " + ruleset.name +" in "+ this.home +" -> " +
- this.domWin.document.baseURIObject.spec+ " serial " + this.serial);
+ 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.domWin.document.baseURIObject.spec+ " serial " + this.serial);
+ this.uri.spec+ " serial " + this.serial);
this.breaking[ruleset.name] = ruleset;
this.all[ruleset.name] = ruleset;
},
@@ -55,7 +53,7 @@ ApplicableList.prototype = {
inactive_rule: function(ruleset) {
this.log(INFO,"inactive rule " + ruleset.name +" in "+ this.home +" -> " +
- this.domWin.document.baseURIObject.spec+ " serial " + this.serial);
+ this.uri.spec+ " serial " + this.serial);
this.inactive[ruleset.name] = ruleset;
this.all[ruleset.name] = ruleset;
},
@@ -140,8 +138,8 @@ ApplicableList.prototype = {
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
.getService(Components.interfaces.nsIWindowMediator);
- var domWin = wm.getMostRecentWindow("navigator:browser").content.document.defaultView.top;
- var location = domWin.document.baseURIObject.asciiSpec; //full url, including about:certerror details
+ 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
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/HTTPS.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/HTTPS.js
index fda0a30..e41573a 100644
--- a/data/extensions/https-everywhere@eff.org/chrome/content/code/HTTPS.js
+++ b/data/extensions/https-everywhere@eff.org/chrome/content/code/HTTPS.js
@@ -1,307 +1,320 @@
-INCLUDE('Cookie');
-// XXX: Disable STS for now.
-var STS = {
- isSTSURI : function(uri) {
- return false;
- }
-};
-
-// 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,
-
- replaceChannel: function(applicable_list, channel, httpNowhereEnabled) {
- var blob = HTTPSRules.rewrittenURI(applicable_list, channel.URI.clone());
- if (null === blob) {
- // Abort insecure requests when HTTP Nowhere is on
- if (httpNowhereEnabled && channel.URI.schemeIs("http")) {
- 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;
- 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);
-
- // Don't return: Fallback to NoScript ChannelReplacement.js
- }
- 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.domain + " " + 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;
+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);
+
+ // Don't return: Fallback to NoScript ChannelReplacement.js
+ }
+ 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/data/extensions/https-everywhere@eff.org/chrome/content/code/HTTPSRules.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/HTTPSRules.js
index ecbaf76..fc91385 100644
--- a/data/extensions/https-everywhere@eff.org/chrome/content/code/HTTPSRules.js
+++ b/data/extensions/https-everywhere@eff.org/chrome/content/code/HTTPSRules.js
@@ -30,6 +30,7 @@ function RuleSet(id, name, xmlName, match_rule, default_off, platform) {
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) {
@@ -108,7 +109,11 @@ RuleSet.prototype = {
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) return returl;
+ 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;
@@ -241,11 +246,9 @@ const RuleWriter = {
return rv;
},
- read: function(file, rule_store, ruleset_id) {
+ read: function(file) {
if (!file.exists())
return null;
- if ((rule_store.targets == null) && (rule_store.targets != {}))
- this.log(WARN, "TARGETS IS NULL");
var data = "";
var fstream = CC["@mozilla.org/network/file-input-stream;1"]
.createInstance(CI.nsIFileInputStream);
@@ -262,6 +265,28 @@ const RuleWriter = {
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);
},
@@ -442,7 +467,7 @@ const HTTPSRules = {
try {
this.log(DBUG,"Loading ruleset file: "+rulefiles[i].path);
var ruleset_id = "custom_" + i;
- RuleWriter.read(rulefiles[i], this, ruleset_id);
+ RuleWriter.rulesetFromFile(rulefiles[i], this, ruleset_id);
} catch(e) {
this.log(WARN, "Error in ruleset file: " + e);
if (e.lineNumber)
@@ -459,6 +484,7 @@ const HTTPSRules = {
}
},
+
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
@@ -471,7 +497,7 @@ const HTTPSRules = {
// 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(NOTE, "Processing " + input_uri.spec);
+ this.log(DBUG, "Processing " + input_uri.spec);
var uri = this.sanitiseURI(input_uri);
@@ -493,8 +519,6 @@ const HTTPSRules = {
}
blob.newuri = rs[i].transformURI(uri);
if (blob.newuri) {
- // we rewrote the uri
- this.log(DBUG, "Rewrote "+input_uri.spec);
if (alist) {
if (uri.spec in https_everywhere_blacklist)
alist.breaking_rule(rs[i]);
@@ -581,12 +605,10 @@ const HTTPSRules = {
// 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.log(DBUG, "Querying DB for ruleset id " + ruleset_id);
this.queryForRuleset.params.id = ruleset_id;
try {
if (this.queryForRuleset.executeStep()) {
- this.log(INFO, "Found ruleset in DB for id " + ruleset_id);
RuleWriter.readFromString(this.queryForRuleset.row.contents, this, ruleset_id);
} else {
this.log(WARN,"Couldn't find ruleset for id " + ruleset_id);
@@ -613,13 +635,20 @@ const HTTPSRules = {
}
}
} else {
- this.log(INFO, "For target " + target + ", found no ids in DB");
+ 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.<RuleSet>}
+ */
potentiallyApplicableRulesets: function(host) {
- // Return a list of rulesets that declare targets matching this host
var i, tmp, t;
var results = [];
@@ -633,6 +662,10 @@ const HTTPSRules = {
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;
@@ -656,7 +689,7 @@ const HTTPSRules = {
// implementations, etc.
var req = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"]
.createInstance(Ci.nsIXMLHttpRequest);
- req.open("GET", "https://eff.org/files/alexa-top-10000-global.txt", false);
+ req.open("GET", "https://www.eff.org/files/alexa-top-10000-global.txt", false);
req.send();
var domains = req.response.split("\n");
var domains_l = domains.length - 1; // The last entry in this thing is bogus
@@ -680,23 +713,48 @@ const HTTPSRules = {
this.log(NOTE, count + " hits: average subsequent call to potentiallyApplicableRulesets took " + (t2 - t1) / domains_l + " milliseconds");
},
- shouldSecureCookie: function(applicable_list, c, known_https) {
- // Check to see if the Cookie object c meets any of our cookierule citeria
- // for being marked as secure.
- // @applicable_list : an ApplicableList or record keeping
- // @c : an nsICookie2
- // @known_https : true if we know the page setting the cookie is https
+ /**
+ * 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;
+ }
+ },
- this.log(DBUG," rawhost: " + c.rawHost + "\n name: " + c.name + "\n host" + c.host);
+ /**
+ * 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;
- var rs = this.potentiallyApplicableRulesets(c.host);
+ // 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))
+ 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)) {
@@ -705,29 +763,38 @@ const HTTPSRules = {
return true;
}
}
- if (ruleset.cookierules.length > 0)
- if (applicable_list) applicable_list.moot_rule(ruleset);
+ 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);
+ 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) {
- // 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.
-
- // 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.
-
if (domain in https_blacklist_domains) {
this.log(INFO, "cookies for " + domain + "blacklisted");
return false;
@@ -735,7 +802,6 @@ const HTTPSRules = {
// 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;
@@ -746,17 +812,19 @@ const HTTPSRules = {
return false;
}
- this.log(INFO, "Testing securecookie applicability with " + test_uri);
- var rs = this.potentiallyApplicableRulesets(domain);
+ 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(INFO, "Yes: " + rewrite);
+ this.log(DBUG, "Safe to secure cookie for " + test_uri + ": " + rewrite);
return true;
}
}
- this.log(INFO, "(NO)");
+ this.log(DBUG, "Unsafe to secure cookie for " + test_uri);
return false;
}
};
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/IOUtil.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/IOUtil.js
index 7e1ff8f..f3a5bee 100644
--- a/data/extensions/https-everywhere@eff.org/chrome/content/code/IOUtil.js
+++ b/data/extensions/https-everywhere@eff.org/chrome/content/code/IOUtil.js
@@ -123,7 +123,7 @@ const IOUtil = {
},
abort: function(channel, noNetwork) {
- channel.cancel(Cr.NS_ERROR_ABORT);
+ channel.cancel(Components.results.NS_ERROR_ABORT);
},
findWindow: function(channel) {
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/NSS.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/NSS.js
index 97a7e78..378a680 100644
--- a/data/extensions/https-everywhere@eff.org/chrome/content/code/NSS.js
+++ b/data/extensions/https-everywhere@eff.org/chrome/content/code/NSS.js
@@ -31,8 +31,10 @@ NSS.initialize = function(nssPath) {
try {
sharedLib = ctypes.open(nssPath);
} catch (e) {
- dump("Failed to find nss3 in installed directory, checking system paths.\n");
- sharedLib = ctypes.open(ctypes.libraryName("nss3"));
+ Components.utils.import("resource://gre/modules/Services.jsm");
+ var nssFile = Services.dirsvc.get("GreD", Ci.nsILocalFile);
+ nssFile.append(ctypes.libraryName("nss3"));
+ sharedLib = ctypes.open(nssFile.path);
}
NSS.types = new Object();
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/STS.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/STS.js
deleted file mode 100644
index 17999aa..0000000
--- a/data/extensions/https-everywhere@eff.org/chrome/content/code/STS.js
+++ /dev/null
@@ -1,228 +0,0 @@
-// http://lists.w3.org/Archives/Public/www-archive/2009Sep/att-0051/draft-hodges-strict-transport-sec-05.plain.html
-
-const STS = {
-
- enabled: false,
-
- get db() {
- delete this.db;
- return this.initPersistentDB();
- },
-
- initPersistentDB: function() {
- return this.db = new STSDB(STSPersistence);
- },
-
- processRequest: function(chan) {
- if (this.enabled) {
- var uri = chan.URI;
- if (uri.schemeIs("https")) {
- try {
- this.db.processHeader(uri.asciiHost, chan.getResponseHeader("Strict-Transport-Security"));
- } catch (e) {}
- }
- }
- },
-
- isSTSURI: function(uri) {
- return this.enabled && this.db.matches(uri.asciiHost);
- },
-
- enterPrivateBrowsing: function() {
- try {
- this.db.save();
- } catch(e) {}
-
- this.db = new STSDB(this.db);
- },
-
- exitPrivateBrowsing: function() {
- this.initPersistentDB();
- },
-
- eraseDB: function() {
- this.db.reset();
- STSPersistence.save(this.db);
- },
-
- patchErrorPage: function(docShell, errorURI) {
- // see #errors-in-secure-transport-establishment
- if (!this.enabled) return;
-
- if (!(/^about:certerror?/.test(errorURI.spec) &&
- this.isSTSURI(docShell.currentURI))
- ) return;
-
- Thread.delay(function() {
- docShell.document.getElementById("expertContent").style.display = "none";
- }, 100);
- },
-
- dispose: function() {
- this.db.save();
- }
-};
-
-function STSDB(source) {
- this._entries = {};
- if (source && source._entries) { // clone
- var entries = source._entries;
- for (var p in entries) {
- this._entries[p] = entries[p];
- }
- } else {
- if (source && source.load) {
- this._persistence = source;
- this.load();
- }
- }
-}
-
-STSDB.prototype = {
- _persistence: null,
- _dirty: false,
- _saveTimer: null,
-
- processHeader: function(host, header) {
- if (DNS.isIP(host)) return;
-
- var m = header.match(/^\s*max-age\s*=\s*(\d+)\s*(;\s*includeSubDomains)?/i);
- if (!m) return;
- var maxAge = parseInt(m[1]);
- var includeSubDomains = !!m[2];
- var expiration = Math.round(Date.now() / 1000) + maxAge;
- if (host in this._entries) {
- var e = this._entries[host];
- if (e.expiration == expiration && e.includeSubDomains == includeSubDomains)
- return;
-
- e.expiration = expiration;
- e.includeSubDomains = includeSubDomains;
- } else {
- this.add(new STSEntry(host, expiration, includeSubDomains));
- }
- this.saveDeferred();
- },
-
- add: function(entry) {
- this._entries[entry.host] = entry;
- },
-
- matches: function(host, asSuperDomain) {
- if (host in this._entries) {
- var e = this._entries[host];
-
- if (e.expiration >= Date.now() / 1000) {
- if ((!asSuperDomain || e.includeSubDomains))
- return true;
- } else {
- delete this._entries[host];
- }
- }
-
- var dotPos = host.indexOf(".");
- var lastDotPos = host.lastIndexOf(".");
-
- if (dotPos == lastDotPos)
- return false;
-
- return this.matches(host.substring(dotPos + 1), true);
- },
-
- serialize: function() {
- var lines = [], ee = this._entries;
- var e;
- for (var h in ee) {
- e = ee[h];
- lines.push([e.host, e.expiration, e.includeSubDomains ? "*" : ""].join(";"));
- }
- return lines.join("\n");
- },
- restore: function(s) {
- s.split(/\s+/).forEach(function(line) {
- if (line) {
- var args = line.split(";");
- if (args.length > 1)
- this.add(new STSEntry(args[0], parseInt(args[1]), !!args[2]));
- }
- }, this);
- },
-
- load: function() {
- if (this._persistence) {
- this._persistence.load(this);
- this.purgeExpired();
- }
- },
-
- save: function() {
- if (this._dirty && this._persistence) {
- this.purgeExpired();
- this._persistence.save(this);
- this._dirty = false;
- }
- },
-
- saveDeferred: function() {
- if (this._dirty || !this._persistence) return;
- this._dirty = true;
- if (!this._timer) this._timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
- this._timer.initWithCallback(this, 10000, Ci.nsITimer.TYPE_ONE_SHOT);
- },
- notify: function(timer) {
- this.save();
- },
-
- purgeExpired: function() {
- var now = Math.round(Date.now() / 1000);
- for (var h in this._entries) {
- if (this._entries[h].expiration < now) delete this._entries[h];
- }
- },
-
- reset: function() {
- this._entries = {};
- this._dirty = false;
- }
-};
-
-function STSEntry(host, expiration, includeSubDomains) {
- this.host = host;
- this.expiration = expiration;
- if (includeSubDomains) this.includeSubDomains = includeSubDomains;
-}
-
-STSEntry.prototype = {
- includeSubDomains: false
-};
-
-
-const STSPersistence = {
- get _file() {
- delete this._file;
- var f = Cc["@mozilla.org/file/directory_service;1"].getService(
- Ci.nsIProperties).get("ProfD", Ci.nsIFile);
- f.append("NoScriptSTS.db");
- return this._file = f;
- },
- load: function(db) {
- var f = this._file;
- try {
- if (f.exists()) db.restore(IO.readFile(f));
- } catch (e) {
- dump("STS: Error loading db from " + f.path + "!" + e + "\n");
- return false;
- }
- return true;
- },
- save: function(db) {
- var f = this._file;
- try {
- IO.safeWriteFile(f, db.serialize());
- } catch(e) {
- dump("STS: Error saving db to " + f.path + "!" + e + "\n");
- return false;
- }
- return true;
- }
-};
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/X509ChainWhitelist.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/X509ChainWhitelist.js
index ab65d34..d3f23cf 100644
--- a/data/extensions/https-everywhere@eff.org/chrome/content/code/X509ChainWhitelist.js
+++ b/data/extensions/https-everywhere@eff.org/chrome/content/code/X509ChainWhitelist.js
@@ -7,718 +7,701 @@ const X509ChainWhitelist = {
'000AA4E99FE86D84F762DFB2DC29323D0614B95AA335A270AF204EBA2F2240AF' : true,
'002F83BE1562B658A7BA747EEE36FFBA25A7D6C66E263B2901184058802D9A43' : true,
'006014E5A5190652C3475AA099483A273989F403FDB282AAD77DB72397C274A8' : true,
- '0083ADC47D20CA3E5BC3842892CCA4BBF76EE97ADB2859574B03826C8BF1B299' : true,
- '012AAE6B27B392684695FA22F87C8DD3F60CDAB564EE4D4D58DF98575D99153B' : true,
+ '00C5E47B1FD6776F23E3C277A5D0E051E060E8540B49A8A955F5578EC1212899' : true,
+ '013470D100AFBBA6D4E03735C1D924EFA6E25E66F781E9DBB6155EF713336307' : true,
+ '0147A7B139D599058A43CDE86602DA56375CC78C2C15AC512953E3C98592D4D2' : true,
'0163052F69741784B5CE768D0EE6B5C7C1B977358FDF7E1EC53F249CF0E1F62E' : true,
'016BBB29A76DA59A20C5E9909D8D0A9CD25824D7462BD51B022D61B503569936' : true,
'019591B144FAEE294D2BB557FD005FCFE7EC772543C79A86B968FAC895C5C57E' : true,
'01E42F89ABE23F6B00E5A35240F35DF38A861FADA04A0B07B6DA9FFA4B57075C' : true,
'01FC275FB7BB83082EA2C546876545030D74F68355AF2B0CCB1972993B393E58' : true,
- '027017BAD8EC764424A5DB3B647AD769E78F1653A92F800FAF21212C4DB6CEF8' : true,
'02748B445F904F6C04BB42BB810B11B77BDE047350F3181DF40C3BA79D4DC89F' : true,
'028CD123ABEA12F150435947299419928DC5E80E94E9148841265B64344C3DBC' : true,
'028D7A3A5ACA6156AA42F1DAE25BD6116A417EFD8E64B7E6A004B1911CABCAC0' : true,
- '02C97B79DE43F653E467A014CFABD304F158D7B82F1FBCCBD1A80E796A81E2F3' : true,
+ '02E266B8D011CF92708D0DD0D9D840BB8EF54B4A4670BF700AE90EE6F7E445A8' : true,
+ '02EE88738EA513E191ED7197DA80736330AAC72CD846B866683ECA283945113E' : true,
'02FB82CE0C8614F748564CB3D14C2BCDDFCF982D6187EC85E5A33B28E5340CF7' : true,
- '031D067C16F47BEC5F7DED975D274621D7A59755BA86B9A706C3A61740DA302F' : true,
- '034AA8D4F147FC9E93CC18EB5BC06F28FE3DF4923CA61A9CAE92F4E3E078C5F3' : true,
'0383B8763C6ED572306AB1253E433A3169F1EDF7078F57D07BC3461199BEF86B' : true,
'043B68D81BB683927B40D3DAFC7F89C56F400F859DE68C0EA88AAB1FB1D75A27' : true,
- '04A8EBA3C62D7F93CD41A644537F9400E050FB3EB50F4CD39C3BC28679677FC1' : true,
- '04AEEFBC8685B2668E25C23D77C6D63B95C7C0BA1B8ABBF434F5EAA66BC3E7F4' : true,
+ '044588D0C47A1900949CA779023D646E858FA13CC0E29236CCB270B925AE7A8D' : true,
+ '045B734DD0081F9504751492B6059B22BC201018436701D98832E3A9AF050ADE' : true,
+ '0494ED6BB7E16B78F2AEAAC053DAE6B31B52E39F0E10F5E8D95B77ECBA0A0BAC' : true,
+ '04BE558E6D064E92B741B3C551CFE1F38462EF3A08AC56470894D1A80278AD5E' : true,
+ '0508390E2DF4B63477E49A461AE883335BC71F03A24BAA06F46EB0DBF42641EF' : true,
'0529FFECC3EB688DEA32684A0348F89876F1BD45FEA23DC8E9A25D524E7B1333' : true,
+ '054806D84102E23956A821100183D32EC4B5E8E9DE72912A1F8E6EE53FF9A839' : true,
'05546BBD905F23086AF150C0B1E30F0BCA2705B6E0CBDB56092D8E62CFD09D0E' : true,
'055C88BD28194042771FF813973E086A30710231DB219FF377B79FA075E7F2AD' : true,
- '05AB7C5008028AB507978E1719CB8DC3A30E54242FE4AB84A6D93886291A97B1' : true,
+ '0589AF9C3A578488F4259AB8BBFFB2089D4C678B63D4C40B6A46CE2405346C0D' : true,
'06183C90C1DCDC3E9340477D37DC231361321A9960C1948E92D1A175A1500A08' : true,
'062C8DBFF4E5BE9BC9B9FFB76AF6CCCECFE8C0DDF52EB61EC9A4C7BCB6A1932C' : true,
'06354AFD85075A5BDE2D84F8408B185CCFD354C2D75988D8FC67948AA6F60562' : true,
- '065A0A8EA119FFE3399B94FCC432C0BE2FE53E2A5BD4AE048C95A2A9AD3565E8' : true,
'06808645F29D708E4C31AC40FA00000733238E10A56D2067AA62803C9736E923' : true,
'0698D7B65AF15F9A903D8D364BB7DBC1B238DACA79505B8BCE8D44AEAAB5709D' : true,
- '06F5FB4F829518EEFAC1D1F0DF6522ACF27CD0C6EE68B60272786A4D303D4B15' : true,
+ '06CF7C8A288CED36FD6E94F36E2726C7D96EC14BE860ACA35AC4B22922EB11BF' : true,
+ '06D7D04035F29672F6921CF0BB432541AE7579AA2591ABFA9155639DBEFFD2F5' : true,
'0742E85FE9C68350E070039897F5B790BDA92D92229D74BA9C6906D958A5C510' : true,
'077495BFAEEBF5E62CEA015EDCE70CE78AF13C813920FD9D4AB72C999F60D4DC' : true,
+ '0780AB0F9801F169F4E7DE6F6F40F9575707D4561E4EFEBBADE71279825E0CE6' : true,
'07B61AF096B72D71AF801B9C7EB9F76C42CC20A7192C78DF1336611644289BE5' : true,
'07CF2A06F1718D6E476B98C2B42E370A35FAFE4C1F41CF7A1DE115CDB6222FAC' : true,
+ '07D5A15EAED5AE2CA304FFCAD864791055797B0252F925AE9177B686461E2C17' : true,
+ '07E033082E94BEB3D19374BCFC5B127A65A98DF15004E1EBE6840CE81BAF8D60' : true,
'09250AF23BC74D92973DD48812D5ED28CE1F5C110EE5F7CA791D9CFDE04A131C' : true,
'095FB0FC3CC67539621E292205E758437D94D3B651714049E6F99130BD5ADB6D' : true,
- '0A36586C8EEE28E5ECA1F542691D12B3CE7815CDCF722CDF7074AA71413C2550' : true,
- '0A6A1FECBADAF7F1B473305A71E454F6AA8C1B0F40941FF4660B814BFF4984B3' : true,
- '0AA35EE4A9C6C03831FB98614B39C9E198F0BA90FA416F4618B1BA8CF69004C8' : true,
- '0AA5730256323B66DBE88E3056AA3F45E52BE5E2B87C1C9DBC1986CEAF97B5D9' : true,
+ '097F996F81161F905C03E1882CA6F70044749A4954C30172DAB3768119934233' : true,
'0B1C1033250F6DED11E4C0A7E43138AD3D52F5661FEC896519BEBCBEFDC16E41' : true,
- '0B901F548AE4E0F25EF38010E311945FB198E497F203A88FE7C44970F7ECDC40' : true,
+ '0BA75006139D075BF8CD7D94B460A850F46509B23AD572CD1A1E23134F59431F' : true,
'0BAA329411B026583F061B1244EE6A78030D6B5E0BE1DB8CD8A5BB62D12CE0A8' : true,
- '0BD9645DC969A6DDD1D1EED4A9A0BA6BDED52CBF944C793A92F6D36495817BF4' : true,
- '0C114EDF67FB7C09C532297D79A5743EE5F8576A8EBE3DF69A728B8CFC0A167C' : true,
- '0C7E90EF8BCD379CB001FD07530718DCC0A33E9D7D1D333F505F0143BC6A8FD6' : true,
- '0CA932C2E0929B9B6C0A8822D3F094F671522419835049CAEAC51755D1F44777' : true,
'0CBDFCAB2337A7B0B7379B5FEC554D0361108C3CF55B6F2C39E6B843A47B28B7' : true,
- '0D91DE20988EA155526570498A1A6289FEC55994A5BA888C9134765F2A0B0580' : true,
'0DAB05854E84AABD75D30CE09246103436A4C41E931374E16CC374596C8DBB94' : true,
- '0E1CFDDF0ECE5FA5E01C55B70E840BF89CE6F2519FCA82361575A776C3F87669' : true,
'0E3BD8F8BC06B326EF672A487855F0E9752EF7D4A2A913A41374088B6215EA44' : true,
'0E49A9594364BFD4E6943DB24A2F77FA125596414D46F46AFCF070A1645AAC48' : true,
'0ECB53FDA2349AB6008BBC0E5CD361EEC5B6BD769281800FF4B1C9764A925277' : true,
'0EF8FA5AAD4BACDB842959378F18935855B027B0BADDCBDEADC9CC958C4C603B' : true,
- '0EFB0E1F7E0EEE7AEB423EE843F6A39CEC5DB2929EAFBB693E7625703722B6D9' : true,
- '0F39AF5CA9615B05CBC12DE3C94A8C4FBA71CA8CEF541952315A9D0658DB5B28' : true,
- '0F5D090C392B41D8B62B2FE46245E81D99A996608DC7460E9F6E246DE9AD81BF' : true,
- '0F7DE9806919EBD5EE47188428BF7FE13495E4684ADBB5BA980BB15D4D0B0C22' : true,
+ '0F01342B195E54DA8265E4B3928A2692F6CF05F41CB85152A8122FE6E914C67B' : true,
+ '0F7391E841B068E145E12DBF6CC16DF16410083111E5F093302BA163AD4EF39F' : true,
'0F820CFB486D8564C83E968049AD119FD838B2CD21C0B342A0D9B5D22C445C25' : true,
'0FA392F6EABCE0F4DA14C7B5237B21BEEE6BDA55832A8A6090CAEBB53AC8D77B' : true,
'0FBBC11F4627D5AA5F7A7847E0F8DE298021E175EC69ECA90A62740A71DC9B1F' : true,
'0FEC8F0781CB9193F4996B43806C6D2C539847FBBC0C28146B64FC35617BAB99' : true,
- '1049EFDE8BD0E7D94AE05D50D326ABCE41E79B0572F86FDF1F7387738262F09A' : true,
- '10552D044AD79FBF1AF5357998DAB9B1FFD66D7B53C8107FC2280148D66475E3' : true,
'105993C03E3F5C7E94D5A78242FCD6D0C7B7E5104295F8275752D7C6908428B8' : true,
'1089E7487C08428CAACCCDBA18B8982049B6A915FBA4598E953395B4493CC358' : true,
- '10CD32208C0ABDA768AF83D0B512E982C41C70839DA5B09129FA30D6FFB7B3BD' : true,
- '10DA37DA6145B167BF49584975548A771726219786BA838C1D4BC2B830440AA8' : true,
+ '10B8161FF4FC64020AD40EA57306CFC5010BF9682B18DEEF2544DD4D5DF0466E' : true,
+ '10E65A16F0DEE4B2499EBD5C96CD416BD2713C73A422F3BDBA81899C736437C5' : true,
'10E82776E55D0C2D58F6598E615CF38AA14161D1EAD97C4A09182FE1D44E695B' : true,
'1134E778B42A8DBD01C547E9676F5294D4B16297DB8F6A512394F77B21F22052' : true,
'116A5D5F3E99CFE5F72A4AFAC8699CC225C130F4B8520CDB350A1262D9585973' : true,
'118FF53B6BEB35CBFE6592D45BE082BA1228D1817E46B2CC14B8855FCC5C9D59' : true,
'119380AA5B344A339A3C0E724014E9F1562789F6E19320AA0C111B5910E8CE12' : true,
'11F7A939F33BDF6270E16C747C0B0918902CD4501AF1843D9EA4445A2E708C58' : true,
+ '12265448C0B0AEF0CD2A13E0F1D4BB1AE8A924A7418443345344E5F16E06758A' : true,
'1243C75D0F805DA54E780D0D9C55247B1ABB31FC09EB65A7017695945F2A0D4A' : true,
- '124E430E0E0B103B580A0436D7CF436F6ECE55908279FA8EBDF475AED08A9CE9' : true,
'12826065A034136FFC2258AA1A65F9E550A582B4017E396077917C775D42E553' : true,
'12847FE3848EEBB38A6544A30C16833362D3A1E5601A38EA8138F09B59861CFA' : true,
- '13918A08A9934A86C0F89E7F02E3D58042DC85EADA2702BD04A3E8D22A52B3B4' : true,
- '13BD084B8899A39BECFFA3D5C2DAC1341135AF4C32876180A228AD86835840DA' : true,
- '13C95CC294CC8E10A1238D8DED604D052773254019086B6DD76E1A8D17BFD8B4' : true,
- '13DA6D132B97980D19AF7FA7ABBC01878A312AD38E8E69D5896A413216B68B44' : true,
+ '1306A4D21476D28D3E2F7D6E4385686E1BCB6D7EEBB1A5217346A6E5855DF944' : true,
+ '130F0A3C4B9E9132D1676B4EBBAB2B17AFD2AF39E291C983A696D8BF0DD379BD' : true,
'13ECB3394571030912CDF82DDAFA05B242398929BD3ACE1598B79DBF28B701F8' : true,
- '13F88408D1324B3806E5913DB0DE248EA7DE8647FAF3B4197BAA2A4990EEDD7B' : true,
'142BA9FFCEF5D09FF3DE4BBF8110156D52FEF1C8C707E4B916692D7DDB335A6D' : true,
- '14C85AF4EC6C7C563031FA493161345A9912E200FB972319286A5AA5AB5DA9A9' : true,
- '14E661F79E9A39044D2D0CBF4E26B614F3B0EB1653D832F2B48C3C42110AF371' : true,
+ '1491DCCE9B3E3F5EEA92C26671244EB7203C30F539EF5B6131459F389A0D2CD8' : true,
+ '14CF0BEC6B8811A81FF5AD015C62BC85AF172E86B7504D40E9F27F0E0A6F9BDC' : true,
+ '14D5F704481C18BA8A23559A9E49942C499BA8011926C09F4D721D92ACA5F20E' : true,
'150B877BB614A98F2186C3B0978D190C77A605146A6A569036728F544520CDC8' : true,
'150F5BC3D839579BD7DD1254A6C3C3AFE3485D7DED21C3B8123BA6875886A91A' : true,
'154C4C43AAF5F838B7B9BE748FF671521BDF0ECF3D749EB85487F9C315239778' : true,
- '15B9E4608BAA33EC75178F1C5313DE17FF7AE3BAF6135558BF2C7798F8AE3484' : true,
- '15F46CDF488A5BAD54DBA0F2E2F825F956F8ECF9E3AF294551E88F62A8A0CECD' : true,
- '15F5D5A051BD14E9D3D3BD0D612CCF5BC72317FFF1542EC8E63D6E1C94ACD9F1' : true,
+ '15ECBA98523C315922CFC13469827BC118123E02D1ADF24C3BF8305769869181' : true,
'161AAA4D4A25BB68199DBE8BDDA1E8FBC52E9C7B299EC5BFAA7B36040B3916E5' : true,
'163227E6A01ADF06502730FF25F39D8F52B79F9AE61D5AA2876980A21985A211' : true,
- '16D92149542F072ECCA162DFCFCE6C1A341731E19421B72D7C3E38491F05A405' : true,
+ '1632D9CADAB9444AAC7BBF6389BA59C12CD866725786D9284BF9B205E2586A28' : true,
+ '1713C91C21F442044156AAD0A65E96A4C0020B2F765492A1431C6ABC3AF67D96' : true,
'1715E347E92C85ADCEFCA2ED0C4B56DF7D7A3FA9C834B1F2DFA7CE115DC8DBC4' : true,
'171F671393FB5CF2856957CB6925964B3C328E79EAF083DB15DE3D52233D6268' : true,
- '17B9182508E5AE8041591335CCFFBE79FBFBA47115A1A59AD36BF063CFD14578' : true,
- '17BE5D468B1EA071C36079A4843B8A1E69B9FCAFFA0565FB54B10A02D78B7FA8' : true,
- '17D0A909CE750C728FBD0F33589A3EBFDA452D00C757A18557DB4697289287B6' : true,
- '17E110287D04C595DAE0C73090051A1F30F165A37429CD78C1F8FC1754549D41' : true,
+ '1765ACDC57A9EEDE87E6573443C7EBC42B17E012FE153D6D7158402D5CF9365C' : true,
'18040AD71E7C0B9F8C0F275156BFF4FC6713FADA1F2AA5EF8BAD0552D02E7A50' : true,
'183AE55CFEE1CAC5CCBC1C58D813DED429DF750E023362FB8BEDCB27A9F94559' : true,
- '186DC5DF9C693C311857A94BF9B2810BDD02F22DAD527D2BFBC0CDF24BCE26FD' : true,
'1882C2D8D817DD1078933D244E379CFC5BA8EAAE302BCF9FA22636B08FAC86CE' : true,
- '188F5D081FD0D98429D1747FFBFEAB39733EA7C2B61C8BF6B0ED62F71264C619' : true,
+ '18C1218D9ED6A609650AADB754644377914C34E7C35F305D12861D7C28BDBB80' : true,
'18D46E40DC2A1F815A02742F6AAB8CCCB80BABB108B349D2E875762F7D80B2CC' : true,
- '190B2ABE8CC5E7AD7B23168CEEE6400FF4F958B819A4737E702DAC17EF9926B7' : true,
- '191D0F10183654FAB8994558C5E16A365E15D49664AC41096E382B7C4BB42E3B' : true,
+ '191C5D575B18497FD90C8012DB912781FC016D2432EEF0F6A05493DE168FAB06' : true,
'197B67187392F9D4653EC70C8BB277DD7DA843E62BA1A47B0BD95B89CB2C1735' : true,
+ '1985D79429E03A4B25EF4195F04D0D6E770B36E8AB4369232CF3A1C1E40886D3' : true,
'198719FE25A84786A0C2BD4053E93940AF864498D6071994E09A5335B675A73D' : true,
- '199F08C6B670F595ADCC421E1064DCE3002390FED3D7718F943FCD055B15F67B' : true,
- '19C76F18839C90F94AB9E4CD3ABC4C15E0A8DA9B8705E7DD872962CF8409DAF2' : true,
- '1A483DB77B1FD7D997B7044556C59DD6893641CC7F92178D5346394C2E522ACC' : true,
+ '1A30713C34D901235DF30605AFB82AF55EE4D3940B86E60B50692145013AFBB5' : true,
+ '1A91FBAFA70E4E0111480331EF09CBA83A6B53548CBE12A375C8D6C1C5BFEFAF' : true,
+ '1A978CC61B3F7B936329198B939B5C27BD6B22EDA5BDE31FA7FCD35E6D61D265' : true,
'1AA2692979DFDFEFD4854EC9EAB4CC323BE159529C3E85799E2C3C51350FB9C2' : true,
- '1AA7EB7CB182FF1BA09FCDFD088DE1F25F8551DAE53CE2C16D4D72D1B6091CA5' : true,
- '1BC63D730CB1B4D91BF9DF306C19A65E269F5A6391DEE87BAC83EA9E17EC2541' : true,
+ '1AC37940540C25A5A2E2CC1DFF939F3FAE61C194894FD82F5861AC98E1D1ACE6' : true,
+ '1B53976D26A5F691CEFCF098279AAEADDE2651B698FC3F7088F5C2A5B9CB2C5A' : true,
'1BCC11E5459BEF3D48BCCFB10F57B0D640EC74C4BFAA3F0AA221B777170A5B6D' : true,
'1BDD0D8B130AB4FE89DB814276912F04405F2D202CE9DA8B89C4420740517437' : true,
- '1C1BD271327C7721AFDE3C5BE6FA98B132F2EE1911BDF05F0649121349A4537F' : true,
- '1C1DAB84FAA0FC35AAA8A54760840F8A48EB449B338D7CF3902397514F4D1CD7' : true,
- '1C48CC09D1FAB0DE07FD75F4E6A593198E203459C9CEFD032C176FB375226581' : true,
- '1DBE25BFF69909675A216CFE8BEF70A2AA6B08FC904CA740723ABE0A4FD0526A' : true,
- '1DEE63BB5B3EB5107228A50C927294DA4437002705D88D453CDFC2434F2E4FF2' : true,
+ '1D2A6A876B8C8A835206E337529E6C222E272D4AB79E2224E23A5B6414039D50' : true,
+ '1DA6DEBFCC0A4BADEB9672E523C95F42B2D16B168759F75FD03EFBD2CD482032' : true,
'1E07BA293C78E14CDFC629A797E8046A33F21981334BF6BFF9B4DD2D3C148CF4' : true,
'1E51AC35C0CF103BB39F51DBC7096C53D1F3A255DC15A473B5882CC03C266198' : true,
'1E5D810BCB8DA3AF393761C59CC88D22669ECB7D4F926760BE1EC6CD83E60765' : true,
- '1EE5601FE167680B9524F304BBCC711532AE4D81C0D9B2C9C9A0D45B87BCD5E9' : true,
- '1F1A125828C6F4A21A9D035C28E5493FACE0F4D7DE6B6F2DD5B9FD5D426B6FC7' : true,
- '1F33C56DBB422BB63D87AA52A9520103450E8F9F4C8EA024680E9ECF88AD80F6' : true,
- '1F3C2A7060F08521E70C9B4ABB1FA63A1AF7E7EFB70C0D55F2F1DC91C4E616ED' : true,
+ '1E8C696AD3E59F4835D10EF107B17427100E754EBE864B6FBC1501B8F1D00EAF' : true,
'1F4C963A9BA39CE44E46F135EFEAD5B30D6A0A3A43545E18CBE59DE452A6468B' : true,
'1F767AC5DDB239598F925936C242E61B280BBBD6D87C453E3131419530BC47C7' : true,
- '1FC6F98D426E37BF34C1C1D8E5BAE5051A7B4DEF096E71560B58DAC55F5C088D' : true,
- '207E4A92518603590545CF3D7487337554D2FE6998DD8D5E852861A1967F2270' : true,
+ '2088FE71BC64663BEA0FB04CF93E3053228D41914681A3F17DA61CA996D453AF' : true,
+ '20C2806DEA7B729E29F7B7BB8B2653B8D71805605AD46394473D1B1F81103664' : true,
'20C6290C0D7F1DC37BE540410CE80976FDC523C201D3BAF204454EF851F721E9' : true,
'20E0911E2A528C3DC143646F9369D844E82CDA53C48549125DD690ED1047D8FF' : true,
- '215C6D97B01A9EA11CDCB7D4D62EF74D31231F99CA59F3D21104097AD5D52868' : true,
+ '20F5CF34D9A134A8920507B12EB84CB24C2F09152FE9B78FDADF57D892BE79E1' : true,
+ '2128E4E9D372E50A94E43591AAA7C8B6BCDD8BF303C0B22F923B1DCD596E79B6' : true,
+ '2156D89DFDE0B0676EBDE6CC82DF46DA81467DF96F9B8DC4A8B62F71DDA5DF95' : true,
+ '21B2E2C095E47F4762069BA39AAD86802201AC4ED5B6DDBC20D1C7863AE511ED' : true,
'21CA97793B165187383669364CEFC96F19BAF3F8987F7260CC46F3852721BA5C' : true,
'21D70F62B14A3B2175742DB9F3C49999B67C15D0FF8ACA95B0C6A5393E043FA1' : true,
- '21EBEEF31F1537A1E363291B3C6ABD46ABD6B685186DADF06F7226AD41F505DC' : true,
'223264A2EEB01CD24524FB9273B38688A0AA8E3A2E7D63ECB76012B060039760' : true,
'2234133DD7FCAE5D199EB31E1ED8A798554B29A355A895066FA6AE445386D9ED' : true,
- '225A337691DCA9506B306490BC3C027C526DC35AB7EFCCABD0E7BF5C72136195' : true,
- '22652C87A6A8021BFBB338FBA775A92CDFC44A2EFE14656D33A8611546348C53' : true,
+ '225C19F21F4CC5241C15ACC6007060605DDF10817681F676CB8BD1B72014D52E' : true,
'22CF6DCF97C92976F0572F0CD070A25697535E1980F08447D581FF18C6E74926' : true,
'22E6BB3D9964F458D462BAF404323775B20EEF02F174CDBB442D4381DB98C61D' : true,
'23980A7B935B10CA69315CDA05E61B4ABAE7876724C0E0C3CC7BE9748E41ACCC' : true,
'240968FE922EFB9937AF8923AA4F0478D7F679937B9FA9BC1A2B1DF18994B9F8' : true,
+ '24DFBC07031235121BEBA97AB5A061AAFCD8AAEB2145820A78EB0980E5111E02' : true,
+ '2518D06777FE96E9D7D1B0D531149A5862177805443AC9D271BBCFEC660ACFC2' : true,
+ '257335B1AD2B1D562552738ECA1C534A6331FD83B95C91A1EB3B6C2A44650BA9' : true,
+ '261DD192486C36B9BF5DC0C4140F670FDD2BC62EA80C64123D827B5F32E0190B' : true,
'262F8BE06605B4EE9D9545E404D32C2A965AC580A2A3179A8F5481F7D4BA9594' : true,
'2635178113FBBCC75EABC09C497D411C994AD0170CF9DF999A4FF5C16872CDBB' : true,
- '26653BF78692215F24D38348EA977BD424AF1F89657D401156D01DCF7452E00F' : true,
'2677470F2FBD067904B7014B88988BB94F72403C014240B9843AE5A5FA21661D' : true,
- '267DD1AB56384435FA964A24DB81A7AA8E254EF512CFAB3DDC84348BB116A0EA' : true,
- '26B163AB60042EB690FF4549F6086019E19A99A3B69332AD1FE85D9C46491AA9' : true,
+ '26D106DF3FE6E9C99924142C9DA27551E012C72C71FDE6EDD3CF4B5C87D59A26' : true,
'26DCD94546C9207041868BA0293A40EF5DB353794EF0072BA3C63A76279B0C41' : true,
'2741D5D511257BAB37E2DD48559D3FE3998CB3A5BA4FC1EA9C8656D5694D7BFD' : true,
+ '274C93C8441ED469C7B7E01B5A4DB6D9923C3947C87CA4B71D09F34D13F37D47' : true,
'27560906A3548AB767BA0992FD2F93575AD11AB83AED3354B6267C3F3228C858' : true,
+ '278480669CEE2AB798934F06B963B68D25C0A276CA3EC4E523D2299CE01C4A4F' : true,
+ '27893DE92514608F647A44E85314B90F983BD7E6BCD6CE9BE428FA52EEE34DD9' : true,
+ '27B5CA8FBD760D881A9769019B0EC43CDADA9AAC3900861E1E14EE9348736FB9' : true,
'28445F7C648AB6025EB469E9C5FD10C6C8D0D21B6A20F078854EFF406C55D3F7' : true,
- '287AC69E23A84ED6C79668FD778A1C5F89D93D9E85B1F84110731B3EF007852D' : true,
- '288B79B657E95C6E9FF6FF795A3E36528FDD26538925F67411B0F1F715DC9905' : true,
+ '2855C813E2F7369732C35656DD791928668591AC6AB3F9C73061B80AA7713920' : true,
+ '286C62823B119606F33D5761CF39C86D4DFBC1531AC399969455CA227344D5C7' : true,
'28B49BD8083286E1E01C3B94D6358697FE6827CCE71D7C1D0892941B49D83416' : true,
+ '28C725A83ABDD4F961356B2B5583C1F165094C5BC820CF15A4FE18086272107E' : true,
+ '290DE5FFD5BBBE1A557D3DABD01F3CF8FA5FDCFED4A919F4B73CF80B6CA2E4DF' : true,
'2984CAEFE874032F0DF9F67888C0A304D8C7CDA1B4B8F915DDE42F125DF506F9' : true,
- '2A2EE56590084C2B144125731B45BDF927C357840E997888F52EF90AD6361EA5' : true,
+ '2AC8168217387601B753D08652B1FE2CD14E8A7C9A7DE7DF74A8300C976FBED2' : true,
+ '2ADD4406064A5EBBD98A9D53051A0FB086A5D032655C12F503EA73C8179C783D' : true,
'2AE917E3AB4B867883088BCFFED53EBEF9F87988C77AE47FE325547B181931A1' : true,
- '2AFAA2788C76082BD78EAB5893894251D5FAF3A78E26454E05E5FAA3E1F5E44E' : true,
'2B1B6843B33770E84785D0FACA5AA6EAB6C480AFA07E95F7A282534BEB69B065' : true,
- '2B5FC256FE24DB51001FBB200C80DEDE29EF2CCA290DEDA0EA7FA5627A8400E6' : true,
- '2BD63DF77D2EF0ADCEB1A36A65941FE9FB802959F423BEB4FC829CEF5FC928BF' : true,
'2BDDDA7C2F05123A014AFE1044AE6AD3B1AA14F0BEAE4FDE812BE52DA271F992' : true,
'2BE2AA18E281BB38BF0DCA7EED30F74DEC4A8BC8E3525D0632C4A9B4B426E0C2' : true,
'2BE6A67777765CE8EB868416D68CA6AEA8C57D31523F4A683957DF560C152066' : true,
'2C43EC0374BC603A1B191B88ADBCD5C1A0409120427995C2684A1590C7AB1432' : true,
- '2C5ACA49CB7C606024256B1ACB50BC2E8E8E56197C9EF3718F260C80AE04474B' : true,
- '2CAB7D39A5E100DC4ACC8BC79C9586070D2D90869FF7D1AFAB07190DF1D32396' : true,
- '2CCB874E1BD50AF21D2089BAEE5BC132313CF923CE4E1FEAC9F415F081DDBA9D' : true,
+ '2CAB9683916ADE98D778D3394221D8D07E07353E546771D507232A26FA577902' : true,
+ '2CB02C933CD41CDB146CA0256A99AE53D9320BAFBDDE82EB24891AF68BC6E19B' : true,
'2CD5E37B2C388FECDF839EE16998A0F0850B5A6BB39AA5A507AE676622001CB0' : true,
- '2D38A4BF9E954FEB8523DFA38687C5B1D58C9A55460A81A901C335FF18A4C46E' : true,
+ '2CDCECA60D7F0E4700411340E6CBFE1B3C8FAFA9081E219462D25A14B61F9AB5' : true,
+ '2D43ADE4441A40542869E06644741AE2392F1EC071E8D3E7732A322B8F051E98' : true,
'2D4F0B81017D31BEFD5BA82CA91D5FBB95F3F8459E5ABF88360E9A3E1F1BB961' : true,
'2D70DF21B5BE58F8A0664104F849ACB9741B90A871C2A0DBEA79CF012E3A0E53' : true,
'2DBAF94C053FCCFA1EC09CBB22F54DAFF2DB4ABE1B3C61CFF1BEBC31260F4821' : true,
'2DE3B602EC7847028D2EA59A8E241EDE63CEFAE7456802CAFFFAA8433CE9D885' : true,
'2DEC053F97460AAAFB67EAB8C769B34049E9D44286F199A8D776D2FBC4A8A41C' : true,
'2E40BCD87CC3A1033F406FD9FB81C5F405BDFC21283B22CE396562EC17CDDF02' : true,
- '2EC79F72C42EDCA1EA66762F7E82C40E5BE64921174246EBD15A50751EE519BE' : true,
+ '2E936472C0CBE755C72128EECCF5BB8AE91AF188CB2F3277B205E27904A9EF20' : true,
+ '2E9AA94F913F869B027272668BCA46D5076503EB9550737482C337950749E946' : true,
'2F3A46F3C2FC1EBB5FB46B3135B7B4ED88CB515C2DB9A508716102340AC3583B' : true,
+ '2F56C46CCFDB3A3F0192313C4801F02FFB1738F328CCF0F33F44C0731D340DD5' : true,
+ '2FB44A33A5795F520D20CB4ABC4AE4E239FC193CC2E3D3A85056685ABDA9E0A5' : true,
+ '2FEC6D75CCD95ADD4DB327257B4E73A880CC462E1760267970030576C46E0077' : true,
'300B5DFEFE98F5280E47725FE63D7A0967CA022E4CF3531023A3969867677C6E' : true,
- '300FB5958709D66008AA79105EEE977821360B2C2DCF25BF8CDEE78A311B1DBC' : true,
'30354519FFD4794257A7EBEDB0D47DEC9A547B4E7213199000F41EB65C233EF7' : true,
'305B4CDDF744AA543DA713E7E60C19ED5537D49ED2252330B46B7E664C4E588C' : true,
'305D58D32D2FBAA00A386E3BCCE2202522B78C6B10E3D83C6A7402706ADEB4F6' : true,
+ '30664111831B947406CEAFC2E660230B307F401DD060852E0E5281C95D9F526E' : true,
+ '307483FC4C0D7608C2B6FC2DD068EDB1D686085586C4CA4284791294FC664D6F' : true,
'308F0B0CF08358D501CB807667A31FEE7FDBF7539E1AE74945DD9245AB9F2CF6' : true,
- '309DBF5FE6C52E6C7143E63BA07B9FE59D4ED38944409ECBECBDD74ACDE4E78E' : true,
- '31F411310C7FCAAF8CC265F557CF93BF32E5E277589E932442A3A840E141809D' : true,
+ '311F6B428C4994F2677A56588DA04B704926D737669A76B1B3C8504EECCE4A61' : true,
+ '31E5A342FC80BFBF1A1B4A76DF46481E5308BFBBC987D8A6DCF99057C1679E8C' : true,
'31FE71304CC1591B0BBB208F10D39DB59FDF869D117BEC955E9A6430764312CF' : true,
'3264E084FB98F560090992151EFBCB41AA84EAE0C3D8378127A974DF81473E9E' : true,
'326F94C0B20B06F11A54904E31BCAB0C1A4DEC790BA2D1947E0E11F9B7210F58' : true,
'32707DD6FF2DAE577C4097176D936DE4E46E5CF428B0831D12574128BBFF6309' : true,
'32D398E73D053561EC78257EB01F0945C2A38D9F80674F6F2B4B10BA35A2B4E4' : true,
+ '32ED76AE2E09C58605B9C2BF6A27080DB8C7EEB70889BCCCEA72104C7F33F95D' : true,
'32FA61C84B195BCADA9A65448CD3C8CA66B1DFE252CF97D46567ACEB59BD2D83' : true,
- '330457913F88C2037F663003C36F0B6B2B3071AD972C9A4DA54998A7CEB8B148' : true,
'33512B5F197ED2B530575C71046268C4E2F5724B645B8DF1C689EC535C0FC791' : true,
'3361788E20F935BE971D4A9B9F49BCF9951C7B30E8E1B00E18130777401E634D' : true,
'3379517964657D6F875971C1ED6218D9F890BEFC7390CA654C79A666D1989A18' : true,
'33AA071D0BA51A7A7A2288437B87BD01B12CF0C62CA5D0ADE23344C14B729728' : true,
- '3452E74D804061BEF927823AD873366E4B442682B8515F53377FB282BC850F97' : true,
+ '33C6F4BD1B6130814292B0D5334D6CEC9402FCB833F296664A7F519AC1DAACFD' : true,
+ '34535CB0A54193C144158D23C5A7F6F0F448FDD8EB9C21542A1203BB66BB8144' : true,
'34A2782BFE23B39D6C7FCE48ECD1675A8141BB9553898A1FF38EFCF14F7D3AED' : true,
'34B1CD29AECA7639010C4082C4609B8EC6EFC5DF272CC90D2650D01ADEEA8A53' : true,
- '34CADA62CE9D32857D65E868355E258447C0111D3F78CDCF4360F5B7B9F7E3E4' : true,
- '34F904FEE6E8CF59E4FFE90F627D688210910D0176C9B5ACF7DAE8CABA722B63' : true,
+ '350123506BA002EA62350E82CFEC1DA7BF24B405C4160EF1BF4C445F7DC31757' : true,
+ '35191A1755929B2A4039B3DA0C9FD6BAE4DDA312ED858BA6AA6444A34A4287CB' : true,
'3551069D5774095145A9731885485CE10FBF3FB46144F33A4E48C03CF2E475E0' : true,
- '357E325CD50420D15B1E6779D32E62FB6029A9710017B14CC23AD41DE08A400B' : true,
+ '3572DCF086FCEFED230B4D1B47E73DF410A5C775BA3BC9DC2681204F2E980BC4' : true,
'359BA4063DD43F04725A67F7E425EC48A593838AC97328374F83A31FFBB1EBF7' : true,
- '35A88292416784CF9D883274B422DDA092B8692CB98FCC788C9B926987854291' : true,
'35D053D2BE3EF7503F4AA7A66006C38C0C6E9944A8A89EC5871103F4B83B312C' : true,
'36267B2A60E0B5997DEEE17CDBE6AC7F7D54D279C6AB4F06CD469919F442E6AE' : true,
'366B123FA1EA2FF7FDBCA0422E504C8E0AB62334AC8941D307060F5ACDFB58AA' : true,
- '3703F3C29C0262EE9C5DE6BB9B3D74BCACB72573C58D083F346786959F67394A' : true,
+ '376690DCA49A37377D699141D59A549953B2A0B730729BC6FF8BFDA67433F763' : true,
+ '37F9EA077605A59865D6CE500A20AAFB318666DD42AE9B17FD10DF4C4DF4D157' : true,
'381FB3EE49812423C2F3CA943350617377D0E36E0D7FAE21159F648DA79FD32F' : true,
- '382AEDB4B5CCFA96B6BDE49E02FC89A29E02B7AEEE5D434064E73AD752FAE6DC' : true,
- '382EC7DEA830623CFA6D3BE11645A126073F0A4A193FD455114C246EAE52CAE7' : true,
'383BD359B34DEAADBEF73CF41B93362BB3C59688EFCE1E8403C50C5783F1C50E' : true,
- '388AF939697463B651AFF01141B625DC877D0FB31CBC5E234A5526BAAB68E660' : true,
'38BDD8D544DD1094861968FB021D7E27BC2A9D0031AA914F3398C377A4B5F9EB' : true,
'38D12483160C6E3AC330EDC1DE173382B4C2AD79A298155181CCBC9A10CF6495' : true,
- '38F2EAE9873052B1A507545D620BF0664E7A55E4EF1F17562907B84E2693CD62' : true,
- '390C46E87E0CD4A1AB12E74BB011F1061642A75A2AA04D051FE40F9A70A2B87E' : true,
'392944F5A1C82284C698C6BB512CB5ABA48445376D54BDDF0A53C66B832D1BB2' : true,
- '3950FDF1995CB88FB935F6B397164A997E876D6F3BC342D95419A084BFD7C346' : true,
+ '3955C196410B13A2BE4CE66E7CA1238F139DB5F00E2DF2997CD83903BA064B4F' : true,
+ '3958BB2CE60148D4CDAE6266E4E04A6356E00B693621A4E9E05FC78C9709EF33' : true,
'39863EF0FA91E0729FB834D4F99A376FE60A015301FBDC91EF818346489EA0E3' : true,
- '39A8C9AF8A88D75C56F12B2930B8FC1EE94E3674AE1D3C4FF0768C0DB065371E' : true,
'39FB813A6BE631C5802EA9C96CAEA7E21CBD7B831FECDA5F2A1FABA42B8F56E4' : true,
- '3A401DA35FD7E8F7EADCB64C7A9DA7BD2A31093439E988A110913152552ACEC6' : true,
+ '3A260A20CB6DC9BCEE25A21284C2304A9744F494B37359F5F0AFB46A1D0DABA6' : true,
+ '3A2AC86801E185B3B8A189C42AF1574721D452DA425CEDEC6FA0CCD44894BBF2' : true,
'3ACDE8B9E6B1100535007AC7316F4587DEA84EE0DF1B344DECEFFA952AEEDF96' : true,
'3B00662EE3F01FFE2C40842F0F3B76C039ABB785962E371767E89E2AFA311A74' : true,
- '3B1FDB5890A3C11F7149C13019F3EE43D3D3A8C174E485512E946EDCBBFFFE55' : true,
+ '3B209B5718F54F113C557AB8D670B1501B05A16B92E6E16BC97D026087B90C3E' : true,
+ '3BCC83CA8C459D028B1328C4431B939874F5D9DA09CF37A15A1A388498FF9B24' : true,
'3C49B9DC9307C6B33E0DBE135836504ACB9F6204B7172A412C28E797E56CA02A' : true,
- '3C91A39CC52452FB91463E511257D3BFCDCA3A149EBF39978F39E55F20FB061E' : true,
- '3D23CE270E11F9285011BC0B05328AA748D35E715809249DC5CE78335A7E6C16' : true,
+ '3C8B081D1FAE4B17E87EF63292AC0F5F754685EB3EB441213BD2170B068DEB54' : true,
+ '3C9AD3DFF4DB327C01C03D00389A76E5E699D4C4707E23221DA6C61F949AD532' : true,
+ '3D1C44AA234496D76A6BAC3434418253903B3C5019FF91F78348AC7C14E39CB6' : true,
+ '3D666AC8FDB8483D6006C9E22E5E9539E27B322D5BCD0AF264DC8878F9476DB0' : true,
'3D76435F7EA7583AD6F474333B7F8AC6368ACB53FAF4AFF9E8644765025ED427' : true,
'3D7A71BB494A12E1F21A1EB9033CBEFCD1FE81F358B131016DAF92C1C06F1A38' : true,
- '3D81B541D1B04B15AFEF518152CF8DDDB9300EE0A1BADC916FB366FA034120ED' : true,
- '3D8C933F29252F42348DBD765CA832F0B21F8BC213BB2C8788BB9DF4D5F8763F' : true,
+ '3DB253A22F1FBD071CBAB9E97294CD6534BC74430123B82198F7A29ECF800D64' : true,
'3E08AEB4D01EEE9C19968EDE2D5FEE0E974E6B7FD65769E767C28CCDADD85D46' : true,
'3E09F448ED5A72584FA305F82A25706D2AE756083530B4E18665DA2AE46C1410' : true,
'3E5558CB92AEDC7E01DB0FBCD0825CC0F51AA7B683ABFD01D1E5E04C8A4D716B' : true,
- '3E56D39D954400448957BA0CF98453B89496768EEAE1C3A06F9F8B0C15E7C245' : true,
'3E7D7F2DC25AB2F5F045601ECBD75B498A48731555E8027075BAC9768E34CA72' : true,
- '3EA82DE5DF72699D567B865AACE54C72AFF800647415E5E49D4260F422C26DA7' : true,
+ '3E97B3E789A4BCF4776B5BD6E37B070DE9A1D4D5B27F1FD0E4DC9C6A65D637DC' : true,
+ '3EE396E9C7E97016AFACE8285C152EC6781728AFFD747291AAA596D573C6ED5E' : true,
'3EFF635571ED85551721F01985D1B2C62613C2B7DE25C8DAF17A8767ECFCC39F' : true,
'3F1F9323436BD390A2355115CC333592B4B5AE3F3BA2755D342CD863371EAB1E' : true,
+ '3F933B11C350C08B98993CBD045F11249CB355ADAA8FC405B9B3AAB0CBC72F7C' : true,
'3FA41F7E559B84FA6918FAD6709B5026B05A1C1AC589049A4D5F05F3A6B7D65B' : true,
- '3FC19CF3EE31A2736CCC9BF540370770D2D3B53001174EAF15FBAD517F50E26E' : true,
'3FC8022D0C28EBFD45DC1D07E14F9E83F0CAD2E7ECEDBFDB991E01EBF2400F54' : true,
'3FC92874F07DB0DEE11CCB2CA7BDF187641DC78ECE4C76E71B2253FBBC17E3FE' : true,
'3FCBCC65096D7D731244167CCEAA21757E56D6EFC05A632AB3E062643E5B380F' : true,
- '3FDF94BFD32F2606341A1CAEBB18D51A6BDFA2C50C1666932A7F227B0D8146A8' : true,
- '402FA5AD0E7932A07356FB849DCC1AEF11649D516ED1C5617C48F3E7F9B02356' : true,
- '40CEE22A7CCD122F1765E49B3A0C55FA58AC412E5F77FB0A0E8A8A46A032BAD5' : true,
- '4172E67457FABC7859D68A40AA6F5E2CEF7F55E6088942537AE7615E1DDD994F' : true,
+ '4007AA6804EBD54CF48E514FC8BE08DE5BBBE5E6536D678DAC71DE0C05D05B07' : true,
+ '41748175B1E9E26507156E326B06719603CCC2E54D9D1FAE0F6881012101F692' : true,
'4181BB2178C564FEA4F0F5C87337921A1DB4C1CB1264B1E2168FFAF334C7DA55' : true,
- '418F96651071C2398996740693435921398FA3E6F65D033D0353124ACA424AF6' : true,
- '422E906DC5CFDA0E2B9711F05E3A36299B9298E7D23392C3ECB11C4173F9DCEF' : true,
- '4248F09AC0B07BCF41B413A2D8FF50AC42C6943D6F6D20F9C37502FDD2315171' : true,
+ '41A4B72E197905E02DA1199B4B9D2B20CA9B1502151A14FE19D8470FCDF60E0C' : true,
+ '41CD7602C418FD0831F1F207DD50A19A0A03679113F8508F43DE863AFD32FF45' : true,
'4290EB1B22721BD2C297723FA6ACA6B3059F1E75C930FDC7075F14B3C5EB13E3' : true,
- '429DA945C771332087229D2822684175DC050F832EB9F0ED90F868E99B6FBFC1' : true,
- '42C554EFB826C7637F01F8D14F1A841EC02070B48CBFE04426DA81CDED412760' : true,
- '42D6DFA920BABBF7876416C3F5B30598040F6A748F22E3C3E0E2D32DEF098AD1' : true,
- '4321F690235447D71149C54E13896C885D07524C80CBA133428E1BD235123234' : true,
+ '42A2B7BAFC9E81A94112C062E15EC8017861988A458D8C52A686702633559BEF' : true,
+ '42D891E625A2FE563C10EC705A036928A9EED088915D480F5DDEDBC4BB35A557' : true,
'43555C20820B179886354E63251A21247292B3B7BA46D8BEE860A0313258136A' : true,
- '435789D1578F987DB529778D2DE90D5B5E5CE2FF40D72DA03CC317ECC6E0ACE6' : true,
- '435BF52CF5144F56406321F1DB3D82C64C30E03AD2563BC0C245C0A0C811C3FF' : true,
- '44338B3B7D1302BEC14439BFF723B5AF93DC549A7E1E417112C76C1455108EB3' : true,
- '44645A79385B4DC6FF4D65D9CCFDE06D1C982B4DADED9B04A4348E4F6B2179D1' : true,
+ '43D81A0A5D8DE29F80ED805D9D440EB6DDEAF4AEC57B6F6D4883CBC3DFFA7EBB' : true,
+ '440D00F6A763CEAF241756BFC150BABBB724D3AD48D6739ADEBC84004E24FB7A' : true,
'448771ECDB6FF9B0B1A817E6C23048CAC06987EE2A6FCB6B84A6F0A75D7DAA6E' : true,
'44C748D62020862C698F3A1BE86A0261BEEF4337B6E28B3597F7FA0E4A01E49A' : true,
- '44CE6D5CE40E8F7BE79569A66792B181CA71DF0C80D3CEDA59A151F2E7CD32E3' : true,
- '45A43423F08C25F7C5360B969D51F567B84C3B391582FAE13CC857D3C6DA3439' : true,
- '45ABDEF9115FC1E3F15D6C52F6CA418F1973AB0B5CBBD6EB7DEB897A7A763F16' : true,
+ '450608B6DCC297A7FC00DACC4455E165091B8A4B56873B61C4ACD495A32AA2B7' : true,
+ '452F8C17E67135B1FF58F58BC411FA165E80838C8705B1F6BAF1C90F287BBDC9' : true,
'45CEF64AA866F2A2A72E13722374190F8EEDFE984F022C3B23B492A073741EBD' : true,
- '45CFA75EF370F3B3C2271E4AA0F99106B3339B6FEFDA5B335CC863F0C6F66323' : true,
'45D1C3C1E96982C752313C9059D4D6291BC0652ED7B266E25F67738E4D74915E' : true,
'45EFC525BACC3D6E5AF98E1BFA4A60582231A423EE2E52D5760C184E66241DA5' : true,
'4603C35A8304F6057C253381D39404E8B40AE0958B4EB2CEAB7777CD85802C0C' : true,
+ '460D4CA817FB242D2263900689B3CBA7261A390B018391C7E1716991BE8ECAA0' : true,
'46236B9468DB40FAF467AFB0C35B517E514251530785695F54440E6730AAE44A' : true,
'464CC49DD9D781670D5B24D203D45F2CD011F63C8775862C2D7FAF4B23C64EEC' : true,
- '4684ADDD995EFEF8E86F034076135F2C57EF5761CB7A75CCB2C8351A6D5A3CED' : true,
- '46CF8D35D0A439E7E4BF019F73EBC9636C9C3DCCDBBB4B707A21BC4B36F3EB22' : true,
- '46E227ADBAC51B0BA4BECAF44EDDEA0BEA10A99CEF3769D69AA3A18A1AD79CEA' : true,
+ '46601DC361A7306BA942625822C757F0702F63A009A5B0FA96CDB92CFDD07FB9' : true,
'46E74AF8240C97D2E91E118761CA4F74371BF7D2266601BAF6084BB1924B62D6' : true,
- '475971EE29368BC1FB6B66D497096A1ABA32C66A30C7D554CB11FE848345B46D' : true,
'478D230215F850914D64BD43327923DEC9E52B4F14EF5E7E9122B16F40B2733D' : true,
- '47E134C83737EE674C6AC46306C325701EFF7B0A4C887B968593CC1F5FCAAF0D' : true,
+ '478E954CA5A715BC4E78DC2730A44ADFBB20D225C3AE4562882E0BFA3B13E374' : true,
'47F4235DE4F1BBD02682F65A8B465D04721124582B6DEAFDAC164A699F56F419' : true,
- '48319F88466236E176C136E90944BEC73B1DA0CE2DE7A83D24BDE9C3099BA470' : true,
'48544D794B99D6942B8C3B2CF051782C2F6CE051860BECDE2736C2CD6A429893' : true,
- '488A95DB3E040945A4F8BB74CFEF33D3D50F516DED4ED75298BD4AF05539A3FE' : true,
'48DF42F374FDCD58EB650256F421F6C1A73F663DCB8DE0972DF9421205509F8C' : true,
'48E8ED415FD8EFB4407D0C67F3A4EBF15286569D29D566DEFA8B7AD8F135A5CD' : true,
'49558145AB82E7F795C2E45402260F1AD1ED43D4DF145CF2577BA1615CD00843' : true,
- '49CB0BC132E548E6D6A5BCC31C2254016BC2A181755B5B13D1D27218404D1C74' : true,
'4A12F9678B1A5B4677054BDA1CB6B41AD8A4F556A184E7E4C33669EDD31EA50D' : true,
'4A80A015BEC13BF13BF90A093212BC7E939DF1F5F535730273342AE942769A2A' : true,
'4A978057E01B2F443BFC218B48E7D00D2542DBA58ABD2609ECE7E152A8F86292' : true,
- '4AA6D55A7F010F452F5C7D1A7CBEBE64D3BDBE16F76AF588272CE6A349A825FE' : true,
- '4AE41D7B98B74E61B0D6EED291348B881E5531B4ECEB9940631835EF6A8CC60F' : true,
'4AF1D354BDAA3AB076BB6A02BAA3E1BAA2503D21ABE54B54001BCF62C0982721' : true,
'4AF86DB451BCBBB3BD8BB3D5982DBF4451CD96394540DE9FE6210E69F7C2F8D3' : true,
+ '4B14ADF4E6015B7F5E4EBBEAE635E5FCA547B1885B9386DFD76A25B8D2A2A63C' : true,
'4B29F275C3803C8B4E50951895FE2A4C94442F4A7D14922D54EADBCAAABF4056' : true,
- '4BF10AC1958BCBEFA06944AC7866E3458EA70E6ED97DBDDF01A84A360C3B71CA' : true,
- '4C1A5506EA02230980E66C1CA936B268A3C453E997733E44074640CF4653594C' : true,
- '4C23EEAB024441FFCFF509DF224073148C8116A6698B60BB6F9C18DB9EF692EF' : true,
+ '4B50DC7F1BFC4867D02B551EBF66F63645DD5BC27681BA715154809449F381E4' : true,
'4C71A0F5907EDCF7950980BCC1B7B6E00141C1FDD4A50D445BB43E1E054B59C5' : true,
'4D112C44F7DBE6E0A55667E639E192515C54B00CE5E964EF696B13AA049BA656' : true,
'4D26A014A4C4007564C743D9BBF9C2DC9A5A881C05E549DFFDAFCD3814F3966C' : true,
- '4DC47950ADC2B7FF5A9A57167E343AFDDB27155DE0D031F25149B622E608B8CB' : true,
+ '4D2E2CCFE3A068F7C89D22E4EA6F738F99D3E62287FC8B9C8787D78A7EA77B30' : true,
+ '4D3CD85A0580A0298BECD2FA69BB246CA91261145CA03370847FEDD2BA707CB1' : true,
+ '4D6CCD149A9BF9FA30CD78345F827ADB4A51553FCCDE1811FA39872E293EFE59' : true,
'4DC761701AB68524A6BACAD94CAF1D8480229B66D8B9B9C0CDA3D3B233A6B785' : true,
- '4DD59EC33898319B54EE610C9A4DA78A87504FB8631FCA5783223F306529FABF' : true,
+ '4E49086BA0B8B96D1C31415D8A1464F19B93CF45B46D04AE4C21672279ECEFFB' : true,
'4E5AD8D52C37A505176F9BA95BAF43CB5FD5A7FC4654DC71178ABEA8188E7ED6' : true,
'4E9754EFADC9B8819640164B1D87C98B3E5D75AC7E64F33F7911ECBF389E0A80' : true,
+ '4EEC544B64210519ACB153834E7AFE21867AA949946FEB78CE5A254D12A0934A' : true,
+ '4EF7A69DC3625A39A416CCF7F607228D8A715D7419781218E4B827B83A504CCF' : true,
'4F8C7657E222E678CED866714BEA093B11538CE155E1FD35D3E5AD1C8AE9877D' : true,
'5020E1D1DCE61987673932CC9B92A411C081C5428EC637F3F0E3F8C0C5507E64' : true,
'505707224B14F1FFF2F5937865DE662C85B0C21D090C59658E24B53CA635EFEA' : true,
- '50C6F0A7DF1F05E81EBD31ED778C2DBD7A048043157E91E43B051B34C5E843CA' : true,
'50CC4D1AE164F66EC09AA6B7D5931074094FA1BB6788AFF3525D7711449CEA81' : true,
- '512EFAAE67E525C0DC3D7AF491ABA9FFA1B7439031207D293622E9286F0BB562' : true,
- '5161A5D3434EE733589AF7C6A3D5485912EF0889BBCCA2360B9A9E5C296E411C' : true,
- '51BE04E25B1247423817A10C72D7911B8A2107B24712690DD8153215F5473961' : true,
+ '513B3B0E023E7013AD1D77E77AFDAC7D99627F8EE3C8FB291064D6D56C3CDFE4' : true,
'51D06F5BD10CCE82EF993587A687822C99C3D8F3DD2F04408E99A5388C07333B' : true,
- '51EE14CDF007AFBCE34D598602831B21661F6FD7B6C04B0D34817757B4D007D7' : true,
'51F5AC607BCB1882F792585357C63B23D08267F717AAC5BE2AF557123EB19446' : true,
+ '52064B1A1610B2374CC7319E51B4ABFAD46FA995B9447DF18ECBFC68382A9ACF' : true,
'520E82B39BF086E3EFF21B582D587329371A881E2ADF8B656DB9DF190CE3E416' : true,
+ '521E9362D22CC047B51F112D1C701D87E6BA49676A4C87CE8B9E6411C2FE425B' : true,
+ '527E1D8CBE4936132EB16202101509A3A0535CEF78476DD9317AE7A31C097327' : true,
+ '528F9666D1C35F9AB6C5E9E6496B0618C6A3F5C37D6808E0601A8F2829A352F5' : true,
'52AFEFBC93919093868483354CF11C747FB38F946CDEFDCFA6E5117FB0F5039B' : true,
'52BA9F37FFE1EE6E200988EE9266A9605C02B707A337993678389DEF865BB06B' : true,
'52C584E4DA8D3FD6FD63E83B2EA0FD6D98DB0413776C26122FF0420A3F0F91A0' : true,
+ '52E62F52537E672C499E0902B25BC800C87BD8C45BAB7B9683811A7D09C4559F' : true,
+ '5320FDFFB41AF7F0E7057535EBCD28F5906D7F9B4F141B475B25E985399F0085' : true,
'533D8997AAFFA435583E114FAF33F105F8CB1B87020DC86F5DA948808EE81AB4' : true,
'5376577409E17E8F37B2CC6FD486FBD356FF2AD0B5EF520DB7CDAD06C6A6F3E0' : true,
- '538735DC5CF27D0DACB0FBC4FC24E0598D8838682CBE3DA8C37CDA60F60BE64C' : true,
+ '539D60FA81E3F2D4A2BC38124BA464D8DE7068292B2F0A7E8A673AE0615749C6' : true,
'53CB6E4A76F1BDA96200BC21FA943685A88C33EC1A4510F4073BF54644475390' : true,
'5401D639B63C7A3075C6C5B61F64AD5246B8E06895EA510AA9D7C1418C3E06F4' : true,
'545FFA9F423F4F13DF4C27ED786170DCE6D681B0AC9278B84CBC979E93A950AF' : true,
- '5465870DA4121F103A79BFE49E8CB35024232CA69966911D026A3F38CFD0351C' : true,
- '5564DA98F461033923A8AD225B989A9F381B8B8A78D4E8F86EBE4BB8B9E9DE70' : true,
+ '550C98DA3C1CCC2DB49A389D57397C73C4304F4A4B65A1EE1A300EBBFAB97478' : true,
'55DB7B0ADB76D9C23CFF1CE64083074EAEFFB1F83642E1AEC2A7FBD365A9E962' : true,
- '55E0EF8E07B79720C78F3E2303981BAC4BE4FB417D858E3531716DEA81BB8D67' : true,
- '563A8D4B7226680E2B73375BE2F1D37684DDD04D77DBBC4A264AE8F3497E69B3' : true,
- '56A1B18D093E49CB8FBEFA9A9CD3D80934821B0E5A1FC8BB3776AB955F928F0E' : true,
+ '5603628307C37436A0A6FD92B580DEDE34FE08652C3E73010745E471230A5B36' : true,
'56A2C00BEDBCD3A014C22A89A1E887CB0F9A2095FED90ECF196F6719EFA35A5E' : true,
- '56B5B8AD95FC9A853F180196FAF9BF2896A8D2E053474ECA3A19295B1D214AD1' : true,
'56B6BEB3100D40CAB0EA4E450188CDDA653F473F3F182578AAB314006E66FA5C' : true,
- '576F261237F5FE2D006DF6BA19A0D33A138B04D89E644E45BBDE209F54F72896' : true,
+ '571DB04B46DBA2B26FD50FCC1F0B0F5C5ECA926E6A33D4354660B653FB62822E' : true,
+ '5747EF64E7C857584498831611D042B568A3FFFBA79F476ED22F4D07E5239266' : true,
'57A0A93A8193B5CC90AEED1D0B92696C9516F2C3A6FAF86F7BB8126B5A691311' : true,
'57A0B57635F2D75EBC9C3B166E68E35E1CF91BD074AA9D5CBCB3359D93F02859' : true,
+ '57B2958E7031793509E2EB58DE05C460E0791C4F78A43244640F7926FA3BD7D6' : true,
'585568A4010D0650BF0F0C2F78402F25FBF6D0B8C82879E5B475708DA6617E35' : true,
- '58C1439E2FF88E70D837218AA52270706EBA8C66B587805DC54AB12215416A05' : true,
- '59BADB118F88966A806CA611A26162ED1AD7A636E8B474A674FB7C5A3BA2417F' : true,
- '59E0DDB8377B568DA0FC1E2B7C482CC6331DA441F85E7F52FA8AE280DA90D051' : true,
- '5A325043DC4574D3A0E9764D5E1F096F46DA711D59AD72BC3F87EB60BC85EE94' : true,
- '5A81B4494FE18196136F162E2D4D3C0A72B00F85D8E1B0E778660F217573DA72' : true,
+ '58A7C6AD9A4C3247AE54306E47A631548065C989E435B13958BD5F552641E818' : true,
+ '58B590F006C3B293A57D41FF491EDACB580EBBF8AB20A91D6F8F0ACC3D3C19EC' : true,
+ '590F7D88D52E1E705632486F4CB869B519331ABADB9B139951F8705F33E42C55' : true,
+ '59148BECF90A7738D4915EE2C70C38F7789A26131E0FDC0240A76CA7153EAC00' : true,
+ '59A233455E2FEABA60B77DBCF09F6BF284C4A72856EE9107D2C574E77C56BFFE' : true,
'5AA7341552FF047164227AEFB41437582F7116D76B854F54920A5D6A9B72271C' : true,
- '5B11479053C46A16C629C58DD5EB40529814B75A6BBDCD6BD6FC6BA9483D9669' : true,
- '5B1D47E25C53FAFDB2894D342FB536794A99B4D0F4C0BB994DAC22CF9247F166' : true,
- '5BA30FAFABA5B9E0896E9714E100ACBC93004F620F42DDBFEC9B9542D83277AE' : true,
'5BFE64EC4BAB95BBE3715E40574B76B99234097973E9C1862702C918DC6AAF29' : true,
'5C34509E57E6B30A28891841EFB2A5F0D051493059DD80157C19B2822A97EAF4' : true,
- '5C50542B388A692F15D1F6E6175502248771CC3CD25F110326139B958C0A294A' : true,
+ '5C3F4C823A953A561E8D0787CE7AD8FAC7434EF57CDEFA4520C18A5667C82003' : true,
+ '5C568C32C672A2B3F7242D5CEAA2718B08CED5BDA028B84224D605079DBD0DD7' : true,
'5CA279B9F09F877E7BC143481BCD463F2C04F39CEC9B8A4334DA493F429B66E3' : true,
+ '5CCA5A4308740A6480296C690D8425A42D9D451269A542D00BE3335CB5C27EE4' : true,
'5CDDF1DF7B5333F1B4C0FAA66297AD72ACA5258C5E9FDE4B9ACD9EAE832C7A02' : true,
- '5CE0E2F94DE7BFC370B5C429E1CE1A0635E4F38D55BAF122748D4307F1709DE9' : true,
- '5D0297464953011939E3FC2252CF2DCB85C2F56F3E77653A0B75DFDC741E5022' : true,
'5D088B418362280202FAACA75A39EC178CDD47900AD52E9849F99F37E0E945AD' : true,
- '5D768144170A0B32853C5F0CB3DBDC86964D1D14D9A633719326C37BB98A3135' : true,
+ '5D133D3BC732EFC05E4C91931F8ACEC74F9BE1FFEC30F8C5E38616D2AF7BB20D' : true,
'5D8DBE824180E72B5972E68A8373AC984757EAD57281A973B44B18C36DF6724B' : true,
- '5DE269EBD6CEFC520158D0C350BCA48E542E5AC895D33315556A66DC914A2984' : true,
+ '5E03C9E7A51C7F8539BB4B25ABC9ED0CDB47B48D6A07B0C051D38939AAF91782' : true,
'5EA032BC171418766EB1B1F71A7868FAB9DA3C484A487BB1FE062566DF166002' : true,
- '5EE3DB9DF04A9AC562CC18B3690919DFCFAA0D4D4794702BCF3DC1EA5F73D5A9' : true,
+ '5EC202C52C6D9B266FD1A67D8A2D27FA39218E641E646119E4732787A70EF758' : true,
'5F05ACF54EAA38008B650AAA2DBB3722805C793616B1A21B43E1879107254E38' : true,
- '5F6795C104B707429A3E966D32F847FF1B18497C73A45F6EA5E47378EF1D3823' : true,
+ '5F0BC67CB7C74339B5D8389E90F5223CF35EBEE6315C083EA50063C379361473' : true,
+ '5F71744E0B28E62ABB0626131E0877737B5084AA6E648D268DD7D0D26B115EA2' : true,
+ '5FA0764CF295AD3743724E7419F3EB085D29E80E77731A2F7BE68DD3F2C559F3' : true,
+ '5FB6ECAF5FD5CA42241B12521D7BB6F06B7D804C60C84D7BBA7B7A7543FE754E' : true,
'5FEA0DFD20247FA12D63859439FF9F4D5D0207D6E1134820CAA9CFE4A1B08FEF' : true,
- '6085325DD4C19C14024B66E50D6FB600D161AE12B569A70B9C1EFFECBE9C2A3D' : true,
- '60E199F5803F1547C813448621B7F4AE22AEFBC5AADA0DE56901B1B02A8EF8F4' : true,
+ '60B7C0E860123DF4BD6CD8EAC6560CAE6E9CE12DEA9B119B2FB90C57DB328EDE' : true,
'60E9F3B150DCF1BD90562DEDD083FD783E2CA9A982C08BCA2C455F50BF977B98' : true,
+ '60F715D7E6C8AD03E0A080602682966661E1F4614BD4B926E03BADE8CD94E042' : true,
+ '610F08E31612A5F6111491389F25568731F3D330BC66751F950821A26870ADA1' : true,
+ '6129C7157898F2D29FDF04A78AC6730FFB248F7467858C9F3441A5D4D6B88C8D' : true,
'613E70A1BE3CA6314EDB7C00B2477990271E0C8DE8210EED56ACD391E8CFF28F' : true,
'618F1FA3F38C857898847A865AE73D87B0071C8DCFD4EBB7E80828B11862151A' : true,
+ '61BA185CD2FAB39562813CDCDDFCD75184A1572E2B2B87667728C2EE8596AC65' : true,
'61CAB5A76C7B5AD89619944475E8D628F58A6A6DB42D66567FA80403883A4AB4' : true,
- '623760585A2256D234ACE51A98E31B982EB5E5BA2D3CBD673C747FC832529F60' : true,
+ '61FDD344421DEEB7314FAA2A6C1A5CD97720CB90B48C801EC4AE74C7D88F1E39' : true,
+ '62210E1578BEBACCA159EED5A0EEE3192B7FA0C17FA2556A686E28B251D80C60' : true,
'626042CAC6DE8C95C77C0E732144FCBD63418D72ED04CCB42FCBF260B38B21D5' : true,
+ '62AD913E74BC37FCF69CB86718E13A47FDF1440C2B18A4241D3EEE7831456160' : true,
+ '62B59DE2632C2A03669FF060A2C2047B9A95F49050C64B6BF5A782806AC10E99' : true,
+ '62BCF7CB951CA841FD08B456BBBA3061C9B0DC3DD92BAEF748070BB923D68B4F' : true,
'62C9A052080F8EBA5E8FEB9615B5CDDFFF1D74F8467653030CB1BA12337EB5D7' : true,
- '62D0DF9EC0EB635F9162305622C0072CFE114DDC110E65DFAF96F6B7A323C8F6' : true,
'63448627F20BDD4F11B278941D82DE56AD3A689CC06064D867FF060FCFE29A49' : true,
'635FDA4C1012FC8CA8E5EBCA6953D8F29D6B0EB279E72D043016658C0F62197B' : true,
+ '63B7D2C03D1507A80B8617E50895472A3C9E47CA34E8756069378DCEF952CFD3' : true,
'63E6A22E453B17B4EA3E35C6E39EB315DBB77A237B1BBA9BFB2B3BCF675A63B9' : true,
'640AD0B7F4803223887EAE106DDD628BED925569AB309C01E1C8B640FF05B2B5' : true,
+ '644685FCA2BDCE4C6D4AA3876174676CB961619414083ADA90FE2443CF929D32' : true,
'64831454483CA9CA55859BBD324F492638DA8179EAAED19EA3CC8E16FCE7A83B' : true,
'6489A71D718B44D5479D3C5AA2CEE70A2E6738AF25F0288B2BFFEF833280C0C5' : true,
'64D1D9522071A54B43A6C43A759223AEA7AE209FEAB423EA24E3E95FD83BDFCC' : true,
'64E4359CB75DDA1A17413906C2881931CCBA16E52A52F13F16E65A752C2097A4' : true,
'651F8FBEC4C5909A0FDC3B8E8D557574FAF01B33981B5B725311B57DEBB47B24' : true,
+ '65ACF48C5CF24783794CB8D5AFC30737273D3DDF93F62EF803EDCD05650D775F' : true,
+ '662C92E3136C48881B42769EF6DA50B31CA577215D5AE4B465A1024CAAB1E033' : true,
'6688912D47D0A49A3BF7EBA09AFCEA36E0D4DDF4BB571B383C134B763B17DF7A' : true,
'668B926F5EAA59F351B7ABFCBBE5FA17B547B01C5A7D4AE385736CE8FD13359E' : true,
'66B10F427AD63DB6544E9E20191BDE4F827A7C96F1DB17E01E0B254D67BE282E' : true,
- '6791CE938282431A922D6673F3529868BF55DF3D77C22BAE57B6CDCBCD4FD0C4' : true,
- '67BDA75FE2882040AF3F8B5573EF74BC306BE193373197AF9FA8070C4A086CF7' : true,
- '68D1F10D47A1AA4E66F1604CDCC5A2D7EE4BF0E8CCD070724B2DC7C18F556BAA' : true,
- '68E9D497F703CE5F5913F0047C0D1E6BD7234ABA1348ED3BC5F5A921D13C9D61' : true,
+ '66D67EC6407BBAA2F4A0EAF49D81F223332DEAADC96292827CD749DB07A82C02' : true,
+ '67DBD139B060C071667F2A45E06C7E159117263D593C95138066C7BA3AD20DF0' : true,
'68EE7C99FB1E2B8F0DA74C5339E58C6A1F7C2697CDE363B2A8A6D8E012D2C773' : true,
- '692C7B1D9E68C51DE61E300811DE5521D900BFBE44AA0E5211A4622C51A1193F' : true,
- '6942709425C9997EA3CD296A2551554CCB7A22AD45C76FE3D4D4F87735796076' : true,
- '6943FD65E288E854B1FCBE6BF228D790B0F5BE623212AB69CE3E43CCFDDEFE9E' : true,
+ '68F575FF9F2EE5CBBE2975DB80B0D2E8582B2B5A1624A70EE6470FD562D59E93' : true,
+ '69643C10B6E53A5667D8BAF683B1D566BB54B001E0588D7B791E648EA5681BBB' : true,
'69F71F4F07365D7F684EC748F9CE61559DA33FBE1C9772F836664D656F51A5F6' : true,
- '6A14524124841DA5A7C0A27539973C88C77C79EE8C190068EAAA9218CC35AE76' : true,
- '6A1B3C9AD488B3EA5238B179E0FF3FAB28C29E34F0CA3AA749D9D8B977E70B3F' : true,
+ '6A2DD995DB40154FF576E4B6C4544F92091BAAF3D43F075B63B5F882CFD21D5D' : true,
'6A525C84FBFEF83BEA806634766F1530D9C5964DFAE49BD2F678984AF29FB474' : true,
- '6ABF9C8C111E6353439EF682EDBFECE4F8AF8029D4E9F3F0E638C27A347DBA14' : true,
'6AC112C1828538894A1FAC7CECE0ACFEE75658118041513498E880274BD2B7C9' : true,
+ '6AD39077DC61A2347F25E34A809107D3F11E18B1E197A88A9A39F5FDBB0A3861' : true,
+ '6AEEBBFBD6A2EB3C41164F87A2491C293A66DB518999827273FDEA3F1892ADAD' : true,
'6B02CD14A3675354A800006220E94D8D4D5F9774D60EC984955FF720D927E529' : true,
'6B0F32FD3A2A683E8595F933F07DD41CF53C3CF786AB9A615DB27E7B865065A9' : true,
- '6B4C0576C20355BBC578BA189D6A9226E4FE1777E0F25504EF0932F545F5AAE0' : true,
+ '6B16CAD6D99596442162EEE7113248C0C77EBA7DBE1D3BDC044AB9802337D2CE' : true,
'6B8153379F9AD865DAA48C0B805430D7B62D6624C4AA9389FBD770A366439995' : true,
- '6BC2003E0B060DD9075EA20D60CE481AE6E72679889B7FC571DD4189C9398618' : true,
'6BC4B8F5756C6E11852DEAF28C2208733B463931BC5413937F897D4735CC2F01' : true,
- '6D13CD353D7F6723CC79620F59D5ADC6FF6FD185B9482C0D3044B69E8B60434B' : true,
+ '6BF2234F99577BEF099F5A651C125E660A765202F83A7FF24C82FFC87F87C3FB' : true,
+ '6C5E5DE77D1F4BC07A3C2AC49BD9022987191F576C92DCD778EC71399AA04E6E' : true,
'6D2E55B7B10EC7E3F82F060350C9BB7DAEED8B6ACB8E79B4B088D9B711A9CC6E' : true,
+ '6D53AA3328CC9AC46F2872113922BC105CC4A5C2B3EB7F45C331A93BBE4ADE3E' : true,
'6DB177AE67C272A729818F26A5DC8A327236919BDF09E43961204BD9538CB09F' : true,
'6DC90241CFAD3946A0A53940327E950D8D7248FA5896CFEFB60F543000A0B165' : true,
- '6E7E91E395DCD00520BAB2D41630963493456B73BF32E23ACBF4C2BBD5F0A703' : true,
- '6EA197C320301FCAE9A640B7ABB427FFF89DF05B6229CB090CD074AF52E927DD' : true,
'6EAC221C01F1C4E158E51B8AA15965260D186BDF22A579C9CE8D89E787A36FB3' : true,
- '6F5F6FAC8EA9968A022A09697540B86B834DDC06A4431443CEA4E964A229F76A' : true,
'6FCE4CF77E254C2920BE515857DAB1929ECE7638DD8C370C1AF6A374F36517A6' : true,
- '6FFCAC27403EAC095962831F6D08EFDB6FFCCF9EC314B089A243FD5D16571CDA' : true,
'701E5C167D1D2A47E29F6E0EF64D59D978CA3287D20E3590ABF531EEFDDD885F' : true,
- '70202315E3423BCD73E6A3CE51D0F541A78350111E683D8BA64AE9271A9C6369' : true,
'704172C04EB3CE46ADA086772ABDD4DEE208909ABA10D59D1815E9533107CE5C' : true,
- '7076A46D9D54DF8BC72C0BB44EB32FD7B802FC317BC2270490B03606A5A4A968' : true,
+ '707966CCAEC5908E84C5AE646566426234491D2F78CC00BA7C7B9E5F009924B0' : true,
'7081C7813097A8602BE2DFE4BF202EF4574BCD4DDF51FE8C7A2F872F93481E83' : true,
+ '70A137BA9CBC1043B06D08AF2800FC09F4D3334ACDC0915124CDC834A77564A1' : true,
'70DF998D006A8684F543CF929F8223770479451AC680070169CF11B6B409CBD5' : true,
'711280787458F0E54B0C9294A54270FA83E8CAB29E212ADAF665D7F6345C4DF9' : true,
- '71168AF1899C2122E92CE1FAFCB2EE64B9CDE6D14069E7412F492C9078704F26' : true,
+ '7189EB04B704BF82CD647CEFCEFE86B96F5FC455827A531AFD9F991D8AD1229D' : true,
+ '71CBA0C7ADFA0E0688BBE75D856278A477C4041C6F0895AB384BAD02B9D951BA' : true,
+ '71F2DAF17AC798022DF73260BCDA153082CE08952CAED20A66A588B46E83000A' : true,
'722368B696E375C97556E68FA5D53C3BA7CDCA15B13B72DB9E49090EE7C9C163' : true,
'72821C51F9381C854D8EE79D8A515ED4A5B6104446A746FCE6337BD71D73F147' : true,
- '7282A57EFF18571B2A325C20963AF74092CA8749AE294CF304206C8E2FDCF806' : true,
- '72C8756599495EF93A73AA10E092C3C9A80940BFC81EB2FC197F860D53D72B7E' : true,
+ '72950D958C6C1FFDAED4C597635776C7EC60B32CC683D03AF405B023C686FEC0' : true,
'72F3DB1BB2B0B3D65683F62D927E20C95303A00E8C845E0088E4DACD4F3B19FE' : true,
- '73937BE4968BEE5BE327D5401C3A0CBC23F8D8DDA45B0829A2D43397933D19D9' : true,
'73A621FFE0ABD75757F5C92C8EF20E63EC8F4A279A450BACC7E4FA9D75E0EE5A' : true,
- '73AE54F2FC7DE17E5AA39147C2C7A45A7D34D5184393EDCA673930DF61F4B5E5' : true,
- '73B26EBA4831AC03380E60772E12BE78303E9A6816058678BC432BA8D640B3F6' : true,
'73C4C95F998FC60D5EAE1283F28C36C63697C481E6B321EE7DC46DAE585B0E11' : true,
- '745D3184B509466217C4305CF4082681DA91C917D7C176D5C8FB8C9810C1EFF0' : true,
'74711F9774C66CEC41DE4FD32197132B13A40A6758A106DC95BCADB9298A6241' : true,
- '7498564F1A708C3B6B69B90307F879BF79019344A9CBB308B89265989F87FCCE' : true,
- '74D4CF230B19F9B9E3C674DB1B1754DEBA59A837534135CEA2A9DA3496876FD2' : true,
+ '74A9F7B27B38326F64792AAF791E5A5969071CD05C8ECB1E068035AF9AEAF482' : true,
'74E97E84CDC17ED404B29595C6E408EBFE93159E45FB59FCE264BC111353EBFB' : true,
- '7502B3BDEF586D216351CE49D4C8ABCD94F2B1947D3930EF118351AEA695CB0F' : true,
- '753896ECB021CD67AD82AA18F915CEA62ABB9F7FBE6305EDF010D6545728D12B' : true,
- '7552CFCE86D3D46D39C7A66D77E33BBB90A412DD12D9E4EDCFCC9957D4CDE699' : true,
+ '757071EF34F3CA907D7D29C6420EC14B6953F433FA03F2049636F55265E456B0' : true,
'7572D3C2860E9D28159C0337E8DC7C693F307AE0F1F02E0C35E091AC1C1571F6' : true,
'75893F8249D9326D2316BFA87F7DE3062EA1E00116C921C6876AFF322B636664' : true,
- '75C06CB66FB82E2840CEEC1753AF6FF5B45E0E7125FAA0FF3E81B9A8E6CC4DA3' : true,
+ '75A9264209E9CFFCF8C4D74F1988A6AD0F509269A5DDA3DAEFC0068EDBE6AB26' : true,
+ '760650CA663BAF50AB023FB340DC4316998A7E66FE226C3A66E7D31CAACC9330' : true,
+ '7633A1503B4C364C9C55BAAE30CC899238244FC16BEEDF7DC22E54CB9B569A6C' : true,
+ '7644E55E75802D6FF784B75B8D77DCFADDADA23DA2FBF95836FA3CB975C6B982' : true,
'76498ECB08242DC8AB6DE47C0EF0F87127C2809D2C1E1B8216D6297ED7D791D0' : true,
- '76A266265F7454F38CBC307C9FECDBE80081097444B97BCA9C722D93219EA358' : true,
- '76B1A25306D53B410FE5318EF1D077B29081025ADDD40CA55ED4A0A1EF557E65' : true,
'770784FC2B1A52F110194800E972006E868F055C52A8BE467F3AD7BCD7E441CC' : true,
'77C5EFEDC19C242BDC746C5EF4A1DF4117918CBE078CF6DD65FC274DB64CFBAD' : true,
- '78156B5B82C533B9C531ABB0004DEE5B6FE80B014152A8DB32A9C8A898949385' : true,
- '781F48D6C7754F83B83F680E1FCE9FAAD72FF6FC263A04384B69617ADCDFB075' : true,
+ '780AD07FBA71E98848DABAE3B6B94B292E5959CCC36769683E0213E78B759DEB' : true,
+ '78765BF1DBA140B30E4EEBADC5DC056AE2A1E3E552907175AD14BFCCE2518C10' : true,
'7889B1659DAF073B50A3FED9BDD6CA3F3F69E90E22C9EAC126E2F915C476984D' : true,
'78DAE4B45606212F3DD7B93711B6DC11416C79D56578294E08A7C63CF4F0AFF5' : true,
+ '78E4E5B9DC94A09084EF738F43D30114F90F95DDC550D6BC2ED203D722323EE3' : true,
'78EA89695196A279F7B44D8F1AA15080C91C3BB240F1D1878A88F2B27228D430' : true,
'79244B0AFBB3B26770A470A4F23555757DC25D3856F56D0096D9F06EB47D5889' : true,
'792EE0B202E6A45AAA85E918497D9C9F16FEAC99500A7940C0FC812ECC42120C' : true,
- '792EE3EBB3A79ADFDE12A4942D953CB17D859C556828850922C4C3D712E41DFF' : true,
+ '79417B9E9B9B3E70E118AC6FDAFA782BA72701448D3A546540128FEA6E02A47D' : true,
'79506C5663C38F43902B55BE2FFABE0757A806105C2A18473770E9DEE5322E40' : true,
- '7966BDDF0865A8AAB15A4E0E009DE232A9B0096A99DED95C05B0C4ABF6909489' : true,
'79AF4B79980557257AA892DC9CE02CC8DAE19B98E5C60128F1A38410B39AD08C' : true,
- '79B68F34FF9BD53C8B3FFAD569D2F2847B8ED35A58693FED585BC68DB3146DF7' : true,
'79C0A68B7394978630E169EF44D521A7E53EF98358B122EA93706611C5FF62C9' : true,
'7A081DEE8006EF40615953A1EF9BA820BADAA31338157E69660B3EBE7852838C' : true,
- '7A60AA68CD1E91022F5BCC1A6F1302D0A75CE305A23651D99D373C0A4FE33B7E' : true,
'7A95B01B834A4CFF097B69C8D84488E0843D9C51A8045BF5AF6AC2CEAB65B079' : true,
+ '7AD220DAF434C50200258E456AC5EB570821D33873A0238D87242111CF455A35' : true,
'7AE7C2EA08D84EB5EE0F978D061FC9D6DDFB57C1382D5215977205894898E0EF' : true,
- '7B0CE07F5D819B36A3F1EFC22FD08CA5D1C56FEE617E2292C3863CD4A06F18D1' : true,
- '7B3234A53D173A266510B9777DBDA7F372E40651E07B910899A0C1063A560787' : true,
- '7B40E5E9E8A2F63FFF19CE2F4EFEC73C902CD146E75DF866ED274651288DEC80' : true,
- '7B7F05C899B6EA3D83421260F30A6D9A89E71DC8A6FA4AC578D0F38846F32CAE' : true,
'7B90E5B537B13743AC7B5B9F3EA28B3F5F5E95A6D9F4AA0904DE22858F38C780' : true,
- '7B91F2E1C9BC34FAF854C5719C9D37E72E4D74C4F12FDD738B02F5694308F48E' : true,
- '7BBC6D34080B596C98A968A1D241743CB049682E2025F49232028E557681D448' : true,
- '7C6BB49D3E96F1125169FEB59751BE733ABD4F0D2860EA0A8F1A5C9B14A62968' : true,
+ '7C63B78CCB8DE59051349EFBA4A9E34EB627F65855F3C754312DCFCDBFDC270C' : true,
'7C99FBE3E1BF4CE4683186F8BC44BEA34B07919C1542ACDE9420CD75BBF3F388' : true,
'7CD7424448AB83F8F029A00A71FB658B83B4F91FD3D0C32D9ADA20C23E02357C' : true,
'7D100CF85EE12F47C6C9755F00CEDCEBBFA513CEC80993AE5E7FAF6F68289C23' : true,
'7D3EF8DEBFDDD39FA7CA90EAC62E660639521686926488A315B10FB2A0005F6A' : true,
- '7D7753734C01837BEC44A0E459A049D96683FF8D0DB78878C3BEC4C9574B412A' : true,
+ '7D7CB9E4195E89426B889E09DD6EF0018B702EEA4C8E1C5C39DDB538E20CF150' : true,
'7D817F280F1D664E0C9E717287D6AADB1132D4F3A3E2001B94009119733C9434' : true,
'7DE8C95508E4933243E3EC7D7C222F82A250E1B71C5619C547FCDA51146392FD' : true,
'7DFD6433613550E46711F591EB0B0790233460AB951DCCB4B60B61C91C359B83' : true,
'7E01E1EBA9D9E46D3DEBEC868180199AE64DB3BC878F66066E91CB4C060B55D0' : true,
'7E0AB095FE17F430AAE0B4AB7490366DF97BADF13AC223D96AF0913D6919BE7D' : true,
'7E455271258308A370638B803981F4B05C819378F113C77DCDA5A91B9A5D6CDF' : true,
- '7E47F4F45DE3FCA19673D070AA99E0DBFD6049A98B94D090B6B2168A1347D6E7' : true,
+ '7E5A5F757EC2E17DB58177DB695DECDE6B3F7AECD795B207BA26ADFF2F8A0A00' : true,
'7EAF183A91E8DA3866531C499039CEF3AEC4F214BEE293F268A28616B67D0474' : true,
'7EB7AD799370443234A196FF0B9DBD7DA1F60A67C3857E41548072DE24BF479B' : true,
- '7FCD0B25EEE0A63FA151354DC39D42CA58AC10D8ED9EB4E0B215C652C07D4E28' : true,
+ '7F1566D05D1E3A90A9D5D551AEF51D2F1827FC9E82922F2BB32A08CDC5BDEC7F' : true,
+ '7F3E5591F3F957AFC595F9336AAD8B4F578DFAAF1794FDBB7944DE7038AAAA3A' : true,
'802B6D5941983A1F76B514028EDEAC33214B4F27AA490345BCE94DF9B1494516' : true,
'806791E1F1BCA3B3AFECAB7D1EC6FD66C2616C6CF13A3256AF0D53AB0A759BCF' : true,
+ '807849BBCF3FC901816BD5C23E0EFD51FFD9485FC34A5A086174A7E91DAD175D' : true,
+ '80BB61C435AE010A1BBBC72F9CDD1BA74CCFFAEE4C74E07446ABED3DA2685427' : true,
'80BCFC1145A7F287ABB29FD26F6FF09F2F9299D43DBFC2214B15BC346D1A7EE5' : true,
- '80C72C24D1D24F781D110C7FE9C6168940D326A0C86D3FEBB3E1A801B2DE0C4F' : true,
+ '8133AEBBA592FF513EB1EA61723A0CEF57A583CDE66794FA9DE2FC0A8F573B54' : true,
'813CF894750BE7FE8A0C8B5003B362D62D400F6F08BC1FCABF247172A63B17E7' : true,
- '813ECA1AE1E6F452B86802E888C9EB1486CA86455B22A2EC6982913D54DAD91F' : true,
- '81A524F4768E8D164B51E023E9FDC90DFBD9EB3D6111C0DA5328B8743253BE8A' : true,
'8253A0516BAE8FA0D24AB03D7E4AF8898FD1EB8333D2925CE515FC3DB6ABC5CC' : true,
'826F129EED33C26A96D2FA3EA71B7897E065E2A68280A77C03E948C9EAD80945' : true,
- '827BA3E06CBCFA4970386D16D274A941BCE49BF580C9153AE93C35A30BFBD65F' : true,
- '8287FD8ADF69D39EA5C6DF59EBDD2105CF3C56E44CF766C48F62A4822A6B3DD2' : true,
- '828ECE9FE566100C9CCC7014C28A52A1ED3B670D10A19DC4341D5D436318AD60' : true,
'829124925C3F7AB9329A17C8329D55F04DE8C98994845083D9293F2546CFEED3' : true,
'82AA24B77148C70C4C53F7E2F7DF295CC04E6BCA7AC4AF2635E8D10616F8DF84' : true,
- '82C49DF2DF809141CB5FB30EAA8E41A3E510AC7F51CF203FAC2B16F20C96C2E4' : true,
'82D1AEF2AFC46271D18C5FE50811DF9A5EAB812156C2FE6F531A34FD529E75A9' : true,
'82F25208D7357EE223C6715E802CD0F8D019E3004DEFD76A90BFAB18D2DF07CE' : true,
- '82FA98B803B96AF87946A780FDFC3978E8C16C2CD33A60E9E6A0D0DE01C56936' : true,
- '83240BCB4F9F728899C1A0A9B9B64640287C5BEF7ED1021617C3B63955CBEF5B' : true,
'844B51F620215D6845EB82700563692BDD5EE144D097D24FFA8D99C8FB5FCF28' : true,
- '84512C3BE75D7A43087B1A3AB66A1CA55AA0D18E9442621B3E1652231083BE5A' : true,
+ '846E636F41C74FCA1D44474F8B116D67A5E820299071548D70B98CD6ACAD2E4A' : true,
+ '848E7A1C6E45D88BF111E43067FCF92F6F17BEE0B52C99381668797B108FE80A' : true,
+ '84A093B67AC79FA09CC2E40B54BE4027DE363B86EDF64B623BC346188B877ACF' : true,
'84A8C623C4304D57CE03893ACBF4E51FC9975C58658B89127508E5C33BE992A7' : true,
- '84D4B7500759C46AC067DDFF7707B4D79750C5824348F850CAFCCA1886FC8736' : true,
- '84F98B7850FF7A169D5642E9EF4401DDEBE465DFD5BE957C9EF18CE9988C11AD' : true,
+ '84B91F7D19D03A64195173E28A98C6A24AD166106B5AC14B36A404C45608B2D6' : true,
'8540F78EF676D50879CFF30B3CAFCDCDB1287CE9472D0E39AD221AC0B049BF5C' : true,
+ '8544A63131F49B49F2802FA5FFB5BB62D726E1A5972F668781040E2342770042' : true,
+ '854588AEA6C97F0F9363D6AD09D324D0D154E1693A733A728287BE922B8FC86F' : true,
'856D54922C6DB9C5747A1EE5ADB099907C63E0BB928B1D00BEFBF81E6B0E83A6' : true,
'857EB3AE3D76F7A86260D7DF2583D65053D7DBC30558CF41078A51A841A15408' : true,
+ '85CFBF3F71BABAFF31DBBAE3EE6615A269748572AACEC462E501B017A4B58C2F' : true,
+ '85DBFA1260307B3DD783BA2AC6B1A3CDDFF073A9D0340834C4065EAE7E8466E3' : true,
'8620FBF8F4B3D858B8AE9A6EF3423068026CEAD38ED1B70B12E65A66EBE62845' : true,
+ '862F95FCB6F1CB539D4F62DFE7DF6F092DFC8A8120D2CC3DD8D62D75017F91A9' : true,
'8632291EE6C74182159207F88A43B60EDD3715D9B23CB51B878C7DFA413AEBAC' : true,
- '8685E22CF1BE901D8E954A0674DB6EC013D9627DDC9FB81D3EEF752BB410DCB5' : true,
- '87108514AFAE3DC15C9F52574F918D7FAE18350602652906E289802FC543E61E' : true,
+ '878C8800E459A4D4B9989B0DB92C628E8A13574E71B3324E50484F70555B840C' : true,
'878F9A1345B5F3F76831E0AA2CEC43E51FD88455FD70FF0C671DDB8D8646BECF' : true,
'87C002662AAAB5BE7B6A7CF4B1CE9036E3A2A70A0A3CD80F64005C889ECCDDBE' : true,
+ '884A5D3C3CBA39A5DD7D7199AC1624ED1DC87503CB52760360AD2F51090CD12C' : true,
'8858520A8D4E5C88D777C33963CC7F43E796B555E7FC573681B59DCFAFB43EFA' : true,
- '887A5D0381838CCC20D204BBCFFDD864AB71C20D2BA06842921BD96BB171A796' : true,
'88A9F13EF3721A05CD57C6E13E4B2D6F699C00312E92C24E04D86990177BFD3D' : true,
- '88EBF5BCAB2CF8C43095EC58E1BD0E375518B5C734CDC394BEB34F3A7B0480EC' : true,
'891419933107B0EC0222BF502DB271240F352C825D2E32776842C40D13C2F8C1' : true,
- '892D5A5554341D75ADAAF997944DFEE41753004A083D565C8CEBB157ACA6D940' : true,
'8998929C795E1C1A4D769B9E0FB886892FBA9D8F1542DD894E15E12530424BCC' : true,
- '8ABB9592FEEFE27FD5B3054943F7D352DED024308066774E53BF38DC05E876EB' : true,
+ '8AA440E22415685F4A009BA8F14D9B8251614D78159C926A712542B0E9FCA143' : true,
+ '8ADE74E6435437386C63E8C22DBF3BF0533A4B49E6668F5F15824AB58AF721D0' : true,
+ '8B2E32630DFFDD0948A96CD94C57A433B9135F4949D2D93AB30D12B71AFF9D21' : true,
'8B41B56DC76B41CBEF93FD4F1F74525CF5B11723140CB81A7DD29AA3D95703BD' : true,
'8B52AE402628DBFA70BFCE1B172D676422D5E720F7E3AE2E7B195D4FB4E3F285' : true,
'8B83806B610FF233FDE11E892A0023140E5CAD1500847E29F5E5C6CC21BF33C5' : true,
- '8BB672CAE5B222514864A8E4FB8C89A774200D7773F2A56347C75D5094514C74' : true,
+ '8BA369EB69B5D03D361F094FA58F73BEDE76E58E2ACC79B62DEBFA58CD695B1A' : true,
+ '8BD1BB8CD29EBAEB36A58AFE2BA070CBB92EC003064B71AEC49E812E39C2874E' : true,
'8BD3D0A64D73FCD8450DF0224F56F2B44F88D2B89B94EBBA3B5CB7E905DFCB74' : true,
- '8C2ACE7402275D13C1FB21B6C769D12CFDFDE721B5143CBBBC085E67BC2F2159' : true,
+ '8BF51CFA32BD64F3D54AF63295B5F890FF439D7FDF854D43F25F4D72E396021F' : true,
'8C2DDBA5CA9E4CF79937A5A3AFCA79F371B6F235B37308EB53ADF12C319A7EC9' : true,
'8C6DDA18A4CB339717E1321FBFDC9A3ACC52F2FEF6FB453EA389A2B43FFFC63C' : true,
+ '8C742B891F670721F4F8E1D4DADEC74C9E9256E0C7D132578973823FE27C3A33' : true,
'8C959CC99EA9E228577582BB36DBC373836E4D91CDD4FA3C89B20A289B11CD23' : true,
'8CB93E0ED93C6730B58CC0314B8158A7A92184312C53A7CDABF05B369CC7E730' : true,
'8D0394524B030A612B174B7F2FA75A535F6DE732E9317A394BA9286CD3F42F18' : true,
'8D0CF6F0B227BE9394DA0DADABAB81A44900D104A915645ABF030220F3AE187C' : true,
- '8D513CCF4F004DFF999F74DFF7A668172455D9AC2D3E11BDEF5E542AC06AC421' : true,
+ '8D1EBA5F6A209614B68AF63D583392DF844036E8BE335440D0740396366FFC4C' : true,
'8DD64FF5EE29EAEA20DFFB1B446F1441CD291260939D41C7784AF872CDD60FAD' : true,
- '8EDF2ED124155194C050B91EBC9D414E618F4E13F350028C8EFDD028FA37B844' : true,
+ '8E8FBD2654D291051FC080C47960747B4191C58D85765C77CAC1C239FF3DDD1C' : true,
'8F1C043B3C47DD689F52F48EE4FF0AE4DDCB8D1F0C59619B65C6FD3853DAD0D1' : true,
+ '8F31ABA69837A432E88579184085B0AE867412379E04666EF880DE539CB03257' : true,
'8F8515B35B665B69D0DB9661EAE9FF0829B71CF4AFEB3BBF988BEE73985F5D3B' : true,
- '8F9220A8D45E07BE77A08614D621B93C727D65FEC010E4C64044AB4A7CD263B6' : true,
'8FA478A1DE3999FD32313D519AB1BF7DA3C485C1EC90176E34F82CA74EE170B6' : true,
- '90D6AE9953E31E3DA34A67533E444BC924E67CC2C610FA468DB31E59B1A35471' : true,
+ '8FA49556B9E8C97F768F94A3D2653ED2E3E927D31EC7A916D0744BFF07B5E685' : true,
+ '90C2F31A64343BA4CBEEAC90A43FCBDB46932CC21CC58095FB6D6CDA7B33F362' : true,
+ '90DBD3387014AA593B61432DCBE6201BCD1ED7E17D539CDCBB996D2E00737EDC' : true,
+ '91490F346E9CE34F77126105D7CB01AD7C58E0891B398289095613F1D1162F6C' : true,
'91728081A414570C9CFDDB6A7F70CE56010D44F4E165762B73F4B05436D85351' : true,
- '91797BB40B0466C461D1337205A7B94E39938AE59FFDE7602BE0A131FCA96523' : true,
- '917F4DBB104E2CA86572CDFA1BE8DD41804AE9D2DD17C4CF0D7C0F52A457E8C6' : true,
'918B02B75417DE289310E10FC77AF7041D1F380F02939D64F063776F121AD61E' : true,
'91CD0D276921BD32F4C8616BF2676078C24E39AE1B30943C5263AE0377F41F21' : true,
- '91D9D4BC2CA82B4AFCA49DA4D0BBC9865A075D58E26B1D5E5EA18D152E9D95D5' : true,
'91EE28B14AB2C7571BE6CDE2D75FD4C05C960FB033DA819EDD463D5D3C494591' : true,
+ '9244CDCD0DED69F9AECD82846D0467062DDA89CD32D8174CD69F9DE602AED97E' : true,
+ '925F02E984B20FB33B8343D81E8E22C24A55CE4CA9013260CC828758C144F73C' : true,
'9295435D6B38A570B2F537814147422BC442A7E39E1AA307550DDEF0AB93C3DC' : true,
- '92C37B623A3DAE981FDD649BF0AFFBF9FACB835CE2A386A3AB8812AC6373AD14' : true,
'92E91A15A0542407788FCD78EF9287724B2B25A27F703C9FBF2F5BEE709A68F3' : true,
'93197C3990B717E3C0A72941DE6DC382265AF352701F62FE07714449334CDD7F' : true,
'93671EC41A75DADCAD2454D2D9951DA643ADD6C899C6F4EDF6E8806217949732' : true,
- '937A520D89E850B443BEEA8EDB909649A8C469D2CD502A38B1B15DC4A166D85F' : true,
'938B76624EF6CBA932EECEE4624D9172B10E681A4C42609117A073A5834FAE84' : true,
'93DCEAA3D67BD8992097C446EECE4A6A02DCF89EAB0008EFAE7D0C9BE26B7C00' : true,
- '9427B4E3600374F14AE6B32EFC34038C0E415AA8FB1701A2356BB30F35DD9F68' : true,
'9446A5F64DFA26478AFBF6D0F3A0773ACDD46F1A4F7691A72BF24A58A411B340' : true,
- '944DEA4A483EDB2ACF7144CDA4A54DF11BD01713E609E0D390DCB7E4B7D66537' : true,
'94CE12FB5F69E4273C8F813ED37ECB954AD667BC81C4E37DD27A40C291DDB12E' : true,
- '94E0BDD8E86D820A3388DF783947443D07B302C0C76A96AE211BE3E937EFEFD3' : true,
+ '95393B2FBDC6AECDA55FDFA4F7BE33E3CE85E1BA1AEFC030F2E9C44EABBFB536' : true,
+ '956DE14452F6966BDC2C3CFE4874878D446083AE81BCD83C705B8E757FA0A390' : true,
+ '95A4DD514D4B5F9B29118B3CE20FD8D4996F40424D7D64BF678A252262608C70' : true,
'95A80082CCA2E52DFF16CA0E49B9FFE32F7ECB93770D20913605BBD47A2C65A6' : true,
'95EEDB5E6C8B8552E29D7FB0C607EC68AB3D3F88A3FF97F4C70D7BA9D69C8521' : true,
'9658D54C28C27DD6E9B79098D7D86C1EA32215492E8AE9DB225E3410EEBC39CE' : true,
- '96BC0612871BA526E0F8AB96612077A50930AD430147A0BFD37E1BE21E0C64DD' : true,
+ '9668363E5A4509F63E66C774CC7374E8D7654D0D63E833131665F65BB0116D90' : true,
+ '96B78900F165A1CA3843F3036950C7A5CB299CFA98F7A1BA6950AADB5DC1459A' : true,
+ '96ED7F4947B39E44EDCEEA05043F9B286C35BFA932C02D88A00B5338BE7829D5' : true,
'9736272DB032615E95E0C6E413B0581BFDF19D9F398447A0512279743752F7A8' : true,
- '974CEEE12508E1FE4C731766B61AFF97AE516F50D38FD2B53801149A27938FDB' : true,
+ '976ECEBA965B747F498F8E4D26E3BABEFC48A6DD2645210168D7D82BB97C15C5' : true,
'977C77EDC0AE3D98F2FE87B8C309DACC9306DC575D2D8FC358973DC716EAD715' : true,
+ '977FFC2869C36013D609F96B5C19E88EABF21E18BC7C80E1F8A63DB2E9FDBA66' : true,
'9787C483E07B0D1A0251A93D9F86495C6E39D25375C395E9939145D6C1E818D6' : true,
'979F95AFF9D71DE4B8ECE178862627DE62E0E24E5ABDA2E8A20E5177E8F428D2' : true,
- '97B09B0E6CD2378FA7CED47F365C77266C94B867F8F87B01D8B667D0DB2F5DC8' : true,
- '97E2E01B20BC595FD79947AF1F6C6B249D3688C401618DE9402D5BDB7598012A' : true,
- '9805FDB209F0566D897760D8569D28BA08BC95D81C2268DCD551273E1C1389FA' : true,
- '98AD6C8A91B962AFCC223C26F0026802B688AE55C204BA0A4ED5BFA5619D979C' : true,
+ '983120089E357F1255EAA175207B7DB3462CC8481C2D4F8150B5C4FB93E274C7' : true,
+ '9874E435B3A12419DA88FE7AE98EEFA9DE47D098DC95AA6204B499202AB1A0CB' : true,
'98B754929FBB1859BAE00042F86599BCE3E4465C42503150BE320FDE8B82166C' : true,
- '98EACB89217FDEB5E8A3A40404342E8843DBE5B68485ACEF89F8033649449621' : true,
- '996474904B177ED3F0C6F27FAEE2A00FAD262939BE438524FE36A78C13504C5D' : true,
+ '99A4816C0BCDE615242EF4FCB3CD6E84EC60952E9F97E248424080DAD5D0629F' : true,
'99BD9F4C25AF74058C9E443467C9FBA76EB37661CBEF5A1E1244D8077200A250' : true,
+ '99DDDA7A8D6D222C3111DDF5E85A45261AE9A7CAE2972567996A7729D0FD6E68' : true,
+ '99E2609E0CDCFD36015CC659568D5C5B01CE4F7FA0C5671738D525FD8C518B44' : true,
'99E437DA5156E02DE52D0D95AFDE0FDBAF8F626F4D3BAD2FFFE7F4C75D76BD60' : true,
'9A01E5759613554A5FAEB7E8889F18EEE16568073CCEDEFA0485F01969535C43' : true,
'9A36248A6C3142FB6AE62E262E0F519CD609A0207BCB6891443BD5AA5C02AEDF' : true,
- '9A7C9723368BB255C037D81910B0327706848C267DEE9AE401D21DFA844BA273' : true,
'9A9B087A4581C1FE71B3F4D7C041E93D4EC1093B01AF3ED96548AB93254EF65A' : true,
'9AC79E2916EDA1EB936B7FC6779F139ACC665C33F143340C5CE540B69F2E9F18' : true,
+ '9AD27D42F0662852A1C45E122C3577E23F56342DA9598A26FC0D9B15C17ECB0F' : true,
+ '9ADA51307C3FA225DB6F8E1FA3A218E477F775FA3D3DBE839232E3C385310902' : true,
'9AF3A66EB67ED022E3F99B1E810BA8C0A110F83F0BF250914AA5F1F0989B2196' : true,
- '9B236CF6628A1D70B14B03D2AB4D64CAED44FD9C015F4A7AAA5A8E0CB005BDEC' : true,
- '9B340670FFFA8B98B78247E2A470627E05F1AE05ADA505FDD049350B5A8521EC' : true,
+ '9B128E182D224AE31F63FA92892A8A322AE42BF2D4723D62F5A6744973C82F6C' : true,
'9B80DD5C98B0F0A7AE343DBB896DBCE45DA52EB4E31BE057287A2A738D9CE3D6' : true,
'9B8B430BCC7FFDD28FA85A1B18690D76DE8F18DE340656F63BD1472816A3C83E' : true,
+ '9B8FAE805E1D9E43951E8E8D0DCB1A1EFAA3661C2BD974676CF6FCA8C046A4B0' : true,
+ '9B98284571E5FBB2A2BE676AE24830A6F0048748FA38D1F11CBCB252505D2E62' : true,
+ '9BAE8B30BBFA182D0BC3DCE5BADF78381980EE69F15884A0B93F291EA09A7EB9' : true,
'9BAEB6606A1F13587AC6E8808B694D02541E6581F2874BD704DF55DF9202D9F0' : true,
- '9BF6A4CE27AD782886988DB3FC3AF54CC857946C7C5E32A9A6AB13A9F7504DB1' : true,
+ '9BEB9D4CF88A648ACC9CFFA48A687370D76E9F8188AB3BD638D9BFABD2D6AB24' : true,
'9C0F47FE70B9E636409CD37362B052B40B3CF765DFE80E71D999E7EB1AE1D4C2' : true,
'9C5435D416BDB4EAE642E2A66B8382BC848B362E3937069725DEFD9282772612' : true,
'9C7DCBE2DF8C0BC947A09C39B1B6CD2EE137D366554F8CB46AFD80C5FA9C3B81' : true,
- '9C7F9776163746C45FBC96E2985B57C6AF769E83428F910C3EEF0918BC5CE593' : true,
- '9CF455322FC12AA2FFE88CCC43388419F61C41ED1AEC560E11D627A009DA62EC' : true,
- '9D484D53782C2FC0798843979D991B84A180C1A833D717AE002E75F90E954EFB' : true,
- '9D93BBA3F1A3E4BE5D1146849473DC18A987B0CF48566E506564D4386B29C50F' : true,
- '9E2F5DDC11A878B6A7D27F9FECBF10861EF27BACAA208D8EC7ADBE2682FADE95' : true,
- '9E6937E5BD26C280FA683490204D1347BD8662325524F0BE4B25FC17381923E8' : true,
+ '9CE9CC6694EE295272749CB4696616C9272DEDEDB7A4EF5253F4B7941C6A5F5D' : true,
+ '9D28BF964F6C820DD26D42FFC18689C1D2FD43F4C4DA9B35F11CEB8FA24F2073' : true,
+ '9D4DDF09ACA4F1241AA5774A1B24262777DD41A3473A029738F72E4084ACA7CD' : true,
+ '9D98952A99B9FF1B2B7A86D21F50E311B3147CD9475830A856A4C63798B05630' : true,
+ '9E418F784C18C79930946ED9BC408D8E2F694BE1E3DBAE4BB20917F8E1B277A7' : true,
+ '9E492AEE3B5838FF2E4BDA9FF98D73B48CA846FBD2AEEDA19FB885A489F58DF1' : true,
'9EA920DAC71F221B6CAAFD5F1728FA6D4A782E70BD5C0FB1A3789798D8E962B0' : true,
- '9EAD1D5C9A14D5F852584B861F792E93FFF2CAA9FD366B880566D29D70905FD6' : true,
- '9ED22741CDF43DC2AA238D354F0BD95C28F1B5557ECE9489AABA4CC37CBFC9AF' : true,
- '9EF5444454DA21B0B7D6110C9B040BDD005EA0BEA27788D00BB3F1C48D9D0F36' : true,
- '9FA4BEC37508A6B83B9D8DAD41EF9152FA0B2FE89C7E816CC28E9CC9C2E887F9' : true,
+ '9F2B661A4824017A95B29022B95C6768B159D5A0CB1F442343A47A14424608A4' : true,
+ '9F5CB7420AFF2B5250A87EE7D0F1878496A34BCADB0971DD5AC3C33465C07565' : true,
+ '9FAD6E5AF9CE6D510DA6BF4AC01B74112692E4E4DBA814450224149D0A7653F0' : true,
'9FB66B76C9B0AB6ED5DA3188A3DC6FCBC369AB273DCA99468C1EE4604A1E9E99' : true,
+ 'A0212D4EE874832A0202ECD1349ED750083B1D238DB6E30120702BE1256F53D8' : true,
'A03D7CE2FA040738CCFEF1F20872DDC1E321745B2C34095822A51B3BDC07D9F5' : true,
+ 'A03F32B0A7677B8D7102BCE24F121EE6CC503FF173C43CDD6B914BC69D954ACA' : true,
'A06E313693C42005CB7B7AE33A96E3ABD66E05A57012B6294671FBBEF4A84AAC' : true,
- 'A0AF36C48B0FB8F827459F8AFE6FB82AD1CF7D5D193057AA7BE7DE3EF5E4F69A' : true,
+ 'A08110BB7D0D5F694D791F82071E44B4C968D4990C73A402B25E0E0ACA5EA6E7' : true,
+ 'A0B4E9AFEFA1B8966355614B201506B13CC213060D2661264491601F7FAD8269' : true,
+ 'A0B9ADCD27CD63E8842BAE80188453C09DEC27270C32748A4EC2508372AD36A5' : true,
'A13EAF82F0814BE5FA12BFB4D2FFBB75FC6375DF19E16B8490D140CFEB54AEE3' : true,
'A1504C131B0FE702B64AA259B901DA2D9B2AE9D85AADE02F1528C1147F98E535' : true,
'A15BB49CD56693B9881AD43F6366FD2966AF816643BB107E8A249E07227F67EA' : true,
- 'A166ECF6AC747250F98730EE9910E236DA9A79F4FA5B30AF67D84E99B240A895' : true,
'A16BC03AE3E35E7C39B45D339A22BEB39CEC134D6B9CCA289E873F91A384DCBF' : true,
'A16F347518B2C6930F30C6D6157AEF685D1993988846BA598AF8790E5A6C4F8C' : true,
'A19514A23AD3729EF69553D8293E9693528EC67609464D4EA0A96CEF8E9C3E05' : true,
'A1BF53CA92BD722E7277DF7C8AF1299DE0F3C35316EEDCA31EF7F4BF53CE5706' : true,
'A1D84A014F6ED46C07647B77CA8F2C88B9AB2273936AE3128C1DE7300963BE26' : true,
- 'A1E8754F71F640BDBF7CF553AC7962D711CB2E0C948629D191DDE4FB1FDF94E9' : true,
- 'A1F4EAD6F1F09D4A32592BDC5C07C1CA9A52E80B63B1EA29DEBD30CE00563772' : true,
- 'A2152E5BF42DA70683BFF5526B3F9B90045F74B82A034EDDDFD2F8674BD20D7F' : true,
+ 'A21691A9D41B6DA9C27DDA03477F63EE4377A978AF1CB6C296CFB7D2CC5783E1' : true,
'A219A198FA5CE79A2ADBC1EAB8BE34F086699B9A16F88DD2F823325F7481FA8D' : true,
- 'A27088D026AE78AEBD710D841272B757B602E4FEB3E05E66BFE98AEE181DD3A8' : true,
'A277B893194AE7687EBBCFA344178B3578AA6228D2B430BBE2FC8D5EAEE43135' : true,
'A28337D306B9F107098D473AF3F34D8C14DCCBF62D725D5F8EEAE11BAAC558B0' : true,
+ 'A29725F7446E6A2AD03DF0B7D77B72F9CF0249733B42F48DA80AE41C6B206C49' : true,
'A2C85895E192F69BFF3BD6CE420B8C84A6FC87B3A999F84701F0230887DD3344' : true,
- 'A2E6C7ED88E5F8103D95E02F792372AB66EEDA5AF35CE4884316493325F971E9' : true,
+ 'A300C56C8CB909C4F6ABAD6A7FCACC5E621BE17D5209717912B3F3BF2F7D6CAF' : true,
+ 'A32A8197E25FF03AC02B1548EC597DC93B2F3376E971B143538542A6A2212AA1' : true,
'A32C868E44827044CE85B05E7E694717A5D3A7F8B9D28C41B7770DCD84F81218' : true,
'A334A1C1BCBBE82C131CA48858CC1D56495D2CE2B598E5C6E81672D7E9FF9FC7' : true,
+ 'A33C924A4181FC26CCE183DF2C30AD332CF6D6A94626E2B6455CEF77560438F4' : true,
'A35426EFDAE7DC04D5F7926E254D5CEA23D4CAC5371D577ADA3A4AF828766F1F' : true,
'A37B9444FE3BB0FB2EC43F2677926EF458D0ED4F0688FEA6443A5F243F10C2AB' : true,
'A432841B8E8CE4F3B7992A740AB014B3D78ACD930DA113753E8D2E2E34A5358C' : true,
- 'A45C0F1FB81BDEAED2EF4302BD5AF171F31496B6A8D502B488BC8E3E22D5E992' : true,
- 'A48E4E66741D57B61975718DC70B406B1E32ED182105B6B2F25109564A1FEE5D' : true,
- 'A4C6A2F0F5175D6C5C1D87E61ECCECB368E6B5374F056F222FEDBD0857B83F2A' : true,
+ 'A4433A490CBB5814065465D0A22C7260EBCAC5646C830971790254E4094DA502' : true,
+ 'A46D4265BD5168CB36068465327371B2B9E2ACFBA66E368A8B90CF77A251ED09' : true,
+ 'A61D1D1BF3A48836E418525F674E32CB457F4C74ECF525BC18A3035A26DB1CBE' : true,
'A6436C7837EB4F0FD89A1F3ECE954BCDC0D76E3817AD0289B64A22B78B071D7E' : true,
+ 'A6781D1377008CD9AA9238D2F207B741EF8C42D209C06630E8C669EF1F863B56' : true,
'A686BB3EA8129BEA261D5B99357BDD2BC22DE15F0140AFA2D7CA3ADBCB64DE14' : true,
+ 'A696B059AC99AA5CAF081FE9DE0F113EF0032A9F799A92663985EA5939B6F30B' : true,
'A718CF6FB0B4672FDB9BA1CDB812CDB98423DD8ACC8991780BE5E0FAEB863FBC' : true,
- 'A760CAAD9A77A0E886B90B1C59291CB303ABC187C49F25349FBFEF2B59E35088' : true,
'A7636BE0A08F56D7F05A8D69AF0B7199FA7C05AAC123DCE71AB57C538A4D910A' : true,
- 'A806A89477E76D5B381113AFAF7D082B543E172A38A1C4B5E23645A81A411E8A' : true,
+ 'A82D480B6360B97B8FA507BD461FA4E2D6B73BDF171723C707FDBFD7C9C2C144' : true,
'A84DC1DB143EEE938A45743268683770BA0FB2EE69A4EB4B131841555CF1E124' : true,
'A8FFD3DCAC35478A6187DB3E317D7A9BA8D9823BDDA70440B8FCD5D83F49B836' : true,
'A9266E0A665A00C7C4360A7CE3FE0B5ADBD6E7E20A32677E43BA30FCFE112E30' : true,
- 'A93173F1CB4CBB7B376A9A9888F56A15D99B6AF77C5701F59096A3B503140D51' : true,
- 'A93B07A90F55AB3B6BDD56958FD69A808C8DEFA838DB35D323F080A4AB1E4B60' : true,
- 'A9C8BD62DD64EBE49F3DC28459A7756B6D7D6168A9195E8C52D41D2AB9D9CE05' : true,
- 'AA097207635BFFD5A1E82CE5348CF3334FC9BB56477931503F396138D0B8ACD6' : true,
+ 'A9869713F6E5332E3F4902E82E81EACF34994042C411A28C8AAC116131EE90E9' : true,
+ 'A9913780644EF0A55C80B8BBFFA76A7453DF7F9FC04E9BB09FB9434240D03961' : true,
+ 'A9C3D776062E86182D7BFAD9005B716E1189EBD051D477078341EBA83F602DC7' : true,
'AA70F6E381B7B7BE508E8D5EB062186FB323FE00A75B264F43B771B731FE96AB' : true,
- 'AA9F7FEBC74FE835504EE24501DB2D00409FC761AACAFA92DC8A696388AE843D' : true,
'AAA0B610FC8267716C7703C164E8E8A47B0DB68F821405F83AFBF5F4D7BB5219' : true,
- 'AB47045D4B45B0821E851EEEF7EA9D6571F9759DAE4F3DB1EF92597BFD2B4FF9' : true,
- 'AB53D7E48191D6A2BCA3BF4B8DB1C72EDBDF8957CC111305F78C70AA292A3A5C' : true,
- 'ABE9809D21AFE6E0FB253DCD55E10C31DBAB32A973EC52DFDA1C15068F89D333' : true,
+ 'AB33CA8B659481B0120C5A227487E4F99D28106362B530D054FD812F7278CA51' : true,
+ 'AB3975DCF7B531638F8E8EE570E416890F6E1FA4DFB66CD2EA62E81F6CB19383' : true,
+ 'AB664D408382E848341572B2B10C2B9D1279B95F0AD02B8C5EAB00662D560C68' : true,
+ 'ABD63734E1790C763452EFE508DAEE4EFA8A98F1BF72A2DAEACE57B02409CC33' : true,
'AC1199A88C3BB6564557B6BA422B776E8032D9457EE1099D0BD3E53DC44F73F5' : true,
- 'AC69F49D679DD79149B54E410701B8BE166F5FD728C888F05D7A9EAF21107198' : true,
+ 'AC33C7B064D8FD9A0E5A00BC70581133E949AA0E61209B55010E310791339D4A' : true,
+ 'AC523C58EEF332E2FA0491FD81659997FE32F1EEA4F7694D9C149ADF4B18BF2F' : true,
+ 'AC72106DE06D4C1A17E641546E6DC5C53A1F48FCED34B9BD09368429F828CD70' : true,
+ 'ACD1D0DF8BE51A80520D345BB16B04745BCBB48B01D936B018FFDA71981F817C' : true,
'ACE055C2E550D7C9F1D4847A26B21060A324BD4FF71EE2C3A8A202271EDEC115' : true,
- 'AD046A8C4DE2A89F32973F0566452CFD38CE0586998717364C528F5995B5E2F2' : true,
'AD0C2E82F0B607A9B4D0571DF0302FF442E2B99ECE91C18E22C416B46B67E4F7' : true,
- 'AD3FC05D383E384659DA700279CE3C48DAB804AC74DE2B3DD3687F6ED355F99B' : true,
'AD40C15657CEFAB57F6A71035796462F0184B0AAA489E601087DE329F35CD757' : true,
'AD56E6AD659C808689220F5959DECE86001E37EEB88F452E2111BBAD634B4AFC' : true,
+ 'AD5A935C6684CDB2459FA1D67250E8F9B6A6CB6455BC628750F9633FCF6EBF62' : true,
+ 'AE51B75FD36BE0B6CF478F2441E57E91C216179A93BC05E35983D5FCD582CA91' : true,
'AE7BAFD9FB7AB3D87D0D58774420B314E46538D2894DC58DF5F5614DFE7F0435' : true,
'AE7D10798CDAEF50F7599FB03394DE7DED48C3054CE987479DB018E789E3718C' : true,
+ 'AEA0E3A8AC6F70B681BDEFB28D9F156116F80230149D8E5C9DE76E9062EC015B' : true,
+ 'AEBB7634F9BA9D293B5B1769E5E14C8EC2039487FFF02532DA9197A06DE84F77' : true,
'AEDE30ABFD76FFEFF77B437F8862FF677913239CB0DE0360FF93EDA6B515F731' : true,
- 'AF2709808219ECF144D2BAD58C49F55C5B40855A81C28E6E083A2507A4CEB7AA' : true,
- 'AF3FE73B9090BCFD496144D4200E35EC5F66C952C5307ADB5685C31E7AEBE942' : true,
'AF6F25BC29AA257FB80826165B3AA5BECB2CEF777817998D0619544F02FAF897' : true,
'AFBAAD26120F25FACFB7E1ABAD16A58455814B1A46DA986FCD04330A88DC1502' : true,
- 'AFBEDFF050E25CF669C0A711C93DC3F66290161EB50C02DEDD7E9360CE953486' : true,
+ 'AFDCE2C9BDE084811D64F5408E8AF94945CFB9F7FC69C9A27C8EE39102858DD3' : true,
'AFE6418D301202651844A84CC8B19A56C479D627DE922366E532643D995470A9' : true,
'B040095E5483E488179D07D81A9C14C6CE026480DBA570A6D16D75A7414D7499' : true,
'B06CD6AF9B4156B4379FF3C6C1F8CA182A923527D0DD92905394DB3446A11D5C' : true,
- 'B07DEC288F411ABA9C9B25F382660ABE234E020A164F2B9EB1D8EE5DCB51ADCA' : true,
- 'B09F332B8A115069BAC41865E1F1228DFD8ADCF3A66C1F2EC9DFF41173EE7A85' : true,
'B0A3CC901A3D58371289521F9345843F7ADEA438660729BE9B7B520DDB0BB965' : true,
- 'B0FF4F8A6FD3F8FBB19A188351CD4925C951DC2D64633B9E0446F026670A47D1' : true,
- 'B170B2591D8C91461E6557D286F386CDED4FEFCB208F1C0296D9714DF0A3F25C' : true,
+ 'B0D656C4047A83E7012302B7CB04F056FDCC9493B506495E5DA4B0B97A9C1150' : true,
+ 'B145A895F26B09540185848A600F7F58C0B03740C17B61A1B43BDC652740B80B' : true,
'B1991ED1894F821B66AEF2E26E0834CC796FFB43971A79588A44CCBF7E8B3076' : true,
+ 'B1B58B7EEBC1947CB840FC4C2713D0DDB23DEBC75E58DB15610AB4EA9A1DE1C3' : true,
+ 'B1BEE5F876D9695E23EBE9D0BF32D0DB4D05096C004A073487C5B3FA26719FCB' : true,
'B1D9B3EE2512A48A8E703E2D2263EEB4B0A3D24963F5165DB3719CD4750D2986' : true,
+ 'B1EA0EB5DC9C9766C903870A4E9DD90C92C8780189ACCADDD9012E1D9911591B' : true,
'B2618AD6AE584F2CDCEC050ECB0FCE8E5BF0E9E978AFE692E4A1BCB8B7D03044' : true,
+ 'B278FB3D58DC99E1CA192EEC63A0F34F9EB8294A23EF98C73F7C5F52A5C86FE4' : true,
'B295FDC9D7462488EBD4E5FA8E5B062FE5E2D0432C6A02B99F4CAD1F9BE6D0BB' : true,
'B29A6DB4686379EB52C1D8F249A74FA55A1DD9F2162B0B3E0683912C1E942437' : true,
'B2CB5A2A69339A575A4198D5B76822E6A0F90871A45C8348F2A060CEE67EC98D' : true,
- 'B30434A98AA13225B578FBE310551FCFE6EDACFE5F810B9ABCEDD351EBCE13E7' : true,
'B30C7833C729209E938D2EDEE007438214024A6E424A849064A9B563040DDD39' : true,
'B31C07387E56AA457F17CA3D3A4C485683253CF387E6DCE37469B6A8E51CBF29' : true,
'B3251BB9A1B4F219400E69789FB08CA2BBA396C6D2FD3C4B69F4B7E1C0DDB615' : true,
@@ -726,151 +709,151 @@ const X509ChainWhitelist = {
'B3381C627EFBEF5DF3BCC9DB71A9B6E4C0A4F3114F7E7408A356FB33FBA5D20B' : true,
'B36D72C8B1F436DA49520421FC0A2869A9952DA405DA5E29EC3A1919453DD6F5' : true,
'B38307BF753F924511125E6FE9542C79A8541FCC780FF6905BA237A4C7FCBB13' : true,
- 'B388CF70F7CCDE70BB4590D09027DE24168BA65B6D599E562C76CEAD82F2D834' : true,
- 'B38D89EF6F08A41669970B0B2EEF867B5088CA2B67FCFA433071FBD53A253C73' : true,
+ 'B3B278DD571DDC491FD26D3B0942C78EC4A1AE3D9A5D07C1E317CE901E6B8979' : true,
'B4130785116E5A84BF7B191696B213BA8877228388B18C2DA38DCB9EE14AC8CA' : true,
- 'B42B7068049E4D54E9A6B69BC4EE0BD601ABBFDE6368ED4D59CF6C696AA00335' : true,
+ 'B458C6F566E833CA5856703868BF09531CCC61D32AAB1BE65808DEEEC56EEF25' : true,
+ 'B478303C0A26FF8A262C29BA3A9683FFC4CF075735E637F6A958640C5EC33669' : true,
'B4C49BF02ECA8D4E0648B386A408C377ED9A9E8E3DFEAC1D7904D3D14C5E2F76' : true,
+ 'B4C5319F6F6A80B60C2A5A715FB1444F974024960339D49E0301E7F5A530595B' : true,
'B54B1776D34DF92E8E090FBF0C927D9852E6F18F98E6F306AE0369229A4AE2E6' : true,
- 'B5C58EAB37201F8A7F3C520FECBB3C016A30960C5931DD7C43ECA217A1E31774' : true,
'B5F50267B0042B154B8529FCD98F5E01C986F7D23628B49B63011A3C90398CEC' : true,
- 'B633827A97472541F7DFF77C347301FB40604D6076D08FF4244C070FCFC9B731' : true,
- 'B634FFB1AAF4D757FFCE6D3F5AB4ABBF2C9341FA8B41DCF5BE97DF2CFD9C6969' : true,
+ 'B613D69F10DE096E664C3B4AA083E0BC9F50A98D0F9B682C496FDABB2E4AC9D2' : true,
'B663B6C8C60A5969BEE4F6844813AAB8945EE2CE2253CFBA67500B991CD8A07F' : true,
'B6B0AB34677500F9A39F33BFB229A8B211E9A75506BC0D4E894DA99804B40603' : true,
'B6CEE930054D71DEE1D167A566B9881B8971F7EB4BC4A34FCFD9DDB3DE311B9C' : true,
'B70CE73DC10ECA5F97059AFEA5A65F1B1CD45F3137BADD7F3A12DD1D6A468D82' : true,
- 'B787F9D4179BB6686198A2D75A6385E0FDD8DD3303DC5AA7D0E4CB90FB49DE17' : true,
- 'B797EE3524165F3EF64D8BEA313947ED0E40ECFF1CB29709F065132134448938' : true,
+ 'B740ED2F64278126EAE242BE49253ECE05B7EC944F8E201306B5128F82C0699E' : true,
+ 'B75601AB7AE44FB2C77FF1E9C6FBC4B4D9ECB548009BF40C46CDDBBA8C0FE493' : true,
'B7EC03174DAD602E897345B072749AA86CAF05151062989E183C3039DE25569D' : true,
- 'B882C014B25A1241B128B3DA5AFBE8475F17DFD56FB224D398B480AD3F9DD050' : true,
'B8845702F28C3AF9B35D8B5F1DFFFA014CE411CF592B18395F700CD8B937F3B9' : true,
+ 'B902076C4F3E4FC9D45AE90E5AF637247D3A4566DBA2D6DAB15364828CF7BCD3' : true,
'B9891F4ABEA7FE5802FA2C07E596905422C39B16E36612B37FFABB81F49A0BCA' : true,
'B9B8984BD73419077A912955DEF673CCB572907E2C494256D627DCCAF86226A0' : true,
- 'B9D8E2EC3C47B6130DB45DE0741CDB790E36E4617986AAD5A2BA232B8BD8A85D' : true,
+ 'B9EF83009F5C8B4C3A0C1B8EB263B4AADA87D4D2263887F8AFCA40FD4A7F78CE' : true,
+ 'B9F8D7E05743BCE5E58CA2A0CDE89E7E1A9397417F75813B492785D72D4F8510' : true,
+ 'BA43FBF51015CAA4D822D17A43F4DFB32561617B62E711D921112F12B76F9E43' : true,
+ 'BA5BE146EA09B76F106B28AC62830E5240D1B7DC43BAD171EECC9998B1718E28' : true,
'BA8089CC9A0F25A27251DAD14E47714A331C35ACCE2EDFCC51CD73EFA83E2EB4' : true,
- 'BAC88F443D9F2F03CC7ABFB27373EF9600AC918E084967BB77E80650B3724266' : true,
'BAFBC5503CBB29FE4D094BB0B0D04B22852E9120DD54D34D9247A4E570FD458B' : true,
'BB3C208314AFEC26DCB183A0E4DA2C1169F9CC435F1EDB38C349AD97B2C3F6B9' : true,
'BB998A2EEB4ED3C4251EB69296AE91EAE7360B0CBAF690FD250C38A710ACB38A' : true,
- 'BBEF78F8C05ED5A5C2142C3598696B0674FF3DADFC8156896025A13EC892ECC2' : true,
- 'BC6907DA20AFE894FA7ABA6FB20BAD94488EDDB10AC6BB8CF49291C7C999022B' : true,
+ 'BC0C5DBC1020476F067127D89E5C9A2AA88F141312919D7C0BF1B964D4820FF7' : true,
+ 'BC86367AF49A238438C89460780C94DE2C1E49021437B3DFC590A63F46332888' : true,
'BC9B66EC1AF4106896624836D64B109922DA4163B83288E2131FD9A012CC95AC' : true,
'BCBFC4B205B7EEE5EB4D94029E1C3EED4DE049B3DF9FA6DB1D66F81B1247E9CF' : true,
'BCCC1893C98C4BD177A414C7B3D5EBD74893F964FB9A62B96B48A84F1FE64B53' : true,
'BCE02BE648B8A1EE092574F3D453388649082A1B72E7AFE7ADBA310EFBD38DE6' : true,
'BCEAEC2D8B8C18B58BD320D77850EC38285F419ACA8A9E939DAE7DFDF26696D0' : true,
'BD4309D792EBF40F5962B65405970EC2ACC7ED1109A1F5FEB486C84327FF6D46' : true,
- 'BDBA5D2B222321969181E305768AF27122BFD04307E0DFFD53EFBC1DB9CA8A64' : true,
+ 'BE6E70EB169369668EF9523107E95867B1B9C0320C750180303720B35CF09798' : true,
'BED1A9D1A4414F4D465F04F9D8C8EC331F89388E19419D0371D0D177FA60287C' : true,
- 'BEDF91AB2008A01DA4111518C8065D4BFD9ED614A29CF89A16E94CBCD5F5D17F' : true,
- 'BF2F4E5EBD0C42BFE89080149EB9B69C39E4B342E851FD19B661142ED9E22A66' : true,
'BF7EAFFAA2647F47D816A83ADD1D7579F0CDDA690CBA00F75BC6ABD564987346' : true,
- 'BF9B71E2C87C03CF421733610A1BDAB430C041EB20DB75ADBD9ECB3D342072CA' : true,
'C0144D1B67F2AB403DD08B73E5F1772F050E9713D8F2FD98BE999FCEE51D2792' : true,
'C03976BCBA4A9A4ADD099CE8F878A6DFF9B066179EC7DCF932EC4AA737FE415A' : true,
'C0A561684952AE3CE41432388E1F38C46B9CD607B4E555F46481AD90870CDA8F' : true,
'C0AB8B4E884A20E51AB9325567115F185D18654803E08E2C2C6A4632D7ACC2D0' : true,
- 'C0AF523C6E9B52801FCA62602022547B25D8A107CC7008C67C438E1A093FA69B' : true,
- 'C13F3AFDCA388D73B060F01B5B8AA21C43ABD8CD8D0782E09BE20A6047C090E4' : true,
- 'C15BC43BCD4627C7BA4D1440E73F094195857CB1FD607A18A89F4E7233534C7A' : true,
- 'C1AF26C31745338DD2E13C1BA98A2E643AAA3271CF1FD5B878E93B1DDA2DB868' : true,
+ 'C0CDB9DCBD1FC873712C871C230C327A9E53E6D78FBD0E5CE1ABED5DA0D1C7D2' : true,
+ 'C1EB50953EE0D16410A5DDFD97F5C05060B39F2902807F139EF6B015D0C66729' : true,
'C2118D84846AAB7DE521B0379672EC639CFD745D82E3D504EF68CA723725C5F6' : true,
'C2295D7C0FD4FC4DC7681FAF3CE851F6B416405554781C77FC8212DA169C258D' : true,
- 'C22B9234F0CC03D45F151F16C268A6779A40DA137F658A299EDD16BCF008B61F' : true,
'C2C9A263D5F88D7064870FD13AB8633A10CD97E8281F0ECC49C2C1C3F54327A6' : true,
'C31135D0EE5E0B74D6A39E1FC67E9DB5CEAAE9F1D15338359CE02643C198634F' : true,
- 'C32BFF72D780F8797197CFB17BF48684951537BDE4DE883A5C7ED6D87248B500' : true,
- 'C33B836B0668EB2D7F81B010942ED61B133042FD6B0905822FBE64321166B085' : true,
+ 'C33DB47CE54F64CE33394E20A96D122EFB6F8DAB2584CF26120D8A8C5C380245' : true,
'C34069193CBFC866E03EB745416B50B25BBCAA00B5DE50D1D62D3365749CEDE4' : true,
+ 'C34CDEA10E72069587970C7033095864B6F069B6637C6263A1E7A7A5187923BB' : true,
'C3801A5BC7707426FA083E828435810BE19C86FC9B94E18FD804BB3394459BFA' : true,
'C391E32BB11DD8F6F13BF71E0B9CE225364A50006E3F91147EDE39D2AA6E70E0' : true,
'C3DCE474FB44F22E6497A1FCE2C45DEE167853134C6F1C21C13F1707B0BC7FBC' : true,
+ 'C3DD9BC59973438B62543E24CCB26B2724CC2346B0AE921EEECD064B50AA20F6' : true,
'C40FBDA777FF842501E19D444F8F3EE9B537C0D828537D59FE819AA9F9F3F145' : true,
- 'C4D38111A644ED5CF48E8B1031ED435F990E92D19E028CAC10610D7769435B70' : true,
- 'C4D51A111115A7D06422BBB16B67ECFC73D636DB08551B27596FEB532D8CC2BA' : true,
+ 'C4BDB4AF6E9CEE6017D3FB7ADD286E4B6348088E14D994CF698095DC86C939EB' : true,
+ 'C4F9741D83486FFC06A841624631206EA81F82C5AE32E4A588C0911469989BA6' : true,
'C51ADC8D1B7014B4B9DB3EE230C67BF6F164956C390D41E5F8415977D9D9491E' : true,
- 'C556F96F2C31CCBB3B0CE2244D6EEE0B881F0C8486A75E71ADD0898EDC97BAC2' : true,
'C58563CE93B0DF900E0681376244F32977F577D130320226D3BD9CF82863402E' : true,
'C58F0FF2DF810FAC8EA095F349A2E6D7E0D9C09D6FBE7D45895408530E1C75F4' : true,
'C591A346116A065185360B973A875B0329B48D924E15BE8D4FC4C0B849182732' : true,
- 'C5B2A636DE1FD6629B4BA41FD1693F261F50577130A05366D298F9CD282E4BA7' : true,
- 'C5E4575B4442687C80E6F9F290846CE80217AEE8892B9977C5F455BEBE285EDA' : true,
- 'C69E1305EEEB633DAB5055D952D0A8FFAF35FE57D0E1896A7BB24EE37F29959B' : true,
+ 'C689F3B9238DB156A7D563E76DF45FCA607B4B5F6CD62BDDC1AD1AC720E67952' : true,
+ 'C6B197D2663DD850504C900569A800D914A5C99FD7E0DC7C2424A063B6C42CE5' : true,
+ 'C6F63ACDAA452E008A1DCC711CAD36D00AFE55F958F2CC82A139BB53E27D11EB' : true,
+ 'C7056A5FFEA8A4751271C17CAA9EF3BBDB7142A08ACA673522EDFD9AD18AFE66' : true,
'C71294A0124420512711C918C36F77192D2B45CDF8C99824B4BC862D0B31C3B0' : true,
- 'C740F2746E74D427F5E7AE8B972206961ED756072734DCB0B20BB7E4B41C9719' : true,
'C74B4D9C0A7CB22F6F7B60BD4CEF94A34820E3A0419CA5CCA3CF187612693FAD' : true,
+ 'C77AF2D81D578D009F9859CDEFD2E19A5B3DFA98FCE909C353E235D650DB514F' : true,
+ 'C82AE26EBA1954BC778047DF9684F330C424E9FF778033485305AE0C87E57D68' : true,
+ 'C936FEC68191D7AF75334834906C8CFB18F91FD53BDE7C2F0B2ACF8100ED3855' : true,
'C9462B9099A574DBBB9E2BB9B87C4AEA825DA388EE8153AB74414555420AA6DC' : true,
'C95235BA613C42AEEBE5B2CD04707B323083EF4BAF4B11C633288AAA7CF98AD7' : true,
+ 'C959CD326D9F3AA21FDEDD42A5AF0B7A2FAA5E9B92907654F29F1ACDC691DBE6' : true,
'C9D7767021698AB5CFE3F43AB281F424E1515A52A0868C8752018CB292DE3190' : true,
+ 'C9EF931AE82FA91CC76CEC12A5AE787BD3C081F57D4F70751DBB861B50CF38E2' : true,
'CA157632863D3E7B499F141741724FA84DBA48AEB51B04A53A9D3DFEA7F70BF1' : true,
+ 'CA353A661EFF3C6EA9C66AA7585C19EDCD1C00085C06BB9B0DA2DA78C84D8CB2' : true,
'CA400A13D999554CB3EE03F1F12F7E578ED5C52CBCAF9748124E3402052F921E' : true,
'CA46DA728E76E97AD214DBB6AC9CB1EA2DC87202C88C35E87CE574FC1F2E0438' : true,
+ 'CA529AC5A7489D57CEC2D6BA5881213C5A163409BD6946558DACFE899A977009' : true,
'CA846077B68DCA99AE30BAC33929143E856784B64E70098CBC7FF5BBD85C824B' : true,
'CAAF21212D1AFB10BA4844150A49541967BC1C9879801E43064429A632DFD941' : true,
'CAF98B60B1CE36971AD2DA67A18E72E53345EFCA16382827BD1C2022D009E751' : true,
- 'CB0640669B4F7466C3898A70675F72FC0D7EFF9A4F695168376C171822CB3B50' : true,
'CB133229997821E418467CC3A72F77A7B9E31CC62B41032D6A82577B7AF1C6A2' : true,
- 'CB42AB965E2C1CC7F20BE15F308C2173AE531C532DBBF8A36B292B1E1A891A07' : true,
- 'CB7FF00DBEDF16D72C8A10151A30595AEEEB9A2317D3F44269966624417141F4' : true,
- 'CBC3C62B44E2C35250AB62FB2C3993C55F251559259727D5F76A63002148F17A' : true,
'CC2E477D4A2640BCF70F232C040954DFC4878E536A4B03E788173E673A2D31FD' : true,
+ 'CC8E9439ED527517579A913E8489CA704B4370AE09A823D36431063C53609C82' : true,
'CC99A37B34F4914C3E3B8B8D6236CE0E8F92DC77CEBEB09D50C6004D51C8D4CC' : true,
- 'CCF22774A60FC2F2E182D8E8DC91603CCDB35B7DBB0CDB25B872964E14BC08D1' : true,
'CD35C7ABA0839C0D865DEA4C1DB624F709E5EA041A68DB55842E2C189F38BAC1' : true,
+ 'CD749862756D49A24CD4B4893E78CC255639ABC6B8CF7972729F0A1DE547A050' : true,
'CDB02DBACBAD381EB4F6854E84372DAD1FD76462ACBC26A9DC86164E81E75C85' : true,
+ 'CDE5ABA387C89D3B1CF6E70140F08B323027FF218A941CE31FA979E2295AEDEC' : true,
'CDEA4B65584E4EA2889F73E5907E95849BC6A2CA76B17EAD2B1FC7368193B550' : true,
- 'CE103F6AC25FFE0A12B17CB50E120087E400668441C31DA3CF16233DF3FB2BF4' : true,
- 'CE318D567E77FA3E2B87268B09B1FE99484916CDBC7A56B99900CE7BB7B4F967' : true,
'CED6501D3B06CDB7033EE79351EC3080BBC2993D0991AB91325DFC0550689AA7' : true,
+ 'CEDFCE64CD03E3F512AC1CB6EE68C26F7C48C6753E8708E3A7D5AC867BA3ADC6' : true,
'CF099A3A9DBE3D79F3E420A47A8447A50A2F87ACF2874CA86D49F271B82A68C5' : true,
'CF19B1004488D5D9C882E2C4D0A47789618E0BCD6475F6D9C6B5591C2BF333C9' : true,
- 'D010B9708329342E43370125857DBFD443ABC95CF5778898A7343E5F1C61F4E9' : true,
- 'D026EF8BB9D4FA95C9AD587881660678BA9B4DDE2A5FA5048375CB7DB9A7E189' : true,
+ 'CF44B5D052E8869D4632230291A81F3EBB7F681276D371161609BC23E40C8636' : true,
+ 'CFF31BD8AB9FBB4681C17AA4135E67D402345E32CA8DC9D566537CA530F27B7D' : true,
+ 'D027757FD24E68D7C422C10CFF9ED2401451C58A7B839DA3CA4A3BB3AB155642' : true,
'D03547E78303C9FBD70A38BEAFE87AA9F266A92275D818D1A8758DCB9D08DAE0' : true,
+ 'D07441504C544C3C3374E4314A2FB91266585AE94460B2FBE5CD4292556CA20D' : true,
'D0927B6D60E3441E11D75A8FD593A38665AA7D211F691BDA3D0E815EBE303C25' : true,
- 'D09E683FF2CD4448747E03821EA2DB136B2438716049973F7249ADFF9A47B6AB' : true,
- 'D0ADA8B3F0D09BD13AE5877B5E448C18376D129F92DCF2D4F1BB182725A62D3D' : true,
+ 'D0DA9A42796D063B8246DC549D1CDD1D64B0AEF50E7094F0A29F243B51012DC7' : true,
'D0F94901C782E50EA3A7B7300F6D9A113E45B5DA8944E956CE6629AF9C4C92B2' : true,
'D103ECB2B7F74BEFD44109C1CA30EA92D9016C0F9347F1DF3E5467C3AC20221B' : true,
'D10DFC97304D163140768E2D1698B1A0A3AF8331C4941F928622AB80091A3273' : true,
'D1C4E4D1F014FB8F889F45AFA39485BE742F64268C662BB28494855E393ADE96' : true,
+ 'D207EED2218BA7CF564AD049677741A526B9ECB5BBB23CAF2B817A3B0085F004' : true,
'D277E65331EFA2A6668143F8BC5334AF870208332990F977BD7F3588689F4686' : true,
'D2785F7C48F180342D70978EEABFFC424D33A495A07D04F32C08B771BC4E43A4' : true,
- 'D2AA95120A7143F1A538E436913FB0A6821237C395D6E92209521474BE853F7C' : true,
- 'D4235BDC37DF13A8A1A7409AD8E30701ECB52A301ACE318C7E7BB29827C28D00' : true,
+ 'D39BD0C1656F99A47DA9D2957E2D7A49FC9EDD92CC6BE729C29299ECECFC42E7' : true,
'D44D1A7D80BD2F9B4A62E11BFEBBB74A5780B0366CB6038CEC9FBC8C8E19439A' : true,
'D44DF644880E56596405F1364D8C3E5301F05ACBF82FD66B671D895288C75360' : true,
- 'D458A70A33B17274523F6DA8CDDEFAE050A6F3D28742D56819433E2828B0DD0E' : true,
'D462D57028E10CB7A7C87ADA83EBD7FE9B4DA384D2971BD7A708816C4EA8711F' : true,
- 'D4FE88430F095617D597D87C0349051B5253DBFC56193B886610EF9D598B2859' : true,
- 'D5E0264EE9C1EA80204E5A9AC71FA74BD5558C56B88CCA08261DD46CBE3572BA' : true,
+ 'D46D29E4176A93E3DCD80BA5861A87E84FB7866B784488A977E7E4E4076DD2BD' : true,
+ 'D5846E29C203E6EAFF8D474085653A1F9E2E123C4E9E8C1172D1CB62474789E4' : true,
'D5EDEAF240AD74C81017160821DE0FF6470839A2F8AB998D84E7392E90280D0D' : true,
+ 'D60AFE53C8CF92DC2D9E8DD1E4003246A16A692A1F619426CE43EEE621319BCE' : true,
'D652650A3DE79A5C0DFEC1925007DA094925533D13F14094722A80F936FC9A8B' : true,
- 'D6ADFC439E8E9FAD7C281DF1117E0030BAE78D15E481B7886F54E72DB7DD352A' : true,
- 'D6C23AFF401FEE45E3F8A6BE314E4806D9BC3948BBD098398AD80A8A6B5A2047' : true,
+ 'D66B21D30F1CC1126A28B6349514DC6191F27FF727857D2EB2CAA9315AD46D5C' : true,
'D70BD006F4686795C1CF5435E8557D75BEECA1C5B96DE9D673A5B78E6BF95AED' : true,
'D7198C80471105D95103DB11B6BD2F6CDC8E7A7E67DB8329F1FA75C5F5D5E8CE' : true,
- 'D737A5AE5F875A566A4ED4CB025D07D076998270F0D25292661B4CD581B0805C' : true,
'D7632272521683A38E88A18C2CC6AED79B2C5E854483BDB6EE83D82BF41B96CA' : true,
+ 'D780EB94814F0CE1AD1A2F8A1EFD6170C019F0B446E726C7C874C0730E59FF1C' : true,
'D78220C9BDCD563F71BD8139B40A495879DAE9FB1968AE3225BD0D04DAF294BF' : true,
- 'D7C07ECDD86FDF501FF3748090EC6BEF25C84096DCC6C122A7CB0DCCDF0A4E08' : true,
+ 'D844DEE1597B654C0E645C787DB52F6EA5C855C6C35626BD7787E71E873CAF8F' : true,
'D84CEE3A2993F9D7CA56C6C4B3ED9D4325A3542BAEABFFCB54C4E8F1CFCEFE42' : true,
'D86562629BA86C435C0965C4AC302160729F27804FEBA36E211F96CDEFB5DF8E' : true,
'D8AA8D8A7A48ACCB4C1B7E6C2228B7BFBC297EAFAB1315643744E3EE4DFA7E6C' : true,
'D8B8F53177C1E04D93746C8460A7296707654094814772BFAD31F79C03802240' : true,
- 'D8DBF6D7BA17FD56A54C87186E72E2779EAB3909145E6DAE1F4336C9CF3A9A9C' : true,
- 'D9065B6D9F7F27507D51170FB465FA6250DF528EC38BB46DAD0311C1DF63ACA1' : true,
'D91860DEFC109C7BEF5B4DA289D60CAA0EE1CA53D6D6675C1490315DE592FF7C' : true,
- 'D9259A35701E881FD41A9939C4AB82EDAA83A18D1ABCBBBF8329FC6850A0C6DD' : true,
+ 'D92D8ADE198EFC2EE43DCDF43C0433CB6B443F71A7AC083FB5C8DF1517007A36' : true,
'D92F41BE3DC8903580641073E0220C9B95B803B278C98E81DFF148386017BE36' : true,
- 'D94290750677E2B5ECE7C2DC41AD4618C6995F173EC44DF80B23CC0E333EA654' : true,
+ 'D96A581F03F6CAB11702CA28C088D4B71AD8B1CA6C3EFCDD66F5600EE11DA8FB' : true,
'D9FDB29EF83808BC82A97839FB2F22C2D20DAB2E6B67BF5862C8922BB1FA9068' : true,
+ 'DA0D9391992825F7A10312F7E85568086F18DB901838A303E721E58239158EA0' : true,
'DA29D8725034D89C221F415CC5282F82A6502E1EAF416DFA41507BC662C90258' : true,
'DA5D20F1A6CF6CEC3AA7028A6E17D8F2E1A60069E497758B0CC938C08F4E76BC' : true,
'DA70536D31A4E949872D4E19BC8F111801425FEC6C955A5637D8B413D3C0DF0E' : true,
'DAA384D0D2A94A18A14E3DDF7A963E59BE41C06B978F3DC8862E1EE6C8E76DD0' : true,
- 'DADD1B4DC65D1DE3D13B18DEA58D61BA3449CE45E1C5176509B8A3B197A09618' : true,
+ 'DAA9CED5BA817CED9942DB9CFAD0210505937A9DB2214298E0BEB831BFC8A31B' : true,
+ 'DAFB1BB231A0D93B70726F2D3D8D8C8C54EFFCD901BB415C7A85AF02D09AA2A4' : true,
+ 'DB18AF241CF4C262D080396F58EE892725C7FBD138DCD6FC8C995B647588AFAE' : true,
'DB301590A7DE580916559C6DE948B95A3F7FC50A7AB8678BC365595A4DCE4E4B' : true,
'DB7B1361B066EC2F777AE104F88A846DC163200AEB05B47D5BFEC91B6F13AC53' : true,
'DB8FEDEB510592FE37561120F9D27479A5E23FD1F77E6CAF662548F361739971' : true,
@@ -878,30 +861,35 @@ const X509ChainWhitelist = {
'DB995D854C4EDEF4DB5CCF20B2B30719056F3EDAA0CCF4B9D9C5C898407C5C7A' : true,
'DBB0C3CC436B5E592960BE7E8836AE58D8D632D435365ED2EA3CFAA86681E272' : true,
'DBBF2D4498ED91C779C81FED5E96F9B5210CE86EA463712268BCAF098FE2E285' : true,
+ 'DC8D710118FF258F27ED436F585756252FDB30F42DBB58B23B8CD3B2140E13B8' : true,
'DCA17501D12F98C84EE99DF4BC8EFC1FFFA9B65E2BC5A92B20C9296EC61C96CA' : true,
'DCC87ABAA2524536C43A280BC52710BF117E56EBB39444873F93AEF18519A502' : true,
+ 'DCDE97B03688D8CB9F603AEF4D97110A38679F8EE01975E4B0B55855E4A8DD05' : true,
+ 'DCF33FB3953551E4B5F06060A7EC211432C30FEF86FA7B45EE76A8F9F3473C86' : true,
'DD55F1E1BEBA4CF9F582CBEEF4A35E1C1DE36750A3403489C1C98955FCE9950E' : true,
'DD64C7D9E60AE6748B449ACE8CF9C21B5551BC6427EDDCE1D77B7C7720FD21E4' : true,
+ 'DE327172F9BCDA3DBD4E6EEFC759F3EE88FBC635BAD34D76E360541420CDC8BC' : true,
+ 'DE411E4537133A4D436E0D730AE192277792AA1D0584E60B1CECCDC736F53407' : true,
'DEA472B5BED8DA9F6F5539F8DC66FB5340010F7316FB28055E14EA76E03BBE41' : true,
'DEC7DC8AB8ED70C1D2FB2875F0F99FA99FB53E6BED70CD47B244ABA2104DA5AD' : true,
+ 'DEF20D4F0C0D98AE8C9786C364182CCD8990A834C96C1F0989AAE9ECAF33720F' : true,
+ 'DF0525A7807F3709BAD2DEC2ECC569A1D473F97F0C382C932DF726C79926DA0E' : true,
'DF4482289B54CB444569A5436AEEBEBFB348D966D2FBC8C5115376F3E5496303' : true,
- 'DF48A1B12B4FEF15173CE6D9C335F53812697E284CC543659ED191CB8FF7C4C1' : true,
+ 'DF533C33DB800394971D608B89269426D3A2F58B76F190229C0573985E4F7CB8' : true,
+ 'DF7FBA4917800A850600F3E7BD4DD0A717F2649060B300F5AF3B1F490BD26536' : true,
+ 'DF905F5C4134B23862761FF69686B4E9C599F8F6D936E1C80695B652392E9E9A' : true,
'DF919779EC325DF19EE7186EC1AF526079C1D1552B18AA52004EF01F618266EB' : true,
- 'DFE4E78B61DC430DF046F3010B8D66E99A1368BFB8BDBD94E1F4040547B94711' : true,
+ 'DFE29EDC6A77622D4963EAF8CEEAD0ED5DE393DD069425FE30175AD008D609DE' : true,
+ 'E01A5251FAC16C537237EE4249874187E3BE3AF9B0F1D472E6C69E6C8B8832ED' : true,
'E09CD94E0A501BB4D25D5BBB02CCAE95A24D0BAF8CABADEC9D55A74B7D2C5BD8' : true,
- 'E0BD7FDC3544BBBF78F401148ADE378A4A85214C0469EDD5EC23C5246A6F5555' : true,
- 'E10D124813FCB900A0A0BD8A5233699A70878DEF68E02254A435C10A40E99126' : true,
+ 'E0D7FA4702E25E7F51F94DD0D12C39A352DF48DE10A5249AE2687CBC15020CB3' : true,
'E1117A0AB7E1A80334C1C56891A4306CB553C100424773BB0F10C7574CF44ED5' : true,
'E1176E46C4FA7841D94FC724013E3D192E7B414933F92CD50EA36C51617A2C60' : true,
'E1595A9AA15B24610100AEB57ED619460CA1D976B769B856398EADA5A01F952B' : true,
- 'E167DDCC9751B8D52E11AF866AB17BF70712E5E4566D28A338943A002F296170' : true,
'E17C4A5B0845135AEAE094BDCB314E32E76AF63A3BB51DFF4E47F83D8ACF972B' : true,
'E1A55E7ABA746B4A053359D13C91DCD7415F2CEECB7E87292DFD697213986946' : true,
'E1A583C63BCEBAC1136939B65CBD0E6DBD7493EA45910275D56E0E2DE209D2BF' : true,
'E1C97EFF3C246073604F341DBB3CEC9683EB6692463D85C1D23FA5269D9F3FFD' : true,
- 'E1CDA1DA8476FC0217216839241F46DBA8F28F2FB9C3D1055C67BC27392C16AA' : true,
- 'E1F4B82F2DBDFD7F3F8DABEFC42534F75D619536ECB031B07D2E16928C7B9C2D' : true,
- 'E25454E967CE89CBD0F51AC02466D60FC091BDDD9CBD3093ABD027B0AC4E8174' : true,
'E26F4C34273553354334DC7A22DC56A781F2491181799287CC91F12871FEB50D' : true,
'E276DC254DCFC8C0F2752221EE5D59EC0C86E714522A6600DB67A05E22E01740' : true,
'E27966B8B9C67C751F9AB8315D0BD1CEE334D96A8C5F60C764070EF8B8FCE61A' : true,
@@ -909,99 +897,111 @@ const X509ChainWhitelist = {
'E2D55EAADCF87AD1BD50E53B7168CCC08561F0172004C1EC4DC13D8166D1A313' : true,
'E2D7EAAB6CC0961BE4E734BC1FEA960CB147DFD5A08F789506BB671A4360AC36' : true,
'E2FC1229FE0EDF06A3706DB8DBD2344B61A9364840A3E61E6B29CE49A966AC8F' : true,
- 'E315468836F77DF6AA146AF392C5DB7262A83AA83FD7CD75771C70D29C3F16CB' : true,
+ 'E30234ADF36D445F582C956B26E63BB76FF13FE90048CE1F37B40285BAE6529D' : true,
+ 'E32ECC9EEA662085C10C003A5C910D77A6DCC1E99BD187576EFDD1BFA84591C4' : true,
+ 'E37314E72C7304D32336940ABB576DBD7BE3190CD9A5E8F87413CEEB7579D502' : true,
'E381DF6792973BFE322D23C6CF2A6C24A4ECFC77F43F03D2FC04EE39FAD7C683' : true,
'E44515377AA3F7C1DC61E3A5C1F4C8FF52EC95BACDDAE1661B151E7700BEC1A9' : true,
- 'E4BFBB2145DD6ED2B6FF2F8AD9BA6FCDA28881C9C7759E7AFF8D7ECD3AA4A918' : true,
+ 'E469E3D28BF6AB0280F989BA50C11FF4D9EE608BAD2282219A5C4E60C0AD348E' : true,
+ 'E4D680D0579075DCA20740BD4EF6AA4CEFD5542727071005774421A247941B8D' : true,
'E4F069C24D7162E3C94AB295EA33C8926BDDF79934CA28D8982A35650EB60B05' : true,
- 'E55FA35D313C38E689C65DD1304F73E6496C8E858A920F806B4C6DE5932112E7' : true,
- 'E673C6FF553AEA5DC2634A1CD6B1A267F3FFD7C4E05675EE3F968BED0474DAA5' : true,
- 'E68C4E54088AD4A308EC6053041A4A8B04A213347BAE2CE86D3F1587B1518981' : true,
+ 'E58CAB82E1F46C8DCFDB1387ECDCF227F1AF7FA9DDB14C71E4A035B028E2B34C' : true,
'E692108B3683F3C6362DF92476D62BAE60687035B70B9119F962190C9C215B04' : true,
'E6EB9DC7D407B4A2F308B4822E5BEA7428CD4520C59934214831D61E95F2BA34' : true,
'E72F9E7FF5A9E38975B19EE6627020754197E91E3EC6C8E75C3182CF7E877725' : true,
+ 'E7EB8B4D5DE598BED2B9C817AB7D42F1EC99F16640B8C673AF2152D42F5344C4' : true,
'E7F4465713E093B4F7D970C89ED3A5E745457B80A974523648F07C6AAFCDC86C' : true,
- 'E88FB97DCE48FF83773892EA82CE8FC49E627BE0858447223FF8CDE3E4F9695E' : true,
- 'E8E49340125C6938D1BBFB9A33A1682F798B93FA9A4B3BF017817D8F67375E46' : true,
- 'EA2EB705F504DC02357752B938BFA28F78AFD90E99775402FFF0723D61F63142' : true,
'EA64F2625FAFE2EC122B493D4754C2B090153F167213AB6F07A87C1D993E5292' : true,
+ 'EA7AD4DE86B47BEC726BFE21172676F92E0C0BB86888417916CB3123086E84A1' : true,
+ 'EAA0454F2BBEED65A2FC7AAB8F308982387BDF33E6B56A1F3203F70F2981083A' : true,
'EB11019A7642C75F4DDC1DC9CF3B469BFB4C44B71C615693C73175F16DCA036C' : true,
'EB17EADBF0EA09B71BADD853CED1E5170C3A2D9FDE4F5C4A0EEC93E44C4B442C' : true,
'EB59182D7ACE742ED7D7AEE751763EF9F09EDF68D1DDF765E80BE40A53AD0E10' : true,
- 'EB5F60FED8FCE35455A15B9A8E9E200FCF1B8B5B278D1511C8C5EE67BD99FB46' : true,
+ 'EB6D34EFBF063DCACDFB823734B9788D9FB5E22A48372B7EA8AAFED8046652E1' : true,
'EBABE928B643E1B9FD6F61D67ACC4BA6A9BFCC95927D31D265F701AC4613B9AE' : true,
'EBD2581C1B0224FBDA489A642503CF3D3306751C336A66EB1816989900DA52BE' : true,
'EC521C3B04AF772AF812B63555A7C24BDA282C06EC619E1766CC346780EC6E04' : true,
'EC869ABCCE3A1C036F1AFABE5ECD4FDA581D16C0E81E16A2734E6004A55896BC' : true,
- 'ECA4B72D4C90C2889F21F4084AE4CB53F5B8EA5D147529B0CF72D3A9093532B4' : true,
- 'ECC55876CB43E4B541B0EA1B520BF600906402965BDC14274B755201B1C082D4' : true,
+ 'ECB0646FEF13F818B1ACD2A8AFE448F3B39EC0EF6F623175931C48DC386EAF73' : true,
+ 'ED5F00A17FCDDF01EF8531F5E1AD52C8F02F539C7B985A7C30EC87096AC8E59E' : true,
'ED918BDFDFCB9E4E679BC7C1938F9CE412AA85500BA3531FC550AD5213D5BDC7' : true,
- 'EDEEFEA60ECD1F9063448654B3D1285B8D340B4AAE455A26C34AF221F6F96F85' : true,
- 'EE50A264F1CEBDDA348E99246DF80A8D36314776472BD98E635118FD907D4C53' : true,
+ 'EDD929C40001C1ACDABD51797B63D689A0B80434FA323B4F7AD213AB8A530B8C' : true,
'EE5B8C42532363A48222B1493803B14EC2C98366CD0C5BA4126F468BA19C559D' : true,
'EE5D710097EAD11639F98940D1F32793ECC114F0408856CCB6536F1EF2366704' : true,
'EF0EE2FBF54D87B6AC02AEB88050155A27E1A60A5A8C4AC46FF24B529D912B04' : true,
- 'EF86E05D6C01A6084BA32BB5D44AAA081679205458A69E026062B867A307DCED' : true,
- 'EFD281FD58EE9DC3E767DD501182FC407CE28C5D2AF4B77952058467A98F266E' : true,
- 'F03DBB05C206FF0B519A7F5DB0652D73E5C856E21CE04FBB01DD8279183EB3C6' : true,
- 'F055D488944F4779BE3F17FBEAD728843701CE6598D01286AA1D525F26AEDAAB' : true,
'F09ECA7EC8BF7B582C42AEB4A0733A0D40FDFD28CEA2C70DA1BBCF1FF85E29FF' : true,
- 'F0A9E452CB90B0B6C50FB794AAE7ECBF5E56801A10124C95292B28592FA9B003' : true,
'F0BF33EE5C1D9A83A7BBDCDE95426DCD201D1C071CF1FB58CA4FE3776996A99F' : true,
'F0ED1008EDCD8A396F4C8FCE334210E629FBCECC19AF7416C901F6E4D30DFE45' : true,
'F0EDB0C989C20672BAFC51FA2710F3841BA5793BE379FC212D7ACC3AD4743455' : true,
- 'F0FDB17968F2A55E8D76E0E0F8512A0668DC6DB48C5C31AF7CD1D453418A304E' : true,
+ 'F1147FBF98A54E12693453EC571CE8B86C05D7FDF3995D775DFF135E10B9C520' : true,
+ 'F11BB294EAD89BC4AAB21DD82BA85FFA6573215720E347D687D6D5D89EE33EEF' : true,
+ 'F14532D01FD04640E9B009CCE5791EC4D11FA2979A4ED0978C234DAB8A8A2B24' : true,
'F153813F6CD126543E985CEFA06C8B978FE5D4825C189F58944DC0DE17D5A0E9' : true,
+ 'F15E12419E936A907F201FD9D6D3DE2E01E5F8465AC4D8EDDCE1E58262183223' : true,
+ 'F186AF5F155D63950BB5C05BFECA1273A93DD1DAE796E4FF71AE1DAB791CD327' : true,
'F18F115FE36E41A293BB1CA29875EFC7004D06144908713DD45305DAAE634687' : true,
'F205928C933AFF1F1A6411AB779CFAE3FAAF43754AB86735DB52F74DB1DA81D2' : true,
+ 'F20CBF1FC073F7E7DEBC38DFE2042E2CDC5D82898773D6283C680A3BC966BC02' : true,
'F22F96FB88C9D96104167D95B3AD8B5888C92680B0AD13DC785FD5AD3E19EDB7' : true,
+ 'F234FBFD807A0302CBF855175C73ABF27C94915B95135E3146C0ED73662DE3F5' : true,
'F28C56AA368BC4F8DA6B77CF3F8D2A7EF4994BBDE7DF85AA40FF740DC004750B' : true,
'F2C91876EDB36EAD7E4821C2A6581144F1E5A67B2DEF4A5E4AFDF79F5E1CC4D7' : true,
- 'F319741878D155ED3E5DD4955A82B842700A64D86AB782B511F0CB9B25C48AFA' : true,
+ 'F32ABEBBCFF1BE566CCDFCEC49D7D589FED08B97E855A11466D1734244449841' : true,
+ 'F34151DCAD82DAF64C6A0674042BF618A93CA92F6A2CC66EB95D04B7099B20F3' : true,
'F35B7EB206DBF6A634A74B51611528984798BC06AF8882D899274B4461A55D3E' : true,
- 'F3F90821BD1454FC7AC92F768D2C9F75B5CD79FF4DD3251F4B9D647D34024F73' : true,
+ 'F35B9D7C54418022E6FD4FDFE88C3261FD138329A11C013AD640145D40BE934A' : true,
+ 'F3CA880E8CF918E29D956A8306A2A0EB9CF76E82135F60A9885033E22B7874E8' : true,
+ 'F3D480D69675A57DC2061544BF7F52B631BB02716680C0E5605413C9B2A6183F' : true,
'F402A9D58A73C40B396B5CE756EDFCA68257AC6D8DE80AA8217F16C97512C51B' : true,
'F44731EEA5EB2ECD106E24F6BFB87505E09A46EEB921DAAF2351782C5EE13EAB' : true,
- 'F47CA7623AEE6A1849B4F3F90818A93AA937A0EFA65D6674EA769BD7EC113BF8' : true,
- 'F5031A8F2CCA65BBFFB748E0725748598260A0EF405B425CC088708A8CD90904' : true,
+ 'F49BADFFBB2D2836A995A12E44ECF62E584F1B8D0740E0EDC7610C0C6765CDAA' : true,
+ 'F4CF11FF85427F37B1546E4E840E6E3BC213A798F6912C841863BA2D99D9ED85' : true,
'F513DC8D7F8B425FCF55E74BDCF2675EF2ABF98523E5226CF8A2391B0A36A919' : true,
'F55617B92584757BB516B19BFCBDA9B4A71237075487651831CD9C5F9C6F5F29' : true,
'F5B19B2D5D880A4C1ADECA3D760FCB7E75FC2137B2EC99F3EEE034ADF788BADB' : true,
- 'F5BFCF3F0C412BE080045E81BCB8C76DAD67B9B689FE4CFADC97353340805239' : true,
- 'F5C866D6380495A667BE16DD7EB1E8C53DBB9B285DD895010983E075E5CDE26D' : true,
+ 'F5D715B6BE56D1A677ECBF7C26B4D79716F5EC2D2E2EC323ABDFE3442F40BD31' : true,
'F5E43F516D61A0329F78A2560454B8346732A9420C172AC9983C0BEFFD8DEA0A' : true,
'F5FAC17F4DDD973352CBCD311E21AE81EEFA06150CE85B8C32126D7F1661EDA0' : true,
- 'F66ABF80914FBDBE53F794409F4E0DC895129066609E8B491506FCE246A2EEB8' : true,
+ 'F605AA2BD611765748A88F933BCBCEC70272F6C6A1A4AC614C2D02D17DAC6CEC' : true,
+ 'F6620F848AB3CFC1695D2AF5399FD8FDD8F2FEC43F73F2924DF78C1A26C22653' : true,
+ 'F69724886C30730DEC09A32E2BE002216EE35A06ECC2E951390A2C429B293A8A' : true,
'F6B9B7A36ADF7095D44420CCDCE4A739926841BC695ED40E78856D8F71D41257' : true,
'F74D9E23F4CB53775CA60178347F2A029F77579000B21AA08EC62A1C2932348A' : true,
'F754352E819D0C33E6CFC06EECBB4356DB5D8BD1FD2591C7C817CCE662BE2BC4' : true,
'F7FC63254BF2472575C6D5DEC8DDF02B24B6F1BDCE03D807B159A69820262D4A' : true,
'F805AE1FEDB2D94096F0D341B703ECD4975D773A179555DDC83D424F85578571' : true,
'F8237FCE3E7C9B2BE3592C0864ADEF9BA4A6FC3558E172E79DE6B025A755703A' : true,
- 'F83ED95988A56C7DD7E25C4A87D1171799D1B1C4CCF9B7D13576ECE69185FC45' : true,
- 'F8E91522215919A838569EE9C6343F38D3A6550DFBF23C2F65D7CC4A3C213706' : true,
- 'F93DFDCD3D4B36EBAEB7F9B60EA79C282843F787322389F1D8930C13D6FC3E6C' : true,
'F94C306978496ED2183DC7591DA0240B513527293E5D522CF7089530E4C58D29' : true,
+ 'F961BA44302F5AF5DC4045A7E3989D4B77AD4BDD53DE92A45F39FE56947293BF' : true,
'F9C9461AA83C154828777B8ED854A682D912463599CEC65AB54C6B919A47713F' : true,
'F9E220AC82D672997DC20E9EE89BF0713BC4153FB5F2EBC8D9AC9EE35A6E494D' : true,
- 'FA10A4C9FFB378EF6552D4DED030E100C130FC1781E1346975C5DBBF358C8197' : true,
'FA14D235A95650A4CFD7A2A4DD80BAF2AF47581E01E412D640F93D6BB79D1C06' : true,
+ 'FA1B8F32DE3B7F4ACA8FEF5414B5D985FE3705D0E3371D4FE4AF46698B68B01B' : true,
+ 'FA500D7B8D9BED2323488F83C9A6093C012143DEE3E453C1F75738625571E708' : true,
'FA616BE68A75F14CA6331BD5BFDBE3840CE34CC3C3C98E3C8C3E10F027389F2F' : true,
+ 'FA75601E87823F0B02F8764B29377F4EBB02A179051297597E93FB4B1F5FCAD5' : true,
+ 'FB067C05D337FC01FC0721FA712A9E1A4FFDE059A35F3B494D36FFE241107465' : true,
+ 'FB1DF67EE132C7163167839175485C179E82024AD59EF806AF9D968A97F2ACA2' : true,
+ 'FB3A5B27D3488E28ABA3F303A726C2F0440133025981816FEDF798E45B9B1751' : true,
+ 'FB52A9B5EB7A494C06FB5CE4BB4505F32D6C666931AF2A018E6066244802A00D' : true,
'FB7EF701469F77B6412100BB2D6399B1A574BB9610186FFFCC0119E14CB2021F' : true,
'FB81BF294DB8EDE0C4DFFB7F5528EB3EB406FE435A6D62E6894482D8B42CCC48' : true,
'FBCC79E05CC135E183F4963C2A206F9DFDBC2DD0D379A743D5FB301741796921' : true,
+ 'FBF769E6019DEA2724DB5768974B5D32E8A91F8045707B4F50552FE1D3BEAE4E' : true,
'FC072A7AD4E6E41680493AF4BEB98215D4D2F7CE040C95004BB3A1621A9DD513' : true,
+ 'FC2B9FC5D6843065426D6D1E1F7EEC08D92A6569953AAC9F6273BFCA6E6D27B7' : true,
'FCA9C3A036EA797D58CA26F793C98A9952E59D37C35E352B67A30D4F8F49FC7D' : true,
+ 'FCABE5BABEB2D2785BBA66B5D465FAF9F9A8E74E77AC1161273F49F4261F17B3' : true,
+ 'FCC12514DEB82E09AFF7A8B73DAC3CF80683D447101F048804D0B1100169D87E' : true,
'FCF4BA663F0032118EADF9D327B65AB502C7A8B336462A397238884E9A28508E' : true,
- 'FCFF937538A3D0D58C960F3A31B1342206810C76EFE47709B22D166917520D07' : true,
'FDB416F216D943190D8CADA2EB8F138F77A99CB1BC1334246697D37D8C04AB38' : true,
'FE3360CC5F8AFA4C464A7FE90DE7FAE9462859FDADB9F2590171CE6081EB616E' : true,
- 'FE5FE30C36F551F3EB36DA17E98F19E58F68EF5555F3F2630F699162DAC271F6' : true,
+ 'FE4A5357D197340536C61A1493D6EB64732D628B4435BCF43A1D52BCC5BF4CFD' : true,
'FE739A748FB17DAFB6CBA0DA5B2164B8E0435E8DA7FB85E7970BBE731B428631' : true,
- 'FEB92F19B7394B8BF0FF71AEFD233E262AB656BDD531AD89FBEB9228C5378301' : true,
- 'FEE5D5CF3F51FDBCD24D5D4E9BA06AFB96BFB558CB5D4249C70066749EEA8FBA' : true,
+ 'FEE9BBCB25431C59C14C72C963CEDF437D795B6BEFE79EBF262B7054B0E583A1' : true,
'FEFEF80071B0D8E2B57D6601BB353A435A425EAA701827370C3585CE09F2CE50' : true,
'FF3E77DFF8C24FE2DC89CE8757B6AE9ACBB838D35AEBDBD9A29D099E211380BB' : true,
'FF73EF3C41BC0CC04D28987004C7CC1C52B222AE6FE463A34E9E3C483EE731E8' : true,
'FFAE947BA6D3D7E8D31D04F02EEEE60601B0200ACDEBCB12AA5D617F650D5FD0' : true,
+ 'FFFB09720CCEF3A610BCB81EEF5FCD614C1602D4968A9DE8400C05256AEDC1ED' : true,
} ;
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/commonOCSP.json b/data/extensions/https-everywhere@eff.org/chrome/content/code/commonOCSP.json
new file mode 100644
index 0000000..106916d
--- /dev/null
+++ b/data/extensions/https-everywhere@eff.org/chrome/content/code/commonOCSP.json
@@ -0,0 +1,289 @@
+[
+"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/data/extensions/https-everywhere@eff.org/chrome/content/fetch-source.js b/data/extensions/https-everywhere@eff.org/chrome/content/fetch-source.js
index 0ae2d05..80c32c4 100644
--- a/data/extensions/https-everywhere@eff.org/chrome/content/fetch-source.js
+++ b/data/extensions/https-everywhere@eff.org/chrome/content/fetch-source.js
@@ -150,12 +150,12 @@ httpsEverywhere.fetchSource = {
// TODO: Test resizing on mulitple platforms
// adjust window resizing
-window.onresize = function() {
+window.addEventListener("resize", function() {
var textBox = document.getElementById("source-text");
// TODO: Move to constants
textBox.width = window.innerWidth - 100;
textBox.height = window.innerHeight - 150;
-};
+}, false);
// hook event for init
window.addEventListener("load", httpsEverywhere.fetchSource.init, false);
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/observatory-preferences.xul b/data/extensions/https-everywhere@eff.org/chrome/content/observatory-preferences.xul
index 96102d0..e686107 100644
--- a/data/extensions/https-everywhere@eff.org/chrome/content/observatory-preferences.xul
+++ b/data/extensions/https-everywhere@eff.org/chrome/content/observatory-preferences.xul
@@ -34,6 +34,7 @@
<command id="use-obs-nonanon" oncommand="set_obs_anon(false)" />
<command id="toggle-alt-roots" oncommand="toggle_alt_roots()" />
<command id="toggle-send-asn" oncommand="toggle_send_asn()" />
+ <command id="toggle-show-cert-warning" oncommand="toggle_show_cert_warning()" />
<command id="toggle-priv-dns" oncommand="toggle_priv_dns()" />
<command id="toggle-self-signed" oncommand="toggle_self_signed()" />
</commandset>
@@ -58,6 +59,13 @@
<checkbox label="&ssl-observatory.prefs.asn;" id="send-asn"
tooltip="asn-tip" class="ssl-obs-conf"
command="toggle-send-asn"/>
+ <separator class="thin"/>
+ <tooltip id="cert-warning-tip" noautohide="true">
+ <label>&ssl-observatory.prefs.show_cert_warning_tooltip;</label>
+ </tooltip>
+ <checkbox label="&ssl-observatory.prefs.show_cert_warning;" id="show-cert-warning"
+ tooltip="cert-warning-tip" class="ssl-obs-conf"
+ command="toggle-show-cert-warning"/>
<spacer flex="2" />
<hbox>
<spacer flex="1" />
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/observatory-xul.js b/data/extensions/https-everywhere@eff.org/chrome/content/observatory-xul.js
index df5e623..1d9169e 100644
--- a/data/extensions/https-everywhere@eff.org/chrome/content/observatory-xul.js
+++ b/data/extensions/https-everywhere@eff.org/chrome/content/observatory-xul.js
@@ -27,6 +27,8 @@ function observatory_prefs_init(doc) {
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");
@@ -137,6 +139,11 @@ function toggle_send_asn() {
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);
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/preferences.js b/data/extensions/https-everywhere@eff.org/chrome/content/preferences.js
index 557b335..4a61f0a 100644
--- a/data/extensions/https-everywhere@eff.org/chrome/content/preferences.js
+++ b/data/extensions/https-everywhere@eff.org/chrome/content/preferences.js
@@ -149,8 +149,17 @@ function compareRules(a, b, col) {
function https_prefs_init(doc) {
var st = document.getElementById('sites_tree');
+ // Note: It takes several seconds to load all the rulesets, during which time
+ // Firefox is unresponsive. There are too many rulesets to reasonably browse
+ // in this view anyhow. Should start with an empty window and only show
+ // rulesets that match a search term the user types in.
https_everywhere.https_rules.loadAllRulesets();
rulesets = Array.slice(https_everywhere.https_rules.rulesets);
+ // Sort the rulesets by name to avoid revealing which subset of rulesets has
+ // been visited, per https://trac.torproject.org/projects/tor/ticket/11655.
+ rulesets.sort(function(a, b) {
+ return a.name < b.name ? -1 : 1;
+ });
// GLOBAL VARIABLE!
treeView = {
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/preferences.xul b/data/extensions/https-everywhere@eff.org/chrome/content/preferences.xul
index ebde85b..da722b3 100644
--- a/data/extensions/https-everywhere@eff.org/chrome/content/preferences.xul
+++ b/data/extensions/https-everywhere@eff.org/chrome/content/preferences.xul
@@ -57,6 +57,6 @@
style="color: blue; cursor:hand; text-decoration:underline;"
onmouseover="event.target.style.cursor='pointer'"
onmouseout="event.target.style.cursor='default'"
- onclick="window_opener('https://eff.org/https-everywhere/rulesets')"/>.
+ onclick="window_opener('https://www.eff.org/https-everywhere/rulesets')"/>.
</vbox>
</dialog>
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/rules/00README b/data/extensions/https-everywhere@eff.org/chrome/content/rules/00README
deleted file mode 100644
index fcd8a77..0000000
--- a/data/extensions/https-everywhere@eff.org/chrome/content/rules/00README
+++ /dev/null
@@ -1,17 +0,0 @@
-<!--
-This directory contains web site rewriting rules for the
-HTTPS Everywhere software, available from
-https://www.eff.org/https-everywhere
-
-These rules were contributed to the project by users and aim to
-enable routine secure access to as many different web sites as
-possible. They are automatically installed together with the
-HTTPS Everywhere software. The presence of these rules does not
-mean that an HTTPS Everywhere user accessed, or intended to
-access, any particular web site.
-
-For information about how to create additional HTTPS Everywhere
-rewriting rules to add support for new sites, please see
-
-https://www.eff.org/https-everywhere/rulesets
--->
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests.js b/data/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests.js
index 6c373e2..f4eda10 100644
--- a/data/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests.js
+++ b/data/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests.js
@@ -25,7 +25,6 @@ function openStatus() {
gBrowser.selectedTab = statusTab;
}
-
// FIXME use a class rather than global state
var left_star = new RegExp(/^\*\./); // *.example.com
var accepted_test_targets = {}
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/toolbar_button.js b/data/extensions/https-everywhere@eff.org/chrome/content/toolbar_button.js
index 740e51f..96b63d7 100644
--- a/data/extensions/https-everywhere@eff.org/chrome/content/toolbar_button.js
+++ b/data/extensions/https-everywhere@eff.org/chrome/content/toolbar_button.js
@@ -3,7 +3,11 @@ window.addEventListener("load", function load(event) {
// need to wrap migratePreferences in another callback so that notification
// always displays on browser restart
window.removeEventListener("load", load, false);
- gBrowser.addEventListener("DOMContentLoaded", migratePreferences, true);
+ if (gBrowser) {
+ gBrowser.addEventListener("DOMContentLoaded",
+ migratePreferences.bind(null, gBrowser),
+ true);
+ }
}, false);
const CI = Components.interfaces;
@@ -61,39 +65,54 @@ httpsEverywhere.toolbarButton = {
// make sure the checkbox for showing counter is properly set
var showCounter = tb.shouldShowCounter();
var counterItem = document.getElementById('https-everywhere-counter-item');
- counterItem.setAttribute('checked', showCounter ? 'true' : 'false');
+ if (counterItem) {
+ counterItem.setAttribute('checked', showCounter ? 'true' : 'false');
+ }
// make sure UI for HTTP Nowhere mode is properly set
var httpNowhereItem = document.getElementById('http-nowhere-item');
var showHttpNowhere = tb.shouldShowHttpNowhere();
var toolbarbutton = document.getElementById('https-everywhere-button');
- httpNowhereItem.setAttribute('checked', showHttpNowhere ? 'true' : 'false');
- toolbarbutton.setAttribute('http_nowhere',
- showHttpNowhere ? 'true' : 'false');
+ if (httpNowhereItem) {
+ httpNowhereItem.setAttribute('checked', showHttpNowhere ? 'true' : 'false');
+ }
+ if (toolbarbutton) {
+ toolbarbutton.setAttribute('http_nowhere',
+ showHttpNowhere ? 'true' : 'false');
+ }
// make sure UI is set depending on whether HTTPS-E is enabled
toggleEnabledUI();
// show ruleset counter when a tab is changed
tb.updateRulesetsApplied();
- gBrowser.tabContainer.addEventListener(
- 'TabSelect',
- tb.updateRulesetsApplied,
- false
- );
-
- // hook event for when page loads
- var onPageLoad = function() {
- // Timeout is used for a number of reasons.
- // 1) For Performance since we want to defer computation.
- // 2) Sometimes the page is loaded before all applied rulesets are
- // calculated; in such a case, a half-second wait works.
- setTimeout(tb.updateRulesetsApplied, 500);
- };
-
- var appcontent = document.getElementById('appcontent');
- if (appcontent) {
- appcontent.addEventListener('load', onPageLoad, true);
+
+ // There is no gBrowser object on Android. Instead Android uses the
+ // window.BrowserApp object:
+ // https://developer.mozilla.org/en-US/Add-ons/Firefox_for_Android/API/BrowserApp
+ if (gBrowser) {
+ gBrowser.tabContainer.addEventListener(
+ 'TabSelect',
+ tb.updateRulesetsApplied,
+ false
+ );
+
+ // add listener for top-level location change across all tabs
+ let httpseProgressListener = {
+ onLocationChange: function(aBrowser, aWebProgress, aReq, aLoc) {
+ HTTPSEverywhere.log(DBUG, "Got on location change!");
+ HTTPSEverywhere.resetApplicableList(aBrowser);
+ },
+ onStateChange: function(aBrowser, aWebProgress, aReq, aFlags, aStatus) {
+ if ((gBrowser.selectedBrowser === aBrowser) &&
+ (aFlags & CI.nsIWebProgressListener.STATE_STOP) &&
+ aWebProgress.isTopLevel) {
+ HTTPSEverywhere.log(DBUG, "Got on state change");
+ tb.updateRulesetsApplied();
+ }
+ }
+ };
+ gBrowser.addTabsProgressListener(httpseProgressListener);
}
// decide whether to show toolbar hint
@@ -102,14 +121,19 @@ httpsEverywhere.toolbarButton = {
|| !Services.prefs.getBoolPref(hintPref)) {
// only run once
Services.prefs.setBoolPref(hintPref, true);
- gBrowser.addEventListener("DOMContentLoaded", tb.handleShowHint, true);
+ // gBrowser unavailable on Android, see above.
+ if (gBrowser) {
+ gBrowser.addEventListener("DOMContentLoaded",
+ tb.handleShowHint.bind(null, gBrowser),
+ true);
+ }
}
},
/**
* Shows toolbar hint if previously not shown.
*/
- handleShowHint: function() {
+ handleShowHint: function(gBrowser) {
var tb = httpsEverywhere.toolbarButton;
if (!tb.hintShown){
tb.hintShown = true;
@@ -118,26 +142,37 @@ httpsEverywhere.toolbarButton = {
var strings = document.getElementById('HttpsEverywhereStrings');
var msg = strings.getString('https-everywhere.toolbar.hint');
var hint = nBox.appendNotification(
- msg,
- 'https-everywhere',
- 'chrome://https-everywhere/skin/https-everywhere-24.png',
+ msg,
+ 'https-everywhere',
+ 'chrome://https-everywhere/skin/https-everywhere-24.png',
nBox.PRIORITY_WARNING_MEDIUM,
- [],
- function(action) {
- // see https://developer.mozilla.org/en-US/docs/XUL/Method/appendNotification#Notification_box_events
- gBrowser.selectedTab = gBrowser.addTab(faqURL);
- }
- );
+ [],
+ function(action) {
+ // see https://developer.mozilla.org/en-US/docs/XUL/Method/appendNotification#Notification_box_events
+ gBrowser.selectedTab = gBrowser.addTab(faqURL);
+ });
}
gBrowser.removeEventListener("DOMContentLoaded", tb.handleShowHint, true);
},
+ selectedBrowser: function() {
+ // gBrowser is unavailable on Android, see above.
+ if (window.gBrowser) {
+ return window.gBrowser.selectedBrowser;
+ } else if (window.BrowserApp) {
+ return window.BrowserApp.selectedBrowser;
+ }
+ },
/**
* Update the rulesets applied counter for the current tab.
*/
updateRulesetsApplied: function() {
var toolbarbutton = document.getElementById('https-everywhere-button');
+ if (!toolbarbutton) {
+ return;
+ }
+
var enabled = HTTPSEverywhere.prefs.getBoolPref("globalEnabled");
var showCounter = httpsEverywhere.toolbarButton.shouldShowCounter();
if (!enabled || !showCounter) {
@@ -145,8 +180,12 @@ httpsEverywhere.toolbarButton = {
return;
}
- var domWin = content.document.defaultView.top;
- var alist = HTTPSEverywhere.getExpando(domWin,"applicable_rules");
+ var browser = httpsEverywhere.toolbarButton.selectedBrowser();
+ if (!browser) {
+ return;
+ }
+
+ var alist = HTTPSEverywhere.getExpando(browser,"applicable_rules");
if (!alist) {
return;
}
@@ -270,20 +309,20 @@ function stitch_context_menu2() {
var rulesetTestsMenuItem = null;
function show_applicable_list(menupopup) {
- var domWin = content.document.defaultView.top;
- if (!(domWin instanceof CI.nsIDOMWindow)) {
- alert(domWin + " is not an nsIDOMWindow");
- return null;
+ var browser = httpsEverywhere.toolbarButton.selectedBrowser();
+ if (!browser) {
+ HTTPSEverywhere.log(WARN, "No browser for applicable list");
+ return;
}
- var alist = HTTPSEverywhere.getExpando(domWin,"applicable_rules");
+ var alist = HTTPSEverywhere.getExpando(browser,"applicable_rules");
var weird=false;
-
+
if (!alist) {
// This case occurs for error pages and similar. We need a dummy alist
// because populate_menu lives in there. Would be good to refactor this
// away.
- alist = new HTTPSEverywhere.ApplicableList(HTTPSEverywhere.log, document, domWin);
+ alist = new HTTPSEverywhere.ApplicableList(HTTPSEverywhere.log, browser.currentURI);
weird = true;
}
alist.populate_menu(document, menupopup, weird);
@@ -303,43 +342,24 @@ function show_applicable_list(menupopup) {
if(!menupopup.contains(rulesetTestsMenuItem))
menupopup.appendChild(rulesetTestsMenuItem);
}
-
}
function toggle_rule(rule_id) {
// toggle the rule state
HTTPSEverywhere.https_rules.rulesetsByID[rule_id].toggle();
- var domWin = content.document.defaultView.top;
- /*if (domWin instanceof CI.nsIDOMWindow) {
- var alist = HTTPSEverywhere.getExpando(domWin,"applicable_rules");
- if (alist) alist.empty();
- }*/
reload_window();
}
function reload_window() {
- var domWin = content.document.defaultView.top;
- if (!(domWin instanceof CI.nsIDOMWindow)) {
- HTTPSEverywhere.log(WARN, domWin + " is not an nsIDOMWindow");
- return null;
+ var browser = httpsEverywhere.toolbarButton.selectedBrowser();
+ if (browser) {
+ browser.reload();
}
- try {
- var webNav = domWin.QueryInterface(CI.nsIInterfaceRequestor)
- .getInterface(CI.nsIWebNavigation)
- .QueryInterface(CI.nsIDocShell);
- } catch(e) {
- HTTPSEverywhere.log(WARN,"failed to get webNav");
- return null;
- }
- // The choice of LOAD_FLAGS_CHARSET_CHANGE comes from NoScript's quickReload
- // function; not sure if it's optimal
- let flags = webNav.LOAD_FLAGS_BYPASS_CACHE & webNav.LOAD_FLAGS_CHARSET_CHANGE;
- webNav.reload(flags);
}
function toggleEnabledState(){
- HTTPSEverywhere.toggleEnabledState();
- reload_window();
+ HTTPSEverywhere.toggleEnabledState();
+ reload_window();
toggleEnabledUI();
}
@@ -353,7 +373,9 @@ function toggleEnabledUI() {
// Change icon depending on enabled state
var toolbarbutton = document.getElementById('https-everywhere-button');
- toolbarbutton.setAttribute('status', enabled ? 'enabled' : 'disabled');
+ if (toolbarbutton) {
+ toolbarbutton.setAttribute('status', enabled ? 'enabled' : 'disabled');
+ }
}
function open_in_tab(url) {
@@ -367,10 +389,10 @@ function open_in_tab(url) {
HTTPSEverywhere.log(DBUG, 'Adding listener for toolbarButton init.');
window.addEventListener("load", httpsEverywhere.toolbarButton.init, false);
-function migratePreferences() {
+function migratePreferences(gBrowser) {
gBrowser.removeEventListener("DOMContentLoaded", migratePreferences, true);
let prefs_version = HTTPSEverywhere.prefs.getIntPref("prefs_version");
-
+
// first migration loses saved prefs
if(prefs_version == 0) {
try {
@@ -402,4 +424,3 @@ function migratePreferences() {
HTTPSEverywhere.prefs.setIntPref("prefs_version", prefs_version+1);
}
}
-
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/toolbar_button.xul b/data/extensions/https-everywhere@eff.org/chrome/content/toolbar_button.xul
index a4fe612..c4e2f6b 100644
--- a/data/extensions/https-everywhere@eff.org/chrome/content/toolbar_button.xul
+++ b/data/extensions/https-everywhere@eff.org/chrome/content/toolbar_button.xul
@@ -32,7 +32,7 @@
<toolbarbutton
id="https-everywhere-button"
tooltiptext="&https-everywhere.about.ext_name;"
- label="HTTPS"
+ label="&https-everywhere.about.ext_name;"
context="https-everywhere-context-menu"
oncontextmenu="this.open = true;"
oncommand="this.open = true;"
@@ -43,7 +43,7 @@
<menupopup id="https-everywhere-context" onpopupshowing="show_applicable_list(this)">
<!-- entries will be written here by ApplicableList.populate_menu() -->
<menuseparator class="hide-on-disable"/>
- <menuitem type="checkbox" id="http-nowhere-item" label="Block all HTTP requests"
+ <menuitem type="checkbox" id="http-nowhere-item" label="&https-everywhere.menu.blockHttpRequests;"
oncommand="httpsEverywhere.toolbarButton.toggleHttpNowhere()" class="hide-on-disable"/>
<menuseparator class="hide-on-disable"/>
<menuitem type="checkbox" id="https-everywhere-counter-item" label="&https-everywhere.menu.showCounter;"