diff options
573 files changed, 13509 insertions, 15579 deletions
@@ -22,4 +22,4 @@ # changes to stick? As of bug 928195, this shouldn't be necessary! Please # don't change CLOBBER for WebIDL changes any more. -Clobber for updating NSPR+NSS +Clobber required for updating NSS to 3.38 (poly1305 symbol changes) @@ -18,6 +18,9 @@ Additional documentation relevant to this source code can be found in the `/docs directory. This will contain relevant documentation regarding contributing, using and distributing this code and its binaries. +If you are interested in the development and building side of things, some +information will be available on the [Pale Moon developer wiki](http://developer.palemoon.org). + ### A note about trademarks and branding Although this repository is licensed under Mozilla Public License v2.0, the diff --git a/accessible/base/NotificationController.cpp b/accessible/base/NotificationController.cpp index 73d364641..3545ce6c1 100644 --- a/accessible/base/NotificationController.cpp +++ b/accessible/base/NotificationController.cpp @@ -591,7 +591,6 @@ void NotificationController::WillRefresh(mozilla::TimeStamp aTime) { PROFILER_LABEL_FUNC(js::ProfileEntry::Category::OTHER); - Telemetry::AutoTimer<Telemetry::A11Y_UPDATE_TIME> updateTimer; // If the document accessible that notification collector was created for is // now shut down, don't process notifications anymore. diff --git a/accessible/base/Statistics.h b/accessible/base/Statistics.h index c9f1832b2..f5a9a85b8 100644 --- a/accessible/base/Statistics.h +++ b/accessible/base/Statistics.h @@ -14,22 +14,22 @@ namespace a11y { namespace statistics { inline void A11yInitialized() - { Telemetry::Accumulate(Telemetry::A11Y_INSTANTIATED_FLAG, true); } + { /* STUB */ } inline void A11yConsumers(uint32_t aConsumer) - { Telemetry::Accumulate(Telemetry::A11Y_CONSUMERS, aConsumer); } + { /* STUB */ } /** * Report that ISimpleDOM* has been used. */ inline void ISimpleDOMUsed() - { Telemetry::Accumulate(Telemetry::A11Y_ISIMPLEDOM_USAGE_FLAG, true); } + { /* STUB */ } /** * Report that IAccessibleTable has been used. */ inline void IAccessibleTableUsed() - { Telemetry::Accumulate(Telemetry::A11Y_IATABLE_USAGE_FLAG, true); } + { /* STUB */ } } // namespace statistics } // namespace a11y diff --git a/application/basilisk/app/macbuild/Contents/Info.plist.in b/application/basilisk/app/macbuild/Contents/Info.plist.in index d6902fffd..3f9380606 100644 --- a/application/basilisk/app/macbuild/Contents/Info.plist.in +++ b/application/basilisk/app/macbuild/Contents/Info.plist.in @@ -143,7 +143,7 @@ </dict> </array> <key>CFBundleExecutable</key> - <string>firefox</string> + <string>basilisk</string> <key>CFBundleGetInfoString</key> <string>%MAC_APP_NAME% %APP_VERSION%</string> <key>CFBundleIconFile</key> @@ -213,7 +213,7 @@ <key>LSFileQuarantineEnabled</key> <true/> <key>LSMinimumSystemVersion</key> - <string>10.9.0</string> + <string>10.7.0</string> <key>NSSupportsAutomaticGraphicsSwitching</key> <true/> <key>NSPrincipalClass</key> diff --git a/application/basilisk/app/profile/basilisk.js b/application/basilisk/app/profile/basilisk.js index 2df95a97f..fd81e8204 100644 --- a/application/basilisk/app/profile/basilisk.js +++ b/application/basilisk/app/profile/basilisk.js @@ -543,9 +543,10 @@ pref("browser.gesture.tap", "cmd_fullZoomReset"); pref("browser.snapshots.limit", 0); // 0: Nothing happens -// 1: Scrolling contents +// 1: Scroll contents // 2: Go back or go forward, in your history -// 3: Zoom in or out. +// 3: Zoom in or out +// 4: Scroll contents with X and Y swapped #ifdef XP_MACOSX // On OS X, if the wheel has one axis only, shift+wheel comes through as a // horizontal scroll event. Thus, we can't assign anything other than normal diff --git a/application/basilisk/base/content/browser-fullScreenAndPointerLock.js b/application/basilisk/base/content/browser-fullScreenAndPointerLock.js index dbc9478c1..ebe55377f 100644 --- a/application/basilisk/base/content/browser-fullScreenAndPointerLock.js +++ b/application/basilisk/base/content/browser-fullScreenAndPointerLock.js @@ -379,12 +379,10 @@ var FullScreen = { let topWin = event.target.ownerGlobal.top; browser = gBrowser.getBrowserForContentWindow(topWin); } - TelemetryStopwatch.start("FULLSCREEN_CHANGE_MS"); this.enterDomFullscreen(browser); break; } case "MozDOMFullscreen:Exited": - TelemetryStopwatch.start("FULLSCREEN_CHANGE_MS"); this.cleanupDomFullscreen(); break; } @@ -410,7 +408,6 @@ var FullScreen = { } case "DOMFullscreen:Painted": { Services.obs.notifyObservers(window, "fullscreen-painted", ""); - TelemetryStopwatch.finish("FULLSCREEN_CHANGE_MS"); break; } } diff --git a/application/basilisk/base/content/browser-fxaccounts.js b/application/basilisk/base/content/browser-fxaccounts.js index 0bbce3e26..94a591f1e 100644 --- a/application/basilisk/base/content/browser-fxaccounts.js +++ b/application/basilisk/base/content/browser-fxaccounts.js @@ -4,8 +4,6 @@ var gFxAccounts = { - SYNC_MIGRATION_NOTIFICATION_TITLE: "fxa-migration", - _initialized: false, _inCustomizationMode: false, _cachedProfile: null, @@ -26,7 +24,6 @@ var gFxAccounts = { "weave:service:setup-complete", "weave:service:sync:error", "weave:ui:login:error", - "fxa-migration:state-changed", this.FxAccountsCommon.ONLOGIN_NOTIFICATION, this.FxAccountsCommon.ONLOGOUT_NOTIFICATION, this.FxAccountsCommon.ON_PROFILE_CHANGE_NOTIFICATION, @@ -122,9 +119,6 @@ var gFxAccounts = { observe: function (subject, topic, data) { switch (topic) { - case "fxa-migration:state-changed": - this.onMigrationStateChanged(data, subject); - break; case this.FxAccountsCommon.ON_PROFILE_CHANGE_NOTIFICATION: this._cachedProfile = null; // Fallthrough intended @@ -134,48 +128,6 @@ var gFxAccounts = { } }, - onMigrationStateChanged: function () { - // Since we nuked most of the migration code, this notification will fire - // once after legacy Sync has been disconnected (and should never fire - // again) - let nb = window.document.getElementById("global-notificationbox"); - - let msg = this.strings.GetStringFromName("autoDisconnectDescription") - let signInLabel = this.strings.GetStringFromName("autoDisconnectSignIn.label"); - let signInAccessKey = this.strings.GetStringFromName("autoDisconnectSignIn.accessKey"); - let learnMoreLink = this.fxaMigrator.learnMoreLink; - - let buttons = [ - { - label: signInLabel, - accessKey: signInAccessKey, - callback: () => { - this.openPreferences(); - } - } - ]; - - let fragment = document.createDocumentFragment(); - let msgNode = document.createTextNode(msg); - fragment.appendChild(msgNode); - if (learnMoreLink) { - let link = document.createElement("label"); - link.className = "text-link"; - link.setAttribute("value", learnMoreLink.text); - link.href = learnMoreLink.href; - fragment.appendChild(link); - } - - nb.appendNotification(fragment, - this.SYNC_MIGRATION_NOTIFICATION_TITLE, - undefined, - nb.PRIORITY_WARNING_LOW, - buttons); - - // ensure the hamburger menu reflects the newly disconnected state. - this.updateAppMenuItem(); - }, - handleEvent: function (event) { this._inCustomizationMode = event.type == "customizationstarting"; this.updateAppMenuItem(); diff --git a/application/basilisk/base/content/browser-gestureSupport.js b/application/basilisk/base/content/browser-gestureSupport.js index f472e5c9a..6c21a6ad5 100644 --- a/application/basilisk/base/content/browser-gestureSupport.js +++ b/application/basilisk/base/content/browser-gestureSupport.js @@ -1001,13 +1001,10 @@ var gHistorySwipeAnimation = { ctx.DRAWWINDOW_ASYNC_DECODE_IMAGES | ctx.DRAWWINDOW_USE_WIDGET_LAYERS); - TelemetryStopwatch.start("FX_GESTURE_INSTALL_SNAPSHOT_OF_PAGE"); try { this._installCurrentPageSnapshot(canvas); this._assignSnapshotToCurrentBrowser(canvas); - } finally { - TelemetryStopwatch.finish("FX_GESTURE_INSTALL_SNAPSHOT_OF_PAGE"); - } + } catch (e) {} }, /** @@ -1058,7 +1055,6 @@ var gHistorySwipeAnimation = { return; } - TelemetryStopwatch.start("FX_GESTURE_COMPRESS_SNAPSHOT_OF_PAGE"); try { let browser = gBrowser.selectedBrowser; let snapshots = browser.snapshots; @@ -1072,9 +1068,7 @@ var gHistorySwipeAnimation = { } }, "image/png" ); - } finally { - TelemetryStopwatch.finish("FX_GESTURE_COMPRESS_SNAPSHOT_OF_PAGE"); - } + } catch (e) {} }, /** diff --git a/application/basilisk/base/content/browser.js b/application/basilisk/base/content/browser.js index 031144dfd..4f4ebb08f 100644 --- a/application/basilisk/base/content/browser.js +++ b/application/basilisk/base/content/browser.js @@ -45,7 +45,6 @@ Cu.import("resource://gre/modules/NotificationDB.jsm"); ["SitePermissions", "resource:///modules/SitePermissions.jsm"], ["TabCrashHandler", "resource:///modules/ContentCrashHandlers.jsm"], ["Task", "resource://gre/modules/Task.jsm"], - ["TelemetryStopwatch", "resource://gre/modules/TelemetryStopwatch.jsm"], ["Translation", "resource:///modules/translation/Translation.jsm"], ["UpdateUtils", "resource://gre/modules/UpdateUtils.jsm"], ["Weave", "resource://services-sync/main.js"], @@ -3818,8 +3817,6 @@ function toOpenWindowByType(inType, uri, features) function OpenBrowserWindow(options) { - var telemetryObj = {}; - TelemetryStopwatch.start("FX_NEW_WINDOW_MS", telemetryObj); function newDocumentShown(doc, topic, data) { if (topic == "document-shown" && @@ -3827,7 +3824,6 @@ function OpenBrowserWindow(options) doc.defaultView == win) { Services.obs.removeObserver(newDocumentShown, "document-shown"); Services.obs.removeObserver(windowClosed, "domwindowclosed"); - TelemetryStopwatch.finish("FX_NEW_WINDOW_MS", telemetryObj); } } @@ -4623,25 +4619,6 @@ var TabsProgressListener = { _startedLoadTimer: new WeakSet(), onStateChange: function (aBrowser, aWebProgress, aRequest, aStateFlags, aStatus) { - // Collect telemetry data about tab load times. - if (aWebProgress.isTopLevel && (!aRequest.originalURI || aRequest.originalURI.spec.scheme != "about")) { - if (aStateFlags & Ci.nsIWebProgressListener.STATE_IS_WINDOW) { - if (aStateFlags & Ci.nsIWebProgressListener.STATE_START) { - this._startedLoadTimer.add(aBrowser); - TelemetryStopwatch.start("FX_PAGE_LOAD_MS", aBrowser); - Services.telemetry.getHistogramById("FX_TOTAL_TOP_VISITS").add(true); - } else if (aStateFlags & Ci.nsIWebProgressListener.STATE_STOP && - this._startedLoadTimer.has(aBrowser)) { - this._startedLoadTimer.delete(aBrowser); - TelemetryStopwatch.finish("FX_PAGE_LOAD_MS", aBrowser); - } - } else if (aStateFlags & Ci.nsIWebProgressListener.STATE_STOP && - aStatus == Cr.NS_BINDING_ABORTED && - this._startedLoadTimer.has(aBrowser)) { - this._startedLoadTimer.delete(aBrowser); - TelemetryStopwatch.cancel("FX_PAGE_LOAD_MS", aBrowser); - } - } // We used to listen for clicks in the browser here, but when that // became unnecessary, removing the code below caused focus issues. diff --git a/application/basilisk/base/content/browser.xul b/application/basilisk/base/content/browser.xul index 982edfcd9..74a90f5e0 100644 --- a/application/basilisk/base/content/browser.xul +++ b/application/basilisk/base/content/browser.xul @@ -521,8 +521,7 @@ tabbrowser="content" flex="1" setfocus="false" - tooltip="tabbrowser-tab-tooltip" - stopwatchid="FX_TAB_CLICK_MS"> + tooltip="tabbrowser-tab-tooltip"> <tab class="tabbrowser-tab" selected="true" visuallyselected="true" fadein="true"/> </tabs> diff --git a/application/basilisk/base/content/sanitize.js b/application/basilisk/base/content/sanitize.js index 841376580..0a00defa4 100644 --- a/application/basilisk/base/content/sanitize.js +++ b/application/basilisk/base/content/sanitize.js @@ -19,8 +19,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "Task", "resource://gre/modules/Task.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "DownloadsCommon", "resource:///modules/DownloadsCommon.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "TelemetryStopwatch", - "resource://gre/modules/TelemetryStopwatch.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "console", "resource://gre/modules/Console.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "Preferences", @@ -154,8 +152,6 @@ Sanitizer.prototype = { // we catch and store them, but continue to sanitize as much as possible. // Callers should check returned errors and give user feedback // about items that could not be sanitized - let refObj = {}; - TelemetryStopwatch.start("FX_SANITIZE_TOTAL", refObj); let annotateError = (name, ex) => { progress[name] = "failed"; @@ -188,7 +184,7 @@ Sanitizer.prototype = { } // Sanitization is complete. - TelemetryStopwatch.finish("FX_SANITIZE_TOTAL", refObj); + // Reset the inProgress preference since we were not killed during // sanitization. Preferences.reset(Sanitizer.PREF_SANITIZE_IN_PROGRESS); @@ -210,8 +206,6 @@ Sanitizer.prototype = { cache: { clear: Task.async(function* (range) { let seenException; - let refObj = {}; - TelemetryStopwatch.start("FX_SANITIZE_CACHE", refObj); try { // Cache doesn't consult timespan, nor does it have the @@ -232,7 +226,6 @@ Sanitizer.prototype = { seenException = ex; } - TelemetryStopwatch.finish("FX_SANITIZE_CACHE", refObj); if (seenException) { throw seenException; } @@ -243,10 +236,8 @@ Sanitizer.prototype = { clear: Task.async(function* (range) { let seenException; let yieldCounter = 0; - let refObj = {}; // Clear cookies. - TelemetryStopwatch.start("FX_SANITIZE_COOKIES_2", refObj); try { let cookieMgr = Components.classes["@mozilla.org/cookiemanager;1"] .getService(Ci.nsICookieManager); @@ -274,8 +265,6 @@ Sanitizer.prototype = { } } catch (ex) { seenException = ex; - } finally { - TelemetryStopwatch.finish("FX_SANITIZE_COOKIES_2", refObj); } // Clear deviceIds. Done asynchronously (returns before complete). @@ -332,13 +321,6 @@ Sanitizer.prototype = { if (!range || age >= 0) { let tags = ph.getPluginTags(); for (let tag of tags) { - let refObj = {}; - let probe = ""; - if (/\bFlash\b/.test(tag.name)) { - probe = tag.loaded ? "FX_SANITIZE_LOADED_FLASH" - : "FX_SANITIZE_UNLOADED_FLASH"; - TelemetryStopwatch.start(probe, refObj); - } try { let rv = yield new Promise(resolve => ph.clearSiteData(tag, null, FLAG_CLEAR_ALL, age, resolve) @@ -349,14 +331,8 @@ Sanitizer.prototype = { ph.clearSiteData(tag, null, FLAG_CLEAR_ALL, -1, resolve) ); } - if (probe) { - TelemetryStopwatch.finish(probe, refObj); - } } catch (ex) { // Ignore errors from plug-ins - if (probe) { - TelemetryStopwatch.cancel(probe, refObj); - } } } } @@ -413,8 +389,6 @@ Sanitizer.prototype = { history: { clear: Task.async(function* (range) { let seenException; - let refObj = {}; - TelemetryStopwatch.start("FX_SANITIZE_HISTORY", refObj); try { if (range) { yield PlacesUtils.history.removeVisitsByFilter({ @@ -427,8 +401,6 @@ Sanitizer.prototype = { } } catch (ex) { seenException = ex; - } finally { - TelemetryStopwatch.finish("FX_SANITIZE_HISTORY", refObj); } try { @@ -455,8 +427,6 @@ Sanitizer.prototype = { formdata: { clear: Task.async(function* (range) { let seenException; - let refObj = {}; - TelemetryStopwatch.start("FX_SANITIZE_FORMDATA", refObj); try { // Clear undo history of all searchBars let windows = Services.wm.getEnumerator("navigator:browser"); @@ -504,7 +474,6 @@ Sanitizer.prototype = { seenException = ex; } - TelemetryStopwatch.finish("FX_SANITIZE_FORMDATA", refObj); if (seenException) { throw seenException; } @@ -513,8 +482,6 @@ Sanitizer.prototype = { downloads: { clear: Task.async(function* (range) { - let refObj = {}; - TelemetryStopwatch.start("FX_SANITIZE_DOWNLOADS", refObj); try { let filterByTime = null; if (range) { @@ -528,16 +495,13 @@ Sanitizer.prototype = { // Clear all completed/cancelled downloads let list = yield Downloads.getList(Downloads.ALL); list.removeFinished(filterByTime); - } finally { - TelemetryStopwatch.finish("FX_SANITIZE_DOWNLOADS", refObj); - } + } catch (ex) { + } }) }, sessions: { clear: Task.async(function* (range) { - let refObj = {}; - TelemetryStopwatch.start("FX_SANITIZE_SESSIONS", refObj); try { // clear all auth tokens @@ -547,17 +511,14 @@ Sanitizer.prototype = { // clear FTP and plain HTTP auth sessions Services.obs.notifyObservers(null, "net:clear-active-logins", null); - } finally { - TelemetryStopwatch.finish("FX_SANITIZE_SESSIONS", refObj); - } + } catch (ex) { + } }) }, siteSettings: { clear: Task.async(function* (range) { let seenException; - let refObj = {}; - TelemetryStopwatch.start("FX_SANITIZE_SITESETTINGS", refObj); let startDateMS = range ? range[0] / 1000 : null; @@ -615,7 +576,6 @@ Sanitizer.prototype = { seenException = ex; } - TelemetryStopwatch.finish("FX_SANITIZE_SITESETTINGS", refObj); if (seenException) { throw seenException; } @@ -672,9 +632,6 @@ Sanitizer.prototype = { // If/once we get here, we should actually be able to close all windows. - let refObj = {}; - TelemetryStopwatch.start("FX_SANITIZE_OPENWINDOWS", refObj); - // First create a new window. We do this first so that on non-mac, we don't // accidentally close the app by closing all the windows. let handler = Cc["@mozilla.org/browser/clh;1"].getService(Ci.nsIBrowserHandler); @@ -719,7 +676,6 @@ Sanitizer.prototype = { newWindowOpened = true; // If we're the last thing to happen, invoke callback. if (numWindowsClosing == 0) { - TelemetryStopwatch.finish("FX_SANITIZE_OPENWINDOWS", refObj); resolve(); } } @@ -731,7 +687,6 @@ Sanitizer.prototype = { Services.obs.removeObserver(onWindowClosed, "xul-window-destroyed"); // If we're the last thing to happen, invoke callback. if (newWindowOpened) { - TelemetryStopwatch.finish("FX_SANITIZE_OPENWINDOWS", refObj); resolve(); } } diff --git a/application/basilisk/base/content/tabbrowser.xml b/application/basilisk/base/content/tabbrowser.xml index f8dbcf364..043838020 100644 --- a/application/basilisk/base/content/tabbrowser.xml +++ b/application/basilisk/base/content/tabbrowser.xml @@ -1042,11 +1042,6 @@ </body> </method> - <!-- Holds a unique ID for the tab change that's currently being timed. - Used to make sure that multiple, rapid tab switches do not try to - create overlapping timers. --> - <field name="_tabSwitchID">null</field> - <method name="updateCurrentBrowser"> <parameter name="aForceUpdate"/> <body> @@ -1055,33 +1050,6 @@ if (this.mCurrentBrowser == newBrowser && !aForceUpdate) return; - if (!aForceUpdate) { - TelemetryStopwatch.start("FX_TAB_SWITCH_UPDATE_MS"); - if (!gMultiProcessBrowser) { - // old way of measuring tab paint which is not valid with e10s. - // Waiting until the next MozAfterPaint ensures that we capture - // the time it takes to paint, upload the textures to the compositor, - // and then composite. - if (this._tabSwitchID) { - TelemetryStopwatch.cancel("FX_TAB_SWITCH_TOTAL_MS"); - } - - let tabSwitchID = Symbol(); - - TelemetryStopwatch.start("FX_TAB_SWITCH_TOTAL_MS"); - this._tabSwitchID = tabSwitchID; - - let onMozAfterPaint = () => { - if (this._tabSwitchID === tabSwitchID) { - TelemetryStopwatch.finish("FX_TAB_SWITCH_TOTAL_MS"); - this._tabSwitchID = null; - } - window.removeEventListener("MozAfterPaint", onMozAfterPaint); - } - window.addEventListener("MozAfterPaint", onMozAfterPaint); - } - } - var oldTab = this.mCurrentTab; // Preview mode should not reset the owner @@ -1274,9 +1242,6 @@ }); this.dispatchEvent(event); } - - if (!aForceUpdate) - TelemetryStopwatch.finish("FX_TAB_SWITCH_UPDATE_MS"); ]]> </body> </method> @@ -2136,6 +2101,7 @@ var aRelatedBrowser; var aOriginPrincipal; var aOpener; + var aSkipBackgroundNotify; if (arguments.length == 2 && typeof arguments[1] == "object" && !(arguments[1] instanceof Ci.nsIURI)) { @@ -2158,6 +2124,7 @@ aRelatedBrowser = params.relatedBrowser; aOriginPrincipal = params.originPrincipal; aOpener = params.opener; + aSkipBackgroundNotify = params.skipBackgroundNotify; } // if we're adding tabs, we're past interrupt mode, ditch the owner @@ -2186,6 +2153,11 @@ t.setAttribute("crop", "end"); t.setAttribute("onerror", "this.removeAttribute('image');"); + + if (aSkipBackgroundNotify) { + t.setAttribute("skipbackgroundnotify", true); + } + t.className = "tabbrowser-tab"; this.tabContainer._unlockTabSizing(); @@ -4145,8 +4117,6 @@ */ startTabSwitch: function () { - TelemetryStopwatch.cancel("FX_TAB_SWITCH_TOTAL_E10S_MS", window); - TelemetryStopwatch.start("FX_TAB_SWITCH_TOTAL_E10S_MS", window); this.addMarker("AsyncTabSwitch:Start"); this.switchInProgress = true; }, @@ -4162,31 +4132,18 @@ this.getTabState(this.requestedTab) == this.STATE_LOADED) { // After this point the tab has switched from the content thread's point of view. // The changes will be visible after the next refresh driver tick + composite. - let time = TelemetryStopwatch.timeElapsed("FX_TAB_SWITCH_TOTAL_E10S_MS", window); - if (time != -1) { - TelemetryStopwatch.finish("FX_TAB_SWITCH_TOTAL_E10S_MS", window); - this.log("DEBUG: tab switch time = " + time); this.addMarker("AsyncTabSwitch:Finish"); - } this.switchInProgress = false; } }, spinnerDisplayed: function () { this.assert(!this.spinnerTab); - TelemetryStopwatch.start("FX_TAB_SWITCH_SPINNER_VISIBLE_MS", window); - // We have a second, similar probe for capturing recordings of - // when the spinner is displayed for very long periods. - TelemetryStopwatch.start("FX_TAB_SWITCH_SPINNER_VISIBLE_LONG_MS", window); this.addMarker("AsyncTabSwitch:SpinnerShown"); }, spinnerHidden: function () { this.assert(this.spinnerTab); - this.log("DEBUG: spinner time = " + - TelemetryStopwatch.timeElapsed("FX_TAB_SWITCH_SPINNER_VISIBLE_MS", window)); - TelemetryStopwatch.finish("FX_TAB_SWITCH_SPINNER_VISIBLE_MS", window); - TelemetryStopwatch.finish("FX_TAB_SWITCH_SPINNER_VISIBLE_LONG_MS", window); this.addMarker("AsyncTabSwitch:SpinnerHidden"); // we do not get a onPaint after displaying the spinner this.maybeFinishTabSwitch(); @@ -5982,7 +5939,11 @@ this._fillTrailingGap(); this._handleTabSelect(); } else { - this._notifyBackgroundTab(tab); + if (tab.hasAttribute("skipbackgroundnotify")) { + tab.removeAttribute("skipbackgroundnotify"); + } else { + this._notifyBackgroundTab(tab); + } } // XXXmano: this is a temporary workaround for bug 345399 diff --git a/application/basilisk/branding/official/disk.icns b/application/basilisk/branding/official/disk.icns Binary files differindex 82fdccff8..bb3fdd5e4 100644 --- a/application/basilisk/branding/official/disk.icns +++ b/application/basilisk/branding/official/disk.icns diff --git a/application/basilisk/branding/official/document.icns b/application/basilisk/branding/official/document.icns Binary files differindex 5f03305d7..388296713 100644 --- a/application/basilisk/branding/official/document.icns +++ b/application/basilisk/branding/official/document.icns diff --git a/application/basilisk/branding/official/firefox.icns b/application/basilisk/branding/official/firefox.icns Binary files differindex 4d2ad5a04..8b9232cba 100644 --- a/application/basilisk/branding/official/firefox.icns +++ b/application/basilisk/branding/official/firefox.icns diff --git a/application/basilisk/components/migration/AutoMigrate.jsm b/application/basilisk/components/migration/AutoMigrate.jsm index b38747825..003f70d70 100644 --- a/application/basilisk/components/migration/AutoMigrate.jsm +++ b/application/basilisk/components/migration/AutoMigrate.jsm @@ -37,8 +37,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "OS", "resource://gre/modules/osfile.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "PlacesUtils", "resource://gre/modules/PlacesUtils.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "TelemetryStopwatch", - "resource://gre/modules/TelemetryStopwatch.jsm"); XPCOMUtils.defineLazyGetter(this, "gBrandBundle", function() { const kBrandBundle = "chrome://branding/locale/brand.properties"; @@ -211,7 +209,6 @@ const AutoMigrate = { undo: Task.async(function* () { let browserId = Preferences.get(kAutoMigrateBrowserPref, "unknown"); - TelemetryStopwatch.startKeyed("FX_STARTUP_MIGRATION_UNDO_TOTAL_MS", browserId); let histogram = Services.telemetry.getHistogramById("FX_STARTUP_MIGRATION_AUTOMATED_IMPORT_UNDO"); histogram.add(0); if (!(yield this.canUndo())) { @@ -236,38 +233,24 @@ const AutoMigrate = { Services.telemetry.getKeyedHistogramById(histogramId).add(browserId, this._errorMap[type]); }; - let startTelemetryStopwatch = resourceType => { - let histogramId = `FX_STARTUP_MIGRATION_UNDO_${resourceType.toUpperCase()}_MS`; - TelemetryStopwatch.startKeyed(histogramId, browserId); - }; - let stopTelemetryStopwatch = resourceType => { - let histogramId = `FX_STARTUP_MIGRATION_UNDO_${resourceType.toUpperCase()}_MS`; - TelemetryStopwatch.finishKeyed(histogramId, browserId); - }; - startTelemetryStopwatch("bookmarks"); yield this._removeUnchangedBookmarks(stateData.get("bookmarks")).catch(ex => { Cu.reportError("Uncaught exception when removing unchanged bookmarks!"); Cu.reportError(ex); }); - stopTelemetryStopwatch("bookmarks"); reportErrorTelemetry("bookmarks"); histogram.add(15); - startTelemetryStopwatch("visits"); yield this._removeSomeVisits(stateData.get("visits")).catch(ex => { Cu.reportError("Uncaught exception when removing history visits!"); Cu.reportError(ex); }); - stopTelemetryStopwatch("visits"); reportErrorTelemetry("visits"); histogram.add(20); - startTelemetryStopwatch("logins"); yield this._removeUnchangedLogins(stateData.get("logins")).catch(ex => { Cu.reportError("Uncaught exception when removing unchanged logins!"); Cu.reportError(ex); }); - stopTelemetryStopwatch("logins"); reportErrorTelemetry("logins"); histogram.add(25); @@ -278,7 +261,6 @@ const AutoMigrate = { this._purgeUndoState(this.UNDO_REMOVED_REASON_UNDO_USED); histogram.add(30); - TelemetryStopwatch.finishKeyed("FX_STARTUP_MIGRATION_UNDO_TOTAL_MS", browserId); }), _removeNotificationBars() { diff --git a/application/basilisk/components/migration/MigrationUtils.jsm b/application/basilisk/components/migration/MigrationUtils.jsm index e133ec520..ccae006fe 100644 --- a/application/basilisk/components/migration/MigrationUtils.jsm +++ b/application/basilisk/components/migration/MigrationUtils.jsm @@ -32,8 +32,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "ResponsivenessMonitor", "resource://gre/modules/ResponsivenessMonitor.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "Sqlite", "resource://gre/modules/Sqlite.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "TelemetryStopwatch", - "resource://gre/modules/TelemetryStopwatch.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "WindowsRegistry", "resource://gre/modules/WindowsRegistry.jsm"); @@ -254,14 +252,6 @@ this.MigratorPrototype = { let browserKey = this.getBrowserKey(); - let maybeStartTelemetryStopwatch = resourceType => { - let histogramId = getHistogramIdForResourceType(resourceType, "FX_MIGRATION_*_IMPORT_MS"); - if (histogramId) { - TelemetryStopwatch.startKeyed(histogramId, browserKey); - } - return histogramId; - }; - let maybeStartResponsivenessMonitor = resourceType => { let responsivenessMonitor; let responsivenessHistogramId = @@ -323,8 +313,6 @@ this.MigratorPrototype = { for (let [migrationType, itemResources] of resourcesGroupedByItems) { notify("Migration:ItemBeforeMigrate", migrationType); - let stopwatchHistogramId = maybeStartTelemetryStopwatch(migrationType); - let {responsivenessMonitor, responsivenessHistogramId} = maybeStartResponsivenessMonitor(migrationType); @@ -340,10 +328,6 @@ this.MigratorPrototype = { migrationType); resourcesGroupedByItems.delete(migrationType); - if (stopwatchHistogramId) { - TelemetryStopwatch.finishKeyed(stopwatchHistogramId, browserKey); - } - maybeFinishResponsivenessMonitor(responsivenessMonitor, responsivenessHistogramId); if (resourcesGroupedByItems.size == 0) { diff --git a/application/basilisk/components/migration/content/migration.xul b/application/basilisk/components/migration/content/migration.xul index e85091002..62c97c107 100644 --- a/application/basilisk/components/migration/content/migration.xul +++ b/application/basilisk/components/migration/content/migration.xul @@ -24,11 +24,9 @@ <wizardpage id="importSource" pageid="importSource" next="selectProfile" label="&importSource.title;" onpageadvanced="return MigrationWizard.onImportSourcePageAdvanced();"> -#ifdef XP_WIN + <description id="importAll" control="importSourceGroup">&importFrom.label;</description> -#else - <description id="importAll" control="importSourceGroup">&importFromUnix.label;</description> -#endif + <description id="importBookmarks" control="importSourceGroup" hidden="true">&importFromBookmarks.label;</description> <radiogroup id="importSourceGroup" align="start"> diff --git a/application/basilisk/components/places/content/history-panel.js b/application/basilisk/components/places/content/history-panel.js index 20dbbb5bd..65f00e93b 100644 --- a/application/basilisk/components/places/content/history-panel.js +++ b/application/basilisk/components/places/content/history-panel.js @@ -3,8 +3,6 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -Components.utils.import("resource://gre/modules/TelemetryStopwatch.jsm"); - var gHistoryTree; var gSearchBox; var gHistoryGrouping = ""; @@ -81,16 +79,11 @@ function searchHistory(aInput) options.resultType = resultType; options.includeHidden = !!aInput; - if (gHistoryGrouping == "lastvisited") - this.TelemetryStopwatch.start("HISTORY_LASTVISITED_TREE_QUERY_TIME_MS"); - // call load() on the tree manually // instead of setting the place attribute in history-panel.xul // otherwise, we will end up calling load() twice gHistoryTree.load([query], options); - if (gHistoryGrouping == "lastvisited") - this.TelemetryStopwatch.finish("HISTORY_LASTVISITED_TREE_QUERY_TIME_MS"); } window.addEventListener("SidebarFocused", diff --git a/application/basilisk/components/places/content/places.js b/application/basilisk/components/places/content/places.js index aa43b20e6..375c3de17 100644 --- a/application/basilisk/components/places/content/places.js +++ b/application/basilisk/components/places/content/places.js @@ -5,7 +5,6 @@ Components.utils.import("resource://gre/modules/AppConstants.jsm"); Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); -Components.utils.import("resource://gre/modules/TelemetryStopwatch.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "MigrationUtils", "resource:///modules/MigrationUtils.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "Task", @@ -810,9 +809,7 @@ var PlacesSearchBox = { currentView.load([query], options); } else { - TelemetryStopwatch.start(HISTORY_LIBRARY_SEARCH_TELEMETRY); currentView.applyFilter(filterString, null, true); - TelemetryStopwatch.finish(HISTORY_LIBRARY_SEARCH_TELEMETRY); } break; case "downloads": diff --git a/application/basilisk/components/sessionstore/SessionFile.jsm b/application/basilisk/components/sessionstore/SessionFile.jsm index 80c4e7790..3c55101e4 100644 --- a/application/basilisk/components/sessionstore/SessionFile.jsm +++ b/application/basilisk/components/sessionstore/SessionFile.jsm @@ -43,8 +43,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "PromiseUtils", "resource://gre/modules/PromiseUtils.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "RunState", "resource:///modules/sessionstore/RunState.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "TelemetryStopwatch", - "resource://gre/modules/TelemetryStopwatch.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "Task", "resource://gre/modules/Task.jsm"); XPCOMUtils.defineLazyServiceGetter(this, "Telemetry", diff --git a/application/basilisk/components/sessionstore/SessionSaver.jsm b/application/basilisk/components/sessionstore/SessionSaver.jsm index d672f8877..fa3a67512 100644 --- a/application/basilisk/components/sessionstore/SessionSaver.jsm +++ b/application/basilisk/components/sessionstore/SessionSaver.jsm @@ -13,7 +13,6 @@ const Ci = Components.interfaces; Cu.import("resource://gre/modules/Timer.jsm", this); Cu.import("resource://gre/modules/Services.jsm", this); Cu.import("resource://gre/modules/XPCOMUtils.jsm", this); -Cu.import("resource://gre/modules/TelemetryStopwatch.jsm", this); XPCOMUtils.defineLazyModuleGetter(this, "AppConstants", "resource://gre/modules/AppConstants.jsm"); @@ -52,19 +51,6 @@ function notify(subject, topic) { Services.obs.notifyObservers(subject, topic, ""); } -// TelemetryStopwatch helper functions. -function stopWatch(method) { - return function (...histograms) { - for (let hist of histograms) { - TelemetryStopwatch[method]("FX_SESSION_RESTORE_" + hist); - } - }; -} - -var stopWatchStart = stopWatch("start"); -var stopWatchCancel = stopWatch("cancel"); -var stopWatchFinish = stopWatch("finish"); - /** * The external API implemented by the SessionSaver module. */ @@ -182,7 +168,6 @@ var SessionSaverInternal = { return Promise.resolve(); } - stopWatchStart("COLLECT_DATA_MS", "COLLECT_DATA_LONGEST_OP_MS"); let state = SessionStore.getCurrentState(forceUpdateAllWindows); PrivacyFilter.filterPrivateWindowsAndTabs(state); @@ -226,7 +211,6 @@ var SessionSaverInternal = { } } - stopWatchFinish("COLLECT_DATA_MS", "COLLECT_DATA_LONGEST_OP_MS"); return this._writeState(state); }, diff --git a/application/basilisk/components/sessionstore/SessionStore.jsm b/application/basilisk/components/sessionstore/SessionStore.jsm index 6b30943f3..b599bc162 100644 --- a/application/basilisk/components/sessionstore/SessionStore.jsm +++ b/application/basilisk/components/sessionstore/SessionStore.jsm @@ -135,7 +135,6 @@ Cu.import("resource://gre/modules/PrivateBrowsingUtils.jsm", this); Cu.import("resource://gre/modules/Promise.jsm", this); Cu.import("resource://gre/modules/Services.jsm", this); Cu.import("resource://gre/modules/Task.jsm", this); -Cu.import("resource://gre/modules/TelemetryStopwatch.jsm", this); Cu.import("resource://gre/modules/TelemetryTimestamps.jsm", this); Cu.import("resource://gre/modules/Timer.jsm", this); Cu.import("resource://gre/modules/XPCOMUtils.jsm", this); @@ -564,7 +563,6 @@ var SessionStoreInternal = { * Initialize the session using the state provided by SessionStartup */ initSession: function () { - TelemetryStopwatch.start("FX_SESSION_RESTORE_STARTUP_INIT_SESSION_MS"); let state; let ss = gSessionStartup; @@ -640,7 +638,6 @@ var SessionStoreInternal = { this._prefBranch.getBoolPref("sessionstore.resume_session_once")) this._prefBranch.setBoolPref("sessionstore.resume_session_once", false); - TelemetryStopwatch.finish("FX_SESSION_RESTORE_STARTUP_INIT_SESSION_MS"); return state; }, @@ -1247,9 +1244,7 @@ var SessionStoreInternal = { if (initialState) { Services.obs.notifyObservers(null, NOTIFY_RESTORING_ON_STARTUP, ""); } - TelemetryStopwatch.start("FX_SESSION_RESTORE_STARTUP_ONLOAD_INITIAL_WINDOW_MS"); this.initializeWindow(aWindow, initialState); - TelemetryStopwatch.finish("FX_SESSION_RESTORE_STARTUP_ONLOAD_INITIAL_WINDOW_MS"); // Let everyone know we're done. this._deferredInitialized.resolve(); @@ -2857,7 +2852,6 @@ var SessionStoreInternal = { var activeWindow = this._getMostRecentBrowserWindow(); - TelemetryStopwatch.start("FX_SESSION_RESTORE_COLLECT_ALL_WINDOWS_DATA_MS"); if (RunState.isRunning) { // update the data for all windows with activities since the last save operation this._forEachBrowserWindow(function(aWindow) { @@ -2872,7 +2866,6 @@ var SessionStoreInternal = { }); DirtyWindows.clear(); } - TelemetryStopwatch.finish("FX_SESSION_RESTORE_COLLECT_ALL_WINDOWS_DATA_MS"); // An array that at the end will hold all current window data. var total = []; @@ -2892,9 +2885,7 @@ var SessionStoreInternal = { nonPopupCount++; } - TelemetryStopwatch.start("FX_SESSION_RESTORE_COLLECT_COOKIES_MS"); SessionCookies.update(total); - TelemetryStopwatch.finish("FX_SESSION_RESTORE_COLLECT_COOKIES_MS"); // collect the data for all windows yet to be restored for (ix in this._statesToRestore) { @@ -3063,8 +3054,6 @@ var SessionStoreInternal = { if (aWindow && (!aWindow.__SSi || !this._windows[aWindow.__SSi])) this.onLoad(aWindow); - TelemetryStopwatch.start("FX_SESSION_RESTORE_RESTORE_WINDOW_MS"); - // We're not returning from this before we end up calling restoreTabs // for this window, so make sure we send the SSWindowStateBusy event. this._setWindowStateBusy(aWindow); @@ -3124,7 +3113,8 @@ var SessionStoreInternal = { tabbrowser.addTab("about:blank", {skipAnimation: true, forceNotRemote, - userContextId}); + userContextId, + skipBackgroundNotify: true}); // If we inserted a new tab because the userContextId didn't match with the // open tab, even though `t < openTabCount`, we need to remove that open tab @@ -3235,8 +3225,6 @@ var SessionStoreInternal = { // set smoothScroll back to the original value tabstrip.smoothScroll = smoothScroll; - TelemetryStopwatch.finish("FX_SESSION_RESTORE_RESTORE_WINDOW_MS"); - this._setWindowStateReady(aWindow); this._sendWindowRestoredNotification(aWindow); diff --git a/application/basilisk/components/sessionstore/TabAttributes.jsm b/application/basilisk/components/sessionstore/TabAttributes.jsm index 8a29680f4..c8e6d9744 100644 --- a/application/basilisk/components/sessionstore/TabAttributes.jsm +++ b/application/basilisk/components/sessionstore/TabAttributes.jsm @@ -14,7 +14,10 @@ this.EXPORTED_SYMBOLS = ["TabAttributes"]; // 'pending' is used internal by sessionstore and managed accordingly. // 'iconLoadingPrincipal' is same as 'image' that it should be handled by // using the gBrowser.getIcon()/setIcon() methods. -const ATTRIBUTES_TO_SKIP = new Set(["image", "muted", "pending", "iconLoadingPrincipal"]); +// 'skipbackgroundnotify' is used internal by tabbrowser.xml. +const ATTRIBUTES_TO_SKIP = new Set(["image", "muted", "pending", + "iconLoadingPrincipal", + "skipbackgroundnotify"]); // A set of tab attributes to persist. We will read a given list of tab // attributes when collecting tab data and will re-set those attributes when diff --git a/application/basilisk/components/sessionstore/nsSessionStartup.js b/application/basilisk/components/sessionstore/nsSessionStartup.js index 7593c48ec..9cda1552e 100644 --- a/application/basilisk/components/sessionstore/nsSessionStartup.js +++ b/application/basilisk/components/sessionstore/nsSessionStartup.js @@ -37,7 +37,6 @@ const Cr = Components.results; const Cu = Components.utils; Cu.import("resource://gre/modules/XPCOMUtils.jsm"); Cu.import("resource://gre/modules/Services.jsm"); -Cu.import("resource://gre/modules/TelemetryStopwatch.jsm"); Cu.import("resource://gre/modules/PrivateBrowsingUtils.jsm"); Cu.import("resource://gre/modules/Promise.jsm"); diff --git a/application/palemoon/app/blocklist.xml b/application/palemoon/app/blocklist.xml index 296b8ad24..d55784169 100644 --- a/application/palemoon/app/blocklist.xml +++ b/application/palemoon/app/blocklist.xml @@ -1,5 +1,5 @@ <?xml version='1.0' encoding='utf-8'?> -<blocklist lastupdate="1521130300000" +<blocklist lastupdate="1534840140000" xmlns="http://www.mozilla.org/2006/addons-blocklist"> <emItems> <emItem blockID="i545" id="superlrcs@svenyor.net"> @@ -2513,7 +2513,17 @@ xmlns="http://www.mozilla.org/2006/addons-blocklist"> <versionRange minVersion="0" maxVersion="52.4.2" severity="3"> </versionRange> <prefs></prefs> - </emItem> + </emItem> + <emItem blockID="pm112" id="{73a6fe31-595d-460b-a920-fcc0f8843232}"> + <versionRange minVersion="0" maxVersion="*" severity="1"> + </versionRange> + <prefs></prefs> + </emItem> + <emItem blockID="pm113" id="addonsmanagerfix@sonco.com"> + <versionRange minVersion="0" maxVersion="*" severity="3"> + </versionRange> + <prefs></prefs> + </emItem> </emItems> <pluginItems> <pluginItem blockID="p26"> diff --git a/application/palemoon/base/content/browser-sets.inc b/application/palemoon/base/content/browser-sets.inc index 64228678e..25794a65c 100644 --- a/application/palemoon/base/content/browser-sets.inc +++ b/application/palemoon/base/content/browser-sets.inc @@ -79,7 +79,6 @@ <command id="Browser:NextTab" oncommand="gBrowser.tabContainer.advanceSelectedTab(1, true);"/> <command id="Browser:PrevTab" oncommand="gBrowser.tabContainer.advanceSelectedTab(-1, true);"/> <command id="Browser:ShowAllTabs" oncommand="allTabs.open();"/> - <command id="Browser:FocusNextFrame" oncommand="focusNextFrame(event);"/> <command id="cmd_fullZoomReduce" oncommand="FullZoom.reduce()"/> <command id="cmd_fullZoomEnlarge" oncommand="FullZoom.enlarge()"/> <command id="cmd_fullZoomReset" oncommand="FullZoom.reset()"/> @@ -251,8 +250,6 @@ #ifndef XP_MACOSX <key id="showAllHistoryKb" key="&showAllHistoryCmd.commandkey;" command="Browser:ShowAllHistory" modifiers="accel,shift"/> <key keycode="VK_F5" command="Browser:ReloadSkipCache" modifiers="accel"/> - <key keycode="VK_F6" command="Browser:FocusNextFrame"/> - <key keycode="VK_F6" command="Browser:FocusNextFrame" modifiers="shift"/> <key id="key_fullScreen" keycode="VK_F11" command="View:FullScreen"/> #else <key id="key_fullScreen" key="&fullScreenCmd.macCommandKey;" command="View:FullScreen" modifiers="accel,control"/> diff --git a/application/palemoon/base/content/browser.js b/application/palemoon/base/content/browser.js index 7421fc5c3..5cf43850a 100644 --- a/application/palemoon/base/content/browser.js +++ b/application/palemoon/base/content/browser.js @@ -53,13 +53,20 @@ var gEditUIVisible = true; // Smart getter for the findbar. If you don't wish to force the creation of // the findbar, check gFindBarInitialized first. - -this.__defineGetter__("gFindBar", function() { - return window.gBrowser.getFindBar(); -}); - -this.__defineGetter__("gFindBarInitialized", function() { - return window.gBrowser.isFindBarInitialized(); +var gFindBarInitialized = false; +XPCOMUtils.defineLazyGetter(window, "gFindBar", function() { + let XULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; + let findbar = document.createElementNS(XULNS, "findbar"); + findbar.id = "FindToolbar"; + + let browserBottomBox = document.getElementById("browser-bottombox"); + browserBottomBox.insertBefore(findbar, browserBottomBox.firstChild); + + // Force a style flush to ensure that our binding is attached. + findbar.clientTop; + findbar.browser = gBrowser.mCurrentBrowser; + window.gFindBarInitialized = true; + return findbar; }); XPCOMUtils.defineLazyModuleGetter(this, "BrowserUtils", @@ -7222,14 +7229,6 @@ var MousePosTracker = { } }; -function focusNextFrame(event) { - let fm = Services.focus; - let dir = event.shiftKey ? fm.MOVEFOCUS_BACKWARDDOC : fm.MOVEFOCUS_FORWARDDOC; - let element = fm.moveFocus(window, null, dir, fm.FLAG_BYKEY); - if (element.ownerDocument == document) - focusAndSelectUrlBar(); -} - var BrowserChromeTest = { _cb: null, _ready: false, diff --git a/application/palemoon/base/content/browser.xul b/application/palemoon/base/content/browser.xul index 90899bb88..07ca54722 100644 --- a/application/palemoon/base/content/browser.xul +++ b/application/palemoon/base/content/browser.xul @@ -59,6 +59,7 @@ macanimationtype="document" screenX="4" screenY="4" fullscreenbutton="true" + retargetdocumentfocus="urlbar" persist="screenX screenY width height sizemode"> # All JS files which are not content (only) dependent that browser.xul diff --git a/application/palemoon/base/content/nsContextMenu.js b/application/palemoon/base/content/nsContextMenu.js index 19b2fac77..1d4f88816 100644 --- a/application/palemoon/base/content/nsContextMenu.js +++ b/application/palemoon/base/content/nsContextMenu.js @@ -838,30 +838,8 @@ nsContextMenu.prototype = { // View Partial Source viewPartialSource: function(aContext) { - var focusedWindow = document.commandDispatcher.focusedWindow; - if (focusedWindow == window) - focusedWindow = content; - - var docCharset = null; - if (focusedWindow) - docCharset = "charset=" + focusedWindow.document.characterSet; - - // "View Selection Source" and others such as "View MathML Source" - // are mutually exclusive, with the precedence given to the selection - // when there is one - var reference = null; - if (aContext == "selection") - reference = focusedWindow.getSelection(); - else if (aContext == "mathml") - reference = this.target; - else - throw "not reached"; - - // unused (and play nice for fragments generated via XSLT too) - var docUrl = null; - window.openDialog("chrome://global/content/viewPartialSource.xul", - "_blank", "scrollbars,resizable,chrome,dialog=no", - docUrl, docCharset, reference, aContext); + let target = aContext == "mathml" ? this.target : null; + top.gViewSourceUtils.viewPartialSourceInBrowser(gBrowser.selectedBrowser, target); }, // Open new "view source" window with the frame's URL. diff --git a/application/palemoon/base/content/tabbrowser.xml b/application/palemoon/base/content/tabbrowser.xml index d5735149e..93818e290 100644 --- a/application/palemoon/base/content/tabbrowser.xml +++ b/application/palemoon/base/content/tabbrowser.xml @@ -128,10 +128,6 @@ false </field> - <field name="_lastFindValue"> - "" - </field> - <property name="_numPinnedTabs" readonly="true"> <getter><![CDATA[ for (var i = 0; i < this.tabs.length; i++) { @@ -158,43 +154,6 @@ ]]></getter> </property> - <method name="isFindBarInitialized"> - <parameter name="aTab"/> - <body><![CDATA[ - return (aTab || this.selectedTab)._findBar != undefined; - ]]></body> - </method> - - <method name="getFindBar"> - <parameter name="aTab"/> - <body><![CDATA[ - if (!aTab) - aTab = this.selectedTab; - - if (aTab._findBar) - return aTab._findBar; - - let findBar = document.createElementNS(this.namespaceURI, "findbar"); - let browser = this.getBrowserForTab(aTab); - let browserContainer = this.getBrowserContainer(browser); - browserContainer.appendChild(findBar); - - // Force a style flush to ensure that our binding is attached. - findBar.clientTop; - - findBar.browser = browser; - findBar._findField.value = this._lastFindValue; - - aTab._findBar = findBar; - - let event = document.createEvent("Events"); - event.initEvent("TabFindInitialized", true, false); - aTab.dispatchEvent(event); - - return findBar; - ]]></body> - </method> - <method name="updateWindowResizers"> <body><![CDATA[ if (!window.gShowPageResizers) @@ -1082,6 +1041,11 @@ // Bug 666809 - SecurityUI support for e10s var webProgress = this.mCurrentBrowser.webProgress; var securityUI = this.mCurrentBrowser.securityUI; + + // Update global findbar with new content browser + if (gFindBarInitialized) { + gFindBar.browser = newBrowser; + } this._callProgressListeners(null, "onLocationChange", [webProgress, null, loc, 0], true, @@ -1104,11 +1068,9 @@ this.mCurrentTab.removeAttribute("unread"); this.selectedTab.lastAccessed = Date.now(); - let oldFindBar = oldTab._findBar; - if (oldFindBar && - oldFindBar.findMode == oldFindBar.FIND_NORMAL && - !oldFindBar.hidden) - this._lastFindValue = oldFindBar._findField.value; + // Bug 666816 - TypeAheadFind support for e10s + if (!gMultiProcessBrowser) + this._fastFind.setDocShell(this.mCurrentBrowser.docShell); this.updateTitlebar(); @@ -1159,11 +1121,6 @@ // Adjust focus oldBrowser._urlbarFocused = (gURLBar && gURLBar.focused); - if (this.isFindBarInitialized(oldTab)) { - let findBar = this.getFindBar(oldTab); - oldTab._findBarFocused = (!findBar.hidden && - findBar._findField.getAttribute("focused") == "true"); - } do { // When focus is in the tab bar, retain it there. if (document.activeElement == oldTab) { @@ -1199,12 +1156,11 @@ } } - // Focus the find bar if it was previously focused for that tab. - if (gFindBarInitialized && !gFindBar.hidden && - this.selectedTab._findBarFocused) { - gFindBar._findField.focus(); + // If the find bar is focused, keep it focused. + if (gFindBarInitialized && + !gFindBar.hidden && + gFindBar.getElement("findbar-textbox").getAttribute("focused") == "true") break; - } // Otherwise, focus the content area. let fm = Cc["@mozilla.org/focus-manager;1"].getService(Ci.nsIFocusManager); @@ -1473,6 +1429,7 @@ var aRelatedToCurrent; var aSkipAnimation; var aOriginPrincipal; + var aSkipBackgroundNotify; if (arguments.length == 2 && typeof arguments[1] == "object" && !(arguments[1] instanceof Ci.nsIURI)) { @@ -1488,6 +1445,7 @@ aRelatedToCurrent = params.relatedToCurrent; aSkipAnimation = params.skipAnimation; aOriginPrincipal = params.originPrincipal; + aSkipBackgroundNotify = params.skipBackgroundNotify; } // if we're adding tabs, we're past interrupt mode, ditch the owner @@ -1511,6 +1469,11 @@ t.setAttribute("crop", "end"); t.setAttribute("validate", "never"); //PMed t.setAttribute("onerror", "this.removeAttribute('image');"); + + if (aSkipBackgroundNotify) { + t.setAttribute("skipbackgroundnotify", true); + } + t.className = "tabbrowser-tab"; this.tabContainer._unlockTabSizing(); @@ -1622,6 +1585,7 @@ this.mTabListeners[position] = tabListener; this.mTabFilters[position] = filter; + b._fastFind = this.fastFind; b.droppedLinkHandler = handleDroppedLink; // If we just created a new tab that loads the default @@ -2310,17 +2274,6 @@ this._swapBrowserDocShells(aOurTab, otherBrowser); } - // Handle findbar data (if any) - let otherFindBar = aOtherTab._findBar; - if (otherFindBar && - otherFindBar.findMode == otherFindBar.FIND_NORMAL) { - let ourFindBar = this.getFindBar(aOurTab); - ourFindBar._findField.value = otherFindBar._findField.value; - if (!otherFindBar.hidden) { - ourFindBar.onFindCommand(); - } - } - // Finish tearing down the tab that's going away. remoteBrowser._endRemoveTab(aOtherTab); @@ -2873,6 +2826,21 @@ onget="return this.mCurrentBrowser.currentURI;" readonly="true"/> + <field name="_fastFind">null</field> + <property name="fastFind" + readonly="true"> + <getter> + <![CDATA[ + if (!this._fastFind) { + this._fastFind = Components.classes["@mozilla.org/typeaheadfind;1"] + .createInstance(Components.interfaces.nsITypeAheadFind); + this._fastFind.init(this.docShell); + } + return this._fastFind; + ]]> + </getter> + </property> + <field name="_lastSearchString">null</field> <field name="_lastSearchHighlight">false</field> @@ -3176,28 +3144,6 @@ window.focus(); break; } - case "Findbar:Keypress": - let tab = this.getTabForBrowser(browser); - // If the find bar for this tab is not yet alive, only initialize - // it if there's a possibility FindAsYouType will be used. - // There's no point in doing it for most random keypresses. - if (!this.isFindBarInitialized(tab) && - aMessage.data.shouldFastFind) { - let shouldFastFind = this._findAsYouType; - if (!shouldFastFind) { - // Please keep in sync with toolkit/content/widgets/findbar.xml - const FAYT_LINKS_KEY = "'"; - const FAYT_TEXT_KEY = "/"; - let charCode = aMessage.data.fakeEvent.charCode; - let key = charCode ? String.fromCharCode(charCode) : null; - shouldFastFind = key == FAYT_LINKS_KEY || key == FAYT_TEXT_KEY; - } - if (shouldFastFind) { - // Make sure we return the result. - return this.getFindBar(tab).receiveMessage(aMessage); - } - } - break; } ]]></body> </method> @@ -3264,11 +3210,6 @@ this.mCurrentBrowser); } messageManager.addMessageListener("DOMWebNotificationClicked", this); - - // To correctly handle keypresses for potential FindAsYouType, while - // the tab's find bar is not yet initialized. - this._findAsYouType = Services.prefs.getBoolPref("accessibility.typeaheadfind"); - messageManager.addMessageListener("Findbar:Keypress", this); ]]> </constructor> @@ -3523,7 +3464,6 @@ tab.setAttribute("onerror", "this.removeAttribute('image');"); this.adjustTabstrip(); - Services.prefs.addObserver("accessibility.typeaheadfind", this._prefObserver, false); Services.prefs.addObserver("browser.tabs.", this._prefObserver, false); window.addEventListener("resize", this, false); window.addEventListener("load", this, false); @@ -3539,7 +3479,6 @@ <destructor> <![CDATA[ - Services.prefs.removeObserver("accessibility.typeaheadfind", this._prefObserver); Services.prefs.removeObserver("browser.tabs.", this._prefObserver); ]]> </destructor> @@ -3605,9 +3544,6 @@ observe: function (subject, topic, data) { switch (data) { - case "accessibility.typeaheadfind": - this._findAsYouType = Services.prefs.getBoolPref(data); - break; case "browser.tabs.closeButtons": this.tabContainer.mCloseButtons = Services.prefs.getIntPref(data); this.tabContainer.adjustTabstrip(); @@ -4214,7 +4150,11 @@ this._fillTrailingGap(); this._handleTabSelect(); } else { - this._notifyBackgroundTab(tab); + if (tab.hasAttribute("skipbackgroundnotify")) { + tab.removeAttribute("skipbackgroundnotify"); + } else { + this._notifyBackgroundTab(tab); + } } // XXXmano: this is a temporary workaround for bug 345399 diff --git a/application/palemoon/components/downloads/content/downloadsOverlay.xul b/application/palemoon/components/downloads/content/downloadsOverlay.xul index 2a4fe9099..ca35ee3cf 100644 --- a/application/palemoon/components/downloads/content/downloadsOverlay.xul +++ b/application/palemoon/components/downloads/content/downloadsOverlay.xul @@ -35,7 +35,7 @@ oncommand="goDoCommand('downloadsCmd_clearList')"/> </commandset> - <popupset> + <popupset id="mainPopupSet"> <!-- The panel has level="top" to ensure that it is never hidden by the taskbar on Windows. See bug 672365. For accessibility to screen readers, we use a label on the panel instead of the anchor because the diff --git a/application/palemoon/components/preferences/jar.mn b/application/palemoon/components/preferences/jar.mn index 2e2949306..47909ddc9 100644 --- a/application/palemoon/components/preferences/jar.mn +++ b/application/palemoon/components/preferences/jar.mn @@ -24,6 +24,7 @@ browser.jar: content/browser/preferences/languages.js * content/browser/preferences/main.xul content/browser/preferences/main.js + content/browser/preferences/newtaburl.js content/browser/preferences/permissions.xul * content/browser/preferences/permissions.js * content/browser/preferences/preferences.xul diff --git a/application/palemoon/components/preferences/main.xul b/application/palemoon/components/preferences/main.xul index 7634056eb..bb51947b0 100644 --- a/application/palemoon/components/preferences/main.xul +++ b/application/palemoon/components/preferences/main.xul @@ -96,6 +96,7 @@ type="autocomplete" autocompletesearch="history" onsyncfrompreference="return gMainPane.syncFromHomePref();" onsynctopreference="return gMainPane.syncToHomePref(this.value);" + oninput="gNewtabUrl.writeNewtabUrl(null, this.value);" placeholder="&abouthome.pageTitle;" preference="browser.startup.homepage"/> </hbox> @@ -103,15 +104,15 @@ <button label="" accesskey="&useCurrentPage.accesskey;" label1="&useCurrentPage.label;" label2="&useMultiple.label;" - oncommand="gMainPane.setHomePageToCurrent();" + oncommand="gMainPane.setHomePageToCurrent(); gNewtabUrl.writeNewtabUrl();" id="useCurrent" preference="pref.browser.homepage.disable_button.current_page"/> <button label="&chooseBookmark.label;" accesskey="&chooseBookmark.accesskey;" - oncommand="gMainPane.setHomePageToBookmark();" + oncommand="gMainPane.setHomePageToBookmark(); gNewtabUrl.writeNewtabUrl();" id="useBookmark" preference="pref.browser.homepage.disable_button.bookmark_page"/> <button label="&restoreDefault.label;" accesskey="&restoreDefault.accesskey;" - oncommand="gMainPane.restoreDefaultHomePage();" + oncommand="gMainPane.restoreDefaultHomePage(); gNewtabUrl.writeNewtabUrl();" id="restoreDefaultHomePage" preference="pref.browser.homepage.disable_button.restore_default"/> </hbox> diff --git a/application/palemoon/components/preferences/newtaburl.js b/application/palemoon/components/preferences/newtaburl.js new file mode 100644 index 000000000..ac0eec1c5 --- /dev/null +++ b/application/palemoon/components/preferences/newtaburl.js @@ -0,0 +1,68 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+var gNewtabUrl = {
+ /**
+ * Writes browser.newtab.url with the appropriate value.
+ * If the choice is "my home page", get and sanitize
+ * the browser home page URL to make it suitable for newtab use.
+ *
+ * Called from prefwindow ondialogaccept in preferences.xul,
+ * newtabPage oncommand in tabs.xul, browserHomePage oninput,
+ * useCurrent, useBookmark and restoreDefaultHomePage oncommand
+ * in main.xul to consider instantApply.
+ */
+ writeNewtabUrl: function(newtabUrlChoice, browserHomepageUrl) {
+ try {
+ if (newtabUrlChoice) {
+ if (Services.prefs.getBoolPref("browser.preferences.instantApply")) {
+ newtabUrlChoice = parseInt(newtabUrlChoice);
+ } else {
+ return;
+ }
+ } else {
+ newtabUrlChoice = Services.prefs.getIntPref("browser.newtab.choice");
+ }
+ if (browserHomepageUrl || browserHomepageUrl == "") {
+ if (Services.prefs.getBoolPref("browser.preferences.instantApply")) {
+ if (browserHomepageUrl == "") {
+ browserHomepageUrl = "about:home";
+ }
+ } else {
+ return;
+ }
+ } else {
+ browserHomepageUrl = Services.prefs.getComplexValue("browser.startup.homepage",
+ Components.interfaces.nsIPrefLocalizedString).data;
+ }
+ let newtabUrlPref = Services.prefs.getCharPref("browser.newtab.url");
+ switch (newtabUrlChoice) {
+ case 1:
+ newtabUrlPref = "about:logopage";
+ break;
+ case 2:
+ newtabUrlPref = Services.prefs.getDefaultBranch("browser.")
+ .getComplexValue("startup.homepage",
+ Components.interfaces.nsIPrefLocalizedString).data;
+ break;
+ case 3:
+ // If url is a pipe-delimited set of pages, just take the first one.
+ let newtabUrlSanitizedPref=browserHomepageUrl.split("|")[0];
+ // XXX: do we need extra sanitation here, e.g. for invalid URLs?
+ Services.prefs.setCharPref("browser.newtab.myhome", newtabUrlSanitizedPref);
+ newtabUrlPref = newtabUrlSanitizedPref;
+ break;
+ case 4:
+ newtabUrlPref = "about:newtab";
+ break;
+ default:
+ // In case of any other value it's a custom URL, consider instantApply.
+ if (this.newtabPageCustom) {
+ newtabUrlPref = this.newtabPageCustom;
+ }
+ }
+ Services.prefs.setCharPref("browser.newtab.url",newtabUrlPref);
+ } catch(e) { console.error(e); }
+ }
+};
diff --git a/application/palemoon/components/preferences/preferences.xul b/application/palemoon/components/preferences/preferences.xul index 2f00b960a..a1d9c8cf7 100644 --- a/application/palemoon/components/preferences/preferences.xul +++ b/application/palemoon/components/preferences/preferences.xul @@ -56,10 +56,10 @@ #endif #endif onunload="if (typeof gSecurityPane != 'undefined') gSecurityPane.syncAddonSecurityLevel();" - ondialogaccept="if (typeof gTabsPane != 'undefined') gTabsPane.writeNewtabUrl(); - return true;"> + ondialogaccept="gNewtabUrl.writeNewtabUrl();"> <script type="application/javascript" src="chrome://browser/content/utilityOverlay.js"/> + <script type="application/javascript" src="chrome://browser/content/preferences/newtaburl.js"/> <stringbundle id="bundleBrand" src="chrome://branding/locale/brand.properties"/> <stringbundle id="bundlePreferences" diff --git a/application/palemoon/components/preferences/tabs.js b/application/palemoon/components/preferences/tabs.js index f0ad8490c..17084a770 100644 --- a/application/palemoon/components/preferences/tabs.js +++ b/application/palemoon/components/preferences/tabs.js @@ -85,11 +85,14 @@ var gTabsPane = { let newtabUrlPref = document.getElementById("browser.newtab.url"); let newtabUrlSanitizedPref = document.getElementById("browser.newtab.myhome"); let newtabUrlChoice = document.getElementById("browser.newtab.choice"); + let defaultStartupHomepage = Services.prefs.getDefaultBranch("browser.") + .getComplexValue("startup.homepage", + Components.interfaces.nsIPrefLocalizedString).data; switch (newtabUrlPref.value) { case "about:logopage": newtabUrlChoice.value = 1; break; - case "http://start.palemoon.org/": + case defaultStartupHomepage: newtabUrlChoice.value = 2; break; case newtabUrlSanitizedPref.value: @@ -104,54 +107,5 @@ var gTabsPane = { // We need this to consider instantApply. this.newtabPageCustom = newtabUrlPref.value; } - }, - - /** - * Writes browser.newtab.url with the appropriate value. - * if the choice is "my home page", get and sanitize the browser home page - * URL to make it suitable for newtab use. - * - * Called from prefwindow's ondialogaccept handler and - * from browser.newtab.choice's oncommand to consider instantApply. - */ - writeNewtabUrl: function(newtabUrlChoice) { - try { - if (newtabUrlChoice) { - if (Services.prefs.getBoolPref("browser.preferences.instantApply")) { - newtabUrlChoice = parseInt(newtabUrlChoice); - } else { - return; - } - } else { - newtabUrlChoice = Services.prefs.getIntPref("browser.newtab.choice"); - } - let browserHomepageUrl = Services.prefs.getComplexValue("browser.startup.homepage", - Components.interfaces.nsIPrefLocalizedString).data; - let newtabUrlPref = Services.prefs.getCharPref("browser.newtab.url"); - switch (newtabUrlChoice) { - case 1: - newtabUrlPref = "about:logopage"; - break; - case 2: - newtabUrlPref = "http://start.palemoon.org/"; - break; - case 3: - // If url is a pipe-delimited set of pages, just take the first one. - let newtabUrlSanitizedPref=browserHomepageUrl.split("|")[0]; - // XXX: do we need extra sanitation here, e.g. for invalid URLs? - Services.prefs.setCharPref("browser.newtab.myhome", newtabUrlSanitizedPref); - newtabUrlPref = newtabUrlSanitizedPref; - break; - case 4: - newtabUrlPref = "about:newtab"; - break; - default: - // In case of any other value it's a custom URL, consider instantApply. - if (this.newtabPageCustom) { - newtabUrlPref = this.newtabPageCustom; - } - } - Services.prefs.setCharPref("browser.newtab.url",newtabUrlPref); - } catch(e) { console.error(e); } } }; diff --git a/application/palemoon/components/preferences/tabs.xul b/application/palemoon/components/preferences/tabs.xul index f5b44b776..64529d60d 100644 --- a/application/palemoon/components/preferences/tabs.xul +++ b/application/palemoon/components/preferences/tabs.xul @@ -85,7 +85,7 @@ <menulist id="newtabPage" preference="browser.newtab.choice" - oncommand="gTabsPane.writeNewtabUrl(event.target.value);"> + oncommand="gNewtabUrl.writeNewtabUrl(event.target.value);"> <menupopup> <menuitem label="&newtabPage.custom.label;" value="0" id="newtabPageCustom" hidden="true" /> <menuitem label="&newtabPage.blank.label;" value="1" /> diff --git a/application/palemoon/components/sessionstore/SessionStore.jsm b/application/palemoon/components/sessionstore/SessionStore.jsm index c5e55321c..e19a578f4 100644 --- a/application/palemoon/components/sessionstore/SessionStore.jsm +++ b/application/palemoon/components/sessionstore/SessionStore.jsm @@ -2739,7 +2739,9 @@ var SessionStoreInternal = { for (var t = 0; t < newTabCount; t++) { tabs.push(t < openTabCount ? tabbrowser.tabs[t] : - tabbrowser.addTab("about:blank", {skipAnimation: true})); + tabbrowser.addTab("about:blank", + {skipAnimation: true, + skipBackgroundNotify: true})); // when resuming at startup: add additionally requested pages to the end if (!aOverwriteTabs && root._firstTabs) { tabbrowser.moveTabTo(tabs[t], t); @@ -4684,7 +4686,8 @@ var TabAttributes = { // 'image' should not be accessed directly but handled by using the // gBrowser.getIcon()/setIcon() methods. // 'pending' is used internal by sessionstore and managed accordingly. - _skipAttrs: new Set(["image", "pending"]), + // 'skipbackgroundnotify' is used internal by tabbrowser.xml. + _skipAttrs: new Set(["image", "pending", "skipbackgroundnotify"]), persist: function (name) { if (this._attrs.has(name) || this._skipAttrs.has(name)) { diff --git a/application/palemoon/config/version.txt b/application/palemoon/config/version.txt index 41f060f2f..035159168 100644 --- a/application/palemoon/config/version.txt +++ b/application/palemoon/config/version.txt @@ -1 +1 @@ -28.0.1
\ No newline at end of file +28.1.0
\ No newline at end of file diff --git a/application/palemoon/locales/en-US/installer/custom.properties b/application/palemoon/locales/en-US/installer/custom.properties index ef29b1e7e..8f95a194b 100644 --- a/application/palemoon/locales/en-US/installer/custom.properties +++ b/application/palemoon/locales/en-US/installer/custom.properties @@ -46,7 +46,9 @@ WARN_MANUALLY_CLOSE_APP_UNINSTALL=$BrandShortName must be closed to proceed with WARN_MANUALLY_CLOSE_APP_LAUNCH=$BrandShortName is already running.\n\nPlease close $BrandShortName prior to launching the version you have just installed. WARN_WRITE_ACCESS=You don't have access to write to the installation directory.\n\nClick OK to select a different directory. WARN_DISK_SPACE=You don't have sufficient disk space to install to this location.\n\nClick OK to select a different location. -WARN_MIN_SUPPORTED_OS_MSG=Sorry, $BrandShortName can't be installed. This version of $BrandShortName requires ${MinSupportedVer} or newer. +WARN_MIN_SUPPORTED_OSVER_MSG=Sorry, $BrandShortName can't be installed. This version of $BrandShortName requires ${MinSupportedVer} or newer. +WARN_MIN_SUPPORTED_CPU_MSG=Sorry, $BrandShortName can't be installed. This version of $BrandShortName requires a processor with ${MinSupportedCPU} support. +WARN_MIN_SUPPORTED_OSVER_CPU_MSG=Sorry, $BrandShortName can't be installed. This version of $BrandShortName requires ${MinSupportedVer} or newer and a processor with ${MinSupportedCPU} support. WARN_RESTART_REQUIRED_UNINSTALL=Your computer must be restarted to complete a previous uninstall of $BrandShortName. Do you want to reboot now? WARN_RESTART_REQUIRED_UPGRADE=Your computer must be restarted to complete a previous upgrade of $BrandShortName. Do you want to reboot now? ERROR_CREATE_DIRECTORY_PREFIX=Error creating directory: diff --git a/application/palemoon/locales/en-US/installer/nsisstrings.properties b/application/palemoon/locales/en-US/installer/nsisstrings.properties index 0144c2a98..fc2898860 100644 --- a/application/palemoon/locales/en-US/installer/nsisstrings.properties +++ b/application/palemoon/locales/en-US/installer/nsisstrings.properties @@ -25,7 +25,9 @@ INSTALL_BLURB1=You're about to enjoy the very latest in speed, flexibility and s INSTALL_BLURB2=That's because $BrandShortName is made by a non-profit to make browsing and the Web better for you. INSTALL_BLURB3=You're also joining a global community of users, contributors and developers working to make the best browser in the world. -WARN_MIN_SUPPORTED_OS_MSG=Sorry, $BrandShortName can't be installed. This version of $BrandShortName requires ${MinSupportedVer} or newer. +WARN_MIN_SUPPORTED_OSVER_MSG=Sorry, $BrandShortName can't be installed. This version of $BrandShortName requires ${MinSupportedVer} or newer. +WARN_MIN_SUPPORTED_CPU_MSG=Sorry, $BrandShortName can't be installed. This version of $BrandShortName requires a processor with ${MinSupportedCPU} support. +WARN_MIN_SUPPORTED_OSVER_CPU_MSG=Sorry, $BrandShortName can't be installed. This version of $BrandShortName requires ${MinSupportedVer} or newer and a processor with ${MinSupportedCPU} support. WARN_WRITE_ACCESS=You don't have access to write to the installation directory.\n\nClick OK to select a different directory. WARN_DISK_SPACE=You don't have sufficient disk space to install to this location.\n\nClick OK to select a different location. WARN_ROOT_INSTALL=Unable to install to the root of your disk.\n\nClick OK to select a different location. @@ -46,15 +48,16 @@ ADD_CheckboxShortcutInStartMenu=In my &Start Menu Programs Folder ADD_CheckboxShortcutOnDesktop=On my &Desktop SPACE_REQUIRED=Space Required: SPACE_AVAILABLE=Space Available: -ONE_MOMENT=One moment, $BrandShortName will launch as soon as the install is complete… +ONE_MOMENT_INSTALL=One moment, $BrandShortName will launch as soon as the install is complete… +ONE_MOMENT_UPGRADE=One moment, $BrandShortName will launch as soon as the upgrade is complete… +INSTALL_MAINT_SERVICE=&Install the $BrandShortName background update service SEND_PING=S&end information about this installation to Mozilla BROWSE_BUTTON=B&rowse… DEST_FOLDER=Destination Folder -DOWNLOADING_IN_PROGRESS=Downloading… -DOWNLOADING_DONE=Downloaded -INSTALLING_TO_BE_DONE=Installing -INSTALLING_IN_PROGRESS=Installing… +DOWNLOADING_LABEL=Downloading $BrandShortName… +INSTALLING_LABEL=Installing $BrandShortName… +UPGRADING_LABEL=Upgrading $BrandShortName… SELECT_FOLDER_TEXT=Select the folder to install $BrandShortName in. diff --git a/application/palemoon/modules/WindowsPreviewPerTab.jsm b/application/palemoon/modules/WindowsPreviewPerTab.jsm index c1ed05c39..243a00aae 100644 --- a/application/palemoon/modules/WindowsPreviewPerTab.jsm +++ b/application/palemoon/modules/WindowsPreviewPerTab.jsm @@ -3,12 +3,10 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /* - * This module implements the front end behavior for AeroPeek. Starting in - * Windows Vista, the taskbar began showing live thumbnail previews of windows - * when the user hovered over the window icon in the taskbar. Starting with - * Windows 7, the taskbar allows an application to expose its tabbed interface - * in the taskbar by showing thumbnail previews rather than the default window - * preview. Additionally, when a user hovers over a thumbnail (tab or window), + * This module implements the front end behavior for AeroPeek. The taskbar + * allows an application to expose its tabbed interface by showing thumbnail + * previews rather than the default window preview. + * Additionally, when a user hovers over a thumbnail (tab or window), * they are shown a live preview of the window (or tab + its containing window). * * In Windows 7, a title, icon, close button and optional toolbar are shown for @@ -31,7 +29,7 @@ * Screen real estate is limited so when there are too many thumbnails to fit * on the screen, the taskbar stops displaying thumbnails and instead displays * just the title, icon and close button in a similar fashion to previous - * versions of the taskbar. If there are still too many previews to fit on the + * versions of the taskbar. If there are still too many previews to fit on the * screen, the taskbar resorts to a scroll up and scroll down button pair to let * the user scroll through the list of tabs. Since this is undoubtedly * inconvenient for users with many tabs, the AeroPeek objects turns off all of @@ -47,9 +45,11 @@ const Cc = Components.classes; const Ci = Components.interfaces; const Cu = Components.utils; -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); Cu.import("resource://gre/modules/NetUtil.jsm"); +Cu.import("resource://gre/modules/PlacesUtils.jsm"); Cu.import("resource://gre/modules/PrivateBrowsingUtils.jsm"); +Cu.import("resource://gre/modules/Services.jsm"); +Cu.import("resource://gre/modules/XPCOMUtils.jsm"); // Pref to enable/disable preview-per-tab const TOGGLE_PREF_NAME = "browser.taskbar.previews.enable"; @@ -60,17 +60,15 @@ const CACHE_EXPIRATION_TIME_PREF_NAME = "browser.taskbar.previews.cachetime"; const WINTASKBAR_CONTRACTID = "@mozilla.org/windows-taskbar;1"; -//////////////////////////////////////////////////////////////////////////////// -//// Various utility properties +// Various utility properties XPCOMUtils.defineLazyServiceGetter(this, "imgTools", "@mozilla.org/image/tools;1", "imgITools"); -XPCOMUtils.defineLazyServiceGetter(this, "faviconSvc", - "@mozilla.org/browser/favicon-service;1", - "nsIFaviconService"); +XPCOMUtils.defineLazyModuleGetter(this, "PageThumbs", + "resource://gre/modules/PageThumbs.jsm"); // nsIURI -> imgIContainer -function _imageFromURI(doc, uri, privateMode, callback) { +function _imageFromURI(uri, privateMode, callback) { let channel = NetUtil.newChannel({ uri: uri, loadUsingSystemPrincipal: true, @@ -93,19 +91,20 @@ function _imageFromURI(doc, uri, privateMode, callback) { } catch (e) { // We failed, so use the default favicon (only if this wasn't the default // favicon). - let defaultURI = faviconSvc.defaultFavicon; + let defaultURI = PlacesUtils.favicons.defaultFavicon; if (!defaultURI.equals(uri)) - _imageFromURI(doc, defaultURI, privateMode, callback); + _imageFromURI(defaultURI, privateMode, callback); } }); } // string? -> imgIContainer -function getFaviconAsImage(doc, iconurl, privateMode, callback) { - if (iconurl) - _imageFromURI(doc, NetUtil.newURI(iconurl), privateMode, callback); - else - _imageFromURI(doc, faviconSvc.defaultFavicon, privateMode, callback); +function getFaviconAsImage(iconurl, privateMode, callback) { + if (iconurl) { + _imageFromURI(NetUtil.newURI(iconurl), privateMode, callback); + } else { + _imageFromURI(PlacesUtils.favicons.defaultFavicon, privateMode, callback); + } } // Snaps the given rectangle to be pixel-aligned at the given scale @@ -121,16 +120,17 @@ function snapRectAtScale(r, scale) { r.height = height / scale; } -//////////////////////////////////////////////////////////////////////////////// -//// PreviewController +// PreviewController /* - * This class manages the behavior of the preview. - * - * To give greater performance when drawing, the dirty areas of the content - * window are tracked and drawn on demand into a canvas of the same size. - * This provides a great increase in responsiveness when drawing a preview - * for unchanged (or even only slightly changed) tabs. + * This class manages the behavior of thumbnails and previews. It has the following + * responsibilities: + * 1) Responding to requests from Windows taskbar for a thumbnail or window + * preview. + * 2) Listening for DOM events that result in a thumbnail or window preview needing + * to be refreshed, and communicating this to the taskbar. + * 3) Handling queryies and returning new thumbnail or window preview images to the + * taskbar through PageThumbs. * * @param win * The TabWindow (see below) that owns the preview that this controls @@ -143,206 +143,182 @@ function PreviewController(win, tab) { this.linkedBrowser = tab.linkedBrowser; this.preview = this.win.createTabPreview(this); - this.linkedBrowser.addEventListener("MozAfterPaint", this, false); this.tab.addEventListener("TabAttrModified", this, false); XPCOMUtils.defineLazyGetter(this, "canvasPreview", function () { - let canvas = this.win.win.document.createElementNS("http://www.w3.org/1999/xhtml", "canvas"); + let canvas = PageThumbs.createCanvas(); canvas.mozOpaque = true; return canvas; }); - - XPCOMUtils.defineLazyGetter(this, "dirtyRegion", - function () { - let dirtyRegion = Cc["@mozilla.org/gfx/region;1"] - .createInstance(Ci.nsIScriptableRegion); - dirtyRegion.init(); - return dirtyRegion; - }); - - XPCOMUtils.defineLazyGetter(this, "winutils", - function () { - let win = tab.linkedBrowser.contentWindow; - return win.QueryInterface(Ci.nsIInterfaceRequestor) - .getInterface(Ci.nsIDOMWindowUtils); - }); } PreviewController.prototype = { QueryInterface: XPCOMUtils.generateQI([Ci.nsITaskbarPreviewController, Ci.nsIDOMEventListener]), + destroy: function () { this.tab.removeEventListener("TabAttrModified", this, false); - this.linkedBrowser.removeEventListener("MozAfterPaint", this, false); // Break cycles, otherwise we end up leaking the window with everything // attached to it. delete this.win; delete this.preview; - delete this.dirtyRegion; }, + get wrappedJSObject() { return this; }, - get dirtyRects() { - let rectstream = this.dirtyRegion.getRects(); - if (!rectstream) - return []; - let rects = []; - for (let i = 0; i < rectstream.length; i+= 4) { - let r = {x: rectstream[i], - y: rectstream[i+1], - width: rectstream[i+2], - height: rectstream[i+3]}; - rects.push(r); - } - return rects; - }, - // Resizes the canvasPreview to 0x0, essentially freeing its memory. - // updateCanvasPreview() will detect the size mismatch as a resize event - // the next time it is called. resetCanvasPreview: function () { this.canvasPreview.width = 0; this.canvasPreview.height = 0; }, + /** + * Set the canvas dimensions. + */ + resizeCanvasPreview: function (aRequestedWidth, aRequestedHeight) { + this.canvasPreview.width = aRequestedWidth; + this.canvasPreview.height = aRequestedHeight; + }, + + get zoom() { // Note that winutils.fullZoom accounts for "quantization" of the zoom factor - // from nsIMarkupDocumentViewer due to conversion through appUnits. + // from nsIContentViewer due to conversion through appUnits. // We do -not- want screenPixelsPerCSSPixel here, because that would -also- // incorporate any scaling that is applied due to hi-dpi resolution options. - return this.winutils.fullZoom; - }, - - // Updates the controller's canvas with the parts of the <browser> that need - // to be redrawn. - updateCanvasPreview: function () { - let win = this.linkedBrowser.contentWindow; - let bx = this.linkedBrowser.boxObject; - // Check for resize - if (bx.width != this.canvasPreview.width || - bx.height != this.canvasPreview.height) { - // Invalidate the entire area and repaint - this.onTabPaint({left:0, top:0, right:win.innerWidth, bottom:win.innerHeight}); - this.canvasPreview.width = bx.width; - this.canvasPreview.height = bx.height; - } + return this.tab.linkedBrowser.fullZoom; + }, - // Draw dirty regions - let ctx = this.canvasPreview.getContext("2d"); - let scale = this.zoom; - - let flags = this.canvasPreviewFlags; - // The dirty region may include parts that are offscreen so we clip to the - // canvas area. - this.dirtyRegion.intersectRect(0, 0, win.innerWidth, win.innerHeight); - this.dirtyRects.forEach(function (r) { - // We need to snap the rectangle to be pixel aligned in the destination - // coordinate space. Otherwise natively themed widgets might not draw. - snapRectAtScale(r, scale); - let x = r.x; - let y = r.y; - let width = r.width; - let height = r.height; + get screenPixelsPerCSSPixel() { + let chromeWin = this.tab.ownerGlobal; + let windowUtils = chromeWin.getInterface(Ci.nsIDOMWindowUtils); + return windowUtils.screenPixelsPerCSSPixel; + }, - ctx.save(); - ctx.scale(scale, scale); - ctx.translate(x, y); - ctx.drawWindow(win, x, y, width, height, "white", flags); - ctx.restore(); - }); - this.dirtyRegion.setToRect(0,0,0,0); + get browserDims() { + return this.tab.linkedBrowser.getBoundingClientRect(); + }, + + cacheBrowserDims: function () { + let dims = this.browserDims; + this._cachedWidth = dims.width; + this._cachedHeight = dims.height; + }, + testCacheBrowserDims: function () { + let dims = this.browserDims; + return this._cachedWidth == dims.width && + this._cachedHeight == dims.height; + }, + + /** + * Capture a new thumbnail image for this preview. Called by the controller + * in response to a request for a new thumbnail image. + */ + updateCanvasPreview: function (aFullScale, aCallback) { + // Update our cached browser dims so that delayed resize + // events don't trigger another invalidation if this tab becomes active. + this.cacheBrowserDims(); + PageThumbs.captureToCanvas(this.linkedBrowser, this.canvasPreview, + aCallback, { fullScale: aFullScale }); // If we're updating the canvas, then we're in the middle of a peek so // don't discard the cache of previews. AeroPeek.resetCacheTimer(); }, - onTabPaint: function (rect) { - let x = Math.floor(rect.left), - y = Math.floor(rect.top), - width = Math.ceil(rect.right) - x, - height = Math.ceil(rect.bottom) - y; - this.dirtyRegion.unionRect(x, y, width, height); - }, - updateTitleAndTooltip: function () { let title = this.win.tabbrowser.getWindowTitleForBrowser(this.linkedBrowser); this.preview.title = title; this.preview.tooltip = title; }, - ////////////////////////////////////////////////////////////////////////////// - //// nsITaskbarPreviewController + // nsITaskbarPreviewController + // window width and height, not browser get width() { return this.win.width; }, + // window width and height, not browser get height() { return this.win.height; }, get thumbnailAspectRatio() { - let boxObject = this.tab.linkedBrowser.boxObject; + let browserDims = this.browserDims; // Avoid returning 0 - let tabWidth = boxObject.width || 1; + let tabWidth = browserDims.width || 1; // Avoid divide by 0 - let tabHeight = boxObject.height || 1; + let tabHeight = browserDims.height || 1; return tabWidth / tabHeight; }, - drawPreview: function (ctx) { - let self = this; - this.win.tabbrowser.previewTab(this.tab, function () self.previewTabCallback(ctx)); - - // We must avoid having the frame drawn around the window. See bug 520807 - return false; - }, - - previewTabCallback: function (ctx) { - // This will extract the resolution-scale component of the scaling we need, - // which should be applied to both chrome and content; - // the page zoom component is applied (to content only) within updateCanvasPreview. - let scale = this.winutils.screenPixelsPerCSSPixel / this.winutils.fullZoom; - ctx.save(); - ctx.scale(scale, scale); - let width = this.win.width; - let height = this.win.height; - // Draw our toplevel window - ctx.drawWindow(this.win.win, 0, 0, width, height, "transparent"); - - // XXX (jfkthame): Pending tabs don't seem to draw with the proper scaling - // unless we use this block of code; but doing this for "normal" (loaded) tabs - // results in blurry rendering on hidpi systems, so we avoid it if possible. - // I don't understand why pending and loaded tabs behave differently here... - // (see bug 857061). - if (this.tab.hasAttribute("pending")) { - // Compositor, where art thou? - // Draw the tab content on top of the toplevel window - this.updateCanvasPreview(); - - let boxObject = this.linkedBrowser.boxObject; - ctx.translate(boxObject.x, boxObject.y); - ctx.drawImage(this.canvasPreview, 0, 0); - } + /** + * Responds to taskbar requests for window previews. Returns the results asynchronously + * through updateCanvasPreview. + * + * @param aTaskbarCallback nsITaskbarPreviewCallback results callback + */ + requestPreview: function (aTaskbarCallback) { + // Grab a high res content preview + this.resetCanvasPreview(); + this.updateCanvasPreview(true, (aPreviewCanvas) => { + let winWidth = this.win.width; + let winHeight = this.win.height; - ctx.restore(); - }, + let composite = PageThumbs.createCanvas(); + + // Use transparency, Aero glass is drawn black without it. + composite.mozOpaque = false; - drawThumbnail: function (ctx, width, height) { - this.updateCanvasPreview(); + let ctx = composite.getContext('2d'); + let scale = this.screenPixelsPerCSSPixel / this.zoom; - let scale = width/this.linkedBrowser.boxObject.width; - ctx.scale(scale, scale); - ctx.drawImage(this.canvasPreview, 0, 0); + composite.width = winWidth * scale; + composite.height = winHeight * scale; - // Don't draw a frame around the thumbnail - return false; + ctx.save(); + ctx.scale(scale, scale); + + // Draw chrome. Note we currently do not get scrollbars for remote frames + // in the image above. + ctx.drawWindow(this.win.win, 0, 0, winWidth, winHeight, "rgba(0,0,0,0)"); + + // Draw the content are into the composite canvas at the right location. + ctx.drawImage(aPreviewCanvas, this.browserDims.x, this.browserDims.y, + aPreviewCanvas.width, aPreviewCanvas.height); + ctx.restore(); + + // Deliver the resulting composite canvas to Windows + this.win.tabbrowser.previewTab(this.tab, function () { + aTaskbarCallback.done(composite, false); + }); + }); + }, + + /** + * Responds to taskbar requests for tab thumbnails. Returns the results asynchronously + * through updateCanvasPreview. + * + * Note Windows requests a specific width and height here, if the resulting thumbnail + * does not match these dimensions thumbnail display will fail. + * + * @param aTaskbarCallback nsITaskbarPreviewCallback results callback + * @param aRequestedWidth width of the requested thumbnail + * @param aRequestedHeight height of the requested thumbnail + */ + requestThumbnail: function (aTaskbarCallback, aRequestedWidth, aRequestedHeight) { + this.resizeCanvasPreview(aRequestedWidth, aRequestedHeight); + this.updateCanvasPreview(false, (aThumbnailCanvas) => { + aTaskbarCallback.done(aThumbnailCanvas, false); + }); }, + // Event handling + onClose: function () { this.win.tabbrowser.removeTab(this.tab); }, @@ -355,22 +331,9 @@ PreviewController.prototype = { return true; }, - //// nsIDOMEventListener + // nsIDOMEventListener handleEvent: function (evt) { switch (evt.type) { - case "MozAfterPaint": - if (evt.originalTarget === this.linkedBrowser.contentWindow) { - let clientRects = evt.clientRects; - let length = clientRects.length; - for (let i = 0; i < length; i++) { - let r = clientRects.item(i); - this.onTabPaint(r); - } - } - let preview = this.preview; - if (preview.visible) - preview.invalidate(); - break; case "TabAttrModified": this.updateTitleAndTooltip(); break; @@ -386,14 +349,13 @@ XPCOMUtils.defineLazyGetter(PreviewController.prototype, "canvasPreviewFlags", | canvasInterface.DRAWWINDOW_DO_NOT_FLUSH; }); -//////////////////////////////////////////////////////////////////////////////// -//// TabWindow +// TabWindow /* * This class monitors a browser window for changes to its tabs * * @param win - * The nsIDOMWindow browser window + * The nsIDOMWindow browser window */ function TabWindow(win) { this.win = win; @@ -403,6 +365,10 @@ function TabWindow(win) { for (let i = 0; i < this.tabEvents.length; i++) this.tabbrowser.tabContainer.addEventListener(this.tabEvents[i], this, false); + + for (let i = 0; i < this.winEvents.length; i++) + this.win.addEventListener(this.winEvents[i], this, false); + this.tabbrowser.addTabsProgressListener(this); AeroPeek.windows.push(this); @@ -416,7 +382,10 @@ function TabWindow(win) { TabWindow.prototype = { _enabled: false, + _cachedWidth: 0, + _cachedHeight: 0, tabEvents: ["TabOpen", "TabClose", "TabSelect", "TabMove"], + winEvents: ["resize"], destroy: function () { this._destroying = true; @@ -424,6 +393,10 @@ TabWindow.prototype = { let tabs = this.tabbrowser.tabs; this.tabbrowser.removeTabsProgressListener(this); + + for (let i = 0; i < this.winEvents.length; i++) + this.win.removeEventListener(this.winEvents[i], this, false); + for (let i = 0; i < this.tabEvents.length; i++) this.tabbrowser.tabContainer.removeEventListener(this.tabEvents[i], this, false); @@ -442,6 +415,15 @@ TabWindow.prototype = { return this.win.innerHeight; }, + cacheDims: function () { + this._cachedWidth = this.width; + this._cachedHeight = this.height; + }, + + testCacheDims: function () { + return this._cachedWidth == this.width && this._cachedHeight == this.height; + }, + // Invoked when the given tab is added to this window newTab: function (tab) { let controller = new PreviewController(this, tab); @@ -461,18 +443,8 @@ TabWindow.prototype = { let preview = AeroPeek.taskbar.createTaskbarTabPreview(docShell, controller); preview.visible = AeroPeek.enabled; preview.active = this.tabbrowser.selectedTab == controller.tab; - // Grab the default favicon - getFaviconAsImage( - controller.linkedBrowser.contentWindow.document, - null, - PrivateBrowsingUtils.isWindowPrivate(this.win), - function (img) { - // It is possible that we've already gotten the real favicon, so make sure - // we have not set one before setting this default one. - if (!preview.icon) - preview.icon = img; - }); - + this.onLinkIconAvailable(controller.tab.linkedBrowser, + controller.tab.getAttribute("image")); return preview; }, @@ -484,8 +456,6 @@ TabWindow.prototype = { preview.move(null); preview.controller.wrappedJSObject.destroy(); - // We don't want to splice from the array if the tabs aren't being removed - // from the tab bar as well (as is the case when the window closes). this.previews.delete(tab); AeroPeek.removePreview(preview); }, @@ -499,7 +469,7 @@ TabWindow.prototype = { // Because making a tab visible requires that the tab it is next to be // visible, it is far simpler to unset the 'next' tab and recreate them all // at once. - for (let [tab, preview] of this.previews) { + for (let [, preview] of this.previews) { preview.move(null); preview.visible = enable; } @@ -514,27 +484,25 @@ TabWindow.prototype = { let previews = this.previews; let tabs = this.tabbrowser.tabs; - // Previews are internally stored using a map, so we need to iterate over - // the tabbrowser's array of tabs to retrieve previews in the same order. - // Tycho: let inorder = [previews.get(t) for (t of tabs) if (previews.has(t))]; + // Previews are internally stored using a map, so we need to iterate the + // tabbrowser's array of tabs to retrieve previews in the same order. let inorder = []; - for (let t of tabs) { if (previews.has(t)) { inorder.push(previews.get(t)); } } - // Since the internal taskbar array has not yet been updated, we must force - // the sorting order of our local array on it. To do so, we must walk - // the local array backwards, because otherwise we would send move requests - // in the wrong order. See bug 522610 for details. + // Since the internal taskbar array has not yet been updated we must force + // on it the sorting order of our local array. To do so we must walk + // the local array backwards, otherwise we would send move requests in the + // wrong order. See bug 522610 for details. for (let i = inorder.length - 1; i >= 0; i--) { inorder[i].move(inorder[i + 1] || null); } }, - //// nsIDOMEventListener + // nsIDOMEventListener handleEvent: function (evt) { let tab = evt.originalTarget; switch (evt.type) { @@ -552,28 +520,117 @@ TabWindow.prototype = { case "TabMove": this.updateTabOrdering(); break; + case "resize": + if (!AeroPeek._prefenabled) + return; + this.onResize(); + break; + } + }, + + // Set or reset a timer that will invalidate visible thumbnails soon. + setInvalidationTimer: function () { + if (!this.invalidateTimer) { + this.invalidateTimer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer); + } + this.invalidateTimer.cancel(); + + // delay 1 second before invalidating + this.invalidateTimer.initWithCallback(() => { + // invalidate every preview. note the internal implementation of + // invalidate ignores thumbnails that aren't visible. + this.previews.forEach(function (aPreview) { + let controller = aPreview.controller.wrappedJSObject; + if (!controller.testCacheBrowserDims()) { + controller.cacheBrowserDims(); + aPreview.invalidate(); + } + }); + }, 1000, Ci.nsITimer.TYPE_ONE_SHOT); + }, + + onResize: function () { + // Specific to a window. + + // Call invalidate on each tab thumbnail so that Windows will request an + // updated image. However don't do this repeatedly across multiple resize + // events triggered during window border drags. + + if (this.testCacheDims()) { + return; + } + + // update the window dims on our TabWindow object. + this.cacheDims(); + + // invalidate soon + this.setInvalidationTimer(); + }, + + invalidateTabPreview: function(aBrowser) { + for (let [tab, preview] of this.previews) { + if (aBrowser == tab.linkedBrowser) { + preview.invalidate(); + break; + } + } + }, + + // Browser progress listener + + onLocationChange: function (aBrowser) { + // I'm not sure we need this, onStateChange does a really good job + // of picking up page changes. + // this.invalidateTabPreview(aBrowser); + }, + + onStateChange: function (aBrowser, aWebProgress, aRequest, aStateFlags, aStatus) { + if (aStateFlags & Ci.nsIWebProgressListener.STATE_STOP && + aStateFlags & Ci.nsIWebProgressListener.STATE_IS_NETWORK) { + this.invalidateTabPreview(aBrowser); } }, - //// Browser progress listener + directRequestProtocols: new Set([ + "file", "chrome", "resource", "about" + ]), onLinkIconAvailable: function (aBrowser, aIconURL) { - let self = this; + let requestURL = null; + if (aIconURL) { + let shouldRequestFaviconURL = true; + try { + let urlObject = NetUtil.newURI(aIconURL); + shouldRequestFaviconURL = + !this.directRequestProtocols.has(urlObject.scheme); + } catch (ex) {} + + requestURL = shouldRequestFaviconURL ? + "moz-anno:favicon:" + aIconURL : + aIconURL; + } + let isDefaultFavicon = !requestURL; getFaviconAsImage( - aBrowser.contentWindow.document, - aIconURL,PrivateBrowsingUtils.isWindowPrivate(this.win), - function (img) { - let index = self.tabbrowser.browsers.indexOf(aBrowser); - // Only add it if we've found the index. The tab could have closed! + requestURL, + PrivateBrowsingUtils.isWindowPrivate(this.win), + img => { + let index = this.tabbrowser.browsers.indexOf(aBrowser); + // Only add it if we've found the index and the URI is still the same. + // The tab could have closed, and there's no guarantee the icons + // will have finished fetching 'in order'. if (index != -1) { - let tab = self.tabbrowser.tabs[index]; - self.previews.get(tab).icon = img; + let tab = this.tabbrowser.tabs[index]; + let preview = this.previews.get(tab); + if (tab.getAttribute("image") == aIconURL || + (!preview.icon && isDefaultFavicon)) { + preview.icon = img; + } } - }); + } + ); } } -//////////////////////////////////////////////////////////////////////////////// -//// AeroPeek +// AeroPeek /* * This object acts as global storage and external interface for this feature. @@ -582,10 +639,12 @@ TabWindow.prototype = { this.AeroPeek = { available: false, // Does the pref say we're enabled? - _prefenabled: true, + __prefenabled: false, _enabled: true, + initialized: false, + // nsITaskbarTabPreview array previews: [], @@ -609,24 +668,14 @@ this.AeroPeek = { if (!this.available) return; - this.prefs.addObserver(TOGGLE_PREF_NAME, this, false); - this.prefs.addObserver(DISABLE_THRESHOLD_PREF_NAME, this, false); - this.prefs.addObserver(CACHE_EXPIRATION_TIME_PREF_NAME, this, false); - - this.cacheLifespan = this.prefs.getIntPref(CACHE_EXPIRATION_TIME_PREF_NAME); - - this.maxpreviews = this.prefs.getIntPref(DISABLE_THRESHOLD_PREF_NAME); - + this.prefs.addObserver(TOGGLE_PREF_NAME, this, true); this.enabled = this._prefenabled = this.prefs.getBoolPref(TOGGLE_PREF_NAME); + this.initialized = true; }, destroy: function destroy() { this._enabled = false; - this.prefs.removeObserver(TOGGLE_PREF_NAME, this); - this.prefs.removeObserver(DISABLE_THRESHOLD_PREF_NAME, this); - this.prefs.removeObserver(CACHE_EXPIRATION_TIME_PREF_NAME, this); - if (this.cacheTimer) this.cacheTimer.cancel(); }, @@ -646,6 +695,61 @@ this.AeroPeek = { }); }, + get _prefenabled() { + return this.__prefenabled; + }, + + set _prefenabled(enable) { + if (enable == this.__prefenabled) { + return; + } + this.__prefenabled = enable; + + if (enable) { + this.enable(); + } else { + this.disable(); + } + }, + + _observersAdded: false, + + enable() { + if (!this._observersAdded) { + this.prefs.addObserver(DISABLE_THRESHOLD_PREF_NAME, this, true); + this.prefs.addObserver(CACHE_EXPIRATION_TIME_PREF_NAME, this, true); + PlacesUtils.history.addObserver(this, true); + this._observersAdded = true; + } + + this.cacheLifespan = this.prefs.getIntPref(CACHE_EXPIRATION_TIME_PREF_NAME); + + this.maxpreviews = this.prefs.getIntPref(DISABLE_THRESHOLD_PREF_NAME); + + // If the user toggled us on/off while the browser was already up + // (rather than this code running on startup because the pref was + // already set to true), we must initialize previews for open windows: + if (this.initialized) { + let browserWindows = Services.wm.getEnumerator("navigator:browser"); + while (browserWindows.hasMoreElements()) { + let win = browserWindows.getNext(); + if (!win.closed) { + this.onOpenWindow(win); + } + } + } + }, + + disable() { + while (this.windows.length) { + // We can't call onCloseWindow here because it'll bail if we're not + // enabled. + let tabWinObject = this.windows[0]; + tabWinObject.destroy(); // This will remove us from the array. + delete tabWinObject.win.gTaskbarTabGroup; // Tidy up the window. + } + }, + addPreview: function (preview) { this.previews.push(preview); this.checkPreviewCount(); @@ -658,15 +762,15 @@ this.AeroPeek = { }, checkPreviewCount: function () { - if (this.previews.length > this.maxpreviews) - this.enabled = false; - else - this.enabled = this._prefenabled; + if (!this._prefenabled) { + return; + } + this.enabled = this.previews.length <= this.maxpreviews; }, onOpenWindow: function (win) { // This occurs when the taskbar service is not available (xp, vista) - if (!this.available) + if (!this.available || !this._prefenabled) return; win.gTaskbarTabGroup = new TabWindow(win); @@ -674,7 +778,7 @@ this.AeroPeek = { onCloseWindow: function (win) { // This occurs when the taskbar service is not available (xp, vista) - if (!this.available) + if (!this.available || !this._prefenabled) return; win.gTaskbarTabGroup.destroy(); @@ -689,16 +793,20 @@ this.AeroPeek = { this.cacheTimer.init(this, 1000*this.cacheLifespan, Ci.nsITimer.TYPE_ONE_SHOT); }, - //// nsIObserver + // nsIObserver observe: function (aSubject, aTopic, aData) { + if (aTopic == "nsPref:changed" && aData == TOGGLE_PREF_NAME) { + this._prefenabled = this.prefs.getBoolPref(TOGGLE_PREF_NAME); + } + if (!this._prefenabled) { + return; + } switch (aTopic) { case "nsPref:changed": if (aData == CACHE_EXPIRATION_TIME_PREF_NAME) break; - if (aData == TOGGLE_PREF_NAME) - this._prefenabled = this.prefs.getBoolPref(TOGGLE_PREF_NAME); - else if (aData == DISABLE_THRESHOLD_PREF_NAME) + if (aData == DISABLE_THRESHOLD_PREF_NAME) this.maxpreviews = this.prefs.getIntPref(DISABLE_THRESHOLD_PREF_NAME); // Might need to enable/disable ourselves this.checkPreviewCount(); @@ -710,10 +818,38 @@ this.AeroPeek = { }); break; } - } + }, + + /* nsINavHistoryObserver implementation */ + onBeginUpdateBatch() {}, + onEndUpdateBatch() {}, + onVisit() {}, + onTitleChanged() {}, + onFrecencyChanged() {}, + onManyFrecenciesChanged() {}, + onDeleteURI() {}, + onClearHistory() {}, + onDeleteVisits() {}, + onPageChanged(uri, changedConst, newValue) { + if (this.enabled && changedConst == Ci.nsINavHistoryObserver.ATTRIBUTE_FAVICON) { + for (let win of this.windows) { + for (let [tab, ] of win.previews) { + if (tab.getAttribute("image") == newValue) { + win.onLinkIconAvailable(tab.linkedBrowser, newValue); + } + } + } + } + }, + + QueryInterface: XPCOMUtils.generateQI([ + Ci.nsISupportsWeakReference, + Ci.nsINavHistoryObserver, + Ci.nsIObserver + ]), }; -XPCOMUtils.defineLazyGetter(AeroPeek, "cacheTimer", function () +XPCOMUtils.defineLazyGetter(AeroPeek, "cacheTimer", () => Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer) ); diff --git a/application/palemoon/themes/linux/browser.css b/application/palemoon/themes/linux/browser.css index 987406264..c6587babc 100644 --- a/application/palemoon/themes/linux/browser.css +++ b/application/palemoon/themes/linux/browser.css @@ -1570,12 +1570,6 @@ richlistitem[type~="action"][actiontype="switchtab"] > .ac-url-box > .ac-action- background-color: Window; } -.browserContainer > findbar { - background-color: -moz-dialog; - color: -moz-DialogText; - text-shadow: none; -} - /* Throbber */ #navigator-throbber { width: 16px; diff --git a/application/palemoon/themes/osx/browser.css b/application/palemoon/themes/osx/browser.css index 97073b161..a915af3a3 100644 --- a/application/palemoon/themes/osx/browser.css +++ b/application/palemoon/themes/osx/browser.css @@ -1601,12 +1601,6 @@ richlistitem[type~="action"][actiontype="switchtab"][selected="true"] > .ac-url- -moz-padding-start: 0px; } -.browserContainer > findbar { - background-color: -moz-dialog; - color: -moz-DialogText; - text-shadow: none; -} - /* ::::: throbber ::::: */ #navigator-throbber { diff --git a/application/palemoon/themes/windows/browser.css b/application/palemoon/themes/windows/browser.css index 1aefa428c..45f0e066c 100644 --- a/application/palemoon/themes/windows/browser.css +++ b/application/palemoon/themes/windows/browser.css @@ -1788,12 +1788,6 @@ richlistitem[type~="action"][actiontype="switchtab"] > .ac-url-box > .ac-action- -moz-padding-start: 0px; } -.browserContainer > findbar { - background-color: -moz-dialog; - color: -moz-DialogText; - text-shadow: none; -} - /* ::::: throbber ::::: */ #navigator-throbber { diff --git a/build/moz.configure/warnings.configure b/build/moz.configure/warnings.configure index 273a41bd9..567814632 100644 --- a/build/moz.configure/warnings.configure +++ b/build/moz.configure/warnings.configure @@ -101,11 +101,22 @@ check_and_add_gcc_warning('-Wno-error=coverage-mismatch', when='MOZ_PGO') # false positives during PGO check_and_add_gcc_warning('-Wno-error=free-nonheap-object', when='MOZ_PGO') +# Would be a pain to fix all occurrences, for very little gain +check_and_add_gcc_warning('-Wno-error=multistatement-macros') + # We use mix of both POSIX and Win32 printf format across the tree, so format # warnings are useless on mingw. check_and_add_gcc_warning('-Wno-format', when=depends(target)(lambda t: t.kernel == 'WINNT')) +# Disable a warning with GCC 7+. +# We are far from using C++17 and the impact of the warning will be +# limited to a potential public ABI. +# Currently only affecting js/ +check_and_add_gcc_warning('-Wno-noexcept-type', cxx_compiler, + when=depends(build_project) + (lambda build_project: build_project == 'js')) + # Please keep these last in this file add_old_configure_assignment('_WARNINGS_CFLAGS', warnings_cflags) add_old_configure_assignment('_WARNINGS_CXXFLAGS', warnings_cxxflags) diff --git a/config/external/nss/nss.symbols b/config/external/nss/nss.symbols index ba5492c37..3239d3119 100644 --- a/config/external/nss/nss.symbols +++ b/config/external/nss/nss.symbols @@ -271,7 +271,6 @@ NSS_IsInitialized NSS_OptionSet NSS_NoDB_Init NSS_SecureMemcmp -NSS_SecureMemcmpZero NSS_SetAlgorithmPolicy NSS_SetDomesticPolicy NSS_Shutdown @@ -490,7 +489,6 @@ PORT_UCS2_ASCIIConversion_Util PORT_UCS2_UTF8Conversion PORT_UCS2_UTF8Conversion_Util PORT_ZAlloc -PORT_ZAllocAlignedOffset_Util PORT_ZAlloc_Util PORT_ZFree_Util SEC_AnyTemplate_Util @DATA@ @@ -725,9 +723,17 @@ VFY_VerifyDataWithAlgorithmID VFY_VerifyDigestDirect _SGN_VerifyPKCS1DigestInfo __PK11_SetCertificateNickname -# These symbols are not used by Firefox itself, but are used by Java's security -# libraries, which in turn are used by Java applets/plugins/etc. Provide them -# to make Java code happy. +# These symbols are not used by applications but are possibly used across +# NSS library boundaries. +NSS_SecureMemcmpZero +PORT_ZAllocAlignedOffset_Util +CERT_FindCertByNicknameOrEmailAddrCX +SECKEY_GetPrivateKeyType +SEC_DerSignDataWithAlgorithmID +SEC_CreateSignatureAlgorithmParameters +# These symbols are not used by applicatons themselves, but are used by +# Java's security libraries, which in turn are used by Java +# applets/plugins/etc. Provide them to make Java code happy. NSS_VersionCheck NSS_Initialize #ifdef NSS_EXTRA_SYMBOLS_FILE diff --git a/config/milestone.txt b/config/milestone.txt index 4f75be17f..1d06be496 100644 --- a/config/milestone.txt +++ b/config/milestone.txt @@ -10,4 +10,4 @@ # hardcoded milestones in the tree from these two files. #-------------------------------------------------------- -4.1.4 +4.1.5 diff --git a/devtools/shared/heapsnapshot/HeapSnapshot.cpp b/devtools/shared/heapsnapshot/HeapSnapshot.cpp index 17f43f34e..ef0bde948 100644 --- a/devtools/shared/heapsnapshot/HeapSnapshot.cpp +++ b/devtools/shared/heapsnapshot/HeapSnapshot.cpp @@ -28,7 +28,6 @@ #include "mozilla/dom/ContentChild.h" #include "mozilla/dom/HeapSnapshotBinding.h" #include "mozilla/RangedPtr.h" -#include "mozilla/Telemetry.h" #include "mozilla/Unused.h" #include "jsapi.h" @@ -1610,13 +1609,6 @@ ThreadSafeChromeUtils::SaveHeapSnapshot(GlobalObject& global, return; } } - - Telemetry::AccumulateTimeDelta(Telemetry::DEVTOOLS_SAVE_HEAP_SNAPSHOT_MS, - start); - Telemetry::Accumulate(Telemetry::DEVTOOLS_HEAP_SNAPSHOT_NODE_COUNT, - nodeCount); - Telemetry::Accumulate(Telemetry::DEVTOOLS_HEAP_SNAPSHOT_EDGE_COUNT, - edgeCount); } /* static */ already_AddRefed<HeapSnapshot> @@ -1641,10 +1633,6 @@ ThreadSafeChromeUtils::ReadHeapSnapshot(GlobalObject& global, global.Context(), global, reinterpret_cast<const uint8_t*>(mm.address()), mm.size(), rv); - if (!rv.Failed()) - Telemetry::AccumulateTimeDelta(Telemetry::DEVTOOLS_READ_HEAP_SNAPSHOT_MS, - start); - return snapshot.forget(); } diff --git a/devtools/shared/security/socket.js b/devtools/shared/security/socket.js index 068a8ea81..9c6f5750a 100644 --- a/devtools/shared/security/socket.js +++ b/devtools/shared/security/socket.js @@ -480,7 +480,6 @@ SocketListener.prototype = { _setAdditionalSocketOptions: Task.async(function* () { if (this.encryption) { this._socket.serverCert = yield cert.local.getOrCreate(); - this._socket.setSessionCache(false); this._socket.setSessionTickets(false); let requestCert = Ci.nsITLSServerSocket.REQUEST_NEVER; this._socket.setRequestClientCertificate(requestCert); diff --git a/docs/CODE_OF_CONDUCT.md b/docs/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..bcd8b8f77 --- /dev/null +++ b/docs/CODE_OF_CONDUCT.md @@ -0,0 +1,48 @@ +# Contributor Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, physical attributes, disability, ethnicity, level of experience, nationality, personal appearance, race, religion, or sexual orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment include: + +* Using welcoming and inclusive language +* Being courteous (use "please" when you ask something of someone) +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism, even if you disagree with such criticism. +* Similarly, accepting that someone may not act on criticism given. +* Focusing on what is best for the community and its projects +* Showing understanding and a reasonable level of empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* Unwelcome sexual attention or advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct or community's or projects' best interests, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, acting on behalf of the project on IRC or other chat networks, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project owner at moonchild@palemoon.org. The project owner will review and investigate all complaints, and will respond in a way that they deem appropriate for the circumstances. The project team is generally obligated to maintain confidentiality with regard to the reporter of an incident, although in exceptional cases where intervention of authorities is required, the reporter may be individually identified to aid in the investigation or resolution of a conflict situation. Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version [1.4][version]. + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp index 8eca47495..ae307431d 100644 --- a/docshell/base/nsDocShell.cpp +++ b/docshell/base/nsDocShell.cpp @@ -1972,71 +1972,7 @@ nsDocShell::GetCharset(nsACString& aCharset) NS_IMETHODIMP nsDocShell::GatherCharsetMenuTelemetry() { - nsCOMPtr<nsIContentViewer> viewer; - GetContentViewer(getter_AddRefs(viewer)); - if (!viewer) { - return NS_OK; - } - - nsIDocument* doc = viewer->GetDocument(); - if (!doc || doc->WillIgnoreCharsetOverride()) { - return NS_OK; - } - - Telemetry::Accumulate(Telemetry::CHARSET_OVERRIDE_USED, true); - - bool isFileURL = false; - nsIURI* url = doc->GetOriginalURI(); - if (url) { - url->SchemeIs("file", &isFileURL); - } - - int32_t charsetSource = doc->GetDocumentCharacterSetSource(); - switch (charsetSource) { - case kCharsetFromTopLevelDomain: - // Unlabeled doc on a domain that we map to a fallback encoding - Telemetry::Accumulate(Telemetry::CHARSET_OVERRIDE_SITUATION, 7); - break; - case kCharsetFromFallback: - case kCharsetFromDocTypeDefault: - case kCharsetFromCache: - case kCharsetFromParentFrame: - case kCharsetFromHintPrevDoc: - // Changing charset on an unlabeled doc. - if (isFileURL) { - Telemetry::Accumulate(Telemetry::CHARSET_OVERRIDE_SITUATION, 0); - } else { - Telemetry::Accumulate(Telemetry::CHARSET_OVERRIDE_SITUATION, 1); - } - break; - case kCharsetFromAutoDetection: - // Changing charset on unlabeled doc where chardet fired - if (isFileURL) { - Telemetry::Accumulate(Telemetry::CHARSET_OVERRIDE_SITUATION, 2); - } else { - Telemetry::Accumulate(Telemetry::CHARSET_OVERRIDE_SITUATION, 3); - } - break; - case kCharsetFromMetaPrescan: - case kCharsetFromMetaTag: - case kCharsetFromChannel: - // Changing charset on a doc that had a charset label. - Telemetry::Accumulate(Telemetry::CHARSET_OVERRIDE_SITUATION, 4); - break; - case kCharsetFromParentForced: - case kCharsetFromUserForced: - // Changing charset on a document that already had an override. - Telemetry::Accumulate(Telemetry::CHARSET_OVERRIDE_SITUATION, 5); - break; - case kCharsetFromIrreversibleAutoDetection: - case kCharsetFromOtherComponent: - case kCharsetFromByteOrderMark: - case kCharsetUninitialized: - default: - // Bug. This isn't supposed to happen. - Telemetry::Accumulate(Telemetry::CHARSET_OVERRIDE_SITUATION, 6); - break; - } + /* STUB */ return NS_OK; } @@ -5062,10 +4998,6 @@ nsDocShell::DisplayLoadError(nsresult aError, nsIURI* aURI, errorPage.Assign(alternateErrorPage); } - if (!IsFrame() && errorPage.EqualsIgnoreCase("certerror")) { - Telemetry::Accumulate(mozilla::Telemetry::SECURITY_UI, bucketId); - } - } else { error.AssignLiteral("nssFailure2"); } @@ -5105,10 +5037,6 @@ nsDocShell::DisplayLoadError(nsresult aError, nsIURI* aURI, : nsISecurityUITelemetry::WARNING_UNWANTED_PAGE_TOP; } - if (sendTelemetry && errorPage.EqualsIgnoreCase("blocked")) { - Telemetry::Accumulate(Telemetry::SECURITY_UI, bucketId); - } - cssClass.AssignLiteral("blacklist"); } else if (NS_ERROR_CONTENT_CRASHED == aError) { errorPage.AssignLiteral("tabcrashed"); @@ -7622,8 +7550,6 @@ nsDocShell::EndPageLoad(nsIWebProgress* aProgress, TimeStamp channelCreationTime; rv = timingChannel->GetChannelCreation(&channelCreationTime); if (NS_SUCCEEDED(rv) && !channelCreationTime.IsNull()) { - Telemetry::AccumulateTimeDelta(Telemetry::TOTAL_CONTENT_PAGE_LOAD_TIME, - channelCreationTime); nsCOMPtr<nsPILoadGroupInternal> internalLoadGroup = do_QueryInterface(mLoadGroup); if (internalLoadGroup) { @@ -12281,7 +12207,9 @@ nsDocShell::ShouldAddToSessionHistory(nsIURI* aURI) return false; } - if (buf.EqualsLiteral("blank") || buf.EqualsLiteral("newtab")) { + if (buf.EqualsLiteral("blank") || buf.EqualsLiteral("logopage") || + (buf.EqualsLiteral("newtab") && + !Preferences::GetBool("browser.newtabpage.add_to_session_history", false))) { return false; } } diff --git a/dom/base/Navigator.cpp b/dom/base/Navigator.cpp index ed96ee23b..1bc4f82f4 100644 --- a/dom/base/Navigator.cpp +++ b/dom/base/Navigator.cpp @@ -684,8 +684,6 @@ Navigator::GetDoNotTrack(nsAString &aResult) bool Navigator::JavaEnabled(ErrorResult& aRv) { - Telemetry::AutoTimer<Telemetry::CHECK_JAVA_ENABLED> telemetryTimer; - // Return true if we have a handler for the java mime nsAdoptingString javaMIME = Preferences::GetString("plugin.java.mime"); NS_ENSURE_TRUE(!javaMIME.IsEmpty(), false); diff --git a/dom/base/nsContentUtils.cpp b/dom/base/nsContentUtils.cpp index 34c7d23b8..3696195dd 100644 --- a/dom/base/nsContentUtils.cpp +++ b/dom/base/nsContentUtils.cpp @@ -7597,6 +7597,24 @@ nsContentUtils::IsFileImage(nsIFile* aFile, nsACString& aType) } nsresult +nsContentUtils::CalculateBufferSizeForImage(const uint32_t& aStride, + const IntSize& aImageSize, + const SurfaceFormat& aFormat, + size_t* aMaxBufferSize, + size_t* aUsedBufferSize) +{ + CheckedInt32 requiredBytes = + CheckedInt32(aStride) * CheckedInt32(aImageSize.height); + if (!requiredBytes.isValid()) { + return NS_ERROR_FAILURE; + } + *aMaxBufferSize = requiredBytes.value(); + *aUsedBufferSize = *aMaxBufferSize - aStride + + (aImageSize.width * BytesPerPixel(aFormat)); + return NS_OK; +} + +nsresult nsContentUtils::DataTransferItemToImage(const IPCDataTransferItem& aItem, imgIContainer** aContainer) { @@ -7611,6 +7629,22 @@ nsContentUtils::DataTransferItemToImage(const IPCDataTransferItem& aItem, Shmem data = aItem.data().get_Shmem(); + // Validate shared memory buffer size + size_t imageBufLen = 0; + size_t maxBufLen = 0; + nsresult rv = CalculateBufferSizeForImage(imageDetails.stride(), + size, + static_cast<SurfaceFormat>( + imageDetails.format()), + &maxBufLen, + &imageBufLen); + if (NS_FAILED(rv)) { + return rv; + } + if (imageBufLen > data.Size<uint8_t>()) { + return NS_ERROR_FAILURE; + } + RefPtr<DataSourceSurface> image = CreateDataSourceSurfaceFromData(size, static_cast<SurfaceFormat>(imageDetails.format()), @@ -7950,20 +7984,19 @@ GetSurfaceDataImpl(mozilla::gfx::DataSourceSurface* aSurface, return GetSurfaceDataContext::NullValue(); } - mozilla::gfx::IntSize size = aSurface->GetSize(); - mozilla::CheckedInt32 requiredBytes = - mozilla::CheckedInt32(map.mStride) * mozilla::CheckedInt32(size.height); - if (!requiredBytes.isValid()) { + size_t bufLen = 0; + size_t maxBufLen = 0; + nsresult rv = nsContentUtils::CalculateBufferSizeForImage(map.mStride, + aSurface->GetSize(), + aSurface->GetFormat(), + &maxBufLen, + &bufLen); + if (NS_FAILED(rv)) { + // Release mapped memory + aSurface->Unmap(); return GetSurfaceDataContext::NullValue(); } - size_t maxBufLen = requiredBytes.value(); - mozilla::gfx::SurfaceFormat format = aSurface->GetFormat(); - - // Surface data handling is totally nuts. This is the magic one needs to - // know to access the data. - size_t bufLen = maxBufLen - map.mStride + (size.width * BytesPerPixel(format)); - // nsDependentCString wants null-terminated string. typename GetSurfaceDataContext::ReturnType surfaceData = aContext.Allocate(maxBufLen + 1); if (GetSurfaceDataContext::GetBuffer(surfaceData)) { @@ -9787,3 +9820,19 @@ nsContentUtils::AttemptLargeAllocationLoad(nsIHttpChannel* aChannel) return reloadSucceeded; } + +/* static */ bool +nsContentUtils::IsLocalRefURL(const nsString& aString) +{ + // Find the first non-"C0 controls + space" character. + const char16_t* current = aString.get(); + for (; *current != '\0'; current++) { + if (*current > 0x20) { + // if the first non-"C0 controls + space" character is '#', this is a + // local-ref URL. + return *current == '#'; + } + } + + return false; +}
\ No newline at end of file diff --git a/dom/base/nsContentUtils.h b/dom/base/nsContentUtils.h index 9ae6d2155..98df92efb 100644 --- a/dom/base/nsContentUtils.h +++ b/dom/base/nsContentUtils.h @@ -975,11 +975,17 @@ public: static bool PrefetchEnabled(nsIDocShell* aDocShell); + static nsresult CalculateBufferSizeForImage(const uint32_t& aStride, + const mozilla::gfx::IntSize& aImageSize, + const mozilla::gfx::SurfaceFormat& aFormat, + size_t* aMaxBufferSize, + size_t* aUsedBufferSize); + +private: /** * Fill (with the parameters given) the localized string named |aKey| in * properties file |aFile|. */ -private: static nsresult FormatLocalizedString(PropertiesFile aFile, const char* aKey, const char16_t** aParams, @@ -2730,6 +2736,13 @@ public: static bool AttemptLargeAllocationLoad(nsIHttpChannel* aChannel); + /** + * Detect whether a string is a (CSS) local-url. + * https://drafts.csswg.org/css-values/#local-urls + */ + static bool + IsLocalRefURL(const nsString& aString); + private: static bool InitializeEventTable(); diff --git a/dom/base/nsDOMClassInfo.cpp b/dom/base/nsDOMClassInfo.cpp index d125e5ad1..1cfde6e1b 100644 --- a/dom/base/nsDOMClassInfo.cpp +++ b/dom/base/nsDOMClassInfo.cpp @@ -49,7 +49,6 @@ #include "nsContentUtils.h" #include "nsIDOMGlobalPropertyInitializer.h" #include "mozilla/Attributes.h" -#include "mozilla/Telemetry.h" // Window scriptable helper includes #include "nsScriptNameSpaceManager.h" @@ -1903,9 +1902,6 @@ LookupComponentsShim(JSContext *cx, JS::Handle<JSObject*> global, nsPIDOMWindowInner *win, JS::MutableHandle<JS::PropertyDescriptor> desc) { - // Keep track of how often this happens. - Telemetry::Accumulate(Telemetry::COMPONENTS_SHIM_ACCESSED_BY_CONTENT, true); - // Warn once. nsCOMPtr<nsIDocument> doc = win->GetExtantDoc(); if (doc) { diff --git a/dom/base/nsDOMNavigationTiming.cpp b/dom/base/nsDOMNavigationTiming.cpp index 32ce8a8cb..9c732f2d8 100644 --- a/dom/base/nsDOMNavigationTiming.cpp +++ b/dom/base/nsDOMNavigationTiming.cpp @@ -15,7 +15,6 @@ #include "nsPrintfCString.h" #include "mozilla/dom/PerformanceNavigation.h" #include "mozilla/TimeStamp.h" -#include "mozilla/Telemetry.h" using namespace mozilla; @@ -203,12 +202,6 @@ nsDOMNavigationTiming::NotifyNonBlankPaintForRootContentDocument() mDocShellHasBeenActiveSinceNavigationStart ? "foreground tab" : "this tab was inactive some of the time between navigation start and first non-blank paint"); PROFILER_MARKER(marker.get()); } - - if (mDocShellHasBeenActiveSinceNavigationStart) { - Telemetry::AccumulateTimeDelta(Telemetry::TIME_TO_NON_BLANK_PAINT_MS, - mNavigationStart, - mNonBlankPaint); - } } void diff --git a/dom/base/nsDeprecatedOperationList.h b/dom/base/nsDeprecatedOperationList.h index 8fb381d9d..ea4b05289 100644 --- a/dom/base/nsDeprecatedOperationList.h +++ b/dom/base/nsDeprecatedOperationList.h @@ -44,7 +44,6 @@ DEPRECATED_OPERATION(PannerNodeDoppler) DEPRECATED_OPERATION(NavigatorGetUserMedia) DEPRECATED_OPERATION(WebrtcDeprecatedPrefix) DEPRECATED_OPERATION(RTCPeerConnectionGetStreams) -DEPRECATED_OPERATION(AppCache) DEPRECATED_OPERATION(PrefixedImageSmoothingEnabled) DEPRECATED_OPERATION(PrefixedFullscreenAPI) DEPRECATED_OPERATION(LenientSetter) diff --git a/dom/base/nsDocument.cpp b/dom/base/nsDocument.cpp index 8acfd901a..ac9601caf 100644 --- a/dom/base/nsDocument.cpp +++ b/dom/base/nsDocument.cpp @@ -25,7 +25,6 @@ #include "plstr.h" #include "mozilla/Sprintf.h" -#include "mozilla/Telemetry.h" #include "nsIInterfaceRequestor.h" #include "nsIInterfaceRequestorUtils.h" #include "nsILoadContext.h" @@ -12370,101 +12369,7 @@ MightBeAboutOrChromeScheme(nsIURI* aURI) void nsDocument::ReportUseCounters() { - static const bool sDebugUseCounters = false; - if (mReportedUseCounters) { - return; - } - - mReportedUseCounters = true; - - if (Telemetry::HistogramUseCounterCount > 0 && - (IsContentDocument() || IsResourceDoc())) { - nsCOMPtr<nsIURI> uri; - NodePrincipal()->GetURI(getter_AddRefs(uri)); - if (!uri || MightBeAboutOrChromeScheme(uri)) { - return; - } - - if (sDebugUseCounters) { - nsCString spec = uri->GetSpecOrDefault(); - - // URIs can be rather long for data documents, so truncate them to - // some reasonable length. - spec.Truncate(std::min(128U, spec.Length())); - printf("-- Use counters for %s --\n", spec.get()); - } - - // We keep separate counts for individual documents and top-level - // pages to more accurately track how many web pages might break if - // certain features were removed. Consider the case of a single - // HTML document with several SVG images and/or iframes with - // sub-documents of their own. If we maintained a single set of use - // counters and all the sub-documents use a particular feature, then - // telemetry would indicate that we would be breaking N documents if - // that feature were removed. Whereas with a document/top-level - // page split, we can see that N documents would be affected, but - // only a single web page would be affected. - - // The difference between the values of these two histograms and the - // related use counters below tell us how many pages did *not* use - // the feature in question. For instance, if we see that a given - // session has destroyed 30 content documents, but a particular use - // counter shows only a count of 5, we can infer that the use - // counter was *not* used in 25 of those 30 documents. - // - // We do things this way, rather than accumulating a boolean flag - // for each use counter, to avoid sending histograms for features - // that don't get widely used. Doing things in this fashion means - // smaller telemetry payloads and faster processing on the server - // side. - Telemetry::Accumulate(Telemetry::CONTENT_DOCUMENTS_DESTROYED, 1); - if (IsTopLevelContentDocument()) { - Telemetry::Accumulate(Telemetry::TOP_LEVEL_CONTENT_DOCUMENTS_DESTROYED, 1); - } - - for (int32_t c = 0; - c < eUseCounter_Count; ++c) { - UseCounter uc = static_cast<UseCounter>(c); - - Telemetry::ID id = - static_cast<Telemetry::ID>(Telemetry::HistogramFirstUseCounter + uc * 2); - bool value = GetUseCounter(uc); - - if (value) { - if (sDebugUseCounters) { - const char* name = Telemetry::GetHistogramName(id); - if (name) { - printf(" %s", name); - } else { - printf(" #%d", id); - } - printf(": %d\n", value); - } - - Telemetry::Accumulate(id, 1); - } - - if (IsTopLevelContentDocument()) { - id = static_cast<Telemetry::ID>(Telemetry::HistogramFirstUseCounter + - uc * 2 + 1); - value = GetUseCounter(uc) || GetChildDocumentUseCounter(uc); - - if (value) { - if (sDebugUseCounters) { - const char* name = Telemetry::GetHistogramName(id); - if (name) { - printf(" %s", name); - } else { - printf(" #%d", id); - } - printf(": %d\n", value); - } - - Telemetry::Accumulate(id, 1); - } - } - } - } +/* STUB */ } void diff --git a/dom/base/nsFrameMessageManager.cpp b/dom/base/nsFrameMessageManager.cpp index 6fffd376b..f173678b7 100644 --- a/dom/base/nsFrameMessageManager.cpp +++ b/dom/base/nsFrameMessageManager.cpp @@ -32,7 +32,6 @@ #include "mozilla/CycleCollectedJSContext.h" #include "mozilla/IntentionalCrash.h" #include "mozilla/Preferences.h" -#include "mozilla/Telemetry.h" #include "mozilla/dom/File.h" #include "mozilla/dom/MessagePort.h" #include "mozilla/dom/nsIContentParent.h" @@ -716,9 +715,6 @@ AllowMessage(size_t aDataLength, const nsAString& aMessageName) NS_ConvertUTF16toUTF8 messageName(aMessageName); messageName.StripChars("0123456789"); - Telemetry::Accumulate(Telemetry::MESSAGE_MANAGER_MESSAGE_SIZE2, messageName, - aDataLength); - // A message includes more than structured clone data, so subtract // 20KB to make it more likely that a message within this bound won't // result in an overly large IPC message. @@ -727,9 +723,6 @@ AllowMessage(size_t aDataLength, const nsAString& aMessageName) return true; } - Telemetry::Accumulate(Telemetry::REJECTED_MESSAGE_MANAGER_MESSAGE, - messageName); - return false; } @@ -2248,7 +2241,6 @@ nsSameProcessAsyncMessageBase::Init(const nsAString& aMessage, nsIPrincipal* aPrincipal) { if (!mData.Copy(aData)) { - Telemetry::Accumulate(Telemetry::IPC_SAME_PROCESS_MESSAGE_COPY_OOM_KB, aData.DataLength()); return NS_ERROR_OUT_OF_MEMORY; } diff --git a/dom/base/nsGlobalWindow.cpp b/dom/base/nsGlobalWindow.cpp index 884ad69ca..88cebe42b 100644 --- a/dom/base/nsGlobalWindow.cpp +++ b/dom/base/nsGlobalWindow.cpp @@ -211,7 +211,6 @@ #include "mozilla/AddonPathService.h" #include "mozilla/BasePrincipal.h" #include "mozilla/Services.h" -#include "mozilla/Telemetry.h" #include "mozilla/dom/Location.h" #include "nsHTMLDocument.h" #include "nsWrapperCacheInlines.h" @@ -1759,9 +1758,6 @@ nsGlobalWindow::~nsGlobalWindow() DropOuterWindowDocs(); } else { - Telemetry::Accumulate(Telemetry::INNERWINDOWS_WITH_MUTATION_LISTENERS, - mMutationBits ? 1 : 0); - if (mListenerManager) { mListenerManager->Disconnect(); mListenerManager = nullptr; @@ -2695,7 +2691,6 @@ TreatAsRemoteXUL(nsIPrincipal* aPrincipal) static bool EnablePrivilege(JSContext* cx, unsigned argc, JS::Value* vp) { - Telemetry::Accumulate(Telemetry::ENABLE_PRIVILEGE_EVER_CALLED, true); return xpc::EnableUniversalXPConnect(cx); } @@ -3389,9 +3384,6 @@ nsGlobalWindow::InnerSetNewDocument(JSContext* aCx, nsIDocument* aDocument) mLastOpenedURI = aDocument->GetDocumentURI(); #endif - Telemetry::Accumulate(Telemetry::INNERWINDOWS_WITH_MUTATION_LISTENERS, - mMutationBits ? 1 : 0); - // Clear our mutation bitfield. mMutationBits = 0; } @@ -6848,8 +6840,6 @@ FullscreenTransitionTask::Run() Preferences::GetUint("full-screen-api.transition.timeout", 1000); mTimer->Init(observer, timeout, nsITimer::TYPE_ONE_SHOT); } else if (stage == eAfterToggle) { - Telemetry::AccumulateTimeDelta(Telemetry::FULLSCREEN_TRANSITION_BLACK_MS, - mFullscreenChangeStartTime); mWidget->PerformFullscreenTransition(nsIWidget::eAfterFullscreenToggle, mDuration.mFadeOut, mTransitionData, this); @@ -11577,11 +11567,6 @@ nsGlobalWindow::ShowSlowScriptDialog() unsigned lineno; bool hasFrame = JS::DescribeScriptedCaller(cx, &filename, &lineno); - // Record the slow script event if we haven't done so already for this inner window - // (which represents a particular page to the user). - if (!mHasHadSlowScript) { - Telemetry::Accumulate(Telemetry::SLOW_SCRIPT_PAGE_COUNT, 1); - } mHasHadSlowScript = true; if (XRE_IsContentProcess() && @@ -11613,10 +11598,6 @@ nsGlobalWindow::ShowSlowScriptDialog() return ContinueSlowScriptAndKeepNotifying; } - // Reached only on non-e10s - once per slow script dialog. - // On e10s - we probe once at ProcessHangsMonitor.jsm - Telemetry::Accumulate(Telemetry::SLOW_SCRIPT_NOTICE_COUNT, 1); - // Get the nsIPrompt interface from the docshell nsCOMPtr<nsIDocShell> ds = GetDocShell(); NS_ENSURE_TRUE(ds, KillSlowScript); diff --git a/dom/base/nsIDocument.h b/dom/base/nsIDocument.h index 7a73fae71..e5d12ab8f 100644 --- a/dom/base/nsIDocument.h +++ b/dom/base/nsIDocument.h @@ -3439,13 +3439,29 @@ nsINode::OwnerDocAsNode() const return OwnerDoc(); } +// ShouldUseXBLScope is defined here as a template so that we can get the faster +// version of IsInAnonymousSubtree if we're statically known to be an +// nsIContent. we could try defining ShouldUseXBLScope separately on nsINode +// and nsIContent, but then we couldn't put its nsINode implementation here +// (because this header does not include nsIContent) and we can't put it in +// nsIContent.h, because the definition of nsIContent::IsInAnonymousSubtree is +// in nsIContentInlines.h. And then we get include hell from people trying to +// call nsINode::GetParentObject but not including nsIContentInlines.h and with +// no really good way to include it. +template<typename T> +inline bool ShouldUseXBLScope(const T* aNode) +{ + return aNode->IsInAnonymousSubtree() && + !aNode->IsAnonymousContentInSVGUseSubtree(); +} + inline mozilla::dom::ParentObject nsINode::GetParentObject() const { mozilla::dom::ParentObject p(OwnerDoc()); // Note that mUseXBLScope is a no-op for chrome, and other places where we // don't use XBL scopes. - p.mUseXBLScope = IsInAnonymousSubtree() && !IsAnonymousContentInSVGUseSubtree(); + p.mUseXBLScope = ShouldUseXBLScope(this); return p; } diff --git a/dom/base/nsINode.cpp b/dom/base/nsINode.cpp index 09e848710..ca507a5fc 100644 --- a/dom/base/nsINode.cpp +++ b/dom/base/nsINode.cpp @@ -27,6 +27,7 @@ #include "mozilla/dom/Element.h" #include "mozilla/dom/Event.h" #include "mozilla/dom/ShadowRoot.h" +#include "mozilla/dom/ScriptSettings.h" #include "nsAttrValueOrString.h" #include "nsBindingManager.h" #include "nsCCUncollectableMarker.h" @@ -1569,6 +1570,48 @@ CheckForOutdatedParent(nsINode* aParent, nsINode* aNode) return NS_OK; } +static nsresult +ReparentWrappersInSubtree(nsIContent* aRoot) +{ + MOZ_ASSERT(ShouldUseXBLScope(aRoot)); + // Start off with no global so we don't fire any error events on failure. + AutoJSAPI jsapi; + jsapi.Init(); + + JSContext* cx = jsapi.cx(); + + nsIGlobalObject* docGlobal = aRoot->OwnerDoc()->GetScopeObject(); + if (NS_WARN_IF(!docGlobal)) { + return NS_ERROR_UNEXPECTED; + } + + JS::Rooted<JSObject*> rootedGlobal(cx, docGlobal->GetGlobalJSObject()); + if (NS_WARN_IF(!rootedGlobal)) { + return NS_ERROR_UNEXPECTED; + } + + rootedGlobal = xpc::GetXBLScope(cx, rootedGlobal); + + nsresult rv; + JS::Rooted<JSObject*> reflector(cx); + for (nsIContent* cur = aRoot; cur; cur = cur->GetNextNode(aRoot)) { + if ((reflector = cur->GetWrapper())) { + JSAutoCompartment ac(cx, reflector); + rv = ReparentWrapper(cx, reflector); + if NS_FAILED(rv) { + // We _could_ consider BlastSubtreeToPieces here, but it's not really + // needed. Having some nodes in here accessible to content while others + // are not is probably OK. We just need to fail out of the actual + // insertion, so they're not in the DOM. Returning a failure here will + // do that. + return rv; + } + } + } + + return NS_OK; +} + nsresult nsINode::doInsertChildAt(nsIContent* aKid, uint32_t aIndex, bool aNotify, nsAttrAndChildArray& aChildArray) @@ -1606,9 +1649,15 @@ nsINode::doInsertChildAt(nsIContent* aKid, uint32_t aIndex, nsIContent* parent = IsNodeOfType(eDOCUMENT) ? nullptr : static_cast<nsIContent*>(this); + bool wasInXBLScope = ShouldUseXBLScope(aKid); rv = aKid->BindToTree(doc, parent, parent ? parent->GetBindingParent() : nullptr, true); + if (NS_SUCCEEDED(rv) && !wasInXBLScope && ShouldUseXBLScope(aKid)) { + MOZ_ASSERT(ShouldUseXBLScope(this), + "Why does the kid need to use an XBL scope?"); + rv = ReparentWrappersInSubtree(aKid); + } if (NS_FAILED(rv)) { if (GetFirstChild() == aKid) { mFirstChild = aKid->GetNextSibling(); diff --git a/dom/base/nsJSEnvironment.cpp b/dom/base/nsJSEnvironment.cpp index 3be1a6d2f..4a984d294 100644 --- a/dom/base/nsJSEnvironment.cpp +++ b/dom/base/nsJSEnvironment.cpp @@ -70,7 +70,6 @@ #include "prthread.h" #include "mozilla/Preferences.h" -#include "mozilla/Telemetry.h" #include "mozilla/dom/BindingUtils.h" #include "mozilla/Attributes.h" #include "mozilla/dom/asmjscache/AsmJSCache.h" @@ -1477,22 +1476,8 @@ nsJSContext::EndCycleCollectionCallback(CycleCollectorResults &aResults) NS_GC_DELAY - std::min(ccNowDuration, kMaxICCDuration)); } - // Log information about the CC via telemetry, JSON and the console. - Telemetry::Accumulate(Telemetry::CYCLE_COLLECTOR_FINISH_IGC, gCCStats.mAnyLockedOut); - Telemetry::Accumulate(Telemetry::CYCLE_COLLECTOR_SYNC_SKIPPABLE, gCCStats.mRanSyncForgetSkippable); - Telemetry::Accumulate(Telemetry::CYCLE_COLLECTOR_FULL, ccNowDuration); - Telemetry::Accumulate(Telemetry::CYCLE_COLLECTOR_MAX_PAUSE, gCCStats.mMaxSliceTime); - - if (!sLastCCEndTime.IsNull()) { - // TimeBetween returns milliseconds, but we want to report seconds. - uint32_t timeBetween = TimeBetween(sLastCCEndTime, gCCStats.mBeginTime) / 1000; - Telemetry::Accumulate(Telemetry::CYCLE_COLLECTOR_TIME_BETWEEN, timeBetween); - } sLastCCEndTime = endCCTimeStamp; - Telemetry::Accumulate(Telemetry::FORGET_SKIPPABLE_MAX, - sMaxForgetSkippableTime / PR_USEC_PER_MSEC); - PRTime delta = GetCollectionTimeDelta(); uint32_t cleanups = sForgetSkippableBeforeCC ? sForgetSkippableBeforeCC : 1; diff --git a/dom/base/nsNodeInfoManager.cpp b/dom/base/nsNodeInfoManager.cpp index 66c8c84cf..80f0aa786 100644 --- a/dom/base/nsNodeInfoManager.cpp +++ b/dom/base/nsNodeInfoManager.cpp @@ -392,9 +392,6 @@ nsNodeInfoManager::SetDocumentPrincipal(nsIPrincipal *aPrincipal) NS_ASSERTION(aPrincipal, "Must have principal by this point!"); MOZ_DIAGNOSTIC_ASSERT(!nsContentUtils::IsExpandedPrincipal(aPrincipal), "Documents shouldn't have an expanded principal"); - if (nsContentUtils::IsExpandedPrincipal(aPrincipal)) { - Telemetry::Accumulate(Telemetry::DOCUMENT_WITH_EXPANDED_PRINCIPAL, 1); - } mPrincipal = aPrincipal; } diff --git a/dom/base/nsObjectLoadingContent.cpp b/dom/base/nsObjectLoadingContent.cpp index 9e9dacf01..709c7aa56 100644 --- a/dom/base/nsObjectLoadingContent.cpp +++ b/dom/base/nsObjectLoadingContent.cpp @@ -85,7 +85,6 @@ #include "mozilla/AsyncEventDispatcher.h" #include "mozilla/EventDispatcher.h" #include "mozilla/EventStates.h" -#include "mozilla/Telemetry.h" #include "mozilla/dom/HTMLObjectElementBinding.h" #include "mozilla/dom/HTMLSharedObjectElement.h" #include "nsChannelClassifier.h" @@ -1149,7 +1148,6 @@ nsObjectLoadingContent::OnStartRequest(nsIRequest *aRequest, NS_LITERAL_STRING(" since it was found on an internal Firefox blocklist."); console->LogStringMessage(message.get()); } - Telemetry::Accumulate(Telemetry::PLUGIN_BLOCKED_FOR_STABILITY, 1); mContentBlockingEnabled = true; return NS_ERROR_FAILURE; } else if (status == NS_ERROR_TRACKING_URI) { @@ -1565,7 +1563,6 @@ nsObjectLoadingContent::MaybeRewriteYoutubeEmbed(nsIURI* aURI, nsIURI* aBaseURI, } if (uri.Find("enablejsapi=1", true, 0, -1) != kNotFound) { - Telemetry::Accumulate(Telemetry::YOUTUBE_NONREWRITABLE_EMBED_SEEN, 1); return; } @@ -1585,10 +1582,6 @@ nsObjectLoadingContent::MaybeRewriteYoutubeEmbed(nsIURI* aURI, nsIURI* aBaseURI, } } - // If we've made it this far, we've got a rewritable embed. Log it in - // telemetry. - Telemetry::Accumulate(Telemetry::YOUTUBE_REWRITABLE_EMBED_SEEN, 1); - // If we're pref'd off, return after telemetry has been logged. if (!Preferences::GetBool(kPrefYoutubeRewrite)) { return; @@ -3800,8 +3793,6 @@ nsObjectLoadingContent::LegacyCall(JSContext* aCx, aRv.Throw(NS_ERROR_FAILURE); return; } - - Telemetry::Accumulate(Telemetry::PLUGIN_CALLED_DIRECTLY, true); } void diff --git a/dom/bindings/BindingUtils.cpp b/dom/bindings/BindingUtils.cpp index 7056658a7..323feca52 100644 --- a/dom/bindings/BindingUtils.cpp +++ b/dom/bindings/BindingUtils.cpp @@ -119,7 +119,7 @@ ThrowInvalidThis(JSContext* aCx, const JS::CallArgs& aArgs, MSG_METHOD_THIS_DOES_NOT_IMPLEMENT_INTERFACE; MOZ_RELEASE_ASSERT(GetErrorArgCount(errorNumber) <= 2); JS_ReportErrorNumberUC(aCx, GetErrorMessage, nullptr, - static_cast<const unsigned>(errorNumber), + static_cast<unsigned>(errorNumber), funcNameStr.get(), ifaceName.get()); return false; } @@ -226,7 +226,7 @@ TErrorResult<CleanupPolicy>::SetPendingExceptionWithMessage(JSContext* aCx) args[argCount] = nullptr; JS_ReportErrorNumberUCArray(aCx, dom::GetErrorMessage, nullptr, - static_cast<const unsigned>(message->mErrorNumber), + static_cast<unsigned>(message->mErrorNumber), argCount > 0 ? args : nullptr); ClearMessage(); diff --git a/dom/bindings/BindingUtils.h b/dom/bindings/BindingUtils.h index 3e58390c9..24b47a545 100644 --- a/dom/bindings/BindingUtils.h +++ b/dom/bindings/BindingUtils.h @@ -515,7 +515,7 @@ class ProtoAndIfaceCache { public: PageTableCache() { - memset(&mPages, 0, sizeof(mPages)); + memset(mPages.begin(), 0, sizeof(mPages)); } ~PageTableCache() { diff --git a/dom/bindings/ErrorResult.h b/dom/bindings/ErrorResult.h index 7c3fc9e2f..da7ec30e7 100644 --- a/dom/bindings/ErrorResult.h +++ b/dom/bindings/ErrorResult.h @@ -75,7 +75,7 @@ template<typename... Ts> inline bool ThrowErrorMessage(JSContext* aCx, const ErrNum aErrorNumber, Ts&&... aArgs) { - binding_detail::ThrowErrorMessage(aCx, static_cast<const unsigned>(aErrorNumber), + binding_detail::ThrowErrorMessage(aCx, static_cast<unsigned>(aErrorNumber), mozilla::Forward<Ts>(aArgs)...); return false; } diff --git a/dom/canvas/CanvasRenderingContextHelper.cpp b/dom/canvas/CanvasRenderingContextHelper.cpp index 3000e59bd..61317fb51 100644 --- a/dom/canvas/CanvasRenderingContextHelper.cpp +++ b/dom/canvas/CanvasRenderingContextHelper.cpp @@ -7,7 +7,6 @@ #include "ImageBitmapRenderingContext.h" #include "ImageEncoder.h" #include "mozilla/dom/CanvasRenderingContext2D.h" -#include "mozilla/Telemetry.h" #include "mozilla/UniquePtr.h" #include "nsContentUtils.h" #include "nsDOMJSUtils.h" @@ -138,13 +137,10 @@ CanvasRenderingContextHelper::CreateContextHelper(CanvasContextType aContextType break; case CanvasContextType::Canvas2D: - Telemetry::Accumulate(Telemetry::CANVAS_2D_USED, 1); ret = new CanvasRenderingContext2D(aCompositorBackend); break; case CanvasContextType::WebGL1: - Telemetry::Accumulate(Telemetry::CANVAS_WEBGL_USED, 1); - ret = WebGL1Context::Create(); if (!ret) return nullptr; @@ -152,8 +148,6 @@ CanvasRenderingContextHelper::CreateContextHelper(CanvasContextType aContextType break; case CanvasContextType::WebGL2: - Telemetry::Accumulate(Telemetry::CANVAS_WEBGL_USED, 1); - ret = WebGL2Context::Create(); if (!ret) return nullptr; @@ -205,16 +199,8 @@ CanvasRenderingContextHelper::GetContext(JSContext* aCx, // See bug 645792 and bug 1215072. // We want to throw only if dictionary initialization fails, // so only in case aRv has been set to some error value. - if (contextType == CanvasContextType::WebGL1) - Telemetry::Accumulate(Telemetry::CANVAS_WEBGL_SUCCESS, 0); - else if (contextType == CanvasContextType::WebGL2) - Telemetry::Accumulate(Telemetry::CANVAS_WEBGL2_SUCCESS, 0); return nullptr; } - if (contextType == CanvasContextType::WebGL1) - Telemetry::Accumulate(Telemetry::CANVAS_WEBGL_SUCCESS, 1); - else if (contextType == CanvasContextType::WebGL2) - Telemetry::Accumulate(Telemetry::CANVAS_WEBGL2_SUCCESS, 1); } else { // We already have a context of some type. if (contextType != mCurrentContextType) diff --git a/dom/canvas/WebGL1Context.cpp b/dom/canvas/WebGL1Context.cpp index c1818a3f9..e82cafbe5 100644 --- a/dom/canvas/WebGL1Context.cpp +++ b/dom/canvas/WebGL1Context.cpp @@ -6,7 +6,6 @@ #include "WebGL1Context.h" #include "mozilla/dom/WebGLRenderingContextBinding.h" -#include "mozilla/Telemetry.h" #include "WebGLFormats.h" namespace mozilla { @@ -43,8 +42,6 @@ WebGL1Context::WrapObject(JSContext* cx, JS::Handle<JSObject*> givenProto) nsresult NS_NewCanvasRenderingContextWebGL(nsIDOMWebGLRenderingContext** out_result) { - mozilla::Telemetry::Accumulate(mozilla::Telemetry::CANVAS_WEBGL_USED, 1); - nsIDOMWebGLRenderingContext* ctx = mozilla::WebGL1Context::Create(); NS_ADDREF(*out_result = ctx); diff --git a/dom/canvas/WebGLContext.cpp b/dom/canvas/WebGLContext.cpp index 32eed6354..14bc7e3e3 100644 --- a/dom/canvas/WebGLContext.cpp +++ b/dom/canvas/WebGLContext.cpp @@ -825,10 +825,6 @@ NS_IMETHODIMP WebGLContext::SetDimensions(int32_t signedWidth, int32_t signedHeight) { if (signedWidth < 0 || signedHeight < 0) { - if (!gl) { - Telemetry::Accumulate(Telemetry::CANVAS_WEBGL_FAILURE_ID, - NS_LITERAL_CSTRING("FEATURE_FAILURE_WEBGL_SIZE")); - } GenerateWarning("Canvas size is too large (seems like a negative value wrapped)"); return NS_ERROR_OUT_OF_MEMORY; } @@ -884,12 +880,6 @@ WebGLContext::SetDimensions(int32_t signedWidth, int32_t signedHeight) return NS_OK; } - nsCString failureId = NS_LITERAL_CSTRING("FEATURE_FAILURE_WEBGL_UNKOWN"); - auto autoTelemetry = mozilla::MakeScopeExit([&] { - Telemetry::Accumulate(Telemetry::CANVAS_WEBGL_FAILURE_ID, - failureId); - }); - // End of early return cases. // At this point we know that we're not just resizing an existing context, // we are initializing a new context. @@ -911,7 +901,6 @@ WebGLContext::SetDimensions(int32_t signedWidth, int32_t signedHeight) // resource handles created from older context generations. if (!(mGeneration + 1).isValid()) { // exit without changing the value of mGeneration - failureId = NS_LITERAL_CSTRING("FEATURE_FAILURE_WEBGL_TOO_MANY"); const nsLiteralCString text("Too many WebGL contexts created this run."); ThrowEvent_WebGLContextCreationError(text); return NS_ERROR_FAILURE; @@ -928,11 +917,6 @@ WebGLContext::SetDimensions(int32_t signedWidth, int32_t signedHeight) disabled |= gfxPlatform::InSafeMode(); if (disabled) { - if (gfxPlatform::InSafeMode()) { - failureId = NS_LITERAL_CSTRING("FEATURE_FAILURE_WEBGL_SAFEMODE"); - } else { - failureId = NS_LITERAL_CSTRING("FEATURE_FAILURE_WEBGL_DISABLED"); - } const nsLiteralCString text("WebGL is currently disabled."); ThrowEvent_WebGLContextCreationError(text); return NS_ERROR_FAILURE; @@ -945,7 +929,6 @@ WebGLContext::SetDimensions(int32_t signedWidth, int32_t signedHeight) if (mOptions.failIfMajorPerformanceCaveat) { nsCOMPtr<nsIGfxInfo> gfxInfo = services::GetGfxInfo(); if (!HasAcceleratedLayers(gfxInfo)) { - failureId = NS_LITERAL_CSTRING("FEATURE_FAILURE_WEBGL_PERF_CAVEAT"); const nsLiteralCString text("failIfMajorPerformanceCaveat: Compositor is not" " hardware-accelerated."); ThrowEvent_WebGLContextCreationError(text); @@ -961,12 +944,9 @@ WebGLContext::SetDimensions(int32_t signedWidth, int32_t signedHeight) if (!CreateAndInitGL(forceEnabled, &failReasons)) { nsCString text("WebGL creation failed: "); for (const auto& cur : failReasons) { - Telemetry::Accumulate(Telemetry::CANVAS_WEBGL_FAILURE_ID, cur.key); - text.AppendASCII("\n* "); text.Append(cur.info); } - failureId = NS_LITERAL_CSTRING("FEATURE_FAILURE_REASON"); ThrowEvent_WebGLContextCreationError(text); return NS_ERROR_FAILURE; } @@ -978,7 +958,6 @@ WebGLContext::SetDimensions(int32_t signedWidth, int32_t signedHeight) DestroyResourcesAndContext(); MOZ_ASSERT(!gl); - failureId = NS_LITERAL_CSTRING("FEATURE_FAILURE_WEBGL_PERF_WARP"); const nsLiteralCString text("failIfMajorPerformanceCaveat: Driver is not" " hardware-accelerated."); ThrowEvent_WebGLContextCreationError(text); @@ -992,7 +971,6 @@ WebGLContext::SetDimensions(int32_t signedWidth, int32_t signedHeight) DestroyResourcesAndContext(); MOZ_ASSERT(!gl); - failureId = NS_LITERAL_CSTRING("FEATURE_FAILURE_WEBGL_DXGL_INTEROP2"); const nsLiteralCString text("Caveat: WGL without DXGLInterop2."); ThrowEvent_WebGLContextCreationError(text); return NS_ERROR_FAILURE; @@ -1001,7 +979,6 @@ WebGLContext::SetDimensions(int32_t signedWidth, int32_t signedHeight) } if (!ResizeBackbuffer(width, height)) { - failureId = NS_LITERAL_CSTRING("FEATURE_FAILURE_WEBGL_BACKBUFFER"); const nsLiteralCString text("Initializing WebGL backbuffer failed."); ThrowEvent_WebGLContextCreationError(text); return NS_ERROR_FAILURE; @@ -1085,7 +1062,6 @@ WebGLContext::SetDimensions(int32_t signedWidth, int32_t signedHeight) ////// - failureId = NS_LITERAL_CSTRING("SUCCESS"); return NS_OK; } diff --git a/dom/crypto/WebCryptoTask.cpp b/dom/crypto/WebCryptoTask.cpp index f5fc7b5bc..c4cc7080d 100644 --- a/dom/crypto/WebCryptoTask.cpp +++ b/dom/crypto/WebCryptoTask.cpp @@ -452,7 +452,6 @@ void WebCryptoTask::FailWithError(nsresult aRv) { MOZ_ASSERT(IsOnOriginalThread()); - Telemetry::Accumulate(Telemetry::WEBCRYPTO_RESOLVED, false); // Blindly convert nsresult to DOMException // Individual tasks must ensure they pass the right values @@ -491,7 +490,6 @@ WebCryptoTask::CallCallback(nsresult rv) } Resolve(); - Telemetry::Accumulate(Telemetry::WEBCRYPTO_RESOLVED, true); // Manually release mResultPromise while we're on the main thread mResultPromise = nullptr; @@ -650,7 +648,6 @@ public: mEarlyRv = NS_ERROR_DOM_NOT_SUPPORTED_ERR; return; } - Telemetry::Accumulate(Telemetry::WEBCRYPTO_ALG, telemetryAlg); } private: @@ -794,7 +791,6 @@ public: return; } - Telemetry::Accumulate(Telemetry::WEBCRYPTO_ALG, TA_AES_KW); } private: @@ -908,8 +904,6 @@ public: void Init(JSContext* aCx, const ObjectOrString& aAlgorithm, CryptoKey& aKey, bool aEncrypt) { - Telemetry::Accumulate(Telemetry::WEBCRYPTO_ALG, TA_RSA_OAEP); - CHECK_KEY_ALGORITHM(aKey.Algorithm(), WEBCRYPTO_ALG_RSA_OAEP); if (mEncrypt) { @@ -1049,7 +1043,6 @@ public: case CKM_SHA512_HMAC: telemetryAlg = TA_HMAC_SHA_512; break; default: telemetryAlg = TA_UNKNOWN; } - Telemetry::Accumulate(Telemetry::WEBCRYPTO_ALG, telemetryAlg); } private: @@ -1158,12 +1151,10 @@ public: if (algName.EqualsLiteral(WEBCRYPTO_ALG_RSASSA_PKCS1)) { mAlgorithm = Algorithm::RSA_PKCS1; - Telemetry::Accumulate(Telemetry::WEBCRYPTO_ALG, TA_RSASSA_PKCS1); CHECK_KEY_ALGORITHM(aKey.Algorithm(), WEBCRYPTO_ALG_RSASSA_PKCS1); hashAlgName = aKey.Algorithm().mRsa.mHash.mName; } else if (algName.EqualsLiteral(WEBCRYPTO_ALG_RSA_PSS)) { mAlgorithm = Algorithm::RSA_PSS; - Telemetry::Accumulate(Telemetry::WEBCRYPTO_ALG, TA_RSA_PSS); CHECK_KEY_ALGORITHM(aKey.Algorithm(), WEBCRYPTO_ALG_RSA_PSS); KeyAlgorithm& hashAlg = aKey.Algorithm().mRsa.mHash; @@ -1188,7 +1179,6 @@ public: mSaltLength = params.mSaltLength; } else if (algName.EqualsLiteral(WEBCRYPTO_ALG_ECDSA)) { mAlgorithm = Algorithm::ECDSA; - Telemetry::Accumulate(Telemetry::WEBCRYPTO_ALG, TA_ECDSA); CHECK_KEY_ALGORITHM(aKey.Algorithm(), WEBCRYPTO_ALG_ECDSA); // For ECDSA, the hash name comes from the algorithm parameter @@ -1356,7 +1346,6 @@ public: mEarlyRv = NS_ERROR_DOM_SYNTAX_ERR; return; } - Telemetry::Accumulate(Telemetry::WEBCRYPTO_ALG, telemetryAlg); mOidTag = MapHashAlgorithmNameToOID(algName); } @@ -2656,7 +2645,6 @@ public: void Init(JSContext* aCx, const ObjectOrString& aAlgorithm, CryptoKey& aKey, uint32_t aLength) { - Telemetry::Accumulate(Telemetry::WEBCRYPTO_ALG, TA_HKDF); CHECK_KEY_ALGORITHM(aKey.Algorithm(), WEBCRYPTO_ALG_HKDF); // Check that we have a key. @@ -2806,7 +2794,6 @@ public: void Init(JSContext* aCx, const ObjectOrString& aAlgorithm, CryptoKey& aKey, uint32_t aLength) { - Telemetry::Accumulate(Telemetry::WEBCRYPTO_ALG, TA_PBKDF2); CHECK_KEY_ALGORITHM(aKey.Algorithm(), WEBCRYPTO_ALG_PBKDF2); // Check that we got a symmetric key @@ -2981,7 +2968,6 @@ public: void Init(JSContext* aCx, const ObjectOrString& aAlgorithm, CryptoKey& aKey) { - Telemetry::Accumulate(Telemetry::WEBCRYPTO_ALG, TA_ECDH); CHECK_KEY_ALGORITHM(aKey.Algorithm(), WEBCRYPTO_ALG_ECDH); // Check that we have a private key. @@ -3277,10 +3263,6 @@ WebCryptoTask::CreateEncryptDecryptTask(JSContext* aCx, const CryptoOperationData& aData, bool aEncrypt) { - TelemetryMethod method = (aEncrypt)? TM_ENCRYPT : TM_DECRYPT; - Telemetry::Accumulate(Telemetry::WEBCRYPTO_METHOD, method); - Telemetry::Accumulate(Telemetry::WEBCRYPTO_EXTRACTABLE_ENC, aKey.Extractable()); - // Ensure key is usable for this operation if ((aEncrypt && !aKey.HasUsage(CryptoKey::ENCRYPT)) || (!aEncrypt && !aKey.HasUsage(CryptoKey::DECRYPT))) { @@ -3312,10 +3294,6 @@ WebCryptoTask::CreateSignVerifyTask(JSContext* aCx, const CryptoOperationData& aData, bool aSign) { - TelemetryMethod method = (aSign)? TM_SIGN : TM_VERIFY; - Telemetry::Accumulate(Telemetry::WEBCRYPTO_METHOD, method); - Telemetry::Accumulate(Telemetry::WEBCRYPTO_EXTRACTABLE_SIG, aKey.Extractable()); - // Ensure key is usable for this operation if ((aSign && !aKey.HasUsage(CryptoKey::SIGN)) || (!aSign && !aKey.HasUsage(CryptoKey::VERIFY))) { @@ -3345,8 +3323,6 @@ WebCryptoTask::CreateDigestTask(JSContext* aCx, const ObjectOrString& aAlgorithm, const CryptoOperationData& aData) { - Telemetry::Accumulate(Telemetry::WEBCRYPTO_METHOD, TM_DIGEST); - nsString algName; nsresult rv = GetAlgorithmName(aCx, aAlgorithm, algName); if (NS_FAILED(rv)) { @@ -3372,9 +3348,6 @@ WebCryptoTask::CreateImportKeyTask(nsIGlobalObject* aGlobal, bool aExtractable, const Sequence<nsString>& aKeyUsages) { - Telemetry::Accumulate(Telemetry::WEBCRYPTO_METHOD, TM_IMPORTKEY); - Telemetry::Accumulate(Telemetry::WEBCRYPTO_EXTRACTABLE_IMPORT, aExtractable); - // Verify that the format is recognized if (!aFormat.EqualsLiteral(WEBCRYPTO_KEY_FORMAT_RAW) && !aFormat.EqualsLiteral(WEBCRYPTO_KEY_FORMAT_SPKI) && @@ -3426,8 +3399,6 @@ WebCryptoTask* WebCryptoTask::CreateExportKeyTask(const nsAString& aFormat, CryptoKey& aKey) { - Telemetry::Accumulate(Telemetry::WEBCRYPTO_METHOD, TM_EXPORTKEY); - // Verify that the format is recognized if (!aFormat.EqualsLiteral(WEBCRYPTO_KEY_FORMAT_RAW) && !aFormat.EqualsLiteral(WEBCRYPTO_KEY_FORMAT_SPKI) && @@ -3470,9 +3441,6 @@ WebCryptoTask::CreateGenerateKeyTask(nsIGlobalObject* aGlobal, bool aExtractable, const Sequence<nsString>& aKeyUsages) { - Telemetry::Accumulate(Telemetry::WEBCRYPTO_METHOD, TM_GENERATEKEY); - Telemetry::Accumulate(Telemetry::WEBCRYPTO_EXTRACTABLE_GENERATE, aExtractable); - // Verify that aKeyUsages does not contain an unrecognized value // SPEC-BUG: Spec says that this should be InvalidAccessError, but that // is inconsistent with other analogous points in the spec @@ -3515,8 +3483,6 @@ WebCryptoTask::CreateDeriveKeyTask(nsIGlobalObject* aGlobal, bool aExtractable, const Sequence<nsString>& aKeyUsages) { - Telemetry::Accumulate(Telemetry::WEBCRYPTO_METHOD, TM_DERIVEKEY); - // Ensure baseKey is usable for this operation if (!aBaseKey.HasUsage(CryptoKey::DERIVEKEY)) { return new FailureTask(NS_ERROR_DOM_INVALID_ACCESS_ERR); @@ -3560,8 +3526,6 @@ WebCryptoTask::CreateDeriveBitsTask(JSContext* aCx, CryptoKey& aKey, uint32_t aLength) { - Telemetry::Accumulate(Telemetry::WEBCRYPTO_METHOD, TM_DERIVEBITS); - // Ensure baseKey is usable for this operation if (!aKey.HasUsage(CryptoKey::DERIVEBITS)) { return new FailureTask(NS_ERROR_DOM_INVALID_ACCESS_ERR); @@ -3599,8 +3563,6 @@ WebCryptoTask::CreateWrapKeyTask(JSContext* aCx, CryptoKey& aWrappingKey, const ObjectOrString& aWrapAlgorithm) { - Telemetry::Accumulate(Telemetry::WEBCRYPTO_METHOD, TM_WRAPKEY); - // Verify that the format is recognized if (!aFormat.EqualsLiteral(WEBCRYPTO_KEY_FORMAT_RAW) && !aFormat.EqualsLiteral(WEBCRYPTO_KEY_FORMAT_SPKI) && @@ -3652,8 +3614,6 @@ WebCryptoTask::CreateUnwrapKeyTask(nsIGlobalObject* aGlobal, bool aExtractable, const Sequence<nsString>& aKeyUsages) { - Telemetry::Accumulate(Telemetry::WEBCRYPTO_METHOD, TM_UNWRAPKEY); - // Ensure key is usable for this operation if (!aUnwrappingKey.HasUsage(CryptoKey::UNWRAPKEY)) { return new FailureTask(NS_ERROR_DOM_INVALID_ACCESS_ERR); diff --git a/dom/events/EventDispatcher.cpp b/dom/events/EventDispatcher.cpp index 65f01844b..1d4dfd7d9 100644 --- a/dom/events/EventDispatcher.cpp +++ b/dom/events/EventDispatcher.cpp @@ -858,63 +858,46 @@ EventDispatcher::CreateEvent(EventTarget* aOwner, // And if we didn't get an event, check the type argument. -#define LOG_EVENT_CREATION(name) mozilla::Telemetry::Accumulate( \ - mozilla::Telemetry::CREATE_EVENT_##name, true); - if (aEventType.LowerCaseEqualsLiteral("mouseevent")) { - LOG_EVENT_CREATION(MOUSEEVENT); return NS_NewDOMMouseEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("mouseevents")) { - LOG_EVENT_CREATION(MOUSEEVENTS); return NS_NewDOMMouseEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("popupevents")) { - LOG_EVENT_CREATION(POPUPEVENTS); return NS_NewDOMMouseEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("mousescrollevents")) { - LOG_EVENT_CREATION(MOUSESCROLLEVENTS); return NS_NewDOMMouseScrollEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("dragevent")) { - LOG_EVENT_CREATION(DRAGEVENT); return NS_NewDOMDragEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("dragevents")) { - LOG_EVENT_CREATION(DRAGEVENTS); return NS_NewDOMDragEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("keyboardevent")) { - LOG_EVENT_CREATION(KEYBOARDEVENT); return NS_NewDOMKeyboardEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("keyevents")) { - LOG_EVENT_CREATION(KEYEVENTS); return NS_NewDOMKeyboardEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("compositionevent")) { - LOG_EVENT_CREATION(COMPOSITIONEVENT); return NS_NewDOMCompositionEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("textevent")) { - LOG_EVENT_CREATION(TEXTEVENT); return NS_NewDOMCompositionEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("textevents")) { - LOG_EVENT_CREATION(TEXTEVENTS); return NS_NewDOMCompositionEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("mutationevent")) { - LOG_EVENT_CREATION(MUTATIONEVENT); return NS_NewDOMMutationEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("mutationevents")) { - LOG_EVENT_CREATION(MUTATIONEVENTS); return NS_NewDOMMutationEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("deviceorientationevent")) { - LOG_EVENT_CREATION(DEVICEORIENTATIONEVENT); DeviceOrientationEventInit init; RefPtr<Event> event = DeviceOrientationEvent::Constructor(aOwner, EmptyString(), init); @@ -922,97 +905,74 @@ EventDispatcher::CreateEvent(EventTarget* aOwner, return event.forget(); } if (aEventType.LowerCaseEqualsLiteral("devicemotionevent")) { - LOG_EVENT_CREATION(DEVICEMOTIONEVENT); return NS_NewDOMDeviceMotionEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("uievent")) { - LOG_EVENT_CREATION(UIEVENT); return NS_NewDOMUIEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("uievents")) { - LOG_EVENT_CREATION(UIEVENTS); return NS_NewDOMUIEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("event")) { - LOG_EVENT_CREATION(EVENT); return NS_NewDOMEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("events")) { - LOG_EVENT_CREATION(EVENTS); return NS_NewDOMEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("htmlevents")) { - LOG_EVENT_CREATION(HTMLEVENTS); return NS_NewDOMEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("svgevent")) { - LOG_EVENT_CREATION(SVGEVENT); return NS_NewDOMEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("svgevents")) { - LOG_EVENT_CREATION(SVGEVENTS); return NS_NewDOMEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("svgzoomevent")) { - LOG_EVENT_CREATION(SVGZOOMEVENT); return NS_NewDOMSVGZoomEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("svgzoomevents")) { - LOG_EVENT_CREATION(SVGZOOMEVENTS); return NS_NewDOMSVGZoomEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("timeevent")) { - LOG_EVENT_CREATION(TIMEEVENT); return NS_NewDOMTimeEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("timeevents")) { - LOG_EVENT_CREATION(TIMEEVENTS); return NS_NewDOMTimeEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("xulcommandevent")) { - LOG_EVENT_CREATION(XULCOMMANDEVENT); return NS_NewDOMXULCommandEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("xulcommandevents")) { - LOG_EVENT_CREATION(XULCOMMANDEVENTS); return NS_NewDOMXULCommandEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("commandevent")) { - LOG_EVENT_CREATION(COMMANDEVENT); return NS_NewDOMCommandEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("commandevents")) { - LOG_EVENT_CREATION(COMMANDEVENTS); return NS_NewDOMCommandEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("datacontainerevent")) { - LOG_EVENT_CREATION(DATACONTAINEREVENT); return NS_NewDOMDataContainerEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("datacontainerevents")) { - LOG_EVENT_CREATION(DATACONTAINEREVENTS); return NS_NewDOMDataContainerEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("messageevent")) { - LOG_EVENT_CREATION(MESSAGEEVENT); RefPtr<Event> event = new MessageEvent(aOwner, aPresContext, nullptr); return event.forget(); } if (aEventType.LowerCaseEqualsLiteral("notifypaintevent")) { - LOG_EVENT_CREATION(NOTIFYPAINTEVENT); return NS_NewDOMNotifyPaintEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("simplegestureevent")) { - LOG_EVENT_CREATION(SIMPLEGESTUREEVENT); return NS_NewDOMSimpleGestureEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("beforeunloadevent")) { - LOG_EVENT_CREATION(BEFOREUNLOADEVENT); return NS_NewDOMBeforeUnloadEvent(aOwner, aPresContext, nullptr); } // XXXkhuey this is broken if (aEventType.LowerCaseEqualsLiteral("pagetransition")) { - LOG_EVENT_CREATION(PAGETRANSITION); PageTransitionEventInit init; RefPtr<Event> event = PageTransitionEvent::Constructor(aOwner, EmptyString(), init); @@ -1020,14 +980,12 @@ EventDispatcher::CreateEvent(EventTarget* aOwner, return event.forget(); } if (aEventType.LowerCaseEqualsLiteral("scrollareaevent")) { - LOG_EVENT_CREATION(SCROLLAREAEVENT); return NS_NewDOMScrollAreaEvent(aOwner, aPresContext, nullptr); } // XXXkhuey Chrome supports popstateevent here, even though it provides no // initPopStateEvent method. This is nuts ... but copying it is unlikely to // break the web. if (aEventType.LowerCaseEqualsLiteral("popstateevent")) { - LOG_EVENT_CREATION(POPSTATEEVENT); AutoJSContext cx; RootedDictionary<PopStateEventInit> init(cx); RefPtr<Event> event = @@ -1037,11 +995,9 @@ EventDispatcher::CreateEvent(EventTarget* aOwner, } if (aEventType.LowerCaseEqualsLiteral("touchevent") && TouchEvent::PrefEnabled(nsContentUtils::GetDocShellForEventTarget(aOwner))) { - LOG_EVENT_CREATION(TOUCHEVENT); return NS_NewDOMTouchEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("hashchangeevent")) { - LOG_EVENT_CREATION(HASHCHANGEEVENT); HashChangeEventInit init; RefPtr<Event> event = HashChangeEvent::Constructor(aOwner, EmptyString(), init); @@ -1049,11 +1005,9 @@ EventDispatcher::CreateEvent(EventTarget* aOwner, return event.forget(); } if (aEventType.LowerCaseEqualsLiteral("customevent")) { - LOG_EVENT_CREATION(CUSTOMEVENT); return NS_NewDOMCustomEvent(aOwner, aPresContext, nullptr); } if (aEventType.LowerCaseEqualsLiteral("storageevent")) { - LOG_EVENT_CREATION(STORAGEEVENT); return NS_NewDOMStorageEvent(aOwner); } if (aEventType.LowerCaseEqualsLiteral("focusevent")) { @@ -1062,8 +1016,6 @@ EventDispatcher::CreateEvent(EventTarget* aOwner, return event.forget(); } -#undef LOG_EVENT_CREATION - // NEW EVENT TYPES SHOULD NOT BE ADDED HERE; THEY SHOULD USE ONLY EVENT // CONSTRUCTORS diff --git a/dom/events/EventStateManager.cpp b/dom/events/EventStateManager.cpp index 7bbfe21b7..e16d68c81 100644 --- a/dom/events/EventStateManager.cpp +++ b/dom/events/EventStateManager.cpp @@ -3240,6 +3240,12 @@ EventStateManager::PostHandleEvent(nsPresContext* aPresContext, action = WheelPrefs::GetInstance()->ComputeActionFor(wheelEvent); } switch (action) { + case WheelPrefs::ACTION_HSCROLL: { + // Swap axes and fall through + double deltaX = wheelEvent->mDeltaX; + wheelEvent->mDeltaX = wheelEvent->mDeltaY; + wheelEvent->mDeltaY = deltaX; + } case WheelPrefs::ACTION_SCROLL: { // For scrolling of default action, we should honor the mouse wheel // transaction. diff --git a/dom/events/EventStateManager.h b/dom/events/EventStateManager.h index d0461e7fa..95ce9a907 100644 --- a/dom/events/EventStateManager.h +++ b/dom/events/EventStateManager.h @@ -513,7 +513,8 @@ protected: ACTION_SCROLL, ACTION_HISTORY, ACTION_ZOOM, - ACTION_LAST = ACTION_ZOOM, + ACTION_HSCROLL, + ACTION_LAST = ACTION_HSCROLL, // Following actions are used only by internal processing. So, cannot // specified by prefs. ACTION_SEND_TO_PLUGIN diff --git a/dom/fetch/Fetch.cpp b/dom/fetch/Fetch.cpp index 5c05f3602..e2c139426 100644 --- a/dom/fetch/Fetch.cpp +++ b/dom/fetch/Fetch.cpp @@ -38,7 +38,6 @@ #include "mozilla/dom/ScriptSettings.h" #include "mozilla/dom/URLSearchParams.h" #include "mozilla/dom/workers/ServiceWorkerManager.h" -#include "mozilla/Telemetry.h" #include "InternalRequest.h" #include "InternalResponse.h" @@ -237,8 +236,6 @@ FetchRequest(nsIGlobalObject* aGlobal, const RequestOrUSVString& aInput, } } - Telemetry::Accumulate(Telemetry::FETCH_IS_MAINTHREAD, 1); - RefPtr<MainThreadFetchResolver> resolver = new MainThreadFetchResolver(p); RefPtr<FetchDriver> fetch = new FetchDriver(r, principal, loadGroup); fetch->SetDocument(doc); @@ -251,8 +248,6 @@ FetchRequest(nsIGlobalObject* aGlobal, const RequestOrUSVString& aInput, WorkerPrivate* worker = GetCurrentThreadWorkerPrivate(); MOZ_ASSERT(worker); - Telemetry::Accumulate(Telemetry::FETCH_IS_MAINTHREAD, 0); - if (worker->IsServiceWorker()) { r->SetSkipServiceWorker(); } diff --git a/dom/fetch/FetchDriver.cpp b/dom/fetch/FetchDriver.cpp index aac79b829..1791399b7 100644 --- a/dom/fetch/FetchDriver.cpp +++ b/dom/fetch/FetchDriver.cpp @@ -77,9 +77,6 @@ FetchDriver::Fetch(FetchDriverObserver* aObserver) mObserver = aObserver; - Telemetry::Accumulate(Telemetry::SERVICE_WORKER_REQUEST_PASSTHROUGH, - mRequest->WasCreatedByFetchEvent()); - // FIXME(nsm): Deal with HSTS. MOZ_RELEASE_ASSERT(!mRequest->IsSynchronous(), diff --git a/dom/geolocation/nsGeolocation.cpp b/dom/geolocation/nsGeolocation.cpp index 2d84a3e11..201d4d89a 100644 --- a/dom/geolocation/nsGeolocation.cpp +++ b/dom/geolocation/nsGeolocation.cpp @@ -382,13 +382,6 @@ nsGeolocationRequest::GetElement(nsIDOMElement * *aRequestingElement) NS_IMETHODIMP nsGeolocationRequest::Cancel() { - if (mRequester) { - // Record the number of denied requests for regular web content. - // This method is only called when the user explicitly denies the request, - // and is not called when the page is simply unloaded, or similar. - Telemetry::Accumulate(Telemetry::GEOLOCATION_REQUEST_GRANTED, mProtocolType); - } - if (mLocator->ClearPendingRequest(this)) { return NS_OK; } @@ -403,9 +396,6 @@ nsGeolocationRequest::Allow(JS::HandleValue aChoices) MOZ_ASSERT(aChoices.isUndefined()); if (mRequester) { - // Record the number of granted requests for regular web content. - Telemetry::Accumulate(Telemetry::GEOLOCATION_REQUEST_GRANTED, mProtocolType + 10); - // Record whether a location callback is fulfilled while the owner window // is not visible. bool isVisible = false; @@ -415,12 +405,6 @@ nsGeolocationRequest::Allow(JS::HandleValue aChoices) nsCOMPtr<nsIDocument> doc = window->GetDoc(); isVisible = doc && !doc->Hidden(); } - - if (IsWatch()) { - mozilla::Telemetry::Accumulate(mozilla::Telemetry::GEOLOCATION_WATCHPOSITION_VISIBLE, isVisible); - } else { - mozilla::Telemetry::Accumulate(mozilla::Telemetry::GEOLOCATION_GETCURRENTPOSITION_VISIBLE, isVisible); - } } if (mLocator->ClearPendingRequest(this)) { @@ -1110,7 +1094,6 @@ Geolocation::Update(nsIDOMGeoPosition *aSomewhere) if (coords) { double accuracy = -1; coords->GetAccuracy(&accuracy); - mozilla::Telemetry::Accumulate(mozilla::Telemetry::GEOLOCATION_ACCURACY_EXPONENTIAL, accuracy); } } @@ -1135,8 +1118,6 @@ Geolocation::NotifyError(uint16_t aErrorCode) return NS_OK; } - mozilla::Telemetry::Accumulate(mozilla::Telemetry::GEOLOCATION_ERROR, true); - for (uint32_t i = mPendingCallbacks.Length(); i > 0; i--) { mPendingCallbacks[i-1]->NotifyErrorAndShutdown(aErrorCode); //NotifyErrorAndShutdown() removes the request from the array @@ -1214,10 +1195,6 @@ Geolocation::GetCurrentPosition(GeoPositionCallback callback, // After this we hand over ownership of options to our nsGeolocationRequest. - // Count the number of requests per protocol/scheme. - Telemetry::Accumulate(Telemetry::GEOLOCATION_GETCURRENTPOSITION_SECURE_ORIGIN, - static_cast<uint8_t>(mProtocolType)); - RefPtr<nsGeolocationRequest> request = new nsGeolocationRequest(this, Move(callback), Move(errorCallback), Move(options), static_cast<uint8_t>(mProtocolType), @@ -1292,10 +1269,6 @@ Geolocation::WatchPosition(GeoPositionCallback aCallback, return NS_ERROR_NOT_AVAILABLE; } - // Count the number of requests per protocol/scheme. - Telemetry::Accumulate(Telemetry::GEOLOCATION_WATCHPOSITION_SECURE_ORIGIN, - static_cast<uint8_t>(mProtocolType)); - // The watch ID: *aRv = mLastWatchId++; diff --git a/dom/html/HTMLFormElement.cpp b/dom/html/HTMLFormElement.cpp index 5164391f8..0393ed3e0 100644 --- a/dom/html/HTMLFormElement.cpp +++ b/dom/html/HTMLFormElement.cpp @@ -38,7 +38,6 @@ // form submission #include "HTMLFormSubmissionConstants.h" #include "mozilla/dom/FormData.h" -#include "mozilla/Telemetry.h" #include "nsIFormSubmitObserver.h" #include "nsIObserverService.h" #include "nsICategoryManager.h" @@ -957,13 +956,6 @@ HTMLFormElement::DoSecureToInsecureSubmitCheck(nsIURI* aActionURL, *aCancelSubmit = (buttonPressed == 1); uint32_t telemetryBucket = nsISecurityUITelemetry::WARNING_CONFIRM_POST_TO_INSECURE_FROM_SECURE; - mozilla::Telemetry::Accumulate(mozilla::Telemetry::SECURITY_UI, - telemetryBucket); - if (!*aCancelSubmit) { - // The user opted to continue, so note that in the next telemetry bucket. - mozilla::Telemetry::Accumulate(mozilla::Telemetry::SECURITY_UI, - telemetryBucket + 1); - } return NS_OK; } diff --git a/dom/html/HTMLInputElement.cpp b/dom/html/HTMLInputElement.cpp index e9086933b..0b879bb9b 100644 --- a/dom/html/HTMLInputElement.cpp +++ b/dom/html/HTMLInputElement.cpp @@ -24,7 +24,6 @@ #include "nsIPhonetic.h" #include "HTMLFormSubmissionConstants.h" -#include "mozilla/Telemetry.h" #include "nsIControllers.h" #include "nsIStringBundle.h" #include "nsFocusManager.h" @@ -1275,10 +1274,6 @@ HTMLInputElement::BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName, container->RadioRequiredWillChange(name, !!aValue); } } - - if (aName == nsGkAtoms::webkitdirectory) { - Telemetry::Accumulate(Telemetry::WEBKIT_DIRECTORY_USED, true); - } } return nsGenericHTMLFormElementWithState::BeforeSetAttr(aNameSpaceID, aName, @@ -4989,10 +4984,6 @@ HTMLInputElement::BindToTree(nsIDocument* aDocument, nsIContent* aParent, true); dispatcher->PostDOMEvent(); } - -#ifdef EARLY_BETA_OR_EARLIER - Telemetry::Accumulate(Telemetry::PWMGR_PASSWORD_INPUT_IN_FORM, !!mForm); -#endif } return rv; @@ -8863,7 +8854,6 @@ HTMLInputElement::UpdateEntries(const nsTArray<OwningFileOrDirectory>& aFilesOrD void HTMLInputElement::GetWebkitEntries(nsTArray<RefPtr<FileSystemEntry>>& aSequence) { - Telemetry::Accumulate(Telemetry::BLINK_FILESYSTEM_USED, true); aSequence.AppendElements(mEntries); } diff --git a/dom/html/HTMLMediaElement.cpp b/dom/html/HTMLMediaElement.cpp index 3954e6208..6171e1766 100644 --- a/dom/html/HTMLMediaElement.cpp +++ b/dom/html/HTMLMediaElement.cpp @@ -92,7 +92,6 @@ #include "mozilla/dom/VideoTrackList.h" #include "mozilla/dom/TextTrack.h" #include "nsIContentPolicy.h" -#include "mozilla/Telemetry.h" #include "DecoderDoctorDiagnostics.h" #include "DecoderTraits.h" #include "MediaContentType.h" @@ -1902,7 +1901,6 @@ void HTMLMediaElement::FastSeek(double aTime, ErrorResult& aRv) { LOG(LogLevel::Debug, ("Reporting telemetry VIDEO_FASTSEEK_USED")); - Telemetry::Accumulate(Telemetry::VIDEO_FASTSEEK_USED, 1); RefPtr<Promise> tobeDropped = Seek(aTime, SeekTarget::PrevSyncPoint, aRv); } @@ -3693,7 +3691,6 @@ HTMLMediaElement::ReportEMETelemetry() // Report telemetry for EME videos when a page is unloaded. NS_ASSERTION(NS_IsMainThread(), "Should be on main thread."); if (mIsEncrypted && Preferences::GetBool("media.eme.enabled")) { - Telemetry::Accumulate(Telemetry::VIDEO_EME_PLAY_SUCCESS, mLoadedDataFired); LOG(LogLevel::Debug, ("%p VIDEO_EME_PLAY_SUCCESS = %s", this, mLoadedDataFired ? "true" : "false")); } @@ -3745,7 +3742,6 @@ HTMLMediaElement::ReportTelemetry() } } - Telemetry::Accumulate(Telemetry::VIDEO_UNLOAD_STATE, state); LOG(LogLevel::Debug, ("%p VIDEO_UNLOAD_STATE = %d", this, state)); FrameStatisticsData data; @@ -3761,8 +3757,6 @@ HTMLMediaElement::ReportTelemetry() uint32_t percentage = 100 * data.mDroppedFrames / data.mParsedFrames; LOG(LogLevel::Debug, ("Reporting telemetry DROPPED_FRAMES_IN_VIDEO_PLAYBACK")); - Telemetry::Accumulate(Telemetry::VIDEO_DROPPED_FRAMES_PROPORTION, - percentage); } } } @@ -3774,10 +3768,8 @@ HTMLMediaElement::ReportTelemetry() double hiddenPlayTime = mHiddenPlayTime.Total(); double videoDecodeSuspendTime = mVideoDecodeSuspendTime.Total(); - Telemetry::Accumulate(Telemetry::VIDEO_PLAY_TIME_MS, SECONDS_TO_MS(playTime)); LOG(LogLevel::Debug, ("%p VIDEO_PLAY_TIME_MS = %f", this, playTime)); - Telemetry::Accumulate(Telemetry::VIDEO_HIDDEN_PLAY_TIME_MS, SECONDS_TO_MS(hiddenPlayTime)); LOG(LogLevel::Debug, ("%p VIDEO_HIDDEN_PLAY_TIME_MS = %f", this, hiddenPlayTime)); if (playTime > 0.0) { @@ -3804,24 +3796,11 @@ HTMLMediaElement::ReportTelemetry() key.AppendASCII(resolution); uint32_t hiddenPercentage = uint32_t(hiddenPlayTime / playTime * 100.0 + 0.5); - Telemetry::Accumulate(Telemetry::VIDEO_HIDDEN_PLAY_TIME_PERCENTAGE, - key, - hiddenPercentage); - // Also accumulate all percentages in an "All" key. - Telemetry::Accumulate(Telemetry::VIDEO_HIDDEN_PLAY_TIME_PERCENTAGE, - NS_LITERAL_CSTRING("All"), - hiddenPercentage); LOG(LogLevel::Debug, ("%p VIDEO_HIDDEN_PLAY_TIME_PERCENTAGE = %u, keys: '%s' and 'All'", this, hiddenPercentage, key.get())); uint32_t videoDecodeSuspendPercentage = uint32_t(videoDecodeSuspendTime / playTime * 100.0 + 0.5); - Telemetry::Accumulate(Telemetry::VIDEO_INFERRED_DECODE_SUSPEND_PERCENTAGE, - key, - videoDecodeSuspendPercentage); - Telemetry::Accumulate(Telemetry::VIDEO_INFERRED_DECODE_SUSPEND_PERCENTAGE, - NS_LITERAL_CSTRING("All"), - videoDecodeSuspendPercentage); LOG(LogLevel::Debug, ("%p VIDEO_INFERRED_DECODE_SUSPEND_PERCENTAGE = %u, keys: '%s' and 'All'", this, videoDecodeSuspendPercentage, key.get())); @@ -3832,24 +3811,12 @@ HTMLMediaElement::ReportTelemetry() / 1000.0 + 0.5, UINT32_MAX)); - Telemetry::Accumulate(Telemetry::VIDEO_INTER_KEYFRAME_AVERAGE_MS, - key, - average_ms); - Telemetry::Accumulate(Telemetry::VIDEO_INTER_KEYFRAME_AVERAGE_MS, - NS_LITERAL_CSTRING("All"), - average_ms); LOG(LogLevel::Debug, ("%p VIDEO_INTER_KEYFRAME_AVERAGE_MS = %u, keys: '%s' and 'All'", this, average_ms, key.get())); uint32_t max_ms = uint32_t(std::min<uint64_t>((data.mInterKeyFrameMax_us + 500) / 1000, UINT32_MAX)); - Telemetry::Accumulate(Telemetry::VIDEO_INTER_KEYFRAME_MAX_MS, - key, - max_ms); - Telemetry::Accumulate(Telemetry::VIDEO_INTER_KEYFRAME_MAX_MS, - NS_LITERAL_CSTRING("All"), - max_ms); LOG(LogLevel::Debug, ("%p VIDEO_INTER_KEYFRAME_MAX_MS = %u, keys: '%s' and 'All'", this, max_ms, key.get())); } else { @@ -3858,12 +3825,6 @@ HTMLMediaElement::ReportTelemetry() // decode-suspend delay (showing recovery would be difficult). uint32_t suspendDelay_ms = MediaPrefs::MDSMSuspendBackgroundVideoDelay(); if (uint32_t(playTime * 1000.0) > suspendDelay_ms) { - Telemetry::Accumulate(Telemetry::VIDEO_INTER_KEYFRAME_MAX_MS, - key, - 0); - Telemetry::Accumulate(Telemetry::VIDEO_INTER_KEYFRAME_MAX_MS, - NS_LITERAL_CSTRING("All"), - 0); LOG(LogLevel::Debug, ("%p VIDEO_INTER_KEYFRAME_MAX_MS = 0 (only 1 keyframe), keys: '%s' and 'All'", this, key.get())); } @@ -6860,97 +6821,6 @@ HTMLMediaElement::MarkAsContentSource(CallerAPI aAPI) { const bool isVisible = mVisibilityState != Visibility::APPROXIMATELY_NONVISIBLE; - if (isVisible) { - // 0 = ALL_VISIBLE - Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE, 0); - } else { - // 1 = ALL_INVISIBLE - Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE, 1); - - if (IsInUncomposedDoc()) { - // 0 = ALL_IN_TREE - Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE_IN_TREE_OR_NOT, 0); - } else { - // 1 = ALL_NOT_IN_TREE - Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE_IN_TREE_OR_NOT, 1); - } - } - - switch (aAPI) { - case CallerAPI::DRAW_IMAGE: { - if (isVisible) { - // 2 = drawImage_VISIBLE - Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE, 2); - } else { - // 3 = drawImage_INVISIBLE - Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE, 3); - - if (IsInUncomposedDoc()) { - // 2 = drawImage_IN_TREE - Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE_IN_TREE_OR_NOT, 2); - } else { - // 3 = drawImage_NOT_IN_TREE - Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE_IN_TREE_OR_NOT, 3); - } - } - break; - } - case CallerAPI::CREATE_PATTERN: { - if (isVisible) { - // 4 = createPattern_VISIBLE - Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE, 4); - } else { - // 5 = createPattern_INVISIBLE - Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE, 5); - - if (IsInUncomposedDoc()) { - // 4 = createPattern_IN_TREE - Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE_IN_TREE_OR_NOT, 4); - } else { - // 5 = createPattern_NOT_IN_TREE - Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE_IN_TREE_OR_NOT, 5); - } - } - break; - } - case CallerAPI::CREATE_IMAGEBITMAP: { - if (isVisible) { - // 6 = createImageBitmap_VISIBLE - Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE, 6); - } else { - // 7 = createImageBitmap_INVISIBLE - Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE, 7); - - if (IsInUncomposedDoc()) { - // 6 = createImageBitmap_IN_TREE - Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE_IN_TREE_OR_NOT, 6); - } else { - // 7 = createImageBitmap_NOT_IN_TREE - Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE_IN_TREE_OR_NOT, 7); - } - } - break; - } - case CallerAPI::CAPTURE_STREAM: { - if (isVisible) { - // 8 = captureStream_VISIBLE - Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE, 8); - } else { - // 9 = captureStream_INVISIBLE - Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE, 9); - - if (IsInUncomposedDoc()) { - // 8 = captureStream_IN_TREE - Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE_IN_TREE_OR_NOT, 8); - } else { - // 9 = captureStream_NOT_IN_TREE - Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE_IN_TREE_OR_NOT, 9); - } - } - break; - } - } - LOG(LogLevel::Debug, ("%p Log VIDEO_AS_CONTENT_SOURCE: visibility = %u, API: '%d' and 'All'", this, isVisible, aAPI)); diff --git a/dom/html/ImageDocument.cpp b/dom/html/ImageDocument.cpp index 200bb5d46..f83a804be 100644 --- a/dom/html/ImageDocument.cpp +++ b/dom/html/ImageDocument.cpp @@ -40,12 +40,14 @@ #include "nsThreadUtils.h" #include "nsIScrollableFrame.h" #include "nsContentUtils.h" +#include "nsCSSParser.h" // for CSS colors on the background #include "mozilla/dom/Element.h" #include "mozilla/Preferences.h" #include <algorithm> #define AUTOMATIC_IMAGE_RESIZING_PREF "browser.enable_automatic_image_resizing" #define CLICK_IMAGE_RESIZING_PREF "browser.enable_click_image_resizing" +#define STANDALONE_IMAGE_BACKGROUND_COLOR_PREF "browser.display.standalone_images.background_color" //XXX A hack needed for Firefox's site specific zoom. #define SITE_SPECIFIC_ZOOM "browser.zoom.siteSpecific" @@ -170,6 +172,8 @@ ImageDocument::Init() mClickResizingEnabled = Preferences::GetBool(CLICK_IMAGE_RESIZING_PREF); mShouldResize = mResizeImageByDefault; mFirstResize = true; + + mBackgroundColor = Preferences::GetString(STANDALONE_IMAGE_BACKGROUND_COLOR_PREF); return NS_OK; } @@ -682,9 +686,22 @@ ImageDocument::CreateSyntheticDocument() mImageContent->SetAttr(kNameSpaceID_None, nsGkAtoms::src, srcString, false); mImageContent->SetAttr(kNameSpaceID_None, nsGkAtoms::alt, srcString, false); + // Implement mechanism for custom background color from pref. + if (!mBackgroundColor.IsEmpty()) { + nsCSSValue color; + nsCSSParser parser; + if (parser.ParseColorString(mBackgroundColor, nullptr, 0, color)) { + nsAutoString styleAttr(NS_LITERAL_STRING("background-color: ")); + styleAttr.Append(mBackgroundColor); + body->SetAttr(kNameSpaceID_None, nsGkAtoms::style, styleAttr, false); + } + } + body->AppendChildTo(mImageContent, false); imageLoader->SetLoadingEnabled(true); + UpdateTitleAndCharset(); + return NS_OK; } diff --git a/dom/html/ImageDocument.h b/dom/html/ImageDocument.h index fdf2a00a8..945317314 100644 --- a/dom/html/ImageDocument.h +++ b/dom/html/ImageDocument.h @@ -112,6 +112,9 @@ protected: float mVisibleHeight; int32_t mImageWidth; int32_t mImageHeight; + + // Holds the custom background color for stand-alone images + nsAutoString mBackgroundColor; bool mResizeImageByDefault; bool mClickResizingEnabled; diff --git a/dom/html/TextTrackManager.cpp b/dom/html/TextTrackManager.cpp index 8110dab29..4266575f7 100644 --- a/dom/html/TextTrackManager.cpp +++ b/dom/html/TextTrackManager.cpp @@ -12,7 +12,6 @@ #include "mozilla/dom/TextTrackCue.h" #include "mozilla/dom/Event.h" #include "mozilla/ClearOnShutdown.h" -#include "mozilla/Telemetry.h" #include "nsComponentManagerUtils.h" #include "nsVariant.h" #include "nsVideoFrame.h" @@ -824,24 +823,13 @@ TextTrackManager::NotifyReset() void TextTrackManager::ReportTelemetryForTrack(TextTrack* aTextTrack) const { - MOZ_ASSERT(NS_IsMainThread()); - MOZ_ASSERT(aTextTrack); - MOZ_ASSERT(mTextTracks->Length() > 0); - - TextTrackKind kind = aTextTrack->Kind(); - Telemetry::Accumulate(Telemetry::WEBVTT_TRACK_KINDS, uint32_t(kind)); +/* STUB */ } void TextTrackManager::ReportTelemetryForCue() { - MOZ_ASSERT(NS_IsMainThread()); - MOZ_ASSERT(!mNewCues->IsEmpty() || !mLastActiveCues->IsEmpty()); - - if (!mCueTelemetryReported) { - Telemetry::Accumulate(Telemetry::WEBVTT_USED_VTT_CUES, 1); - mCueTelemetryReported = true; - } +/* STUB */ } } // namespace dom diff --git a/dom/html/nsTextEditorState.cpp b/dom/html/nsTextEditorState.cpp index 187afb66d..0b4cb1920 100644 --- a/dom/html/nsTextEditorState.cpp +++ b/dom/html/nsTextEditorState.cpp @@ -47,7 +47,6 @@ #include "mozilla/dom/HTMLInputElement.h" #include "nsNumberControlFrame.h" #include "nsFrameSelection.h" -#include "mozilla/Telemetry.h" #include "mozilla/layers/ScrollInputMethods.h" using namespace mozilla; @@ -585,9 +584,6 @@ nsTextInputSelectionImpl::CompleteScroll(bool aForward) if (!mScrollFrame) return NS_ERROR_NOT_INITIALIZED; - mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS, - (uint32_t) ScrollInputMethod::MainThreadCompleteScroll); - mScrollFrame->ScrollBy(nsIntPoint(0, aForward ? 1 : -1), nsIScrollableFrame::WHOLE, nsIScrollableFrame::INSTANT); @@ -640,9 +636,6 @@ nsTextInputSelectionImpl::ScrollPage(bool aForward) if (!mScrollFrame) return NS_ERROR_NOT_INITIALIZED; - mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS, - (uint32_t) ScrollInputMethod::MainThreadScrollPage); - mScrollFrame->ScrollBy(nsIntPoint(0, aForward ? 1 : -1), nsIScrollableFrame::PAGES, nsIScrollableFrame::SMOOTH); @@ -655,9 +648,6 @@ nsTextInputSelectionImpl::ScrollLine(bool aForward) if (!mScrollFrame) return NS_ERROR_NOT_INITIALIZED; - mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS, - (uint32_t) ScrollInputMethod::MainThreadScrollLine); - mScrollFrame->ScrollBy(nsIntPoint(0, aForward ? 1 : -1), nsIScrollableFrame::LINES, nsIScrollableFrame::SMOOTH); @@ -670,9 +660,6 @@ nsTextInputSelectionImpl::ScrollCharacter(bool aRight) if (!mScrollFrame) return NS_ERROR_NOT_INITIALIZED; - mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS, - (uint32_t) ScrollInputMethod::MainThreadScrollCharacter); - mScrollFrame->ScrollBy(nsIntPoint(aRight ? 1 : -1, 0), nsIScrollableFrame::LINES, nsIScrollableFrame::SMOOTH); diff --git a/dom/ipc/ContentParent.cpp b/dom/ipc/ContentParent.cpp index 0a07147bf..5c6aadb77 100644 --- a/dom/ipc/ContentParent.cpp +++ b/dom/ipc/ContentParent.cpp @@ -1718,9 +1718,6 @@ ContentParent::ActorDestroy(ActorDestroyReason why) props->SetPropertyAsUint64(NS_LITERAL_STRING("childID"), mChildID); if (AbnormalShutdown == why) { - Telemetry::Accumulate(Telemetry::SUBPROCESS_ABNORMAL_ABORT, - NS_LITERAL_CSTRING("content"), 1); - props->SetPropertyAsBool(NS_LITERAL_STRING("abnormal"), true); } nsAutoString cpId; @@ -4778,7 +4775,7 @@ bool ContentParent::RecvAccumulateChildHistogram( InfallibleTArray<Accumulation>&& aAccumulations) { - Telemetry::AccumulateChild(GeckoProcessType_Content, aAccumulations); + /* STUB */ return true; } @@ -4786,6 +4783,6 @@ bool ContentParent::RecvAccumulateChildKeyedHistogram( InfallibleTArray<KeyedAccumulation>&& aAccumulations) { - Telemetry::AccumulateChildKeyed(GeckoProcessType_Content, aAccumulations); + /* STUB */ return true; } diff --git a/dom/ipc/TabChild.cpp b/dom/ipc/TabChild.cpp index 705799c54..244fa9969 100644 --- a/dom/ipc/TabChild.cpp +++ b/dom/ipc/TabChild.cpp @@ -2395,7 +2395,6 @@ TabChild::RecvSetDocShellIsActive(const bool& aIsActive, root->SchedulePaint(); } - Telemetry::AutoTimer<Telemetry::TABCHILD_PAINT_TIME> timer; // If we need to repaint, let's do that right away. No sense waiting until // we get back to the event loop again. We suppress the display port so that // we only paint what's visible. This ensures that the tab we're switching diff --git a/dom/locales/en-US/chrome/dom/dom.properties b/dom/locales/en-US/chrome/dom/dom.properties index ec0356c04..0472979d7 100644 --- a/dom/locales/en-US/chrome/dom/dom.properties +++ b/dom/locales/en-US/chrome/dom/dom.properties @@ -195,8 +195,6 @@ IgnoringWillChangeOverBudgetWarning=Will-change memory consumption is too high. HittingMaxWorkersPerDomain2=A Worker could not be started immediately because other documents in the same origin are already using the maximum number of workers. The Worker is now queued and will be started after some of the other workers have completed. # LOCALIZATION NOTE: Do not translate "setVelocity", "PannerNode", "AudioListener", "speedOfSound" and "dopplerFactor" PannerNodeDopplerWarning=Use of setVelocity on the PannerNode and AudioListener, and speedOfSound and dopplerFactor on the AudioListener are deprecated and those members will be removed. For more help https://developer.mozilla.org/en-US/docs/Web/API/AudioListener#Deprecated_features -# LOCALIZATION NOTE: Do not translate "Application Cache API", "AppCache" and "ServiceWorker". -AppCacheWarning=The Application Cache API (AppCache) is deprecated and will be removed at a future date. Please consider using ServiceWorker for offline support. # LOCALIZATION NOTE: Do not translate "Worker". EmptyWorkerSourceWarning=Attempting to create a Worker from an empty source. This is probably unintentional. WebrtcDeprecatedPrefixWarning=WebRTC interfaces with the “moz” prefix (mozRTCPeerConnection, mozRTCSessionDescription, mozRTCIceCandidate) have been deprecated. diff --git a/dom/locales/en-US/chrome/security/security.properties b/dom/locales/en-US/chrome/security/security.properties index c0b80996c..8efdb0a6d 100644 --- a/dom/locales/en-US/chrome/security/security.properties +++ b/dom/locales/en-US/chrome/security/security.properties @@ -8,6 +8,7 @@ BlockMixedActiveContent = Blocked loading mixed active content “%1$S” CORSDisabled=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at %1$S. (Reason: CORS disabled). CORSRequestNotHttp=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at %1$S. (Reason: CORS request not http). CORSMissingAllowOrigin=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at %1$S. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing). +CORSMultipleAllowOriginNotAllowed=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at %1$S. (Reason: Multiple CORS headers ‘Access-Control-Allow-Origin’ not allowed). CORSAllowOriginNotMatchingOrigin=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at %1$S. (Reason: CORS header ‘Access-Control-Allow-Origin’ does not match ‘%2$S’). CORSNotSupportingCredentials=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at ‘%1$S’. (Reason: Credential is not supported if the CORS header ‘Access-Control-Allow-Origin’ is ‘*’). CORSMethodNotFound=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at %1$S. (Reason: Did not find method in CORS header ‘Access-Control-Allow-Methods’). diff --git a/dom/media/AudioStream.cpp b/dom/media/AudioStream.cpp index 54cf7b965..896dee407 100644 --- a/dom/media/AudioStream.cpp +++ b/dom/media/AudioStream.cpp @@ -14,7 +14,6 @@ #include "mozilla/Mutex.h" #include "mozilla/Sprintf.h" #include <algorithm> -#include "mozilla/Telemetry.h" #include "CubebUtils.h" #include "nsPrintfCString.h" #include "gfxPrefs.h" @@ -378,8 +377,6 @@ AudioStream::OpenCubeb(cubeb* aContext, cubeb_stream_params& aParams, TimeDuration timeDelta = TimeStamp::Now() - aStartTime; LOG("creation time %sfirst: %u ms", aIsFirst ? "" : "not ", (uint32_t) timeDelta.ToMilliseconds()); - Telemetry::Accumulate(aIsFirst ? Telemetry::AUDIOSTREAM_FIRST_OPEN_MS : - Telemetry::AUDIOSTREAM_LATER_OPEN_MS, timeDelta.ToMilliseconds()); return NS_OK; } diff --git a/dom/media/Benchmark.cpp b/dom/media/Benchmark.cpp index fdbedeca5..7394f8036 100644 --- a/dom/media/Benchmark.cpp +++ b/dom/media/Benchmark.cpp @@ -11,7 +11,6 @@ #include "PDMFactory.h" #include "WebMDemuxer.h" #include "mozilla/Preferences.h" -#include "mozilla/Telemetry.h" #include "mozilla/dom/ContentChild.h" #ifndef MOZ_WIDGET_ANDROID @@ -68,7 +67,6 @@ VP9Benchmark::IsVP9DecodeFast() Preferences::SetUint(sBenchmarkFpsPref, aDecodeFps); Preferences::SetUint(sBenchmarkFpsVersionCheck, sBenchmarkVersionID); } - Telemetry::Accumulate(Telemetry::ID::VIDEO_VP9_BENCHMARK_FPS, aDecodeFps); }, []() { }); } diff --git a/dom/media/CubebUtils.cpp b/dom/media/CubebUtils.cpp index fe94264ee..93792e63b 100644 --- a/dom/media/CubebUtils.cpp +++ b/dom/media/CubebUtils.cpp @@ -248,14 +248,9 @@ void ReportCubebBackendUsed() bool foundBackend = false; for (uint32_t i = 0; i < ArrayLength(AUDIOSTREAM_BACKEND_ID_STR); i++) { if (!strcmp(cubeb_get_backend_id(sCubebContext), AUDIOSTREAM_BACKEND_ID_STR[i])) { - Telemetry::Accumulate(Telemetry::AUDIOSTREAM_BACKEND_USED, i); foundBackend = true; } } - if (!foundBackend) { - Telemetry::Accumulate(Telemetry::AUDIOSTREAM_BACKEND_USED, - CUBEB_BACKEND_UNKNOWN); - } } void ReportCubebStreamInitFailure(bool aIsFirst) @@ -267,9 +262,6 @@ void ReportCubebStreamInitFailure(bool aIsFirst) // failures to open multiple streams in a process over time. return; } - Telemetry::Accumulate(Telemetry::AUDIOSTREAM_BACKEND_USED, - aIsFirst ? CUBEB_BACKEND_INIT_FAILURE_FIRST - : CUBEB_BACKEND_INIT_FAILURE_OTHER); } uint32_t GetCubebPlaybackLatencyInMilliseconds() diff --git a/dom/media/DecoderTraits.cpp b/dom/media/DecoderTraits.cpp index ddd35fe0d..56ebd9ce9 100644 --- a/dom/media/DecoderTraits.cpp +++ b/dom/media/DecoderTraits.cpp @@ -288,7 +288,7 @@ CanHandleMediaType(const MediaContentType& aType, MOZ_ASSERT(NS_IsMainThread()); if (IsHttpLiveStreamingType(aType.GetMIMEType())) { - Telemetry::Accumulate(Telemetry::MEDIA_HLS_CANPLAY_REQUESTED, true); + /* Telemetry STUB */ } if (aType.HaveCodecs()) { @@ -433,11 +433,6 @@ InstantiateDecoder(const nsACString& aType, } #endif - if (IsHttpLiveStreamingType(aType)) { - // We don't have an HLS decoder. - Telemetry::Accumulate(Telemetry::MEDIA_HLS_DECODER_SUCCESS, false); - } - return nullptr; } diff --git a/dom/media/GraphDriver.cpp b/dom/media/GraphDriver.cpp index cae15eb8c..47762c56e 100644 --- a/dom/media/GraphDriver.cpp +++ b/dom/media/GraphDriver.cpp @@ -200,7 +200,7 @@ public: STREAM_LOG(LogLevel::Debug, ("Starting system thread")); profiler_register_thread("MediaStreamGraph", &aLocal); LIFECYCLE_LOG("Starting a new system driver for graph %p\n", - mDriver->mGraphImpl); + mDriver->mGraphImpl.get()); RefPtr<GraphDriver> previousDriver; { @@ -236,7 +236,7 @@ private: void ThreadedDriver::Start() { - LIFECYCLE_LOG("Starting thread for a SystemClockDriver %p\n", mGraphImpl); + LIFECYCLE_LOG("Starting thread for a SystemClockDriver %p\n", mGraphImpl.get()); Unused << NS_WARN_IF(mThread); if (!mThread) { // Ensure we haven't already started it nsCOMPtr<nsIRunnable> event = new MediaStreamGraphInitThreadRunnable(this); @@ -761,7 +761,7 @@ AudioCallbackDriver::Destroy() void AudioCallbackDriver::Resume() { - STREAM_LOG(LogLevel::Debug, ("Resuming audio threads for MediaStreamGraph %p", mGraphImpl)); + STREAM_LOG(LogLevel::Debug, ("Resuming audio threads for MediaStreamGraph %p", mGraphImpl.get())); if (cubeb_stream_start(mAudioStream) != CUBEB_OK) { NS_WARNING("Could not start cubeb stream for MSG."); } @@ -830,7 +830,9 @@ AudioCallbackDriver::Revive() mGraphImpl->SetCurrentDriver(NextDriver()); NextDriver()->Start(); } else { - STREAM_LOG(LogLevel::Debug, ("Starting audio threads for MediaStreamGraph %p from a new thread.", mGraphImpl)); + STREAM_LOG(LogLevel::Debug, + ("Starting audio threads for MediaStreamGraph %p from a new thread.", + mGraphImpl.get())); RefPtr<AsyncCubebTask> initEvent = new AsyncCubebTask(this, AsyncCubebOperation::INIT); initEvent->Dispatch(); diff --git a/dom/media/GraphDriver.h b/dom/media/GraphDriver.h index 411e175d3..bb4f2689b 100644 --- a/dom/media/GraphDriver.h +++ b/dom/media/GraphDriver.h @@ -210,10 +210,8 @@ protected: // Time of the end of this graph iteration. This must be accessed while having // the monitor. GraphTime mIterationEnd; - // The MediaStreamGraphImpl that owns this driver. This has a lifetime longer - // than the driver, and will never be null. Hence, it can be accesed without - // monitor. - MediaStreamGraphImpl* mGraphImpl; + // The MediaStreamGraphImpl associated with this driver. + const RefPtr<MediaStreamGraphImpl> mGraphImpl; // This enum specifies the wait state of the driver. enum WaitState { diff --git a/dom/media/MediaDecoder.cpp b/dom/media/MediaDecoder.cpp index 9334d1bcb..d027818de 100644 --- a/dom/media/MediaDecoder.cpp +++ b/dom/media/MediaDecoder.cpp @@ -877,7 +877,6 @@ MediaDecoder::EnsureTelemetryReported() } for (const nsCString& codec : codecs) { DECODER_LOG("Telemetry MEDIA_CODEC_USED= '%s'", codec.get()); - Telemetry::Accumulate(Telemetry::ID::MEDIA_CODEC_USED, codec); } mTelemetryReported = true; diff --git a/dom/media/MediaDecoderStateMachine.cpp b/dom/media/MediaDecoderStateMachine.cpp index c586139ad..5bc1d95ef 100644 --- a/dom/media/MediaDecoderStateMachine.cpp +++ b/dom/media/MediaDecoderStateMachine.cpp @@ -1178,40 +1178,7 @@ ReportRecoveryTelemetry(const TimeStamp& aRecoveryStart, const MediaInfo& aMediaInfo, bool aIsHardwareAccelerated) { - MOZ_ASSERT(NS_IsMainThread()); - if (!aMediaInfo.HasVideo()) { - return; - } - - // Keyed by audio+video or video alone, hardware acceleration, - // and by a resolution range. - nsCString key(aMediaInfo.HasAudio() ? "AV" : "V"); - key.AppendASCII(aIsHardwareAccelerated ? "(hw)," : ","); - static const struct { int32_t mH; const char* mRes; } sResolutions[] = { - { 240, "0-240" }, - { 480, "241-480" }, - { 720, "481-720" }, - { 1080, "721-1080" }, - { 2160, "1081-2160" } - }; - const char* resolution = "2161+"; - int32_t height = aMediaInfo.mVideo.mImage.height; - for (const auto& res : sResolutions) { - if (height <= res.mH) { - resolution = res.mRes; - break; - } - } - key.AppendASCII(resolution); - - TimeDuration duration = TimeStamp::Now() - aRecoveryStart; - double duration_ms = duration.ToMilliseconds(); - Telemetry::Accumulate(Telemetry::VIDEO_SUSPEND_RECOVERY_TIME_MS, - key, - uint32_t(duration_ms + 0.5)); - Telemetry::Accumulate(Telemetry::VIDEO_SUSPEND_RECOVERY_TIME_MS, - NS_LITERAL_CSTRING("All"), - uint32_t(duration_ms + 0.5)); +/* STUB */ } void diff --git a/dom/media/MediaManager.cpp b/dom/media/MediaManager.cpp index ba6b4cd47..baaf45416 100644 --- a/dom/media/MediaManager.cpp +++ b/dom/media/MediaManager.cpp @@ -32,7 +32,6 @@ #include "nsAppDirectoryServiceDefs.h" #include "nsIInputStream.h" #include "nsILineInputStream.h" -#include "mozilla/Telemetry.h" #include "mozilla/Types.h" #include "mozilla/PeerIdentity.h" #include "mozilla/dom/ContentChild.h" @@ -2058,28 +2057,6 @@ MediaManager::GetUserMedia(nsPIDOMWindowInner* aWindow, host.LowerCaseEqualsLiteral("127.0.0.1") || host.LowerCaseEqualsLiteral("::1")); - // Record telemetry about whether the source of the call was secure, i.e., - // privileged or HTTPS. We may handle other cases -if (privileged) { - Telemetry::Accumulate(Telemetry::WEBRTC_GET_USER_MEDIA_SECURE_ORIGIN, - (uint32_t) GetUserMediaSecurityState::Privileged); - } else if (isHTTPS) { - Telemetry::Accumulate(Telemetry::WEBRTC_GET_USER_MEDIA_SECURE_ORIGIN, - (uint32_t) GetUserMediaSecurityState::HTTPS); - } else if (isFile) { - Telemetry::Accumulate(Telemetry::WEBRTC_GET_USER_MEDIA_SECURE_ORIGIN, - (uint32_t) GetUserMediaSecurityState::File); - } else if (isApp) { - Telemetry::Accumulate(Telemetry::WEBRTC_GET_USER_MEDIA_SECURE_ORIGIN, - (uint32_t) GetUserMediaSecurityState::App); - } else if (isLocalhost) { - Telemetry::Accumulate(Telemetry::WEBRTC_GET_USER_MEDIA_SECURE_ORIGIN, - (uint32_t) GetUserMediaSecurityState::Localhost); - } else { - Telemetry::Accumulate(Telemetry::WEBRTC_GET_USER_MEDIA_SECURE_ORIGIN, - (uint32_t) GetUserMediaSecurityState::Other); - } - nsCString origin; rv = nsPrincipal::GetOriginForURI(docURI, origin); if (NS_WARN_IF(NS_FAILED(rv))) { @@ -2098,8 +2075,6 @@ if (privileged) { videoType = StringToEnum(dom::MediaSourceEnumValues::strings, vc.mMediaSource, MediaSourceEnum::Other); - Telemetry::Accumulate(Telemetry::WEBRTC_GET_USER_MEDIA_TYPE, - (uint32_t) videoType); switch (videoType) { case MediaSourceEnum::Camera: break; @@ -2182,8 +2157,6 @@ if (privileged) { ac.mMediaSource.AssignASCII(EnumToASCII(dom::MediaSourceEnumValues::strings, audioType)); } - Telemetry::Accumulate(Telemetry::WEBRTC_GET_USER_MEDIA_TYPE, - (uint32_t) audioType); switch (audioType) { case MediaSourceEnum::Microphone: diff --git a/dom/media/MediaStreamGraph.cpp b/dom/media/MediaStreamGraph.cpp index e2934cbb2..1b9e4f674 100644 --- a/dom/media/MediaStreamGraph.cpp +++ b/dom/media/MediaStreamGraph.cpp @@ -3371,7 +3371,8 @@ MediaStreamGraphImpl::Destroy() // First unregister from memory reporting. UnregisterWeakMemoryReporter(this); - // Clear the self reference which will destroy this instance. + // Clear the self reference which will destroy this instance if all + // associated GraphDrivers are destroyed. mSelfRef = nullptr; } diff --git a/dom/media/VideoUtils.cpp b/dom/media/VideoUtils.cpp index 5c00e54bc..b1a202c03 100644 --- a/dom/media/VideoUtils.cpp +++ b/dom/media/VideoUtils.cpp @@ -6,7 +6,6 @@ #include "mozilla/Base64.h" #include "mozilla/TaskQueue.h" -#include "mozilla/Telemetry.h" #include "mozilla/Function.h" #include "MediaContentType.h" @@ -248,24 +247,6 @@ ExtractH264CodecDetails(const nsAString& aCodec, aLevel *= 10; } - // Capture the constraint_set flag value for the purpose of Telemetry. - // We don't NS_ENSURE_SUCCESS here because ExtractH264CodecDetails doesn't - // care about this, but we make sure constraints is above 4 (constraint_set5_flag) - // otherwise collect 0 for unknown. - uint8_t constraints = PromiseFlatString(Substring(aCodec, 7, 2)).ToInteger(&rv, 16); - Telemetry::Accumulate(Telemetry::VIDEO_CANPLAYTYPE_H264_CONSTRAINT_SET_FLAG, - constraints >= 4 ? constraints : 0); - - // 244 is the highest meaningful profile value (High 4:4:4 Intra Profile) - // that can be represented as single hex byte, otherwise collect 0 for unknown. - Telemetry::Accumulate(Telemetry::VIDEO_CANPLAYTYPE_H264_PROFILE, - aProfile <= 244 ? aProfile : 0); - - // Make sure aLevel represents a value between levels 1 and 5.2, - // otherwise collect 0 for unknown. - Telemetry::Accumulate(Telemetry::VIDEO_CANPLAYTYPE_H264_LEVEL, - (aLevel >= 10 && aLevel <= 52) ? aLevel : 0); - return true; } diff --git a/dom/media/eme/DetailedPromise.cpp b/dom/media/eme/DetailedPromise.cpp index 5893bea2e..d443e3336 100644 --- a/dom/media/eme/DetailedPromise.cpp +++ b/dom/media/eme/DetailedPromise.cpp @@ -96,9 +96,6 @@ DetailedPromise::MaybeReportTelemetry(Status aStatus) uint32_t latency = (TimeStamp::Now() - mStartTime).ToMilliseconds(); EME_LOG("%s %s latency %ums reported via telemetry", mName.get(), ((aStatus == Succeeded) ? "succcess" : "failure"), latency); - Telemetry::ID tid = (aStatus == Succeeded) ? mSuccessLatencyProbe.Value() - : mFailureLatencyProbe.Value(); - Telemetry::Accumulate(tid, latency); } } // namespace dom diff --git a/dom/media/eme/MediaKeySession.cpp b/dom/media/eme/MediaKeySession.cpp index d5eff3f77..9c002b5ba 100644 --- a/dom/media/eme/MediaKeySession.cpp +++ b/dom/media/eme/MediaKeySession.cpp @@ -315,9 +315,6 @@ MediaKeySession::GenerateRequest(const nsAString& aInitDataType, // Note: Remaining steps of generateRequest method continue in CDM. - Telemetry::Accumulate(Telemetry::VIDEO_CDM_GENERATE_REQUEST_CALLED, - ToCDMTypeTelemetryEnum(mKeySystem)); - // Convert initData to base64 for easier logging. // Note: CreateSession() Move()s the data out of the array, so we have // to copy it here. diff --git a/dom/media/eme/MediaKeys.cpp b/dom/media/eme/MediaKeys.cpp index eedd675e4..fea548698 100644 --- a/dom/media/eme/MediaKeys.cpp +++ b/dom/media/eme/MediaKeys.cpp @@ -13,7 +13,6 @@ #include "mozilla/dom/MediaKeySession.h" #include "mozilla/dom/DOMException.h" #include "mozilla/dom/UnionTypes.h" -#include "mozilla/Telemetry.h" #include "GMPCDMProxy.h" #ifdef MOZ_WIDGET_ANDROID #include "mozilla/MediaDrmCDMProxy.h" @@ -457,7 +456,6 @@ MediaKeys::OnCDMCreated(PromiseId aId, const nsACString& aNodeId, const uint32_t mKeySystem, MediaKeySystemStatus::Cdm_created); - Telemetry::Accumulate(Telemetry::VIDEO_CDM_CREATED, ToCDMTypeTelemetryEnum(mKeySystem)); } static bool diff --git a/dom/media/fmp4/MP4Demuxer.cpp b/dom/media/fmp4/MP4Demuxer.cpp index 646897468..5a637b003 100644 --- a/dom/media/fmp4/MP4Demuxer.cpp +++ b/dom/media/fmp4/MP4Demuxer.cpp @@ -81,35 +81,11 @@ private: bool AccumulateSPSTelemetry(const MediaByteBuffer* aExtradata) { + // XXX: Do we still need this without telemetry? mp4_demuxer::SPSData spsdata; if (mp4_demuxer::H264::DecodeSPSFromExtraData(aExtradata, spsdata)) { - uint8_t constraints = (spsdata.constraint_set0_flag ? (1 << 0) : 0) | - (spsdata.constraint_set1_flag ? (1 << 1) : 0) | - (spsdata.constraint_set2_flag ? (1 << 2) : 0) | - (spsdata.constraint_set3_flag ? (1 << 3) : 0) | - (spsdata.constraint_set4_flag ? (1 << 4) : 0) | - (spsdata.constraint_set5_flag ? (1 << 5) : 0); - Telemetry::Accumulate(Telemetry::VIDEO_DECODED_H264_SPS_CONSTRAINT_SET_FLAG, - constraints); - - // Collect profile_idc values up to 244, otherwise 0 for unknown. - Telemetry::Accumulate(Telemetry::VIDEO_DECODED_H264_SPS_PROFILE, - spsdata.profile_idc <= 244 ? spsdata.profile_idc : 0); - - // Make sure level_idc represents a value between levels 1 and 5.2, - // otherwise collect 0 for unknown level. - Telemetry::Accumulate(Telemetry::VIDEO_DECODED_H264_SPS_LEVEL, - (spsdata.level_idc >= 10 && spsdata.level_idc <= 52) ? - spsdata.level_idc : 0); - - // max_num_ref_frames should be between 0 and 16, anything larger will - // be treated as invalid. - Telemetry::Accumulate(Telemetry::VIDEO_H264_SPS_MAX_NUM_REF_FRAMES, - std::min(spsdata.max_num_ref_frames, 17u)); - return false; } - return true; } diff --git a/dom/media/ogg/OggDemuxer.cpp b/dom/media/ogg/OggDemuxer.cpp index 591a5248f..0cc484687 100644 --- a/dom/media/ogg/OggDemuxer.cpp +++ b/dom/media/ogg/OggDemuxer.cpp @@ -12,7 +12,6 @@ #include "mozilla/Atomics.h" #include "mozilla/PodOperations.h" #include "mozilla/SharedThreadPool.h" -#include "mozilla/Telemetry.h" #include "mozilla/TimeStamp.h" #include "MediaDataDemuxer.h" #include "nsAutoRef.h" @@ -164,7 +163,6 @@ OggDemuxer::~OggDemuxer() MOZ_LOG(gMediaDemuxerLog, mozilla::LogLevel::Debug, ("OggDemuxer(%p)::%s: Reporting telemetry MEDIA_OGG_LOADED_IS_CHAINED=%d", ptr, __func__, isChained)); - Telemetry::Accumulate(Telemetry::ID::MEDIA_OGG_LOADED_IS_CHAINED, isChained); }); AbstractThread::MainThread()->Dispatch(task.forget()); } diff --git a/dom/media/platforms/wmf/DXVA2Manager.cpp b/dom/media/platforms/wmf/DXVA2Manager.cpp index 0c1734c54..1226ea621 100644 --- a/dom/media/platforms/wmf/DXVA2Manager.cpp +++ b/dom/media/platforms/wmf/DXVA2Manager.cpp @@ -14,7 +14,6 @@ #include "mozilla/layers/D3D11ShareHandleImage.h" #include "mozilla/layers/ImageBridgeChild.h" #include "mozilla/layers/TextureForwarder.h" -#include "mozilla/Telemetry.h" #include "MediaTelemetryConstants.h" #include "mfapi.h" #include "gfxPrefs.h" @@ -442,9 +441,6 @@ D3D9DXVA2Manager::Init(layers::KnowsCompositor* aKnowsCompositor, } mTextureClientAllocator->SetMaxPoolSize(5); - Telemetry::Accumulate(Telemetry::MEDIA_DECODER_BACKEND_USED, - uint32_t(media::MediaDecoderBackend::WMFDXVA2D3D9)); - return S_OK; } @@ -775,9 +771,6 @@ D3D11DXVA2Manager::Init(layers::KnowsCompositor* aKnowsCompositor, } mTextureClientAllocator->SetMaxPoolSize(5); - Telemetry::Accumulate(Telemetry::MEDIA_DECODER_BACKEND_USED, - uint32_t(media::MediaDecoderBackend::WMFDXVA2D3D11)); - return S_OK; } diff --git a/dom/media/platforms/wmf/WMFAudioMFTManager.cpp b/dom/media/platforms/wmf/WMFAudioMFTManager.cpp index 69b62da51..3dacdf0aa 100644 --- a/dom/media/platforms/wmf/WMFAudioMFTManager.cpp +++ b/dom/media/platforms/wmf/WMFAudioMFTManager.cpp @@ -252,7 +252,6 @@ WMFAudioMFTManager::Output(int64_t aStreamOffset, LOG("Audio MFTDecoder returned success but null output."); nsCOMPtr<nsIRunnable> task = NS_NewRunnableFunction([]() -> void { LOG("Reporting telemetry AUDIO_MFT_OUTPUT_NULL_SAMPLES"); - Telemetry::Accumulate(Telemetry::ID::AUDIO_MFT_OUTPUT_NULL_SAMPLES, 1); }); AbstractThread::MainThread()->Dispatch(task.forget()); return E_FAIL; diff --git a/dom/media/platforms/wmf/WMFMediaDataDecoder.cpp b/dom/media/platforms/wmf/WMFMediaDataDecoder.cpp index d2c13eac7..15e2e1097 100644 --- a/dom/media/platforms/wmf/WMFMediaDataDecoder.cpp +++ b/dom/media/platforms/wmf/WMFMediaDataDecoder.cpp @@ -8,7 +8,6 @@ #include "VideoUtils.h" #include "WMFUtils.h" #include "nsTArray.h" -#include "mozilla/Telemetry.h" #include "mozilla/Logging.h" #include "mozilla/SyncRunnable.h" @@ -67,7 +66,7 @@ SendTelemetry(unsigned long hr) nsCOMPtr<nsIRunnable> runnable = NS_NewRunnableFunction( [sample] { - Telemetry::Accumulate(Telemetry::MEDIA_WMF_DECODE_ERROR, sample); + /* Telemetry STUB */ }); NS_DispatchToMainThread(runnable); } diff --git a/dom/media/platforms/wmf/WMFVideoMFTManager.cpp b/dom/media/platforms/wmf/WMFVideoMFTManager.cpp index 291bc5b74..8a51f817a 100644 --- a/dom/media/platforms/wmf/WMFVideoMFTManager.cpp +++ b/dom/media/platforms/wmf/WMFVideoMFTManager.cpp @@ -128,7 +128,6 @@ WMFVideoMFTManager::~WMFVideoMFTManager() nsCOMPtr<nsIRunnable> task = NS_NewRunnableFunction([=]() -> void { LOG(nsPrintfCString("Reporting telemetry VIDEO_MFT_OUTPUT_NULL_SAMPLES=%d", telemetry).get()); - Telemetry::Accumulate(Telemetry::ID::VIDEO_MFT_OUTPUT_NULL_SAMPLES, telemetry); }); AbstractThread::MainThread()->Dispatch(task.forget()); } @@ -511,8 +510,6 @@ WMFVideoMFTManager::InitInternal(bool aForceD3D9) if (mStreamType == VP9 || mStreamType == VP8) { return false; } - Telemetry::Accumulate(Telemetry::MEDIA_DECODER_BACKEND_USED, - uint32_t(media::MediaDecoderBackend::WMFSoftware)); } mDecoder = decoder; diff --git a/dom/media/systemservices/LoadManager.cpp b/dom/media/systemservices/LoadManager.cpp index f0f4f83a7..34b8fc7e0 100644 --- a/dom/media/systemservices/LoadManager.cpp +++ b/dom/media/systemservices/LoadManager.cpp @@ -15,7 +15,6 @@ #include "nsThreadUtils.h" #include "nsReadableUtils.h" #include "nsIObserverService.h" -#include "mozilla/Telemetry.h" #include "mozilla/ArrayUtils.h" // MOZ_LOG=LoadManager:5 @@ -192,23 +191,6 @@ LoadManagerSingleton::RemoveObserver(webrtc::CPULoadStateObserver * aObserver) for (size_t i = 0; i < MOZ_ARRAY_LENGTH(mTimeInState); i++) { total += mTimeInState[i]; } - // Don't include short calls; we don't have reasonable load data, and - // such short calls rarely reach a stable state. Keep relatively - // short calls separate from longer ones - bool log = total > 5*PR_MSEC_PER_SEC; - bool small = log && total < 30*PR_MSEC_PER_SEC; - if (log) { - // Note: We don't care about rounding here; thus total may be < 100 - Telemetry::Accumulate(small ? Telemetry::WEBRTC_LOAD_STATE_RELAXED_SHORT : - Telemetry::WEBRTC_LOAD_STATE_RELAXED, - (uint32_t) (mTimeInState[webrtc::CPULoadState::kLoadRelaxed]/total * 100)); - Telemetry::Accumulate(small ? Telemetry::WEBRTC_LOAD_STATE_NORMAL_SHORT : - Telemetry::WEBRTC_LOAD_STATE_NORMAL, - (uint32_t) (mTimeInState[webrtc::CPULoadState::kLoadNormal]/total * 100)); - Telemetry::Accumulate(small ? Telemetry::WEBRTC_LOAD_STATE_STRESSED_SHORT : - Telemetry::WEBRTC_LOAD_STATE_STRESSED, - (uint32_t) (mTimeInState[webrtc::CPULoadState::kLoadStressed]/total * 100)); - } for (auto &in_state : mTimeInState) { in_state = 0; } diff --git a/dom/media/webaudio/MediaBufferDecoder.cpp b/dom/media/webaudio/MediaBufferDecoder.cpp index e9f1d5a47..2ee11eacd 100644 --- a/dom/media/webaudio/MediaBufferDecoder.cpp +++ b/dom/media/webaudio/MediaBufferDecoder.cpp @@ -23,7 +23,6 @@ #include "VideoUtils.h" #include "WebAudioUtils.h" #include "mozilla/dom/Promise.h" -#include "mozilla/Telemetry.h" #include "nsPrintfCString.h" #include "GMPService.h" @@ -302,7 +301,6 @@ MediaDecodeTask::OnMetadataRead(MetadataHolder* aMetadata) MOZ_LOG(gMediaDecoderLog, LogLevel::Debug, ("Telemetry (WebAudio) MEDIA_CODEC_USED= '%s'", codec.get())); - Telemetry::Accumulate(Telemetry::ID::MEDIA_CODEC_USED, codec); }); AbstractThread::MainThread()->Dispatch(task.forget()); diff --git a/dom/media/webrtc/RTCCertificate.cpp b/dom/media/webrtc/RTCCertificate.cpp index 3f778bcbb..9f5e27c56 100644 --- a/dom/media/webrtc/RTCCertificate.cpp +++ b/dom/media/webrtc/RTCCertificate.cpp @@ -74,7 +74,7 @@ private: char buf[sizeof(randomName) * 2 + 4]; PL_strncpy(buf, "CN=", 3); for (size_t i = 0; i < sizeof(randomName); ++i) { - snprintf(&buf[i * 2 + 3], 2, "%.2x", randomName[i]); + snprintf(&buf[i * 2 + 3], 3, "%.2x", randomName[i]); } buf[sizeof(buf) - 1] = '\0'; diff --git a/dom/notification/Notification.cpp b/dom/notification/Notification.cpp index 1dd5724e4..71c4916b9 100644 --- a/dom/notification/Notification.cpp +++ b/dom/notification/Notification.cpp @@ -642,8 +642,6 @@ NotificationPermissionRequest::ResolvePromise() mCallback->Call(mPermission, error); rv = error.StealNSResult(); } - Telemetry::Accumulate( - Telemetry::WEB_NOTIFICATION_REQUEST_PERMISSION_CALLBACK, !!mCallback); mPromise->MaybeResolve(mPermission); return rv; } @@ -750,11 +748,6 @@ NotificationTelemetryService::RecordPermissions() if (!GetNotificationPermission(supportsPermission, &capability)) { continue; } - if (capability == nsIPermissionManager::DENY_ACTION) { - Telemetry::Accumulate(Telemetry::WEB_NOTIFICATION_PERMISSIONS, 0); - } else if (capability == nsIPermissionManager::ALLOW_ACTION) { - Telemetry::Accumulate(Telemetry::WEB_NOTIFICATION_PERMISSIONS, 1); - } } } @@ -800,9 +793,6 @@ NotificationTelemetryService::RecordDNDSupported() if (NS_FAILED(rv)) { return; } - - Telemetry::Accumulate( - Telemetry::ALERTS_SERVICE_DND_SUPPORTED_FLAG, true); } nsresult @@ -819,7 +809,6 @@ NotificationTelemetryService::RecordSender(nsIPrincipal* aPrincipal) } if (!mOrigins.Contains(origin)) { mOrigins.PutEntry(origin); - Telemetry::Accumulate(Telemetry::WEB_NOTIFICATION_SENDERS, 1); } return NS_OK; } @@ -829,21 +818,7 @@ NotificationTelemetryService::Observe(nsISupports* aSubject, const char* aTopic, const char16_t* aData) { - uint32_t capability; - if (strcmp("perm-changed", aTopic) || - !NS_strcmp(u"cleared", aData) || - !GetNotificationPermission(aSubject, &capability)) { - return NS_OK; - } - if (!NS_strcmp(u"deleted", aData)) { - if (capability == nsIPermissionManager::DENY_ACTION) { - Telemetry::Accumulate( - Telemetry::WEB_NOTIFICATION_PERMISSION_REMOVED, 0); - } else if (capability == nsIPermissionManager::ALLOW_ACTION) { - Telemetry::Accumulate( - Telemetry::WEB_NOTIFICATION_PERMISSION_REMOVED, 1); - } - } + /* STUB */ return NS_OK; } @@ -1407,7 +1382,6 @@ NotificationObserver::Observe(nsISupports* aSubject, const char* aTopic, AssertIsOnMainThread(); if (!strcmp("alertdisablecallback", aTopic)) { - Telemetry::Accumulate(Telemetry::WEB_NOTIFICATION_MENU, 1); if (XRE_IsParentProcess()) { return Notification::RemovePermission(mPrincipal); } @@ -1417,10 +1391,7 @@ NotificationObserver::Observe(nsISupports* aSubject, const char* aTopic, ContentChild::GetSingleton()->SendDisableNotifications( IPC::Principal(mPrincipal)); return NS_OK; - } else if (!strcmp("alertclickcallback", aTopic)) { - Telemetry::Accumulate(Telemetry::WEB_NOTIFICATION_CLICKED, 1); } else if (!strcmp("alertsettingscallback", aTopic)) { - Telemetry::Accumulate(Telemetry::WEB_NOTIFICATION_MENU, 2); if (XRE_IsParentProcess()) { return Notification::OpenSettings(mPrincipal); } @@ -1433,21 +1404,7 @@ NotificationObserver::Observe(nsISupports* aSubject, const char* aTopic, !strcmp("alertfinished", aTopic)) { RefPtr<NotificationTelemetryService> telemetry = NotificationTelemetryService::GetInstance(); - if (telemetry) { - // Record whether "do not disturb" is supported after the first - // notification, to account for falling back to XUL alerts. - telemetry->RecordDNDSupported(); - if (!mInPrivateBrowsing) { - // Ignore senders in private windows. - Unused << NS_WARN_IF(NS_FAILED(telemetry->RecordSender(mPrincipal))); - } - } Unused << NS_WARN_IF(NS_FAILED(AdjustPushQuota(aTopic))); - - if (!strcmp("alertshow", aTopic)) { - // Record notifications actually shown (e.g. don't count if DND is on). - Telemetry::Accumulate(Telemetry::WEB_NOTIFICATION_SHOWN, 1); - } } return mObserver->Observe(aSubject, aTopic, aData); diff --git a/dom/plugins/base/nsPluginHost.cpp b/dom/plugins/base/nsPluginHost.cpp index 916bdea0f..c3de136d0 100644 --- a/dom/plugins/base/nsPluginHost.cpp +++ b/dom/plugins/base/nsPluginHost.cpp @@ -2148,11 +2148,7 @@ nsresult nsPluginHost::ScanPluginsDirectory(nsIFile *pluginsDir, nsPluginInfo info; memset(&info, 0, sizeof(info)); nsresult res; - // Opening a block for the telemetry AutoTimer - { - Telemetry::AutoTimer<Telemetry::PLUGIN_LOAD_METADATA> telemetry; - res = pluginFile.GetPluginInfo(info, &library); - } + res = pluginFile.GetPluginInfo(info, &library); // if we don't have mime type don't proceed, this is not a plugin if (NS_FAILED(res) || !info.fMimeTypeArray) { RefPtr<nsInvalidPluginTag> invalidTag = new nsInvalidPluginTag(filePath.get(), @@ -2410,8 +2406,6 @@ nsPluginHost::FindPluginsInContent(bool aCreatePluginList, bool* aPluginsChanged // This is needed in ReloadPlugins to prevent possible recursive reloads nsresult nsPluginHost::FindPlugins(bool aCreatePluginList, bool * aPluginsChanged) { - Telemetry::AutoTimer<Telemetry::FIND_PLUGINS> telemetry; - NS_ENSURE_ARG_POINTER(aPluginsChanged); *aPluginsChanged = false; @@ -3412,7 +3406,6 @@ nsPluginHost::StopPluginInstance(nsNPAPIPluginInstance* aInstance) return NS_OK; } - Telemetry::AutoTimer<Telemetry::PLUGIN_SHUTDOWN_MS> timer; aInstance->Stop(); // if the instance does not want to be 'cached' just remove it diff --git a/dom/plugins/ipc/PluginAsyncSurrogate.cpp b/dom/plugins/ipc/PluginAsyncSurrogate.cpp index da07116cc..3fe4c7168 100644 --- a/dom/plugins/ipc/PluginAsyncSurrogate.cpp +++ b/dom/plugins/ipc/PluginAsyncSurrogate.cpp @@ -504,8 +504,6 @@ PluginAsyncSurrogate::WaitForInit() if (mAcceptCalls) { return true; } - Telemetry::AutoTimer<Telemetry::BLOCKED_ON_PLUGINASYNCSURROGATE_WAITFORINIT_MS> - timer(mParent->GetHistogramKey()); bool result = false; MOZ_ASSERT(mParent); if (mParent->IsChrome()) { diff --git a/dom/plugins/ipc/PluginHangUIParent.cpp b/dom/plugins/ipc/PluginHangUIParent.cpp index 5114f2e9a..908182a22 100644 --- a/dom/plugins/ipc/PluginHangUIParent.cpp +++ b/dom/plugins/ipc/PluginHangUIParent.cpp @@ -8,7 +8,6 @@ #include "PluginHangUIParent.h" -#include "mozilla/Telemetry.h" #include "mozilla/ipc/ProtocolUtils.h" #include "mozilla/plugins/PluginModuleParent.h" @@ -48,14 +47,6 @@ public: NS_IMETHOD Run() override { - mozilla::Telemetry::Accumulate( - mozilla::Telemetry::PLUGIN_HANG_UI_USER_RESPONSE, mResponseCode); - mozilla::Telemetry::Accumulate( - mozilla::Telemetry::PLUGIN_HANG_UI_DONT_ASK, mDontAskCode); - mozilla::Telemetry::Accumulate( - mozilla::Telemetry::PLUGIN_HANG_UI_RESPONSE_TIME, mResponseTimeMs); - mozilla::Telemetry::Accumulate( - mozilla::Telemetry::PLUGIN_HANG_TIME, mTimeoutMs + mResponseTimeMs); return NS_OK; } diff --git a/dom/plugins/ipc/PluginInstanceParent.cpp b/dom/plugins/ipc/PluginInstanceParent.cpp index 02f0641f7..bdd15ca99 100644 --- a/dom/plugins/ipc/PluginInstanceParent.cpp +++ b/dom/plugins/ipc/PluginInstanceParent.cpp @@ -9,7 +9,6 @@ #include "mozilla/BasicEvents.h" #include "mozilla/Preferences.h" -#include "mozilla/Telemetry.h" #include "PluginInstanceParent.h" #include "BrowserStreamParent.h" #include "PluginAsyncSurrogate.h" @@ -206,12 +205,8 @@ NPError PluginInstanceParent::Destroy() { NPError retval; - { // Scope for timer - Telemetry::AutoTimer<Telemetry::BLOCKED_ON_PLUGIN_INSTANCE_DESTROY_MS> - timer(Module()->GetHistogramKey()); - if (!CallNPP_Destroy(&retval)) { - retval = NPERR_GENERIC_ERROR; - } + if (!CallNPP_Destroy(&retval)) { + retval = NPERR_GENERIC_ERROR; } #if defined(OS_WIN) @@ -1786,9 +1781,6 @@ PluginInstanceParent::NPP_NewStream(NPMIMEType type, NPStream* stream, return NPERR_GENERIC_ERROR; } - Telemetry::AutoTimer<Telemetry::BLOCKED_ON_PLUGIN_STREAM_INIT_MS> - timer(Module()->GetHistogramKey()); - NPError err = NPERR_NO_ERROR; if (mParent->IsStartingAsync()) { MOZ_ASSERT(mSurrogate); @@ -2504,6 +2496,5 @@ PluginInstanceParent::RecordDrawingModel() } MOZ_ASSERT(mode >= 0); - Telemetry::Accumulate(Telemetry::PLUGIN_DRAWING_MODEL, mode); mLastRecordedDrawingModel = mode; } diff --git a/dom/plugins/ipc/PluginModuleParent.cpp b/dom/plugins/ipc/PluginModuleParent.cpp index 2489baf16..300c4f621 100755 --- a/dom/plugins/ipc/PluginModuleParent.cpp +++ b/dom/plugins/ipc/PluginModuleParent.cpp @@ -20,7 +20,6 @@ #include "mozilla/Preferences.h" #include "mozilla/ProcessHangMonitor.h" #include "mozilla/Services.h" -#include "mozilla/Telemetry.h" #include "mozilla/Unused.h" #include "nsAutoPtr.h" #include "nsCRT.h" @@ -1172,11 +1171,6 @@ PluginModuleParent::GetRunID(uint32_t* aRunID) void PluginModuleChromeParent::ActorDestroy(ActorDestroyReason why) { - if (why == AbnormalShutdown) { - Telemetry::Accumulate(Telemetry::SUBPROCESS_ABNORMAL_ABORT, - NS_LITERAL_CSTRING("plugin"), 1); - } - // We can't broadcast settings changes anymore. UnregisterSettingsCallbacks(); @@ -2203,12 +2197,8 @@ public: void PluginModuleParent::AccumulateModuleInitBlockedTime() { - if (mPluginName.IsEmpty()) { - GetPluginDetails(); - } - Telemetry::Accumulate(Telemetry::BLOCKED_ON_PLUGIN_MODULE_INIT_MS, - GetHistogramKey(), - static_cast<uint32_t>(mTimeBlocked.ToMilliseconds())); + // XXX: mTimeBlocked can probably go if not used for anything besides + // telemetry. mTimeBlocked = TimeDuration(); } @@ -2294,27 +2284,23 @@ PluginModuleParent::NPP_NewInternal(NPMIMEType pluginType, NPP instance, return NS_ERROR_FAILURE; } - { // Scope for timer - Telemetry::AutoTimer<Telemetry::BLOCKED_ON_PLUGIN_INSTANCE_INIT_MS> - timer(GetHistogramKey()); - if (mIsStartingAsync) { - MOZ_ASSERT(surrogate); - surrogate->AsyncCallDeparting(); - if (!SendAsyncNPP_New(parentInstance)) { + if (mIsStartingAsync) { + MOZ_ASSERT(surrogate); + surrogate->AsyncCallDeparting(); + if (!SendAsyncNPP_New(parentInstance)) { + *error = NPERR_GENERIC_ERROR; + return NS_ERROR_FAILURE; + } + *error = NPERR_NO_ERROR; + } else { + if (!CallSyncNPP_New(parentInstance, error)) { + // if IPC is down, we'll get an immediate "failed" return, but + // without *error being set. So make sure that the error + // condition is signaled to nsNPAPIPluginInstance + if (NPERR_NO_ERROR == *error) { *error = NPERR_GENERIC_ERROR; - return NS_ERROR_FAILURE; - } - *error = NPERR_NO_ERROR; - } else { - if (!CallSyncNPP_New(parentInstance, error)) { - // if IPC is down, we'll get an immediate "failed" return, but - // without *error being set. So make sure that the error - // condition is signaled to nsNPAPIPluginInstance - if (NPERR_NO_ERROR == *error) { - *error = NPERR_GENERIC_ERROR; - } - return NS_ERROR_FAILURE; } + return NS_ERROR_FAILURE; } } diff --git a/dom/presentation/provider/PresentationControlService.js b/dom/presentation/provider/PresentationControlService.js index fe61d26d6..e9f92247f 100644 --- a/dom/presentation/provider/PresentationControlService.js +++ b/dom/presentation/provider/PresentationControlService.js @@ -100,7 +100,6 @@ PresentationControlService.prototype = { if (aCert) { this._serverSocket.serverCert = aCert; - this._serverSocket.setSessionCache(false); this._serverSocket.setSessionTickets(false); let requestCert = Ci.nsITLSServerSocket.REQUEST_NEVER; this._serverSocket.setRequestClientCertificate(requestCert); diff --git a/dom/security/nsMixedContentBlocker.cpp b/dom/security/nsMixedContentBlocker.cpp index c03628da0..5f41f414d 100644 --- a/dom/security/nsMixedContentBlocker.cpp +++ b/dom/security/nsMixedContentBlocker.cpp @@ -983,44 +983,5 @@ enum MixedContentHSTSState { void nsMixedContentBlocker::AccumulateMixedContentHSTS(nsIURI* aURI, bool aActive) { - // This method must only be called in the parent, because - // nsSiteSecurityService is only available in the parent - if (!XRE_IsParentProcess()) { - MOZ_ASSERT(false); - return; - } - - bool hsts; - nsresult rv; - nsCOMPtr<nsISiteSecurityService> sss = do_GetService(NS_SSSERVICE_CONTRACTID, &rv); - if (NS_FAILED(rv)) { - return; - } - rv = sss->IsSecureURI(nsISiteSecurityService::HEADER_HSTS, aURI, 0, nullptr, &hsts); - if (NS_FAILED(rv)) { - return; - } - - // states: would upgrade, hsts info cached - // active, passive - // - if (!aActive) { - if (!hsts) { - Telemetry::Accumulate(Telemetry::MIXED_CONTENT_HSTS, - MCB_HSTS_PASSIVE_NO_HSTS); - } - else { - Telemetry::Accumulate(Telemetry::MIXED_CONTENT_HSTS, - MCB_HSTS_PASSIVE_WITH_HSTS); - } - } else { - if (!hsts) { - Telemetry::Accumulate(Telemetry::MIXED_CONTENT_HSTS, - MCB_HSTS_ACTIVE_NO_HSTS); - } - else { - Telemetry::Accumulate(Telemetry::MIXED_CONTENT_HSTS, - MCB_HSTS_ACTIVE_WITH_HSTS); - } - } +/* STUB */ }
\ No newline at end of file diff --git a/dom/storage/DOMStorageCache.cpp b/dom/storage/DOMStorageCache.cpp index 811f79fd3..a6aa17424 100644 --- a/dom/storage/DOMStorageCache.cpp +++ b/dom/storage/DOMStorageCache.cpp @@ -309,7 +309,7 @@ public: explicit TelemetryAutoTimer(Telemetry::ID aId) : id(aId), start(TimeStamp::Now()) {} ~TelemetryAutoTimer() - { Telemetry::AccumulateDelta_impl<Telemetry::Millisecond>::compute(id, start); } + { /* STUB */ } private: Telemetry::ID id; const TimeStamp start; @@ -329,9 +329,6 @@ DOMStorageCache::WaitForPreload(Telemetry::ID aTelemetryID) // Telemetry of rates of pending preloads if (!mPreloadTelemetryRecorded) { mPreloadTelemetryRecorded = true; - Telemetry::Accumulate( - Telemetry::LOCALDOMSTORAGE_PRELOAD_PENDING_ON_FIRST_ACCESS, - !loaded); } if (loaded) { diff --git a/dom/storage/DOMStorageDBThread.cpp b/dom/storage/DOMStorageDBThread.cpp index 183be5c5c..f86dbad9c 100644 --- a/dom/storage/DOMStorageDBThread.cpp +++ b/dom/storage/DOMStorageDBThread.cpp @@ -163,8 +163,6 @@ DOMStorageDBThread::Shutdown() return NS_ERROR_NOT_INITIALIZED; } - Telemetry::AutoTimer<Telemetry::LOCALDOMSTORAGE_SHUTDOWN_DATABASE_MS> timer; - { MonitorAutoLock monitor(mThreadObserver->GetMonitor()); diff --git a/dom/svg/SVGUseElement.cpp b/dom/svg/SVGUseElement.cpp index 4911e2cac..9212ab1aa 100644 --- a/dom/svg/SVGUseElement.cpp +++ b/dom/svg/SVGUseElement.cpp @@ -15,6 +15,7 @@ #include "mozilla/dom/Element.h" #include "nsContentUtils.h" #include "nsIURI.h" +#include "nsSVGEffects.h" NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(Use) @@ -418,11 +419,15 @@ SVGUseElement::LookupHref() return; } + nsCOMPtr<nsIURI> originURI = + mOriginal ? mOriginal->GetBaseURI() : GetBaseURI(); + nsCOMPtr<nsIURI> baseURI = nsContentUtils::IsLocalRefURL(href) + ? nsSVGEffects::GetBaseURLForLocalRef(this, originURI) + : originURI; + nsCOMPtr<nsIURI> targetURI; - nsCOMPtr<nsIURI> baseURI = mOriginal ? mOriginal->GetBaseURI() : GetBaseURI(); nsContentUtils::NewURIWithDocumentCharset(getter_AddRefs(targetURI), href, GetComposedDoc(), baseURI); - mSource.Reset(this, targetURI); } diff --git a/dom/svg/test/reftest_viewport_noninteger.html b/dom/svg/test/reftest_viewport_noninteger.html new file mode 100644 index 000000000..3f4852b53 --- /dev/null +++ b/dom/svg/test/reftest_viewport_noninteger.html @@ -0,0 +1,175 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <title>SVG size test</title> + <style> + body { + margin: 30px; + font-family: sans-serif; + } + + #tests { + display: grid; + grid-template-columns: repeat(4, 1fr); + grid-gap: 30px; + } + + #tests div:hover { + opacity: 1 !important; + } + + #tests p { + text-decoration: underline dotted black; + } + + svg { + background: lightgrey; + } + </style> + </head> + <body> + <h1>SVG size test</h1> + + <p>The grey boxes below are <code><svg></code> elements.</p> + <p>All SVGs in each row should have the exact same size.</p> + <p>Each row has its own viewBox width and height: <code>viewBox="0 0 width height"</code>.</p> + <p>Each column has its own width/height styling. For example, <code>style="width: 200px; height: auto;"</code>.</p> + <p>The first column has both an explicit widht and an explicit height, so there's not much that can go wrong there. It acts as a reference.</p> + <p>The first row has integer viewBox width and height. Firefox then sizes all SVGs correctly.</p> + <p>The remaining rows have at least one non-integer viewBox width and height. Firefox then sizes the SVGs a bit wrong.</p> + <p>Chrome, Safari and Edge seem to pass all tests.</p> + + <p id="summary"></p> + + <div id="tests"></div> + + <script> + const testsElement = document.getElementById("tests"); + const summaryElement = document.getElementById("summary"); + + // Turn for instance `2.3` into `230` (px). Round to avoid floating point + // issues. + const scale = (number) => Math.round(100 * number); + + const widths = [2, 2.3, 2.5, 2.8]; + const heights = [3, 3.3, 3.5, 3.8]; + + let numPassed = 0; + let numFailed = 0; + + for (const width of widths) { + for (const height of heights) { + const variations = [ + {width, height}, + {width: "auto", height}, + {width, height: "auto"}, + {width: "auto", height: "auto"}, + ]; + + for (const variation of variations) { + const cellElement = document.createElement("div"); + + const titleElement = document.createElement("h2"); + titleElement.appendChild(makeTitle(width, height, variation)); + + const sizeElement = document.createElement("p"); + + const svgWrapperElement = document.createElement("div"); + svgWrapperElement.style.width = + variation.width === "auto" && variation.height === "auto" + ? `${scale(width)}px` + : "auto"; + + const svgElement = document.createElementNS("http://www.w3.org/2000/svg", "svg"); + svgElement.setAttribute("viewBox", `0 0 ${width} ${height}`); + svgElement.style.width = + typeof variation.width === "number" + ? `${scale(variation.width)}px` + : variation.width; + svgElement.style.height = + typeof variation.height === "number" + ? `${scale(variation.height)}px` + : variation.height; + + svgWrapperElement.appendChild(svgElement); + + cellElement.appendChild(titleElement); + cellElement.appendChild(sizeElement); + cellElement.appendChild(svgWrapperElement); + + testsElement.appendChild(cellElement); + + const rect = svgElement.getBoundingClientRect(); + const actual = { + width: Math.round(rect.width), + height: Math.round(rect.height), + }; + const expected = { + width: scale(width), + height: scale(height), + }; + const passed = + actual.width === expected.width && + actual.height === expected.height; + + const icon = passed ? "✔" : "✘"; + const iconText = passed ? "PASS" : "FAIL"; + const expectedText = passed ? "" : `\nExpected size: ${expected.width}x${expected.height}`; + sizeElement.textContent = `${icon} ${actual.width}x${actual.height}`; + sizeElement.title = `${iconText}. Actual size, as measured by element.getBoundingClientRect().${expectedText}`; + sizeElement.style.color = passed ? "lime" : "red"; + sizeElement.style.fontWeight = passed ? "normal" : "bold"; + + cellElement.style.opacity = passed ? 0.5 : 1; + + if (passed) { + numPassed++; + } else { + numFailed++; + } + } + } + } + + const numTotal = numPassed + numFailed; + const passed = numFailed === 0; + const icon = passed ? "✔" : "✘"; + summaryElement.textContent = `${icon} ${numPassed}/${numTotal} tests passed.`; + summaryElement.style.color = passed ? "lime" : "red"; + summaryElement.style.fontWeight = "bold"; + + function makeTitle(width, height, variation) { + const fragment = document.createDocumentFragment(); + + const first = document.createElement("abbr"); + first.textContent = `${width}/${height}`; + first.title = `SVG viewBox width/height: viewBox="0 0 ${width} ${height}"`; + + const separator = document.createTextNode(" | "); + + const second = document.createElement("abbr"); + + const widthString = typeof variation.width === "number" ? "px" : variation.width; + const heightString = typeof variation.height === "number" ? "px" : variation.height; + second.textContent = `${widthString}/${heightString}`; + + const widthExplanation = + typeof variation.width === "number" + ? "explicit width (px)" + : `${variation.width} width` + const heightExplanation = + typeof variation.height === "number" + ? "explicit height (px)" + : `${variation.height} height` + second.title = `${widthExplanation}, ${heightExplanation}`; + + fragment.appendChild(first); + fragment.appendChild(separator); + fragment.appendChild(second); + + return fragment; + } + </script> + </body> +</html> diff --git a/dom/system/mac/CoreLocationLocationProvider.mm b/dom/system/mac/CoreLocationLocationProvider.mm index b39582a9e..7a3feba97 100644 --- a/dom/system/mac/CoreLocationLocationProvider.mm +++ b/dom/system/mac/CoreLocationLocationProvider.mm @@ -13,7 +13,6 @@ #include "CoreLocationLocationProvider.h" #include "nsCocoaFeatures.h" #include "prtime.h" -#include "mozilla/Telemetry.h" #include "MLSFallback.h" #include <CoreLocation/CLError.h> @@ -103,7 +102,6 @@ static const CLLocationAccuracy kDEFAULT_ACCURACY = kCLLocationAccuracyNearestTe PR_Now() / PR_USEC_PER_MSEC); mProvider->Update(geoPosition); - Telemetry::Accumulate(Telemetry::GEOLOCATION_OSX_SOURCE_IS_MLS, false); } @end @@ -127,7 +125,6 @@ CoreLocationLocationProvider::MLSUpdate::Update(nsIDOMGeoPosition *position) return NS_ERROR_FAILURE; } mParentLocationProvider.Update(position); - Telemetry::Accumulate(Telemetry::GEOLOCATION_OSX_SOURCE_IS_MLS, true); return NS_OK; } NS_IMETHODIMP diff --git a/dom/system/windows/WindowsLocationProvider.cpp b/dom/system/windows/WindowsLocationProvider.cpp index fa7f8d8be..9da7bcc30 100644 --- a/dom/system/windows/WindowsLocationProvider.cpp +++ b/dom/system/windows/WindowsLocationProvider.cpp @@ -10,7 +10,6 @@ #include "nsComponentManagerUtils.h" #include "prtime.h" #include "MLSFallback.h" -#include "mozilla/Telemetry.h" namespace mozilla { namespace dom { @@ -34,7 +33,6 @@ WindowsLocationProvider::MLSUpdate::Update(nsIDOMGeoPosition *aPosition) if (!coords) { return NS_ERROR_FAILURE; } - Telemetry::Accumulate(Telemetry::GEOLOCATION_WIN8_SOURCE_IS_MLS, true); return mCallback->Update(aPosition); } NS_IMETHODIMP @@ -176,8 +174,6 @@ LocationEvent::OnLocationChanged(REFIID aReportType, PR_Now() / PR_USEC_PER_MSEC); mCallback->Update(position); - Telemetry::Accumulate(Telemetry::GEOLOCATION_WIN8_SOURCE_IS_MLS, false); - return S_OK; } diff --git a/dom/workers/RuntimeService.cpp b/dom/workers/RuntimeService.cpp index e1910536f..1f49e16dd 100644 --- a/dom/workers/RuntimeService.cpp +++ b/dom/workers/RuntimeService.cpp @@ -30,7 +30,6 @@ #include "mozilla/AsyncEventDispatcher.h" #include "mozilla/Atomics.h" #include "mozilla/CycleCollectedJSContext.h" -#include "mozilla/Telemetry.h" #include "mozilla/TimeStamp.h" #include "mozilla/dom/asmjscache/AsmJSCache.h" #include "mozilla/dom/AtomList.h" @@ -1534,7 +1533,6 @@ RuntimeService::RegisterWorker(WorkerPrivate* aWorkerPrivate) const bool isDedicatedWorker = aWorkerPrivate->IsDedicatedWorker(); if (isServiceWorker) { AssertIsOnMainThread(); - Telemetry::Accumulate(Telemetry::SERVICE_WORKER_SPAWN_ATTEMPTS, 1); } nsCString sharedWorkerScriptSpec; @@ -1586,14 +1584,6 @@ RuntimeService::RegisterWorker(WorkerPrivate* aWorkerPrivate) // Worker spawn gets queued due to hitting max workers per domain // limit so let's log a warning. WorkerPrivate::ReportErrorToConsole("HittingMaxWorkersPerDomain2"); - - if (isServiceWorker) { - Telemetry::Accumulate(Telemetry::SERVICE_WORKER_SPAWN_GETS_QUEUED, 1); - } else if (isSharedWorker) { - Telemetry::Accumulate(Telemetry::SHARED_WORKER_SPAWN_GETS_QUEUED, 1); - } else if (isDedicatedWorker) { - Telemetry::Accumulate(Telemetry::DEDICATED_WORKER_SPAWN_GETS_QUEUED, 1); - } } else if (parent) { domainInfo->mChildWorkerCount++; @@ -1669,7 +1659,6 @@ RuntimeService::RegisterWorker(WorkerPrivate* aWorkerPrivate) if (isServiceWorker) { AssertIsOnMainThread(); - Telemetry::Accumulate(Telemetry::SERVICE_WORKER_WAS_SPAWNED, 1); } return true; } @@ -1766,8 +1755,6 @@ RuntimeService::UnregisterWorker(WorkerPrivate* aWorkerPrivate) if (aWorkerPrivate->IsServiceWorker()) { AssertIsOnMainThread(); - Telemetry::AccumulateTimeDelta(Telemetry::SERVICE_WORKER_LIFE_TIME, - aWorkerPrivate->CreationTimeStamp()); } if (aWorkerPrivate->IsSharedWorker() || diff --git a/dom/workers/ServiceWorkerManager.cpp b/dom/workers/ServiceWorkerManager.cpp index a66df0731..a8f191f2e 100644 --- a/dom/workers/ServiceWorkerManager.cpp +++ b/dom/workers/ServiceWorkerManager.cpp @@ -33,7 +33,6 @@ #include "mozilla/ClearOnShutdown.h" #include "mozilla/ErrorNames.h" #include "mozilla/LoadContext.h" -#include "mozilla/Telemetry.h" #include "mozilla/dom/BindingUtils.h" #include "mozilla/dom/ContentParent.h" #include "mozilla/dom/DOMError.h" @@ -676,7 +675,6 @@ ServiceWorkerManager::Register(mozIDOMWindow* aWindow, queue->ScheduleJob(job); AssertIsOnMainThread(); - Telemetry::Accumulate(Telemetry::SERVICE_WORKER_REGISTRATIONS, 1); promise.forget(aPromise); return NS_OK; @@ -2180,7 +2178,6 @@ ServiceWorkerManager::StartControllingADocument(ServiceWorkerRegistrationInfo* a if (!aDocumentId.IsEmpty()) { aDoc->SetId(aDocumentId); } - Telemetry::Accumulate(Telemetry::SERVICE_WORKER_CONTROLLED_DOCUMENTS, 1); } void diff --git a/dom/workers/ServiceWorkerRegistrar.cpp b/dom/workers/ServiceWorkerRegistrar.cpp index a4757ea54..7df129c2b 100644 --- a/dom/workers/ServiceWorkerRegistrar.cpp +++ b/dom/workers/ServiceWorkerRegistrar.cpp @@ -135,9 +135,6 @@ ServiceWorkerRegistrar::GetRegistrations( if (firstTime) { firstTime = false; - Telemetry::AccumulateTimeDelta( - Telemetry::SERVICE_WORKER_REGISTRATION_LOADING, - startTime); } } diff --git a/dom/workers/ServiceWorkerUpdateJob.cpp b/dom/workers/ServiceWorkerUpdateJob.cpp index 614fe4de5..69877dfe4 100644 --- a/dom/workers/ServiceWorkerUpdateJob.cpp +++ b/dom/workers/ServiceWorkerUpdateJob.cpp @@ -408,8 +408,6 @@ ServiceWorkerUpdateJob::ComparisonResult(nsresult aStatus, return; } - Telemetry::Accumulate(Telemetry::SERVICE_WORKER_UPDATED, 1); - // Begin step 7 of the Update algorithm to evaluate the new script. RefPtr<ServiceWorkerInfo> sw = diff --git a/dom/workers/SharedWorker.cpp b/dom/workers/SharedWorker.cpp index b0eed2def..99bb50339 100644 --- a/dom/workers/SharedWorker.cpp +++ b/dom/workers/SharedWorker.cpp @@ -12,7 +12,6 @@ #include "mozilla/Preferences.h" #include "mozilla/dom/MessagePort.h" #include "mozilla/dom/SharedWorkerBinding.h" -#include "mozilla/Telemetry.h" #include "nsContentUtils.h" #include "nsIClassInfoImpl.h" #include "nsIDOMEvent.h" @@ -73,8 +72,6 @@ SharedWorker::Constructor(const GlobalObject& aGlobal, JSContext* aCx, return nullptr; } - Telemetry::Accumulate(Telemetry::SHARED_WORKER_COUNT, 1); - return sharedWorker.forget(); } diff --git a/dom/workers/WorkerRunnable.cpp b/dom/workers/WorkerRunnable.cpp index 6bbe40f66..9e6d4cfb8 100644 --- a/dom/workers/WorkerRunnable.cpp +++ b/dom/workers/WorkerRunnable.cpp @@ -15,7 +15,6 @@ #include "mozilla/DebugOnly.h" #include "mozilla/ErrorResult.h" #include "mozilla/dom/ScriptSettings.h" -#include "mozilla/Telemetry.h" #include "js/RootingAPI.h" #include "js/Value.h" @@ -572,8 +571,6 @@ WorkerMainThreadRunnable::Dispatch(Status aFailStatus, ErrorResult& aRv) { mWorkerPrivate->AssertIsOnWorkerThread(); - TimeStamp startTime = TimeStamp::NowLoRes(); - AutoSyncLoopHolder syncLoop(mWorkerPrivate, aFailStatus); mSyncLoopTarget = syncLoop.GetEventTarget(); @@ -590,11 +587,6 @@ WorkerMainThreadRunnable::Dispatch(Status aFailStatus, ErrorResult& aRv) if (!syncLoop.Run()) { aRv.ThrowUncatchableException(); } - - Telemetry::Accumulate(Telemetry::SYNC_WORKER_OPERATION, mTelemetryKey, - static_cast<uint32_t>((TimeStamp::NowLoRes() - startTime) - .ToMilliseconds())); - Unused << startTime; // Shut the compiler up. } NS_IMETHODIMP diff --git a/dom/xhr/XMLHttpRequestMainThread.cpp b/dom/xhr/XMLHttpRequestMainThread.cpp index 4fd34a993..613008ad5 100644 --- a/dom/xhr/XMLHttpRequestMainThread.cpp +++ b/dom/xhr/XMLHttpRequestMainThread.cpp @@ -757,15 +757,6 @@ XMLHttpRequestMainThread::SetResponseType(XMLHttpRequestResponseType aResponseTy return; } - // We want to get rid of this moz-only types. Bug 1335365. - if (aResponseType == XMLHttpRequestResponseType::Moz_blob) { - Telemetry::Accumulate(Telemetry::MOZ_BLOB_IN_XHR, 1); - } else if (aResponseType == XMLHttpRequestResponseType::Moz_chunked_text) { - Telemetry::Accumulate(Telemetry::MOZ_CHUNKED_TEXT_IN_XHR, 1); - } else if (aResponseType == XMLHttpRequestResponseType::Moz_chunked_arraybuffer) { - Telemetry::Accumulate(Telemetry::MOZ_CHUNKED_ARRAYBUFFER_IN_XHR, 1); - } - // Set the responseType attribute's value to the given value. mResponseType = aResponseType; } @@ -1521,8 +1512,6 @@ XMLHttpRequestMainThread::Open(const nsACString& aMethod, GetOwner()->GetExtantDoc()->WarnOnceAbout(nsIDocument::eSyncXMLHttpRequest); } - Telemetry::Accumulate(Telemetry::XMLHTTPREQUEST_ASYNC_OR_SYNC, aAsync ? 0 : 1); - // Step 1 nsCOMPtr<nsIDocument> responsibleDocument = GetDocumentIfCurrent(); if (!responsibleDocument) { diff --git a/dom/xhr/XMLHttpRequestWorker.cpp b/dom/xhr/XMLHttpRequestWorker.cpp index c9e892f26..2af61bd7d 100644 --- a/dom/xhr/XMLHttpRequestWorker.cpp +++ b/dom/xhr/XMLHttpRequestWorker.cpp @@ -1588,8 +1588,6 @@ XMLHttpRequestWorker::Construct(const GlobalObject& aGlobal, WorkerPrivate* workerPrivate = GetWorkerPrivateFromContext(cx); MOZ_ASSERT(workerPrivate); - Telemetry::Accumulate(Telemetry::XHR_IN_WORKER, 1); - RefPtr<XMLHttpRequestWorker> xhr = new XMLHttpRequestWorker(workerPrivate); if (workerPrivate->XHRParamsAllowed()) { diff --git a/dom/xul/nsXULPrototypeCache.cpp b/dom/xul/nsXULPrototypeCache.cpp index 84a201d59..2c3454860 100644 --- a/dom/xul/nsXULPrototypeCache.cpp +++ b/dom/xul/nsXULPrototypeCache.cpp @@ -45,12 +45,6 @@ UpdategDisableXULCache() // Get the value of "nglayout.debug.disable_xul_cache" preference gDisableXULCache = Preferences::GetBool(kDisableXULCachePref, gDisableXULCache); - - // Sets the flag if the XUL cache is disabled - if (gDisableXULCache) { - Telemetry::Accumulate(Telemetry::XUL_CACHE_DISABLED, true); - } - } static void diff --git a/embedding/components/find/nsFind.cpp b/embedding/components/find/nsFind.cpp index cbc42298b..5fc1f9db6 100644 --- a/embedding/components/find/nsFind.cpp +++ b/embedding/components/find/nsFind.cpp @@ -33,7 +33,7 @@ using namespace mozilla; // Yikes! Casting a char to unichar can fill with ones! -#define CHAR_TO_UNICHAR(c) ((char16_t)(const unsigned char)c) +#define CHAR_TO_UNICHAR(c) ((char16_t)(unsigned char)c) static NS_DEFINE_CID(kCContentIteratorCID, NS_CONTENTITERATOR_CID); static NS_DEFINE_CID(kCPreContentIteratorCID, NS_PRECONTENTITERATOR_CID); diff --git a/extensions/auth/nsAuthGSSAPI.cpp b/extensions/auth/nsAuthGSSAPI.cpp index f63b30eff..0e273a300 100644 --- a/extensions/auth/nsAuthGSSAPI.cpp +++ b/extensions/auth/nsAuthGSSAPI.cpp @@ -22,7 +22,6 @@ #include "nsIPrefBranch.h" #include "nsIServiceManager.h" #include "nsNativeCharsetUtils.h" -#include "mozilla/Telemetry.h" #include "nsAuthGSSAPI.h" @@ -377,16 +376,6 @@ nsAuthGSSAPI::Init(const char *serviceName, mServiceName = serviceName; mServiceFlags = serviceFlags; - static bool sTelemetrySent = false; - if (!sTelemetrySent) { - mozilla::Telemetry::Accumulate( - mozilla::Telemetry::NTLM_MODULE_USED_2, - serviceFlags & nsIAuthModule::REQ_PROXY_AUTH - ? NTLM_MODULE_KERBEROS_PROXY - : NTLM_MODULE_KERBEROS_DIRECT); - sTelemetrySent = true; - } - return NS_OK; } diff --git a/extensions/auth/nsAuthSSPI.cpp b/extensions/auth/nsAuthSSPI.cpp index eb577d3bf..677a4773a 100644 --- a/extensions/auth/nsAuthSSPI.cpp +++ b/extensions/auth/nsAuthSSPI.cpp @@ -20,7 +20,6 @@ #include "nsNetCID.h" #include "nsCOMPtr.h" #include "nsICryptoHash.h" -#include "mozilla/Telemetry.h" #include <windows.h> @@ -275,16 +274,6 @@ nsAuthSSPI::Init(const char *serviceName, if (rc != SEC_E_OK) return NS_ERROR_UNEXPECTED; - static bool sTelemetrySent = false; - if (!sTelemetrySent) { - mozilla::Telemetry::Accumulate( - mozilla::Telemetry::NTLM_MODULE_USED_2, - serviceFlags & nsIAuthModule::REQ_PROXY_AUTH - ? NTLM_MODULE_WIN_API_PROXY - : NTLM_MODULE_WIN_API_DIRECT); - sTelemetrySent = true; - } - LOG(("AcquireCredentialsHandle() succeeded.\n")); return NS_OK; } diff --git a/extensions/auth/nsAuthSambaNTLM.cpp b/extensions/auth/nsAuthSambaNTLM.cpp index 69777dcca..6b9204c34 100644 --- a/extensions/auth/nsAuthSambaNTLM.cpp +++ b/extensions/auth/nsAuthSambaNTLM.cpp @@ -9,7 +9,6 @@ #include "prenv.h" #include "plbase64.h" #include "prerror.h" -#include "mozilla/Telemetry.h" #include <stdlib.h> @@ -212,17 +211,6 @@ nsAuthSambaNTLM::Init(const char *serviceName, const char16_t *password) { NS_ASSERTION(!username && !domain && !password, "unexpected credentials"); - - static bool sTelemetrySent = false; - if (!sTelemetrySent) { - mozilla::Telemetry::Accumulate( - mozilla::Telemetry::NTLM_MODULE_USED_2, - serviceFlags & nsIAuthModule::REQ_PROXY_AUTH - ? NTLM_MODULE_SAMBA_AUTH_PROXY - : NTLM_MODULE_SAMBA_AUTH_DIRECT); - sTelemetrySent = true; - } - return NS_OK; } diff --git a/extensions/cookie/nsPermissionManager.cpp b/extensions/cookie/nsPermissionManager.cpp index c44830812..13ae7fd35 100644 --- a/extensions/cookie/nsPermissionManager.cpp +++ b/extensions/cookie/nsPermissionManager.cpp @@ -107,7 +107,11 @@ nsresult GetOriginFromPrincipal(nsIPrincipal* aPrincipal, nsACString& aOrigin) { nsresult rv = aPrincipal->GetOriginNoSuffix(aOrigin); - NS_ENSURE_SUCCESS(rv, rv); + // The principal may belong to the about:blank content viewer, so this can be + // expected to fail. + if (NS_FAILED(rv)) { + return rv; + } nsAutoCString suffix; rv = aPrincipal->GetOriginSuffix(suffix); @@ -866,9 +870,6 @@ nsPermissionManager::InitDB(bool aRemoveFile) if (rv == NS_ERROR_FILE_CORRUPTED) { LogToConsole(NS_LITERAL_STRING("permissions.sqlite is corrupted! Try again!")); - // Add telemetry probe - mozilla::Telemetry::Accumulate(mozilla::Telemetry::PERMISSIONS_SQL_CORRUPTED, 1); - // delete corrupted permissions.sqlite and try again rv = permissionsFile->Remove(false); NS_ENSURE_SUCCESS(rv, rv); @@ -891,9 +892,6 @@ nsPermissionManager::InitDB(bool aRemoveFile) NS_ENSURE_SUCCESS(rv, rv); LogToConsole(NS_LITERAL_STRING("Defective permissions.sqlite has been removed.")); - // Add telemetry probe - mozilla::Telemetry::Accumulate(mozilla::Telemetry::DEFECTIVE_PERMISSIONS_SQL_REMOVED, 1); - rv = OpenDatabase(permissionsFile); NS_ENSURE_SUCCESS(rv, rv); LogToConsole(NS_LITERAL_STRING("OpenDatabase to permissions.sqlite is successful!")); @@ -1185,25 +1183,7 @@ nsPermissionManager::InitDB(bool aRemoveFile) if (NS_SUCCEEDED(rv) && NS_SUCCEEDED(countStmt->ExecuteStep(&hasResult)) && hasResult) { - int32_t permsCount = countStmt->AsInt32(0); - - // The id variable contains the number of rows inserted into the - // moz_hosts_new table (as one ID was used per entry) - uint32_t telemetryValue; - if (permsCount > id) { - telemetryValue = 3; // NEW > OLD - } else if (permsCount == id) { - telemetryValue = 2; // NEW == OLD - } else if (permsCount == 0) { - telemetryValue = 0; // NEW = 0 - } else { - telemetryValue = 1; // NEW < OLD - } - - // Report the telemetry value to telemetry - mozilla::Telemetry::Accumulate( - mozilla::Telemetry::PERMISSIONS_REMIGRATION_COMPARISON, - telemetryValue); + // Telemetry STUB (count rows and report) } else { NS_WARNING("Could not count the rows in moz_perms"); } @@ -1221,9 +1201,6 @@ nsPermissionManager::InitDB(bool aRemoveFile) rv = mDBConn->CommitTransaction(); NS_ENSURE_SUCCESS(rv, rv); - - mozilla::Telemetry::Accumulate(mozilla::Telemetry::PERMISSIONS_MIGRATION_7_ERROR, - NS_WARN_IF(migrationError)); } else { // We don't have a moz_hosts table, so we create one for downgrading purposes. // This table is empty. diff --git a/gfx/gl/GLContextProviderGLX.cpp b/gfx/gl/GLContextProviderGLX.cpp index 5560357e1..539520a8c 100644 --- a/gfx/gl/GLContextProviderGLX.cpp +++ b/gfx/gl/GLContextProviderGLX.cpp @@ -80,7 +80,6 @@ GLXLibrary::EnsureInitialized() if (!mOGLLibrary) { const char* libGLfilename = nullptr; - bool forceFeatureReport = false; // see e.g. bug 608526: it is intrinsically interesting to know whether we have dynamically linked to libGL.so.1 // because at least the NVIDIA implementation requires an executable stack, which causes mprotect calls, diff --git a/gfx/gl/GLLibraryEGL.cpp b/gfx/gl/GLLibraryEGL.cpp index 3d8da3085..75f40f13f 100644 --- a/gfx/gl/GLLibraryEGL.cpp +++ b/gfx/gl/GLLibraryEGL.cpp @@ -9,7 +9,6 @@ #include "gfxUtils.h" #include "mozilla/Preferences.h" #include "mozilla/Assertions.h" -#include "mozilla/Telemetry.h" #include "mozilla/Tokenizer.h" #include "mozilla/ScopeExit.h" #include "mozilla/Unused.h" @@ -472,20 +471,6 @@ GLLibraryEGL::EnsureInitialized(bool forceAccel, nsACString* const out_failureId chosenDisplay = GetAndInitDisplayForAccelANGLE(*this, out_failureId); } - // Report the acceleration status to telemetry - if (!chosenDisplay) { - if (accelAngleFailureId.IsEmpty()) { - Telemetry::Accumulate(Telemetry::CANVAS_WEBGL_ACCL_FAILURE_ID, - NS_LITERAL_CSTRING("FEATURE_FAILURE_ACCL_ANGLE_UNKNOWN")); - } else { - Telemetry::Accumulate(Telemetry::CANVAS_WEBGL_ACCL_FAILURE_ID, - accelAngleFailureId); - } - } else { - Telemetry::Accumulate(Telemetry::CANVAS_WEBGL_ACCL_FAILURE_ID, - NS_LITERAL_CSTRING("SUCCESS")); - } - // Fallback to a WARP display if ANGLE fails, or if WARP is forced if (!chosenDisplay && shouldTryWARP) { chosenDisplay = GetAndInitWARPDisplay(*this, EGL_DEFAULT_DISPLAY); diff --git a/gfx/ipc/GPUChild.cpp b/gfx/ipc/GPUChild.cpp index a075716e3..bfe2d56f7 100644 --- a/gfx/ipc/GPUChild.cpp +++ b/gfx/ipc/GPUChild.cpp @@ -8,7 +8,6 @@ #include "gfxPrefs.h" #include "GPUProcessHost.h" #include "GPUProcessManager.h" -#include "mozilla/Telemetry.h" #include "mozilla/dom/CheckerboardReportService.h" #include "mozilla/gfx/gfxVars.h" #if defined(XP_WIN) @@ -80,7 +79,6 @@ GPUChild::EnsureGPUReady() SendGetDeviceStatus(&data); gfxPlatform::GetPlatform()->ImportGPUDeviceData(data); - Telemetry::AccumulateTimeDelta(Telemetry::GPU_PROCESS_LAUNCH_TIME_MS, mHost->GetLaunchTime()); mGPUReady = true; } @@ -93,7 +91,6 @@ GPUChild::RecvInitComplete(const GPUDeviceData& aData) } gfxPlatform::GetPlatform()->ImportGPUDeviceData(aData); - Telemetry::AccumulateTimeDelta(Telemetry::GPU_PROCESS_LAUNCH_TIME_MS, mHost->GetLaunchTime()); mGPUReady = true; return true; } @@ -131,14 +128,14 @@ GPUChild::RecvNotifyUiObservers(const nsCString& aTopic) bool GPUChild::RecvAccumulateChildHistogram(InfallibleTArray<Accumulation>&& aAccumulations) { - Telemetry::AccumulateChild(GeckoProcessType_GPU, aAccumulations); + /* Telemetry STUB */ return true; } bool GPUChild::RecvAccumulateChildKeyedHistogram(InfallibleTArray<KeyedAccumulation>&& aAccumulations) { - Telemetry::AccumulateChildKeyed(GeckoProcessType_GPU, aAccumulations); + /* Telemetry STUB */ return true; } @@ -152,11 +149,6 @@ GPUChild::RecvNotifyDeviceReset() void GPUChild::ActorDestroy(ActorDestroyReason aWhy) { - if (aWhy == AbnormalShutdown) { - Telemetry::Accumulate(Telemetry::SUBPROCESS_ABNORMAL_ABORT, - nsDependentCString(XRE_ChildProcessTypeToString(GeckoProcessType_GPU), 1)); - } - gfxVars::RemoveReceiver(this); mHost->OnChannelClosed(); } diff --git a/gfx/layers/Layers.cpp b/gfx/layers/Layers.cpp index ff5ab9b50..482d809a1 100644 --- a/gfx/layers/Layers.cpp +++ b/gfx/layers/Layers.cpp @@ -22,7 +22,6 @@ #include "gfxUtils.h" // for gfxUtils, etc #include "gfx2DGlue.h" #include "mozilla/DebugOnly.h" // for DebugOnly -#include "mozilla/Telemetry.h" // for Accumulate #include "mozilla/ToString.h" #include "mozilla/dom/Animation.h" // for ComputedTimingFunction #include "mozilla/gfx/2D.h" // for DrawTarget @@ -1621,8 +1620,6 @@ void LayerManager::PostPresent() { if (!mTabSwitchStart.IsNull()) { - Telemetry::Accumulate(Telemetry::FX_TAB_SWITCH_TOTAL_MS, - uint32_t((TimeStamp::Now() - mTabSwitchStart).ToMilliseconds())); mTabSwitchStart = TimeStamp(); } } diff --git a/gfx/layers/apz/src/AsyncPanZoomController.cpp b/gfx/layers/apz/src/AsyncPanZoomController.cpp index 102f282f3..e7574eeb7 100644 --- a/gfx/layers/apz/src/AsyncPanZoomController.cpp +++ b/gfx/layers/apz/src/AsyncPanZoomController.cpp @@ -904,9 +904,6 @@ nsEventStatus AsyncPanZoomController::HandleDragEvent(const MouseInput& aEvent, return nsEventStatus_eConsumeNoDefault; } - mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS, - (uint32_t) ScrollInputMethod::ApzScrollbarDrag); - ReentrantMonitorAutoEnter lock(mMonitor); CSSPoint scrollFramePoint = aEvent.mLocalOrigin / GetFrameMetrics().GetZoom(); // The scrollbar can be transformed with the frame but the pres shell @@ -1731,10 +1728,6 @@ nsEventStatus AsyncPanZoomController::OnScrollWheel(const ScrollWheelInput& aEve return nsEventStatus_eIgnore; } - mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS, - (uint32_t) ScrollInputMethodForWheelDeltaType(aEvent.mDeltaType)); - - switch (aEvent.mScrollMode) { case ScrollWheelInput::SCROLLMODE_INSTANT: { @@ -1934,9 +1927,6 @@ nsEventStatus AsyncPanZoomController::OnPan(const PanGestureInput& aEvent, bool HandlePanningUpdate(physicalPanDisplacement); - mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS, - (uint32_t) ScrollInputMethod::ApzPanGesture); - ScreenPoint panDistance(fabs(physicalPanDisplacement.x), fabs(physicalPanDisplacement.y)); MOZ_ASSERT(GetCurrentPanGestureBlock()); OverscrollHandoffState handoffState( @@ -2600,8 +2590,6 @@ void AsyncPanZoomController::TrackTouch(const MultiTouchInput& aEvent) { UpdateWithTouchAtDevicePoint(aEvent); if (prevTouchPoint != touchPoint) { - mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS, - (uint32_t) ScrollInputMethod::ApzTouch); MOZ_ASSERT(GetCurrentTouchBlock()); OverscrollHandoffState handoffState( *GetCurrentTouchBlock()->GetOverscrollHandoffChain(), @@ -3260,14 +3248,7 @@ AsyncPanZoomController::UpdateCheckerboardEvent(const MutexAutoLock& aProofOfLoc uint32_t aMagnitude) { if (mCheckerboardEvent && mCheckerboardEvent->RecordFrameInfo(aMagnitude)) { - // This checkerboard event is done. Report some metrics to telemetry. - mozilla::Telemetry::Accumulate(mozilla::Telemetry::CHECKERBOARD_SEVERITY, - mCheckerboardEvent->GetSeverity()); - mozilla::Telemetry::Accumulate(mozilla::Telemetry::CHECKERBOARD_PEAK, - mCheckerboardEvent->GetPeak()); - mozilla::Telemetry::Accumulate(mozilla::Telemetry::CHECKERBOARD_DURATION, - (uint32_t)mCheckerboardEvent->GetDuration().ToMilliseconds()); - + // This checkerboard event is done. mPotentialCheckerboardTracker.CheckerboardDone(); if (gfxPrefs::APZRecordCheckerboarding()) { diff --git a/gfx/layers/apz/src/InputBlockState.cpp b/gfx/layers/apz/src/InputBlockState.cpp index f1310c031..85b4e13ff 100644 --- a/gfx/layers/apz/src/InputBlockState.cpp +++ b/gfx/layers/apz/src/InputBlockState.cpp @@ -10,7 +10,6 @@ #include "gfxPrefs.h" // for gfxPrefs #include "mozilla/MouseEvents.h" #include "mozilla/SizePrintfMacros.h" // for PRIuSIZE -#include "mozilla/Telemetry.h" // for Telemetry #include "mozilla/layers/APZCTreeManager.h" // for AllowedTouchBehavior #include "OverscrollHandoffState.h" #include "QueuedInput.h" @@ -246,8 +245,6 @@ CancelableBlockState::RecordContentResponseTime() // Not done yet, we'll get called again return; } - mozilla::Telemetry::Accumulate(mozilla::Telemetry::CONTENT_RESPONSE_DURATION, - (uint32_t)(TimeStamp::Now() - mContentResponseTimer).ToMilliseconds()); mContentResponseTimer = TimeStamp(); } diff --git a/gfx/layers/apz/src/PotentialCheckerboardDurationTracker.cpp b/gfx/layers/apz/src/PotentialCheckerboardDurationTracker.cpp index c83b9f45c..e469421ad 100644 --- a/gfx/layers/apz/src/PotentialCheckerboardDurationTracker.cpp +++ b/gfx/layers/apz/src/PotentialCheckerboardDurationTracker.cpp @@ -33,9 +33,7 @@ PotentialCheckerboardDurationTracker::CheckerboardDone() MOZ_ASSERT(Tracking()); mInCheckerboard = false; if (!Tracking()) { - mozilla::Telemetry::AccumulateTimeDelta( - mozilla::Telemetry::CHECKERBOARD_POTENTIAL_DURATION, - mCurrentPeriodStart); + /* Telemetry STUB */ } } @@ -63,9 +61,7 @@ PotentialCheckerboardDurationTracker::InTransform(bool aInTransform) // would have taken the other !Tracking branch above. If it's false now, // it means we just stopped tracking, so we are ending a potential // checkerboard period. - mozilla::Telemetry::AccumulateTimeDelta( - mozilla::Telemetry::CHECKERBOARD_POTENTIAL_DURATION, - mCurrentPeriodStart); + /* Telemetry STUB */ } } diff --git a/gfx/layers/ipc/CompositorBridgeParent.cpp b/gfx/layers/ipc/CompositorBridgeParent.cpp index bf510cd46..e31c6ceb6 100644 --- a/gfx/layers/ipc/CompositorBridgeParent.cpp +++ b/gfx/layers/ipc/CompositorBridgeParent.cpp @@ -484,8 +484,6 @@ CompositorVsyncScheduler::Composite(TimeStamp aVsyncTimestamp) mVsyncNotificationsSkipped = 0; TimeDuration compositeFrameTotal = TimeStamp::Now() - aVsyncTimestamp; - mozilla::Telemetry::Accumulate(mozilla::Telemetry::COMPOSITE_FRAME_ROUNDTRIP_TIME, - compositeFrameTotal.ToMilliseconds()); } else if (mVsyncNotificationsSkipped++ > gfxPrefs::CompositorUnobserveCount()) { UnobserveVsync(); } @@ -1305,7 +1303,6 @@ CompositorBridgeParent::CompositeToTarget(DrawTarget* aTarget, const gfx::IntRec } mCompositor->SetCompositionTime(TimeStamp()); - mozilla::Telemetry::AccumulateTimeDelta(mozilla::Telemetry::COMPOSITE_TIME, start); profiler_tracing("Paint", "Composite", TRACING_INTERVAL_END); } @@ -1660,19 +1657,6 @@ CompositorBridgeParent::NewCompositor(const nsTArray<LayersBackend>& aBackendHin failureReason = "SUCCESS"; } - // should only report success here - if (aBackendHints[i] == LayersBackend::LAYERS_OPENGL){ - Telemetry::Accumulate(Telemetry::OPENGL_COMPOSITING_FAILURE_ID, failureReason); - } -#ifdef XP_WIN - else if (aBackendHints[i] == LayersBackend::LAYERS_D3D9){ - Telemetry::Accumulate(Telemetry::D3D9_COMPOSITING_FAILURE_ID, failureReason); - } - else if (aBackendHints[i] == LayersBackend::LAYERS_D3D11){ - Telemetry::Accumulate(Telemetry::D3D11_COMPOSITING_FAILURE_ID, failureReason); - } -#endif - compositor->SetCompositorID(mCompositorID); return compositor; } @@ -1681,18 +1665,15 @@ CompositorBridgeParent::NewCompositor(const nsTArray<LayersBackend>& aBackendHin if (aBackendHints[i] == LayersBackend::LAYERS_OPENGL){ gfxCriticalNote << "[OPENGL] Failed to init compositor with reason: " << failureReason.get(); - Telemetry::Accumulate(Telemetry::OPENGL_COMPOSITING_FAILURE_ID, failureReason); } #ifdef XP_WIN else if (aBackendHints[i] == LayersBackend::LAYERS_D3D9){ gfxCriticalNote << "[D3D9] Failed to init compositor with reason: " << failureReason.get(); - Telemetry::Accumulate(Telemetry::D3D9_COMPOSITING_FAILURE_ID, failureReason); } else if (aBackendHints[i] == LayersBackend::LAYERS_D3D11){ gfxCriticalNote << "[D3D11] Failed to init compositor with reason: " << failureReason.get(); - Telemetry::Accumulate(Telemetry::D3D11_COMPOSITING_FAILURE_ID, failureReason); } #endif } diff --git a/gfx/src/DriverCrashGuard.cpp b/gfx/src/DriverCrashGuard.cpp index 4754c26ad..fd616575b 100644 --- a/gfx/src/DriverCrashGuard.cpp +++ b/gfx/src/DriverCrashGuard.cpp @@ -11,7 +11,6 @@ #include "nsString.h"
#include "nsXULAppAPI.h"
#include "mozilla/Preferences.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/Services.h"
#include "mozilla/gfx/Logging.h"
#include "mozilla/dom/ContentChild.h"
@@ -469,20 +468,7 @@ D3D11LayersCrashGuard::LogFeatureDisabled() void
D3D11LayersCrashGuard::RecordTelemetry(TelemetryState aState)
{
- // D3D11LayersCrashGuard is a no-op in the child process.
- if (!XRE_IsParentProcess()) {
- return;
- }
-
- // Since we instantiate this class more than once, make sure we only record
- // the first state (since that is really all we care about).
- static bool sTelemetryStateRecorded = false;
- if (sTelemetryStateRecorded) {
- return;
- }
-
- Telemetry::Accumulate(Telemetry::GRAPHICS_DRIVER_STARTUP_TEST, int32_t(aState));
- sTelemetryStateRecorded = true;
+ /* STUB */
}
D3D9VideoCrashGuard::D3D9VideoCrashGuard(dom::ContentParent* aContentParent)
diff --git a/gfx/thebes/DeviceManagerDx.cpp b/gfx/thebes/DeviceManagerDx.cpp index 2f2693c76..e1cfc5763 100644 --- a/gfx/thebes/DeviceManagerDx.cpp +++ b/gfx/thebes/DeviceManagerDx.cpp @@ -10,7 +10,6 @@ #include "gfxPrefs.h" #include "gfxWindowsPlatform.h" #include "mozilla/D3DMessageUtils.h" -#include "mozilla/Telemetry.h" #include "mozilla/WindowsVersion.h" #include "mozilla/gfx/GraphicsMessages.h" #include "mozilla/gfx/Logging.h" @@ -589,10 +588,6 @@ DeviceManagerDx::MaybeResetAndReacquireDevices() return false; } - if (resetReason != DeviceResetReason::FORCED_RESET) { - Telemetry::Accumulate(Telemetry::DEVICE_RESET_REASON, uint32_t(resetReason)); - } - bool createCompositorDevice = !!mCompositorDevice; bool createContentDevice = !!mContentDevice; @@ -724,7 +719,6 @@ DeviceManagerDx::GetAnyDeviceRemovedReason(DeviceResetReason* aOutReason) void DeviceManagerDx::ForceDeviceReset(ForcedDeviceResetReason aReason) { - Telemetry::Accumulate(Telemetry::FORCED_DEVICE_RESET_REASON, uint32_t(aReason)); { MutexAutoLock lock(mDeviceLock); mDeviceResetReason = Some(DeviceResetReason::FORCED_RESET); diff --git a/gfx/thebes/gfxDWriteFontList.cpp b/gfx/thebes/gfxDWriteFontList.cpp index d159fddb1..5cc1fbb92 100644 --- a/gfx/thebes/gfxDWriteFontList.cpp +++ b/gfx/thebes/gfxDWriteFontList.cpp @@ -14,7 +14,6 @@ #include "nsCharSeparatedTokenizer.h" #include "mozilla/Preferences.h" #include "mozilla/Sprintf.h" -#include "mozilla/Telemetry.h" #include "nsDirectoryServiceUtils.h" #include "nsDirectoryServiceDefs.h" #include "nsAppDirectoryServiceDefs.h" @@ -864,8 +863,6 @@ gfxDWriteFontList::InitFontListForPlatform() hr = gfxWindowsPlatform::GetPlatform()->GetDWriteFactory()-> GetGdiInterop(getter_AddRefs(mGDIInterop)); if (FAILED(hr)) { - Telemetry::Accumulate(Telemetry::DWRITEFONT_INIT_PROBLEM, - uint32_t(errGDIInterop)); return NS_ERROR_FAILURE; } @@ -878,8 +875,6 @@ gfxDWriteFontList::InitFontListForPlatform() NS_ASSERTION(SUCCEEDED(hr), "GetSystemFontCollection failed!"); if (FAILED(hr)) { - Telemetry::Accumulate(Telemetry::DWRITEFONT_INIT_PROBLEM, - uint32_t(errSystemFontCollection)); return NS_ERROR_FAILURE; } @@ -891,8 +886,6 @@ gfxDWriteFontList::InitFontListForPlatform() NS_ASSERTION(mFontFamilies.Count() != 0, "no fonts found in the system fontlist -- holy crap batman!"); if (mFontFamilies.Count() == 0) { - Telemetry::Accumulate(Telemetry::DWRITEFONT_INIT_PROBLEM, - uint32_t(errNoFonts)); return NS_ERROR_FAILURE; } @@ -1001,9 +994,6 @@ gfxDWriteFontList::InitFontListForPlatform() } elapsedTime = (t5.QuadPart - t1.QuadPart) * 1000.0 / frequency.QuadPart; - Telemetry::Accumulate(Telemetry::DWRITEFONT_DELAYEDINITFONTLIST_TOTAL, elapsedTime); - Telemetry::Accumulate(Telemetry::DWRITEFONT_DELAYEDINITFONTLIST_COUNT, - mSystemFonts->GetFontFamilyCount()); LOG_FONTINIT(( "(fontinit) Total time in InitFontList: %9.3f ms (families: %d, %s)\n", elapsedTime, mSystemFonts->GetFontFamilyCount(), @@ -1013,7 +1003,6 @@ gfxDWriteFontList::InitFontListForPlatform() LOG_FONTINIT(("(fontinit) --- base/interop obj initialization init: %9.3f ms\n", elapsedTime)); elapsedTime = (t3.QuadPart - t2.QuadPart) * 1000.0 / frequency.QuadPart; - Telemetry::Accumulate(Telemetry::DWRITEFONT_DELAYEDINITFONTLIST_COLLECT, elapsedTime); LOG_FONTINIT(("(fontinit) --- GetSystemFontCollection: %9.3f ms\n", elapsedTime)); elapsedTime = (t4.QuadPart - t3.QuadPart) * 1000.0 / frequency.QuadPart; @@ -1455,7 +1444,6 @@ gfxDWriteFontList::PlatformGlobalFontFallback(const uint32_t aCh, *aMatchedFamily = family; return fontEntry; } - Telemetry::Accumulate(Telemetry::BAD_FALLBACK_FONT, true); } return nullptr; diff --git a/gfx/thebes/gfxFont.cpp b/gfx/thebes/gfxFont.cpp index d0b747fff..8ccd721f8 100644 --- a/gfx/thebes/gfxFont.cpp +++ b/gfx/thebes/gfxFont.cpp @@ -229,7 +229,6 @@ gfxFontCache::Lookup(const gfxFontEntry* aFontEntry, Key key(aFontEntry, aStyle, aUnicodeRangeMap); HashEntry *entry = mFonts.GetEntry(key); - Telemetry::Accumulate(Telemetry::FONT_CACHE_HIT, entry != nullptr); if (!entry) return nullptr; @@ -2578,9 +2577,6 @@ gfxFont::GetShapedWord(DrawTarget *aDrawTarget, if (sw) { sw->ResetAge(); - Telemetry::Accumulate((isContent ? Telemetry::WORD_CACHE_HITS_CONTENT : - Telemetry::WORD_CACHE_HITS_CHROME), - aLength); #ifndef RELEASE_OR_BETA if (aTextPerf) { aTextPerf->current.wordCacheHit++; @@ -2589,9 +2585,6 @@ gfxFont::GetShapedWord(DrawTarget *aDrawTarget, return sw; } - Telemetry::Accumulate((isContent ? Telemetry::WORD_CACHE_MISSES_CONTENT : - Telemetry::WORD_CACHE_MISSES_CHROME), - aLength); #ifndef RELEASE_OR_BETA if (aTextPerf) { aTextPerf->current.wordCacheMiss++; diff --git a/gfx/thebes/gfxGDIFontList.cpp b/gfx/thebes/gfxGDIFontList.cpp index cc047ef38..f65334fe6 100644 --- a/gfx/thebes/gfxGDIFontList.cpp +++ b/gfx/thebes/gfxGDIFontList.cpp @@ -637,8 +637,6 @@ gfxGDIFontList::GetFontSubstitutes() nsresult gfxGDIFontList::InitFontListForPlatform() { - Telemetry::AutoTimer<Telemetry::GDI_INITFONTLIST_TOTAL> timer; - mFontSubstitutes.Clear(); mNonExistingFonts.Clear(); diff --git a/gfx/thebes/gfxGradientCache.cpp b/gfx/thebes/gfxGradientCache.cpp index fa25bd78c..bfa82685c 100644 --- a/gfx/thebes/gfxGradientCache.cpp +++ b/gfx/thebes/gfxGradientCache.cpp @@ -8,7 +8,6 @@ #include "PLDHashTable.h" #include "nsExpirationTracker.h" #include "nsClassHashtable.h" -#include "mozilla/Telemetry.h" #include "gfxGradientCache.h" #include <time.h> @@ -127,7 +126,6 @@ class GradientCache final : public nsExpirationTracker<GradientCacheData,4> { srand(time(nullptr)); mTimerPeriod = rand() % MAX_GENERATION_MS + 1; - Telemetry::Accumulate(Telemetry::GRADIENT_RETENTION_TIME, mTimerPeriod); } virtual void NotifyExpired(GradientCacheData* aObject) diff --git a/gfx/thebes/gfxMacPlatformFontList.mm b/gfx/thebes/gfxMacPlatformFontList.mm index bf958a90b..4536ab527 100644 --- a/gfx/thebes/gfxMacPlatformFontList.mm +++ b/gfx/thebes/gfxMacPlatformFontList.mm @@ -65,7 +65,6 @@ #include "mozilla/MemoryReporting.h" #include "mozilla/Preferences.h" #include "mozilla/Sprintf.h" -#include "mozilla/Telemetry.h" #include "mozilla/gfx/2D.h" #include <unistd.h> @@ -738,8 +737,6 @@ gfxMacPlatformFontList::InitFontListForPlatform() { nsAutoreleasePool localPool; - Telemetry::AutoTimer<Telemetry::MAC_INITFONTLIST_TOTAL> timer; - // reset system font list mSystemFontFamilies.Clear(); @@ -1043,10 +1040,6 @@ gfxMacPlatformFontList::PlatformGlobalFontFallback(const uint32_t aCh, } } - if (cantUseFallbackFont) { - Telemetry::Accumulate(Telemetry::BAD_FALLBACK_FONT, cantUseFallbackFont); - } - ::CFRelease(str); return fontEntry; diff --git a/gfx/thebes/gfxPlatform.cpp b/gfx/thebes/gfxPlatform.cpp index 171d1bec9..d5af16a19 100644 --- a/gfx/thebes/gfxPlatform.cpp +++ b/gfx/thebes/gfxPlatform.cpp @@ -361,7 +361,6 @@ class CrashTelemetryEvent : public Runnable NS_IMETHOD Run() override { MOZ_ASSERT(NS_IsMainThread()); - Telemetry::Accumulate(Telemetry::GFX_CRASH, mReason); return NS_OK; } @@ -374,29 +373,7 @@ NS_IMPL_ISUPPORTS_INHERITED0(CrashTelemetryEvent, Runnable); void CrashStatsLogForwarder::CrashAction(LogReason aReason) { -#ifndef RELEASE_OR_BETA - // Non-release builds crash by default, but will use telemetry - // if this environment variable is present. - static bool useTelemetry = gfxEnv::GfxDevCrashTelemetry(); -#else - // Release builds use telemetry by default, but will crash instead - // if this environment variable is present. - static bool useTelemetry = !gfxEnv::GfxDevCrashMozCrash(); -#endif - - if (useTelemetry) { - // The callers need to assure that aReason is in the range - // that the telemetry call below supports. - if (NS_IsMainThread()) { - Telemetry::Accumulate(Telemetry::GFX_CRASH, (uint32_t)aReason); - } else { - nsCOMPtr<nsIRunnable> r1 = new CrashTelemetryEvent((uint32_t)aReason); - NS_DispatchToMainThread(r1); - } - } else { - // ignoring aReason, we can get the information we need from the stack - MOZ_CRASH("GFX_CRASH"); - } + MOZ_CRASH("GFX_CRASH"); } NS_IMPL_ISUPPORTS(SRGBOverrideObserver, nsIObserver, nsISupportsWeakReference) diff --git a/gfx/thebes/gfxPlatformFontList.cpp b/gfx/thebes/gfxPlatformFontList.cpp index e12f4e197..59df40666 100644 --- a/gfx/thebes/gfxPlatformFontList.cpp +++ b/gfx/thebes/gfxPlatformFontList.cpp @@ -322,8 +322,6 @@ gfxPlatformFontList::InitOtherFamilyNames() mOtherFamilyNamesInitialized = true; } TimeStamp end = TimeStamp::Now(); - Telemetry::AccumulateTimeDelta(Telemetry::FONTLIST_INITOTHERFAMILYNAMES, - start, end); if (LOG_FONTINIT_ENABLED()) { TimeDuration elapsed = end - start; @@ -370,8 +368,6 @@ gfxPlatformFontList::SearchFamiliesForFaceName(const nsAString& aFaceName) lookup = FindFaceName(aFaceName); TimeStamp end = TimeStamp::Now(); - Telemetry::AccumulateTimeDelta(Telemetry::FONTLIST_INITFACENAMELISTS, - start, end); if (LOG_FONTINIT_ENABLED()) { TimeDuration elapsed = end - start; LOG_FONTINIT(("(fontinit) SearchFamiliesForFaceName took %8.2f ms %s %s", @@ -587,16 +583,8 @@ gfxPlatformFontList::SystemFindFontForChar(uint32_t aCh, uint32_t aNextCh, static bool first = true; int32_t intElapsed = int32_t(first ? elapsed.ToMilliseconds() : elapsed.ToMicroseconds()); - Telemetry::Accumulate((first ? Telemetry::SYSTEM_FONT_FALLBACK_FIRST : - Telemetry::SYSTEM_FONT_FALLBACK), - intElapsed); first = false; - // track the script for which fallback occurred (incremented one make it - // 1-based) - Telemetry::Accumulate(Telemetry::SYSTEM_FONT_FALLBACK_SCRIPT, - int(aRunScript) + 1); - return fontEntry; } diff --git a/gfx/thebes/gfxUserFontSet.cpp b/gfx/thebes/gfxUserFontSet.cpp index 23c26d9fe..72c54d9b5 100644 --- a/gfx/thebes/gfxUserFontSet.cpp +++ b/gfx/thebes/gfxUserFontSet.cpp @@ -453,8 +453,6 @@ gfxUserFontEntry::LoadNextSrc() gfxUserFontData::kUnknownCompression); mPlatformFontEntry = fe; SetLoadState(STATUS_LOADED); - Telemetry::Accumulate(Telemetry::WEBFONT_SRCTYPE, - currSrc.mSourceType + 1); return; } else { LOG(("userfonts (%p) [src %d] failed local: (%s) for (%s)\n", @@ -517,8 +515,6 @@ gfxUserFontEntry::LoadNextSrc() if (NS_SUCCEEDED(rv) && LoadPlatformFont(buffer, bufferLength)) { SetLoadState(STATUS_LOADED); - Telemetry::Accumulate(Telemetry::WEBFONT_SRCTYPE, - currSrc.mSourceType + 1); return; } else { mFontSet->LogMessage(this, @@ -572,8 +568,6 @@ gfxUserFontEntry::LoadNextSrc() // LoadPlatformFont takes ownership of the buffer, so no need // to free it here. SetLoadState(STATUS_LOADED); - Telemetry::Accumulate(Telemetry::WEBFONT_SRCTYPE, - currSrc.mSourceType + 1); return; } else { mFontSet->LogMessage(this, @@ -617,7 +611,6 @@ gfxUserFontEntry::LoadPlatformFont(const uint8_t* aFontData, uint32_t& aLength) gfxUserFontType fontType = gfxFontUtils::DetermineFontDataType(aFontData, aLength); - Telemetry::Accumulate(Telemetry::WEBFONT_FONTTYPE, uint32_t(fontType)); // Unwrap/decompress/sanitize or otherwise munge the downloaded data // to make a usable sfnt structure. @@ -650,13 +643,6 @@ gfxUserFontEntry::LoadPlatformFont(const uint8_t* aFontData, uint32_t& aLength) if (saneData) { if (saneLen) { fontCompressionRatio = uint32_t(100.0 * aLength / saneLen + 0.5); - if (fontType == GFX_USERFONT_WOFF || - fontType == GFX_USERFONT_WOFF2) { - Telemetry::Accumulate(fontType == GFX_USERFONT_WOFF ? - Telemetry::WEBFONT_COMPRESSION_WOFF : - Telemetry::WEBFONT_COMPRESSION_WOFF2, - fontCompressionRatio); - } } // The sanitizer ensures that we have a valid sfnt and a usable diff --git a/gfx/thebes/gfxWindowsPlatform.cpp b/gfx/thebes/gfxWindowsPlatform.cpp index a988859eb..b1ede7ad2 100755 --- a/gfx/thebes/gfxWindowsPlatform.cpp +++ b/gfx/thebes/gfxWindowsPlatform.cpp @@ -430,10 +430,6 @@ gfxWindowsPlatform::HandleDeviceReset() return false; } - if (resetReason != DeviceResetReason::FORCED_RESET) { - Telemetry::Accumulate(Telemetry::DEVICE_RESET_REASON, uint32_t(resetReason)); - } - // Remove devices and adapters. DeviceManagerDx::Get()->ResetDevices(); @@ -1442,15 +1438,7 @@ gfxWindowsPlatform::InitializeD3D11Config() /* static */ void gfxWindowsPlatform::RecordContentDeviceFailure(TelemetryDeviceCode aDevice) { - // If the parent process fails to acquire a device, we record this - // normally as part of the environment. The exceptional case we're - // looking for here is when the parent process successfully acquires - // a device, but the content process fails to acquire the same device. - // This would not normally be displayed in about:support. - if (!XRE_IsContentProcess()) { - return; - } - Telemetry::Accumulate(Telemetry::GFX_CONTENT_FAILED_TO_ACQUIRE_DEVICE, uint32_t(aDevice)); + /* STUB */ } void diff --git a/hal/Hal.cpp b/hal/Hal.cpp index 16201a2d8..f88efd6cc 100644 --- a/hal/Hal.cpp +++ b/hal/Hal.cpp @@ -21,10 +21,7 @@ #include "nsJSUtils.h" #include "mozilla/ClearOnShutdown.h" #include "mozilla/Observer.h" -#include "mozilla/Services.h" -#include "mozilla/StaticPtr.h" #include "mozilla/dom/ContentChild.h" -#include "mozilla/dom/ContentParent.h" #include "mozilla/dom/ScreenOrientation.h" #include "WindowIdentifier.h" @@ -590,6 +587,7 @@ UnregisterSensorObserver(SensorType aSensor, ISensorObserver *aObserver) { AssertMainThread(); if (!gSensorObservers) { + HAL_ERR("Un-registering a sensor when none have been registered"); return; } @@ -18,7 +18,6 @@ #include "mozilla/hal_sandbox/PHal.h" #include "mozilla/HalScreenConfiguration.h" #include "mozilla/HalTypes.h" -#include "mozilla/Observer.h" #include "mozilla/Types.h" /* diff --git a/hal/HalSensor.h b/hal/HalSensor.h index 551c4271d..5175629c9 100644 --- a/hal/HalSensor.h +++ b/hal/HalSensor.h @@ -18,7 +18,6 @@ namespace hal { * If you add or change any here, do the same in GeckoHalDefines.java. */ enum SensorType { - SENSOR_UNKNOWN = -1, SENSOR_ORIENTATION = 0, SENSOR_ACCELERATION = 1, SENSOR_PROXIMITY = 2, @@ -63,7 +62,7 @@ namespace IPC { struct ParamTraits<mozilla::hal::SensorType>: public ContiguousEnumSerializer< mozilla::hal::SensorType, - mozilla::hal::SENSOR_UNKNOWN, + mozilla::hal::SENSOR_ORIENTATION, mozilla::hal::NUM_SENSOR_TYPE> { }; diff --git a/hal/sandbox/SandboxHal.cpp b/hal/sandbox/SandboxHal.cpp index 9771b3ef6..5501d459b 100644 --- a/hal/sandbox/SandboxHal.cpp +++ b/hal/sandbox/SandboxHal.cpp @@ -16,6 +16,7 @@ #include "mozilla/dom/battery/Types.h" #include "mozilla/dom/network/Types.h" #include "mozilla/dom/ScreenOrientation.h" +#include "mozilla/EnumeratedRange.h" #include "mozilla/Observer.h" #include "mozilla/Unused.h" #include "nsAutoPtr.h" @@ -404,9 +405,8 @@ public: hal::UnregisterBatteryObserver(this); hal::UnregisterNetworkObserver(this); hal::UnregisterScreenConfigurationObserver(this); - for (int32_t sensor = SENSOR_UNKNOWN + 1; - sensor < NUM_SENSOR_TYPE; ++sensor) { - hal::UnregisterSensorObserver(SensorType(sensor), this); + for (auto sensor : MakeEnumeratedRange(NUM_SENSOR_TYPE)) { + hal::UnregisterSensorObserver(sensor, this); } hal::UnregisterWakeLockObserver(this); hal::UnregisterSystemClockChangeObserver(this); diff --git a/image/RasterImage.cpp b/image/RasterImage.cpp index aad705473..b67ec3bef 100644 --- a/image/RasterImage.cpp +++ b/image/RasterImage.cpp @@ -39,8 +39,8 @@ #include "mozilla/MemoryReporting.h" #include "mozilla/Services.h" #include <stdint.h> -#include "mozilla/Telemetry.h" #include "mozilla/TimeStamp.h" +#include "mozilla/Telemetry.h" #include "mozilla/Tuple.h" #include "mozilla/ClearOnShutdown.h" #include "mozilla/gfx/Scale.h" @@ -104,9 +104,6 @@ RasterImage::~RasterImage() // Release all frames from the surface cache. SurfaceCache::RemoveImage(ImageKey(this)); - - // Record Telemetry. - Telemetry::Accumulate(Telemetry::IMAGE_DECODE_COUNT, mDecodeCount); } nsresult @@ -1365,19 +1362,9 @@ RasterImage::Draw(gfxContext* aContext, return DrawResult::NOT_READY; } - bool shouldRecordTelemetry = !mDrawStartTime.IsNull() && - surface->IsFinished(); - auto result = DrawInternal(Move(surface), aContext, aSize, aRegion, aSamplingFilter, flags); - if (shouldRecordTelemetry) { - TimeDuration drawLatency = TimeStamp::Now() - mDrawStartTime; - Telemetry::Accumulate(Telemetry::IMAGE_DECODE_ON_DRAW_LATENCY, - int32_t(drawLatency.ToMicroseconds())); - mDrawStartTime = TimeStamp(); - } - return result; } @@ -1614,22 +1601,6 @@ RasterImage::NotifyDecodeComplete(const DecoderFinalStatus& aStatus, mAnimationState->SetDoneDecoding(true); } - // Do some telemetry if this isn't a metadata decode. - if (!aStatus.mWasMetadataDecode) { - if (aTelemetry.mChunkCount) { - Telemetry::Accumulate(Telemetry::IMAGE_DECODE_CHUNKS, aTelemetry.mChunkCount); - } - - if (aStatus.mFinished) { - Telemetry::Accumulate(Telemetry::IMAGE_DECODE_TIME, - int32_t(aTelemetry.mDecodeTime.ToMicroseconds())); - - if (aTelemetry.mSpeedHistogram) { - Telemetry::Accumulate(*aTelemetry.mSpeedHistogram, aTelemetry.Speed()); - } - } - } - // Only act on errors if we have no usable frames from the decoder. if (aStatus.mHadError && (!mAnimationState || mAnimationState->KnownFrameCount() == 0)) { diff --git a/image/imgFrame.cpp b/image/imgFrame.cpp index 9c5bf9b99..5da2ccec5 100644 --- a/image/imgFrame.cpp +++ b/image/imgFrame.cpp @@ -22,7 +22,6 @@ #include "mozilla/gfx/Tools.h" #include "mozilla/Likely.h" #include "mozilla/MemoryReporting.h" -#include "mozilla/Telemetry.h" #include "nsMargin.h" #include "nsThreadUtils.h" @@ -620,8 +619,6 @@ imgFrame::Finish(Opacity aFrameOpacity /* = Opacity::SOME_TRANSPARENCY */, if (aFrameOpacity == Opacity::FULLY_OPAQUE) { mHasNoAlpha = true; - Telemetry::Accumulate(Telemetry::IMAGE_DECODE_OPAQUE_BGRA, - mFormat == SurfaceFormat::B8G8R8A8); } mDisposalMethod = aDisposalMethod; diff --git a/intl/strres/nsStringBundle.cpp b/intl/strres/nsStringBundle.cpp index ab840a469..717e368e2 100644 --- a/intl/strres/nsStringBundle.cpp +++ b/intl/strres/nsStringBundle.cpp @@ -25,6 +25,7 @@ #include "nsIErrorService.h" #include "nsICategoryManager.h" #include "nsContentUtils.h" +#include "mozilla/Preferences.h" // for async loading #ifdef ASYNC_LOADING @@ -32,6 +33,9 @@ #include "nsIStringStream.h" #endif +#define STR_HELPER(x) #x +#define STR(x) STR_HELPER(x) + using namespace mozilla; static NS_DEFINE_CID(kErrorServiceCID, NS_ERRORSERVICE_CID); @@ -529,6 +533,8 @@ nsStringBundleService::Init() os->AddObserver(this, "profile-do-change", true); os->AddObserver(this, "chrome-flush-caches", true); os->AddObserver(this, "xpcom-category-entry-added", true); + os->AddObserver(this, "selected-locale-has-changed", true); + os->AddObserver(this, "final-ui-startup", true); } // instantiate the override service, if there is any. @@ -550,6 +556,19 @@ nsStringBundleService::Observe(nsISupports* aSubject, { flushBundleCache(); } + else if (strcmp("selected-locale-has-changed", aTopic) == 0) + { + flushBundleCache(); + notifyBundlesFlushed(); + } + else if (strcmp("final-ui-startup", aTopic) == 0) + { + nsAdoptingCString ualocale = Preferences::GetCString("general.useragent.locale"); + if (!ualocale.EqualsLiteral(STR(MOZ_UI_LOCALE))) { + flushBundleCache(); + notifyBundlesFlushed(); + } + } else if (strcmp("xpcom-category-entry-added", aTopic) == 0 && NS_LITERAL_STRING("xpcom-autoregistration").Equals(aSomeData)) { @@ -560,6 +579,14 @@ nsStringBundleService::Observe(nsISupports* aSubject, } void +nsStringBundleService::notifyBundlesFlushed() +{ + nsCOMPtr<nsIObserverService> obsSvc = mozilla::services::GetObserverService(); + NS_ASSERTION(obsSvc, "Couldn't get observer service."); + obsSvc->NotifyObservers(nullptr, "string-bundles-have-flushed", nullptr); +} + +void nsStringBundleService::flushBundleCache() { // release all bundles in the cache diff --git a/intl/strres/nsStringBundleService.h b/intl/strres/nsStringBundleService.h index a192cdff8..e65c61f12 100644 --- a/intl/strres/nsStringBundleService.h +++ b/intl/strres/nsStringBundleService.h @@ -43,6 +43,8 @@ private: void flushBundleCache(); + void notifyBundlesFlushed(); + bundleCacheEntry_t *insertIntoCache(already_AddRefed<nsIStringBundle> aBundle, nsCString &aHashKey); diff --git a/intl/uconv/ucvja/nsJapaneseToUnicode.h b/intl/uconv/ucvja/nsJapaneseToUnicode.h index 8e3f207eb..e2ea45fb6 100644 --- a/intl/uconv/ucvja/nsJapaneseToUnicode.h +++ b/intl/uconv/ucvja/nsJapaneseToUnicode.h @@ -83,8 +83,6 @@ public: mGB2312Decoder = nullptr; mEUCKRDecoder = nullptr; mISO88597Decoder = nullptr; - mozilla::Telemetry::Accumulate( - mozilla::Telemetry::DECODER_INSTANTIATED_ISO2022JP, true); } virtual ~nsISO2022JPToUnicodeV2() { diff --git a/intl/uconv/ucvlatin/nsCP866ToUnicode.cpp b/intl/uconv/ucvlatin/nsCP866ToUnicode.cpp index 4d4b89948..08db5f65a 100644 --- a/intl/uconv/ucvlatin/nsCP866ToUnicode.cpp +++ b/intl/uconv/ucvlatin/nsCP866ToUnicode.cpp @@ -20,7 +20,6 @@ nsCP866ToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID, #include "cp866.ut" }; - Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_IBM866, true); return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable, aOuter, aIID, aResult); } diff --git a/intl/uconv/ucvlatin/nsISO88595ToUnicode.cpp b/intl/uconv/ucvlatin/nsISO88595ToUnicode.cpp index 23395aa4e..dae79881d 100644 --- a/intl/uconv/ucvlatin/nsISO88595ToUnicode.cpp +++ b/intl/uconv/ucvlatin/nsISO88595ToUnicode.cpp @@ -20,7 +20,6 @@ nsISO88595ToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID, #include "8859-5.ut" }; - Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_ISO_8859_5, true); return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable, aOuter, aIID, aResult); } diff --git a/intl/uconv/ucvlatin/nsKOI8RToUnicode.cpp b/intl/uconv/ucvlatin/nsKOI8RToUnicode.cpp index 35f77ba41..25a760a66 100644 --- a/intl/uconv/ucvlatin/nsKOI8RToUnicode.cpp +++ b/intl/uconv/ucvlatin/nsKOI8RToUnicode.cpp @@ -5,7 +5,6 @@ #include "nsUCConstructors.h" #include "nsKOI8RToUnicode.h" -#include "mozilla/Telemetry.h" using namespace mozilla; @@ -20,7 +19,6 @@ nsKOI8RToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID, #include "koi8r.ut" }; - Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_KOI8R, true); return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable, aOuter, aIID, aResult); } diff --git a/intl/uconv/ucvlatin/nsKOI8UToUnicode.cpp b/intl/uconv/ucvlatin/nsKOI8UToUnicode.cpp index c5d588ad6..2dbb86377 100644 --- a/intl/uconv/ucvlatin/nsKOI8UToUnicode.cpp +++ b/intl/uconv/ucvlatin/nsKOI8UToUnicode.cpp @@ -20,7 +20,6 @@ nsKOI8UToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID, #include "koi8u.ut" }; - Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_KOI8U, true); return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable, aOuter, aIID, aResult); } diff --git a/intl/uconv/ucvlatin/nsMacArabicToUnicode.cpp b/intl/uconv/ucvlatin/nsMacArabicToUnicode.cpp index 1a9950df7..7ff51f868 100644 --- a/intl/uconv/ucvlatin/nsMacArabicToUnicode.cpp +++ b/intl/uconv/ucvlatin/nsMacArabicToUnicode.cpp @@ -5,7 +5,6 @@ #include "nsUCConstructors.h" #include "nsMacArabicToUnicode.h" -#include "mozilla/Telemetry.h" using namespace mozilla; @@ -20,7 +19,6 @@ nsMacArabicToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID, #include "macarabic.ut" }; - Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_MACARABIC, true); return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable, aOuter, aIID, aResult); } diff --git a/intl/uconv/ucvlatin/nsMacCEToUnicode.cpp b/intl/uconv/ucvlatin/nsMacCEToUnicode.cpp index 458d0f53c..4dd3eb159 100644 --- a/intl/uconv/ucvlatin/nsMacCEToUnicode.cpp +++ b/intl/uconv/ucvlatin/nsMacCEToUnicode.cpp @@ -20,7 +20,6 @@ nsMacCEToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID, #include "macce.ut" }; - Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_MACCE, true); return CreateOneByteDecoder((uMappingTable*) &g_MacCEMappingTable, aOuter, aIID, aResult); } diff --git a/intl/uconv/ucvlatin/nsMacCroatianToUnicode.cpp b/intl/uconv/ucvlatin/nsMacCroatianToUnicode.cpp index 9799ac9ad..a0549ee26 100644 --- a/intl/uconv/ucvlatin/nsMacCroatianToUnicode.cpp +++ b/intl/uconv/ucvlatin/nsMacCroatianToUnicode.cpp @@ -5,7 +5,6 @@ #include "nsUCConstructors.h" #include "nsMacCroatianToUnicode.h" -#include "mozilla/Telemetry.h" using namespace mozilla; @@ -20,7 +19,6 @@ nsMacCroatianToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID, #include "maccroat.ut" }; - Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_MACCROATIAN, true); return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable, aOuter, aIID, aResult); } diff --git a/intl/uconv/ucvlatin/nsMacCyrillicToUnicode.cpp b/intl/uconv/ucvlatin/nsMacCyrillicToUnicode.cpp index edbf604fd..0475c2a13 100644 --- a/intl/uconv/ucvlatin/nsMacCyrillicToUnicode.cpp +++ b/intl/uconv/ucvlatin/nsMacCyrillicToUnicode.cpp @@ -5,7 +5,6 @@ #include "nsUCConstructors.h" #include "nsMacCyrillicToUnicode.h" -#include "mozilla/Telemetry.h" using namespace mozilla; @@ -20,7 +19,6 @@ nsMacCyrillicToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID, #include "maccyril.ut" }; - Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_MACCYRILLIC, true); return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable, aOuter, aIID, aResult); } diff --git a/intl/uconv/ucvlatin/nsMacDevanagariToUnicode.cpp b/intl/uconv/ucvlatin/nsMacDevanagariToUnicode.cpp index 3c1cae733..630553d9c 100644 --- a/intl/uconv/ucvlatin/nsMacDevanagariToUnicode.cpp +++ b/intl/uconv/ucvlatin/nsMacDevanagariToUnicode.cpp @@ -5,7 +5,6 @@ #include "nsUCConstructors.h" #include "nsMacDevanagariToUnicode.h" -#include "mozilla/Telemetry.h" using namespace mozilla; @@ -20,7 +19,6 @@ nsMacDevanagariToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID, #include "macdevanaga.ut" }; - Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_MACDEVANAGARI, true); return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable, aOuter, aIID, aResult); } diff --git a/intl/uconv/ucvlatin/nsMacFarsiToUnicode.cpp b/intl/uconv/ucvlatin/nsMacFarsiToUnicode.cpp index 1e7e291ba..5870533ff 100644 --- a/intl/uconv/ucvlatin/nsMacFarsiToUnicode.cpp +++ b/intl/uconv/ucvlatin/nsMacFarsiToUnicode.cpp @@ -5,7 +5,6 @@ #include "nsUCConstructors.h" #include "nsMacFarsiToUnicode.h" -#include "mozilla/Telemetry.h" using namespace mozilla; @@ -20,7 +19,6 @@ nsMacFarsiToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID, #include "macfarsi.ut" }; - Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_MACFARSI, true); return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable, aOuter, aIID, aResult); } diff --git a/intl/uconv/ucvlatin/nsMacGreekToUnicode.cpp b/intl/uconv/ucvlatin/nsMacGreekToUnicode.cpp index 3f90811d3..64d489147 100644 --- a/intl/uconv/ucvlatin/nsMacGreekToUnicode.cpp +++ b/intl/uconv/ucvlatin/nsMacGreekToUnicode.cpp @@ -5,7 +5,6 @@ #include "nsUCConstructors.h" #include "nsMacGreekToUnicode.h" -#include "mozilla/Telemetry.h" using namespace mozilla; @@ -20,7 +19,6 @@ nsMacGreekToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID, #include "macgreek.ut" }; - Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_MACGREEK, true); return CreateOneByteDecoder((uMappingTable*) &g_MacGreekMappingTable, aOuter, aIID, aResult); } diff --git a/intl/uconv/ucvlatin/nsMacGujaratiToUnicode.cpp b/intl/uconv/ucvlatin/nsMacGujaratiToUnicode.cpp index 21b3020f5..0d01e33e4 100644 --- a/intl/uconv/ucvlatin/nsMacGujaratiToUnicode.cpp +++ b/intl/uconv/ucvlatin/nsMacGujaratiToUnicode.cpp @@ -17,7 +17,6 @@ nsMacGujaratiToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID, #include "macgujarati.ut" }; - Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_MACGUJARATI, true); return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable, aOuter, aIID, aResult); } diff --git a/intl/uconv/ucvlatin/nsMacGurmukhiToUnicode.cpp b/intl/uconv/ucvlatin/nsMacGurmukhiToUnicode.cpp index d6b3a88d6..e0a59c205 100644 --- a/intl/uconv/ucvlatin/nsMacGurmukhiToUnicode.cpp +++ b/intl/uconv/ucvlatin/nsMacGurmukhiToUnicode.cpp @@ -5,7 +5,6 @@ #include "nsUCConstructors.h" #include "nsMacGurmukhiToUnicode.h" -#include "mozilla/Telemetry.h" using namespace mozilla; @@ -20,7 +19,6 @@ nsMacGurmukhiToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID, #include "macgurmukhi.ut" }; - Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_MACGURMUKHI, true); return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable, aOuter, aIID, aResult); } diff --git a/intl/uconv/ucvlatin/nsMacHebrewToUnicode.cpp b/intl/uconv/ucvlatin/nsMacHebrewToUnicode.cpp index f19d82c09..d7b1f2139 100644 --- a/intl/uconv/ucvlatin/nsMacHebrewToUnicode.cpp +++ b/intl/uconv/ucvlatin/nsMacHebrewToUnicode.cpp @@ -5,7 +5,6 @@ #include "nsUCConstructors.h" #include "nsMacHebrewToUnicode.h" -#include "mozilla/Telemetry.h" using namespace mozilla; @@ -20,7 +19,6 @@ nsMacHebrewToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID, #include "machebrew.ut" }; - Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_MACHEBREW, true); return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable, aOuter, aIID, aResult); } diff --git a/intl/uconv/ucvlatin/nsMacIcelandicToUnicode.cpp b/intl/uconv/ucvlatin/nsMacIcelandicToUnicode.cpp index 00cff7509..2b2a3b4d0 100644 --- a/intl/uconv/ucvlatin/nsMacIcelandicToUnicode.cpp +++ b/intl/uconv/ucvlatin/nsMacIcelandicToUnicode.cpp @@ -5,7 +5,6 @@ #include "nsUCConstructors.h" #include "nsMacIcelandicToUnicode.h" -#include "mozilla/Telemetry.h" using namespace mozilla; @@ -20,7 +19,6 @@ nsMacIcelandicToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID, #include "macicela.ut" }; - Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_MACICELANDIC, true); return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable, aOuter, aIID, aResult); } diff --git a/intl/uconv/ucvlatin/nsMacRomanianToUnicode.cpp b/intl/uconv/ucvlatin/nsMacRomanianToUnicode.cpp index 96c24dea3..955610e16 100644 --- a/intl/uconv/ucvlatin/nsMacRomanianToUnicode.cpp +++ b/intl/uconv/ucvlatin/nsMacRomanianToUnicode.cpp @@ -5,7 +5,6 @@ #include "nsUCConstructors.h" #include "nsMacRomanianToUnicode.h" -#include "mozilla/Telemetry.h" using namespace mozilla; @@ -20,7 +19,6 @@ nsMacRomanianToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID, #include "macro.ut" }; - Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_MACROMANIAN, true); return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable, aOuter, aIID, aResult); } diff --git a/intl/uconv/ucvlatin/nsMacTurkishToUnicode.cpp b/intl/uconv/ucvlatin/nsMacTurkishToUnicode.cpp index 86d2d1ae7..c30cf94d4 100644 --- a/intl/uconv/ucvlatin/nsMacTurkishToUnicode.cpp +++ b/intl/uconv/ucvlatin/nsMacTurkishToUnicode.cpp @@ -5,7 +5,6 @@ #include "nsUCConstructors.h" #include "nsMacTurkishToUnicode.h" -#include "mozilla/Telemetry.h" using namespace mozilla; @@ -20,7 +19,6 @@ nsMacTurkishToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID, #include "macturki.ut" }; - Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_MACTURKISH, true); return CreateOneByteDecoder((uMappingTable*) &g_MacTurkishMappingTable, aOuter, aIID, aResult); } diff --git a/ipc/chromium/src/base/process_util_win.cc b/ipc/chromium/src/base/process_util_win.cc index f22f7216f..fa9b86ace 100644 --- a/ipc/chromium/src/base/process_util_win.cc +++ b/ipc/chromium/src/base/process_util_win.cc @@ -298,6 +298,33 @@ bool LaunchApp(const std::wstring& cmdline, LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList = NULL; + // setup our handle array first - if we end up with no handles that can + // be inherited we can avoid trying to do the ThreadAttributeList dance... + HANDLE handlesToInherit[2]; + int handleCount = 0; + HANDLE stdOut = ::GetStdHandle(STD_OUTPUT_HANDLE); + HANDLE stdErr = ::GetStdHandle(STD_ERROR_HANDLE); + + if (IsInheritableHandle(stdOut)) + handlesToInherit[handleCount++] = stdOut; + if (stdErr != stdOut && IsInheritableHandle(stdErr)) + handlesToInherit[handleCount++] = stdErr; + + if (handleCount) { + lpAttributeList = CreateThreadAttributeList(handlesToInherit, handleCount); + if (lpAttributeList) { + // it's safe to inherit handles, so arrange for that... + startup_info.cb = sizeof(startup_info_ex); + startup_info.dwFlags |= STARTF_USESTDHANDLES; + startup_info.hStdOutput = stdOut; + startup_info.hStdError = stdErr; + startup_info.hStdInput = INVALID_HANDLE_VALUE; + startup_info_ex.lpAttributeList = lpAttributeList; + dwCreationFlags |= EXTENDED_STARTUPINFO_PRESENT; + bInheritHandles = TRUE; + } + } + PROCESS_INFORMATION process_info; BOOL createdOK = CreateProcess(NULL, const_cast<wchar_t*>(cmdline.c_str()), NULL, NULL, diff --git a/ipc/glue/BackgroundChildImpl.cpp b/ipc/glue/BackgroundChildImpl.cpp index b157048a4..a129069bc 100644 --- a/ipc/glue/BackgroundChildImpl.cpp +++ b/ipc/glue/BackgroundChildImpl.cpp @@ -312,6 +312,7 @@ BackgroundChildImpl::DeallocPCamerasChild(camera::PCamerasChild *aActor) RefPtr<camera::CamerasChild> child = dont_AddRef(static_cast<camera::CamerasChild*>(aActor)); MOZ_ASSERT(aActor); + camera::Shutdown(); #endif return true; } diff --git a/ipc/glue/GeckoChildProcessHost.cpp b/ipc/glue/GeckoChildProcessHost.cpp index e58408e0c..8147e87dc 100644 --- a/ipc/glue/GeckoChildProcessHost.cpp +++ b/ipc/glue/GeckoChildProcessHost.cpp @@ -32,7 +32,6 @@ #include "mozilla/ClearOnShutdown.h" #include "mozilla/ipc/BrowserProcessSubThread.h" #include "mozilla/Omnijar.h" -#include "mozilla/Telemetry.h" #include "ProtocolUtils.h" #include <sys/stat.h> @@ -534,8 +533,6 @@ GeckoChildProcessHost::RunPerformAsyncLaunch(std::vector<std::string> aExtraOpts lock.Notify(); CHROMIUM_LOG(ERROR) << "Failed to launch " << XRE_ChildProcessTypeToString(mProcessType) << " subprocess"; - Telemetry::Accumulate(Telemetry::SUBPROCESS_LAUNCH_FAILURE, - nsDependentCString(XRE_ChildProcessTypeToString(mProcessType))); } return ok; } diff --git a/ipc/glue/MessageChannel.cpp b/ipc/glue/MessageChannel.cpp index 7861f3e2d..a988fae53 100644 --- a/ipc/glue/MessageChannel.cpp +++ b/ipc/glue/MessageChannel.cpp @@ -760,11 +760,6 @@ MessageChannel::Echo(Message* aMsg) bool MessageChannel::Send(Message* aMsg) { - if (aMsg->size() >= kMinTelemetryMessageSize) { - Telemetry::Accumulate(Telemetry::IPC_MESSAGE_SIZE, - nsDependentCString(aMsg->name()), aMsg->size()); - } - MOZ_RELEASE_ASSERT(!aMsg->is_sync()); MOZ_RELEASE_ASSERT(aMsg->nested_level() != IPC::Message::NESTED_INSIDE_SYNC); @@ -1059,11 +1054,6 @@ MessageChannel::ProcessPendingRequests(AutoEnterTransaction& aTransaction) bool MessageChannel::Send(Message* aMsg, Message* aReply) { - if (aMsg->size() >= kMinTelemetryMessageSize) { - Telemetry::Accumulate(Telemetry::IPC_MESSAGE_SIZE, - nsDependentCString(aMsg->name()), aMsg->size()); - } - nsAutoPtr<Message> msg(aMsg); // Sanity checks. @@ -1249,10 +1239,6 @@ MessageChannel::Send(Message* aMsg, Message* aReply) MOZ_RELEASE_ASSERT(reply->is_sync()); *aReply = Move(*reply); - if (aReply->size() >= kMinTelemetryMessageSize) { - Telemetry::Accumulate(Telemetry::IPC_REPLY_SIZE, - nsDependentCString(msgName), aReply->size()); - } return true; } @@ -2546,7 +2532,6 @@ void CancelCPOWs() { if (gParentProcessBlocker) { - mozilla::Telemetry::Accumulate(mozilla::Telemetry::IPC_TRANSACTION_CANCEL, true); gParentProcessBlocker->CancelCurrentTransaction(); } } diff --git a/js/ipc/JavaScriptParent.cpp b/js/ipc/JavaScriptParent.cpp index ca0a0bd21..6cf9e0591 100644 --- a/js/ipc/JavaScriptParent.cpp +++ b/js/ipc/JavaScriptParent.cpp @@ -15,7 +15,6 @@ #include "js/HeapAPI.h" #include "xpcprivate.h" #include "mozilla/Casting.h" -#include "mozilla/Telemetry.h" #include "mozilla/Unused.h" #include "nsAutoPtr.h" @@ -110,7 +109,6 @@ JavaScriptParent::allowMessage(JSContext* cx) if (!xpc::CompartmentPrivate::Get(jsGlobal)->allowCPOWs) { if (!addonId && ForbidUnsafeBrowserCPOWs() && !isSafe) { - Telemetry::Accumulate(Telemetry::BROWSER_SHIM_USAGE_BLOCKED, 1); JS_ReportErrorASCII(cx, "unsafe CPOW usage forbidden"); return false; } @@ -120,7 +118,6 @@ JavaScriptParent::allowMessage(JSContext* cx) nsString addonIdString; AssignJSFlatString(addonIdString, flat); NS_ConvertUTF16toUTF8 addonIdCString(addonIdString); - Telemetry::Accumulate(Telemetry::ADDON_FORBIDDEN_CPOW_USAGE, addonIdCString); if (ForbidCPOWsInCompatibleAddon(addonIdCString)) { JS_ReportErrorASCII(cx, "CPOW usage forbidden in this add-on"); diff --git a/js/public/HashTable.h b/js/public/HashTable.h index 5d4c0665d..8a2493b55 100644 --- a/js/public/HashTable.h +++ b/js/public/HashTable.h @@ -12,6 +12,7 @@ #include "mozilla/Attributes.h" #include "mozilla/Casting.h" #include "mozilla/HashFunctions.h" +#include "mozilla/MemoryChecking.h" #include "mozilla/MemoryReporting.h" #include "mozilla/Move.h" #include "mozilla/Opaque.h" @@ -805,17 +806,22 @@ class HashTableEntry void operator=(const HashTableEntry&) = delete; ~HashTableEntry() = delete; + void destroyStoredT() { + mem.addr()->~T(); + MOZ_MAKE_MEM_UNDEFINED(mem.addr(), sizeof(*mem.addr())); + } + public: // NB: HashTableEntry is treated as a POD: no constructor or destructor calls. void destroyIfLive() { if (isLive()) - mem.addr()->~T(); + destroyStoredT(); } void destroy() { MOZ_ASSERT(isLive()); - mem.addr()->~T(); + destroyStoredT(); } void swap(HashTableEntry* other) { @@ -835,10 +841,28 @@ class HashTableEntry NonConstT& getMutable() { MOZ_ASSERT(isLive()); return *mem.addr(); } bool isFree() const { return keyHash == sFreeKey; } - void clearLive() { MOZ_ASSERT(isLive()); keyHash = sFreeKey; mem.addr()->~T(); } - void clear() { if (isLive()) mem.addr()->~T(); keyHash = sFreeKey; } + void clearLive() { + MOZ_ASSERT(isLive()); + keyHash = sFreeKey; + destroyStoredT(); + } + + void clear() { + if (isLive()) + destroyStoredT(); + + MOZ_MAKE_MEM_UNDEFINED(this, sizeof(*this)); + keyHash = sFreeKey; + } + bool isRemoved() const { return keyHash == sRemovedKey; } - void removeLive() { MOZ_ASSERT(isLive()); keyHash = sRemovedKey; mem.addr()->~T(); } + + void removeLive() { + MOZ_ASSERT(isLive()); + keyHash = sRemovedKey; + destroyStoredT(); + } + bool isLive() const { return isLiveHash(keyHash); } void setCollision() { MOZ_ASSERT(isLive()); keyHash |= sCollisionBit; } void unsetCollision() { keyHash &= ~sCollisionBit; } @@ -1654,14 +1678,10 @@ class HashTable : private AllocPolicy public: void clear() { - if (mozilla::IsPod<Entry>::value) { - memset(table, 0, sizeof(*table) * capacity()); - } else { - uint32_t tableCapacity = capacity(); - Entry* end = table + tableCapacity; - for (Entry* e = table; e < end; ++e) - e->clear(); - } + Entry* end = table + capacity(); + for (Entry* e = table; e < end; ++e) + e->clear(); + removedCount = 0; entryCount = 0; #ifdef JS_DEBUG diff --git a/js/public/MemoryMetrics.h b/js/public/MemoryMetrics.h index 9b5caa24b..dcc886217 100644 --- a/js/public/MemoryMetrics.h +++ b/js/public/MemoryMetrics.h @@ -11,7 +11,6 @@ // at your own risk. #include "mozilla/MemoryReporting.h" -#include "mozilla/PodOperations.h" #include "mozilla/TypeTraits.h" #include <string.h> @@ -37,7 +36,13 @@ struct TabSizes Other }; - TabSizes() { mozilla::PodZero(this); } + TabSizes() + : objects(0) + , strings(0) + , private_(0) + , other(0) + { + } void add(Kind kind, size_t n) { switch (kind) { @@ -68,7 +73,7 @@ struct ServoSizes Ignore }; - ServoSizes() { mozilla::PodZero(this); } + ServoSizes() = default; void add(Kind kind, size_t n) { switch (kind) { @@ -83,12 +88,12 @@ struct ServoSizes } } - size_t gcHeapUsed; - size_t gcHeapUnused; - size_t gcHeapAdmin; - size_t gcHeapDecommitted; - size_t mallocHeap; - size_t nonHeap; + size_t gcHeapUsed = 0; + size_t gcHeapUnused = 0; + size_t gcHeapAdmin = 0; + size_t gcHeapDecommitted = 0; + size_t mallocHeap = 0; + size_t nonHeap = 0; }; } // namespace JS diff --git a/js/public/Utility.h b/js/public/Utility.h index 68de3004a..99712faa8 100644 --- a/js/public/Utility.h +++ b/js/public/Utility.h @@ -391,7 +391,7 @@ js_delete_poison(const T* p) { if (p) { p->~T(); - memset(const_cast<T*>(p), 0x3B, sizeof(T)); + memset(static_cast<void*>(const_cast<T*>(p)), 0x3B, sizeof(T)); js_free(const_cast<T*>(p)); } } diff --git a/js/src/builtin/AtomicsObject.cpp b/js/src/builtin/AtomicsObject.cpp index 08777fd51..2551f3b7d 100644 --- a/js/src/builtin/AtomicsObject.cpp +++ b/js/src/builtin/AtomicsObject.cpp @@ -789,7 +789,7 @@ js::atomics_wait(JSContext* cx, unsigned argc, Value* vp) // and it provides the necessary memory fence. AutoLockFutexAPI lock; - SharedMem<int32_t*>(addr) = view->viewDataShared().cast<int32_t*>() + offset; + SharedMem<int32_t*> addr = view->viewDataShared().cast<int32_t*>() + offset; if (jit::AtomicOperations::loadSafeWhenRacy(addr) != value) { r.setString(cx->names().futexNotEqual); return true; diff --git a/js/src/ds/LifoAlloc.h b/js/src/ds/LifoAlloc.h index f349cd476..b4e9c3418 100644 --- a/js/src/ds/LifoAlloc.h +++ b/js/src/ds/LifoAlloc.h @@ -15,6 +15,8 @@ #include "mozilla/TemplateLib.h" #include "mozilla/TypeTraits.h" +#include <new> + // This data structure supports stacky LIFO allocation (mark/release and // LifoAllocScope). It does not maintain one contiguous segment; instead, it // maintains a bunch of linked memory segments. In order to prevent malloc/free @@ -285,6 +287,20 @@ class LifoAlloc return allocImpl(n); } + template<typename T, typename... Args> + MOZ_ALWAYS_INLINE T* + allocInSize(size_t n, Args&&... args) + { + MOZ_ASSERT(n >= sizeof(T), "must request enough space to store a T"); + static_assert(alignof(T) <= detail::LIFO_ALLOC_ALIGN, + "LifoAlloc must provide enough alignment to store T"); + void* ptr = alloc(n); + if (!ptr) + return nullptr; + + return new (ptr) T(mozilla::Forward<Args>(args)...); + } + MOZ_ALWAYS_INLINE void* allocInfallible(size_t n) { AutoEnterOOMUnsafeRegion oomUnsafe; diff --git a/js/src/frontend/BytecodeEmitter.cpp b/js/src/frontend/BytecodeEmitter.cpp index c7c615ccf..4eb7bf880 100644 --- a/js/src/frontend/BytecodeEmitter.cpp +++ b/js/src/frontend/BytecodeEmitter.cpp @@ -319,7 +319,7 @@ ScopeKindIsInBody(ScopeKind kind) static inline void MarkAllBindingsClosedOver(LexicalScope::Data& data) { - BindingName* names = data.names; + TrailingNamesArray& names = data.trailingNames; for (uint32_t i = 0; i < data.length; i++) names[i] = BindingName(names[i].name(), true); } @@ -8978,7 +8978,8 @@ BytecodeEmitter::isRestParameter(ParseNode* pn, bool* result) if (bindings->nonPositionalFormalStart > 0) { // |paramName| can be nullptr when the rest destructuring syntax is // used: `function f(...[]) {}`. - JSAtom* paramName = bindings->names[bindings->nonPositionalFormalStart - 1].name(); + JSAtom* paramName = + bindings->trailingNames[bindings->nonPositionalFormalStart - 1].name(); *result = paramName && name == paramName; return true; } diff --git a/js/src/frontend/ParseNode.cpp b/js/src/frontend/ParseNode.cpp index ece3a45df..91f17625c 100644 --- a/js/src/frontend/ParseNode.cpp +++ b/js/src/frontend/ParseNode.cpp @@ -838,7 +838,7 @@ LexicalScopeNode::dump(int indent) if (!isEmptyScope()) { LexicalScope::Data* bindings = scopeBindings(); for (uint32_t i = 0; i < bindings->length; i++) { - JSAtom* name = bindings->names[i].name(); + JSAtom* name = bindings->trailingNames[i].name(); JS::AutoCheckCannotGC nogc; if (name->hasLatin1Chars()) DumpName(name->latin1Chars(nogc), name->length()); diff --git a/js/src/frontend/Parser.cpp b/js/src/frontend/Parser.cpp index 623379f61..7bfab87a3 100644 --- a/js/src/frontend/Parser.cpp +++ b/js/src/frontend/Parser.cpp @@ -19,6 +19,8 @@ #include "frontend/Parser.h" +#include <new> + #include "jsapi.h" #include "jsatom.h" #include "jscntxt.h" @@ -1451,16 +1453,26 @@ template <typename Scope> static typename Scope::Data* NewEmptyBindingData(ExclusiveContext* cx, LifoAlloc& alloc, uint32_t numBindings) { + using Data = typename Scope::Data; size_t allocSize = Scope::sizeOfData(numBindings); - typename Scope::Data* bindings = static_cast<typename Scope::Data*>(alloc.alloc(allocSize)); - if (!bindings) { + auto* bindings = alloc.allocInSize<Data>(allocSize, numBindings); + if (!bindings) ReportOutOfMemory(cx); - return nullptr; - } - PodZero(bindings); return bindings; } +/** + * Copy-construct |BindingName|s from |bindings| into |cursor|, then return + * the location one past the newly-constructed |BindingName|s. + */ +static MOZ_MUST_USE BindingName* +FreshlyInitializeBindings(BindingName* cursor, const Vector<BindingName>& bindings) +{ + for (const BindingName& binding : bindings) + new (cursor++) BindingName(binding); + return cursor; +} + template <> Maybe<GlobalScope::Data*> Parser<FullParseHandler>::newGlobalScopeData(ParseContext::Scope& scope) @@ -1505,22 +1517,20 @@ Parser<FullParseHandler>::newGlobalScopeData(ParseContext::Scope& scope) return Nothing(); // The ordering here is important. See comments in GlobalScope. - BindingName* start = bindings->names; + BindingName* start = bindings->trailingNames.start(); BindingName* cursor = start; - PodCopy(cursor, funs.begin(), funs.length()); - cursor += funs.length(); + cursor = FreshlyInitializeBindings(cursor, funs); bindings->varStart = cursor - start; - PodCopy(cursor, vars.begin(), vars.length()); - cursor += vars.length(); + cursor = FreshlyInitializeBindings(cursor, vars); bindings->letStart = cursor - start; - PodCopy(cursor, lets.begin(), lets.length()); - cursor += lets.length(); + cursor = FreshlyInitializeBindings(cursor, lets); bindings->constStart = cursor - start; - PodCopy(cursor, consts.begin(), consts.length()); + cursor = FreshlyInitializeBindings(cursor, consts); + bindings->length = numBindings; } @@ -1572,22 +1582,20 @@ Parser<FullParseHandler>::newModuleScopeData(ParseContext::Scope& scope) return Nothing(); // The ordering here is important. See comments in ModuleScope. - BindingName* start = bindings->names; + BindingName* start = bindings->trailingNames.start(); BindingName* cursor = start; - PodCopy(cursor, imports.begin(), imports.length()); - cursor += imports.length(); + cursor = FreshlyInitializeBindings(cursor, imports); bindings->varStart = cursor - start; - PodCopy(cursor, vars.begin(), vars.length()); - cursor += vars.length(); + cursor = FreshlyInitializeBindings(cursor, vars); bindings->letStart = cursor - start; - PodCopy(cursor, lets.begin(), lets.length()); - cursor += lets.length(); + cursor = FreshlyInitializeBindings(cursor, lets); bindings->constStart = cursor - start; - PodCopy(cursor, consts.begin(), consts.length()); + cursor = FreshlyInitializeBindings(cursor, consts); + bindings->length = numBindings; } @@ -1623,16 +1631,16 @@ Parser<FullParseHandler>::newEvalScopeData(ParseContext::Scope& scope) if (!bindings) return Nothing(); - BindingName* start = bindings->names; + BindingName* start = bindings->trailingNames.start(); BindingName* cursor = start; // Keep track of what vars are functions. This is only used in BCE to omit // superfluous DEFVARs. - PodCopy(cursor, funs.begin(), funs.length()); - cursor += funs.length(); + cursor = FreshlyInitializeBindings(cursor, funs); bindings->varStart = cursor - start; - PodCopy(cursor, vars.begin(), vars.length()); + cursor = FreshlyInitializeBindings(cursor, vars); + bindings->length = numBindings; } @@ -1719,18 +1727,17 @@ Parser<FullParseHandler>::newFunctionScopeData(ParseContext::Scope& scope, bool return Nothing(); // The ordering here is important. See comments in FunctionScope. - BindingName* start = bindings->names; + BindingName* start = bindings->trailingNames.start(); BindingName* cursor = start; - PodCopy(cursor, positionalFormals.begin(), positionalFormals.length()); - cursor += positionalFormals.length(); + cursor = FreshlyInitializeBindings(cursor, positionalFormals); bindings->nonPositionalFormalStart = cursor - start; - PodCopy(cursor, formals.begin(), formals.length()); - cursor += formals.length(); + cursor = FreshlyInitializeBindings(cursor, formals); bindings->varStart = cursor - start; - PodCopy(cursor, vars.begin(), vars.length()); + cursor = FreshlyInitializeBindings(cursor, vars); + bindings->length = numBindings; } @@ -1760,10 +1767,11 @@ Parser<FullParseHandler>::newVarScopeData(ParseContext::Scope& scope) return Nothing(); // The ordering here is important. See comments in FunctionScope. - BindingName* start = bindings->names; + BindingName* start = bindings->trailingNames.start(); BindingName* cursor = start; - PodCopy(cursor, vars.begin(), vars.length()); + cursor = FreshlyInitializeBindings(cursor, vars); + bindings->length = numBindings; } @@ -1808,14 +1816,14 @@ Parser<FullParseHandler>::newLexicalScopeData(ParseContext::Scope& scope) return Nothing(); // The ordering here is important. See comments in LexicalScope. - BindingName* cursor = bindings->names; + BindingName* cursor = bindings->trailingNames.start(); BindingName* start = cursor; - PodCopy(cursor, lets.begin(), lets.length()); - cursor += lets.length(); + cursor = FreshlyInitializeBindings(cursor, lets); bindings->constStart = cursor - start; - PodCopy(cursor, consts.begin(), consts.length()); + cursor = FreshlyInitializeBindings(cursor, consts); + bindings->length = numBindings; } diff --git a/js/src/gc/Barrier.h b/js/src/gc/Barrier.h index effc9233e..dce3b2a20 100644 --- a/js/src/gc/Barrier.h +++ b/js/src/gc/Barrier.h @@ -667,29 +667,15 @@ class HeapSlot : public WriteBarrieredBase<Value> Element = 1 }; - explicit HeapSlot() = delete; - - explicit HeapSlot(NativeObject* obj, Kind kind, uint32_t slot, const Value& v) - : WriteBarrieredBase<Value>(v) - { - post(obj, kind, slot, v); - } - - explicit HeapSlot(NativeObject* obj, Kind kind, uint32_t slot, const HeapSlot& s) - : WriteBarrieredBase<Value>(s.value) - { - post(obj, kind, slot, s); - } - - ~HeapSlot() { - pre(); - } - void init(NativeObject* owner, Kind kind, uint32_t slot, const Value& v) { value = v; post(owner, kind, slot, v); } + void destroy() { + pre(); + } + #ifdef DEBUG bool preconditionForSet(NativeObject* owner, Kind kind, uint32_t slot) const; bool preconditionForWriteBarrierPost(NativeObject* obj, Kind kind, uint32_t slot, @@ -703,11 +689,6 @@ class HeapSlot : public WriteBarrieredBase<Value> post(owner, kind, slot, v); } - /* For users who need to manually barrier the raw types. */ - static void writeBarrierPost(NativeObject* owner, Kind kind, uint32_t slot, const Value& target) { - reinterpret_cast<HeapSlot*>(const_cast<Value*>(&target))->post(owner, kind, slot, target); - } - private: void post(NativeObject* owner, Kind kind, uint32_t slot, const Value& target) { MOZ_ASSERT(preconditionForWriteBarrierPost(owner, kind, slot, target)); diff --git a/js/src/gc/GCInternals.h b/js/src/gc/GCInternals.h index 4919b87a5..e8df0bb70 100644 --- a/js/src/gc/GCInternals.h +++ b/js/src/gc/GCInternals.h @@ -9,7 +9,6 @@ #include "mozilla/ArrayUtils.h" #include "mozilla/Maybe.h" -#include "mozilla/PodOperations.h" #include "jscntxt.h" @@ -102,9 +101,9 @@ struct TenureCountCache static const size_t EntryShift = 4; static const size_t EntryCount = 1 << EntryShift; - TenureCount entries[EntryCount]; + TenureCount entries[EntryCount] = {}; // zeroes - TenureCountCache() { mozilla::PodZero(this); } + TenureCountCache() = default; HashNumber hash(ObjectGroup* group) { #if JS_BITS_PER_WORD == 32 diff --git a/js/src/gc/Marking.cpp b/js/src/gc/Marking.cpp index b2c105999..3ea4c9d29 100644 --- a/js/src/gc/Marking.cpp +++ b/js/src/gc/Marking.cpp @@ -1231,34 +1231,34 @@ BindingIter::trace(JSTracer* trc) void LexicalScope::Data::trace(JSTracer* trc) { - TraceBindingNames(trc, names, length); + TraceBindingNames(trc, trailingNames.start(), length); } void FunctionScope::Data::trace(JSTracer* trc) { TraceNullableEdge(trc, &canonicalFunction, "scope canonical function"); - TraceNullableBindingNames(trc, names, length); + TraceNullableBindingNames(trc, trailingNames.start(), length); } void VarScope::Data::trace(JSTracer* trc) { - TraceBindingNames(trc, names, length); + TraceBindingNames(trc, trailingNames.start(), length); } void GlobalScope::Data::trace(JSTracer* trc) { - TraceBindingNames(trc, names, length); + TraceBindingNames(trc, trailingNames.start(), length); } void EvalScope::Data::trace(JSTracer* trc) { - TraceBindingNames(trc, names, length); + TraceBindingNames(trc, trailingNames.start(), length); } void ModuleScope::Data::trace(JSTracer* trc) { TraceNullableEdge(trc, &module, "scope module"); - TraceBindingNames(trc, names, length); + TraceBindingNames(trc, trailingNames.start(), length); } void Scope::traceChildren(JSTracer* trc) @@ -1302,13 +1302,13 @@ js::GCMarker::eagerlyMarkChildren(Scope* scope) traverseEdge(scope, static_cast<Scope*>(scope->enclosing_)); if (scope->environmentShape_) traverseEdge(scope, static_cast<Shape*>(scope->environmentShape_)); - BindingName* names = nullptr; + TrailingNamesArray* names = nullptr; uint32_t length = 0; switch (scope->kind_) { case ScopeKind::Function: { FunctionScope::Data* data = reinterpret_cast<FunctionScope::Data*>(scope->data_); traverseEdge(scope, static_cast<JSObject*>(data->canonicalFunction)); - names = data->names; + names = &data->trailingNames; length = data->length; break; } @@ -1316,7 +1316,7 @@ js::GCMarker::eagerlyMarkChildren(Scope* scope) case ScopeKind::FunctionBodyVar: case ScopeKind::ParameterExpressionVar: { VarScope::Data* data = reinterpret_cast<VarScope::Data*>(scope->data_); - names = data->names; + names = &data->trailingNames; length = data->length; break; } @@ -1327,7 +1327,7 @@ js::GCMarker::eagerlyMarkChildren(Scope* scope) case ScopeKind::NamedLambda: case ScopeKind::StrictNamedLambda: { LexicalScope::Data* data = reinterpret_cast<LexicalScope::Data*>(scope->data_); - names = data->names; + names = &data->trailingNames; length = data->length; break; } @@ -1335,7 +1335,7 @@ js::GCMarker::eagerlyMarkChildren(Scope* scope) case ScopeKind::Global: case ScopeKind::NonSyntactic: { GlobalScope::Data* data = reinterpret_cast<GlobalScope::Data*>(scope->data_); - names = data->names; + names = &data->trailingNames; length = data->length; break; } @@ -1343,7 +1343,7 @@ js::GCMarker::eagerlyMarkChildren(Scope* scope) case ScopeKind::Eval: case ScopeKind::StrictEval: { EvalScope::Data* data = reinterpret_cast<EvalScope::Data*>(scope->data_); - names = data->names; + names = &data->trailingNames; length = data->length; break; } @@ -1351,7 +1351,7 @@ js::GCMarker::eagerlyMarkChildren(Scope* scope) case ScopeKind::Module: { ModuleScope::Data* data = reinterpret_cast<ModuleScope::Data*>(scope->data_); traverseEdge(scope, static_cast<JSObject*>(data->module)); - names = data->names; + names = &data->trailingNames; length = data->length; break; } @@ -1361,12 +1361,12 @@ js::GCMarker::eagerlyMarkChildren(Scope* scope) } if (scope->kind_ == ScopeKind::Function) { for (uint32_t i = 0; i < length; i++) { - if (JSAtom* name = names[i].name()) + if (JSAtom* name = names->operator[](i).name()) traverseEdge(scope, static_cast<JSString*>(name)); } } else { for (uint32_t i = 0; i < length; i++) - traverseEdge(scope, static_cast<JSString*>(names[i].name())); + traverseEdge(scope, static_cast<JSString*>(names->operator[](i).name())); } } diff --git a/js/src/gc/Statistics.h b/js/src/gc/Statistics.h index ca1969b2c..08a2810cf 100644 --- a/js/src/gc/Statistics.h +++ b/js/src/gc/Statistics.h @@ -10,7 +10,6 @@ #include "mozilla/EnumeratedArray.h" #include "mozilla/IntegerRange.h" #include "mozilla/Maybe.h" -#include "mozilla/PodOperations.h" #include "jsalloc.h" #include "jsgc.h" @@ -112,29 +111,26 @@ enum Stat { struct ZoneGCStats { /* Number of zones collected in this GC. */ - int collectedZoneCount; + int collectedZoneCount = 0; /* Total number of zones in the Runtime at the start of this GC. */ - int zoneCount; + int zoneCount = 0; /* Number of zones swept in this GC. */ - int sweptZoneCount; + int sweptZoneCount = 0; /* Total number of compartments in all zones collected. */ - int collectedCompartmentCount; + int collectedCompartmentCount = 0; /* Total number of compartments in the Runtime at the start of this GC. */ - int compartmentCount; + int compartmentCount = 0; /* Total number of compartments swept by this GC. */ - int sweptCompartmentCount; + int sweptCompartmentCount = 0; bool isCollectingAllZones() const { return collectedZoneCount == zoneCount; } - ZoneGCStats() - : collectedZoneCount(0), zoneCount(0), sweptZoneCount(0), - collectedCompartmentCount(0), compartmentCount(0), sweptCompartmentCount(0) - {} + ZoneGCStats() = default; }; #define FOR_EACH_GC_PROFILE_TIME(_) \ diff --git a/js/src/jit/BacktrackingAllocator.cpp b/js/src/jit/BacktrackingAllocator.cpp index 94ef25785..73aceeccb 100644 --- a/js/src/jit/BacktrackingAllocator.cpp +++ b/js/src/jit/BacktrackingAllocator.cpp @@ -378,7 +378,6 @@ BacktrackingAllocator::init() size_t numVregs = graph.numVirtualRegisters(); if (!vregs.init(mir->alloc(), numVregs)) return false; - memset(&vregs[0], 0, sizeof(VirtualRegister) * numVregs); for (uint32_t i = 0; i < numVregs; i++) new(&vregs[i]) VirtualRegister(); @@ -1101,9 +1100,9 @@ BacktrackingAllocator::mergeAndQueueRegisters() if (iter->isParameter()) { for (size_t i = 0; i < iter->numDefs(); i++) { DebugOnly<bool> found = false; - VirtualRegister ¶mVreg = vreg(iter->getDef(i)); + VirtualRegister& paramVreg = vreg(iter->getDef(i)); for (; original < paramVreg.vreg(); original++) { - VirtualRegister &originalVreg = vregs[original]; + VirtualRegister& originalVreg = vregs[original]; if (*originalVreg.def()->output() == *iter->getDef(i)->output()) { MOZ_ASSERT(originalVreg.ins()->isParameter()); if (!tryMergeBundles(originalVreg.firstBundle(), paramVreg.firstBundle())) @@ -1136,7 +1135,7 @@ BacktrackingAllocator::mergeAndQueueRegisters() LBlock* block = graph.getBlock(i); for (size_t j = 0; j < block->numPhis(); j++) { LPhi* phi = block->getPhi(j); - VirtualRegister &outputVreg = vreg(phi->getDef(0)); + VirtualRegister& outputVreg = vreg(phi->getDef(0)); for (size_t k = 0, kend = phi->numOperands(); k < kend; k++) { VirtualRegister& inputVreg = vreg(phi->getOperand(k)->toUse()); if (!tryMergeBundles(inputVreg.firstBundle(), outputVreg.firstBundle())) @@ -1334,7 +1333,7 @@ BacktrackingAllocator::computeRequirement(LiveBundle* bundle, for (LiveRange::BundleLinkIterator iter = bundle->rangesBegin(); iter; iter++) { LiveRange* range = LiveRange::get(*iter); - VirtualRegister ® = vregs[range->vreg()]; + VirtualRegister& reg = vregs[range->vreg()]; if (range->hasDefinition()) { // Deal with any definition constraints/hints. @@ -1396,7 +1395,7 @@ BacktrackingAllocator::tryAllocateRegister(PhysicalRegister& r, LiveBundle* bund for (LiveRange::BundleLinkIterator iter = bundle->rangesBegin(); iter; iter++) { LiveRange* range = LiveRange::get(*iter); - VirtualRegister ® = vregs[range->vreg()]; + VirtualRegister& reg = vregs[range->vreg()]; if (!reg.isCompatible(r.reg)) return true; diff --git a/js/src/jit/BacktrackingAllocator.h b/js/src/jit/BacktrackingAllocator.h index 6d14ffacd..9910498fb 100644 --- a/js/src/jit/BacktrackingAllocator.h +++ b/js/src/jit/BacktrackingAllocator.h @@ -478,34 +478,31 @@ class LiveBundle : public TempObject class VirtualRegister { // Instruction which defines this register. - LNode* ins_; + LNode* ins_ = nullptr; // Definition in the instruction for this register. - LDefinition* def_; + LDefinition* def_ = nullptr; // All live ranges for this register. These may overlap each other, and are // ordered by their start position. InlineForwardList<LiveRange::RegisterLink> ranges_; // Whether def_ is a temp or an output. - bool isTemp_; + bool isTemp_ = false; // Whether this vreg is an input for some phi. This use is not reflected in // any range on the vreg. - bool usedByPhi_; + bool usedByPhi_ = false; // If this register's definition is MUST_REUSE_INPUT, whether a copy must // be introduced before the definition that relaxes the policy. - bool mustCopyInput_; + bool mustCopyInput_ = false; void operator=(const VirtualRegister&) = delete; VirtualRegister(const VirtualRegister&) = delete; public: - explicit VirtualRegister() - { - // Note: This class is zeroed before it is constructed. - } + VirtualRegister() = default; void init(LNode* ins, LDefinition* def, bool isTemp) { MOZ_ASSERT(!ins_); diff --git a/js/src/jit/IonCode.h b/js/src/jit/IonCode.h index c581aa62e..55c3d4dad 100644 --- a/js/src/jit/IonCode.h +++ b/js/src/jit/IonCode.h @@ -9,7 +9,6 @@ #include "mozilla/Atomics.h" #include "mozilla/MemoryReporting.h" -#include "mozilla/PodOperations.h" #include "jstypes.h" @@ -692,17 +691,15 @@ struct IonScriptCounts { private: // Any previous invalidated compilation(s) for the script. - IonScriptCounts* previous_; + IonScriptCounts* previous_ = nullptr; // Information about basic blocks in this script. - size_t numBlocks_; - IonBlockCounts* blocks_; + size_t numBlocks_ = 0; + IonBlockCounts* blocks_ = nullptr; public: - IonScriptCounts() { - mozilla::PodZero(this); - } + IonScriptCounts() = default; ~IonScriptCounts() { for (size_t i = 0; i < numBlocks_; i++) diff --git a/js/src/jit/shared/Assembler-shared.h b/js/src/jit/shared/Assembler-shared.h index aac9687b8..8044e75cb 100644 --- a/js/src/jit/shared/Assembler-shared.h +++ b/js/src/jit/shared/Assembler-shared.h @@ -7,8 +7,6 @@ #ifndef jit_shared_Assembler_shared_h #define jit_shared_Assembler_shared_h -#include "mozilla/PodOperations.h" - #include <limits.h> #include "jit/AtomicOp.h" @@ -491,10 +489,10 @@ class CodeLabel class CodeOffsetJump { - size_t offset_; + size_t offset_ = 0; #ifdef JS_SMALL_BRANCH - size_t jumpTableIndex_; + size_t jumpTableIndex_ = 0; #endif public: @@ -510,9 +508,7 @@ class CodeOffsetJump explicit CodeOffsetJump(size_t offset) : offset_(offset) {} #endif - CodeOffsetJump() { - mozilla::PodZero(this); - } + CodeOffsetJump() = default; size_t offset() const { return offset_; diff --git a/js/src/jit/x86-shared/AssemblerBuffer-x86-shared.h b/js/src/jit/x86-shared/AssemblerBuffer-x86-shared.h index 8cb557784..8343579c8 100644 --- a/js/src/jit/x86-shared/AssemblerBuffer-x86-shared.h +++ b/js/src/jit/x86-shared/AssemblerBuffer-x86-shared.h @@ -93,7 +93,8 @@ namespace jit { void ensureSpace(size_t space) { - if (MOZ_UNLIKELY(!m_buffer.reserve(m_buffer.length() + space))) + if (MOZ_UNLIKELY(m_buffer.length() > (SIZE_MAX - space) || + !m_buffer.reserve(m_buffer.length() + space))) oomDetected(); } diff --git a/js/src/vm/Caches.h b/js/src/vm/Caches.h index 91a78bdc8..b11dd9dcb 100644 --- a/js/src/vm/Caches.h +++ b/js/src/vm/Caches.h @@ -7,6 +7,8 @@ #ifndef vm_Caches_h #define vm_Caches_h +#include <new> + #include "jsatom.h" #include "jsbytecode.h" #include "jsobj.h" @@ -191,14 +193,20 @@ class NewObjectCache char templateObject[MAX_OBJ_SIZE]; }; - Entry entries[41]; // TODO: reconsider size + using EntryArray = Entry[41]; // TODO: reconsider size; + EntryArray entries; public: - typedef int EntryIndex; + using EntryIndex = int; + + NewObjectCache() + : entries{} // zeroes out the array + {} - NewObjectCache() { mozilla::PodZero(this); } - void purge() { mozilla::PodZero(this); } + void purge() { + new (&entries) EntryArray{}; // zeroes out the array + } /* Remove any cached items keyed on moved objects. */ void clearNurseryObjects(JSRuntime* rt); diff --git a/js/src/vm/NativeObject.h b/js/src/vm/NativeObject.h index d2c06eabc..4dbc167ab 100644 --- a/js/src/vm/NativeObject.h +++ b/js/src/vm/NativeObject.h @@ -876,7 +876,7 @@ class NativeObject : public ShapedObject MOZ_ASSERT(end <= getDenseInitializedLength()); MOZ_ASSERT(!denseElementsAreCopyOnWrite()); for (size_t i = start; i < end; i++) - elements_[i].HeapSlot::~HeapSlot(); + elements_[i].destroy(); } /* @@ -885,7 +885,7 @@ class NativeObject : public ShapedObject */ void prepareSlotRangeForOverwrite(size_t start, size_t end) { for (size_t i = start; i < end; i++) - getSlotAddressUnchecked(i)->HeapSlot::~HeapSlot(); + getSlotAddressUnchecked(i)->destroy(); } public: @@ -1085,7 +1085,8 @@ class NativeObject : public ShapedObject for (uint32_t i = 0; i < count; ++i) elements_[dstStart + i].set(this, HeapSlot::Element, dstStart + i, src[i]); } else { - memcpy(&elements_[dstStart], src, count * sizeof(HeapSlot)); + memcpy(reinterpret_cast<Value*>(&elements_[dstStart]), src, + count * sizeof(Value)); elementsRangeWriteBarrierPost(dstStart, count); } } @@ -1094,7 +1095,7 @@ class NativeObject : public ShapedObject MOZ_ASSERT(dstStart + count <= getDenseCapacity()); MOZ_ASSERT(!denseElementsAreCopyOnWrite()); MOZ_ASSERT(!denseElementsAreFrozen()); - memcpy(&elements_[dstStart], src, count * sizeof(HeapSlot)); + memcpy(reinterpret_cast<Value*>(&elements_[dstStart]), src, count * sizeof(Value)); elementsRangeWriteBarrierPost(dstStart, count); } @@ -1142,7 +1143,7 @@ class NativeObject : public ShapedObject MOZ_ASSERT(!denseElementsAreCopyOnWrite()); MOZ_ASSERT(!denseElementsAreFrozen()); - memmove(elements_ + dstStart, elements_ + srcStart, count * sizeof(Value)); + memmove(elements_ + dstStart, elements_ + srcStart, count * sizeof(HeapSlot)); elementsRangeWriteBarrierPost(dstStart, count); } diff --git a/js/src/vm/Runtime.h b/js/src/vm/Runtime.h index 735adadf2..f354d2069 100644 --- a/js/src/vm/Runtime.h +++ b/js/src/vm/Runtime.h @@ -11,11 +11,11 @@ #include "mozilla/Attributes.h" #include "mozilla/LinkedList.h" #include "mozilla/MemoryReporting.h" -#include "mozilla/PodOperations.h" #include "mozilla/Scoped.h" #include "mozilla/ThreadLocal.h" #include "mozilla/Vector.h" +#include <algorithm> #include <setjmp.h> #include "jsatom.h" @@ -1504,20 +1504,21 @@ PerThreadData::exclusiveThreadsPresent() static MOZ_ALWAYS_INLINE void MakeRangeGCSafe(Value* vec, size_t len) { - mozilla::PodZero(vec, len); + // Don't PodZero here because JS::Value is non-trivial. + for (size_t i = 0; i < len; i++) + vec[i].setDouble(+0.0); } static MOZ_ALWAYS_INLINE void MakeRangeGCSafe(Value* beg, Value* end) { - mozilla::PodZero(beg, end - beg); + MakeRangeGCSafe(beg, end - beg); } static MOZ_ALWAYS_INLINE void MakeRangeGCSafe(jsid* beg, jsid* end) { - for (jsid* id = beg; id != end; ++id) - *id = INT_TO_JSID(0); + std::fill(beg, end, INT_TO_JSID(0)); } static MOZ_ALWAYS_INLINE void @@ -1529,13 +1530,13 @@ MakeRangeGCSafe(jsid* vec, size_t len) static MOZ_ALWAYS_INLINE void MakeRangeGCSafe(Shape** beg, Shape** end) { - mozilla::PodZero(beg, end - beg); + std::fill(beg, end, nullptr); } static MOZ_ALWAYS_INLINE void MakeRangeGCSafe(Shape** vec, size_t len) { - mozilla::PodZero(vec, len); + MakeRangeGCSafe(vec, vec + len); } static MOZ_ALWAYS_INLINE void diff --git a/js/src/vm/Scope.cpp b/js/src/vm/Scope.cpp index 112b34586..a71c03695 100644 --- a/js/src/vm/Scope.cpp +++ b/js/src/vm/Scope.cpp @@ -191,12 +191,12 @@ template <typename ConcreteScope> static UniquePtr<typename ConcreteScope::Data> NewEmptyScopeData(ExclusiveContext* cx, uint32_t length = 0) { - uint8_t* bytes = cx->zone()->pod_calloc<uint8_t>(ConcreteScope::sizeOfData(length)); + uint8_t* bytes = cx->zone()->pod_malloc<uint8_t>(ConcreteScope::sizeOfData(length)); if (!bytes) ReportOutOfMemory(cx); auto data = reinterpret_cast<typename ConcreteScope::Data*>(bytes); if (data) - new (data) typename ConcreteScope::Data(); + new (data) typename ConcreteScope::Data(length); return UniquePtr<typename ConcreteScope::Data>(data); } @@ -273,7 +273,7 @@ Scope::XDRSizedBindingNames(XDRState<mode>* xdr, Handle<ConcreteScope*> scope, } for (uint32_t i = 0; i < length; i++) { - if (!XDRBindingName(xdr, &data->names[i])) { + if (!XDRBindingName(xdr, &data->trailingNames[i])) { if (mode == XDR_DECODE) { DeleteScopeData(data.get()); data.set(nullptr); @@ -1250,7 +1250,7 @@ BindingIter::init(LexicalScope::Data& data, uint32_t firstFrameSlot, uint8_t fla init(0, 0, 0, 0, 0, 0, CanHaveEnvironmentSlots | flags, firstFrameSlot, JSSLOT_FREE(&LexicalEnvironmentObject::class_), - data.names, data.length); + data.trailingNames.start(), data.length); } else { // imports - [0, 0) // positional formals - [0, 0) @@ -1262,7 +1262,7 @@ BindingIter::init(LexicalScope::Data& data, uint32_t firstFrameSlot, uint8_t fla init(0, 0, 0, 0, 0, data.constStart, CanHaveFrameSlots | CanHaveEnvironmentSlots | flags, firstFrameSlot, JSSLOT_FREE(&LexicalEnvironmentObject::class_), - data.names, data.length); + data.trailingNames.start(), data.length); } } @@ -1283,7 +1283,7 @@ BindingIter::init(FunctionScope::Data& data, uint8_t flags) init(0, data.nonPositionalFormalStart, data.varStart, data.varStart, data.length, data.length, flags, 0, JSSLOT_FREE(&CallObject::class_), - data.names, data.length); + data.trailingNames.start(), data.length); } void @@ -1299,7 +1299,7 @@ BindingIter::init(VarScope::Data& data, uint32_t firstFrameSlot) init(0, 0, 0, 0, data.length, data.length, CanHaveFrameSlots | CanHaveEnvironmentSlots, firstFrameSlot, JSSLOT_FREE(&VarEnvironmentObject::class_), - data.names, data.length); + data.trailingNames.start(), data.length); } void @@ -1315,7 +1315,7 @@ BindingIter::init(GlobalScope::Data& data) init(0, 0, 0, data.varStart, data.letStart, data.constStart, CannotHaveSlots, UINT32_MAX, UINT32_MAX, - data.names, data.length); + data.trailingNames.start(), data.length); } void @@ -1343,7 +1343,7 @@ BindingIter::init(EvalScope::Data& data, bool strict) // consts - [data.length, data.length) init(0, 0, 0, data.varStart, data.length, data.length, flags, firstFrameSlot, firstEnvironmentSlot, - data.names, data.length); + data.trailingNames.start(), data.length); } void @@ -1359,7 +1359,7 @@ BindingIter::init(ModuleScope::Data& data) init(data.varStart, data.varStart, data.varStart, data.varStart, data.letStart, data.constStart, CanHaveFrameSlots | CanHaveEnvironmentSlots, 0, JSSLOT_FREE(&ModuleEnvironmentObject::class_), - data.names, data.length); + data.trailingNames.start(), data.length); } PositionalFormalParameterIter::PositionalFormalParameterIter(JSScript* script) diff --git a/js/src/vm/Scope.h b/js/src/vm/Scope.h index 5304d6713..1d04fd9f6 100644 --- a/js/src/vm/Scope.h +++ b/js/src/vm/Scope.h @@ -12,6 +12,7 @@ #include "jsobj.h" #include "jsopcode.h" +#include "jsutil.h" #include "gc/Heap.h" #include "gc/Policy.h" @@ -111,6 +112,47 @@ class BindingName void trace(JSTracer* trc); }; +/** + * The various {Global,Module,...}Scope::Data classes consist of always-present + * bits, then a trailing array of BindingNames. The various Data classes all + * end in a TrailingNamesArray that contains sized/aligned space for *one* + * BindingName. Data instances that contain N BindingNames, are then allocated + * in sizeof(Data) + (space for (N - 1) BindingNames). Because this class's + * |data_| field is properly sized/aligned, the N-BindingName array can start + * at |data_|. + * + * This is concededly a very low-level representation, but we want to only + * allocate once for data+bindings both, and this does so approximately as + * elegantly as C++ allows. + */ +class TrailingNamesArray +{ + private: + alignas(BindingName) unsigned char data_[sizeof(BindingName)]; + + private: + // Some versions of GCC treat it as a -Wstrict-aliasing violation (ergo a + // -Werror compile error) to reinterpret_cast<> |data_| to |T*|, even + // through |void*|. Placing the latter cast in these separate functions + // breaks the chain such that affected GCC versions no longer warn/error. + void* ptr() { + return data_; + } + + public: + // Explicitly ensure no one accidentally allocates scope data without + // poisoning its trailing names. + TrailingNamesArray() = delete; + + explicit TrailingNamesArray(size_t nameCount) { + if (nameCount) + JS_POISON(&data_, 0xCC, sizeof(BindingName) * nameCount); + } + BindingName* start() { return reinterpret_cast<BindingName*>(ptr()); } + + BindingName& operator[](size_t i) { return start()[i]; } +}; + class BindingLocation { public: @@ -337,16 +379,19 @@ class LexicalScope : public Scope // // lets - [0, constStart) // consts - [constStart, length) - uint32_t constStart; - uint32_t length; + uint32_t constStart = 0; + uint32_t length = 0; // Frame slots [0, nextFrameSlot) are live when this is the innermost // scope. - uint32_t nextFrameSlot; + uint32_t nextFrameSlot = 0; // The array of tagged JSAtom* names, allocated beyond the end of the // struct. - BindingName names[1]; + TrailingNamesArray trailingNames; + + explicit Data(size_t nameCount) : trailingNames(nameCount) {} + Data() = delete; void trace(JSTracer* trc); }; @@ -433,11 +478,11 @@ class FunctionScope : public Scope // The canonical function of the scope, as during a scope walk we // often query properties of the JSFunction (e.g., is the function an // arrow). - GCPtrFunction canonicalFunction; + GCPtrFunction canonicalFunction = {}; // If parameter expressions are present, parameters act like lexical // bindings. - bool hasParameterExprs; + bool hasParameterExprs = false; // Bindings are sorted by kind in both frames and environments. // @@ -452,17 +497,20 @@ class FunctionScope : public Scope // positional formals - [0, nonPositionalFormalStart) // other formals - [nonPositionalParamStart, varStart) // vars - [varStart, length) - uint16_t nonPositionalFormalStart; - uint16_t varStart; - uint32_t length; + uint16_t nonPositionalFormalStart = 0; + uint16_t varStart = 0; + uint32_t length = 0; // Frame slots [0, nextFrameSlot) are live when this is the innermost // scope. - uint32_t nextFrameSlot; + uint32_t nextFrameSlot = 0; // The array of tagged JSAtom* names, allocated beyond the end of the // struct. - BindingName names[1]; + TrailingNamesArray trailingNames; + + explicit Data(size_t nameCount) : trailingNames(nameCount) {} + Data() = delete; void trace(JSTracer* trc); }; @@ -548,15 +596,18 @@ class VarScope : public Scope struct Data { // All bindings are vars. - uint32_t length; + uint32_t length = 0; // Frame slots [firstFrameSlot(), nextFrameSlot) are live when this is // the innermost scope. - uint32_t nextFrameSlot; + uint32_t nextFrameSlot = 0; // The array of tagged JSAtom* names, allocated beyond the end of the // struct. - BindingName names[1]; + TrailingNamesArray trailingNames; + + explicit Data(size_t nameCount) : trailingNames(nameCount) {} + Data() = delete; void trace(JSTracer* trc); }; @@ -638,14 +689,17 @@ class GlobalScope : public Scope // vars - [varStart, letStart) // lets - [letStart, constStart) // consts - [constStart, length) - uint32_t varStart; - uint32_t letStart; - uint32_t constStart; - uint32_t length; + uint32_t varStart = 0; + uint32_t letStart = 0; + uint32_t constStart = 0; + uint32_t length = 0; // The array of tagged JSAtom* names, allocated beyond the end of the // struct. - BindingName names[1]; + TrailingNamesArray trailingNames; + + explicit Data(size_t nameCount) : trailingNames(nameCount) {} + Data() = delete; void trace(JSTracer* trc); }; @@ -736,16 +790,19 @@ class EvalScope : public Scope // // top-level funcs - [0, varStart) // vars - [varStart, length) - uint32_t varStart; - uint32_t length; + uint32_t varStart = 0; + uint32_t length = 0; // Frame slots [0, nextFrameSlot) are live when this is the innermost // scope. - uint32_t nextFrameSlot; + uint32_t nextFrameSlot = 0; // The array of tagged JSAtom* names, allocated beyond the end of the // struct. - BindingName names[1]; + TrailingNamesArray trailingNames; + + explicit Data(size_t nameCount) : trailingNames(nameCount) {} + Data() = delete; void trace(JSTracer* trc); }; @@ -827,7 +884,7 @@ class ModuleScope : public Scope struct Data { // The module of the scope. - GCPtr<ModuleObject*> module; + GCPtr<ModuleObject*> module = {}; // Bindings are sorted by kind. // @@ -835,18 +892,21 @@ class ModuleScope : public Scope // vars - [varStart, letStart) // lets - [letStart, constStart) // consts - [constStart, length) - uint32_t varStart; - uint32_t letStart; - uint32_t constStart; - uint32_t length; + uint32_t varStart = 0; + uint32_t letStart = 0; + uint32_t constStart = 0; + uint32_t length = 0; // Frame slots [0, nextFrameSlot) are live when this is the innermost // scope. - uint32_t nextFrameSlot; + uint32_t nextFrameSlot = 0; // The array of tagged JSAtom* names, allocated beyond the end of the // struct. - BindingName names[1]; + TrailingNamesArray trailingNames; + + explicit Data(size_t nameCount) : trailingNames(nameCount) {} + Data() = delete; void trace(JSTracer* trc); }; diff --git a/js/src/vm/String.h b/js/src/vm/String.h index 1a0c58575..514e2c205 100644 --- a/js/src/vm/String.h +++ b/js/src/vm/String.h @@ -8,7 +8,6 @@ #define vm_String_h #include "mozilla/MemoryReporting.h" -#include "mozilla/PodOperations.h" #include "mozilla/Range.h" #include "jsapi.h" @@ -1087,19 +1086,17 @@ class StaticStrings static const size_t SMALL_CHAR_LIMIT = 128U; static const size_t NUM_SMALL_CHARS = 64U; - JSAtom* length2StaticTable[NUM_SMALL_CHARS * NUM_SMALL_CHARS]; + JSAtom* length2StaticTable[NUM_SMALL_CHARS * NUM_SMALL_CHARS] = {}; // zeroes public: /* We keep these public for the JITs. */ static const size_t UNIT_STATIC_LIMIT = 256U; - JSAtom* unitStaticTable[UNIT_STATIC_LIMIT]; + JSAtom* unitStaticTable[UNIT_STATIC_LIMIT] = {}; // zeroes static const size_t INT_STATIC_LIMIT = 256U; - JSAtom* intStaticTable[INT_STATIC_LIMIT]; + JSAtom* intStaticTable[INT_STATIC_LIMIT] = {}; // zeroes - StaticStrings() { - mozilla::PodZero(this); - } + StaticStrings() = default; bool init(JSContext* cx); void trace(JSTracer* trc); diff --git a/js/src/vm/TypeInference.h b/js/src/vm/TypeInference.h index 9ba1c3cc8..0e737bad7 100644 --- a/js/src/vm/TypeInference.h +++ b/js/src/vm/TypeInference.h @@ -807,12 +807,10 @@ class PreliminaryObjectArray private: // All objects with the type which have been allocated. The pointers in // this array are weak. - JSObject* objects[COUNT]; + JSObject* objects[COUNT] = {}; // zeroes public: - PreliminaryObjectArray() { - mozilla::PodZero(this); - } + PreliminaryObjectArray() = default; void registerNewObject(JSObject* res); void unregisterObject(JSObject* obj); @@ -906,11 +904,11 @@ class TypeNewScript private: // Scripted function which this information was computed for. - HeapPtr<JSFunction*> function_; + HeapPtr<JSFunction*> function_ = {}; // Any preliminary objects with the type. The analyses are not performed // until this array is cleared. - PreliminaryObjectArray* preliminaryObjects; + PreliminaryObjectArray* preliminaryObjects = nullptr; // After the new script properties analyses have been performed, a template // object to use for newly constructed objects. The shape of this object @@ -918,7 +916,7 @@ class TypeNewScript // allocation kind to use. This is null if the new objects have an unboxed // layout, in which case the UnboxedLayout provides the initial structure // of the object. - HeapPtr<PlainObject*> templateObject_; + HeapPtr<PlainObject*> templateObject_ = {}; // Order in which definite properties become initialized. We need this in // case the definite properties are invalidated (such as by adding a setter @@ -928,21 +926,21 @@ class TypeNewScript // shape. Property assignments in inner frames are preceded by a series of // SETPROP_FRAME entries specifying the stack down to the frame containing // the write. - Initializer* initializerList; + Initializer* initializerList = nullptr; // If there are additional properties found by the acquired properties // analysis which were not found by the definite properties analysis, this // shape contains all such additional properties (plus the definite // properties). When an object of this group acquires this shape, it is // fully initialized and its group can be changed to initializedGroup. - HeapPtr<Shape*> initializedShape_; + HeapPtr<Shape*> initializedShape_ = {}; // Group with definite properties set for all properties found by // both the definite and acquired properties analyses. - HeapPtr<ObjectGroup*> initializedGroup_; + HeapPtr<ObjectGroup*> initializedGroup_ = {}; public: - TypeNewScript() { mozilla::PodZero(this); } + TypeNewScript() = default; ~TypeNewScript() { js_delete(preliminaryObjects); js_free(initializerList); diff --git a/js/src/wasm/AsmJS.cpp b/js/src/wasm/AsmJS.cpp index 7fade24fb..2237d1d7f 100644 --- a/js/src/wasm/AsmJS.cpp +++ b/js/src/wasm/AsmJS.cpp @@ -249,14 +249,14 @@ typedef Vector<AsmJSImport, 0, SystemAllocPolicy> AsmJSImportVector; // case the function is toString()ed. class AsmJSExport { - uint32_t funcIndex_; + uint32_t funcIndex_ = 0; // All fields are treated as cacheable POD: - uint32_t startOffsetInModule_; // Store module-start-relative offsets - uint32_t endOffsetInModule_; // so preserved by serialization. + uint32_t startOffsetInModule_ = 0; // Store module-start-relative offsets + uint32_t endOffsetInModule_ = 0; // so preserved by serialization. public: - AsmJSExport() { PodZero(this); } + AsmJSExport() = default; AsmJSExport(uint32_t funcIndex, uint32_t startOffsetInModule, uint32_t endOffsetInModule) : funcIndex_(funcIndex), startOffsetInModule_(startOffsetInModule), @@ -288,12 +288,12 @@ enum class CacheResult struct AsmJSMetadataCacheablePod { - uint32_t numFFIs; - uint32_t srcLength; - uint32_t srcLengthWithRightBrace; - bool usesSimd; + uint32_t numFFIs = 0; + uint32_t srcLength = 0; + uint32_t srcLengthWithRightBrace = 0; + bool usesSimd = false; - AsmJSMetadataCacheablePod() { PodZero(this); } + AsmJSMetadataCacheablePod() = default; }; struct js::AsmJSMetadata : Metadata, AsmJSMetadataCacheablePod diff --git a/js/xpconnect/src/XPCJSContext.cpp b/js/xpconnect/src/XPCJSContext.cpp index f352607d4..82af64520 100644 --- a/js/xpconnect/src/XPCJSContext.cpp +++ b/js/xpconnect/src/XPCJSContext.cpp @@ -28,7 +28,6 @@ #include "nsPIDOMWindow.h" #include "nsPrintfCString.h" #include "mozilla/Preferences.h" -#include "mozilla/Telemetry.h" #include "mozilla/Services.h" #include "mozilla/dom/ScriptSettings.h" @@ -135,8 +134,6 @@ public: { TimeStamp start = TimeStamp::Now(); bool hadSnowWhiteObjects = nsCycleCollector_doDeferredDeletion(); - Telemetry::Accumulate(Telemetry::CYCLE_COLLECTOR_ASYNC_SNOW_WHITE_FREEING, - uint32_t((TimeStamp::Now() - start).ToMilliseconds())); if (hadSnowWhiteObjects && !mContinuation) { mContinuation = true; if (NS_FAILED(NS_DispatchToCurrentThread(this))) { @@ -1317,7 +1314,6 @@ XPCJSContext::InterruptCallback(JSContext* cx) // Accumulate slow script invokation delay. if (!chrome && !self->mTimeoutAccumulated) { uint32_t delay = uint32_t(self->mSlowScriptActualWait.ToMilliseconds() - (limit * 1000.0)); - Telemetry::Accumulate(Telemetry::SLOW_SCRIPT_NOTIFY_DELAY, delay); self->mTimeoutAccumulated = true; } @@ -2955,100 +2951,7 @@ JSSizeOfTab(JSObject* objArg, size_t* jsObjectsSize, size_t* jsStringsSize, static void AccumulateTelemetryCallback(int id, uint32_t sample, const char* key) { - switch (id) { - case JS_TELEMETRY_GC_REASON: - Telemetry::Accumulate(Telemetry::GC_REASON_2, sample); - break; - case JS_TELEMETRY_GC_IS_ZONE_GC: - Telemetry::Accumulate(Telemetry::GC_IS_COMPARTMENTAL, sample); - break; - case JS_TELEMETRY_GC_MS: - Telemetry::Accumulate(Telemetry::GC_MS, sample); - break; - case JS_TELEMETRY_GC_BUDGET_MS: - Telemetry::Accumulate(Telemetry::GC_BUDGET_MS, sample); - break; - case JS_TELEMETRY_GC_ANIMATION_MS: - Telemetry::Accumulate(Telemetry::GC_ANIMATION_MS, sample); - break; - case JS_TELEMETRY_GC_MAX_PAUSE_MS: - Telemetry::Accumulate(Telemetry::GC_MAX_PAUSE_MS, sample); - break; - case JS_TELEMETRY_GC_MARK_MS: - Telemetry::Accumulate(Telemetry::GC_MARK_MS, sample); - break; - case JS_TELEMETRY_GC_SWEEP_MS: - Telemetry::Accumulate(Telemetry::GC_SWEEP_MS, sample); - break; - case JS_TELEMETRY_GC_COMPACT_MS: - Telemetry::Accumulate(Telemetry::GC_COMPACT_MS, sample); - break; - case JS_TELEMETRY_GC_MARK_ROOTS_MS: - Telemetry::Accumulate(Telemetry::GC_MARK_ROOTS_MS, sample); - break; - case JS_TELEMETRY_GC_MARK_GRAY_MS: - Telemetry::Accumulate(Telemetry::GC_MARK_GRAY_MS, sample); - break; - case JS_TELEMETRY_GC_SLICE_MS: - Telemetry::Accumulate(Telemetry::GC_SLICE_MS, sample); - break; - case JS_TELEMETRY_GC_SLOW_PHASE: - Telemetry::Accumulate(Telemetry::GC_SLOW_PHASE, sample); - break; - case JS_TELEMETRY_GC_MMU_50: - Telemetry::Accumulate(Telemetry::GC_MMU_50, sample); - break; - case JS_TELEMETRY_GC_RESET: - Telemetry::Accumulate(Telemetry::GC_RESET, sample); - break; - case JS_TELEMETRY_GC_RESET_REASON: - Telemetry::Accumulate(Telemetry::GC_RESET_REASON, sample); - break; - case JS_TELEMETRY_GC_INCREMENTAL_DISABLED: - Telemetry::Accumulate(Telemetry::GC_INCREMENTAL_DISABLED, sample); - break; - case JS_TELEMETRY_GC_NON_INCREMENTAL: - Telemetry::Accumulate(Telemetry::GC_NON_INCREMENTAL, sample); - break; - case JS_TELEMETRY_GC_NON_INCREMENTAL_REASON: - Telemetry::Accumulate(Telemetry::GC_NON_INCREMENTAL_REASON, sample); - break; - case JS_TELEMETRY_GC_SCC_SWEEP_TOTAL_MS: - Telemetry::Accumulate(Telemetry::GC_SCC_SWEEP_TOTAL_MS, sample); - break; - case JS_TELEMETRY_GC_SCC_SWEEP_MAX_PAUSE_MS: - Telemetry::Accumulate(Telemetry::GC_SCC_SWEEP_MAX_PAUSE_MS, sample); - break; - case JS_TELEMETRY_GC_MINOR_REASON: - Telemetry::Accumulate(Telemetry::GC_MINOR_REASON, sample); - break; - case JS_TELEMETRY_GC_MINOR_REASON_LONG: - Telemetry::Accumulate(Telemetry::GC_MINOR_REASON_LONG, sample); - break; - case JS_TELEMETRY_GC_MINOR_US: - Telemetry::Accumulate(Telemetry::GC_MINOR_US, sample); - break; - case JS_TELEMETRY_GC_NURSERY_BYTES: - Telemetry::Accumulate(Telemetry::GC_NURSERY_BYTES, sample); - break; - case JS_TELEMETRY_GC_PRETENURE_COUNT: - Telemetry::Accumulate(Telemetry::GC_PRETENURE_COUNT, sample); - break; - case JS_TELEMETRY_DEPRECATED_LANGUAGE_EXTENSIONS_IN_CONTENT: - Telemetry::Accumulate(Telemetry::JS_DEPRECATED_LANGUAGE_EXTENSIONS_IN_CONTENT, sample); - break; - case JS_TELEMETRY_DEPRECATED_LANGUAGE_EXTENSIONS_IN_ADDONS: - Telemetry::Accumulate(Telemetry::JS_DEPRECATED_LANGUAGE_EXTENSIONS_IN_ADDONS, sample); - break; - case JS_TELEMETRY_ADDON_EXCEPTIONS: - Telemetry::Accumulate(Telemetry::JS_TELEMETRY_ADDON_EXCEPTIONS, nsDependentCString(key), sample); - break; - case JS_TELEMETRY_AOT_USAGE: - Telemetry::Accumulate(Telemetry::JS_AOT_USAGE, sample); - break; - default: - MOZ_ASSERT_UNREACHABLE("Unexpected JS_TELEMETRY id"); - } +/* STUB */ } static void diff --git a/layout/base/nsArenaMemoryStats.h b/layout/base/nsArenaMemoryStats.h index ba09baaa4..2a872cfe8 100644 --- a/layout/base/nsArenaMemoryStats.h +++ b/layout/base/nsArenaMemoryStats.h @@ -18,7 +18,12 @@ public: Other // Everything else. }; - nsTabSizes() { mozilla::PodZero(this); } + nsTabSizes() + : mDom(0) + , mStyle(0) + , mOther(0) + { + } void add(Kind kind, size_t n) { diff --git a/layout/base/nsCSSRendering.cpp b/layout/base/nsCSSRendering.cpp index 054632ad7..71ebfad22 100644 --- a/layout/base/nsCSSRendering.cpp +++ b/layout/base/nsCSSRendering.cpp @@ -2516,7 +2516,6 @@ nsCSSRendering::PaintGradient(nsPresContext* aPresContext, PROFILER_LABEL("nsCSSRendering", "PaintGradient", js::ProfileEntry::Category::GRAPHICS); - Telemetry::AutoTimer<Telemetry::GRADIENT_DURATION, Telemetry::Microsecond> gradientTimer; if (aDest.IsEmpty() || aFillArea.IsEmpty()) { return; } diff --git a/layout/base/nsDisplayList.cpp b/layout/base/nsDisplayList.cpp index cb55bb2da..2bf20144a 100644 --- a/layout/base/nsDisplayList.cpp +++ b/layout/base/nsDisplayList.cpp @@ -7491,9 +7491,6 @@ PaintTelemetry::AutoRecordPaint::~AutoRecordPaint() double totalMs = (TimeStamp::Now() - mStart).ToMilliseconds(); - // Record the total time. - Telemetry::Accumulate(Telemetry::CONTENT_PAINT_TIME, static_cast<uint32_t>(totalMs)); - // If the total time was >= 16ms, then it's likely we missed a frame due to // painting. In this case we'll gather some detailed metrics below. if (totalMs <= 16.0) { @@ -7504,9 +7501,6 @@ PaintTelemetry::AutoRecordPaint::~AutoRecordPaint() MOZ_ASSERT(aDurationMs <= totalMs); uint32_t amount = static_cast<int32_t>((aDurationMs / totalMs) * 100.0); - - nsDependentCString key(aKey); - Telemetry::Accumulate(Telemetry::CONTENT_LARGE_PAINT_PHASE_WEIGHT, key, amount); }; double dlMs = sMetrics[Metric::DisplayList]; diff --git a/layout/base/nsDocumentViewer.cpp b/layout/base/nsDocumentViewer.cpp index 7b8734928..5478c61b0 100644 --- a/layout/base/nsDocumentViewer.cpp +++ b/layout/base/nsDocumentViewer.cpp @@ -1206,11 +1206,8 @@ nsDocumentViewer::PermitUnloadInternal(bool *aShouldPrompt, nsIDocument::PageUnloadingEventTimeStamp timestamp(mDocument); mInPermitUnload = true; - { - Telemetry::AutoTimer<Telemetry::HANDLE_BEFOREUNLOAD_MS> telemetryTimer; - EventDispatcher::DispatchDOMEvent(window, nullptr, event, mPresContext, + EventDispatcher::DispatchDOMEvent(window, nullptr, event, mPresContext, nullptr); - } mInPermitUnload = false; } @@ -1275,7 +1272,6 @@ nsDocumentViewer::PermitUnloadInternal(bool *aShouldPrompt, nsAutoSyncOperation sync(mDocument); mInPermitUnloadPrompt = true; - mozilla::Telemetry::Accumulate(mozilla::Telemetry::ONBEFOREUNLOAD_PROMPT_COUNT, 1); rv = prompt->ConfirmEx(title, message, buttonFlags, leaveLabel, stayLabel, nullptr, nullptr, &dummy, &buttonPressed); @@ -1290,15 +1286,12 @@ nsDocumentViewer::PermitUnloadInternal(bool *aShouldPrompt, // XXX: Are there other cases where prompts can abort? Is it ok to // prevent unloading the page in those cases? if (NS_FAILED(rv)) { - mozilla::Telemetry::Accumulate(mozilla::Telemetry::ONBEFOREUNLOAD_PROMPT_ACTION, 2); *aPermitUnload = false; return NS_OK; } // Button 0 == leave, button 1 == stay *aPermitUnload = (buttonPressed == 0); - mozilla::Telemetry::Accumulate(mozilla::Telemetry::ONBEFOREUNLOAD_PROMPT_ACTION, - (*aPermitUnload ? 1 : 0)); // If the user decided to go ahead, make sure not to prompt the user again // by toggling the internal prompting bool to false: if (*aPermitUnload) { @@ -1393,10 +1386,7 @@ nsDocumentViewer::PageHide(bool aIsUnload) nsIDocument::PageUnloadingEventTimeStamp timestamp(mDocument); - { - Telemetry::AutoTimer<Telemetry::HANDLE_UNLOAD_MS> telemetryTimer; - EventDispatcher::Dispatch(window, mPresContext, &event, nullptr, &status); - } + EventDispatcher::Dispatch(window, mPresContext, &event, nullptr, &status); } #ifdef MOZ_XUL diff --git a/layout/base/nsLayoutUtils.cpp b/layout/base/nsLayoutUtils.cpp index 062fbfe15..d0f790a0b 100644 --- a/layout/base/nsLayoutUtils.cpp +++ b/layout/base/nsLayoutUtils.cpp @@ -3569,8 +3569,6 @@ nsLayoutUtils::PaintFrame(nsRenderingContext* aRenderingContext, nsIFrame* aFram } builder.LeavePresShell(aFrame, &list); - Telemetry::AccumulateTimeDelta(Telemetry::PAINT_BUILD_DISPLAYLIST_TIME, - startBuildDisplayList); bool profilerNeedsDisplayList = profiler_feature_active("displaylistdump"); bool consoleNeedsDisplayList = gfxUtils::DumpDisplayList() || gfxEnv::DumpPaint(); @@ -3651,8 +3649,6 @@ nsLayoutUtils::PaintFrame(nsRenderingContext* aRenderingContext, nsIFrame* aFram TimeStamp paintStart = TimeStamp::Now(); RefPtr<LayerManager> layerManager = list.PaintRoot(&builder, aRenderingContext, flags); - Telemetry::AccumulateTimeDelta(Telemetry::PAINT_RASTERIZE_TIME, - paintStart); if (gfxPrefs::GfxLoggingPaintedPixelCountEnabled()) { TimeStamp now = TimeStamp::Now(); diff --git a/layout/base/nsPresShell.cpp b/layout/base/nsPresShell.cpp index 3e5320c22..88539dc4a 100644 --- a/layout/base/nsPresShell.cpp +++ b/layout/base/nsPresShell.cpp @@ -1114,17 +1114,6 @@ PresShell::Destroy() if (mPresContext) { const bool mayFlushUserFontSet = false; gfxUserFontSet* fs = mPresContext->GetUserFontSet(mayFlushUserFontSet); - if (fs) { - uint32_t fontCount; - uint64_t fontSize; - fs->GetLoadStatistics(fontCount, fontSize); - Telemetry::Accumulate(Telemetry::WEBFONT_PER_PAGE, fontCount); - Telemetry::Accumulate(Telemetry::WEBFONT_SIZE_PER_PAGE, - uint32_t(fontSize/1024)); - } else { - Telemetry::Accumulate(Telemetry::WEBFONT_PER_PAGE, 0); - Telemetry::Accumulate(Telemetry::WEBFONT_SIZE_PER_PAGE, 0); - } } #ifdef MOZ_REFLOW_PERF @@ -2276,8 +2265,6 @@ PresShell::ScrollPage(bool aForward) nsIScrollableFrame* scrollFrame = GetFrameToScrollAsScrollable(nsIPresShell::eVertical); if (scrollFrame) { - mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS, - (uint32_t) ScrollInputMethod::MainThreadScrollPage); scrollFrame->ScrollBy(nsIntPoint(0, aForward ? 1 : -1), nsIScrollableFrame::PAGES, nsIScrollableFrame::SMOOTH, @@ -2294,9 +2281,6 @@ PresShell::ScrollLine(bool aForward) nsIScrollableFrame* scrollFrame = GetFrameToScrollAsScrollable(nsIPresShell::eVertical); if (scrollFrame) { - mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS, - (uint32_t) ScrollInputMethod::MainThreadScrollLine); - int32_t lineCount = Preferences::GetInt("toolkit.scrollbox.verticalScrollDistance", NS_DEFAULT_VERTICAL_SCROLL_DISTANCE); scrollFrame->ScrollBy(nsIntPoint(0, aForward ? lineCount : -lineCount), @@ -2315,8 +2299,6 @@ PresShell::ScrollCharacter(bool aRight) nsIScrollableFrame* scrollFrame = GetFrameToScrollAsScrollable(nsIPresShell::eHorizontal); if (scrollFrame) { - mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS, - (uint32_t) ScrollInputMethod::MainThreadScrollCharacter); int32_t h = Preferences::GetInt("toolkit.scrollbox.horizontalScrollDistance", NS_DEFAULT_HORIZONTAL_SCROLL_DISTANCE); scrollFrame->ScrollBy(nsIntPoint(aRight ? h : -h, 0), @@ -2335,8 +2317,6 @@ PresShell::CompleteScroll(bool aForward) nsIScrollableFrame* scrollFrame = GetFrameToScrollAsScrollable(nsIPresShell::eVertical); if (scrollFrame) { - mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS, - (uint32_t) ScrollInputMethod::MainThreadCompleteScroll); scrollFrame->ScrollBy(nsIntPoint(0, aForward ? 1 : -1), nsIScrollableFrame::WHOLE, nsIScrollableFrame::SMOOTH, @@ -8231,16 +8211,6 @@ PresShell::HandleEventInternal(WidgetEvent* aEvent, } } - if (Telemetry::CanRecordBase() && - !aEvent->mTimeStamp.IsNull() && - aEvent->AsInputEvent()) { - double millis = (TimeStamp::Now() - aEvent->mTimeStamp).ToMilliseconds(); - Telemetry::Accumulate(Telemetry::INPUT_EVENT_RESPONSE_MS, millis); - if (mDocument && mDocument->GetReadyStateEnum() != nsIDocument::READYSTATE_COMPLETE) { - Telemetry::Accumulate(Telemetry::LOAD_INPUT_EVENT_RESPONSE_MS, millis); - } - } - return rv; } @@ -9522,16 +9492,6 @@ PresShell::ProcessReflowCommands(bool aInterruptible) UnsuppressAndInvalidate(); } - if (mDocument->GetRootElement()) { - TimeDuration elapsed = TimeStamp::Now() - timerStart; - int32_t intElapsed = int32_t(elapsed.ToMilliseconds()); - - if (intElapsed > NS_LONG_REFLOW_TIME_MS) { - Telemetry::Accumulate(Telemetry::LONG_REFLOW_INTERRUPTIBLE, - aInterruptible ? 1 : 0); - } - } - return !interrupted; } diff --git a/layout/base/nsRefreshDriver.cpp b/layout/base/nsRefreshDriver.cpp index 6676bea97..b975a69dd 100644 --- a/layout/base/nsRefreshDriver.cpp +++ b/layout/base/nsRefreshDriver.cpp @@ -143,11 +143,7 @@ public: { } - virtual ~RefreshDriverTimer() - { - MOZ_ASSERT(mContentRefreshDrivers.Length() == 0, "Should have removed all content refresh drivers from here by now!"); - MOZ_ASSERT(mRootRefreshDrivers.Length() == 0, "Should have removed all root refresh drivers from here by now!"); - } + NS_INLINE_DECL_REFCOUNTING(RefreshDriverTimer) virtual void AddRefreshDriver(nsRefreshDriver* aDriver) { @@ -253,6 +249,12 @@ public: } protected: + virtual ~RefreshDriverTimer() + { + MOZ_ASSERT(mContentRefreshDrivers.Length() == 0, "Should have removed all content refresh drivers from here by now!"); + MOZ_ASSERT(mRootRefreshDrivers.Length() == 0, "Should have removed all root refresh drivers from here by now!"); + } + virtual void StartTimer() = 0; virtual void StopTimer() = 0; virtual void ScheduleNextTick(TimeStamp aNowTime) = 0; @@ -335,10 +337,11 @@ protected: nsTArray<RefPtr<nsRefreshDriver> > mRootRefreshDrivers; // useful callback for nsITimer-based derived classes, here - // bacause of c++ protected shenanigans + // because of c++ protected shenanigans static void TimerTick(nsITimer* aTimer, void* aClosure) { - RefreshDriverTimer *timer = static_cast<RefreshDriverTimer*>(aClosure); + RefPtr<RefreshDriverTimer> timer = + static_cast<RefreshDriverTimer*>(aClosure); timer->Tick(); } }; @@ -459,9 +462,7 @@ public: private: // Since VsyncObservers are refCounted, but the RefreshDriverTimer are // explicitly shutdown. We create an inner class that has the VsyncObserver - // and is shutdown when the RefreshDriverTimer is deleted. The alternative is - // to (a) make all RefreshDriverTimer RefCounted or (b) use different - // VsyncObserver types. + // and is shutdown when the RefreshDriverTimer is deleted. class RefreshDriverVsyncObserver final : public VsyncObserver { public: @@ -478,6 +479,9 @@ private: bool NotifyVsync(TimeStamp aVsyncTimestamp) override { + // IMPORTANT: All paths through this method MUST hold a strong ref on + // |this| for the duration of the TickRefreshDriver callback. + if (!NS_IsMainThread()) { MOZ_ASSERT(XRE_IsParentProcess()); // Compress vsync notifications such that only 1 may run at a time @@ -498,6 +502,7 @@ private: aVsyncTimestamp); NS_DispatchToMainThread(vsyncEvent); } else { + RefPtr<RefreshDriverVsyncObserver> kungFuDeathGrip(this); TickRefreshDriver(aVsyncTimestamp); } @@ -526,10 +531,6 @@ private: if (XRE_IsParentProcess()) { TimeDuration vsyncLatency = TimeStamp::Now() - aVsyncTimestamp; uint32_t sample = (uint32_t)vsyncLatency.ToMilliseconds(); - Telemetry::Accumulate(Telemetry::FX_REFRESH_DRIVER_CHROME_FRAME_DELAY_MS, - sample); - Telemetry::Accumulate(Telemetry::FX_REFRESH_DRIVER_SYNC_SCROLL_FRAME_DELAY_MS, - sample); RecordJank(sample); } else if (mVsyncRate != TimeDuration::Forever()) { TimeDuration contentDelay = (TimeStamp::Now() - mLastChildTick) - mVsyncRate; @@ -539,10 +540,6 @@ private: contentDelay = TimeDuration::FromMilliseconds(0); } uint32_t sample = (uint32_t)contentDelay.ToMilliseconds(); - Telemetry::Accumulate(Telemetry::FX_REFRESH_DRIVER_CONTENT_FRAME_DELAY_MS, - sample); - Telemetry::Accumulate(Telemetry::FX_REFRESH_DRIVER_SYNC_SCROLL_FRAME_DELAY_MS, - sample); RecordJank(sample); } else { // Request the vsync rate from the parent process. Might be a few vsyncs @@ -580,7 +577,9 @@ private: // the scheduled TickRefreshDriver() runs. Check mVsyncRefreshDriverTimer // before use. if (mVsyncRefreshDriverTimer) { - mVsyncRefreshDriverTimer->RunRefreshDrivers(aVsyncTimestamp); + RefPtr<VsyncRefreshDriverTimer> timer = mVsyncRefreshDriverTimer; + timer->RunRefreshDrivers(aVsyncTimestamp); + // Note: mVsyncRefreshDriverTimer might be null now. } } @@ -833,7 +832,8 @@ protected: static void TimerTickOne(nsITimer* aTimer, void* aClosure) { - InactiveRefreshDriverTimer *timer = static_cast<InactiveRefreshDriverTimer*>(aClosure); + RefPtr<InactiveRefreshDriverTimer> timer = + static_cast<InactiveRefreshDriverTimer*>(aClosure); timer->TickOne(); } @@ -885,8 +885,8 @@ NS_IMPL_ISUPPORTS(VsyncChildCreateCallback, nsIIPCBackgroundChildCreateCallback) } // namespace mozilla -static RefreshDriverTimer* sRegularRateTimer; -static InactiveRefreshDriverTimer* sThrottledRateTimer; +static StaticRefPtr<RefreshDriverTimer> sRegularRateTimer; +static StaticRefPtr<InactiveRefreshDriverTimer> sThrottledRateTimer; #ifdef XP_WIN static int32_t sHighPrecisionTimerRequests = 0; @@ -968,8 +968,6 @@ GetFirstFrameDelay(imgIRequest* req) nsRefreshDriver::Shutdown() { // clean up our timers - delete sRegularRateTimer; - delete sThrottledRateTimer; sRegularRateTimer = nullptr; sThrottledRateTimer = nullptr; @@ -2027,10 +2025,6 @@ nsRefreshDriver::Tick(int64_t aNowEpoch, TimeStamp aNowTime) notifyGC = true; } -#ifndef ANDROID /* bug 1142079 */ - mozilla::Telemetry::AccumulateTimeDelta(mozilla::Telemetry::REFRESH_DRIVER_TICK, mTickStart); -#endif - nsTObserverArray<nsAPostRefreshObserver*>::ForwardIterator iter(mPostRefreshObservers); while (iter.HasMore()) { nsAPostRefreshObserver* observer = iter.GetNext(); @@ -2237,16 +2231,15 @@ nsRefreshDriver::PVsyncActorCreated(VsyncChild* aVsyncChild) { MOZ_ASSERT(NS_IsMainThread()); MOZ_ASSERT(!XRE_IsParentProcess()); - auto* vsyncRefreshDriverTimer = - new VsyncRefreshDriverTimer(aVsyncChild); + RefPtr<RefreshDriverTimer> vsyncRefreshDriverTimer = + new VsyncRefreshDriverTimer(aVsyncChild); // If we are using software timer, swap current timer to // VsyncRefreshDriverTimer. if (sRegularRateTimer) { sRegularRateTimer->SwapRefreshDrivers(vsyncRefreshDriverTimer); - delete sRegularRateTimer; } - sRegularRateTimer = vsyncRefreshDriverTimer; + sRegularRateTimer = vsyncRefreshDriverTimer.forget(); } void diff --git a/layout/forms/nsNumberControlFrame.cpp b/layout/forms/nsNumberControlFrame.cpp index 74dec2bea..9724109cb 100644 --- a/layout/forms/nsNumberControlFrame.cpp +++ b/layout/forms/nsNumberControlFrame.cpp @@ -430,6 +430,8 @@ nsNumberControlFrame::CreateAnonymousContent(nsTArray<ContentInfo>& aElements) nsContentUtils::AddScriptRunner(focusJob); } + SyncDisabledState(); + if (StyleDisplay()->mAppearance == NS_THEME_TEXTFIELD) { // The author has elected to hide the spinner by setting this // -moz-appearance. We will reframe if it changes. @@ -461,8 +463,6 @@ nsNumberControlFrame::CreateAnonymousContent(nsTArray<ContentInfo>& aElements) CSSPseudoElementType::mozNumberSpinDown, spinBoxCI.mStyleContext); - SyncDisabledState(); - return rv; } diff --git a/layout/generic/nsSelection.cpp b/layout/generic/nsSelection.cpp index a2227c39c..ec0fba308 100644 --- a/layout/generic/nsSelection.cpp +++ b/layout/generic/nsSelection.cpp @@ -2201,8 +2201,6 @@ nsFrameSelection::CommonPageMove(bool aForward, return; // scroll one page - mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS, - (uint32_t) ScrollInputMethod::MainThreadScrollPage); aScrollableFrame->ScrollBy(nsIntPoint(0, aForward ? 1 : -1), nsIScrollableFrame::PAGES, nsIScrollableFrame::SMOOTH); @@ -6202,11 +6200,6 @@ Selection::ScrollIntoView(SelectionRegion aRegion, flags |= nsIPresShell::SCROLL_OVERFLOW_HIDDEN; } - if (aFlags & Selection::SCROLL_FOR_CARET_MOVE) { - mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS, - (uint32_t) ScrollInputMethod::MainThreadScrollCaretIntoView); - } - presShell->ScrollFrameRectIntoView(frame, rect, aVertical, aHorizontal, flags); return NS_OK; diff --git a/layout/reftests/svg/reftest.list b/layout/reftests/svg/reftest.list index 520adc9e6..096628681 100644 --- a/layout/reftests/svg/reftest.list +++ b/layout/reftests/svg/reftest.list @@ -396,6 +396,7 @@ fuzzy-if(skiaContent,1,300) == tspan-xy-05.svg tspan-xy-ref.svg # bug 773482 fuzzy-if(skiaContent,1,300) == tspan-xy-06.svg tspan-xy-ref.svg # bug 773482 fuzzy-if(skiaContent,1,100) == tspan-xy-anchor-middle-01.svg tspan-xy-anchor-middle-ref.svg # bug 773482 fuzzy-if(skiaContent,1,100) == tspan-xy-anchor-end-01.svg tspan-xy-anchor-end-ref.svg # bug 773482 +== use-localRef-link.html pass.svg == userSpaceOnUse-and-pattern-01.svg userSpaceOnUse-and-pattern-01-ref.svg == viewBox-and-pattern-01.svg pass.svg == viewBox-and-pattern-02.svg pass.svg diff --git a/layout/reftests/svg/use-localRef-link.html b/layout/reftests/svg/use-localRef-link.html new file mode 100644 index 000000000..672e9ffaa --- /dev/null +++ b/layout/reftests/svg/use-localRef-link.html @@ -0,0 +1,16 @@ +<!DOCTYPE html> +<head> +<base href="/test"> +</head> +<body style="background-color: lime;"> + <svg width="100" height="100"> + <defs> + <rect id="a" x="0" y="0" width="50" height="50" fill="lime"/> + </defs> + <rect x="0" y="0" width="50" height="50" fill="red"/> + <use xlink:href="#a"/> + </svg> +</body> +</html> + + diff --git a/layout/style/FontFaceSet.cpp b/layout/style/FontFaceSet.cpp index 550a7d71a..1645adfef 100644 --- a/layout/style/FontFaceSet.cpp +++ b/layout/style/FontFaceSet.cpp @@ -1762,18 +1762,10 @@ FontFaceSet::UserFontSet::RecordFontLoadDone(uint32_t aFontSize, { mDownloadCount++; mDownloadSize += aFontSize; - Telemetry::Accumulate(Telemetry::WEBFONT_SIZE, aFontSize / 1024); if (!mFontFaceSet) { return; } - - TimeStamp navStart = mFontFaceSet->GetNavigationStartTimeStamp(); - TimeStamp zero; - if (navStart != zero) { - Telemetry::AccumulateTimeDelta(Telemetry::WEBFONT_DOWNLOAD_TIME_AFTER_START, - navStart, aDoneTime); - } } /* virtual */ nsresult diff --git a/layout/style/nsFontFaceLoader.cpp b/layout/style/nsFontFaceLoader.cpp index f5a0a9f34..3082bbf87 100644 --- a/layout/style/nsFontFaceLoader.cpp +++ b/layout/style/nsFontFaceLoader.cpp @@ -205,7 +205,6 @@ nsFontFaceLoader::OnStreamComplete(nsIStreamLoader* aLoader, TimeStamp doneTime = TimeStamp::Now(); TimeDuration downloadTime = doneTime - mStartTime; uint32_t downloadTimeMS = uint32_t(downloadTime.ToMilliseconds()); - Telemetry::Accumulate(Telemetry::WEBFONT_DOWNLOAD_TIME, downloadTimeMS); if (GetFontDisplay() == NS_FONT_DISPLAY_FALLBACK) { uint32_t loadTimeout = GetFallbackDelay(); diff --git a/layout/svg/nsSVGEffects.cpp b/layout/svg/nsSVGEffects.cpp index eac094a91..e75c973c8 100644 --- a/layout/svg/nsSVGEffects.cpp +++ b/layout/svg/nsSVGEffects.cpp @@ -888,24 +888,13 @@ nsSVGEffects::InvalidateDirectRenderingObservers(nsIFrame* aFrame, uint32_t aFla } } -static already_AddRefed<nsIURI> -ResolveURLUsingLocalRef(nsIFrame* aFrame, const css::URLValueData* aURL) +already_AddRefed<nsIURI> +nsSVGEffects::GetBaseURLForLocalRef(nsIContent* content, nsIURI* aDocURI) { - MOZ_ASSERT(aFrame); - - if (!aURL) { - return nullptr; - } - - // Non-local-reference URL. - if (!aURL->IsLocalRef()) { - nsCOMPtr<nsIURI> result = aURL->GetURI(); - return result.forget(); - } + MOZ_ASSERT(content); // For a local-reference URL, resolve that fragment against the current // document that relative URLs are resolved against. - nsIContent* content = aFrame->GetContent(); nsCOMPtr<nsIURI> baseURI = content->OwnerDoc()->GetDocumentURI(); if (content->IsInAnonymousSubtree()) { @@ -933,12 +922,37 @@ ResolveURLUsingLocalRef(nsIFrame* aFrame, const css::URLValueData* aURL) } } - if (originalURI && aURL->EqualsExceptRef(originalURI)) { - baseURI = originalURI; + if (originalURI) { + bool isEqualsExceptRef = false; + aDocURI->EqualsExceptRef(originalURI, &isEqualsExceptRef); + if (isEqualsExceptRef) { + baseURI = originalURI; + } } } } + return baseURI.forget(); +} + +static already_AddRefed<nsIURI> +ResolveURLUsingLocalRef(nsIFrame* aFrame, const css::URLValueData* aURL) +{ + MOZ_ASSERT(aFrame); + + if (!aURL) { + return nullptr; + } + + // Non-local-reference URL. + if (!aURL->IsLocalRef()) { + nsCOMPtr<nsIURI> result = aURL->GetURI(); + return result.forget(); + } + + nsCOMPtr<nsIURI> baseURI = + nsSVGEffects::GetBaseURLForLocalRef(aFrame->GetContent(), aURL->GetURI()); + return aURL->ResolveLocalRef(baseURI); } diff --git a/layout/svg/nsSVGEffects.h b/layout/svg/nsSVGEffects.h index 9dd92fd31..0cf9b1500 100644 --- a/layout/svg/nsSVGEffects.h +++ b/layout/svg/nsSVGEffects.h @@ -626,11 +626,23 @@ public: static already_AddRefed<nsIURI> GetPaintURI(nsIFrame* aFrame, nsStyleSVGPaint nsStyleSVG::* aPaint); - /** + /** * A helper function to resolve SVG mask URL. */ static already_AddRefed<nsIURI> GetMaskURI(nsIFrame* aFrame, uint32_t aIndex); + + /** + * Return a baseURL for resolving a local-ref URL. + * + * @param aContent an element which uses a local-ref property. Here are some + * examples: + * <rect fill=url(#foo)> + * <circle clip-path=url(#foo)> + * <use xlink:href="#foo"> + */ + static already_AddRefed<nsIURI> + GetBaseURLForLocalRef(nsIContent* aContent, nsIURI* aDocURI); }; #endif /*NSSVGEFFECTS_H_*/ diff --git a/layout/svg/nsSVGOuterSVGFrame.cpp b/layout/svg/nsSVGOuterSVGFrame.cpp index aeadccbc5..e1b97bb40 100644 --- a/layout/svg/nsSVGOuterSVGFrame.cpp +++ b/layout/svg/nsSVGOuterSVGFrame.cpp @@ -241,8 +241,9 @@ nsSVGOuterSVGFrame::GetIntrinsicRatio() nsSVGLength2 &height = content->mLengthAttributes[SVGSVGElement::ATTR_HEIGHT]; if (!width.IsPercentage() && !height.IsPercentage()) { - nsSize ratio(NSToCoordRoundWithClamp(width.GetAnimValue(content)), - NSToCoordRoundWithClamp(height.GetAnimValue(content))); + nsSize ratio( + nsPresContext::CSSPixelsToAppUnits(width.GetAnimValue(content)), + nsPresContext::CSSPixelsToAppUnits(height.GetAnimValue(content))); if (ratio.width < 0) { ratio.width = 0; } @@ -272,8 +273,8 @@ nsSVGOuterSVGFrame::GetIntrinsicRatio() if (viewBoxHeight < 0.0f) { viewBoxHeight = 0.0f; } - return nsSize(NSToCoordRoundWithClamp(viewBoxWidth), - NSToCoordRoundWithClamp(viewBoxHeight)); + return nsSize(nsPresContext::CSSPixelsToAppUnits(viewBoxWidth), + nsPresContext::CSSPixelsToAppUnits(viewBoxHeight)); } return nsSVGDisplayContainerFrame::GetIntrinsicRatio(); diff --git a/layout/xul/nsScrollbarButtonFrame.cpp b/layout/xul/nsScrollbarButtonFrame.cpp index 206d9717f..ff757a65f 100644 --- a/layout/xul/nsScrollbarButtonFrame.cpp +++ b/layout/xul/nsScrollbarButtonFrame.cpp @@ -171,9 +171,6 @@ nsScrollbarButtonFrame::HandleButtonPress(nsPresContext* aPresContext, return false; } - mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS, - (uint32_t) ScrollInputMethod::MainThreadScrollbarButtonClick); - if (!m) { sb->MoveToNewPosition(); if (!weakFrame.IsAlive()) { diff --git a/layout/xul/nsSliderFrame.cpp b/layout/xul/nsSliderFrame.cpp index 8e083f20c..3c1f9ef91 100644 --- a/layout/xul/nsSliderFrame.cpp +++ b/layout/xul/nsSliderFrame.cpp @@ -529,9 +529,6 @@ nsSliderFrame::HandleEvent(nsPresContext* aPresContext, return NS_OK; } - mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS, - (uint32_t) ScrollInputMethod::MainThreadScrollbarDrag); - // take our current position and subtract the start location pos -= mDragStart; bool isMouseOutsideThumb = false; @@ -598,9 +595,6 @@ nsSliderFrame::HandleEvent(nsPresContext* aPresContext, nsSize thumbSize = thumbFrame->GetSize(); nscoord thumbLength = isHorizontal ? thumbSize.width : thumbSize.height; - mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS, - (uint32_t) ScrollInputMethod::MainThreadScrollbarTrackClick); - // set it nsWeakFrame weakFrame(this); // should aMaySnap be true here? diff --git a/media/ffvpx/README_MCP b/media/ffvpx/README_MCP index 4555e08da..5ed4d8d94 100644 --- a/media/ffvpx/README_MCP +++ b/media/ffvpx/README_MCP @@ -7,10 +7,6 @@ Currently, we only use the vp8 and vp9 portion of the library, and only on x86 based platforms. If this changes, configuration files will most likely need to be updated. -AVX2 must be disabled on Linux 32 bits due to the use of yasm 1.1 on the build bots. -Once yasm is upgraded to 1.2 or later, AVX2 code could be re-enabled. -Add --disable-avx2 to configure on those platforms. - configuration files were generated as follow using the configure script: ./configure --disable-everything --disable-protocols --disable-demuxers --disable-muxers --disable-filters --disable-programs --disable-doc --disable-parsers --enable-parser=vp8 --enable-parser=vp9 --enable-decoder=vp8 --enable-decoder=vp9 --disable-static --enable-shared --disable-debug --disable-sdl2 --disable-libxcb --disable-securetransport --disable-iconv --disable-swresample --disable-swscale --disable-avdevice --disable-avfilter --disable-avformat --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox --enable-decoder=flac --enable-asm --enable-x86asm @@ -18,13 +14,12 @@ config*: replace: /HAVE_(MALLOC_H|ARC4RANDOM|LOCALTIME_R|MEMALIGN|POSIX_MEMALIGN)/d config_darwin32.h: -add to configure command: --disable-asm --disable-yasm --cc='clang -m32' +add to configure command: --disable-asm --disable-x86asm --cc='clang -m32' config_unix32.h: add to configure command: --disable-asm --disable-x86asm --cc='clang -m32' replace: s/HAVE_SYSCTL 1/HAVE_SYSCTL 0/ and s/HAVE_MEMALIGN 1/HAVE_MEMALIGN 0/ and s/HAVE_POSIX_MEMALIGN 1/HAVE_POSIX_MEMALIGN 0/ - config_unix32.h/config_unix64.h/config_unix64.asm: replace: s/HAVE_SYSCTL 1/HAVE_SYSCTL 0 diff --git a/media/libvpx/bug1480092.patch b/media/libvpx/bug1480092.patch new file mode 100644 index 000000000..ae774bb20 --- /dev/null +++ b/media/libvpx/bug1480092.patch @@ -0,0 +1,36 @@ +From f00fe25d7eb13ceafbea6a6987d45fdef64cffb3 Mon Sep 17 00:00:00 2001 +From: Pale Moon <git-repo@palemoon.org> +Date: Tue, 11 Sep 2018 08:58:16 +0200 +Subject: [PATCH] Cherry-pick libvpx upstream + 52add5896661d186dec284ed646a4b33b607d2c7. + +--- + media/libvpx/vp8/common/postproc.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/media/libvpx/vp8/common/postproc.c b/media/libvpx/vp8/common/postproc.c +index a4e6ae170..3b05bc63e 100644 +--- a/media/libvpx/vp8/common/postproc.c ++++ b/media/libvpx/vp8/common/postproc.c +@@ -325,17 +325,17 @@ void vp8_deblock(VP8_COMMON *cm, + YV12_BUFFER_CONFIG *post, + int q, + int low_var_thresh, + int flag) + { + double level = 6.0e-05 * q * q * q - .0067 * q * q + .306 * q + .0065; + int ppl = (int)(level + .5); + +- const MODE_INFO *mode_info_context = cm->show_frame_mi; ++ const MODE_INFO *mode_info_context = cm->mi; + int mbr, mbc; + + /* The pixel thresholds are adjusted according to if or not the macroblock + * is a skipped block. */ + unsigned char *ylimits = cm->pp_limits_buffer; + unsigned char *uvlimits = cm->pp_limits_buffer + 16 * cm->mb_cols; + (void) low_var_thresh; + (void) flag; +-- +2.16.1.windows.4 + diff --git a/media/libvpx/update.py b/media/libvpx/update.py index 85eed5872..1e9d9b478 100755 --- a/media/libvpx/update.py +++ b/media/libvpx/update.py @@ -608,6 +608,8 @@ def apply_patches(): os.system("patch -p3 < input_frame_validation.patch") # Bug 1315288 - Check input frame resolution for vp9 os.system("patch -p3 < input_frame_validation_vp9.patch") + # Cherrypick fix from upstream + os.system("patch -p3 < bug1480092.patch") def update_readme(commit): with open('README_MOZILLA') as f: diff --git a/media/libvpx/vp8/common/postproc.c b/media/libvpx/vp8/common/postproc.c index a4e6ae170..3b05bc63e 100644 --- a/media/libvpx/vp8/common/postproc.c +++ b/media/libvpx/vp8/common/postproc.c @@ -330,7 +330,7 @@ void vp8_deblock(VP8_COMMON *cm, double level = 6.0e-05 * q * q * q - .0067 * q * q + .306 * q + .0065; int ppl = (int)(level + .5); - const MODE_INFO *mode_info_context = cm->show_frame_mi; + const MODE_INFO *mode_info_context = cm->mi; int mbr, mbc; /* The pixel thresholds are adjusted according to if or not the macroblock diff --git a/media/webrtc/signaling/src/media-conduit/AudioConduit.cpp b/media/webrtc/signaling/src/media-conduit/AudioConduit.cpp index 2c57431e7..e36b8b6cf 100755 --- a/media/webrtc/signaling/src/media-conduit/AudioConduit.cpp +++ b/media/webrtc/signaling/src/media-conduit/AudioConduit.cpp @@ -706,15 +706,6 @@ WebrtcAudioConduit::GetAudioFrame(int16_t speechData[], if (GetAVStats(&jitter_buffer_delay_ms, &playout_buffer_delay_ms, &avsync_offset_ms)) { -#if !defined(MOZILLA_EXTERNAL_LINKAGE) - if (avsync_offset_ms < 0) { - Telemetry::Accumulate(Telemetry::WEBRTC_AVSYNC_WHEN_VIDEO_LAGS_AUDIO_MS, - -avsync_offset_ms); - } else { - Telemetry::Accumulate(Telemetry::WEBRTC_AVSYNC_WHEN_AUDIO_LAGS_VIDEO_MS, - avsync_offset_ms); - } -#endif CSFLogError(logTag, "A/V sync: sync delta: %dms, audio jitter delay %dms, playout delay %dms", avsync_offset_ms, jitter_buffer_delay_ms, playout_buffer_delay_ms); diff --git a/media/webrtc/signaling/src/media-conduit/CodecStatistics.cpp b/media/webrtc/signaling/src/media-conduit/CodecStatistics.cpp index eb03c0bf8..da40a59ea 100644 --- a/media/webrtc/signaling/src/media-conduit/CodecStatistics.cpp +++ b/media/webrtc/signaling/src/media-conduit/CodecStatistics.cpp @@ -124,8 +124,6 @@ void VideoCodecStatistics::ReceiveStateChange(const int aChannel, TimeDuration timeDelta = TimeStamp::Now() - mReceiveFailureTime; CSFLogError(logTag, "Video error duration: %u ms", static_cast<uint32_t>(timeDelta.ToMilliseconds())); - Telemetry::Accumulate(Telemetry::WEBRTC_VIDEO_ERROR_RECOVERY_MS, - static_cast<uint32_t>(timeDelta.ToMilliseconds())); mRecoveredLosses++; // to calculate losses per minute mTotalLossTime += timeDelta; // To calculate % time in recovery @@ -147,16 +145,10 @@ void VideoCodecStatistics::EndOfCallStats() if (callDelta.ToSeconds() != 0) { uint32_t recovered_per_min = mRecoveredBeforeLoss/(callDelta.ToSeconds()/60); CSFLogError(logTag, "Video recovery before error per min %u", recovered_per_min); - Telemetry::Accumulate(Telemetry::WEBRTC_VIDEO_RECOVERY_BEFORE_ERROR_PER_MIN, - recovered_per_min); uint32_t err_per_min = mRecoveredLosses/(callDelta.ToSeconds()/60); CSFLogError(logTag, "Video recovery after error per min %u", err_per_min); - Telemetry::Accumulate(Telemetry::WEBRTC_VIDEO_RECOVERY_AFTER_ERROR_PER_MIN, - err_per_min); float percent = (mTotalLossTime.ToSeconds()*100)/callDelta.ToSeconds(); CSFLogError(logTag, "Video error time percentage %f%%", percent); - Telemetry::Accumulate(Telemetry::WEBRTC_VIDEO_DECODE_ERROR_TIME_PERMILLE, - static_cast<uint32_t>(percent*10)); } } #endif diff --git a/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp b/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp index 33422ed7a..43d10ca86 100644 --- a/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp +++ b/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp @@ -2245,22 +2245,6 @@ PeerConnectionImpl::AddIceCandidate(const char* aCandidate, const char* aMid, un CSFLogDebug(logTag, "AddIceCandidate: %s", aCandidate); -#if !defined(MOZILLA_EXTERNAL_LINKAGE) - // When remote candidates are added before our ICE ctx is up and running - // (the transition to New is async through STS, so this is not impossible), - // we won't record them as trickle candidates. Is this what we want? - if(!mIceStartTime.IsNull()) { - TimeDuration timeDelta = TimeStamp::Now() - mIceStartTime; - if (mIceConnectionState == PCImplIceConnectionState::Failed) { - Telemetry::Accumulate(Telemetry::WEBRTC_ICE_LATE_TRICKLE_ARRIVAL_TIME, - timeDelta.ToMilliseconds()); - } else { - Telemetry::Accumulate(Telemetry::WEBRTC_ICE_ON_TIME_TRICKLE_ARRIVAL_TIME, - timeDelta.ToMilliseconds()); - } - } -#endif - nsresult res = mJsepSession->AddRemoteIceCandidate(aCandidate, aMid, aLevel); if (NS_SUCCEEDED(res)) { @@ -3011,49 +2995,7 @@ PeerConnectionImpl::PluginCrash(uint32_t aPluginID, void PeerConnectionImpl::RecordEndOfCallTelemetry() const { - if (!mJsepSession) { - return; - } - -#if !defined(MOZILLA_EXTERNAL_LINKAGE) - // Bitmask used for WEBRTC/LOOP_CALL_TYPE telemetry reporting - static const uint32_t kAudioTypeMask = 1; - static const uint32_t kVideoTypeMask = 2; - static const uint32_t kDataChannelTypeMask = 4; - - // Report end-of-call Telemetry - if (mJsepSession->GetNegotiations() > 0) { - Telemetry::Accumulate(Telemetry::WEBRTC_RENEGOTIATIONS, - mJsepSession->GetNegotiations()-1); - } - Telemetry::Accumulate(Telemetry::WEBRTC_MAX_VIDEO_SEND_TRACK, - mMaxSending[SdpMediaSection::MediaType::kVideo]); - Telemetry::Accumulate(Telemetry::WEBRTC_MAX_VIDEO_RECEIVE_TRACK, - mMaxReceiving[SdpMediaSection::MediaType::kVideo]); - Telemetry::Accumulate(Telemetry::WEBRTC_MAX_AUDIO_SEND_TRACK, - mMaxSending[SdpMediaSection::MediaType::kAudio]); - Telemetry::Accumulate(Telemetry::WEBRTC_MAX_AUDIO_RECEIVE_TRACK, - mMaxReceiving[SdpMediaSection::MediaType::kAudio]); - // DataChannels appear in both Sending and Receiving - Telemetry::Accumulate(Telemetry::WEBRTC_DATACHANNEL_NEGOTIATED, - mMaxSending[SdpMediaSection::MediaType::kApplication]); - // Enumerated/bitmask: 1 = Audio, 2 = Video, 4 = DataChannel - // A/V = 3, A/V/D = 7, etc - uint32_t type = 0; - if (mMaxSending[SdpMediaSection::MediaType::kAudio] || - mMaxReceiving[SdpMediaSection::MediaType::kAudio]) { - type = kAudioTypeMask; - } - if (mMaxSending[SdpMediaSection::MediaType::kVideo] || - mMaxReceiving[SdpMediaSection::MediaType::kVideo]) { - type |= kVideoTypeMask; - } - if (mMaxSending[SdpMediaSection::MediaType::kApplication]) { - type |= kDataChannelTypeMask; - } - Telemetry::Accumulate(Telemetry::WEBRTC_CALL_TYPE, - type); -#endif + /* STUB */ } nsresult @@ -3109,13 +3051,6 @@ PeerConnectionImpl::ShutdownMedia() pair.second->RemovePrincipalChangeObserver(this); } } - - // End of call to be recorded in Telemetry - if (!mStartTime.IsNull()){ - TimeDuration timeDelta = TimeStamp::Now() - mStartTime; - Telemetry::Accumulate(Telemetry::WEBRTC_CALL_DURATION, - timeDelta.ToSeconds()); - } #endif // Forget the reference so that we can transfer it to @@ -3423,33 +3358,6 @@ void PeerConnectionImpl::IceConnectionStateChange( return; } -#if !defined(MOZILLA_EXTERNAL_LINKAGE) - if (!isDone(mIceConnectionState) && isDone(domState)) { - // mIceStartTime can be null if going directly from New to Closed, in which - // case we don't count it as a success or a failure. - if (!mIceStartTime.IsNull()){ - TimeDuration timeDelta = TimeStamp::Now() - mIceStartTime; - if (isSucceeded(domState)) { - Telemetry::Accumulate(Telemetry::WEBRTC_ICE_SUCCESS_TIME, - timeDelta.ToMilliseconds()); - } else if (isFailed(domState)) { - Telemetry::Accumulate(Telemetry::WEBRTC_ICE_FAILURE_TIME, - timeDelta.ToMilliseconds()); - } - } - - if (isSucceeded(domState)) { - Telemetry::Accumulate( - Telemetry::WEBRTC_ICE_ADD_CANDIDATE_ERRORS_GIVEN_SUCCESS, - mAddCandidateErrorCount); - } else if (isFailed(domState)) { - Telemetry::Accumulate( - Telemetry::WEBRTC_ICE_ADD_CANDIDATE_ERRORS_GIVEN_FAILURE, - mAddCandidateErrorCount); - } - } -#endif - mIceConnectionState = domState; if (mIceConnectionState == PCImplIceConnectionState::Connected || @@ -3467,10 +3375,6 @@ void PeerConnectionImpl::IceConnectionStateChange( STAMP_TIMECARD(mTimeCard, "Ice state: new"); break; case PCImplIceConnectionState::Checking: -#if !defined(MOZILLA_EXTERNAL_LINKAGE) - // For telemetry - mIceStartTime = TimeStamp::Now(); -#endif STAMP_TIMECARD(mTimeCard, "Ice state: checking"); break; case PCImplIceConnectionState::Connected: @@ -4067,16 +3971,7 @@ PeerConnectionImpl::IceStreamReady(NrIceMediaStream *aStream) //Telemetry for when calls start void PeerConnectionImpl::startCallTelem() { - if (!mStartTime.IsNull()) { - return; - } - - // Start time for calls - mStartTime = TimeStamp::Now(); - - // Increment session call counter - // If we want to track Loop calls independently here, we need two histograms. - Telemetry::Accumulate(Telemetry::WEBRTC_CALL_COUNT_2, 1); + /* STUB */ } #endif diff --git a/media/webrtc/signaling/src/peerconnection/WebrtcGlobalInformation.cpp b/media/webrtc/signaling/src/peerconnection/WebrtcGlobalInformation.cpp index 96bdd5b70..f283d6111 100644 --- a/media/webrtc/signaling/src/peerconnection/WebrtcGlobalInformation.cpp +++ b/media/webrtc/signaling/src/peerconnection/WebrtcGlobalInformation.cpp @@ -1194,18 +1194,8 @@ static void GetStatsForLongTermStorage_s( rate_limit_bit_pattern |= 2; } - if (query->failed) { - Telemetry::Accumulate( - Telemetry::WEBRTC_STUN_RATE_LIMIT_EXCEEDED_BY_TYPE_GIVEN_FAILURE, - rate_limit_bit_pattern); - } else { - Telemetry::Accumulate( - Telemetry::WEBRTC_STUN_RATE_LIMIT_EXCEEDED_BY_TYPE_GIVEN_SUCCESS, - rate_limit_bit_pattern); - } - - // Even if Telemetry::Accumulate is threadsafe, we still need to send the - // query back to main, since that is where it must be destroyed. + // We still need to send the query back to main, since that is where + // it must be destroyed. NS_DispatchToMainThread( WrapRunnableNM( &StoreLongTermICEStatisticsImpl_m, @@ -1216,8 +1206,6 @@ static void GetStatsForLongTermStorage_s( void WebrtcGlobalInformation::StoreLongTermICEStatistics( PeerConnectionImpl& aPc) { - Telemetry::Accumulate(Telemetry::WEBRTC_ICE_FINAL_CONNECTION_STATE, - static_cast<uint32_t>(aPc.IceConnectionState())); if (aPc.IceConnectionState() == PCImplIceConnectionState::New) { // ICE has not started; we won't have any remote candidates, so recording diff --git a/memory/mozjemalloc/moz.build b/memory/mozjemalloc/moz.build index feeb4fb07..a7c1e5f2a 100644 --- a/memory/mozjemalloc/moz.build +++ b/memory/mozjemalloc/moz.build @@ -37,7 +37,10 @@ LOCAL_INCLUDES += [ ] if CONFIG['GNU_CC']: - CFLAGS += ['-Wno-unused'] # too many annoying warnings from mfbt/ headers + # too many annoying warnings from mfbt/ headers + # also too many false positives from functions generated through rb_wrab from rb.h. + CFLAGS += ['-Wno-unused', + '-Wno-uninitialized'] if CONFIG['_MSC_VER']: CFLAGS += ['-wd4273'] # inconsistent dll linkage (bug 558163) diff --git a/mfbt/EnumSet.h b/mfbt/EnumSet.h index 5282ab30c..b18b5a769 100644 --- a/mfbt/EnumSet.h +++ b/mfbt/EnumSet.h @@ -335,7 +335,7 @@ private: uint32_t mBitField; #ifdef DEBUG - uint64_t mVersion; + uint64_t mVersion = 0; #endif }; diff --git a/mfbt/tests/TestTypeTraits.cpp b/mfbt/tests/TestTypeTraits.cpp index f0a565142..eb412bc54 100644 --- a/mfbt/tests/TestTypeTraits.cpp +++ b/mfbt/tests/TestTypeTraits.cpp @@ -70,8 +70,8 @@ static_assert(!IsPointer<IsPointerTest>::value, "IsPointerTest not a pointer"); static_assert(IsPointer<IsPointerTest*>::value, "IsPointerTest* is a pointer"); -static_assert(!IsPointer<bool(IsPointerTest::*)>::value, - "bool(IsPointerTest::*) not a pointer"); +static_assert(!IsPointer<bool(IsPointerTest::*)()>::value, + "bool(IsPointerTest::*)() not a pointer"); static_assert(!IsPointer<void(IsPointerTest::*)(void)>::value, "void(IsPointerTest::*)(void) not a pointer"); diff --git a/mobile/android/.eslintrc b/mobile/android/.eslintrc index ce106c2d1..db673a6b7 100644 --- a/mobile/android/.eslintrc +++ b/mobile/android/.eslintrc @@ -24,7 +24,6 @@ globals: strings: false Strings: false Task: false - TelemetryStopwatch: false UITelemetry: false UserAgentOverrides: 0 XPCOMUtils: false diff --git a/mobile/android/chrome/content/aboutLogins.js b/mobile/android/chrome/content/aboutLogins.js index 99e2af841..b3d003875 100644 --- a/mobile/android/chrome/content/aboutLogins.js +++ b/mobile/android/chrome/content/aboutLogins.js @@ -8,7 +8,6 @@ Cu.import("resource://services-common/utils.js"); /*global: CommonUtils */ Cu.import("resource://gre/modules/Messaging.jsm"); Cu.import("resource://gre/modules/Services.jsm"); Cu.import("resource://gre/modules/XPCOMUtils.jsm"); -Cu.import("resource://gre/modules/TelemetryStopwatch.jsm"); XPCOMUtils.defineLazyGetter(window, "gChromeWin", () => window.QueryInterface(Ci.nsIInterfaceRequestor) diff --git a/mobile/android/components/SessionStore.js b/mobile/android/components/SessionStore.js index 18ac6bf94..a23c52fe3 100644 --- a/mobile/android/components/SessionStore.js +++ b/mobile/android/components/SessionStore.js @@ -16,7 +16,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "Messaging", "resource://gre/modules/Mes XPCOMUtils.defineLazyModuleGetter(this, "PrivateBrowsingUtils", "resource://gre/modules/PrivateBrowsingUtils.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "FormData", "resource://gre/modules/FormData.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "ScrollPosition", "resource://gre/modules/ScrollPosition.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "TelemetryStopwatch", "resource://gre/modules/TelemetryStopwatch.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "Log", "resource://gre/modules/AndroidLog.jsm", "AndroidLog"); XPCOMUtils.defineLazyModuleGetter(this, "SharedPreferences", "resource://gre/modules/SharedPreferences.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "Utils", "resource://gre/modules/sessionstore/Utils.jsm"); @@ -1053,9 +1052,7 @@ SessionStore.prototype = { * @param aAsync boolelan used to determine the method of saving the state */ _writeFile: function ss_writeFile(aFile, aFileTemp, aData, aAsync) { - TelemetryStopwatch.start("FX_SESSION_RESTORE_SERIALIZE_DATA_MS"); let state = JSON.stringify(aData); - TelemetryStopwatch.finish("FX_SESSION_RESTORE_SERIALIZE_DATA_MS"); // Convert data string to a utf-8 encoded array buffer let buffer = new TextEncoder().encode(state); diff --git a/modules/libjar/nsJARChannel.cpp b/modules/libjar/nsJARChannel.cpp index 4b6b78c6d..ee60602da 100644 --- a/modules/libjar/nsJARChannel.cpp +++ b/modules/libjar/nsJARChannel.cpp @@ -22,7 +22,6 @@ #include "nsIFileURL.h" #include "mozilla/Preferences.h" -#include "mozilla/Telemetry.h" #include "nsITabChild.h" #include "private/pprio.h" #include "nsInputStreamPump.h" @@ -791,12 +790,6 @@ nsJARChannel::AsyncOpen(nsIStreamListener *listener, nsISupports *ctx) return NS_ERROR_UNSAFE_CONTENT_TYPE; } - static bool reportedRemoteJAR = false; - if (!reportedRemoteJAR) { - reportedRemoteJAR = true; - Telemetry::Accumulate(Telemetry::REMOTE_JAR_PROTOCOL_USED, 1); - } - // kick off an async download of the base URI... nsCOMPtr<nsIStreamListener> downloader = new MemoryDownloader(this); uint32_t loadFlags = diff --git a/modules/libmar/src/mar.h b/modules/libmar/src/mar.h index 98b454d94..776daf648 100644 --- a/modules/libmar/src/mar.h +++ b/modules/libmar/src/mar.h @@ -48,6 +48,7 @@ typedef struct MarItem_ { struct MarFile_ { FILE *fp; MarItem *item_table[TABLESIZE]; + int item_table_is_valid; }; typedef struct MarFile_ MarFile; diff --git a/modules/libmar/src/mar_read.c b/modules/libmar/src/mar_read.c index 17744cdfc..378eaea88 100644 --- a/modules/libmar/src/mar_read.c +++ b/modules/libmar/src/mar_read.c @@ -114,6 +114,7 @@ static int mar_read_index(MarFile *mar) { uint32_t offset_to_index, size_of_index; /* verify MAR ID */ + fseek(mar->fp, 0, SEEK_SET); if (fread(id, MAR_ID_SIZE, 1, mar->fp) != 1) return -1; if (memcmp(id, MAR_ID, MAR_ID_SIZE) != 0) @@ -160,11 +161,8 @@ static MarFile *mar_fpopen(FILE *fp) } mar->fp = fp; + mar->item_table_is_valid = 0; memset(mar->item_table, 0, sizeof(mar->item_table)); - if (mar_read_index(mar)) { - mar_close(mar); - return NULL; - } return mar; } @@ -490,6 +488,14 @@ const MarItem *mar_find_item(MarFile *mar, const char *name) { uint32_t hash; const MarItem *item; + if (!mar->item_table_is_valid) { + if (mar_read_index(mar)) { + return NULL; + } else { + mar->item_table_is_valid = 1; + } + } + hash = mar_hash_name(name); item = mar->item_table[hash]; @@ -503,6 +509,14 @@ int mar_enum_items(MarFile *mar, MarItemCallback callback, void *closure) { MarItem *item; int i; + if (!mar->item_table_is_valid) { + if (mar_read_index(mar)) { + return -1; + } else { + mar->item_table_is_valid = 1; + } + } + for (i = 0; i < TABLESIZE; ++i) { item = mar->item_table[i]; while (item) { diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js index ceecaa84e..0ec5f1596 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -247,6 +247,10 @@ pref("dom.compartment_per_addon", true); // of content viewers to cache based on the amount of available memory. pref("browser.sessionhistory.max_total_viewers", -1); +// Whether to store 'about:newtab' in the session history, disabled by default. +// See https://github.com/MoonchildProductions/UXP/issues/719 +pref("browser.newtabpage.add_to_session_history", false); + pref("ui.use_native_colors", true); pref("ui.click_hold_context_menus", false); // Duration of timeout of incremental search in menus (ms). 0 means infinite. @@ -273,6 +277,9 @@ pref("browser.display.show_image_placeholders", true); pref("browser.display.show_loading_image_placeholder", false); // min font device pixel size at which to turn on high quality pref("browser.display.auto_quality_min_font_size", 20); +// Background color for standalone images; leave empty to use default +// all CSS colors available: named colors, rgb(..), #rrggbb, ... +pref("browser.display.standalone_images.background_color", ""); pref("browser.anchor_color", "#0000EE"); pref("browser.active_color", "#EE0000"); pref("browser.visited_color", "#551A8B"); @@ -901,6 +908,7 @@ pref("findbar.highlightAll", false); pref("findbar.modalHighlight", false); pref("findbar.entireword", false); pref("findbar.iteratorTimeout", 100); +pref("findbar.termPerTab", false); // use Mac OS X Appearance panel text smoothing setting when rendering text, disabled by default pref("gfx.use_text_smoothing_setting", false); @@ -919,16 +927,16 @@ pref("toolkit.scrollbox.clickToScroll.scrollDelay", 150); // Telemetry settings. // Server to submit telemetry pings to. -pref("toolkit.telemetry.server", "https://incoming.telemetry.mozilla.org"); +pref("toolkit.telemetry.server", ""); // Telemetry server owner. Please change if you set toolkit.telemetry.server to a different server -pref("toolkit.telemetry.server_owner", "Mozilla"); +pref("toolkit.telemetry.server_owner", ""); // Information page about telemetry (temporary ; will be about:telemetry in the end) -pref("toolkit.telemetry.infoURL", "https://www.mozilla.org/legal/privacy/firefox.html#telemetry"); +pref("toolkit.telemetry.infoURL", ""); // Determines whether full SQL strings are returned when they might contain sensitive info // i.e. dynamically constructed SQL strings or SQL executed by addons against addon DBs pref("toolkit.telemetry.debugSlowSql", false); // Whether to use the unified telemetry behavior, requires a restart. -pref("toolkit.telemetry.unified", true); +pref("toolkit.telemetry.unified", false); // Identity module pref("toolkit.identity.enabled", false); @@ -2202,6 +2210,10 @@ pref("ui.key.contentAccess", 5); pref("ui.key.menuAccessKeyFocuses", false); // overridden below pref("ui.key.saveLink.shift", true); // true = shift, false = meta +// When true, overrides OS convention to lock content scrolling +// if a contextual menu is open. +pref("ui.menu.allow_content_scroll", false); + // Disable page loading activity cursor by default. pref("ui.use_activity_cursor", false); diff --git a/netwerk/base/BackgroundFileSaver.cpp b/netwerk/base/BackgroundFileSaver.cpp index e4bc05826..cfe94e35b 100644 --- a/netwerk/base/BackgroundFileSaver.cpp +++ b/netwerk/base/BackgroundFileSaver.cpp @@ -798,8 +798,6 @@ BackgroundFileSaver::NotifySaveComplete() // during the session in a telemetry histogram, and we reset the maximum // thread counter for the next download session if (sThreadCount == 0) { - Telemetry::Accumulate(Telemetry::BACKGROUNDFILESAVER_THREAD_COUNT, - sTelemetryMaxThreadCount); sTelemetryMaxThreadCount = 0; } diff --git a/netwerk/base/Predictor.cpp b/netwerk/base/Predictor.cpp index e97b11d16..12e4eb415 100644 --- a/netwerk/base/Predictor.cpp +++ b/netwerk/base/Predictor.cpp @@ -294,26 +294,9 @@ Predictor::Action::OnCacheEntryAvailable(nsICacheEntry *entry, bool isNew, "Aborting.", this, result)); return NS_OK; } - Telemetry::AccumulateTimeDelta(Telemetry::PREDICTOR_WAIT_TIME, - mStartTime); - if (mPredict) { - bool predicted = mPredictor->PredictInternal(mPredictReason, entry, isNew, - mFullUri, mTargetURI, - mVerifier, mStackCount); - Telemetry::AccumulateTimeDelta( - Telemetry::PREDICTOR_PREDICT_WORK_TIME, mStartTime); - if (predicted) { - Telemetry::AccumulateTimeDelta( - Telemetry::PREDICTOR_PREDICT_TIME_TO_ACTION, mStartTime); - } else { - Telemetry::AccumulateTimeDelta( - Telemetry::PREDICTOR_PREDICT_TIME_TO_INACTION, mStartTime); - } - } else { + if (!mPredict) { mPredictor->LearnInternal(mLearnReason, entry, isNew, mFullUri, mTargetURI, mSourceURI); - Telemetry::AccumulateTimeDelta( - Telemetry::PREDICTOR_LEARN_WORK_TIME, mStartTime); } return NS_OK; @@ -1073,8 +1056,6 @@ Predictor::CalculateGlobalDegradation(uint32_t lastLoad) globalDegradation = mPageDegradationMax; } - Telemetry::Accumulate(Telemetry::PREDICTOR_GLOBAL_DEGRADATION, - globalDegradation); return globalDegradation; } @@ -1139,10 +1120,6 @@ Predictor::CalculateConfidence(uint32_t hitCount, uint32_t hitsPossible, confidence = std::max(confidence, 0); confidence = std::min(confidence, maxConfidence); - Telemetry::Accumulate(Telemetry::PREDICTOR_BASE_CONFIDENCE, baseConfidence); - Telemetry::Accumulate(Telemetry::PREDICTOR_SUBRESOURCE_DEGRADATION, - confidenceDegradation); - Telemetry::Accumulate(Telemetry::PREDICTOR_CONFIDENCE, confidence); return confidence; } @@ -2335,7 +2312,6 @@ Predictor::PrefetchListener::OnStopRequest(nsIRequest *aRequest, if (NS_FAILED(aStatusCode)) { return aStatusCode; } - Telemetry::AccumulateTimeDelta(Telemetry::PREDICTOR_PREFETCH_TIME, mStartTime); nsCOMPtr<nsIHttpChannel> httpChannel = do_QueryInterface(aRequest); if (!httpChannel) { diff --git a/netwerk/base/TLSServerSocket.cpp b/netwerk/base/TLSServerSocket.cpp index 257a7f5da..97c7f5423 100644 --- a/netwerk/base/TLSServerSocket.cpp +++ b/netwerk/base/TLSServerSocket.cpp @@ -52,12 +52,12 @@ TLSServerSocket::SetSocketDefaults() SSL_OptionSet(mFD, SSL_SECURITY, true); SSL_OptionSet(mFD, SSL_HANDSHAKE_AS_CLIENT, false); SSL_OptionSet(mFD, SSL_HANDSHAKE_AS_SERVER, true); - + SSL_OptionSet(mFD, SSL_NO_CACHE, true); + // We don't currently notify the server API consumer of renegotiation events // (to revalidate peer certs, etc.), so disable it for now. SSL_OptionSet(mFD, SSL_ENABLE_RENEGOTIATION, SSL_RENEGOTIATE_NEVER); - SetSessionCache(true); SetSessionTickets(true); SetRequestClientCertificate(REQUEST_NEVER); @@ -172,18 +172,6 @@ TLSServerSocket::SetServerCert(nsIX509Cert* aCert) } NS_IMETHODIMP -TLSServerSocket::SetSessionCache(bool aEnabled) -{ - // If AsyncListen was already called (and set mListener), it's too late to set - // this. - if (NS_WARN_IF(mListener)) { - return NS_ERROR_IN_PROGRESS; - } - SSL_OptionSet(mFD, SSL_NO_CACHE, !aEnabled); - return NS_OK; -} - -NS_IMETHODIMP TLSServerSocket::SetSessionTickets(bool aEnabled) { // If AsyncListen was already called (and set mListener), it's too late to set diff --git a/netwerk/base/nsITLSServerSocket.idl b/netwerk/base/nsITLSServerSocket.idl index 57485357f..dce54ffe7 100644 --- a/netwerk/base/nsITLSServerSocket.idl +++ b/netwerk/base/nsITLSServerSocket.idl @@ -20,15 +20,6 @@ interface nsITLSServerSocket : nsIServerSocket attribute nsIX509Cert serverCert; /** - * setSessionCache - * - * Whether the server should use a session cache. Defaults to true. This - * should be set before calling |asyncListen| if you wish to change the - * default. - */ - void setSessionCache(in boolean aSessionCache); - - /** * setSessionTickets * * Whether the server should support session tickets. Defaults to true. This diff --git a/netwerk/base/nsLoadGroup.cpp b/netwerk/base/nsLoadGroup.cpp index 51d5a9ca7..9981bd698 100644 --- a/netwerk/base/nsLoadGroup.cpp +++ b/netwerk/base/nsLoadGroup.cpp @@ -14,7 +14,6 @@ #include "mozilla/Logging.h" #include "nsString.h" #include "nsTArray.h" -#include "mozilla/Telemetry.h" #include "nsITimedChannel.h" #include "nsIInterfaceRequestor.h" #include "nsIRequestObserver.h" @@ -574,40 +573,6 @@ nsLoadGroup::RemoveRequest(nsIRequest *request, nsISupports* ctxt, mRequests.RemoveEntry(entry); - // Collect telemetry stats only when default request is a timed channel. - // Don't include failed requests in the timing statistics. - if (mDefaultLoadIsTimed && NS_SUCCEEDED(aStatus)) { - nsCOMPtr<nsITimedChannel> timedChannel = do_QueryInterface(request); - if (timedChannel) { - // Figure out if this request was served from the cache - ++mTimedRequests; - TimeStamp timeStamp; - rv = timedChannel->GetCacheReadStart(&timeStamp); - if (NS_SUCCEEDED(rv) && !timeStamp.IsNull()) { - ++mCachedRequests; - } - else { - mTimedNonCachedRequestsUntilOnEndPageLoad++; - } - - rv = timedChannel->GetAsyncOpen(&timeStamp); - if (NS_SUCCEEDED(rv) && !timeStamp.IsNull()) { - Telemetry::AccumulateTimeDelta( - Telemetry::HTTP_SUBITEM_OPEN_LATENCY_TIME, - mDefaultRequestCreationTime, timeStamp); - } - - rv = timedChannel->GetResponseStart(&timeStamp); - if (NS_SUCCEEDED(rv) && !timeStamp.IsNull()) { - Telemetry::AccumulateTimeDelta( - Telemetry::HTTP_SUBITEM_FIRST_BYTE_LATENCY_TIME, - mDefaultRequestCreationTime, timeStamp); - } - - TelemetryReportChannel(timedChannel, false); - } - } - if (mRequests.EntryCount() == 0) { TelemetryReport(); } @@ -815,19 +780,7 @@ nsLoadGroup::SetDefaultLoadFlags(uint32_t aFlags) void nsLoadGroup::TelemetryReport() { - if (mDefaultLoadIsTimed) { - Telemetry::Accumulate(Telemetry::HTTP_REQUEST_PER_PAGE, mTimedRequests); - if (mTimedRequests) { - Telemetry::Accumulate(Telemetry::HTTP_REQUEST_PER_PAGE_FROM_CACHE, - mCachedRequests * 100 / mTimedRequests); - } - - nsCOMPtr<nsITimedChannel> timedChannel = - do_QueryInterface(mDefaultLoadRequest); - if (timedChannel) - TelemetryReportChannel(timedChannel, true); - } - + /* STUB */ mTimedRequests = 0; mCachedRequests = 0; mDefaultLoadIsTimed = false; @@ -898,116 +851,6 @@ nsLoadGroup::TelemetryReportChannel(nsITimedChannel *aTimedChannel, rv = aTimedChannel->GetResponseEnd(&responseEnd); if (NS_FAILED(rv)) return; - -#define HTTP_REQUEST_HISTOGRAMS(prefix) \ - if (!domainLookupStart.IsNull()) { \ - Telemetry::AccumulateTimeDelta( \ - Telemetry::HTTP_##prefix##_DNS_ISSUE_TIME, \ - asyncOpen, domainLookupStart); \ - } \ - \ - if (!domainLookupStart.IsNull() && !domainLookupEnd.IsNull()) { \ - Telemetry::AccumulateTimeDelta( \ - Telemetry::HTTP_##prefix##_DNS_LOOKUP_TIME, \ - domainLookupStart, domainLookupEnd); \ - } \ - \ - if (!secureConnectionStart.IsNull() && !connectEnd.IsNull()) { \ - Telemetry::AccumulateTimeDelta( \ - Telemetry::HTTP_##prefix##_TLS_HANDSHAKE, \ - secureConnectionStart, connectEnd); \ - } \ - \ - if (!connectStart.IsNull() && !connectEnd.IsNull()) { \ - Telemetry::AccumulateTimeDelta( \ - Telemetry::HTTP_##prefix##_TCP_CONNECTION_2, \ - connectStart, connectEnd); \ - } \ - \ - \ - if (!requestStart.IsNull() && !responseEnd.IsNull()) { \ - Telemetry::AccumulateTimeDelta( \ - Telemetry::HTTP_##prefix##_OPEN_TO_FIRST_SENT, \ - asyncOpen, requestStart); \ - \ - Telemetry::AccumulateTimeDelta( \ - Telemetry::HTTP_##prefix##_FIRST_SENT_TO_LAST_RECEIVED, \ - requestStart, responseEnd); \ - \ - if (cacheReadStart.IsNull() && !responseStart.IsNull()) { \ - Telemetry::AccumulateTimeDelta( \ - Telemetry::HTTP_##prefix##_OPEN_TO_FIRST_RECEIVED, \ - asyncOpen, responseStart); \ - } \ - } \ - \ - if (!cacheReadStart.IsNull() && !cacheReadEnd.IsNull()) { \ - if (!CacheObserver::UseNewCache()) { \ - Telemetry::AccumulateTimeDelta( \ - Telemetry::HTTP_##prefix##_OPEN_TO_FIRST_FROM_CACHE, \ - asyncOpen, cacheReadStart); \ - } else { \ - Telemetry::AccumulateTimeDelta( \ - Telemetry::HTTP_##prefix##_OPEN_TO_FIRST_FROM_CACHE_V2, \ - asyncOpen, cacheReadStart); \ - } \ - \ - if (!CacheObserver::UseNewCache()) { \ - Telemetry::AccumulateTimeDelta( \ - Telemetry::HTTP_##prefix##_CACHE_READ_TIME, \ - cacheReadStart, cacheReadEnd); \ - } else { \ - Telemetry::AccumulateTimeDelta( \ - Telemetry::HTTP_##prefix##_CACHE_READ_TIME_V2, \ - cacheReadStart, cacheReadEnd); \ - } \ - \ - if (!requestStart.IsNull() && !responseEnd.IsNull()) { \ - Telemetry::AccumulateTimeDelta( \ - Telemetry::HTTP_##prefix##_REVALIDATION, \ - requestStart, responseEnd); \ - } \ - } \ - \ - if (!cacheReadEnd.IsNull()) { \ - Telemetry::AccumulateTimeDelta( \ - Telemetry::HTTP_##prefix##_COMPLETE_LOAD, \ - asyncOpen, cacheReadEnd); \ - \ - if (!CacheObserver::UseNewCache()) { \ - Telemetry::AccumulateTimeDelta( \ - Telemetry::HTTP_##prefix##_COMPLETE_LOAD_CACHED, \ - asyncOpen, cacheReadEnd); \ - } else { \ - Telemetry::AccumulateTimeDelta( \ - Telemetry::HTTP_##prefix##_COMPLETE_LOAD_CACHED_V2, \ - asyncOpen, cacheReadEnd); \ - } \ - } \ - else if (!responseEnd.IsNull()) { \ - if (!CacheObserver::UseNewCache()) { \ - Telemetry::AccumulateTimeDelta( \ - Telemetry::HTTP_##prefix##_COMPLETE_LOAD, \ - asyncOpen, responseEnd); \ - Telemetry::AccumulateTimeDelta( \ - Telemetry::HTTP_##prefix##_COMPLETE_LOAD_NET, \ - asyncOpen, responseEnd); \ - } else { \ - Telemetry::AccumulateTimeDelta( \ - Telemetry::HTTP_##prefix##_COMPLETE_LOAD_V2, \ - asyncOpen, responseEnd); \ - Telemetry::AccumulateTimeDelta( \ - Telemetry::HTTP_##prefix##_COMPLETE_LOAD_NET_V2, \ - asyncOpen, responseEnd); \ - } \ - } - - if (aDefaultRequest) { - HTTP_REQUEST_HISTOGRAMS(PAGE) - } else { - HTTP_REQUEST_HISTOGRAMS(SUB) - } -#undef HTTP_REQUEST_HISTOGRAMS } nsresult nsLoadGroup::MergeLoadFlags(nsIRequest *aRequest, diff --git a/netwerk/base/nsNetUtil.cpp b/netwerk/base/nsNetUtil.cpp index d60c909c5..653a9003e 100644 --- a/netwerk/base/nsNetUtil.cpp +++ b/netwerk/base/nsNetUtil.cpp @@ -2262,7 +2262,6 @@ NS_ShouldSecureUpgrade(nsIURI* aURI, nsIScriptError::warningFlag, "CSP", innerWindowId); - Telemetry::Accumulate(Telemetry::HTTP_SCHEME_UPGRADE, 4); aShouldUpgrade = true; return NS_OK; } @@ -2285,17 +2284,10 @@ NS_ShouldSecureUpgrade(nsIURI* aURI, if (isStsHost) { LOG(("nsHttpChannel::Connect() STS permissions found\n")); if (aAllowSTS) { - Telemetry::Accumulate(Telemetry::HTTP_SCHEME_UPGRADE, 3); aShouldUpgrade = true; return NS_OK; - } else { - Telemetry::Accumulate(Telemetry::HTTP_SCHEME_UPGRADE, 2); } - } else { - Telemetry::Accumulate(Telemetry::HTTP_SCHEME_UPGRADE, 1); } - } else { - Telemetry::Accumulate(Telemetry::HTTP_SCHEME_UPGRADE, 0); } aShouldUpgrade = false; return NS_OK; diff --git a/netwerk/base/nsSocketTransport2.cpp b/netwerk/base/nsSocketTransport2.cpp index 184757d33..f9b55ead4 100644 --- a/netwerk/base/nsSocketTransport2.cpp +++ b/netwerk/base/nsSocketTransport2.cpp @@ -1596,17 +1596,6 @@ nsSocketTransport::RecoverFromError() bool tryAgain = false; - if ((mState == STATE_CONNECTING) && mDNSRecord && - mSocketTransportService->IsTelemetryEnabledAndNotSleepPhase()) { - if (mNetAddr.raw.family == AF_INET) { - Telemetry::Accumulate(Telemetry::IPV4_AND_IPV6_ADDRESS_CONNECTIVITY, - UNSUCCESSFUL_CONNECTING_TO_IPV4_ADDRESS); - } else if (mNetAddr.raw.family == AF_INET6) { - Telemetry::Accumulate(Telemetry::IPV4_AND_IPV6_ADDRESS_CONNECTIVITY, - UNSUCCESSFUL_CONNECTING_TO_IPV6_ADDRESS); - } - } - if (mConnectionFlags & (DISABLE_IPV6 | DISABLE_IPV4) && mCondition == NS_ERROR_UNKNOWN_HOST && mState == STATE_RESOLVING && @@ -1996,18 +1985,6 @@ nsSocketTransport::OnSocketReady(PRFileDesc *fd, int16_t outFlags) // we are connected! // OnSocketConnected(); - - if (mSocketTransportService->IsTelemetryEnabledAndNotSleepPhase()) { - if (mNetAddr.raw.family == AF_INET) { - Telemetry::Accumulate( - Telemetry::IPV4_AND_IPV6_ADDRESS_CONNECTIVITY, - SUCCESSFUL_CONNECTING_TO_IPV4_ADDRESS); - } else if (mNetAddr.raw.family == AF_INET6) { - Telemetry::Accumulate( - Telemetry::IPV4_AND_IPV6_ADDRESS_CONNECTIVITY, - SUCCESSFUL_CONNECTING_TO_IPV6_ADDRESS); - } - } } else { PRErrorCode code = PR_GetError(); @@ -3201,28 +3178,7 @@ nsSocketTransport::SendPRBlockingTelemetry(PRIntervalTime aStart, Telemetry::ID aIDLinkChange, Telemetry::ID aIDOffline) { - PRIntervalTime now = PR_IntervalNow(); - if (gIOService->IsNetTearingDown()) { - Telemetry::Accumulate(aIDShutdown, - PR_IntervalToMilliseconds(now - aStart)); - - } else if (PR_IntervalToSeconds(now - gIOService->LastConnectivityChange()) - < 60) { - Telemetry::Accumulate(aIDConnectivityChange, - PR_IntervalToMilliseconds(now - aStart)); - } else if (PR_IntervalToSeconds(now - gIOService->LastNetworkLinkChange()) - < 60) { - Telemetry::Accumulate(aIDLinkChange, - PR_IntervalToMilliseconds(now - aStart)); - - } else if (PR_IntervalToSeconds(now - gIOService->LastOfflineStateChange()) - < 60) { - Telemetry::Accumulate(aIDOffline, - PR_IntervalToMilliseconds(now - aStart)); - } else { - Telemetry::Accumulate(aIDNormal, - PR_IntervalToMilliseconds(now - aStart)); - } + /* STUB */ } } // namespace net diff --git a/netwerk/base/nsSocketTransportService2.cpp b/netwerk/base/nsSocketTransportService2.cpp index 068bf0eca..72afdc9e1 100644 --- a/netwerk/base/nsSocketTransportService2.cpp +++ b/netwerk/base/nsSocketTransportService2.cpp @@ -219,7 +219,6 @@ nsSocketTransportService::CanAttachSocket() if (mTelemetryEnabledPref && (((total >= 900) || !rv) && !reported900FDLimit)) { reported900FDLimit = true; - Telemetry::Accumulate(Telemetry::NETWORK_SESSION_AT_900FD, true); } return rv; @@ -898,16 +897,6 @@ nsSocketTransportService::Run() DoPollIteration(&singlePollDuration); - if (mTelemetryEnabledPref && !pollCycleStart.IsNull()) { - Telemetry::Accumulate(Telemetry::STS_POLL_BLOCK_TIME, - singlePollDuration.ToMilliseconds()); - Telemetry::AccumulateTimeDelta( - Telemetry::STS_POLL_CYCLE, - pollCycleStart + singlePollDuration, - TimeStamp::NowLoRes()); - pollDuration += singlePollDuration; - } - mRawThread->HasPendingEvents(&pendingEvents); if (pendingEvents) { if (!mServingPendingQueue) { @@ -940,22 +929,6 @@ nsSocketTransportService::Run() ((TimeStamp::NowLoRes() - eventQueueStart).ToMilliseconds() < mMaxTimePerPollIter)); - - if (mTelemetryEnabledPref && !mServingPendingQueue && - !startOfIteration.IsNull()) { - Telemetry::AccumulateTimeDelta( - Telemetry::STS_POLL_AND_EVENTS_CYCLE, - startOfIteration + pollDuration, - TimeStamp::NowLoRes()); - - Telemetry::Accumulate( - Telemetry::STS_NUMBER_OF_PENDING_EVENTS, - numberOfPendingEvents); - - numberOfPendingEventsLastCycle += numberOfPendingEvents; - numberOfPendingEvents = 0; - pollDuration = 0; - } } } while (pendingEvents); @@ -964,16 +937,6 @@ nsSocketTransportService::Run() { MutexAutoLock lock(mLock); if (mShuttingDown) { - if (mTelemetryEnabledPref && - !startOfCycleForLastCycleCalc.IsNull()) { - Telemetry::Accumulate( - Telemetry::STS_NUMBER_OF_PENDING_EVENTS_IN_THE_LAST_CYCLE, - numberOfPendingEventsLastCycle); - Telemetry::AccumulateTimeDelta( - Telemetry::STS_POLL_AND_EVENT_THE_LAST_CYCLE, - startOfCycleForLastCycleCalc, - TimeStamp::NowLoRes()); - } break; } if (mGoingOffline) { @@ -1142,11 +1105,6 @@ nsSocketTransportService::DoPollIteration(TimeDuration *pollDuration) } } } - if (mTelemetryEnabledPref) { - Telemetry::Accumulate( - Telemetry::STS_NUMBER_OF_ONSOCKETREADY_CALLS, - numberOfOnSocketReadyCalls); - } // // check for "dead" sockets and remove them (need to do this in @@ -1465,7 +1423,6 @@ nsSocketTransportService::ProbeMaxCount() if (pfd[index].fd) PR_Close(pfd[index].fd); - Telemetry::Accumulate(Telemetry::NETWORK_PROBE_MAXCOUNT, gMaxCount); SOCKET_LOG(("Socket Limit Test max was confirmed at %d\n", gMaxCount)); } #endif // windows diff --git a/netwerk/base/nsUDPSocket.cpp b/netwerk/base/nsUDPSocket.cpp index 5973a205d..24f3954cb 100644 --- a/netwerk/base/nsUDPSocket.cpp +++ b/netwerk/base/nsUDPSocket.cpp @@ -777,33 +777,6 @@ nsUDPSocket::CloseSocket() } PR_Close(mFD); - - if (gSocketTransportService->IsTelemetryEnabledAndNotSleepPhase()) { - PRIntervalTime now = PR_IntervalNow(); - if (gIOService->IsNetTearingDown()) { - Telemetry::Accumulate(Telemetry::PRCLOSE_UDP_BLOCKING_TIME_SHUTDOWN, - PR_IntervalToMilliseconds(now - closeStarted)); - - } else if (PR_IntervalToSeconds(now - gIOService->LastConnectivityChange()) - < 60) { - Telemetry::Accumulate(Telemetry::PRCLOSE_UDP_BLOCKING_TIME_CONNECTIVITY_CHANGE, - PR_IntervalToMilliseconds(now - closeStarted)); - - } else if (PR_IntervalToSeconds(now - gIOService->LastNetworkLinkChange()) - < 60) { - Telemetry::Accumulate(Telemetry::PRCLOSE_UDP_BLOCKING_TIME_LINK_CHANGE, - PR_IntervalToMilliseconds(now - closeStarted)); - - } else if (PR_IntervalToSeconds(now - gIOService->LastOfflineStateChange()) - < 60) { - Telemetry::Accumulate(Telemetry::PRCLOSE_UDP_BLOCKING_TIME_OFFLINE, - PR_IntervalToMilliseconds(now - closeStarted)); - - } else { - Telemetry::Accumulate(Telemetry::PRCLOSE_UDP_BLOCKING_TIME_NORMAL, - PR_IntervalToMilliseconds(now - closeStarted)); - } - } } mFD = nullptr; } diff --git a/netwerk/base/security-prefs.js b/netwerk/base/security-prefs.js index cfbbf4a45..7d63267a6 100644 --- a/netwerk/base/security-prefs.js +++ b/netwerk/base/security-prefs.js @@ -42,6 +42,8 @@ pref("security.ssl3.dhe_rsa_aes_128_sha", false); pref("security.ssl3.rsa_aes_128_gcm_sha256", false); pref("security.ssl3.rsa_aes_128_sha256", false); pref("security.ssl3.rsa_des_ede3_sha", false); +pref("security.ssl3.rsa_rc4_128_sha", false); +pref("security.ssl3.rsa_rc4_128_md5", false); pref("security.content.signature.root_hash", "97:E8:BA:9C:F1:2F:B3:DE:53:CC:42:A4:E6:57:7E:D6:4D:F4:93:C2:47:B4:14:FE:A0:36:81:8D:38:23:56:0E"); diff --git a/netwerk/cache/nsCacheService.cpp b/netwerk/cache/nsCacheService.cpp index bab67e104..97b1a71c8 100644 --- a/netwerk/cache/nsCacheService.cpp +++ b/netwerk/cache/nsCacheService.cpp @@ -1184,7 +1184,6 @@ nsCacheService::Shutdown() } nsCOMPtr<nsIThread> cacheIOThread; - Telemetry::AutoTimer<Telemetry::NETWORK_DISK_CACHE_SHUTDOWN> totalTimer; bool shouldSanitize = false; nsCOMPtr<nsIFile> parentDir; @@ -1261,10 +1260,8 @@ nsCacheService::Shutdown() if (NS_SUCCEEDED(parentDir->Exists(&exists)) && exists) nsDeleteDir::DeleteDir(parentDir, false); } - Telemetry::AutoTimer<Telemetry::NETWORK_DISK_CACHE_SHUTDOWN_CLEAR_PRIVATE> timer; nsDeleteDir::Shutdown(shouldSanitize); } else { - Telemetry::AutoTimer<Telemetry::NETWORK_DISK_CACHE_DELETEDIR_SHUTDOWN> timer; nsDeleteDir::Shutdown(shouldSanitize); } } @@ -2175,7 +2172,6 @@ nsCacheService::ActivateEntry(nsCacheRequest * request, nsCacheEntry * nsCacheService::SearchCacheDevices(nsCString * key, nsCacheStoragePolicy policy, bool *collision) { - Telemetry::AutoTimer<Telemetry::CACHE_DEVICE_SEARCH_2> timer; nsCacheEntry * entry = nullptr; CACHE_LOG_DEBUG(("mMemoryDevice: 0x%p\n", mMemoryDevice)); @@ -2655,18 +2651,7 @@ nsCacheService::Lock(mozilla::Telemetry::ID mainThreadLockerID) generalID = mozilla::Telemetry::CACHE_SERVICE_LOCK_WAIT_2; } - TimeStamp start(TimeStamp::Now()); - nsCacheService::Lock(); - - TimeStamp stop(TimeStamp::Now()); - - // Telemetry isn't thread safe on its own, but this is OK because we're - // protecting it with the cache lock. - if (lockerID != mozilla::Telemetry::HistogramCount) { - mozilla::Telemetry::AccumulateTimeDelta(lockerID, start, stop); - } - mozilla::Telemetry::AccumulateTimeDelta(generalID, start, stop); } void diff --git a/netwerk/cache/nsDeleteDir.cpp b/netwerk/cache/nsDeleteDir.cpp index 1f3f3934e..8c4edf812 100644 --- a/netwerk/cache/nsDeleteDir.cpp +++ b/netwerk/cache/nsDeleteDir.cpp @@ -155,7 +155,6 @@ nsDeleteDir::DestroyThread() void nsDeleteDir::TimerCallback(nsITimer *aTimer, void *arg) { - Telemetry::AutoTimer<Telemetry::NETWORK_DISK_CACHE_DELETEDIR> timer; { MutexAutoLock lock(gInstance->mLock); @@ -193,8 +192,6 @@ nsDeleteDir::TimerCallback(nsITimer *aTimer, void *arg) nsresult nsDeleteDir::DeleteDir(nsIFile *dirIn, bool moveToTrash, uint32_t delay) { - Telemetry::AutoTimer<Telemetry::NETWORK_DISK_CACHE_TRASHRENAME> timer; - if (!gInstance) return NS_ERROR_NOT_INITIALIZED; diff --git a/netwerk/cache/nsDiskCacheDevice.cpp b/netwerk/cache/nsDiskCacheDevice.cpp index ac91534ff..09089bfb6 100644 --- a/netwerk/cache/nsDiskCacheDevice.cpp +++ b/netwerk/cache/nsDiskCacheDevice.cpp @@ -457,7 +457,6 @@ nsDiskCacheDevice::GetDeviceID() nsCacheEntry * nsDiskCacheDevice::FindEntry(nsCString * key, bool *collision) { - Telemetry::AutoTimer<Telemetry::CACHE_DISK_SEARCH_2> timer; if (!Initialized()) return nullptr; // NS_ERROR_NOT_INITIALIZED if (mClearingDiskCache) return nullptr; nsDiskCacheRecord record; @@ -955,7 +954,6 @@ nsDiskCacheDevice::EvictEntries(const char * clientID) nsresult nsDiskCacheDevice::OpenDiskCache() { - Telemetry::AutoTimer<Telemetry::NETWORK_DISK_CACHE_OPEN> timer; // if we don't have a cache directory, create one and open it bool exists; nsresult rv = mCacheDirectory->Exists(&exists); diff --git a/netwerk/cache/nsDiskCacheDeviceSQL.cpp b/netwerk/cache/nsDiskCacheDeviceSQL.cpp index 56ece5887..f4b1d72c9 100644 --- a/netwerk/cache/nsDiskCacheDeviceSQL.cpp +++ b/netwerk/cache/nsDiskCacheDeviceSQL.cpp @@ -1523,7 +1523,6 @@ nsOfflineCacheDevice::FindEntry(nsCString *fullKey, bool *collision) { NS_ENSURE_TRUE(Initialized(), nullptr); - mozilla::Telemetry::AutoTimer<mozilla::Telemetry::CACHE_OFFLINE_SEARCH_2> timer; LOG(("nsOfflineCacheDevice::FindEntry [key=%s]\n", fullKey->get())); // SELECT * FROM moz_cache WHERE key = ? diff --git a/netwerk/cache/nsDiskCacheEntry.h b/netwerk/cache/nsDiskCacheEntry.h index 3bec33053..506886cb7 100644 --- a/netwerk/cache/nsDiskCacheEntry.h +++ b/netwerk/cache/nsDiskCacheEntry.h @@ -32,7 +32,7 @@ struct nsDiskCacheEntry { mKeySize + mMetaDataSize; } - char* Key() { return reinterpret_cast<char*const>(this) + + char* Key() { return reinterpret_cast<char*>(this) + sizeof(nsDiskCacheEntry); } diff --git a/netwerk/cache/nsDiskCacheMap.cpp b/netwerk/cache/nsDiskCacheMap.cpp index d7ce13a35..d3ec1e714 100644 --- a/netwerk/cache/nsDiskCacheMap.cpp +++ b/netwerk/cache/nsDiskCacheMap.cpp @@ -19,7 +19,6 @@ #include "mozilla/MemoryReporting.h" #include "mozilla/Sprintf.h" -#include "mozilla/Telemetry.h" #include <algorithm> using namespace mozilla; @@ -181,9 +180,6 @@ nsDiskCacheMap::Open(nsIFile * cacheDirectory, goto error_exit; } - Telemetry::Accumulate(Telemetry::HTTP_DISK_CACHE_OVERHEAD, - (uint32_t)SizeOfExcludingThis(moz_malloc_size_of)); - *corruptInfo = nsDiskCache::kNotCorrupt; return NS_OK; diff --git a/netwerk/cache/nsMemoryCacheDevice.cpp b/netwerk/cache/nsMemoryCacheDevice.cpp index 042e86022..eb69e8ea8 100644 --- a/netwerk/cache/nsMemoryCacheDevice.cpp +++ b/netwerk/cache/nsMemoryCacheDevice.cpp @@ -113,7 +113,6 @@ nsMemoryCacheDevice::GetDeviceID() nsCacheEntry * nsMemoryCacheDevice::FindEntry(nsCString * key, bool *collision) { - mozilla::Telemetry::AutoTimer<mozilla::Telemetry::CACHE_MEMORY_SEARCH_2> timer; nsCacheEntry * entry = mMemCacheEntries.GetEntry(key); if (!entry) return nullptr; diff --git a/netwerk/cache2/CacheFile.cpp b/netwerk/cache2/CacheFile.cpp index fa0a89382..ce771c754 100644 --- a/netwerk/cache2/CacheFile.cpp +++ b/netwerk/cache2/CacheFile.cpp @@ -14,7 +14,6 @@ #include <algorithm> #include "nsComponentManagerUtils.h" #include "nsProxyRelease.h" -#include "mozilla/Telemetry.h" // When CACHE_CHUNKS is defined we always cache unused chunks in mCacheChunks. // When it is not defined, we always release the chunks ASAP, i.e. we cache @@ -1914,9 +1913,6 @@ CacheFile::RemoveInput(CacheFileInputStream *aInput, nsresult aStatus) // chunks that won't be used anymore. CleanUpCachedChunks(); - Telemetry::Accumulate(Telemetry::NETWORK_CACHE_V2_INPUT_STREAM_STATUS, - StatusToTelemetryEnum(aStatus)); - return NS_OK; } @@ -1952,9 +1948,6 @@ CacheFile::RemoveOutput(CacheFileOutputStream *aOutput, nsresult aStatus) // Notify close listener as the last action aOutput->NotifyCloseListener(); - Telemetry::Accumulate(Telemetry::NETWORK_CACHE_V2_OUTPUT_STREAM_STATUS, - StatusToTelemetryEnum(aStatus)); - return NS_OK; } diff --git a/netwerk/cache2/CacheFileIOManager.cpp b/netwerk/cache2/CacheFileIOManager.cpp index 1d0d57635..f6b499e47 100644 --- a/netwerk/cache2/CacheFileIOManager.cpp +++ b/netwerk/cache2/CacheFileIOManager.cpp @@ -21,7 +21,6 @@ #include "nsIObserverService.h" #include "nsICacheStorageVisitor.h" #include "nsISizeOf.h" -#include "mozilla/Telemetry.h" #include "mozilla/DebugOnly.h" #include "mozilla/Services.h" #include "nsDirectoryServiceUtils.h" @@ -1173,8 +1172,6 @@ CacheFileIOManager::Shutdown() return NS_ERROR_NOT_INITIALIZED; } - Telemetry::AutoTimer<Telemetry::NETWORK_DISK_CACHE_SHUTDOWN_V2> shutdownTimer; - CacheIndex::PreShutdown(); ShutdownMetadataWriteScheduling(); @@ -1192,7 +1189,6 @@ CacheFileIOManager::Shutdown() CacheIndex::Shutdown(); if (CacheObserver::ClearCacheOnShutdown()) { - Telemetry::AutoTimer<Telemetry::NETWORK_DISK_CACHE2_SHUTDOWN_CLEAR_PRIVATE> totalTimer; gInstance->SyncRemoveAllCacheFiles(); } @@ -3861,7 +3857,6 @@ CacheFileIOManager::CreateCacheTree() } #endif - Telemetry::Accumulate(Telemetry::NETWORK_CACHE_FS_TYPE, fsType); CacheObserver::SetCacheFSReported(); } @@ -3917,8 +3912,6 @@ CacheFileIOManager::OpenNSPRHandle(CacheFileHandle *aHandle, bool aCreate) uint32_t cacheUsage; if (NS_SUCCEEDED(CacheIndex::GetCacheSize(&cacheUsage))) { cacheUsage >>= 10; - Telemetry::Accumulate(Telemetry::NETWORK_CACHE_SIZE_FULL_FAT, - cacheUsage); sSizeReported = true; } } diff --git a/netwerk/cache2/CacheFileMetadata.cpp b/netwerk/cache2/CacheFileMetadata.cpp index 3814b4c87..86fc089aa 100644 --- a/netwerk/cache2/CacheFileMetadata.cpp +++ b/netwerk/cache2/CacheFileMetadata.cpp @@ -14,7 +14,6 @@ #include "nsICacheEntry.h" // for nsICacheEntryMetaDataVisitor #include "../cache/nsCacheUtils.h" #include "nsIFile.h" -#include "mozilla/Telemetry.h" #include "mozilla/DebugOnly.h" #include "prnetdb.h" @@ -687,16 +686,6 @@ CacheFileMetadata::OnDataRead(CacheFileHandle *aHandle, char *aBuf, return NS_OK; } - if (mFirstRead) { - Telemetry::AccumulateTimeDelta( - Telemetry::NETWORK_CACHE_METADATA_FIRST_READ_TIME_MS, mReadStart); - Telemetry::Accumulate( - Telemetry::NETWORK_CACHE_METADATA_FIRST_READ_SIZE, mBufSize); - } else { - Telemetry::AccumulateTimeDelta( - Telemetry::NETWORK_CACHE_METADATA_SECOND_READ_TIME_MS, mReadStart); - } - // check whether we have read all necessary data uint32_t realOffset = NetworkEndian::readUint32(mBuf + mBufSize - sizeof(uint32_t)); @@ -776,9 +765,6 @@ CacheFileMetadata::OnDataRead(CacheFileHandle *aHandle, char *aBuf, return NS_OK; } - Telemetry::Accumulate(Telemetry::NETWORK_CACHE_METADATA_SIZE, - size - realOffset); - // We have all data according to offset information at the end of the entry. // Try to parse it. rv = ParseMetadata(realOffset, realOffset - usedOffset, true); diff --git a/netwerk/cache2/CacheFileUtils.cpp b/netwerk/cache2/CacheFileUtils.cpp index d43e958bf..fe1a53b3d 100644 --- a/netwerk/cache2/CacheFileUtils.cpp +++ b/netwerk/cache2/CacheFileUtils.cpp @@ -7,7 +7,6 @@ #include "CacheFileUtils.h" #include "LoadContextInfo.h" #include "mozilla/Tokenizer.h" -#include "mozilla/Telemetry.h" #include "nsCOMPtr.h" #include "nsAutoPtr.h" #include "nsString.h" @@ -474,19 +473,6 @@ DetailedCacheHitTelemetry::AddRecord(ERecType aType, TimeStamp aLoadStart) StaticMutexAutoLock lock(sLock); - if (aType == MISS) { - mozilla::Telemetry::AccumulateTimeDelta( - mozilla::Telemetry::NETWORK_CACHE_V2_MISS_TIME_MS, - aLoadStart); - } else { - mozilla::Telemetry::AccumulateTimeDelta( - mozilla::Telemetry::NETWORK_CACHE_V2_HIT_TIME_MS, - aLoadStart); - } - - Telemetry::Accumulate(Telemetry::NETWORK_CACHE_HIT_MISS_STAT_PER_CACHE_SIZE, - hitMissValue); - sHRStats[rangeIdx].AddRecord(aType); ++sRecordCnt; @@ -505,8 +491,6 @@ DetailedCacheHitTelemetry::AddRecord(ERecType aType, TimeStamp aLoadStart) uint32_t bucketOffset = sHRStats[i].GetHitRateBucket(kHitRateBuckets) * kNumOfRanges; - Telemetry::Accumulate(Telemetry::NETWORK_CACHE_HIT_RATE_PER_CACHE_SIZE, - bucketOffset + i); sHRStats[i].Reset(); } } diff --git a/netwerk/cache2/CacheFileUtils.h b/netwerk/cache2/CacheFileUtils.h index 3371c3eb5..13acfd71d 100644 --- a/netwerk/cache2/CacheFileUtils.h +++ b/netwerk/cache2/CacheFileUtils.h @@ -138,7 +138,7 @@ private: // 10-%15%, ... static const uint32_t kHitRateBuckets = 20; - // Protects sRecordCnt, sHitStats and Telemetry::Accumulated() calls. + // Protects sRecordCnt and sHitStats calls. static StaticMutex sLock; // Counter of samples that is compared against kTotalSamplesReportLimit. diff --git a/netwerk/cache2/CacheIOThread.cpp b/netwerk/cache2/CacheIOThread.cpp index b96f03216..d51f61b0f 100644 --- a/netwerk/cache2/CacheIOThread.cpp +++ b/netwerk/cache2/CacheIOThread.cpp @@ -62,8 +62,6 @@ void CacheIOTelemetry::Report(uint32_t aLevel, CacheIOTelemetry::size_type aLeng // 10 is number of buckets we have in each probe aLength = std::min<size_type>(aLength, 10); - - Telemetry::Accumulate(telemetryID[aLevel], aLength - 1); // counted from 0 } } // anon diff --git a/netwerk/cache2/CacheIndex.cpp b/netwerk/cache2/CacheIndex.cpp index 4525bbe6d..1009aeaf8 100644 --- a/netwerk/cache2/CacheIndex.cpp +++ b/netwerk/cache2/CacheIndex.cpp @@ -3757,7 +3757,6 @@ ReportHashSizeMatch(const SHA1Sum::Hash *aHash1, const SHA1Sum::Hash *aHash2) bitsDiff++; uint8_t hashSizeMatch = debruijn32[bitsDiff*0x076be629>>27] + (i<<5); - Telemetry::Accumulate(Telemetry::NETWORK_CACHE_HASH_STATS, hashSizeMatch); return; } diff --git a/netwerk/cache2/CacheStorageService.cpp b/netwerk/cache2/CacheStorageService.cpp index 67ef4c526..85f364e4e 100644 --- a/netwerk/cache2/CacheStorageService.cpp +++ b/netwerk/cache2/CacheStorageService.cpp @@ -2084,8 +2084,6 @@ CacheStorageService::TelemetryRecordEntryCreation(CacheEntry const* entry) mPurgeTimeStamps.Remove(key); - Telemetry::AccumulateTimeDelta(Telemetry::HTTP_CACHE_ENTRY_RELOAD_TIME, - timeStamp, TimeStamp::NowLoRes()); } void @@ -2112,9 +2110,6 @@ CacheStorageService::TelemetryRecordEntryRemoval(CacheEntry const* entry) TelemetryPrune(now); mPurgeTimeStamps.Put(key, now); - Telemetry::Accumulate(Telemetry::HTTP_CACHE_ENTRY_REUSE_COUNT, entry->UseCount()); - Telemetry::AccumulateTimeDelta(Telemetry::HTTP_CACHE_ENTRY_ALIVE_TIME, - entry->LoadStart(), TimeStamp::NowLoRes()); } // nsIMemoryReporter diff --git a/netwerk/cache2/OldWrappers.cpp b/netwerk/cache2/OldWrappers.cpp index 81df88df0..76a4fa6c1 100644 --- a/netwerk/cache2/OldWrappers.cpp +++ b/netwerk/cache2/OldWrappers.cpp @@ -21,7 +21,6 @@ #include "nsNetCID.h" #include "nsNetUtil.h" #include "nsProxyRelease.h" -#include "mozilla/Telemetry.h" static NS_DEFINE_CID(kStreamTransportServiceCID, NS_STREAMTRANSPORTSERVICE_CID); @@ -793,24 +792,6 @@ _OldCacheLoad::Run() return NS_OK; } - if (NS_SUCCEEDED(mStatus)) { - if (mFlags & nsICacheStorage::OPEN_TRUNCATE) { - mozilla::Telemetry::AccumulateTimeDelta( - mozilla::Telemetry::NETWORK_CACHE_V1_TRUNCATE_TIME_MS, - mLoadStart); - } - else if (mNew) { - mozilla::Telemetry::AccumulateTimeDelta( - mozilla::Telemetry::NETWORK_CACHE_V1_MISS_TIME_MS, - mLoadStart); - } - else { - mozilla::Telemetry::AccumulateTimeDelta( - mozilla::Telemetry::NETWORK_CACHE_V1_HIT_TIME_MS, - mLoadStart); - } - } - if (!(mFlags & CHECK_MULTITHREADED)) Check(); diff --git a/netwerk/cookie/nsCookieService.cpp b/netwerk/cookie/nsCookieService.cpp index 1c4e5e740..ea54dbd61 100644 --- a/netwerk/cookie/nsCookieService.cpp +++ b/netwerk/cookie/nsCookieService.cpp @@ -954,19 +954,14 @@ nsCookieService::TryInitDB(bool aRecreateDB) NS_ENSURE_SUCCESS(rv, RESULT_FAILURE); } - // This block provides scope for the Telemetry AutoTimer - { - Telemetry::AutoTimer<Telemetry::MOZ_SQLITE_COOKIES_OPEN_READAHEAD_MS> - telemetry; - ReadAheadFile(mDefaultDBState->cookieFile); - - // open a connection to the cookie database, and only cache our connection - // and statements upon success. The connection is opened unshared to eliminate - // cache contention between the main and background threads. - rv = mStorageService->OpenUnsharedDatabase(mDefaultDBState->cookieFile, - getter_AddRefs(mDefaultDBState->dbConn)); - NS_ENSURE_SUCCESS(rv, RESULT_RETRY); - } + ReadAheadFile(mDefaultDBState->cookieFile); + + // open a connection to the cookie database, and only cache our connection + // and statements upon success. The connection is opened unshared to eliminate + // cache contention between the main and background threads. + rv = mStorageService->OpenUnsharedDatabase(mDefaultDBState->cookieFile, + getter_AddRefs(mDefaultDBState->dbConn)); + NS_ENSURE_SUCCESS(rv, RESULT_RETRY); // Set up our listeners. mDefaultDBState->insertListener = new InsertCookieDBListener(mDefaultDBState); @@ -3325,11 +3320,6 @@ nsCookieService::SetCookieInternal(nsIURI *aHostURI, // 3 = secure and "https:" bool isHTTPS; nsresult rv = aHostURI->SchemeIs("https", &isHTTPS); - if (NS_SUCCEEDED(rv)) { - Telemetry::Accumulate(Telemetry::COOKIE_SCHEME_SECURITY, - ((cookieAttributes.isSecure)? 0x02 : 0x00) | - ((isHTTPS)? 0x01 : 0x00)); - } int64_t currentTimeInUsec = PR_Now(); @@ -3480,8 +3470,6 @@ nsCookieService::AddInternal(const nsCookieKey &aKey, if (mLeaveSecureAlone && aCookie->IsSecure() && !isSecure) { COOKIE_LOGFAILURE(SET_COOKIE, aHostURI, aCookieHeader, "non-https cookie can't set secure flag"); - Telemetry::Accumulate(Telemetry::COOKIE_LEAVE_SECURE_ALONE, - BLOCKED_SECURE_SET_FROM_HTTP); return; } nsListIter exactIter; @@ -3502,14 +3490,7 @@ nsCookieService::AddInternal(const nsCookieKey &aKey, if (!isSecure) { COOKIE_LOGFAILURE(SET_COOKIE, aHostURI, aCookieHeader, "cookie can't save because older cookie is secure cookie but newer cookie is non-secure cookie"); - Telemetry::Accumulate(Telemetry::COOKIE_LEAVE_SECURE_ALONE, - BLOCKED_DOWNGRADE_SECURE); return; - } else { - // A secure site is allowed to downgrade a secure cookie - // but we want to measure anyway - Telemetry::Accumulate(Telemetry::COOKIE_LEAVE_SECURE_ALONE, - DOWNGRADE_SECURE_FROM_SECURE); } } } @@ -3609,8 +3590,6 @@ nsCookieService::AddInternal(const nsCookieKey &aKey, // It's valid to evict a secure cookie for another secure cookie. oldestCookieTime = FindStaleCookie(entry, currentTime, aHostURI, Some(true), iter); } else { - Telemetry::Accumulate(Telemetry::COOKIE_LEAVE_SECURE_ALONE, - EVICTING_SECURE_BLOCKED); COOKIE_LOGEVICTED(aCookie, "Too many cookies for this domain and the new cookie is not a secure cookie"); return; @@ -4651,19 +4630,7 @@ void nsCookieService::TelemetryForEvictingStaleCookie(nsCookie *aEvicted, int64_t oldestCookieTime) { - // We need to record the evicting cookie to telemetry. - if (!aEvicted->IsSecure()) { - if (aEvicted->LastAccessed() > oldestCookieTime) { - Telemetry::Accumulate(Telemetry::COOKIE_LEAVE_SECURE_ALONE, - EVICTED_NEWER_INSECURE); - } else { - Telemetry::Accumulate(Telemetry::COOKIE_LEAVE_SECURE_ALONE, - EVICTED_OLDEST_COOKIE); - } - } else { - Telemetry::Accumulate(Telemetry::COOKIE_LEAVE_SECURE_ALONE, - EVICTED_PREFERRED_COOKIE); - } + /* STUB */ } // count the number of cookies stored by a particular host. this is provided by the diff --git a/netwerk/dns/nsHostResolver.cpp b/netwerk/dns/nsHostResolver.cpp index f2e26cadd..c4883ab29 100644 --- a/netwerk/dns/nsHostResolver.cpp +++ b/netwerk/dns/nsHostResolver.cpp @@ -225,7 +225,6 @@ nsHostRecord::CopyExpirationTimesAndFlagsFrom(const nsHostRecord *aFromHostRecor nsHostRecord::~nsHostRecord() { - Telemetry::Accumulate(Telemetry::DNS_BLACKLIST_COUNT, mBlacklistedCount); delete addr_info; delete addr; } @@ -775,7 +774,6 @@ nsHostResolver::ResolveHost(const char *host, LOG_HOST(host, netInterface))); // put reference to host record on stack... result = he->rec; - Telemetry::Accumulate(Telemetry::DNS_LOOKUP_METHOD2, METHOD_HIT); // For entries that are in the grace period // or all cached negative entries, use the cache but start a new @@ -785,8 +783,6 @@ nsHostResolver::ResolveHost(const char *host, if (he->rec->negative) { LOG((" Negative cache entry for host [%s%s%s].\n", LOG_HOST(host, netInterface))); - Telemetry::Accumulate(Telemetry::DNS_LOOKUP_METHOD2, - METHOD_NEGATIVE_HIT); status = NS_ERROR_UNKNOWN_HOST; } } @@ -794,8 +790,6 @@ nsHostResolver::ResolveHost(const char *host, // go ahead and use it. else if (he->rec->addr) { LOG((" Using cached address for IP Literal [%s].\n", host)); - Telemetry::Accumulate(Telemetry::DNS_LOOKUP_METHOD2, - METHOD_LITERAL); result = he->rec; } // try parsing the host name as an IP address literal to short @@ -808,8 +802,6 @@ nsHostResolver::ResolveHost(const char *host, he->rec->addr = new NetAddr(); PRNetAddrToNetAddr(&tempAddr, he->rec->addr); // put reference to host record on stack... - Telemetry::Accumulate(Telemetry::DNS_LOOKUP_METHOD2, - METHOD_LITERAL); result = he->rec; } else if (mPendingCount >= MAX_NON_PRIORITY_REQUESTS && @@ -819,8 +811,6 @@ nsHostResolver::ResolveHost(const char *host, "host [%s%s%s].\n", IsMediumPriority(flags) ? "medium" : "low", LOG_HOST(host, netInterface))); - Telemetry::Accumulate(Telemetry::DNS_LOOKUP_METHOD2, - METHOD_OVERFLOW); // This is a lower priority request and we are swamped, so refuse it. rv = NS_ERROR_DNS_LOOKUP_QUEUE_FULL; } @@ -885,8 +875,6 @@ nsHostResolver::ResolveHost(const char *host, if (he->rec->negative) { status = NS_ERROR_UNKNOWN_HOST; } - Telemetry::Accumulate(Telemetry::DNS_LOOKUP_METHOD2, - METHOD_HIT); ConditionallyRefreshRecord(he->rec, host); } // For AF_INET6, a new lookup means another AF_UNSPEC @@ -900,8 +888,6 @@ nsHostResolver::ResolveHost(const char *host, result = he->rec; he->rec->negative = true; status = NS_ERROR_UNKNOWN_HOST; - Telemetry::Accumulate(Telemetry::DNS_LOOKUP_METHOD2, - METHOD_NEGATIVE_HIT); } } } @@ -915,8 +901,6 @@ nsHostResolver::ResolveHost(const char *host, PR_APPEND_LINK(callback, &he->rec->callbacks); he->rec->flags = flags; rv = IssueLookup(he->rec); - Telemetry::Accumulate(Telemetry::DNS_LOOKUP_METHOD2, - METHOD_NETWORK_FIRST); if (NS_FAILED(rv)) { PR_REMOVE_AND_INIT_LINK(callback); } @@ -933,8 +917,6 @@ nsHostResolver::ResolveHost(const char *host, PR_APPEND_LINK(callback, &he->rec->callbacks); if (he->rec->onQueue) { - Telemetry::Accumulate(Telemetry::DNS_LOOKUP_METHOD2, - METHOD_NETWORK_SHARED); // Consider the case where we are on a pending queue of // lower priority than the request is being made at. @@ -1085,13 +1067,6 @@ nsHostResolver::ConditionallyRefreshRecord(nsHostRecord *rec, const char *host) LOG((" Using %s cache entry for host [%s] but starting async renewal.", rec->negative ? "negative" :"positive", host)); IssueLookup(rec); - - if (!rec->negative) { - // negative entries are constantly being refreshed, only - // track positive grace period induced renewals - Telemetry::Accumulate(Telemetry::DNS_LOOKUP_METHOD2, - METHOD_RENEWAL); - } } return NS_OK; } @@ -1326,13 +1301,6 @@ nsHostResolver::OnLookupComplete(nsHostRecord* rec, nsresult status, AddrInfo* n PR_REMOVE_AND_INIT_LINK(head); mDB.Remove((nsHostKey *) head); - if (!head->negative) { - // record the age of the entry upon eviction. - TimeDuration age = TimeStamp::NowLoRes() - head->mValidStart; - Telemetry::Accumulate(Telemetry::DNS_CLEANUP_AGE, - static_cast<uint32_t>(age.ToSeconds() / 60)); - } - // release reference to rec owned by mEvictionQ NS_RELEASE(head); } @@ -1467,32 +1435,6 @@ nsHostResolver::ThreadFunc(void *arg) } #endif - { // obtain lock to check shutdown and manage inter-module telemetry - MutexAutoLock lock(resolver->mLock); - - if (!resolver->mShutdown) { - TimeDuration elapsed = TimeStamp::Now() - startTime; - uint32_t millis = static_cast<uint32_t>(elapsed.ToMilliseconds()); - - if (NS_SUCCEEDED(status)) { - Telemetry::ID histogramID; - if (!rec->addr_info_gencnt) { - // Time for initial lookup. - histogramID = Telemetry::DNS_LOOKUP_TIME; - } else if (!getTtl) { - // Time for renewal; categorized by expiration strategy. - histogramID = Telemetry::DNS_RENEWAL_TIME; - } else { - // Time to get TTL; categorized by expiration strategy. - histogramID = Telemetry::DNS_RENEWAL_TIME_FOR_TTL; - } - Telemetry::Accumulate(histogramID, millis); - } else { - Telemetry::Accumulate(Telemetry::DNS_FAILED_LOOKUP_TIME, millis); - } - } - } - // OnLookupComplete may release "rec", long before we lose it. LOG(("DNS lookup thread - lookup completed for host [%s%s%s]: %s.\n", LOG_HOST(rec->host, rec->netInterface), diff --git a/netwerk/protocol/http/ASpdySession.cpp b/netwerk/protocol/http/ASpdySession.cpp index f22c326d1..d5d98804d 100644 --- a/netwerk/protocol/http/ASpdySession.cpp +++ b/netwerk/protocol/http/ASpdySession.cpp @@ -45,8 +45,6 @@ ASpdySession::NewSpdySession(uint32_t version, // from a list provided in the SERVER HELLO filtered by our acceptable // versions, so there is no risk of the server ignoring our prefs. - Telemetry::Accumulate(Telemetry::SPDY_VERSION2, version); - return new Http2Session(aTransport, version, attemptingEarlyData); } diff --git a/netwerk/protocol/http/Http2Compression.cpp b/netwerk/protocol/http/Http2Compression.cpp index 1b4603e1a..64fd05a17 100644 --- a/netwerk/protocol/http/Http2Compression.cpp +++ b/netwerk/protocol/http/Http2Compression.cpp @@ -292,12 +292,6 @@ Http2BaseCompressor::Http2BaseCompressor() Http2BaseCompressor::~Http2BaseCompressor() { - if (mPeakSize) { - Telemetry::Accumulate(mPeakSizeID, mPeakSize); - } - if (mPeakCount) { - Telemetry::Accumulate(mPeakCountID, mPeakCount); - } UnregisterStrongMemoryReporter(mDynamicReporter); mDynamicReporter->mCompressor = nullptr; mDynamicReporter = nullptr; @@ -336,16 +330,6 @@ Http2BaseCompressor::MakeRoom(uint32_t amount, const char *direction) bytesEvicted += mHeaderTable[index]->Size(); mHeaderTable.RemoveElement(); } - - if (!strcmp(direction, "decompressor")) { - Telemetry::Accumulate(Telemetry::HPACK_ELEMENTS_EVICTED_DECOMPRESSOR, countEvicted); - Telemetry::Accumulate(Telemetry::HPACK_BYTES_EVICTED_DECOMPRESSOR, bytesEvicted); - Telemetry::Accumulate(Telemetry::HPACK_BYTES_EVICTED_RATIO_DECOMPRESSOR, (uint32_t)((100.0 * (double)bytesEvicted) / (double)amount)); - } else { - Telemetry::Accumulate(Telemetry::HPACK_ELEMENTS_EVICTED_COMPRESSOR, countEvicted); - Telemetry::Accumulate(Telemetry::HPACK_BYTES_EVICTED_COMPRESSOR, bytesEvicted); - Telemetry::Accumulate(Telemetry::HPACK_BYTES_EVICTED_RATIO_COMPRESSOR, (uint32_t)((100.0 * (double)bytesEvicted) / (double)amount)); - } } void diff --git a/netwerk/protocol/http/Http2Session.cpp b/netwerk/protocol/http/Http2Session.cpp index 4f350af83..4a178f091 100644 --- a/netwerk/protocol/http/Http2Session.cpp +++ b/netwerk/protocol/http/Http2Session.cpp @@ -168,13 +168,6 @@ Http2Session::~Http2Session() this, mDownstreamState)); Shutdown(); - - Telemetry::Accumulate(Telemetry::SPDY_PARALLEL_STREAMS, mConcurrentHighWater); - Telemetry::Accumulate(Telemetry::SPDY_REQUEST_PER_CONN, (mNextStreamID - 1) / 2); - Telemetry::Accumulate(Telemetry::SPDY_SERVER_INITIATED_STREAMS, - mServerPushedResources); - Telemetry::Accumulate(Telemetry::SPDY_GOAWAY_LOCAL, mClientGoAwayReason); - Telemetry::Accumulate(Telemetry::SPDY_GOAWAY_PEER, mPeerGoAwayReason); } void @@ -1508,13 +1501,11 @@ Http2Session::RecvSettings(Http2Session *self) case SETTINGS_TYPE_MAX_CONCURRENT: self->mMaxConcurrent = value; - Telemetry::Accumulate(Telemetry::SPDY_SETTINGS_MAX_STREAMS, value); self->ProcessPending(); break; case SETTINGS_TYPE_INITIAL_WINDOW: { - Telemetry::Accumulate(Telemetry::SPDY_SETTINGS_IW, value >> 10); int32_t delta = value - self->mServerInitialStreamWindow; self->mServerInitialStreamWindow = value; @@ -2494,8 +2485,6 @@ Http2Session::ReadyToProcessDataFrame(enum internalStateType newState) newState == DISCARDING_DATA_FRAME_PADDING); ChangeDownstreamState(newState); - Telemetry::Accumulate(Telemetry::SPDY_CHUNK_RECVD, - mInputFrameDataSize >> 10); mLastDataReadEpoch = mLastReadEpoch; if (!mInputFrameID) { diff --git a/netwerk/protocol/http/Http2Stream.cpp b/netwerk/protocol/http/Http2Stream.cpp index 7a8f96855..3471985dd 100644 --- a/netwerk/protocol/http/Http2Stream.cpp +++ b/netwerk/protocol/http/Http2Stream.cpp @@ -21,7 +21,6 @@ #include "Http2Push.h" #include "TunnelUtils.h" -#include "mozilla/Telemetry.h" #include "nsAlgorithm.h" #include "nsHttp.h" #include "nsHttpHandler.h" @@ -658,8 +657,6 @@ Http2Stream::GenerateOpen() outputOffset += frameLen; } - Telemetry::Accumulate(Telemetry::SPDY_SYN_SIZE, compressedData.Length()); - // The size of the input headers is approximate uint32_t ratio = compressedData.Length() * 100 / @@ -667,7 +664,6 @@ Http2Stream::GenerateOpen() mFlatHttpRequestHeaders.Length()); mFlatHttpRequestHeaders.Truncate(); - Telemetry::Accumulate(Telemetry::SPDY_SYN_RATIO, ratio); return NS_OK; } @@ -1025,13 +1021,6 @@ Http2Stream::ConvertResponseHeaders(Http2Decompressor *decompressor, return NS_ERROR_ILLEGAL_VALUE; } - if (aHeadersIn.Length() && aHeadersOut.Length()) { - Telemetry::Accumulate(Telemetry::SPDY_SYN_REPLY_SIZE, aHeadersIn.Length()); - uint32_t ratio = - aHeadersIn.Length() * 100 / aHeadersOut.Length(); - Telemetry::Accumulate(Telemetry::SPDY_SYN_REPLY_RATIO, ratio); - } - // The decoding went ok. Now we can customize and clean up. aHeadersIn.Truncate(); diff --git a/netwerk/protocol/http/HttpBaseChannel.cpp b/netwerk/protocol/http/HttpBaseChannel.cpp index d161f9a43..c4e764d26 100644 --- a/netwerk/protocol/http/HttpBaseChannel.cpp +++ b/netwerk/protocol/http/HttpBaseChannel.cpp @@ -49,7 +49,6 @@ #include "LoadInfo.h" #include "nsNullPrincipal.h" #include "nsISSLSocketControl.h" -#include "mozilla/Telemetry.h" #include "nsIURL.h" #include "nsIConsoleService.h" #include "mozilla/BinarySearch.h" @@ -1006,7 +1005,6 @@ HttpBaseChannel::DoApplyContentConversions(nsIStreamListener* aNextListener, } else if (from.Equals("br")) { mode = 3; } - Telemetry::Accumulate(Telemetry::HTTP_CONTENT_ENCODING, mode); } nextListener = converter; } diff --git a/netwerk/protocol/http/nsCORSListenerProxy.cpp b/netwerk/protocol/http/nsCORSListenerProxy.cpp index c2a624330..b9355c82b 100644 --- a/netwerk/protocol/http/nsCORSListenerProxy.cpp +++ b/netwerk/protocol/http/nsCORSListenerProxy.cpp @@ -577,7 +577,7 @@ nsCORSListenerProxy::CheckRequestApproved(nsIRequest* aRequest) // check for duplicate headers rv = http->VisitOriginalResponseHeaders(visitor); if (NS_FAILED(rv)) { - LogBlockedRequest(aRequest, "CORSAllowOriginNotMatchingOrigin", nullptr); + LogBlockedRequest(aRequest, "CORSMultipleAllowOriginNotAllowed", nullptr); return rv; } diff --git a/netwerk/protocol/http/nsHttpChannel.cpp b/netwerk/protocol/http/nsHttpChannel.cpp index ac855b478..bb0b3ca77 100644 --- a/netwerk/protocol/http/nsHttpChannel.cpp +++ b/netwerk/protocol/http/nsHttpChannel.cpp @@ -133,18 +133,7 @@ enum CacheDisposition { void AccumulateCacheHitTelemetry(CacheDisposition hitOrMiss) { - if (!CacheObserver::UseNewCache()) { - Telemetry::Accumulate(Telemetry::HTTP_CACHE_DISPOSITION_2, hitOrMiss); - } - else { - Telemetry::Accumulate(Telemetry::HTTP_CACHE_DISPOSITION_2_V2, hitOrMiss); - - int32_t experiment = CacheObserver::HalfLifeExperiment(); - if (experiment > 0 && hitOrMiss == kCacheMissed) { - Telemetry::Accumulate(Telemetry::HTTP_CACHE_MISS_HALFLIFE_EXPERIMENT_2, - experiment - 1); - } - } + /* STUB */ } // Computes and returns a SHA1 hash of the input buffer. The input buffer @@ -1141,26 +1130,21 @@ EnsureMIMEOfScript(nsIURI* aURI, nsHttpResponseHead* aResponseHead, nsILoadInfo* if (nsContentUtils::IsJavascriptMIMEType(typeString)) { // script load has type script - Telemetry::Accumulate(Telemetry::SCRIPT_BLOCK_INCORRECT_MIME, 1); return NS_OK; } bool block = false; if (StringBeginsWith(contentType, NS_LITERAL_CSTRING("image/"))) { // script load has type image - Telemetry::Accumulate(Telemetry::SCRIPT_BLOCK_INCORRECT_MIME, 2); block = true; } else if (StringBeginsWith(contentType, NS_LITERAL_CSTRING("audio/"))) { // script load has type audio - Telemetry::Accumulate(Telemetry::SCRIPT_BLOCK_INCORRECT_MIME, 3); block = true; } else if (StringBeginsWith(contentType, NS_LITERAL_CSTRING("video/"))) { // script load has type video - Telemetry::Accumulate(Telemetry::SCRIPT_BLOCK_INCORRECT_MIME, 4); block = true; } else if (StringBeginsWith(contentType, NS_LITERAL_CSTRING("text/csv"))) { // script load has type text/csv - Telemetry::Accumulate(Telemetry::SCRIPT_BLOCK_INCORRECT_MIME, 6); block = true; } @@ -1186,42 +1170,35 @@ EnsureMIMEOfScript(nsIURI* aURI, nsHttpResponseHead* aResponseHead, nsILoadInfo* if (StringBeginsWith(contentType, NS_LITERAL_CSTRING("text/plain"))) { // script load has type text/plain - Telemetry::Accumulate(Telemetry::SCRIPT_BLOCK_INCORRECT_MIME, 5); return NS_OK; } if (StringBeginsWith(contentType, NS_LITERAL_CSTRING("text/xml"))) { // script load has type text/xml - Telemetry::Accumulate(Telemetry::SCRIPT_BLOCK_INCORRECT_MIME, 7); return NS_OK; } if (StringBeginsWith(contentType, NS_LITERAL_CSTRING("application/octet-stream"))) { // script load has type application/octet-stream - Telemetry::Accumulate(Telemetry::SCRIPT_BLOCK_INCORRECT_MIME, 8); return NS_OK; } if (StringBeginsWith(contentType, NS_LITERAL_CSTRING("application/xml"))) { // script load has type application/xml - Telemetry::Accumulate(Telemetry::SCRIPT_BLOCK_INCORRECT_MIME, 9); return NS_OK; } if (StringBeginsWith(contentType, NS_LITERAL_CSTRING("text/html"))) { // script load has type text/html - Telemetry::Accumulate(Telemetry::SCRIPT_BLOCK_INCORRECT_MIME, 10); return NS_OK; } if (contentType.IsEmpty()) { // script load has no type - Telemetry::Accumulate(Telemetry::SCRIPT_BLOCK_INCORRECT_MIME, 11); return NS_OK; } // script load has unknown type - Telemetry::Accumulate(Telemetry::SCRIPT_BLOCK_INCORRECT_MIME, 0); return NS_OK; } @@ -1867,65 +1844,6 @@ nsHttpChannel::ProcessResponse() LOG(("nsHttpChannel::ProcessResponse [this=%p httpStatus=%u]\n", this, httpStatus)); - // do some telemetry - if (gHttpHandler->IsTelemetryEnabled()) { - // Gather data on whether the transaction and page (if this is - // the initial page load) is being loaded with SSL. - Telemetry::Accumulate(Telemetry::HTTP_TRANSACTION_IS_SSL, - mConnectionInfo->EndToEndSSL()); - if (mLoadFlags & LOAD_INITIAL_DOCUMENT_URI) { - Telemetry::Accumulate(Telemetry::HTTP_PAGELOAD_IS_SSL, - mConnectionInfo->EndToEndSSL()); - } - - // how often do we see something like Alternate-Protocol: "443:quic,p=1" - nsAutoCString alt_protocol; - mResponseHead->GetHeader(nsHttp::Alternate_Protocol, alt_protocol); - bool saw_quic = (!alt_protocol.IsEmpty() && - PL_strstr(alt_protocol.get(), "quic")) ? 1 : 0; - Telemetry::Accumulate(Telemetry::HTTP_SAW_QUIC_ALT_PROTOCOL, saw_quic); - - // Gather data on how many URLS get redirected - switch (httpStatus) { - case 200: - Telemetry::Accumulate(Telemetry::HTTP_RESPONSE_STATUS_CODE, 0); - break; - case 301: - Telemetry::Accumulate(Telemetry::HTTP_RESPONSE_STATUS_CODE, 1); - break; - case 302: - Telemetry::Accumulate(Telemetry::HTTP_RESPONSE_STATUS_CODE, 2); - break; - case 304: - Telemetry::Accumulate(Telemetry::HTTP_RESPONSE_STATUS_CODE, 3); - break; - case 307: - Telemetry::Accumulate(Telemetry::HTTP_RESPONSE_STATUS_CODE, 4); - break; - case 308: - Telemetry::Accumulate(Telemetry::HTTP_RESPONSE_STATUS_CODE, 5); - break; - case 400: - Telemetry::Accumulate(Telemetry::HTTP_RESPONSE_STATUS_CODE, 6); - break; - case 401: - Telemetry::Accumulate(Telemetry::HTTP_RESPONSE_STATUS_CODE, 7); - break; - case 403: - Telemetry::Accumulate(Telemetry::HTTP_RESPONSE_STATUS_CODE, 8); - break; - case 404: - Telemetry::Accumulate(Telemetry::HTTP_RESPONSE_STATUS_CODE, 9); - break; - case 500: - Telemetry::Accumulate(Telemetry::HTTP_RESPONSE_STATUS_CODE, 10); - break; - default: - Telemetry::Accumulate(Telemetry::HTTP_RESPONSE_STATUS_CODE, 11); - break; - } - } - // Let the predictor know whether this was a cacheable response or not so // that it knows whether or not to possibly prefetch this resource in the // future. @@ -2204,9 +2122,6 @@ nsHttpChannel::ContinueProcessResponse2(nsresult rv) } AccumulateCacheHitTelemetry(cacheDisposition); - Telemetry::Accumulate(Telemetry::HTTP_RESPONSE_VERSION, - mResponseHead->Version()); - if (mResponseHead->Version() == NS_HTTP_VERSION_0_9) { // DefaultPortTopLevel = 0, DefaultPortSubResource = 1, // NonDefaultPortTopLevel = 2, NonDefaultPortSubResource = 3 @@ -2217,7 +2132,6 @@ nsHttpChannel::ContinueProcessResponse2(nsresult rv) if (mConnectionInfo->OriginPort() != mConnectionInfo->DefaultPort()) { v09Info += 2; } - Telemetry::Accumulate(Telemetry::HTTP_09_INFO, v09Info); } } return rv; @@ -3212,7 +3126,6 @@ nsHttpChannel::ProcessNotModified() PipelineFeedbackInfo(mConnectionInfo, nsHttpConnectionMgr::RedCorruptedContent, nullptr, 0); - Telemetry::Accumulate(Telemetry::CACHE_LM_INCONSISTENT, true); } // merge any new headers with the cached response headers @@ -3372,10 +3285,6 @@ nsHttpChannel::ContinueProcessFallback(nsresult rv) } NS_ENSURE_SUCCESS(rv, rv); - if (mLoadFlags & LOAD_INITIAL_DOCUMENT_URI) { - MaybeWarnAboutAppCache(); - } - // close down this channel Cancel(NS_BINDING_REDIRECTED); @@ -4226,11 +4135,6 @@ nsHttpChannel::OnNormalCacheEntryAvailable(nsICacheEntry *aEntry, if (NS_SUCCEEDED(aEntryStatus)) { mCacheEntry = aEntry; mCacheEntryIsWriteOnly = aNew; - - if (mLoadFlags & LOAD_INITIAL_DOCUMENT_URI) { - Telemetry::Accumulate(Telemetry::HTTP_OFFLINE_CACHE_DOCUMENT_LOAD, - false); - } } return NS_OK; @@ -4261,10 +4165,6 @@ nsHttpChannel::OnOfflineCacheEntryAvailable(nsICacheEntry *aEntry, mCacheEntry = aEntry; mCacheEntryIsWriteOnly = false; - if (mLoadFlags & LOAD_INITIAL_DOCUMENT_URI && !mApplicationCacheForWrite) { - MaybeWarnAboutAppCache(); - } - return NS_OK; } @@ -5905,17 +5805,13 @@ nsHttpChannel::BeginConnect() LOG(("nsHttpChannel %p Using connection info from altsvc mapping", this)); mapping->GetConnectionInfo(getter_AddRefs(mConnectionInfo), proxyInfo, originAttributes); - Telemetry::Accumulate(Telemetry::HTTP_TRANSACTION_USE_ALTSVC, true); - Telemetry::Accumulate(Telemetry::HTTP_TRANSACTION_USE_ALTSVC_OE, !isHttps); } else if (mConnectionInfo) { LOG(("nsHttpChannel %p Using channel supplied connection info", this)); - Telemetry::Accumulate(Telemetry::HTTP_TRANSACTION_USE_ALTSVC, false); } else { LOG(("nsHttpChannel %p Using default connection info", this)); mConnectionInfo = new nsHttpConnectionInfo(host, port, EmptyCString(), mUsername, proxyInfo, originAttributes, isHttps); - Telemetry::Accumulate(Telemetry::HTTP_TRANSACTION_USE_ALTSVC, false); } // Set network interface id only when it's not empty to avoid @@ -6837,7 +6733,6 @@ nsHttpChannel::OnStopRequest(nsIRequest *request, nsISupports *ctxt, nsresult st chanDisposition = static_cast<ChannelDisposition>(chanDisposition + kHttpsCanceled); } LOG((" nsHttpChannel::OnStopRequest ChannelDisposition %d\n", chanDisposition)); - Telemetry::Accumulate(Telemetry::HTTP_CHANNEL_DISPOSITION, chanDisposition); // if needed, check cache entry has all data we expect if (mCacheEntry && mCachePump && @@ -8187,21 +8082,6 @@ nsHttpChannel::ResumeInternal() } void -nsHttpChannel::MaybeWarnAboutAppCache() -{ - // First, accumulate a telemetry ping about appcache usage. - Telemetry::Accumulate(Telemetry::HTTP_OFFLINE_CACHE_DOCUMENT_LOAD, - true); - - // Then, issue a deprecation warning. - nsCOMPtr<nsIDeprecationWarner> warner; - GetCallback(warner); - if (warner) { - warner->IssueWarning(nsIDocument::eAppCache, false); - } -} - -void nsHttpChannel::SetDoNotTrack() { /** @@ -8223,129 +8103,7 @@ nsHttpChannel::SetDoNotTrack() void nsHttpChannel::ReportNetVSCacheTelemetry() { - nsresult rv; - if (!mCacheEntry) { - return; - } - - // We only report telemetry if the entry is persistent (on disk) - bool persistent; - rv = mCacheEntry->GetPersistent(&persistent); - if (NS_FAILED(rv) || !persistent) { - return; - } - - nsXPIDLCString tmpStr; - rv = mCacheEntry->GetMetaDataElement("net-response-time-onstart", - getter_Copies(tmpStr)); - if (NS_FAILED(rv)) { - return; - } - uint64_t onStartNetTime = tmpStr.ToInteger64(&rv); - if (NS_FAILED(rv)) { - return; - } - - tmpStr.Truncate(); - rv = mCacheEntry->GetMetaDataElement("net-response-time-onstop", - getter_Copies(tmpStr)); - if (NS_FAILED(rv)) { - return; - } - uint64_t onStopNetTime = tmpStr.ToInteger64(&rv); - if (NS_FAILED(rv)) { - return; - } - - uint64_t onStartCacheTime = (mOnStartRequestTimestamp - mAsyncOpenTime).ToMilliseconds(); - int64_t onStartDiff = onStartNetTime - onStartCacheTime; - onStartDiff += 500; // We offset the difference by 500 ms to report positive values in telemetry - - uint64_t onStopCacheTime = (mCacheReadEnd - mAsyncOpenTime).ToMilliseconds(); - int64_t onStopDiff = onStopNetTime - onStopCacheTime; - onStopDiff += 500; // We offset the difference by 500 ms - - if (mDidReval) { - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_REVALIDATED, onStartDiff); - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_REVALIDATED, onStopDiff); - } else { - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_NOTREVALIDATED, onStartDiff); - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_NOTREVALIDATED, onStopDiff); - } - - if (mDidReval) { - // We don't report revalidated probes as the data would be skewed. - return; - } - - uint32_t diskStorageSizeK = 0; - rv = mCacheEntry->GetDiskStorageSizeInKB(&diskStorageSizeK); - if (NS_FAILED(rv)) { - return; - } - - nsAutoCString contentType; - if (mResponseHead && mResponseHead->HasContentType()) { - mResponseHead->ContentType(contentType); - } - bool isImage = StringBeginsWith(contentType, NS_LITERAL_CSTRING("image/")); - if (isImage) { - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_ISIMG, onStartDiff); - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_ISIMG, onStopDiff); - } else { - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_NOTIMG, onStartDiff); - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_NOTIMG, onStopDiff); - } - - if (mCacheOpenWithPriority) { - if (mCacheQueueSizeWhenOpen < 5) { - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_QSMALL_HIGHPRI, onStartDiff); - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_QSMALL_HIGHPRI, onStopDiff); - } else if (mCacheQueueSizeWhenOpen < 10) { - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_QMED_HIGHPRI, onStartDiff); - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_QMED_HIGHPRI, onStopDiff); - } else { - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_QBIG_HIGHPRI, onStartDiff); - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_QBIG_HIGHPRI, onStopDiff); - } - } else { // The limits are higher for normal priority cache queues - if (mCacheQueueSizeWhenOpen < 10) { - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_QSMALL_NORMALPRI, onStartDiff); - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_QSMALL_NORMALPRI, onStopDiff); - } else if (mCacheQueueSizeWhenOpen < 50) { - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_QMED_NORMALPRI, onStartDiff); - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_QMED_NORMALPRI, onStopDiff); - } else { - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_QBIG_NORMALPRI, onStartDiff); - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_QBIG_NORMALPRI, onStopDiff); - } - } - - if (diskStorageSizeK < 32) { - if (mCacheOpenWithPriority) { - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_SMALL_HIGHPRI, onStartDiff); - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_SMALL_HIGHPRI, onStopDiff); - } else { - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_SMALL_NORMALPRI, onStartDiff); - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_SMALL_NORMALPRI, onStopDiff); - } - } else if (diskStorageSizeK < 256) { - if (mCacheOpenWithPriority) { - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_MED_HIGHPRI, onStartDiff); - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_MED_HIGHPRI, onStopDiff); - } else { - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_MED_NORMALPRI, onStartDiff); - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_MED_NORMALPRI, onStopDiff); - } - } else { - if (mCacheOpenWithPriority) { - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_LARGE_HIGHPRI, onStartDiff); - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_LARGE_HIGHPRI, onStopDiff); - } else { - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_LARGE_NORMALPRI, onStartDiff); - Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_LARGE_NORMALPRI, onStopDiff); - } - } + /* STUB */ } } // namespace net diff --git a/netwerk/protocol/http/nsHttpChannel.h b/netwerk/protocol/http/nsHttpChannel.h index 3a322e8e2..2e24d6e81 100644 --- a/netwerk/protocol/http/nsHttpChannel.h +++ b/netwerk/protocol/http/nsHttpChannel.h @@ -452,8 +452,6 @@ private: void SetPushedStream(Http2PushedStream *stream); - void MaybeWarnAboutAppCache(); - void SetDoNotTrack(); private: diff --git a/netwerk/protocol/http/nsHttpChannelAuthProvider.cpp b/netwerk/protocol/http/nsHttpChannelAuthProvider.cpp index d04f47ddc..0e7eb55c3 100644 --- a/netwerk/protocol/http/nsHttpChannelAuthProvider.cpp +++ b/netwerk/protocol/http/nsHttpChannelAuthProvider.cpp @@ -867,24 +867,6 @@ nsHttpChannelAuthProvider::GetCredentialsForChallenge(const char *challenge, else if (authFlags & nsIHttpAuthenticator::IDENTITY_ENCRYPTED) level = nsIAuthPrompt2::LEVEL_PW_ENCRYPTED; - // Collect statistics on how frequently the various types of HTTP - // authentication are used over SSL and non-SSL connections. - if (gHttpHandler->IsTelemetryEnabled()) { - if (NS_LITERAL_CSTRING("basic").LowerCaseEqualsASCII(authType)) { - Telemetry::Accumulate(Telemetry::HTTP_AUTH_TYPE_STATS, - UsingSSL() ? HTTP_AUTH_BASIC_SECURE : HTTP_AUTH_BASIC_INSECURE); - } else if (NS_LITERAL_CSTRING("digest").LowerCaseEqualsASCII(authType)) { - Telemetry::Accumulate(Telemetry::HTTP_AUTH_TYPE_STATS, - UsingSSL() ? HTTP_AUTH_DIGEST_SECURE : HTTP_AUTH_DIGEST_INSECURE); - } else if (NS_LITERAL_CSTRING("ntlm").LowerCaseEqualsASCII(authType)) { - Telemetry::Accumulate(Telemetry::HTTP_AUTH_TYPE_STATS, - UsingSSL() ? HTTP_AUTH_NTLM_SECURE : HTTP_AUTH_NTLM_INSECURE); - } else if (NS_LITERAL_CSTRING("negotiate").LowerCaseEqualsASCII(authType)) { - Telemetry::Accumulate(Telemetry::HTTP_AUTH_TYPE_STATS, - UsingSSL() ? HTTP_AUTH_NEGOTIATE_SECURE : HTTP_AUTH_NEGOTIATE_INSECURE); - } - } - // Depending on the pref setting, the authentication dialog may be // blocked for all sub-resources, blocked for cross-origin // sub-resources, or always allowed for sub-resources. @@ -991,22 +973,6 @@ nsHttpChannelAuthProvider::BlockPrompt() } } - if (gHttpHandler->IsTelemetryEnabled()) { - if (topDoc) { - Telemetry::Accumulate(Telemetry::HTTP_AUTH_DIALOG_STATS, - HTTP_AUTH_DIALOG_TOP_LEVEL_DOC); - } else if (xhr) { - Telemetry::Accumulate(Telemetry::HTTP_AUTH_DIALOG_STATS, - HTTP_AUTH_DIALOG_XHR); - } else if (!mCrossOrigin) { - Telemetry::Accumulate(Telemetry::HTTP_AUTH_DIALOG_STATS, - HTTP_AUTH_DIALOG_SAME_ORIGIN_SUBRESOURCE); - } else { - Telemetry::Accumulate(Telemetry::HTTP_AUTH_DIALOG_STATS, - HTTP_AUTH_DIALOG_CROSS_ORIGIN_SUBRESOURCE); - } - } - switch (sAuthAllowPref) { case SUBRESOURCE_AUTH_DIALOG_DISALLOW_ALL: // Do not open the http-authentication credentials dialog for diff --git a/netwerk/protocol/http/nsHttpConnection.cpp b/netwerk/protocol/http/nsHttpConnection.cpp index c4564cd8b..8ccba76e2 100644 --- a/netwerk/protocol/http/nsHttpConnection.cpp +++ b/netwerk/protocol/http/nsHttpConnection.cpp @@ -19,7 +19,6 @@ #include "ASpdySession.h" #include "mozilla/ChaosMode.h" -#include "mozilla/Telemetry.h" #include "nsHttpConnection.h" #include "nsHttpHandler.h" #include "nsHttpPipeline.h" @@ -105,18 +104,12 @@ nsHttpConnection::~nsHttpConnection() if (!mEverUsedSpdy) { LOG(("nsHttpConnection %p performed %d HTTP/1.x transactions\n", this, mHttp1xTransactionCount)); - Telemetry::Accumulate(Telemetry::HTTP_REQUEST_PER_CONN, - mHttp1xTransactionCount); } if (mTotalBytesRead) { uint32_t totalKBRead = static_cast<uint32_t>(mTotalBytesRead >> 10); LOG(("nsHttpConnection %p read %dkb on connection spdy=%d\n", this, totalKBRead, mEverUsedSpdy)); - Telemetry::Accumulate(mEverUsedSpdy ? - Telemetry::SPDY_KBREAD_PER_CONN : - Telemetry::HTTP_KBREAD_PER_CONN, - totalKBRead); } if (mForceSendTimer) { mForceSendTimer->Cancel(); @@ -482,21 +475,6 @@ nsHttpConnection::EnsureNPNComplete(nsresult &aOut0RTTWriteHandshakeValue, int16_t tlsVersion; ssl->GetSSLVersionUsed(&tlsVersion); - // Send the 0RTT telemetry only for tls1.3 - if (tlsVersion > nsISSLSocketControl::TLS_VERSION_1_2) { - Telemetry::Accumulate(Telemetry::TLS_EARLY_DATA_NEGOTIATED, - (!mEarlyDataNegotiated) ? TLS_EARLY_DATA_NOT_AVAILABLE - : ((mWaitingFor0RTTResponse) ? TLS_EARLY_DATA_AVAILABLE_AND_USED - : TLS_EARLY_DATA_AVAILABLE_BUT_NOT_USED)); - if (mWaitingFor0RTTResponse) { - Telemetry::Accumulate(Telemetry::TLS_EARLY_DATA_ACCEPTED, - earlyDataAccepted); - } - if (earlyDataAccepted) { - Telemetry::Accumulate(Telemetry::TLS_EARLY_DATA_BYTES_WRITTEN, - mContentBytesWritten0RTT); - } - } mWaitingFor0RTTResponse = false; if (!earlyDataAccepted) { @@ -518,8 +496,6 @@ nsHttpConnection::EnsureNPNComplete(nsresult &aOut0RTTWriteHandshakeValue, StartSpdy(mSpdySession->SpdyVersion()); } } - - Telemetry::Accumulate(Telemetry::SPDY_NPN_CONNECT, UsingSpdy()); } npnComplete: diff --git a/netwerk/protocol/http/nsHttpConnectionMgr.cpp b/netwerk/protocol/http/nsHttpConnectionMgr.cpp index 9271b49af..731cdff39 100644 --- a/netwerk/protocol/http/nsHttpConnectionMgr.cpp +++ b/netwerk/protocol/http/nsHttpConnectionMgr.cpp @@ -23,7 +23,6 @@ #include "mozilla/net/DNS.h" #include "nsISocketTransport.h" #include "nsISSLSocketControl.h" -#include "mozilla/Telemetry.h" #include "mozilla/net/DashboardTypes.h" #include "NullHttpTransaction.h" #include "nsIDNSRecord.h" @@ -847,7 +846,6 @@ nsHttpConnectionMgr::GetSpdyPreferredEnt(nsConnectionEntry *aOriginalEntry) "with %s connections. rv=%x isJoined=%d", preferred->mConnInfo->Origin(), aOriginalEntry->mConnInfo->Origin(), rv, isJoined)); - Telemetry::Accumulate(Telemetry::SPDY_NPN_JOIN, false); return nullptr; } @@ -857,7 +855,6 @@ nsHttpConnectionMgr::GetSpdyPreferredEnt(nsConnectionEntry *aOriginalEntry) "so %s will be coalesced with %s", preferred->mConnInfo->Origin(), aOriginalEntry->mConnInfo->Origin(), aOriginalEntry->mConnInfo->Origin(), preferred->mConnInfo->Origin())); - Telemetry::Accumulate(Telemetry::SPDY_NPN_JOIN, true); return preferred; } @@ -1835,16 +1832,7 @@ nsHttpConnectionMgr::BuildPipeline(nsConnectionEntry *ent, void nsHttpConnectionMgr::ReportProxyTelemetry(nsConnectionEntry *ent) { - enum { PROXY_NONE = 1, PROXY_HTTP = 2, PROXY_SOCKS = 3, PROXY_HTTPS = 4 }; - - if (!ent->mConnInfo->UsingProxy()) - Telemetry::Accumulate(Telemetry::HTTP_PROXY_TYPE, PROXY_NONE); - else if (ent->mConnInfo->UsingHttpsProxy()) - Telemetry::Accumulate(Telemetry::HTTP_PROXY_TYPE, PROXY_HTTPS); - else if (ent->mConnInfo->UsingHttpProxy()) - Telemetry::Accumulate(Telemetry::HTTP_PROXY_TYPE, PROXY_HTTP); - else - Telemetry::Accumulate(Telemetry::HTTP_PROXY_TYPE, PROXY_SOCKS); + /* STUB */ } nsresult @@ -3107,8 +3095,6 @@ nsHalfOpenSocket::SetupStreams(nsISocketTransport **transport, rv = socketTransport->SetSecurityCallbacks(this); NS_ENSURE_SUCCESS(rv, rv); - Telemetry::Accumulate(Telemetry::HTTP_CONNECTION_ENTRY_CACHE_HIT_1, - mEnt->mUsedForConnection); mEnt->mUsedForConnection = true; nsCOMPtr<nsIOutputStream> sout; diff --git a/netwerk/protocol/http/nsHttpHandler.cpp b/netwerk/protocol/http/nsHttpHandler.cpp index f9bcc391d..6d58a7004 100644 --- a/netwerk/protocol/http/nsHttpHandler.cpp +++ b/netwerk/protocol/http/nsHttpHandler.cpp @@ -58,7 +58,6 @@ #include "mozilla/net/NeckoChild.h" #include "mozilla/net/NeckoParent.h" #include "mozilla/ipc/URIUtils.h" -#include "mozilla/Telemetry.h" #include "mozilla/Unused.h" #include "mozilla/BasePrincipal.h" @@ -203,6 +202,7 @@ nsHttpHandler::nsHttpHandler() , mCompatFirefoxEnabled(false) , mCompatFirefoxVersion("52.9") , mUserAgentIsDirty(true) + , mAcceptLanguagesIsDirty(true) , mPromptTempRedirect(true) , mEnablePersistentHttpsCaching(false) , mDoNotTrackEnabled(false) @@ -419,6 +419,7 @@ nsHttpHandler::Init() obsService->AddObserver(this, "browser:purge-session-history", true); obsService->AddObserver(this, NS_NETWORK_LINK_TOPIC, true); obsService->AddObserver(this, "application-background", true); + obsService->AddObserver(this, "string-bundles-have-flushed", true); } MakeNewRequestTokenBucket(); @@ -489,8 +490,13 @@ nsHttpHandler::AddStandardRequestHeaders(nsHttpRequestHead *request, bool isSecu // Add the "Accept-Language" header. This header is also exposed to the // service worker. + if (mAcceptLanguagesIsDirty) { + rv = SetAcceptLanguages(); + MOZ_ASSERT(NS_SUCCEEDED(rv)); + } + + // Add the "Accept-Language" header if (!mAcceptLanguages.IsEmpty()) { - // Add the "Accept-Language" header rv = request->SetHeader(nsHttp::Accept_Language, mAcceptLanguages, false, nsHttpHeaderArray::eVarietyRequestOverride); @@ -1511,16 +1517,10 @@ nsHttpHandler::PrefsChanged(nsIPrefBranch *prefs, const char *pref) // if (PREF_CHANGED(INTL_ACCEPT_LANGUAGES)) { - nsCOMPtr<nsIPrefLocalizedString> pls; - prefs->GetComplexValue(INTL_ACCEPT_LANGUAGES, - NS_GET_IID(nsIPrefLocalizedString), - getter_AddRefs(pls)); - if (pls) { - nsXPIDLString uval; - pls->ToString(getter_Copies(uval)); - if (uval) - SetAcceptLanguages(NS_ConvertUTF16toUTF8(uval).get()); - } + // We don't want to set the new accept languages here since + // this pref is a complex type and it may be racy with flushing + // string resources. + mAcceptLanguagesIsDirty = true; } // @@ -1897,12 +1897,18 @@ PrepareAcceptLanguages(const char *i_AcceptLanguages, nsACString &o_AcceptLangua } nsresult -nsHttpHandler::SetAcceptLanguages(const char *aAcceptLanguages) +nsHttpHandler::SetAcceptLanguages() { + mAcceptLanguagesIsDirty = false; + + const nsAdoptingCString& acceptLanguages = + Preferences::GetLocalizedCString(INTL_ACCEPT_LANGUAGES); + nsAutoCString buf; - nsresult rv = PrepareAcceptLanguages(aAcceptLanguages, buf); - if (NS_SUCCEEDED(rv)) + nsresult rv = PrepareAcceptLanguages(acceptLanguages.get(), buf); + if (NS_SUCCEEDED(rv)) { mAcceptLanguages.Assign(buf); + } return rv; } @@ -2175,11 +2181,6 @@ nsHttpHandler::Observe(nsISupports *subject, // depend on this value. mSessionStartTime = NowInSeconds(); - if (!mDoNotTrackEnabled) { - Telemetry::Accumulate(Telemetry::DNT_USAGE, 2); - } else { - Telemetry::Accumulate(Telemetry::DNT_USAGE, 1); - } } else if (!strcmp(topic, "profile-change-net-restore")) { // initialize connection manager InitConnectionMgr(); @@ -2233,6 +2234,8 @@ nsHttpHandler::Observe(nsISupports *subject, if (mConnMgr) { mConnMgr->DoShiftReloadConnectionCleanup(nullptr); } + } else if (!strcmp(topic, "string-bundles-have-flushed")) { + mAcceptLanguagesIsDirty = true; } return NS_OK; diff --git a/netwerk/protocol/http/nsHttpHandler.h b/netwerk/protocol/http/nsHttpHandler.h index 0904af893..848dd25b1 100644 --- a/netwerk/protocol/http/nsHttpHandler.h +++ b/netwerk/protocol/http/nsHttpHandler.h @@ -384,7 +384,7 @@ private: void PrefsChanged(nsIPrefBranch *prefs, const char *pref); nsresult SetAccept(const char *); - nsresult SetAcceptLanguages(const char *); + nsresult SetAcceptLanguages(); nsresult SetAcceptEncodings(const char *, bool mIsSecure); nsresult InitConnectionMgr(); @@ -491,6 +491,7 @@ private: nsCString mUserAgent; nsXPIDLCString mUserAgentOverride; bool mUserAgentIsDirty; // true if mUserAgent should be rebuilt + bool mAcceptLanguagesIsDirty; bool mPromptTempRedirect; diff --git a/netwerk/protocol/websocket/WebSocketChannel.cpp b/netwerk/protocol/websocket/WebSocketChannel.cpp index c6dc8d328..1bcdbcacc 100644 --- a/netwerk/protocol/websocket/WebSocketChannel.cpp +++ b/netwerk/protocol/websocket/WebSocketChannel.cpp @@ -55,7 +55,6 @@ #include "nsNetUtil.h" #include "nsINode.h" #include "mozilla/StaticMutex.h" -#include "mozilla/Telemetry.h" #include "mozilla/TimeStamp.h" #include "nsSocketTransportService2.h" @@ -2989,7 +2988,6 @@ WebSocketChannel::ReportConnectionTelemetry() (didProxy ? (1 << 0) : 0); LOG(("WebSocketChannel::ReportConnectionTelemetry() %p %d", this, value)); - Telemetry::Accumulate(Telemetry::WEBSOCKETS_HANDSHAKE_TYPE, value); } // nsIDNSListener diff --git a/netwerk/system/linux/nsNotifyAddrListener_Linux.cpp b/netwerk/system/linux/nsNotifyAddrListener_Linux.cpp index 4fc36928a..b9f912d1d 100644 --- a/netwerk/system/linux/nsNotifyAddrListener_Linux.cpp +++ b/netwerk/system/linux/nsNotifyAddrListener_Linux.cpp @@ -24,7 +24,6 @@ #include "mozilla/Services.h" #include "mozilla/SHA1.h" #include "mozilla/Sprintf.h" -#include "mozilla/Telemetry.h" /* a shorter name that better explains what it does */ #define EINTR_RETRY(x) MOZ_TEMP_FAILURE_RETRY(x) @@ -176,12 +175,10 @@ void nsNotifyAddrListener::calculateNetworkId(void) LOG(("networkid: id %s\n", output.get())); if (mNetworkId != output) { // new id - Telemetry::Accumulate(Telemetry::NETWORK_ID, 1); mNetworkId = output; } else { // same id - Telemetry::Accumulate(Telemetry::NETWORK_ID, 2); } found = true; break; @@ -195,7 +192,6 @@ void nsNotifyAddrListener::calculateNetworkId(void) } /* if (froute) */ if (!found) { // no id - Telemetry::Accumulate(Telemetry::NETWORK_ID, 0); } } diff --git a/netwerk/system/mac/nsNetworkLinkService.mm b/netwerk/system/mac/nsNetworkLinkService.mm index ac6a015fb..5b2d7575a 100644 --- a/netwerk/system/mac/nsNetworkLinkService.mm +++ b/netwerk/system/mac/nsNetworkLinkService.mm @@ -24,7 +24,6 @@ #include "mozilla/Preferences.h" #include "mozilla/SHA1.h" #include "mozilla/Base64.h" -#include "mozilla/Telemetry.h" #include "nsNetworkLinkService.h" #import <Cocoa/Cocoa.h> @@ -274,19 +273,16 @@ void nsNetworkLinkService::calculateNetworkId(void) LOG(("networkid: id %s\n", output.get())); if (mNetworkId != output) { // new id - Telemetry::Accumulate(Telemetry::NETWORK_ID, 1); mNetworkId = output; } else { // same id - Telemetry::Accumulate(Telemetry::NETWORK_ID, 2); } found = true; } } if (!found) { // no id - Telemetry::Accumulate(Telemetry::NETWORK_ID, 0); } } diff --git a/netwerk/system/win32/nsNotifyAddrListener.cpp b/netwerk/system/win32/nsNotifyAddrListener.cpp index 5d1ec3a61..58f4345ef 100644 --- a/netwerk/system/win32/nsNotifyAddrListener.cpp +++ b/netwerk/system/win32/nsNotifyAddrListener.cpp @@ -35,7 +35,6 @@ #include "mozilla/Preferences.h" #include "mozilla/SHA1.h" #include "mozilla/Base64.h" -#include "mozilla/Telemetry.h" #include <iptypes.h> #include <iphlpapi.h> @@ -218,12 +217,10 @@ bool nsNotifyAddrListener::findMac(char *gateway) LOG(("networkid: id %s\n", output.get())); if (mNetworkId != output) { // new id - Telemetry::Accumulate(Telemetry::NETWORK_ID, 1); mNetworkId = output; } else { // same id - Telemetry::Accumulate(Telemetry::NETWORK_ID, 2); } found = true; break; @@ -290,7 +287,6 @@ void nsNotifyAddrListener::calculateNetworkId(void) } if (!found) { // no id - Telemetry::Accumulate(Telemetry::NETWORK_ID, 0); } } diff --git a/netwerk/test/unit/test_be_conservative.js b/netwerk/test/unit/test_be_conservative.js index 2c6ac46ad..36b6d3b90 100644 --- a/netwerk/test/unit/test_be_conservative.js +++ b/netwerk/test/unit/test_be_conservative.js @@ -140,7 +140,6 @@ function startServer(cert, minServerVersion, maxServerVersion) { tlsServer.init(-1, true, -1); tlsServer.serverCert = cert; tlsServer.setVersionRange(minServerVersion, maxServerVersion); - tlsServer.setSessionCache(false); tlsServer.setSessionTickets(false); tlsServer.asyncListen(new ServerSocketListener()); return tlsServer; diff --git a/netwerk/test/unit/test_tls_server.js b/netwerk/test/unit/test_tls_server.js index d805359c7..12154a27f 100644 --- a/netwerk/test/unit/test_tls_server.js +++ b/netwerk/test/unit/test_tls_server.js @@ -90,7 +90,6 @@ function startServer(cert, expectingPeerCert, clientCertificateConfig, onStopListening: function() {} }; - tlsServer.setSessionCache(false); tlsServer.setSessionTickets(false); tlsServer.setRequestClientCertificate(clientCertificateConfig); diff --git a/netwerk/test/unit/test_tls_server_multiple_clients.js b/netwerk/test/unit/test_tls_server_multiple_clients.js index b63c0189b..74b814e9c 100644 --- a/netwerk/test/unit/test_tls_server_multiple_clients.js +++ b/netwerk/test/unit/test_tls_server_multiple_clients.js @@ -67,7 +67,6 @@ function startServer(cert) { onStopListening: function() {} }; - tlsServer.setSessionCache(true); tlsServer.setSessionTickets(false); tlsServer.asyncListen(listener); diff --git a/old-configure.in b/old-configure.in index d40305309..96bb934e1 100644 --- a/old-configure.in +++ b/old-configure.in @@ -2044,7 +2044,7 @@ MOZ_ARG_WITH_BOOL(system-nss, _USE_SYSTEM_NSS=1 ) if test -n "$_USE_SYSTEM_NSS"; then - AM_PATH_NSS(3.36.4, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])]) + AM_PATH_NSS(3.38, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])]) fi if test -z "$MOZ_SYSTEM_NSS"; then @@ -3542,11 +3542,15 @@ dnl = FFmpeg's ffvpx configuration dnl ======================================================== MOZ_FFVPX= -case "$CPU_ARCH" in - x86) + +dnl Build ffvpx on 32-bit Windows and all supported 64-bit platforms. +dnl 32-bit *nix has performance issues due to not supporting assembly decoder. + +case "$OS_ARCH:$CPU_ARCH" in + WINNT:x86) MOZ_FFVPX=1 ;; - x86_64) + *:x86_64) MOZ_FFVPX=1 ;; esac diff --git a/parser/htmlparser/nsScannerString.h b/parser/htmlparser/nsScannerString.h index 7b722238f..247c04c04 100644 --- a/parser/htmlparser/nsScannerString.h +++ b/parser/htmlparser/nsScannerString.h @@ -21,7 +21,7 @@ * to live in xpcom/string. Now that nsAString is limited to representing * only single fragment strings, nsSlidingString can no longer be used. * - * An advantage to this design is that it does not employ any virtual + * An advantage to this design is that it does not employ any virtual * functions. * * This file uses SCC-style indenting in deference to the nsSlidingString @@ -103,12 +103,12 @@ class nsScannerBufferList public: Position() {} - + Position( Buffer* buffer, char16_t* position ) : mBuffer(buffer) , mPosition(position) {} - + inline explicit Position( const nsScannerIterator& aIter ); @@ -133,7 +133,7 @@ class nsScannerBufferList void AddRef() { ++mRefCnt; } void Release() { if (--mRefCnt == 0) delete this; } - void Append( Buffer* buf ) { mBuffers.insertBack(buf); } + void Append( Buffer* buf ) { mBuffers.insertBack(buf); } void InsertAfter( Buffer* buf, Buffer* prev ) { prev->setNext(buf); } void SplitBuffer( const Position& ); void DiscardUnreferencedPrefix( Buffer* ); @@ -223,7 +223,7 @@ class nsScannerSubstring mBufferList->Release(); } } - + void init_range_from_buffer_list() { mStart.mBuffer = mBufferList->Head(); @@ -340,7 +340,7 @@ class nsScannerIterator friend class nsScannerSharedSubstring; public: - nsScannerIterator() {} + // nsScannerIterator(); // auto-generate default constructor is OK // nsScannerIterator( const nsScannerIterator& ); // auto-generated copy-constructor OK // nsScannerIterator& operator=( const nsScannerIterator& ); // auto-generated copy-assignment operator OK @@ -351,7 +351,7 @@ class nsScannerIterator { return mPosition; } - + char16_t operator*() const { return *get(); @@ -467,7 +467,7 @@ struct nsCharSourceTraits<nsScannerIterator> { return iter.get(); } - + static void advance( nsScannerIterator& s, difference_type n ) @@ -593,7 +593,7 @@ RFindInReadable( const nsAString& aPattern, inline bool -CaseInsensitiveFindInReadable( const nsAString& aPattern, +CaseInsensitiveFindInReadable( const nsAString& aPattern, nsScannerIterator& aStart, nsScannerIterator& aEnd ) { diff --git a/python/mozbuild/mozbuild/action/dump_env.py b/python/mozbuild/mozbuild/action/dump_env.py index a6fa19f3a..83e420d68 100644 --- a/python/mozbuild/mozbuild/action/dump_env.py +++ b/python/mozbuild/mozbuild/action/dump_env.py @@ -6,5 +6,11 @@ # native paths printed on Windows so that these paths can be incorporated # into Python configure's environment. import os +import sys + +sys.path.append(os.path.join(os.path.dirname(__file__), '..')) + +from shellutil import quote + for key, value in os.environ.items(): - print('%s=%s' % (key, value)) + print('%s=%s' % (key, quote(value))) diff --git a/python/mozbuild/mozbuild/controller/clobber.py b/python/mozbuild/mozbuild/controller/clobber.py index 02f75c6ad..d3cdfd596 100644 --- a/python/mozbuild/mozbuild/controller/clobber.py +++ b/python/mozbuild/mozbuild/controller/clobber.py @@ -169,6 +169,7 @@ class Clobberer(object): if not self.clobber_needed(): print('Clobber not needed.', file=fh) + fh.flush() self.ensure_objdir_state() return False, False, None @@ -190,6 +191,7 @@ class Clobberer(object): 'Cannot clobber while the shell is inside the object directory.') print('Automatically clobbering %s' % self.topobjdir, file=fh) + fh.flush() try: self.remove_objdir(False) self.ensure_objdir_state() diff --git a/security/manager/ssl/DataStorage.cpp b/security/manager/ssl/DataStorage.cpp index 2d9dbf5c4..c765fed00 100644 --- a/security/manager/ssl/DataStorage.cpp +++ b/security/manager/ssl/DataStorage.cpp @@ -276,9 +276,6 @@ DataStorage::Reader::Run() } } } while (true); - - Telemetry::Accumulate(Telemetry::DATA_STORAGE_ENTRIES, - mDataStorage->mPersistentDataTable.Count()); } return NS_OK; diff --git a/security/manager/ssl/SSLServerCertVerification.cpp b/security/manager/ssl/SSLServerCertVerification.cpp index 4ef79f54a..757534955 100644 --- a/security/manager/ssl/SSLServerCertVerification.cpp +++ b/security/manager/ssl/SSLServerCertVerification.cpp @@ -567,15 +567,12 @@ CertErrorRunnable::CheckCertOverrides() // want a ballpark answer, we don't care. if (mErrorCodeTrust != 0) { uint32_t probeValue = MapOverridableErrorToProbeValue(mErrorCodeTrust); - Telemetry::Accumulate(Telemetry::SSL_CERT_ERROR_OVERRIDES, probeValue); } if (mErrorCodeMismatch != 0) { uint32_t probeValue = MapOverridableErrorToProbeValue(mErrorCodeMismatch); - Telemetry::Accumulate(Telemetry::SSL_CERT_ERROR_OVERRIDES, probeValue); } if (mErrorCodeTime != 0) { uint32_t probeValue = MapOverridableErrorToProbeValue(mErrorCodeTime); - Telemetry::Accumulate(Telemetry::SSL_CERT_ERROR_OVERRIDES, probeValue); } // all errors are covered by override rules, so let's accept the cert @@ -660,7 +657,6 @@ CreateCertErrorRunnable(CertVerifier& certVerifier, MOZ_ASSERT(cert); uint32_t probeValue = MapCertErrorToProbeValue(defaultErrorCodeToReport); - Telemetry::Accumulate(Telemetry::SSL_CERT_VERIFICATION_ERRORS, probeValue); uint32_t collected_errors = 0; PRErrorCode errorCodeTrust = 0; @@ -869,19 +865,11 @@ void AccumulateSubjectCommonNameTelemetry(const char* commonName, bool commonNameInSubjectAltNames) { - if (!commonName) { - // 1 means no common name present - Telemetry::Accumulate(Telemetry::BR_9_2_2_SUBJECT_COMMON_NAME, 1); - } else if (!commonNameInSubjectAltNames) { + if (!commonNameInSubjectAltNames) { MOZ_LOG(gPIPNSSLog, LogLevel::Debug, ("BR telemetry: common name '%s' not in subject alt. names " "(or the subject alt. names extension is not present)\n", commonName)); - // 2 means the common name is not present in subject alt names - Telemetry::Accumulate(Telemetry::BR_9_2_2_SUBJECT_COMMON_NAME, 2); - } else { - // 0 means the common name is present in subject alt names - Telemetry::Accumulate(Telemetry::BR_9_2_2_SUBJECT_COMMON_NAME, 0); } } @@ -947,8 +935,6 @@ GatherBaselineRequirementsTelemetry(const UniqueCERTCertList& certList) MOZ_LOG(gPIPNSSLog, LogLevel::Debug, ("BR telemetry: no subject alt names extension for '%s'\n", commonName.get())); - // 1 means there is no subject alt names extension - Telemetry::Accumulate(Telemetry::BR_9_2_1_SUBJECT_ALT_NAMES, 1); AccumulateSubjectCommonNameTelemetry(commonName.get(), false); return; } @@ -960,8 +946,6 @@ GatherBaselineRequirementsTelemetry(const UniqueCERTCertList& certList) MOZ_LOG(gPIPNSSLog, LogLevel::Debug, ("BR telemetry: could not decode subject alt names for '%s'\n", commonName.get())); - // 2 means the subject alt names extension could not be decoded - Telemetry::Accumulate(Telemetry::BR_9_2_1_SUBJECT_ALT_NAMES, 2); AccumulateSubjectCommonNameTelemetry(commonName.get(), false); return; } @@ -1044,24 +1028,6 @@ GatherBaselineRequirementsTelemetry(const UniqueCERTCertList& certList) currentName = CERT_GetNextGeneralName(currentName); } while (currentName && currentName != subjectAltNames); - if (nonDNSNameOrIPAddressPresent) { - // 3 means there's an entry that isn't an ip address or dns name - Telemetry::Accumulate(Telemetry::BR_9_2_1_SUBJECT_ALT_NAMES, 3); - } - if (malformedDNSNameOrIPAddressPresent) { - // 4 means there's a malformed ip address or dns name entry - Telemetry::Accumulate(Telemetry::BR_9_2_1_SUBJECT_ALT_NAMES, 4); - } - if (nonFQDNPresent) { - // 5 means there's a DNS name entry with a non-fully-qualified domain name - Telemetry::Accumulate(Telemetry::BR_9_2_1_SUBJECT_ALT_NAMES, 5); - } - if (!nonDNSNameOrIPAddressPresent && !malformedDNSNameOrIPAddressPresent && - !nonFQDNPresent) { - // 0 means the extension is acceptable - Telemetry::Accumulate(Telemetry::BR_9_2_1_SUBJECT_ALT_NAMES, 0); - } - AccumulateSubjectCommonNameTelemetry(commonName.get(), commonNameInSubjectAltNames); } @@ -1111,7 +1077,6 @@ GatherEKUTelemetry(const UniqueCERTCertList& certList) } if (!foundEKU) { - Telemetry::Accumulate(Telemetry::SSL_SERVER_AUTH_EKU, 0); return; } @@ -1133,18 +1098,6 @@ GatherEKUTelemetry(const UniqueCERTCertList& certList) foundOther = true; } } - - // Cases 3 is included only for completeness. It should never - // appear in these statistics, because CheckExtendedKeyUsage() - // should require the EKU extension, if present, to contain the - // value id_kp_serverAuth. - if (foundServerAuth && !foundOther) { - Telemetry::Accumulate(Telemetry::SSL_SERVER_AUTH_EKU, 1); - } else if (foundServerAuth && foundOther) { - Telemetry::Accumulate(Telemetry::SSL_SERVER_AUTH_EKU, 2); - } else if (!foundServerAuth) { - Telemetry::Accumulate(Telemetry::SSL_SERVER_AUTH_EKU, 3); - } } // Gathers telemetry on which CA is the root of a given cert chain. @@ -1210,9 +1163,6 @@ GatherEndEntityTelemetry(const UniqueCERTCertList& certList) if (durationInWeeks > (2 * ONE_YEAR_IN_WEEKS)) { durationInWeeks = (2 * ONE_YEAR_IN_WEEKS) + 1; } - - Telemetry::Accumulate(Telemetry::SSL_OBSERVED_END_ENTITY_CERTIFICATE_LIFETIME, - durationInWeeks); } // There are various things that we want to measure about certificate @@ -1229,75 +1179,14 @@ GatherSuccessfulValidationTelemetry(const UniqueCERTCertList& certList) void GatherTelemetryForSingleSCT(const ct::SignedCertificateTimestamp& sct) { - // See SSL_SCTS_ORIGIN in Histograms.json. - uint32_t origin = 0; - switch (sct.origin) { - case ct::SignedCertificateTimestamp::Origin::Embedded: - origin = 1; - break; - case ct::SignedCertificateTimestamp::Origin::TLSExtension: - origin = 2; - break; - case ct::SignedCertificateTimestamp::Origin::OCSPResponse: - origin = 3; - break; - default: - MOZ_ASSERT_UNREACHABLE("Unexpected SCT::Origin type"); - } - Telemetry::Accumulate(Telemetry::SSL_SCTS_ORIGIN, origin); - - // See SSL_SCTS_VERIFICATION_STATUS in Histograms.json. - uint32_t verificationStatus = 0; - switch (sct.verificationStatus) { - case ct::SignedCertificateTimestamp::VerificationStatus::OK: - verificationStatus = 1; - break; - case ct::SignedCertificateTimestamp::VerificationStatus::UnknownLog: - verificationStatus = 2; - break; - case ct::SignedCertificateTimestamp::VerificationStatus::InvalidSignature: - verificationStatus = 3; - break; - case ct::SignedCertificateTimestamp::VerificationStatus::InvalidTimestamp: - verificationStatus = 4; - break; - default: - MOZ_ASSERT_UNREACHABLE("Unexpected SCT::VerificationStatus type"); - } - Telemetry::Accumulate(Telemetry::SSL_SCTS_VERIFICATION_STATUS, - verificationStatus); +/* STUB */ } void GatherCertificateTransparencyTelemetry(const UniqueCERTCertList& certList, const CertificateTransparencyInfo& info) { - if (!info.enabled) { - // No telemetry is gathered when CT is disabled. - return; - } - - if (!info.processedSCTs) { - // We didn't receive any SCT data for this connection. - Telemetry::Accumulate(Telemetry::SSL_SCTS_PER_CONNECTION, 0); - return; - } - - for (const ct::SignedCertificateTimestamp& sct : info.verifyResult.scts) { - GatherTelemetryForSingleSCT(sct); - } - - // Decoding errors are reported to the 0th bucket - // of the SSL_SCTS_VERIFICATION_STATUS enumerated probe. - for (size_t i = 0; i < info.verifyResult.decodingErrors; ++i) { - Telemetry::Accumulate(Telemetry::SSL_SCTS_VERIFICATION_STATUS, 0); - } - - // Handle the histogram of SCTs counts. - uint32_t sctsCount = static_cast<uint32_t>(info.verifyResult.scts.length()); - // Note that sctsCount can be 0 in case we've received SCT binary data, - // but it failed to parse (e.g. due to unsupported CT protocol version). - Telemetry::Accumulate(Telemetry::SSL_SCTS_PER_CONNECTION, sctsCount); +/* STUB */ } // Note: Takes ownership of |peerCertChain| if SECSuccess is not returned. @@ -1350,29 +1239,6 @@ AuthCertificate(CertVerifier& certVerifier, uint32_t evStatus = (rv != Success) ? 0 // 0 = Failure : (evOidPolicy == SEC_OID_UNKNOWN) ? 1 // 1 = DV : 2; // 2 = EV - Telemetry::Accumulate(Telemetry::CERT_EV_STATUS, evStatus); - - if (ocspStaplingStatus != CertVerifier::OCSP_STAPLING_NEVER_CHECKED) { - Telemetry::Accumulate(Telemetry::SSL_OCSP_STAPLING, ocspStaplingStatus); - } - if (keySizeStatus != KeySizeStatus::NeverChecked) { - Telemetry::Accumulate(Telemetry::CERT_CHAIN_KEY_SIZE_STATUS, - static_cast<uint32_t>(keySizeStatus)); - } - if (sha1ModeResult != SHA1ModeResult::NeverChecked) { - Telemetry::Accumulate(Telemetry::CERT_CHAIN_SHA1_POLICY_STATUS, - static_cast<uint32_t>(sha1ModeResult)); - } - - if (pinningTelemetryInfo.accumulateForRoot) { - Telemetry::Accumulate(Telemetry::CERT_PINNING_FAILURES_BY_CA, - pinningTelemetryInfo.rootBucket); - } - - if (pinningTelemetryInfo.accumulateResult) { - Telemetry::Accumulate(pinningTelemetryInfo.certPinningResultHistogram, - pinningTelemetryInfo.certPinningResultBucket); - } if (rv == Success) { // Certificate verification succeeded. Delete any potential record of @@ -1517,7 +1383,6 @@ SSLServerCertVerificationJob::Run() new SSLServerCertVerificationResult(mInfoObject, 0, successTelemetry, interval)); restart->Dispatch(); - Telemetry::Accumulate(Telemetry::SSL_CERT_ERROR_OVERRIDES, 1); return NS_OK; } @@ -1527,7 +1392,6 @@ SSLServerCertVerificationJob::Run() { TimeStamp now = TimeStamp::Now(); MutexAutoLock telemetryMutex(*gSSLVerificationTelemetryMutex); - Telemetry::AccumulateTimeDelta(failureTelemetry, mJobStartTime, now); } if (error != 0) { RefPtr<CertErrorRunnable> runnable( @@ -1694,7 +1558,6 @@ AuthCertificateHook(void* arg, PRFileDesc* fd, PRBool checkSig, PRBool isServer) MOZ_ASSERT(peerCertChain || rv != SECSuccess, "AuthCertificate() should take ownership of chain on failure"); if (rv == SECSuccess) { - Telemetry::Accumulate(Telemetry::SSL_CERT_ERROR_OVERRIDES, 1); return SECSuccess; } @@ -1782,10 +1645,6 @@ SSLServerCertVerificationResult::Dispatch() NS_IMETHODIMP SSLServerCertVerificationResult::Run() { - // TODO: Assert that we're on the socket transport thread - if (mTelemetryID != Telemetry::HistogramCount) { - Telemetry::Accumulate(mTelemetryID, mTelemetryValue); - } // XXX: This cast will be removed by the next patch ((nsNSSSocketInfo*) mInfoObject.get()) ->SetCertVerificationResult(mErrorCode, mErrorMessageType); diff --git a/security/manager/ssl/nsKeygenHandler.cpp b/security/manager/ssl/nsKeygenHandler.cpp index c4529f877..9196e200c 100644 --- a/security/manager/ssl/nsKeygenHandler.cpp +++ b/security/manager/ssl/nsKeygenHandler.cpp @@ -399,48 +399,7 @@ loser: void GatherKeygenTelemetry(uint32_t keyGenMechanism, int keysize, char* curve) { - if (keyGenMechanism == CKM_RSA_PKCS_KEY_PAIR_GEN) { - if (keysize > 8196 || keysize < 0) { - return; - } - - nsCString telemetryValue("rsa"); - telemetryValue.AppendPrintf("%d", keysize); - mozilla::Telemetry::Accumulate( - mozilla::Telemetry::KEYGEN_GENERATED_KEY_TYPE, telemetryValue); - } else if (keyGenMechanism == CKM_EC_KEY_PAIR_GEN) { - nsCString secp384r1 = NS_LITERAL_CSTRING("secp384r1"); - nsCString secp256r1 = NS_LITERAL_CSTRING("secp256r1"); - - mozilla::UniqueSECItem decoded = DecodeECParams(curve); - if (!decoded) { - switch (keysize) { - case 2048: - mozilla::Telemetry::Accumulate( - mozilla::Telemetry::KEYGEN_GENERATED_KEY_TYPE, secp384r1); - break; - case 1024: - case 512: - mozilla::Telemetry::Accumulate( - mozilla::Telemetry::KEYGEN_GENERATED_KEY_TYPE, secp256r1); - break; - } - } else { - if (secp384r1.EqualsIgnoreCase(curve, secp384r1.Length())) { - mozilla::Telemetry::Accumulate( - mozilla::Telemetry::KEYGEN_GENERATED_KEY_TYPE, secp384r1); - } else if (secp256r1.EqualsIgnoreCase(curve, secp256r1.Length())) { - mozilla::Telemetry::Accumulate( - mozilla::Telemetry::KEYGEN_GENERATED_KEY_TYPE, secp256r1); - } else { - mozilla::Telemetry::Accumulate( - mozilla::Telemetry::KEYGEN_GENERATED_KEY_TYPE, NS_LITERAL_CSTRING("other_ec")); - } - } - } else { - MOZ_CRASH("Unknown keygen algorithm"); - return; - } +/* STUB */ } nsresult diff --git a/security/manager/ssl/nsNSSCallbacks.cpp b/security/manager/ssl/nsNSSCallbacks.cpp index 941101265..6bac59f51 100644 --- a/security/manager/ssl/nsNSSCallbacks.cpp +++ b/security/manager/ssl/nsNSSCallbacks.cpp @@ -490,31 +490,6 @@ nsNSSHttpRequestSession::internal_send_receive_attempt(bool &retryable_error, } } - if (!event->mStartTime.IsNull()) { - if (request_canceled) { - Telemetry::Accumulate(Telemetry::CERT_VALIDATION_HTTP_REQUEST_RESULT, 0); - Telemetry::AccumulateTimeDelta( - Telemetry::CERT_VALIDATION_HTTP_REQUEST_CANCELED_TIME, - event->mStartTime, TimeStamp::Now()); - } - else if (NS_SUCCEEDED(mListener->mResultCode) && - mListener->mHttpResponseCode == 200) { - Telemetry::Accumulate(Telemetry::CERT_VALIDATION_HTTP_REQUEST_RESULT, 1); - Telemetry::AccumulateTimeDelta( - Telemetry::CERT_VALIDATION_HTTP_REQUEST_SUCCEEDED_TIME, - event->mStartTime, TimeStamp::Now()); - } - else { - Telemetry::Accumulate(Telemetry::CERT_VALIDATION_HTTP_REQUEST_RESULT, 2); - Telemetry::AccumulateTimeDelta( - Telemetry::CERT_VALIDATION_HTTP_REQUEST_FAILED_TIME, - event->mStartTime, TimeStamp::Now()); - } - } - else { - Telemetry::Accumulate(Telemetry::CERT_VALIDATION_HTTP_REQUEST_RESULT, 3); - } - if (request_canceled) { return Result::ERROR_OCSP_SERVER_ERROR; } @@ -996,7 +971,6 @@ PreliminaryHandshakeDone(PRFileDesc* fd) } else { infoObject->SetNegotiatedNPN(nullptr, 0); } - mozilla::Telemetry::Accumulate(Telemetry::SSL_NPN_TYPE, state); } else { infoObject->SetNegotiatedNPN(nullptr, 0); } @@ -1091,9 +1065,6 @@ CanFalseStartCallback(PRFileDesc* fd, void* client_data, PRBool *canFalseStart) } } - Telemetry::Accumulate(Telemetry::SSL_REASONS_FOR_NOT_FALSE_STARTING, - reasonsForNotFalseStarting); - if (reasonsForNotFalseStarting == 0) { *canFalseStart = PR_TRUE; infoObject->SetFalseStarted(); @@ -1118,7 +1089,6 @@ AccumulateNonECCKeySize(Telemetry::ID probe, uint32_t bits) : bits < 8192 ? 17 : bits == 8192 ? 18 : bits < 16384 ? 19 : bits == 16384 ? 20 : 0; - Telemetry::Accumulate(probe, value); } // XXX: This attempts to map a bit count to an ECC named curve identifier. In @@ -1134,7 +1104,6 @@ AccumulateECCCurve(Telemetry::ID probe, uint32_t bits) : bits == 384 ? 24 // P-384 : bits == 521 ? 25 // P-521 : 0; // Unknown - Telemetry::Accumulate(probe, value); } static void @@ -1197,7 +1166,6 @@ AccumulateCipherSuite(Telemetry::ID probe, const SSLChannelInfo& channelInfo) break; } MOZ_ASSERT(value != 0); - Telemetry::Accumulate(probe, value); } // In the case of session resumption, the AuthCertificate hook has been bypassed @@ -1318,7 +1286,6 @@ void HandshakeCallback(PRFileDesc* fd, void* client_data) { // 1=tls1, 2=tls1.1, 3=tls1.2 unsigned int versionEnum = channelInfo.protocolVersion & 0xFF; MOZ_ASSERT(versionEnum > 0); - Telemetry::Accumulate(Telemetry::SSL_HANDSHAKE_VERSION, versionEnum); AccumulateCipherSuite( infoObject->IsFullHandshake() ? Telemetry::SSL_CIPHER_SUITE_FULL : Telemetry::SSL_CIPHER_SUITE_RESUMED, @@ -1331,13 +1298,6 @@ void HandshakeCallback(PRFileDesc* fd, void* client_data) { if (rv == SECSuccess) { usesFallbackCipher = channelInfo.keaType == ssl_kea_dh; - // keyExchange null=0, rsa=1, dh=2, fortezza=3, ecdh=4 - Telemetry::Accumulate( - infoObject->IsFullHandshake() - ? Telemetry::SSL_KEY_EXCHANGE_ALGORITHM_FULL - : Telemetry::SSL_KEY_EXCHANGE_ALGORITHM_RESUMED, - channelInfo.keaType); - MOZ_ASSERT(infoObject->GetKEAUsed() == channelInfo.keaType); if (infoObject->IsFullHandshake()) { @@ -1359,9 +1319,6 @@ void HandshakeCallback(PRFileDesc* fd, void* client_data) { break; } - Telemetry::Accumulate(Telemetry::SSL_AUTH_ALGORITHM_FULL, - channelInfo.authType); - // RSA key exchange doesn't use a signature for auth. if (channelInfo.keaType != ssl_kea_rsa) { switch (channelInfo.authType) { @@ -1380,12 +1337,6 @@ void HandshakeCallback(PRFileDesc* fd, void* client_data) { } } } - - Telemetry::Accumulate( - infoObject->IsFullHandshake() - ? Telemetry::SSL_SYMMETRIC_CIPHER_FULL - : Telemetry::SSL_SYMMETRIC_CIPHER_RESUMED, - cipherInfo.symCipher); } } diff --git a/security/manager/ssl/nsNSSComponent.cpp b/security/manager/ssl/nsNSSComponent.cpp index 025f4bda2..4fc8c142e 100644 --- a/security/manager/ssl/nsNSSComponent.cpp +++ b/security/manager/ssl/nsNSSComponent.cpp @@ -805,29 +805,22 @@ nsNSSComponent::MaybeEnableFamilySafetyCompatibility() if (familySafetyMode > 2) { familySafetyMode = 0; } - Telemetry::Accumulate(Telemetry::FAMILY_SAFETY, familySafetyMode); if (familySafetyMode == 0) { return; } bool familySafetyEnabled; nsresult rv = AccountHasFamilySafetyEnabled(familySafetyEnabled); if (NS_FAILED(rv)) { - Telemetry::Accumulate(Telemetry::FAMILY_SAFETY, 3); return; } if (!familySafetyEnabled) { - Telemetry::Accumulate(Telemetry::FAMILY_SAFETY, 4); return; } - Telemetry::Accumulate(Telemetry::FAMILY_SAFETY, 5); if (familySafetyMode == 2) { rv = LoadFamilySafetyRoot(); if (NS_FAILED(rv)) { - Telemetry::Accumulate(Telemetry::FAMILY_SAFETY, 6); MOZ_LOG(gPIPNSSLog, LogLevel::Debug, ("failed to load Family Safety root")); - } else { - Telemetry::Accumulate(Telemetry::FAMILY_SAFETY, 7); } } #endif // XP_WIN @@ -1376,12 +1369,18 @@ static const CipherPref sCipherPrefs[] = { TLS_RSA_WITH_AES_256_CBC_SHA, true }, // Expensive/deprecated/weak +// Deprecated { "security.ssl3.rsa_aes_128_gcm_sha256", TLS_RSA_WITH_AES_128_GCM_SHA256, false }, // Deprecated { "security.ssl3.rsa_aes_128_sha256", TLS_RSA_WITH_AES_128_CBC_SHA256, false }, // Deprecated +// Weak/vulnerable { "security.ssl3.rsa_des_ede3_sha", - TLS_RSA_WITH_3DES_EDE_CBC_SHA, false }, // Weak (3DES) + TLS_RSA_WITH_3DES_EDE_CBC_SHA, false, true }, // Weak (3DES) + { "security.ssl3.rsa_rc4_128_sha", + TLS_RSA_WITH_RC4_128_SHA, false, true }, // RC4 + { "security.ssl3.rsa_rc4_128_md5", + TLS_RSA_WITH_RC4_128_MD5, false, true }, // RC4, HMAC-MD5 // All the rest are disabled @@ -1391,8 +1390,8 @@ static const CipherPref sCipherPrefs[] = { // Bit flags indicating what weak ciphers are enabled. // The bit index will correspond to the index in sCipherPrefs. // Wrtten by the main thread, read from any threads. -static Atomic<uint32_t> sEnabledWeakCiphers; -static_assert(MOZ_ARRAY_LENGTH(sCipherPrefs) - 1 <= sizeof(uint32_t) * CHAR_BIT, +static uint64_t sEnabledWeakCiphers; +static_assert(MOZ_ARRAY_LENGTH(sCipherPrefs) - 1 <= sizeof(uint64_t) * CHAR_BIT, "too many cipher suites"); /*static*/ bool @@ -1404,10 +1403,10 @@ nsNSSComponent::AreAnyWeakCiphersEnabled() /*static*/ void nsNSSComponent::UseWeakCiphersOnSocket(PRFileDesc* fd) { - const uint32_t enabledWeakCiphers = sEnabledWeakCiphers; + const uint64_t enabledWeakCiphers = sEnabledWeakCiphers; const CipherPref* const cp = sCipherPrefs; for (size_t i = 0; cp[i].pref; ++i) { - if (enabledWeakCiphers & ((uint32_t)1 << i)) { + if (enabledWeakCiphers & ((uint64_t)1 << i)) { SSL_CipherPrefSet(fd, cp[i].id, true); } } @@ -1534,11 +1533,11 @@ CipherSuiteChangeObserver::Observe(nsISupports* aSubject, // are enabled in prefs. They are only used on specific // sockets as a part of a fallback mechanism. // Only the main thread will change sEnabledWeakCiphers. - uint32_t enabledWeakCiphers = sEnabledWeakCiphers; + uint64_t enabledWeakCiphers = sEnabledWeakCiphers; if (cipherEnabled) { - enabledWeakCiphers |= ((uint32_t)1 << i); + enabledWeakCiphers |= ((uint64_t)1 << i); } else { - enabledWeakCiphers &= ~((uint32_t)1 << i); + enabledWeakCiphers &= ~((uint64_t)1 << i); } sEnabledWeakCiphers = enabledWeakCiphers; } else { @@ -1574,13 +1573,6 @@ void nsNSSComponent::setValidationOptions(bool isInitialSetting, bool ocspRequired = ocspEnabled && Preferences::GetBool("security.OCSP.require", false); - // We measure the setting of the pref at startup only to minimize noise by - // addons that may muck with the settings, though it probably doesn't matter. - if (isInitialSetting) { - Telemetry::Accumulate(Telemetry::CERT_OCSP_ENABLED, ocspEnabled); - Telemetry::Accumulate(Telemetry::CERT_OCSP_REQUIRED, ocspRequired); - } - bool ocspStaplingEnabled = Preferences::GetBool("security.ssl.enable_ocsp_stapling", true); PublicSSLState()->SetOCSPStaplingEnabled(ocspStaplingEnabled); @@ -1932,20 +1924,6 @@ nsNSSComponent::InitializeNSS() return NS_ERROR_FAILURE; } - // TLSServerSocket may be run with the session cache enabled. It is necessary - // to call this once before that can happen. This specifies a maximum of 1000 - // cache entries (the default number of cache entries is 10000, which seems a - // little excessive as there probably won't be that many clients connecting to - // any TLSServerSockets the browser runs.) - // Note that this must occur before any calls to SSL_ClearSessionCache - // (otherwise memory will leak). - if (SSL_ConfigServerSessionIDCache(1000, 0, 0, nullptr) != SECSuccess) { -#ifdef ANDROID - MOZ_RELEASE_ASSERT(false); -#endif - return NS_ERROR_FAILURE; - } - // ensure the CertBlocklist is initialised nsCOMPtr<nsICertBlocklist> certList = do_GetService(NS_CERTBLOCKLIST_CONTRACTID); #ifdef ANDROID @@ -1986,9 +1964,6 @@ nsNSSComponent::InitializeNSS() return NS_ERROR_FAILURE; } - if (PK11_IsFIPS()) { - Telemetry::Accumulate(Telemetry::FIPS_ENABLED, true); - } MOZ_LOG(gPIPNSSLog, LogLevel::Debug, ("NSS Initialization done\n")); return NS_OK; } @@ -2476,7 +2451,7 @@ InitializeCipherSuite() } // Now only set SSL/TLS ciphers we knew about at compile time - uint32_t enabledWeakCiphers = 0; + uint64_t enabledWeakCiphers = 0; const CipherPref* const cp = sCipherPrefs; for (size_t i = 0; cp[i].pref; ++i) { bool cipherEnabled = Preferences::GetBool(cp[i].pref, @@ -2485,7 +2460,7 @@ InitializeCipherSuite() // Weak ciphers are not used by default. See the comment // in CipherSuiteChangeObserver::Observe for details. if (cipherEnabled) { - enabledWeakCiphers |= ((uint32_t)1 << i); + enabledWeakCiphers |= ((uint64_t)1 << i); } } else { SSL_CipherPrefSetDefault(cp[i].id, cipherEnabled); diff --git a/security/manager/ssl/nsNSSIOLayer.cpp b/security/manager/ssl/nsNSSIOLayer.cpp index 2d49540fb..93fca396b 100644 --- a/security/manager/ssl/nsNSSIOLayer.cpp +++ b/security/manager/ssl/nsNSSIOLayer.cpp @@ -237,9 +237,6 @@ nsNSSSocketInfo::NoteTimeUntilReady() mNotedTimeUntilReady = true; - // This will include TCP and proxy tunnel wait time - Telemetry::AccumulateTimeDelta(Telemetry::SSL_TIME_UNTIL_READY, - mSocketCreationTimestamp, TimeStamp::Now()); MOZ_LOG(gPIPNSSLog, LogLevel::Debug, ("[%p] nsNSSSocketInfo::NoteTimeUntilReady\n", mFd)); } @@ -259,16 +256,6 @@ nsNSSSocketInfo::SetHandshakeCompleted() : mFalseStarted ? FalseStarted : mFalseStartCallbackCalled ? ChoseNotToFalseStart : NotAllowedToFalseStart; - - // This will include TCP and proxy tunnel wait time - Telemetry::AccumulateTimeDelta(Telemetry::SSL_TIME_UNTIL_HANDSHAKE_FINISHED, - mSocketCreationTimestamp, TimeStamp::Now()); - - // If the handshake is completed for the first time from just 1 callback - // that means that TLS session resumption must have been used. - Telemetry::Accumulate(Telemetry::SSL_RESUMED_SESSION, - handshakeType == Resumption); - Telemetry::Accumulate(Telemetry::SSL_HANDSHAKE_TYPE, handshakeType); } @@ -623,11 +610,6 @@ nsNSSSocketInfo::SetCertVerificationResult(PRErrorCode errorCode, SetCanceled(errorCode, errorMessageType); } - if (mPlaintextBytesRead && !errorCode) { - Telemetry::Accumulate(Telemetry::SSL_BYTES_BEFORE_CERT_CALLBACK, - AssertedCast<uint32_t>(mPlaintextBytesRead)); - } - mCertVerificationState = after_cert_verification; } @@ -1121,8 +1103,6 @@ retryDueToTLSIntolerance(PRErrorCode err, nsNSSSocketInfo* socketInfo) PRErrorCode originalReason = helpers.getIntoleranceReason(socketInfo->GetHostName(), socketInfo->GetPort()); - Telemetry::Accumulate(Telemetry::SSL_VERSION_FALLBACK_INAPPROPRIATE, - tlsIntoleranceTelemetryBucket(originalReason)); helpers.forgetIntolerance(socketInfo->GetHostName(), socketInfo->GetPort()); @@ -1144,11 +1124,8 @@ retryDueToTLSIntolerance(PRErrorCode err, nsNSSSocketInfo* socketInfo) helpers.mUnrestrictedRC4Fallback) { if (helpers.rememberStrongCiphersFailed(socketInfo->GetHostName(), socketInfo->GetPort(), err)) { - Telemetry::Accumulate(Telemetry::SSL_WEAK_CIPHERS_FALLBACK, - tlsIntoleranceTelemetryBucket(err)); return true; } - Telemetry::Accumulate(Telemetry::SSL_WEAK_CIPHERS_FALLBACK, 0); } } @@ -1191,18 +1168,12 @@ retryDueToTLSIntolerance(PRErrorCode err, nsNSSSocketInfo* socketInfo) return false; } - // The difference between _PRE and _POST represents how often we avoided - // TLS intolerance fallback due to remembered tolerance. - Telemetry::Accumulate(pre, reason); - if (!helpers.rememberIntolerantAtVersion(socketInfo->GetHostName(), socketInfo->GetPort(), range.min, range.max, err)) { return false; } - Telemetry::Accumulate(post, reason); - return true; } @@ -1242,8 +1213,6 @@ reportHandshakeResult(int32_t bytesTransferred, bool wasReading, PRErrorCode err } else { bucket = 671; } - - Telemetry::Accumulate(Telemetry::SSL_HANDSHAKE_RESULT, bucket); } int32_t diff --git a/security/manager/ssl/nsNTLMAuthModule.cpp b/security/manager/ssl/nsNTLMAuthModule.cpp index a0564118a..46a4a21a0 100644 --- a/security/manager/ssl/nsNTLMAuthModule.cpp +++ b/security/manager/ssl/nsNTLMAuthModule.cpp @@ -1009,11 +1009,6 @@ nsNTLMAuthModule::Init(const char *serviceName, static bool sTelemetrySent = false; if (!sTelemetrySent) { - mozilla::Telemetry::Accumulate( - mozilla::Telemetry::NTLM_MODULE_USED_2, - serviceFlags & nsIAuthModule::REQ_PROXY_AUTH - ? NTLM_MODULE_GENERIC_PROXY - : NTLM_MODULE_GENERIC_DIRECT); sTelemetrySent = true; } diff --git a/security/manager/ssl/nsPKCS11Slot.cpp b/security/manager/ssl/nsPKCS11Slot.cpp index 780a7c4b2..015f86901 100644 --- a/security/manager/ssl/nsPKCS11Slot.cpp +++ b/security/manager/ssl/nsPKCS11Slot.cpp @@ -541,10 +541,6 @@ nsPKCS11ModuleDB::ToggleFIPSMode() return NS_ERROR_FAILURE; } - if (PK11_IsFIPS()) { - Telemetry::Accumulate(Telemetry::FIPS_ENABLED, true); - } - return NS_OK; } diff --git a/security/manager/ssl/nsSTSPreloadList.errors b/security/manager/ssl/nsSTSPreloadList.errors index fa74755b2..48a20f39b 100644 --- a/security/manager/ssl/nsSTSPreloadList.errors +++ b/security/manager/ssl/nsSTSPreloadList.errors @@ -7,15 +7,25 @@ 0005pay.com: did not receive HSTS header 00220022.net: could not connect to host 007-preisvergleich.de: could not connect to host +00778899.com: did not receive HSTS header 007kf.com: could not connect to host 007sascha.de: did not receive HSTS header 00880088.net: could not connect to host 00wbf.com: could not connect to host 01100010011001010111001101110100.com: could not connect to host +013028.com: did not receive HSTS header +016028.com: did not receive HSTS header +016098.com: did not receive HSTS header 016298.com: did not receive HSTS header +016328.com: did not receive HSTS header +019328.com: did not receive HSTS header +019398.com: did not receive HSTS header 020wifi.nl: could not connect to host +0222.mg: did not receive HSTS header 0222aa.com: could not connect to host 023838.com: did not receive HSTS header +028718.com: did not receive HSTS header +029978.com: did not receive HSTS header 029inno.com: could not connect to host 02dl.net: could not connect to host 03-09-2016.wedding: could not connect to host @@ -23,11 +33,21 @@ 040fitvitality.nl: did not receive HSTS header 048.ag: could not connect to host 050508.com: could not connect to host +0513c.com: did not receive HSTS header +055268.com: did not receive HSTS header 066318.com: could not connect to host +066538.com: did not receive HSTS header 066718.com: did not receive HSTS header 066928.com: could not connect to host 066938.com: could not connect to host 070709.net: could not connect to host +078805.com: did not receive HSTS header +078810.com: did not receive HSTS header +078820.com: did not receive HSTS header +078860.com: did not receive HSTS header +078890.com: did not receive HSTS header +081638.com: did not receive HSTS header +086628.com: did not receive HSTS header 0c.eu: did not receive HSTS header 0cdn.ga: could not connect to host 0day.su: could not connect to host @@ -42,11 +62,12 @@ 0w0.vc: could not connect to host 0x0a.net: could not connect to host 0x1337.eu: could not connect to host -0x44.net: did not receive HSTS header +0x44.net: could not connect to host 0x4b0c131e.pub: could not connect to host 0x52.org: could not connect to host 0x539.be: did not receive HSTS header -0x539.pw: did not receive HSTS header +0x539.pw: could not connect to host +0x5f3759df.cf: could not connect to host 0x65.net: did not receive HSTS header 0x90.fi: could not connect to host 0x90.in: could not connect to host @@ -54,21 +75,24 @@ 0xaa55.me: could not connect to host 0xb612.org: could not connect to host 0xcafec0.de: did not receive HSTS header +0xf00.ch: could not connect to host 1.0.0.1: max-age too low: 0 1000hats.com: did not receive HSTS header +1000serien.com: could not connect to host 1001.best: could not connect to host +1001firms.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] 100onrainkajino.com: could not connect to host 1017scribes.com: could not connect to host 1018hosting.nl: did not receive HSTS header 1022996493.rsc.cdn77.org: could not connect to host -1066.io: could not connect to host 1091.jp: could not connect to host 10gbit.ovh: could not connect to host 10tacle.io: could not connect to host +10v2.com: did not receive HSTS header 10x.ooo: could not connect to host 1116pay.com: did not receive HSTS header +11bt.cc: did not receive HSTS header 11recruitment.com.au: did not receive HSTS header -12.net: did not receive HSTS header 120dayweightloss.com: could not connect to host 123110.com: could not connect to host 123movies.fyi: did not receive HSTS header @@ -81,15 +105,18 @@ 127011-networks.ch: could not connect to host 12vpn.org: could not connect to host 12vpnchina.com: could not connect to host +130978.com: did not receive HSTS header +13318522.com: could not connect to host 135vv.com: could not connect to host 13826145000.com: could not connect to host -1396.cc: did not receive HSTS header -15-10.com: did not receive HSTS header +1391kj.com: did not receive HSTS header +1396.cc: could not connect to host +1396.net: did not receive HSTS header 1536.cf: could not connect to host 160887.com: did not receive HSTS header 16164f.com: could not connect to host 163pwd.com: could not connect to host -166166.com: could not connect to host +1689886.com: did not receive HSTS header 168bet9.com: could not connect to host 168esb.com: could not connect to host 16deza.com: did not receive HSTS header @@ -98,12 +125,15 @@ 173vpns.com: could not connect to host 173vpnv.com: could not connect to host 174.net.nz: did not receive HSTS header -174343.com: did not receive HSTS header +174343.com: could not connect to host +17hats.com: did not receive HSTS header 188522.com: did not receive HSTS header +18888msc.com: could not connect to host 1888zr.com: could not connect to host 188betwarriors.co.uk: could not connect to host 188trafalgar.ca: did not receive HSTS header 1912x.com: could not connect to host +19216811.online: could not connect to host 1921958389.rsc.cdn77.org: could not connect to host 195gm.com: did not receive HSTS header 1a-jva.de: could not connect to host @@ -121,10 +151,13 @@ 1s.tn: could not connect to host 1st4abounce.co.uk: did not receive HSTS header 1stcapital.com.sg: did not receive HSTS header +1ststop.co.uk: did not receive HSTS header 1three1.net: did not receive HSTS header +1upinternet.com: could not connect to host 1xcess.com: did not receive HSTS header -1years.cc: did not receive HSTS header +1years.cc: could not connect to host 2-cpu.de: could not connect to host +2018.wales: could not connect to host 20188088.com: did not receive HSTS header 2048game.co.uk: could not connect to host 206rc.net: max-age too low: 2592000 @@ -133,40 +166,46 @@ 20zq.com: could not connect to host 21lg.co: could not connect to host 21stnc.com: could not connect to host +22bt.cc: did not receive HSTS header 2333.press: could not connect to host -233boy.com: could not connect to host +2333666.xyz: did not receive HSTS header +233ss.net: did not receive HSTS header +245meadowvistaway.com: did not receive HSTS header +247a.co.uk: could not connect to host 247quickbooks.com: did not receive HSTS header 2488.ch: did not receive HSTS header 249cq.com: could not connect to host 24hourpaint.com: could not connect to host -24hrs.shopping: did not receive HSTS header +24hrs.shopping: could not connect to host 24kbet.com: could not connect to host 24pcr.com: could not connect to host 24sihu.com: could not connect to host +2566335.xyz: could not connect to host 256k.me: could not connect to host -256pages.com: did not receive HSTS header 25daysof.io: could not connect to host 260887.com: did not receive HSTS header +27728522.com: could not connect to host 2859cc.com: could not connect to host 29227.com: could not connect to host 2acbi-asso.fr: did not receive HSTS header -2au.ru: could not connect to host 2b3b.com: could not connect to host 2bitout.com: could not connect to host 2bizi.ru: could not connect to host 2brokegirls.org: could not connect to host 2carpros.com: did not receive HSTS header 2fl.me: did not receive HSTS header +2gen.com: could not connect to host 2intermediate.co.uk: did not receive HSTS header +2mir.com: could not connect to host 2or3.tk: could not connect to host 2smart4food.com: could not connect to host -2ss.jp: did not receive HSTS header +2ss.jp: could not connect to host 300651.ru: did not receive HSTS header 300mbmovie24.com: could not connect to host 300mbmovies4u.cc: could not connect to host 301.website: could not connect to host 302.nyc: could not connect to host -30hzcollective.com: could not connect to host +30yearmortgagerates.net: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] 3133780x.com: did not receive HSTS header 314166.com: could not connect to host 314chan.org: could not connect to host @@ -174,8 +213,8 @@ 32ph.com: could not connect to host 330.net: could not connect to host 338da.com: could not connect to host -33drugstore.com: did not receive HSTS header -341.mg: did not receive HSTS header +33drugstore.com: could not connect to host +341.mg: could not connect to host 34oztonic.eu: did not receive HSTS header 3555500.com: could not connect to host 3555aa.com: could not connect to host @@ -185,8 +224,11 @@ 365beautyworld.com: could not connect to host 365maya.com: did not receive HSTS header 368mibn.com: could not connect to host -3778xl.com: did not receive HSTS header +3778vip.com: did not receive HSTS header +3778xl.com: could not connect to host 3839.ca: could not connect to host +38888msc.com: could not connect to host +38blog.com: could not connect to host 38sihu.com: could not connect to host 3candy.com: could not connect to host 3chit.cf: could not connect to host @@ -197,13 +239,12 @@ 3dm.audio: could not connect to host 3dproteinimaging.com: did not receive HSTS header 3fl.com: did not receive HSTS header -3lot.ru: could not connect to host 3mbo.de: did not receive HSTS header 3sreporting.com: did not receive HSTS header 3vlnaeet.cz: could not connect to host 3wecommerce.com.br: could not connect to host 3xx.link: could not connect to host -4-it.de: could not connect to host +40-grad.de: did not receive HSTS header 4036aa.com: did not receive HSTS header 4036bb.com: did not receive HSTS header 4036cc.com: did not receive HSTS header @@ -213,8 +254,10 @@ 404404.info: could not connect to host 404forest.com: did not receive HSTS header 41844.de: could not connect to host -41studio.com: could not connect to host 420dongstorm.com: could not connect to host +4237.com: max-age too low: 86400 +42day.info: could not connect to host +42entrepreneurs.fr: did not receive HSTS header 42ms.org: could not connect to host 42t.ru: could not connect to host 439191.com: did not receive HSTS header @@ -227,13 +270,15 @@ 4455software.com: could not connect to host 445887.com: did not receive HSTS header 44957.com: could not connect to host +44sec.com: could not connect to host +4500.co.il: did not receive HSTS header 4679.space: did not receive HSTS header 4706666.com: did not receive HSTS header 4716666.com: did not receive HSTS header 4726666.com: did not receive HSTS header -4736666.com: did not receive HSTS header 4756666.com: did not receive HSTS header 4786666.com: did not receive HSTS header +478933.com: did not receive HSTS header 47tech.com: could not connect to host 4997777.com: could not connect to host 4azino777.ru: did not receive HSTS header @@ -241,7 +286,6 @@ 4bike.eu: did not receive HSTS header 4cclothing.com: could not connect to host 4d2.xyz: could not connect to host -4flex.info: could not connect to host 4hvac.com: did not receive HSTS header 4loc.us: could not connect to host 4miners.net: could not connect to host @@ -265,60 +309,77 @@ 52kb1.com: could not connect to host 52neptune.com: could not connect to host 540.co: did not receive HSTS header +5432.cc: did not receive HSTS header 54bf.com: could not connect to host 555fl.com: max-age too low: 129600 555xl.com: could not connect to host +55bt.cc: did not receive HSTS header 56877.com: could not connect to host 56ct.com: could not connect to host 57aromas.com: did not receive HSTS header -57he.com: did not receive HSTS header +5chat.it: could not connect to host +5ece.de: could not connect to host 5piecesofadvice.com: could not connect to host 605508.cc: could not connect to host 605508.com: could not connect to host 60ych.net: did not receive HSTS header 6120.eu: did not receive HSTS header 62755.com: did not receive HSTS header +645ds.cn: did not receive HSTS header +645ds.com: did not receive HSTS header 64616e.xyz: could not connect to host -660011.com: max-age too low: 0 +64bitgaming.de: could not connect to host +64bitservers.net: could not connect to host +660011.com: could not connect to host 6677.us: did not receive HSTS header +67899876.com: did not receive HSTS header 68277.me: could not connect to host 688da.com: could not connect to host 692b8c32.de: could not connect to host 69mentor.com: could not connect to host 69square.com: could not connect to host +6ird.com: did not receive HSTS header +6z3.net: could not connect to host 7045h.com: could not connect to host 7183.org: could not connect to host -721av.com: max-age too low: 2592000 +721av.com: could not connect to host 724go.com: could not connect to host 7261696e626f77.net: could not connect to host 72ty.com: could not connect to host 72ty.net: could not connect to host 73223.com: did not receive HSTS header -776573.net: could not connect to host +73info.com: did not receive HSTS header +771122.tv: did not receive HSTS header +7717a.com: did not receive HSTS header +776573.net: did not receive HSTS header 7777av.co: could not connect to host 77890k.com: could not connect to host 77book.cn: could not connect to host +789zr.com: max-age too low: 86400 7f-wgg.cf: could not connect to host 7links.com.br: did not receive HSTS header +7nw.eu: could not connect to host 7thheavenrestaurant.com: could not connect to host -7trade8.com: could not connect to host 8.net.co: could not connect to host 8003pay.com: could not connect to host -808.lv: could not connect to host +808.lv: did not receive HSTS header 808phone.net: could not connect to host +81818app.com: could not connect to host 81uc.com: could not connect to host +8206688.com: did not receive HSTS header 826468.com: could not connect to host 826498.com: could not connect to host 82ty.com: could not connect to host 83i.net: could not connect to host 8522.am: could not connect to host 8522cn.com: did not receive HSTS header +8522top.com: could not connect to host 8560.be: could not connect to host -86metro.ru: could not connect to host 8722.com: did not receive HSTS header 87577.com: could not connect to host 88.to: could not connect to host 887.ag: did not receive HSTS header +8884553.com: could not connect to host 8887999.com: could not connect to host 8888av.co: could not connect to host 888azino.com: did not receive HSTS header @@ -326,6 +387,7 @@ 88d.com: could not connect to host 88laohu.cc: could not connect to host 88laohu.com: could not connect to host +8989k3.com: could not connect to host 89955.com: could not connect to host 899699.com: did not receive HSTS header 89he.com: could not connect to host @@ -336,28 +398,38 @@ 8t88.biz: could not connect to host 90smthng.com: could not connect to host 91-freedom.com: could not connect to host +910kj.com: did not receive HSTS header 9118b.com: could not connect to host 911911.pw: could not connect to host 915ers.com: did not receive HSTS header -918yy.com: did not receive HSTS header +919945.com: did not receive HSTS header 91dh.cc: could not connect to host 91lt.info: could not connect to host 922.be: could not connect to host 92bmh.com: did not receive HSTS header +9454.com: max-age too low: 86400 94cs.cn: did not receive HSTS header 95778.com: could not connect to host 960news.ca: could not connect to host 9617818.com: could not connect to host 9617818.net: could not connect to host 9651678.ru: could not connect to host +9822.com: did not receive HSTS header +9822.info: did not receive HSTS header +987987.com: did not receive HSTS header +9906753.net: did not receive HSTS header 99511.fi: did not receive HSTS header 99buffets.com: could not connect to host +9iwan.net: did not receive HSTS header 9jadirect.com: could not connect to host 9point6.com: could not connect to host -a-intel.com: did not receive HSTS header +9ss6.com: could not connect to host +9vies.ca: could not connect to host +a-intel.com: could not connect to host a-ix.net: could not connect to host a-plus.space: could not connect to host a-rickroll-n.pw: could not connect to host +a-shafaat.ir: did not receive HSTS header a-theme.com: could not connect to host a1-autopartsglasgow.com: could not connect to host a1798.com: could not connect to host @@ -365,9 +437,9 @@ a200k.xyz: did not receive HSTS header a2c-co.net: could not connect to host a2it.gr: did not receive HSTS header a3workshop.swiss: could not connect to host +a8q.org: could not connect to host a9c.co: could not connect to host aa7733.com: could not connect to host -aacfree.com: did not receive HSTS header aaeblog.com: did not receive HSTS header aaeblog.net: did not receive HSTS header aaeblog.org: did not receive HSTS header @@ -375,10 +447,10 @@ aaoo.net: could not connect to host aapp.space: could not connect to host aariefhaafiz.com: could not connect to host aaron-gustafson.com: did not receive HSTS header +aaronburt.co.uk: could not connect to host +aaronhorler.com.au: could not connect to host aaronmcguire.me: did not receive HSTS header aarvinproperties.com: could not connect to host -aati.info: could not connect to host -abandonedmines.gov: could not connect to host abareplace.com: did not receive HSTS header abasky.net: could not connect to host abcdef.be: could not connect to host @@ -387,9 +459,11 @@ abcdobebe.com: did not receive HSTS header abchelp.net: did not receive HSTS header abearofsoap.com: could not connect to host abecodes.net: could not connect to host +abeontech.com: could not connect to host abi-fvs.de: could not connect to host abigailstark.com: could not connect to host abilitylist.org: did not receive HSTS header +abilma.com: could not connect to host abioniere.de: could not connect to host ablogagency.net: could not connect to host abloop.com: could not connect to host @@ -403,14 +477,16 @@ aboutassistedliving.org: did not receive HSTS header aboutmyip.info: did not receive HSTS header aboutmyproperty.ca: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] aboutyou-deals.de: could not connect to host +abracadabra.co.jp: max-age too low: 0 absinthium.ch: could not connect to host +absolutewaterproofingsolutions.com: did not receive HSTS header abstractbarista.com: could not connect to host abstractbarista.net: could not connect to host abt.de: did not receive HSTS header abtom.de: did not receive HSTS header abury.fr: did not receive HSTS header abury.me: did not receive HSTS header -abyssgaming.eu: could not connect to host +abyssgaming.eu: did not receive HSTS header ac.milan.it: did not receive HSTS header acabadosboston.com: could not connect to host academialowcost.com.br: did not receive HSTS header @@ -419,8 +495,8 @@ academy4.net: did not receive HSTS header acadianapatios.com: did not receive HSTS header acai51.net: could not connect to host acaonegocios.com.br: could not connect to host -acat.io: could not connect to host acbc.ie: max-age too low: 0 +accbay.com: could not connect to host accelerate.network: could not connect to host accelerole.com: did not receive HSTS header accelight.co.jp: did not receive HSTS header @@ -428,11 +504,12 @@ accelight.jp: did not receive HSTS header access-sofia.org: did not receive HSTS header accolade.com.br: could not connect to host accoun.technology: could not connect to host -accountradar.com: max-age too low: 86400 accounts-p.com: could not connect to host accountsuspended.club: could not connect to host accwing.com: could not connect to host aceadvisory.biz: did not receive HSTS header +acelpb.com: could not connect to host +acemypaper.com: could not connect to host acg.mn: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] acg.sb: could not connect to host acgaudio.com: could not connect to host @@ -440,8 +517,10 @@ acgmoon.org: did not receive HSTS header acgpiano.club: could not connect to host acheirj.com.br: could not connect to host acheritage.co.uk: did not receive HSTS header +achmadfamily.com: could not connect to host achow101.com: did not receive HSTS header achterhoekseveiligheidsbeurs.nl: could not connect to host +achterstieg.dedyn.io: could not connect to host acisonline.net: did not receive HSTS header acksoft.fr: did not receive HSTS header acksoftdemo.fr: did not receive HSTS header @@ -457,6 +536,7 @@ actilove.ch: could not connect to host actiontowingroundrock.com: could not connect to host activateplay.com: did not receive HSTS header active-escape.com: did not receive HSTS header +activeclearweb.com: could not connect to host activeweb.top: could not connect to host activistasconstructivos.org: did not receive HSTS header activiti.alfresco.com: did not receive HSTS header @@ -464,6 +544,7 @@ actu-film.com: max-age too low: 0 actu-medias.com: could not connect to host actualite-videos.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] acuve.jp: could not connect to host +acy.com: could not connect to host ad-disruptio.fr: could not connect to host ada.is: max-age too low: 2592000 adajwells.me: could not connect to host @@ -471,12 +552,15 @@ adambryant.ca: could not connect to host adamcoffee.net: could not connect to host adamdixon.co.uk: could not connect to host adamricheimer.com: could not connect to host +adamsfoundationrepair.com: did not receive HSTS header +adamwallington.co.uk: could not connect to host adamwk.com: did not receive HSTS header adastra.re: could not connect to host adblock.ovh: could not connect to host adboos.com: could not connect to host addaxpetroleum.com: could not connect to host addcrazy.com: did not receive HSTS header +addiko.net: could not connect to host addvocate.com: could not connect to host adec-emsa.ae: could not connect to host adelaides.com: did not receive HSTS header @@ -485,17 +569,20 @@ adelinlydia-coach.com: did not receive HSTS header adequatetechnology.com: could not connect to host aderal.io: could not connect to host adesa-asesoria.com: did not receive HSTS header +adevel.eu: could not connect to host adfa-1.com: could not connect to host -adhigamindia.com: did not receive HSTS header +adhigamindia.com: could not connect to host adhosting.nl: did not receive HSTS header adhs-chaoten.net: did not receive HSTS header adigitali.biz: did not receive HSTS header adindexr.com: could not connect to host +adint.net: could not connect to host adlerweb.info: did not receive HSTS header admin-forms.co.uk: did not receive HSTS header admin-numerique.com: did not receive HSTS header admin.google.com: did not receive HSTS header (error ignored - included regardless) admins.tech: could not connect to host +adminwerk.com: did not receive HSTS header adminwerk.net: did not receive HSTS header admirable.one: did not receive HSTS header admiral.dp.ua: did not receive HSTS header @@ -504,6 +591,7 @@ admsel.ec: could not connect to host adoal.net: did not receive HSTS header adoge.me: could not connect to host adonairelogios.com.br: could not connect to host +adoniscabaret.co.uk: could not connect to host adopteunsiteflash.com: could not connect to host adprospb.com: did not receive HSTS header adquisitio.de: could not connect to host @@ -512,6 +600,8 @@ adrenaline-gaming.ru: could not connect to host adrianajewelry.my: could not connect to host adriancohea.ninja: did not receive HSTS header adrianseo.ro: did not receive HSTS header +adrien.vin: max-age too low: 172800 +adrinet.tk: could not connect to host adrl.ca: could not connect to host adsfund.org: could not connect to host aduedu.de: did not receive HSTS header @@ -533,6 +623,7 @@ advertisemant.com: could not connect to host adviespuntklokkenluiders.nl: could not connect to host adzie.xyz: could not connect to host adzuna.co.uk: did not receive HSTS header +aelurus.com: could not connect to host aemoria.com: could not connect to host aeon.wiki: could not connect to host aerialmediapro.net: could not connect to host @@ -540,6 +631,7 @@ aerolog.co: did not receive HSTS header aeroparking.es: did not receive HSTS header aerotheque.fr: did not receive HSTS header aes256.ru: could not connect to host +aesthetics-blog.com: did not receive HSTS header aesym.de: could not connect to host aether.pw: could not connect to host aevpn.net: could not connect to host @@ -547,21 +639,23 @@ aevpn.org: could not connect to host aeyoun.com: did not receive HSTS header af-fotografie.net: did not receive HSTS header afdkompakt.de: max-age too low: 86400 +afeefzarapackages.com: did not receive HSTS header affily.io: could not connect to host affinity.vc: did not receive HSTS header affordablebouncycastle.co.uk: did not receive HSTS header affordablepapers.com: could not connect to host aficotroceni.ro: did not receive HSTS header afiru.net: could not connect to host +aflamtorrent.com: could not connect to host afmchandler.com: did not receive HSTS header afp548.tk: could not connect to host after.im: did not receive HSTS header afterstack.net: could not connect to host -afvallendoeje.nu: could not connect to host +afvallendoeje.nu: did not receive HSTS header afyou.co.kr: could not connect to host agalaxyfarfaraway.co.uk: could not connect to host agatheetraphael.fr: could not connect to host -agbremen.de: could not connect to host +agbremen.de: did not receive HSTS header agdalieso.com.ba: could not connect to host agelesscitizen.com: could not connect to host agelesscitizens.com: could not connect to host @@ -578,18 +672,17 @@ agowa.eu: did not receive HSTS header agowa338.de: did not receive HSTS header agrafix.design: did not receive HSTS header agrarking.com: could not connect to host -agrias.com.br: could not connect to host -agricolo.ch: could not connect to host +agrias.com.br: did not receive HSTS header agrikulturchic.com: could not connect to host agrimap.com: did not receive HSTS header agro-id.gov.ua: did not receive HSTS header +agro.rip: did not receive HSTS header agroglass.com.br: did not receive HSTS header +agroyard.com.ua: could not connect to host agtv.com.br: did not receive HSTS header ahabingo.com: did not receive HSTS header ahelos.tk: could not connect to host -ahkubiak.ovh: could not connect to host ahlz.sk: could not connect to host -ahmedcharles.com: could not connect to host aholic.co: did not receive HSTS header ahoynetwork.com: could not connect to host ahri.ovh: could not connect to host @@ -597,21 +690,20 @@ ahsin.online: could not connect to host ahwah.net: could not connect to host ahwatukeefoothillsmontessori.com: did not receive HSTS header ai1989.com: could not connect to host +aibaoyou.com: could not connect to host aibsoftware.mx: could not connect to host -aicial.co.uk: could not connect to host aicial.com: did not receive HSTS header aicial.com.au: could not connect to host aid-web.ch: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] aidanwoods.com: did not receive HSTS header -aide-admin.com: could not connect to host +aide-admin.com: did not receive HSTS header aidikofflaw.com: did not receive HSTS header aiesecarad.ro: could not connect to host aifreeze.ru: could not connect to host aify.eu: could not connect to host -aignermunich.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] -aignermunich.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] aikenorganics.com: could not connect to host aim-consultants.com: could not connect to host +aimerworld.com: did not receive HSTS header aimrom.org: could not connect to host ainrb.com: could not connect to host aioboot.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] @@ -619,16 +711,22 @@ aip-marine.com: could not connect to host aiphyron.com: could not connect to host aiponne.com: could not connect to host airconsalberton.co.za: did not receive HSTS header +airconsboksburg.co.za: did not receive HSTS header +airconsfourways.co.za: did not receive HSTS header +airconsmidrand.co.za: did not receive HSTS header +airconssandton.co.za: did not receive HSTS header airedaleterrier.com.br: could not connect to host airfax.io: could not connect to host airlea.com: could not connect to host airlinecheckins.com: did not receive HSTS header airmazinginflatables.com: could not connect to host airproto.com: did not receive HSTS header +airsick.guide: did not receive HSTS header airtimefranchise.com: did not receive HSTS header aishnair.com: could not connect to host aisle3.space: could not connect to host aiticon.de: did not receive HSTS header +aivene.com: could not connect to host aiw-thkoeln.online: could not connect to host ajetaci.cz: could not connect to host ajibot.com: did not receive HSTS header @@ -646,18 +744,23 @@ akhras.at: did not receive HSTS header akiba-server.info: could not connect to host akihiro.xyz: could not connect to host akita-stream.com: could not connect to host +akj.io: did not receive HSTS header akkadia.cc: could not connect to host +akoch.net: could not connect to host akombakom.net: could not connect to host akoww.de: could not connect to host -akritikos.info: could not connect to host -akselimedia.fi: did not receive HSTS header +akracing.se: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] +akselimedia.fi: could not connect to host akstudentsfirst.org: could not connect to host +aktan.com.br: could not connect to host aktivist.in: did not receive HSTS header +akul.co.in: could not connect to host al-f.net: could not connect to host al-shami.net: could not connect to host alanhuang.name: did not receive HSTS header alanlee.net: could not connect to host alanrickmanflipstable.com: did not receive HSTS header +alanya.law: did not receive HSTS header alariel.de: did not receive HSTS header alarme-gps.ch: could not connect to host alarmegps.ch: could not connect to host @@ -671,58 +774,67 @@ albertify.xyz: could not connect to host albertonplumber24-7.co.za: did not receive HSTS header albertopimienta.com: did not receive HSTS header alcantarafleuriste.com: did not receive HSTS header +alcatelonetouch.us: could not connect to host alcatraz.online: could not connect to host alcazaar.com: could not connect to host alchemia.co.il: did not receive HSTS header alcorao.org: could not connect to host +aldes.co.za: did not receive HSTS header aleax.me: could not connect to host alecvannoten.be: did not receive HSTS header -aleksejjocic.tk: could not connect to host alenan.org: could not connect to host aleph.land: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] alertaenlinea.gov: did not receive HSTS header alessandro.pw: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] alessandroz.pro: could not connect to host alethearose.com: did not receive HSTS header +alexandernorth.ch: could not connect to host alexandre.sh: did not receive HSTS header -alexbaker.org: did not receive HSTS header +alexandros.io: could not connect to host alexdodge.ca: did not receive HSTS header alexei.su: could not connect to host alexfisherhealth.com.au: did not receive HSTS header alexhaydock.co.uk: did not receive HSTS header +alexischaussy.xyz: could not connect to host +alexismeza.com: could not connect to host +alexismeza.com.mx: could not connect to host alexismeza.dk: could not connect to host +alexismeza.es: could not connect to host +alexismeza.nl: could not connect to host alexkidd.de: did not receive HSTS header alexmak.net: did not receive HSTS header alexmol.tk: could not connect to host alexperry.io: could not connect to host alfa24.pro: could not connect to host -alfaperfumes.com.br: could not connect to host alfaponny.se: could not connect to host alfirous.com: could not connect to host alfredxing.com: did not receive HSTS header algarmatic-automatismos.pt: could not connect to host algebraaec.com: did not receive HSTS header -alghaib.com: did not receive HSTS header +alghaib.com: could not connect to host alibababee.com: did not receive HSTS header -alien.bz: could not connect to host +alicialab.org: could not connect to host +alien.bz: did not receive HSTS header +alignrs.com: could not connect to host alikulov.me: did not receive HSTS header alilialili.ga: could not connect to host alinemaciel.adm.br: could not connect to host alistairpialek.com: max-age too low: 86400 alittlebitcheeky.com: did not receive HSTS header aliwebstore.com: could not connect to host -aljammaz.holdings: did not receive HSTS header +aljammaz.holdings: could not connect to host aljmz.com: did not receive HSTS header alkami.com: max-age too low: 0 alkamitech.com: max-age too low: 0 +alkel.info: did not receive HSTS header all-subtitles.com: could not connect to host all.tf: could not connect to host all4os.com: did not receive HSTS header -allangirvan.net: could not connect to host +allaboutbelgaum.com: did not receive HSTS header alldaymonitoring.com: could not connect to host alldm.ru: could not connect to host allegro-inc.com: did not receive HSTS header -allenosgood.com: could not connect to host +allerbestefreunde.de: did not receive HSTS header allfreelancers.su: did not receive HSTS header allgrass.es: did not receive HSTS header allgrass.net: did not receive HSTS header @@ -730,6 +842,7 @@ alliance-compacts.com: did not receive HSTS header allinnote.com: could not connect to host allinonecyprus.com: did not receive HSTS header allkindzabeats.com: did not receive HSTS header +allladyboys.com: could not connect to host allmbw.com: could not connect to host allmystery.de: did not receive HSTS header allods-zone.ru: did not receive HSTS header @@ -745,10 +858,11 @@ allsortscastles.co.uk: could not connect to host allstarswithus.com: could not connect to host allstorebrasil.com.br: could not connect to host alltheducks.com: max-age too low: 43200 +allthingsblogging.com: could not connect to host allthingsfpl.com: could not connect to host allvips.ru: could not connect to host almagalla.com: could not connect to host -almatinki.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] +almatinki.com: could not connect to host aloalabs.com: did not receive HSTS header alocato.com: could not connect to host alparque.com: did not receive HSTS header @@ -768,25 +882,32 @@ altailife.ru: did not receive HSTS header altamarea.se: could not connect to host altbinaries.com: could not connect to host alteqnia.com: could not connect to host -alterbaum.net: could not connect to host altercpa.ru: did not receive HSTS header +altered.network: could not connect to host altfire.ca: could not connect to host altiacaselight.com: could not connect to host altitudemoversdenver.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] -altmv.com: max-age too low: 7776000 +altoneum.com: could not connect to host altporn.xyz: could not connect to host +altruistgroup.net: max-age too low: 300 aluminium-scaffolding.co.uk: could not connect to host -alunjam.es: did not receive HSTS header +alunjam.es: could not connect to host alunonaescola.com.br: could not connect to host +aluoblog.pw: could not connect to host +aluoblog.top: could not connect to host alusta.co: could not connect to host +alvn.ga: could not connect to host am8888.top: could not connect to host -amaderelectronics.com: did not receive HSTS header -amadilo.de: did not receive HSTS header +amaderelectronics.com: max-age too low: 2592000 +amadilo.de: could not connect to host +amadoraslindas.com: could not connect to host amaforums.org: did not receive HSTS header amagical.net: did not receive HSTS header amandaonishi.com: could not connect to host amaranthus.com.ph: could not connect to host amartinz.at: could not connect to host +amateri.com: could not connect to host +amateurvoicetalent.com: could not connect to host amatzen.dk: did not receive HSTS header amavis.org: did not receive HSTS header amazing-gaming.fr: could not connect to host @@ -807,13 +928,20 @@ americansforcommunitydevelopment.org: did not receive HSTS header americansportsinstitute.org: did not receive HSTS header americanworkwear.nl: did not receive HSTS header amethystcards.co.uk: could not connect to host +ameza.co.uk: could not connect to host +ameza.com.mx: could not connect to host +ameza.io: could not connect to host +ameza.me: could not connect to host +ameza.net: could not connect to host amicsdelbus.com: did not receive HSTS header amigogeek.net: could not connect to host amihub.com: could not connect to host amilum.org: could not connect to host amilx.com: could not connect to host amilx.org: could not connect to host -amimoto-ami.com: max-age too low: 3153600 +amimoto-ami.com: did not receive HSTS header +amin.ga: did not receive HSTS header +amin.one: could not connect to host amishsecurity.com: could not connect to host amitse.com: did not receive HSTS header amitube.com: did not receive HSTS header @@ -823,43 +951,39 @@ ammoulianiapartments.com: did not receive HSTS header amo-entreprise-et-commerce.fr: could not connect to host amobileway.co.uk: did not receive HSTS header amoory.com: could not connect to host -amoozesh98.com: could not connect to host -amoozesh98.ir: could not connect to host amorimendes.com.br: could not connect to host ampledesigners.com: could not connect to host ampleinfographics.com: could not connect to host amri.nl: did not receive HSTS header -amsportuk.com: did not receive HSTS header amtentertainments.co.uk: could not connect to host amua.fr: could not connect to host amunoz.org: could not connect to host amv-crm.ru: could not connect to host anabol.nl: could not connect to host anacruz.es: did not receive HSTS header +anadoluefessk.org: did not receive HSTS header anadoluefessporkulubu.org: could not connect to host -anaethelion.fr: could not connect to host anagra.ms: could not connect to host +anaiscoachpersonal.es: did not receive HSTS header +anaisypirueta.es: did not receive HSTS header anakros.me: could not connect to host +analangelsteen.com: could not connect to host analpantyhose.org: could not connect to host +analteengirls.net: could not connect to host analytic-s.ml: could not connect to host analytics-shop.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] analyticsinmotion.net: could not connect to host -analyticum.at: could not connect to host -analyticum.com: could not connect to host -analyticum.de: could not connect to host -analyticum.eu: could not connect to host -analyticum.net: could not connect to host analyzemyfriends.com: could not connect to host -anastasiafond.com: could not connect to host +anastasiafond.com: did not receive HSTS header ancarda.net: could not connect to host anchorgrounds.com: did not receive HSTS header anchorinmarinainc.com: did not receive HSTS header ancient-gates.de: could not connect to host -ancientcraft.eu: could not connect to host ancientkarma.com: could not connect to host andbraiz.com: did not receive HSTS header andere-gedanken.net: max-age too low: 10 anderslind.dk: could not connect to host +andoms.fi: did not receive HSTS header andreagobetti.com: did not receive HSTS header andreas-kluge.eu: could not connect to host andreasanti.net: did not receive HSTS header @@ -871,19 +995,17 @@ andreastoneman.com: could not connect to host andrei-coman.com: could not connect to host andreigec.net: did not receive HSTS header andrerose.ca: did not receive HSTS header -andrew.fi: did not receive HSTS header -andrew.london: did not receive HSTS header +andrew.fi: could not connect to host andrewbroekman.com: did not receive HSTS header andrewdavidwong.com: did not receive HSTS header andrewdaws.co: could not connect to host andrewdaws.info: could not connect to host andrewdaws.me: could not connect to host andrewdaws.tv: could not connect to host -andrewhowden.com: could not connect to host andrewmichaud.beer: could not connect to host andrewrdaws.com: could not connect to host andrewregan.me: could not connect to host -andrewtebert.com: could not connect to host +andrewtebert.com: did not receive HSTS header andrewthelott.net: could not connect to host andrewvoce.com: did not receive HSTS header andrewyg.net: could not connect to host @@ -894,6 +1016,8 @@ androidsphone.com: did not receive HSTS header androled.fr: max-age too low: 5184000 andronika.net: could not connect to host androoz.se: could not connect to host +anduril.de: did not receive HSTS header +anduril.eu: did not receive HSTS header andyclark.io: could not connect to host andycraftz.eu: did not receive HSTS header andymartin.cc: could not connect to host @@ -911,10 +1035,11 @@ angeloventuri.com: did not receive HSTS header angervillelorcher.fr: did not receive HSTS header anghami.com: did not receive HSTS header anglictinatabor.cz: could not connect to host +angrut.com: did not receive HSTS header angry-monk.com: could not connect to host angrydragonproductions.com: could not connect to host -angrylab.com: did not receive HSTS header angryroute.com: could not connect to host +animal-nature-human.com: could not connect to host animalnet.de: max-age too low: 7776000 animalstropic.com: could not connect to host anime1.top: could not connect to host @@ -929,7 +1054,7 @@ anisekai.com: max-age too low: 2592000 anita-mukorom.hu: did not receive HSTS header anitklib.ml: could not connect to host anitube-nocookie.ch: could not connect to host -anivar.net: could not connect to host +anivar.net: did not receive HSTS header ankakaak.com: could not connect to host ankaraprofesyonelnakliyat.com: did not receive HSTS header ankaraprofesyonelnakliyat.com.tr: did not receive HSTS header @@ -940,7 +1065,6 @@ annarbor.group: did not receive HSTS header annetaan.fi: could not connect to host annevankesteren.com: could not connect to host annevankesteren.org: could not connect to host -annrusnak.com: did not receive HSTS header annsbouncycastles.com: could not connect to host anomaly.ws: did not receive HSTS header anonboards.com: could not connect to host @@ -960,6 +1084,7 @@ ant.land: could not connect to host antecim.fr: could not connect to host antenasmundosat.com.br: did not receive HSTS header anthenor.co.uk: could not connect to host +anthony-rouanet.com: could not connect to host anthonyavon.com: could not connect to host anthonyloop.com: did not receive HSTS header anthro.id: did not receive HSTS header @@ -967,6 +1092,7 @@ antifraud.net.ru: could not connect to host antimatiere.space: could not connect to host antimine.kr: could not connect to host antipa.ch: could not connect to host +antirayapmalang.com: did not receive HSTS header antoine-roux.fr: did not receive HSTS header antoinebetas.be: max-age too low: 0 antoined.fr: did not receive HSTS header @@ -977,32 +1103,36 @@ antoniorequena.com.ve: could not connect to host antraxx.ee: could not connect to host antscript.com: did not receive HSTS header anttitenhunen.com: could not connect to host -anulowano.pl: could not connect to host anunayk.com: could not connect to host anycoin.me: could not connect to host anyfood.fi: could not connect to host anytonetech.com: did not receive HSTS header +anyways.at: could not connect to host aobogo.com: could not connect to host aocast.info: could not connect to host aojao.cn: could not connect to host aojf.fr: could not connect to host aolabs.nz: did not receive HSTS header aomberg.com: did not receive HSTS header +aomonk.com: did not receive HSTS header aooobo.com: could not connect to host aov.io: could not connect to host aovcentrum.nl: did not receive HSTS header aozora.moe: could not connect to host -apac-tech.com: did not receive HSTS header apachelounge.com: did not receive HSTS header apadrinaunolivo.org: did not receive HSTS header apaginastore.com.br: could not connect to host apeasternpower.com: could not connect to host +aperim.com: max-age too low: 43200 aperture-laboratories.science: did not receive HSTS header api.mega.co.nz: could not connect to host apibot.de: could not connect to host apience.com: did not receive HSTS header +apis.blue: could not connect to host apis.google.com: did not receive HSTS header (error ignored - included regardless) apis.world: could not connect to host +apivia.fr: did not receive HSTS header +apkdv.com: did not receive HSTS header apkoyunlar.club: could not connect to host apkriver.com: did not receive HSTS header apl2bits.net: did not receive HSTS header @@ -1010,7 +1140,6 @@ apm.com.tw: did not receive HSTS header apmg-certified.com: did not receive HSTS header apmg-cyber.com: did not receive HSTS header apnakliyat.com: did not receive HSTS header -apogeephoto.com: did not receive HSTS header apolloyl.com: could not connect to host aponkral.site: could not connect to host aponkralsunucu.com: could not connect to host @@ -1026,11 +1155,14 @@ appdrinks.com: could not connect to host appeldorn.me: did not receive HSTS header appengine.google.com: did not receive HSTS header (error ignored - included regardless) appimlab.it: could not connect to host -apple-watch-zubehoer.de: did not receive HSTS header +apple-watch-zubehoer.de: could not connect to host apple.ax: could not connect to host applejacks-bouncy-castles.co.uk: could not connect to host +applewatch.co.nz: did not receive HSTS header applez.xyz: could not connect to host +appliancerepairlosangeles.com: did not receive HSTS header applic8.com: did not receive HSTS header +apply55gx.com: could not connect to host appointed.at: did not receive HSTS header appraisal-comps.com: could not connect to host appreciationkards.com: did not receive HSTS header @@ -1051,34 +1183,42 @@ aquilalab.com: could not connect to host aquireceitas.com: did not receive HSTS header ar.al: did not receive HSTS header arabdigitalexpression.org: did not receive HSTS header +arabsexi.info: could not connect to host aradulconteaza.ro: could not connect to host aran.me.uk: could not connect to host +aranel.me: could not connect to host arboineuropa.nl: did not receive HSTS header arbu.eu: max-age too low: 2419200 arcadiaeng.com: did not receive HSTS header arcbit.io: could not connect to host archii.ca: did not receive HSTS header +architectdirect.nl: did not receive HSTS header architecte-interieur.be: did not receive HSTS header archmediamarketing.com: could not connect to host archsec.info: could not connect to host arckr.com: could not connect to host +arctica.io: did not receive HSTS header ardao.me: could not connect to host +ardor.noip.me: could not connect to host ardorlabs.se: could not connect to host area3.org: could not connect to host areallyneatwebsite.com: could not connect to host arent.kz: could not connect to host arenzanaphotography.com: could not connect to host +arethsu.se: could not connect to host arewedubstepyet.com: did not receive HSTS header areyouever.me: could not connect to host -argama-nature.com: did not receive HSTS header argennon.xyz: could not connect to host argh.io: could not connect to host arguggi.co.uk: could not connect to host ariacreations.net: did not receive HSTS header +ariege-pyrenees.net: did not receive HSTS header arifburhan.online: could not connect to host arifp.me: could not connect to host arinflatablefun.co.uk: could not connect to host arislight.com: could not connect to host +aristocrates.co: could not connect to host +aristocratps.com: did not receive HSTS header arithxu.com: did not receive HSTS header arka.gq: did not receive HSTS header arknodejs.com: could not connect to host @@ -1094,7 +1234,7 @@ armored.ninja: did not receive HSTS header armory.consulting: could not connect to host armory.supplies: could not connect to host armsday.com: could not connect to host -armyofbane.com: could not connect to host +armyofbane.com: did not receive HSTS header armytricka.cz: did not receive HSTS header arne-petersen.net: did not receive HSTS header arnesolutions.com: could not connect to host @@ -1104,7 +1244,6 @@ aroundme.org: did not receive HSTS header arpa.ph: did not receive HSTS header arpr.co: did not receive HSTS header arrayify.com: could not connect to host -arresttracker.com: could not connect to host arrivedconsulting.com: could not connect to host arrow-cloud.nl: could not connect to host arrowfunction.com: could not connect to host @@ -1112,19 +1251,28 @@ arrowgrove.com: could not connect to host ars-design.net: could not connect to host arsenal.ru: could not connect to host arsk1.com: could not connect to host +arswb.men: could not connect to host art2web.net: could not connect to host artaronquieres.com: did not receive HSTS header artartefatos.com.br: could not connect to host artbytik.ru: did not receive HSTS header +artea.ga: could not connect to host +arteaga.co.uk: could not connect to host +arteaga.eu: could not connect to host +arteaga.me: could not connect to host +arteaga.tech: could not connect to host +arteaga.uk: could not connect to host +arteaga.xyz: could not connect to host artegusto.ru: did not receive HSTS header artemicroway.com.br: could not connect to host arteseideias.com.pt: did not receive HSTS header artesupra.com: did not receive HSTS header arthan.me: could not connect to host +arthur.cn: could not connect to host +arti-group.ml: max-age too low: 2592000 articaexports.com: could not connect to host artifex21.com: did not receive HSTS header artifex21.fr: did not receive HSTS header -artificial.army: could not connect to host artiming.com: could not connect to host artisanhd.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] artisavotins.com: could not connect to host @@ -1137,10 +1285,9 @@ arto.bg: did not receive HSTS header artofeyes.nl: could not connect to host artsinthevalley.net.au: did not receive HSTS header artstopinc.com: did not receive HSTS header -arturkohut.com: could not connect to host artyland.ru: could not connect to host arvamus.eu: could not connect to host -arvindhariharan.me: did not receive HSTS header +arxell.com: did not receive HSTS header arzaroth.com: did not receive HSTS header as.se: could not connect to host as9178.net: could not connect to host @@ -1158,33 +1305,34 @@ ashleakunowski.com: could not connect to host ashleyadum.com: could not connect to host ashleyfoley.photography: could not connect to host ashleymedway.com: could not connect to host +asian-archi.com.tw: did not receive HSTS header asianbet77.co: did not receive HSTS header asianbet77.net: did not receive HSTS header +asianodor.com: could not connect to host +asiesvenezuela.com: did not receive HSTS header asisee.co.il: could not connect to host -ask.fedoraproject.org: did not receive HSTS header ask.pe: could not connect to host -ask.stg.fedoraproject.org: could not connect to host askfit.cz: did not receive HSTS header askmagicconch.com: could not connect to host asm-x.com: could not connect to host -asmm.cc: did not receive HSTS header +asmik-armenie.com: did not receive HSTS header asmui.ga: could not connect to host asmui.ml: could not connect to host asoftwareco.com: did not receive HSTS header asphaltfruehling.de: could not connect to host -asphyxia.su: could not connect to host asral7.com: could not connect to host asryflorist.com: could not connect to host ass.org.au: could not connect to host -assadrivesloirecher.com: could not connect to host +assadrivesloirecher.com: did not receive HSTS header assdecoeur.org: could not connect to host assekuranzjobs.de: could not connect to host asset-alive.com: did not receive HSTS header -asset-alive.net: did not receive HSTS header +asset-alive.net: could not connect to host assetsupervision.com: could not connect to host assindia.nl: could not connect to host +assistcart.com: could not connect to host assurancesmons.be: did not receive HSTS header -astaninki.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] +astaninki.com: could not connect to host asthon.cn: could not connect to host astraalivankila.net: could not connect to host astral.gq: did not receive HSTS header @@ -1198,9 +1346,10 @@ astutr.co: could not connect to host asuhe.cc: could not connect to host asuhe.win: did not receive HSTS header asuhe.xyz: could not connect to host -async.be: max-age too low: 0 -at-one.ca: could not connect to host +async.be: could not connect to host at1.co: could not connect to host +ataber.pw: could not connect to host +atacadodesandalias.com.br: could not connect to host atacadooptico.com.br: could not connect to host atavio.at: could not connect to host atavio.ch: could not connect to host @@ -1208,25 +1357,30 @@ atavio.de: could not connect to host atbeckett.com: did not receive HSTS header atcreform.gov: did not receive HSTS header atelier-rk.com: did not receive HSTS header -atelier-viennois-cannes.fr: did not receive HSTS header +atelier-viennois-cannes.fr: could not connect to host ateliernihongo.ch: did not receive HSTS header ateliersantgervasi.com: did not receive HSTS header +ath0.org: max-age too low: 600 athaliasoft.com: could not connect to host athenelive.com: could not connect to host -athensbusinessresources.us: did not receive HSTS header +athensbusinessresources.us: could not connect to host athi.pl: did not receive HSTS header athul.xyz: could not connect to host +atk.me: could not connect to host atkdesign.pt: did not receive HSTS header atlas-5.site: could not connect to host atlas-staging.ml: could not connect to host +atlas.co: did not receive HSTS header atlassian.net: did not receive HSTS header atlayo.com: did not receive HSTS header atlex.nl: did not receive HSTS header atlseccon.com: did not receive HSTS header +atmocdn.com: could not connect to host atomic.menu: could not connect to host atomik.pro: did not receive HSTS header atop.io: could not connect to host atracaosexshop.com.br: could not connect to host +atrevillot.com: could not connect to host attic118.com: could not connect to host attimidesigns.com: did not receive HSTS header attogproductions.com: did not receive HSTS header @@ -1239,6 +1393,7 @@ audiovisualdevices.com.au: did not receive HSTS header audividi.shop: did not receive HSTS header aufmerksamkeitsstudie.com: could not connect to host aufprise.de: did not receive HSTS header +augaware.org: could not connect to host augenblicke-blog.de: could not connect to host augias.org: could not connect to host augix.net: could not connect to host @@ -1249,7 +1404,7 @@ aurainfosec.com: did not receive HSTS header aurainfosec.com.au: did not receive HSTS header auraredeye.com: could not connect to host auraredshield.com: could not connect to host -aurora-terraria.org: did not receive HSTS header +aurora-terraria.org: could not connect to host aurorarecordings.com: could not connect to host auroratownshipfd.org: could not connect to host aurugs.com: did not receive HSTS header @@ -1258,7 +1413,7 @@ auskunftsbegehren.at: did not receive HSTS header auslandsjahr-usa.de: did not receive HSTS header ausnah.me: could not connect to host ausschreibungen-suedtirol.it: did not receive HSTS header -aussiecable.org: did not receive HSTS header +aussiecable.org: could not connect to host aussiehq.com.au: did not receive HSTS header aussiewebmarketing.com.au: did not receive HSTS header austinmobilemechanics.net: did not receive HSTS header @@ -1273,8 +1428,8 @@ authint.com: could not connect to host authland.com: could not connect to host author24.ru: did not receive HSTS header authoritynutrition.com: did not receive HSTS header +authorsguild.in: did not receive HSTS header authsrv.nl.eu.org: could not connect to host -autism-osaka.org: could not connect to host auto-serwis.zgorzelec.pl: could not connect to host auto3d.cn: could not connect to host auto4trade.nl: could not connect to host @@ -1283,12 +1438,12 @@ autobedrijfschalkoort.nl: did not receive HSTS header autocarparts.ro: could not connect to host autodeploy.it: could not connect to host autoecolebudget.ch: did not receive HSTS header -autoecoledumontblanc.com: did not receive HSTS header +autoecoledumontblanc.com: could not connect to host autoeet.cz: did not receive HSTS header autojuhos.sk: could not connect to host automobiles5.com: could not connect to host autos-retro-plaisir.com: did not receive HSTS header -autosearch.me: could not connect to host +autosearch.me: did not receive HSTS header autosiero.nl: did not receive HSTS header autostock.me: could not connect to host autostop-occasions.be: could not connect to host @@ -1300,23 +1455,25 @@ auvious.com: did not receive HSTS header auxetek.se: could not connect to host auxiliumincrementum.co.uk: could not connect to host av.de: did not receive HSTS header +av01.tv: could not connect to host av163.cc: could not connect to host avadatravel.com: did not receive HSTS header -avalon-island.ru: could not connect to host avantmfg.com: did not receive HSTS header avaq.fr: did not receive HSTS header avastantivirus.ro: did not receive HSTS header -avdelivers.com: could not connect to host +avdelivers.com: did not receive HSTS header avdh.top: could not connect to host avec-ou-sans-ordonnance.fr: could not connect to host aveling-adventure.co.uk: did not receive HSTS header avg.club: did not receive HSTS header -avi9526.pp.ua: could not connect to host aviacao.pt: did not receive HSTS header avidcruiser.com: did not receive HSTS header aviodeals.com: could not connect to host avitres.com: could not connect to host +avmemo.com: could not connect to host avmo.pw: could not connect to host +avmoo.com: could not connect to host +avnet.ws: could not connect to host avonlearningcampus.com: could not connect to host avso.pw: could not connect to host avspot.net: could not connect to host @@ -1324,6 +1481,7 @@ avus-automobile.com: did not receive HSTS header avxo.pw: could not connect to host awan.tech: could not connect to host awanderlustadventure.com: did not receive HSTS header +awccanadianpharmacy.com: could not connect to host awei.pub: could not connect to host awf0.xyz: could not connect to host awg-mode.de: did not receive HSTS header @@ -1337,36 +1495,42 @@ axel-fischer.science: could not connect to host axelchv.fr: could not connect to host axem.co.jp: did not receive HSTS header axeny.com: did not receive HSTS header -axfr.it: did not receive HSTS header +axfr.it: could not connect to host axg.io: did not receive HSTS header axialsports.com: did not receive HSTS header axiumacademy.com: did not receive HSTS header +axolotlfarm.org: could not connect to host axolsoft.com: max-age too low: 10540800 +axtux.tk: could not connect to host axxial.tk: could not connect to host ayahuascaadvisor.com: could not connect to host +ayamchikchik.com: could not connect to host ayatk.com: did not receive HSTS header +aymericlagier.com: could not connect to host +ayon.group: could not connect to host ayor.jp: could not connect to host ayor.tech: could not connect to host ayuru.info: could not connect to host -az-moga.bg: could not connect to host az-vinyl-boden.de: could not connect to host -azabani.com: did not receive HSTS header azamra.com: did not receive HSTS header azia.info: could not connect to host azino777.ru: could not connect to host azirevpn.com: did not receive HSTS header azlo.com: did not receive HSTS header azprep.us: could not connect to host +azun.pl: did not receive HSTS header +azuxul.fr: could not connect to host b-entropy.com: could not connect to host b-pi.duckdns.org: could not connect to host b-rickroll-e.pw: could not connect to host -b-space.de: did not receive HSTS header +b-space.de: could not connect to host b1236.com: could not connect to host +b2and.com: could not connect to host b2b-nestle.com.br: could not connect to host b2bpromoteit.com: did not receive HSTS header b3orion.com: could not connect to host -b72.com: could not connect to host -b72.net: could not connect to host +b422edu.com: could not connect to host +b61688.com: could not connect to host b8a.me: could not connect to host b9520.com: could not connect to host b9568.com: could not connect to host @@ -1377,6 +1541,10 @@ b9930.com: could not connect to host b99520.com: could not connect to host b9970.com: could not connect to host b9980.com: could not connect to host +b99881.com: could not connect to host +b99882.com: could not connect to host +b99883.com: could not connect to host +b99885.com: could not connect to host b9winner.com: could not connect to host babelfisch.eu: could not connect to host babursahvizeofisi.com: could not connect to host @@ -1388,7 +1556,7 @@ babyhouse.xyz: could not connect to host babyliss-pro.com: could not connect to host babyliss-pro.net: did not receive HSTS header babysaying.me: could not connect to host -babystep.tv: could not connect to host +babystep.tv: did not receive HSTS header bacchanallia.com: could not connect to host bacimg.com: did not receive HSTS header back-bone.nl: did not receive HSTS header @@ -1396,7 +1564,10 @@ backenmachtgluecklich.de: max-age too low: 2592000 backgroundchecks.online: did not receive HSTS header backgroundz.net: could not connect to host backintomotionphysiotherapy.com: did not receive HSTS header +backlogapp.io: could not connect to host +backpacken.org: could not connect to host backscattering.de: did not receive HSTS header +backupsinop.com.br: did not receive HSTS header backyardbbqbash.com: did not receive HSTS header baconate.com: did not receive HSTS header bad.show: could not connect to host @@ -1404,10 +1575,12 @@ badai.at: could not connect to host badbee.cc: could not connect to host badcronjob.com: could not connect to host badenhard.eu: could not connect to host +badgirlsbible.com: could not connect to host badkamergigant.com: could not connect to host badlink.org: could not connect to host baff.lu: could not connect to host bagiobella.com: max-age too low: 0 +baglu.com: did not receive HSTS header baiduaccount.com: could not connect to host baildonhottubs.co.uk: could not connect to host bair.io: could not connect to host @@ -1416,19 +1589,23 @@ baito-j.jp: did not receive HSTS header baixoutudo.com: did not receive HSTS header bajic.ch: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] bakabt.info: could not connect to host +bakanin.ru: could not connect to host bakaweb.fr: could not connect to host bakhansen.com: did not receive HSTS header bakkerdesignandbuild.com: did not receive HSTS header bakxnet.com: could not connect to host balatoni-nyar.hu: did not receive HSTS header balcan-underground.net: could not connect to host +baldur.cc: could not connect to host baldwinkoo.com: could not connect to host baleares.party: could not connect to host balenciaspa.com: did not receive HSTS header balihai.com: did not receive HSTS header -balilingo.ooo: did not receive HSTS header +balilingo.ooo: could not connect to host +ballarin.cc: could not connect to host ballbusting-cbt.com: could not connect to host balloonphp.com: could not connect to host +balnearionaturaspa.com: did not receive HSTS header balonmano.co: could not connect to host bals.org: did not receive HSTS header balticer.de: did not receive HSTS header @@ -1439,18 +1616,22 @@ bananabandy.com: could not connect to host bananensap.nl: did not receive HSTS header bananium.fr: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] banbanchs.com: could not connect to host +banburybid.com: could not connect to host banchethai.com: could not connect to host bandally.net: could not connect to host bandar303.cc: did not receive HSTS header bandar303.id: did not receive HSTS header +bandar303.win: did not receive HSTS header bandarifamily.com: could not connect to host -bandb.xyz: could not connect to host -bandrcrafts.com: did not receive HSTS header +bandb.xyz: did not receive HSTS header +bandrcrafts.com: could not connect to host banduhn.com: did not receive HSTS header bangdream.ga: could not connect to host bangzafran.com: did not receive HSTS header bank: could not connect to host bankcircle.co.in: could not connect to host +bankersonline.com: did not receive HSTS header +bankitt.network: could not connect to host bankmilhas.com.br: did not receive HSTS header bankofrealty.review: could not connect to host banksaround.com: did not receive HSTS header @@ -1459,42 +1640,48 @@ banqingdiao.com: could not connect to host banri.me: could not connect to host banxehoi.com: did not receive HSTS header baosuckhoedoisong.net: could not connect to host +baptistboard.com: did not receive HSTS header baptiste-destombes.fr: did not receive HSTS header baraxolka.ru: could not connect to host -barbershop-harmony.org: could not connect to host +barcouniforms.com: did not receive HSTS header bardiel.de: max-age too low: 0 -bardiharborow.com: did not receive HSTS header barely.sexy: could not connect to host bargainmovingcompany.com: could not connect to host bariller.fr: did not receive HSTS header barisi.me: could not connect to host +barnrats.com: could not connect to host baropkamp.be: did not receive HSTS header barprive.com: could not connect to host barqo.co: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] barracuda.blog: could not connect to host barrelhead.org: could not connect to host -barrett.ag: did not receive HSTS header +barrett.ag: could not connect to host barrut.me: did not receive HSTS header barshout.co.uk: could not connect to host barss.io: could not connect to host bartbania.com: did not receive HSTS header +bartelldrugs.com: did not receive HSTS header barunisystems.com: could not connect to host +bascht.com: did not receive HSTS header basculasconfiables.com: could not connect to host bashc.at: could not connect to host bashcode.ninja: could not connect to host basicsolutionsus.com: could not connect to host +basilicaknights.org: could not connect to host basilisk.io: could not connect to host basilm.co: could not connect to host +basketsbymaurice.com: did not receive HSTS header baskettemple.com: did not receive HSTS header basnieuwenhuizen.nl: did not receive HSTS header bassh.net: did not receive HSTS header batfoundry.com: could not connect to host +batonger.com: did not receive HSTS header +batten.eu.org: could not connect to host +batteryservice.ru: did not receive HSTS header baud.ninja: could not connect to host baudairenergyservices.com: could not connect to host baum.ga: did not receive HSTS header baumstark.ca: could not connect to host -bayer-stefan.com: could not connect to host -bayerstefan.com: could not connect to host bayinstruments.com: could not connect to host bayrisch-fuer-anfaenger.de: did not receive HSTS header baysse.eu: did not receive HSTS header @@ -1503,6 +1690,7 @@ bazisszoftver.hu: could not connect to host bb-shiokaze.jp: did not receive HSTS header bbb1991.me: could not connect to host bbdos.ru: could not connect to host +bbj.io: did not receive HSTS header bbkanews.com: did not receive HSTS header bblovess.cn: could not connect to host bbrinck.eu: could not connect to host @@ -1513,23 +1701,29 @@ bbwfacesitting.us: could not connect to host bbwfacesitting.xyz: could not connect to host bbwfight.xyz: could not connect to host bbwteens.org: could not connect to host +bc416.com: did not receive HSTS header +bc418.com: did not receive HSTS header +bc419.com: did not receive HSTS header bcbsmagentprofile.com: could not connect to host bcchack.com: could not connect to host bccx.com: could not connect to host bcheng.cf: did not receive HSTS header bckp.de: could not connect to host bcm.com.au: did not receive HSTS header -bcnet.hk: did not receive HSTS header +bcmlu.org: could not connect to host +bcnet.hk: could not connect to host bcodeur.com: did not receive HSTS header bcradio.org: could not connect to host bcsytv.com: could not connect to host bcweightlifting.ca: could not connect to host +bdata.cl: could not connect to host bddemir.com: could not connect to host bde-epitech.fr: could not connect to host bdenzer.com: did not receive HSTS header bdenzer.xyz: could not connect to host bdsmxxxpics.com: could not connect to host be-real.life: did not receive HSTS header +be9966.com: could not connect to host beach-inspector.com: did not receive HSTS header beachi.es: could not connect to host beaglewatch.com: could not connect to host @@ -1542,6 +1736,7 @@ beardydave.com: did not receive HSTS header beasel.biz: could not connect to host beastlog.tk: could not connect to host beastowner.com: did not receive HSTS header +beautyconcept.co: did not receive HSTS header beavers.io: could not connect to host bebeefy.uk: could not connect to host bebesurdoue.com: could not connect to host @@ -1553,6 +1748,7 @@ bedeta.de: could not connect to host bedouille.com: could not connect to host bedreid.dk: did not receive HSTS header bedrijvenadministratie.nl: could not connect to host +beelen.fr: could not connect to host beerboutique.com.br: could not connect to host beermedlar.com: could not connect to host beersandco.ch: could not connect to host @@ -1562,7 +1758,6 @@ beforesunrise.de: did not receive HSTS header befundup.com: could not connect to host begcykel.com: did not receive HSTS header behere.be: could not connect to host -beholdthehurricane.com: could not connect to host beier.io: could not connect to host beikeil.de: did not receive HSTS header beingmad.org: did not receive HSTS header @@ -1579,13 +1774,16 @@ belwederczykow.eu: could not connect to host bemcorp.de: did not receive HSTS header bemvindoaolar.com.br: did not receive HSTS header bemyvictim.com: max-age too low: 2678400 -ben-energy.com: could not connect to host bendechrai.com: did not receive HSTS header +benedikt-tuchen.de: did not receive HSTS header benediktdichgans.de: did not receive HSTS header beneffy.com: did not receive HSTS header benevisim.com: could not connect to host +benevita.life: could not connect to host +benevita.live: could not connect to host benevita.organic: could not connect to host benfairclough.com: could not connect to host +benhchuyenkhoa.net: could not connect to host benjakesjohnson.com: could not connect to host benjamin-horvath.com: could not connect to host benjamin-suess.de: could not connect to host @@ -1594,23 +1792,28 @@ benk.press: could not connect to host benny003.de: could not connect to host benohead.com: did not receive HSTS header bentphotos.se: could not connect to host -benwattie.com: could not connect to host +benwattie.com: did not receive HSTS header benzkosmetik.de: did not receive HSTS header benzou-space.com: could not connect to host beourvictim.com: max-age too low: 2678400 bep.gov: did not receive HSTS header bep362.vn: could not connect to host beraru.tk: could not connect to host +beraten-entwickeln-steuern.de: could not connect to host berdu.id: did not receive HSTS header -berduri.com: could not connect to host +berduri.com: did not receive HSTS header +beretech.fr: could not connect to host berger.work: could not connect to host +bergfex.at: did not receive HSTS header bergland-seefeld.at: did not receive HSTS header +bergstoneware.com: could not connect to host berhampore-gateway.tk: could not connect to host berlatih.com: did not receive HSTS header berlin-kohlefrei.de: could not connect to host berlinleaks.com: could not connect to host bermytraq.bm: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] bernexskiclub.ch: did not receive HSTS header +bernieware.de: could not connect to host berrymark.be: did not receive HSTS header berseb.se: could not connect to host berthelier.me: could not connect to host @@ -1624,11 +1827,11 @@ besixdouze.world: could not connect to host beslider.com: could not connect to host besnik.de: could not connect to host besola.de: could not connect to host -best-wedding-quotes.com: did not receive HSTS header +best-wedding-quotes.com: could not connect to host bestattorney.com: did not receive HSTS header -bestbatteriesonline.com: could not connect to host bestbeards.ca: could not connect to host bestbestbitcoin.com: could not connect to host +bestbonuses.co.uk: did not receive HSTS header bestellipticalmachinereview.info: could not connect to host bestfitnesswatchreview.info: could not connect to host besthost.cz: did not receive HSTS header @@ -1645,7 +1848,7 @@ betaclean.fr: did not receive HSTS header betafive.net: could not connect to host betakah.net: could not connect to host betamint.org: did not receive HSTS header -betcafearena.ro: could not connect to host +betcafearena.ro: did not receive HSTS header betformular.com: could not connect to host bethditto.com: did not receive HSTS header betkoo.com: could not connect to host @@ -1653,7 +1856,6 @@ betnet.fr: could not connect to host betonmoney.com: could not connect to host betplanning.it: did not receive HSTS header bets.de: did not receive HSTS header -bets.gg: did not receive HSTS header betshoot.com: could not connect to host betsonlinefree.com.au: could not connect to host betterlifemakers.com: max-age too low: 200 @@ -1662,15 +1864,18 @@ betz.ro: could not connect to host beulahtabernacle.com: could not connect to host bevapehappy.com: did not receive HSTS header bewerbungsfibel.de: did not receive HSTS header +bewertet.de: could not connect to host bexit-hosting.nl: could not connect to host bexit-security.eu: could not connect to host bexit-security.nl: could not connect to host +bexithosting.nl: could not connect to host bey.io: could not connect to host beylikduzum.com: did not receive HSTS header beyond-edge.com: could not connect to host beyuna.co.uk: did not receive HSTS header beyuna.eu: did not receive HSTS header beyuna.nl: did not receive HSTS header +bez-energie.de: could not connect to host bezoomnyville.com: could not connect to host bezorg.ninja: could not connect to host bezprawnik.pl: did not receive HSTS header @@ -1682,10 +1887,14 @@ bfear.com: could not connect to host bfelob.gov: could not connect to host bffm.biz: could not connect to host bfrailwayclub.cf: could not connect to host +bg16.de: could not connect to host bgcparkstad.nl: did not receive HSTS header bgdaddy.com: did not receive HSTS header +bgenlisted.com: could not connect to host +bgfashion.net: could not connect to host bgneuesheim.de: did not receive HSTS header bhatia.at: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] +biancolievito.it: did not receive HSTS header bianinapiccanovias.com: could not connect to host biaoqingfuhao.net: did not receive HSTS header biaoqingfuhao.org: did not receive HSTS header @@ -1696,6 +1905,7 @@ bichines.es: did not receive HSTS header bichonfrise.com.br: could not connect to host bichonmaltes.com.br: could not connect to host bidon.ca: did not receive HSTS header +bidorbuy.co.ke: did not receive HSTS header bieberium.de: could not connect to host biego.cn: did not receive HSTS header bielsa.me: did not receive HSTS header @@ -1709,33 +1919,32 @@ bigbounceentertainment.co.uk: could not connect to host bigbrownpromotions.com.au: did not receive HSTS header bigcorporateevents.com: could not connect to host bigerbio.com: could not connect to host +bigfunbouncycastles.com: could not connect to host biglagoonrentals.com: did not receive HSTS header -biglou.com: max-age too low: 3153600 bigshinylock.minazo.net: could not connect to host +bigshort.org: could not connect to host biguixhe.net: could not connect to host +bijoux.com.br: could not connect to host bijouxdegriffe.com.br: could not connect to host bijugeral.com.br: could not connect to host bikelifetvkidsquads.co.uk: could not connect to host bikermusic.net: could not connect to host bilanligne.com: did not receive HSTS header bildermachr.de: could not connect to host -biletru.net: could not connect to host biletua.de: could not connect to host biletyplus.com: could not connect to host biletyplus.ru: did not receive HSTS header bill-nye-the.science: did not receive HSTS header billdestler.com: did not receive HSTS header -billgoldstein.name: did not receive HSTS header billigssl.dk: did not receive HSTS header -billin.net: did not receive HSTS header billkiss.com: could not connect to host billninja.com: did not receive HSTS header billrobinson.io: could not connect to host billrusling.com: could not connect to host binam.center: could not connect to host +binarization.net: could not connect to host binarization.org: did not receive HSTS header binaryabstraction.com: could not connect to host -binarycreations.scot: could not connect to host binaryfigments.com: max-age too low: 86400 binderapp.net: could not connect to host bingcheung.com: could not connect to host @@ -1751,34 +1960,40 @@ bioespuna.eu: did not receive HSTS header biofam.ru: did not receive HSTS header bioknowme.com: did not receive HSTS header biologis.ch: could not connect to host +biomax-mep.com.br: did not receive HSTS header bionicspirit.com: did not receive HSTS header biophysik-ssl.de: did not receive HSTS header biopreferred.gov: could not connect to host +biospeak.solutions: could not connect to host biou.me: could not connect to host biovalue.eu: could not connect to host bip.gov.sa: could not connect to host birdandbranchnyc.com: max-age too low: 43200 +birkengarten.ch: could not connect to host birkman.com: did not receive HSTS header +bischoff-mathey.family: could not connect to host biscuits-rec.com: could not connect to host biscuits-shop.com: could not connect to host bismarck.moe: did not receive HSTS header bisterfeldt.com: did not receive HSTS header biswas.me: could not connect to host -bit.biz.tr: could not connect to host bitace.com: did not receive HSTS header bitbit.org: did not receive HSTS header -bitbr.net: did not receive HSTS header +bitbr.net: could not connect to host bitcantor.com: did not receive HSTS header bitchan.it: could not connect to host bitcoin-casino-no-deposit-bonus.com: max-age too low: 0 bitcoin-class.com: could not connect to host bitcoin-daijin.com: could not connect to host +bitcoin.com: did not receive HSTS header bitcoinec.info: could not connect to host +bitcoinfo.jp: did not receive HSTS header bitcoinhk.org: did not receive HSTS header bitcoinjpn.com: could not connect to host bitcoinprivacy.net: did not receive HSTS header bitcoinworld.me: could not connect to host bitconcepts.co.uk: could not connect to host +bitedge.com: did not receive HSTS header bitenose.net: could not connect to host bitenose.org: could not connect to host biteoftech.com: did not receive HSTS header @@ -1788,22 +2003,24 @@ bitfarm-archiv.com: did not receive HSTS header bitfarm-archiv.de: did not receive HSTS header bitheus.com: could not connect to host bithosting.io: did not receive HSTS header +bitk.uk: could not connect to host bitmain.com.ua: could not connect to host bitmaincare.com.ua: could not connect to host bitmaincare.ru: could not connect to host +bitmainwarranty.com.ua: could not connect to host +bitmainwarranty.ru: could not connect to host bitmex.com: did not receive HSTS header bitmexin.com: could not connect to host -bitmoe.com: did not receive HSTS header -bitmon.net: did not receive HSTS header bitnet.io: did not receive HSTS header bitplay.space: could not connect to host bitpod.de: could not connect to host +bitpoll.de: could not connect to host +bitpoll.org: could not connect to host bitrage.de: could not connect to host bitraum.io: could not connect to host -bitroll.com: did not receive HSTS header +bitroll.com: could not connect to host bitsafe.systems: did not receive HSTS header bitsensor.io: did not receive HSTS header -bitskins.co: did not receive HSTS header bitstep.ca: could not connect to host bittervault.xyz: could not connect to host bituptick.com: did not receive HSTS header @@ -1812,30 +2029,32 @@ bitvigor.com: could not connect to host bitwrought.net: could not connect to host bityes.org: could not connect to host bivsi.com: could not connect to host -bizcms.com: did not receive HSTS header +bizcms.com: could not connect to host +bizedge.co.nz: did not receive HSTS header bizon.sk: did not receive HSTS header bizpare.com: did not receive HSTS header -bizzartech.com: could not connect to host +bizzartech.com: did not receive HSTS header bizzybeebouncers.co.uk: could not connect to host bjgongyi.com: could not connect to host +bjrn.io: could not connect to host bjtxl.cn: could not connect to host +bk-wife.com: could not connect to host bkb-skandal.ch: could not connect to host -bklaindia.com: could not connect to host black-armada.com: could not connect to host black-armada.com.pl: could not connect to host black-armada.pl: could not connect to host -black-khat.com: could not connect to host +black-gay-porn.biz: could not connect to host black-octopus.ru: could not connect to host +blackapron.com.br: could not connect to host blackberrycentral.com: could not connect to host blackburn.link: could not connect to host +blackdesertsp.com: could not connect to host blackdiam.net: did not receive HSTS header -blackl.net: could not connect to host blacklane.com: did not receive HSTS header blacklightparty.be: could not connect to host blackly.uk: max-age too low: 0 -blackmagic.sk: did not receive HSTS header +blackmagic.sk: could not connect to host blackmirror.com.au: did not receive HSTS header -blacknova.io: could not connect to host blackpayment.ru: did not receive HSTS header blackphantom.de: could not connect to host blackscreen.me: could not connect to host @@ -1851,12 +2070,12 @@ blendlecdn.com: could not connect to host blenheimchalcot.com: did not receive HSTS header blessnet.jp: did not receive HSTS header blha303.com.au: could not connect to host +blikund.swedbank.se: did not receive HSTS header blindaryproduction.tk: could not connect to host blindsexdate.nl: did not receive HSTS header blinkenlight.co.uk: could not connect to host blinkenlight.com.au: could not connect to host blmiller.com: did not receive HSTS header -blockchainced.com: could not connect to host blocksatz-medien.de: could not connect to host blockshopauto.com: could not connect to host blog-ritaline.com: could not connect to host @@ -1865,15 +2084,15 @@ blog.cyveillance.com: did not receive HSTS header blog.gparent.org: could not connect to host blog.torproject.org: max-age too low: 1000 blogabout.ru: could not connect to host -blogarts.net: did not receive HSTS header blogdieconomia.it: did not receive HSTS header blogdimoda.com: did not receive HSTS header blogdimotori.it: did not receive HSTS header -bloglife-bb.com: did not receive HSTS header +bloglife-bb.com: could not connect to host bloglikepro.com: could not connect to host blognone.com: did not receive HSTS header blognr.com: could not connect to host blogonblogspot.com: did not receive HSTS header +blok56.nl: did not receive HSTS header blokino.org: did not receive HSTS header blokuhaka.fr: did not receive HSTS header bloodyexcellent.com: did not receive HSTS header @@ -1887,17 +2106,20 @@ blucas.org: did not receive HSTS header blue17.co.uk: did not receive HSTS header bluebill.net: did not receive HSTS header bluecon.eu: did not receive HSTS header -bluefinger.nl: could not connect to host +bluedata.ltd: could not connect to host +bluefinger.nl: did not receive HSTS header blueglobalmedia.com: could not connect to host bluehawk.cloud: did not receive HSTS header blueliv.com: did not receive HSTS header -bluemosh.com: could not connect to host -blueoakart.com: could not connect to host +bluemoonroleplaying.com: could not connect to host bluepoint.foundation: could not connect to host bluepoint.institute: could not connect to host +blueridgesecuritycameras.com: did not receive HSTS header bluescloud.xyz: could not connect to host +bluesecure.com.br: did not receive HSTS header bluetenmeer.com: did not receive HSTS header bluezonehealth.co.uk: did not receive HSTS header +blui.cf: max-age too low: 1209600 bluketing.com: did not receive HSTS header blumen-binder.ch: did not receive HSTS header blumen-garage.de: could not connect to host @@ -1906,6 +2128,7 @@ blunderify.se: did not receive HSTS header bluop.com: did not receive HSTS header bluserv.net: could not connect to host bluteklab.com: did not receive HSTS header +blutopia.xyz: did not receive HSTS header blutroyal.de: could not connect to host blvdmb.com: did not receive HSTS header bm-i.ch: could not connect to host @@ -1913,12 +2136,15 @@ bm-immo.ch: could not connect to host bm-trading.nl: did not receive HSTS header bmet.de: did not receive HSTS header bmoattachments.org: did not receive HSTS header +bnb-buddy.nl: could not connect to host +bnboy.cn: could not connect to host bngsecure.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] bnhlibrary.com: did not receive HSTS header board-buy.ru: could not connect to host bobaobei.net: could not connect to host bobaobei.org: could not connect to host -bobiji.com: did not receive HSTS header +bobep.ru: could not connect to host +boboates.com: did not receive HSTS header bodo-wolff.de: could not connect to host bodrumfarm.com: could not connect to host bodyblog.nl: did not receive HSTS header @@ -1927,22 +2153,25 @@ bodybuilding.events: could not connect to host bodyweightsolution.com: could not connect to host boel073.nl: did not receive HSTS header boensou.com: did not receive HSTS header -bogosity.se: could not connect to host bohaishibei.com: did not receive HSTS header +bohan.co: could not connect to host bohan.life: could not connect to host bohyn.cz: could not connect to host boiadeirodeberna.com: could not connect to host boilesen.com: did not receive HSTS header bokeyy.com: could not connect to host bolainfoasia.com: did not receive HSTS header +bolivarfm.com.ve: did not receive HSTS header boltdata.io: could not connect to host boltn.uk: did not receive HSTS header -bolwerk.com.br: could not connect to host +bolwerk.com.br: did not receive HSTS header bomberus.de: could not connect to host bombsquad.studio: could not connect to host bonamihome.ro: could not connect to host bonapp.restaurant: could not connect to host +bondagefetishstore.com: could not connect to host bondtofte.dk: did not receive HSTS header +boneko.de: did not receive HSTS header bonigo.de: did not receive HSTS header bonitabrazilian.co.nz: did not receive HSTS header bonnin.fr: did not receive HSTS header @@ -1958,30 +2187,36 @@ bookingentertainment.com: did not receive HSTS header bookmakersfreebets.com.au: could not connect to host bookofraonlinecasinos.com: could not connect to host bookreport.ga: could not connect to host +bookwitty.social: could not connect to host boomerang.com: did not receive HSTS header boomsaki.com: did not receive HSTS header boomsakis.com: did not receive HSTS header boosterlearnpro.com: did not receive HSTS header -boostgame.win: could not connect to host boote.wien: did not receive HSTS header booter.es: could not connect to host booth.in.th: could not connect to host bootikexpress.fr: did not receive HSTS header boozinyan.com: could not connect to host bopera.co.uk: could not connect to host +borchers-media.de: could not connect to host +borchers.ninja: did not receive HSTS header borderlinegroup.com: could not connect to host +borgmestervangen.xyz: could not connect to host boringsecurity.net: could not connect to host -boris.one: did not receive HSTS header +boris.one: could not connect to host borisavstankovic.rs: could not connect to host borisbesemer.com: could not connect to host born-to-learn.com: did not receive HSTS header borrelioz.com: did not receive HSTS header borscheid-wenig.com: did not receive HSTS header boschee.net: could not connect to host +botlab.ch: could not connect to host +botmanager.pl: could not connect to host botox.bz: did not receive HSTS header +bots.cat: could not connect to host boueki.jp: did not receive HSTS header boueki.org: did not receive HSTS header -boukoubengo.com: did not receive HSTS header +bouk.co: could not connect to host bounce-r-us.co.uk: did not receive HSTS header bounceboxspc.com: did not receive HSTS header bouncecoffee.com: did not receive HSTS header @@ -1991,6 +2226,7 @@ bouncemasters.co.uk: could not connect to host bouncing4joy.co.uk: could not connect to host bouncingbuzzybees.co.uk: could not connect to host bouncycastleandparty.co.uk: could not connect to host +bouncycastlehireauckland.co.nz: could not connect to host bouncycastlehiremedway.com: did not receive HSTS header bouwbedrijfpurmerend.nl: did not receive HSTS header bowlsheet.com: did not receive HSTS header @@ -2004,11 +2240,13 @@ boxlitepackaging.com: did not receive HSTS header boxview.com: could not connect to host boyan.in: could not connect to host boyfriendhusband.men: did not receive HSTS header -bozemancarpetcleaningservices.com: could not connect to host +boypoint.de: could not connect to host +bozemancarpetcleaningservices.com: did not receive HSTS header bp-wahl.at: did not receive HSTS header bpadvisors.eu: could not connect to host bqcp.net: could not connect to host bqtoolbox.com: could not connect to host +braemer-it-consulting.de: could not connect to host bragasoft.com.br: did not receive HSTS header bragaweb.com.br: could not connect to host brainbuxa.com: did not receive HSTS header @@ -2025,7 +2263,6 @@ brainvation.de: did not receive HSTS header brakstad.org: could not connect to host bran.cc: could not connect to host bran.soy: could not connect to host -branchtrack.com: did not receive HSTS header branchzero.com: did not receive HSTS header brand-foo.com: did not receive HSTS header brand-foo.jp: did not receive HSTS header @@ -2038,12 +2275,12 @@ brandred.net: could not connect to host brandspray.com: could not connect to host brasilien.guide: could not connect to host brasilmorar.com: did not receive HSTS header -bratteng.xyz: did not receive HSTS header bravz.de: could not connect to host brb.city: did not receive HSTS header breatheav.com: did not receive HSTS header breatheproduction.com: did not receive HSTS header breeswish.org: did not receive HSTS header +bremensaki.com: max-age too low: 2592000 brenden.net.au: could not connect to host bress.cloud: could not connect to host brettcornwall.com: did not receive HSTS header @@ -2055,15 +2292,19 @@ brickwerks.io: could not connect to host brickyardbuffalo.com: did not receive HSTS header bridgeout.com: could not connect to host bridholm.se: could not connect to host +briggsleroux.com: did not receive HSTS header brightfuturemadebyme.com: could not connect to host brightstarkids.co.uk: did not receive HSTS header brightstarkids.com.au: did not receive HSTS header brightstarkids.net: did not receive HSTS header brightstarkids.sg: did not receive HSTS header +brigittebutt.tk: could not connect to host brilliantbuilders.co.uk: did not receive HSTS header +brilliantdecisionmaking.com: did not receive HSTS header brimspark.com: could not connect to host brinkhu.is: could not connect to host brinkmann.one: could not connect to host +brinquedoseducativos.art.br: did not receive HSTS header brio-ukraine.store: could not connect to host britishmeat.com: could not connect to host britzer-toner.de: did not receive HSTS header @@ -2071,18 +2312,22 @@ brivadois.ovh: did not receive HSTS header brix.ninja: did not receive HSTS header brks.xyz: could not connect to host brmascots.com: could not connect to host -brmsalescommunity.com: could not connect to host broerweb.nl: could not connect to host broken-oak.com: could not connect to host brookechase.com: did not receive HSTS header brookframework.org: could not connect to host +brossman.it: could not connect to host +brouwerijkoelit.nl: did not receive HSTS header brownlawoffice.us: did not receive HSTS header browserid.org: could not connect to host brplusdigital.com: could not connect to host brrd.io: could not connect to host brrr.fr: could not connect to host -brunix.net: did not receive HSTS header +brunix.net: could not connect to host brunoonline.co.uk: could not connect to host +brunoramos.com: could not connect to host +brunoramos.org: could not connect to host +brunosouza.org: could not connect to host bryancastillo.site: could not connect to host bryanshearer.accountant: did not receive HSTS header bryn.xyz: could not connect to host @@ -2095,10 +2340,14 @@ bsdtips.com: could not connect to host bsdug.org: could not connect to host bsklabels.com: did not receive HSTS header bsktweetup.info: could not connect to host -bsociabl.com: could not connect to host bsohoekvanholland.nl: could not connect to host -bsquared.org: could not connect to host bsuess.de: could not connect to host +bt78.cn: did not receive HSTS header +bt85.cn: did not receive HSTS header +bt9.cc: did not receive HSTS header +bt96.cn: did not receive HSTS header +bt995.com: did not receive HSTS header +btaoke.com: could not connect to host btc-e.com: did not receive HSTS header btcdlc.com: could not connect to host btcgo.nl: did not receive HSTS header @@ -2114,10 +2363,10 @@ buchheld.at: could not connect to host buchverlag-scholz.de: did not receive HSTS header bucket.tk: could not connect to host buckmulligans.com: did not receive HSTS header -buddhistische-weisheiten.org: did not receive HSTS header +buddhistische-weisheiten.org: could not connect to host budgetenergievriendenvoordeel.nl: could not connect to host budgetthostels.nl: did not receive HSTS header -budskap.eu: did not receive HSTS header +budskap.eu: could not connect to host buenosairesestetica.com.ar: could not connect to host buenotour.ru: did not receive HSTS header buettgens.net: max-age too low: 2592000 @@ -2139,24 +2388,26 @@ buildsaver.co.za: did not receive HSTS header builmaker.com: did not receive HSTS header built.by: did not receive HSTS header buka.jp: could not connect to host +bukai.men: did not receive HSTS header bukatv.cz: could not connect to host -bulbgenie.com: could not connect to host buldogueingles.com.br: could not connect to host bulgarien.guide: could not connect to host bulkbuy.tech: could not connect to host bullbits.com: max-age too low: 0 +bulldoghire.co.uk: did not receive HSTS header bulletbabu.com: could not connect to host bulletpoint.cz: could not connect to host bullterrier.me: could not connect to host bulmafox.com: could not connect to host bulmastife.com.br: could not connect to host +bumarkamoda.com: could not connect to host bumshow.ru: did not receive HSTS header bunadarbankinn.is: could not connect to host bunaken.asia: could not connect to host bunbomenu.de: could not connect to host +bundaberg.com: did not receive HSTS header bunsenlabs.org: max-age too low: 2592000 buonventosbt.eu: did not receive HSTS header -bupu.ml: did not receive HSTS header burckardtnet.de: did not receive HSTS header bureaubolster.nl: did not receive HSTS header bureaugravity.com: did not receive HSTS header @@ -2182,12 +2433,13 @@ businessloanconnection.org: did not receive HSTS header businessmodeler.se: could not connect to host bustabit.com: could not connect to host bustimes.org.uk: did not receive HSTS header -busybee360.com: did not receive HSTS header +busybee360.com: could not connect to host butchersworkshop.com: did not receive HSTS header butian518.com: did not receive HSTS header butt.repair: could not connect to host buttercoin.com: could not connect to host butterfieldstraining.com: could not connect to host +buttermilk.cf: could not connect to host buturyu.org: did not receive HSTS header buvinghausen.com: max-age too low: 86400 buybaby.eu: could not connect to host @@ -2195,7 +2447,7 @@ buybike.shop: could not connect to host buydesired.com: did not receive HSTS header buyessay.org: could not connect to host buyessays.net: could not connect to host -buyfox.de: did not receive HSTS header +buyfox.de: could not connect to host buyharpoon.com: could not connect to host buyingsellingflorida.com: could not connect to host buynowdepot.com: did not receive HSTS header @@ -2208,15 +2460,24 @@ bvexplained.co.uk: could not connect to host bvionline.eu: did not receive HSTS header bw81.xyz: could not connect to host bwear4all.de: could not connect to host +bwin86.com: did not receive HSTS header +bwin8601.com: did not receive HSTS header +bwin8602.com: did not receive HSTS header +bwin8603.com: did not receive HSTS header +bwin8604.com: did not receive HSTS header +bwin8605.com: did not receive HSTS header +bwin8606.com: did not receive HSTS header +bwwb.nu: could not connect to host bx-web.com: did not receive HSTS header bxdev.me: could not connect to host by1896.com: could not connect to host by1898.com: could not connect to host by1899.com: could not connect to host by4cqb.cn: could not connect to host -by77.com: could not connect to host +by77.com: did not receive HSTS header by777.com: did not receive HSTS header byji.com: could not connect to host +byken.cn: did not receive HSTS header bynet.cz: could not connect to host bypass.kr: could not connect to host bypassed.bid: could not connect to host @@ -2238,17 +2499,17 @@ bypassed.today: could not connect to host bypassed.works: could not connect to host bypassed.world: could not connect to host bypro.xyz: could not connect to host -byronwade.com: could not connect to host +byronwade.com: max-age too low: 7889238 byte.chat: did not receive HSTS header byte.wtf: did not receive HSTS header bytelog.org: could not connect to host -bytepen.com: could not connect to host bytesatwork.eu: could not connect to host byteshift.ca: could not connect to host bytesofcode.de: could not connect to host bytesund.biz: could not connect to host byteturtle.eu: did not receive HSTS header byurudraw.pics: could not connect to host +bzhub.bid: did not receive HSTS header c-rickroll-v.pw: could not connect to host c12discountonline.com: did not receive HSTS header c16t.uk: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] @@ -2258,35 +2519,40 @@ c2o2.xyz: could not connect to host c3-compose.com: could not connect to host c3.pm: could not connect to host c3b.info: could not connect to host -c3bbs.com: did not receive HSTS header +c3bbs.com: could not connect to host c3ie.com: did not receive HSTS header c4.hk: could not connect to host -cabaladada.org: could not connect to host cabsites.com: could not connect to host cabusar.fr: could not connect to host +cachethq.io: did not receive HSTS header caconnect.org: could not connect to host cadao.me: did not receive HSTS header cadburymovies.in.net: could not connect to host cadenadg.gr: did not receive HSTS header -cadre.com: could not connect to host caerostris.com: could not connect to host caesreon.com: could not connect to host -cafe-murr.de: could not connect to host +cafe-murr.de: did not receive HSTS header cafe-scientifique.org.ec: could not connect to host +cafe-service.ru: could not connect to host cafechesscourt.com: could not connect to host +cafefresco.pe: did not receive HSTS header caferagazzi.de: did not receive HSTS header cafesg.net: could not connect to host +caibi.io: could not connect to host caim.cz: did not receive HSTS header caipai.fm: could not connect to host cairnterrier.com.br: could not connect to host -cajapopcorn.com: did not receive HSTS header +cais.de: did not receive HSTS header +cajapopcorn.com: could not connect to host +cake-time.co.uk: could not connect to host cake.care: could not connect to host cal.goip.de: could not connect to host calcularpagerank.com.br: could not connect to host calculatoaresecondhand.xyz: could not connect to host -calebmorris.com: could not connect to host +calebmorris.com: did not receive HSTS header calgaryconstructionjobs.com: did not receive HSTS header callabs.net: could not connect to host +callanbryant.co.uk: did not receive HSTS header calleveryday.com: could not connect to host callision.com: did not receive HSTS header callmereda.com: did not receive HSTS header @@ -2296,6 +2562,7 @@ calomel.org: max-age too low: 2764800 calories.org: could not connect to host caltonnutrition.com: did not receive HSTS header calvin.me: did not receive HSTS header +calypso-tour.net: could not connect to host calypsogames.net: could not connect to host calyxinstitute.org: could not connect to host camashop.de: did not receive HSTS header @@ -2306,6 +2573,7 @@ camda.online: could not connect to host camisadotorcedor.com.br: could not connect to host camjackson.net: did not receive HSTS header cammarkets.com: could not connect to host +camomile.desi: could not connect to host campaignelves.com: did not receive HSTS header campbellsoftware.co.uk: could not connect to host campfire.co.il: did not receive HSTS header @@ -2313,8 +2581,8 @@ campfourpaws.com: did not receive HSTS header campingcarlovers.com: could not connect to host campingdreams.com: did not receive HSTS header campus-cybersecurity.team: did not receive HSTS header -campusportalng.com: did not receive HSTS header camsanalytics.com: could not connect to host +camshowhub.com: could not connect to host canadiangamblingchoice.com: did not receive HSTS header canarianlegalalliance.com: did not receive HSTS header cancelmyprofile.com: could not connect to host @@ -2325,14 +2593,15 @@ candygirl.shop: could not connect to host candykidsentertainment.co.uk: did not receive HSTS header canifis.net: did not receive HSTS header cannarobotics.com: could not connect to host -canterbury.ws: did not receive HSTS header +canterbury.ws: could not connect to host canyonshoa.com: did not receive HSTS header caodecristachines.com.br: could not connect to host caoyu.info: did not receive HSTS header +capacitacionyautoempleo.com: did not receive HSTS header capecycles.co.za: did not receive HSTS header capeyorkfire.com.au: did not receive HSTS header -capitalonecardservice.com: did not receive HSTS header -caps.is: could not connect to host +capitalonecardservice.com: could not connect to host +captainark.net: could not connect to host captchatheprize.com: could not connect to host captianseb.de: could not connect to host captivatedbytabrett.com: could not connect to host @@ -2340,20 +2609,21 @@ captivationscience.com: could not connect to host captivationtheory.com: could not connect to host capturethepen.co.uk: could not connect to host car-navi.ph: did not receive HSTS header -car-rental24.com: could not connect to host +car-rental24.com: did not receive HSTS header car-shop.top: did not receive HSTS header carano-service.de: did not receive HSTS header caraudio69.cz: could not connect to host card-cashing.com: max-age too low: 0 -card-toka.jp: did not receive HSTS header +card-toka.jp: could not connect to host cardloan-manual.net: could not connect to host cardoni.net: did not receive HSTS header cardstream.com: did not receive HSTS header cardurl.com: did not receive HSTS header +cardwars.hu: could not connect to host careeraid.in: could not connect to host careerstuds.com: could not connect to host careplasticsurgery.com: did not receive HSTS header -carey.bio: could not connect to host +carey.bio: did not receive HSTS header carif-idf.net: did not receive HSTS header carif-idf.org: did not receive HSTS header carlgo11.com: did not receive HSTS header @@ -2365,7 +2635,9 @@ carloshmm.stream: could not connect to host carlovanwyk.com: could not connect to host carlsbouncycastlesandhottubs.co.uk: did not receive HSTS header carlscatering.com: did not receive HSTS header -carpliyz.com: could not connect to host +carol-lambert.com: could not connect to host +caroli.biz: could not connect to host +carpliyz.com: did not receive HSTS header carrando.de: could not connect to host carredejardin.com: could not connect to host carroarmato0.be: did not receive HSTS header @@ -2376,6 +2648,7 @@ carterorland.com: could not connect to host cartesunicef.be: did not receive HSTS header carun.us: did not receive HSTS header carwashvapeur.be: could not connect to host +casadellecose.com: did not receive HSTS header casajardininsecticidas.com: did not receive HSTS header casamorelli.com.br: did not receive HSTS header casashopp.com.br: could not connect to host @@ -2387,35 +2660,29 @@ cashfortulsahouses.com: could not connect to host cashless.fr: did not receive HSTS header cashmyphone.ch: could not connect to host cashsector.ga: could not connect to host -casinolegal.pt: did not receive HSTS header casinolistings.com: could not connect to host casinoluck.com: could not connect to host casinoreal.com: could not connect to host casinostest.com: could not connect to host +casionova.org: did not receive HSTS header casioshop.eu: did not receive HSTS header -casjay.cloud: did not receive HSTS header -casjay.us: could not connect to host -casjaygames.com: could not connect to host casovi.cf: could not connect to host caspicards.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] castagnonavocats.com: did not receive HSTS header -castlejackpot.com: could not connect to host -casusgrillcaribbean.com: could not connect to host cata.ga: could not connect to host -catalin.pw: could not connect to host +catalin.pw: did not receive HSTS header catarsisvr.com: could not connect to host -catchers.cc: did not receive HSTS header catcontent.cloud: could not connect to host caterkids.com: did not receive HSTS header catgirl.me: could not connect to host catgirl.pics: could not connect to host catharisme.org: could not connect to host +catherineidylle.com: max-age too low: 0 catherinesarasin.com: did not receive HSTS header -catinmay.com: could not connect to host +catinmay.com: did not receive HSTS header catnapstudios.com: could not connect to host catnmeow.com: could not connect to host catsmagic.pp.ua: could not connect to host -caughtredhanded.co.nz: could not connect to host causae-fincas.es: did not receive HSTS header causae.es: did not receive HSTS header cavaleria.ro: did not receive HSTS header @@ -2424,11 +2691,14 @@ caveclan.org: did not receive HSTS header cavedevs.de: could not connect to host cavedroid.xyz: could not connect to host cavern.tv: did not receive HSTS header +cayafashion.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] cayounglab.co.jp: did not receive HSTS header +cazes.info: did not receive HSTS header cbamo.org: did not receive HSTS header cbengineeringinc.com: max-age too low: 86400 cbhq.net: could not connect to host cbi-epa.gov: could not connect to host +cc2729.com: did not receive HSTS header ccayearbook.com: could not connect to host ccblog.de: did not receive HSTS header ccl-sti.ch: could not connect to host @@ -2438,7 +2708,6 @@ cctld.com: could not connect to host ccv.eu: did not receive HSTS header cd0.us: could not connect to host cdcpartners.gov: could not connect to host -cdeck.net: could not connect to host cdkeyworld.de: did not receive HSTS header cdmhp.org.nz: could not connect to host cdmon.tech: could not connect to host @@ -2451,19 +2720,17 @@ cdt.org: did not receive HSTS header ce-agentur.de: did not receive HSTS header cecilwalker.com.au: did not receive HSTS header cee.io: could not connect to host -cefak.org.br: could not connect to host +cefak.org.br: did not receive HSTS header cegfw.com: could not connect to host ceilingpac.org: could not connect to host +cekaja.com: did not receive HSTS header celebphotos.blog: could not connect to host -celebrityhealthcritic.com: did not receive HSTS header celec.gob.ec: could not connect to host celeirorural.com.br: did not receive HSTS header celigo.com: did not receive HSTS header celina-reads.de: could not connect to host cellartracker.com: could not connect to host cellsites.nz: could not connect to host -cem.pw: could not connect to host -cemeteriat.com: did not receive HSTS header cencalvia.org: could not connect to host centennialrewards.com: did not receive HSTS header centerforpolicy.org: could not connect to host @@ -2476,10 +2743,13 @@ centralvacsunlimited.net: did not receive HSTS header centralvoice.org: could not connect to host centralync.com: could not connect to host centrepoint-community.com: could not connect to host +centricbeats.com: did not receive HSTS header +centrodoinstalador.com.br: did not receive HSTS header centrolavoro.org: did not receive HSTS header centsforchange.net: could not connect to host ceoimon.com: did not receive HSTS header cercevelet.com: did not receive HSTS header +ceres1.space: did not receive HSTS header ceresia.ch: could not connect to host ceritamalam.net: could not connect to host cerize.love: could not connect to host @@ -2492,22 +2762,27 @@ certifix.eu: did not receive HSTS header certly.io: could not connect to host certmgr.org: could not connect to host ceruleanmainbeach.com.au: did not receive HSTS header +cervejista.com: could not connect to host cesal.net: could not connect to host cesidianroot.eu: could not connect to host cevrimici.com: could not connect to host +cf-tm.net: could not connect to host cf11.de: did not receive HSTS header cfcnexus.org: could not connect to host cfcproperties.com: did not receive HSTS header cfetengineering.com: could not connect to host cfneia.org: could not connect to host cfoitplaybook.com: could not connect to host +cfsh.tk: could not connect to host cganx.org: could not connect to host cgerstner.eu: did not receive HSTS header cgsshelper.tk: could not connect to host cgtx.us: could not connect to host +chabaojia.com: did not receive HSTS header chadklass.com: could not connect to host chahub.com: could not connect to host chainmonitor.com: could not connect to host +chaldeen.pro: did not receive HSTS header chalker.io: could not connect to host challengeskins.com: could not connect to host chameleon-ents.co.uk: could not connect to host @@ -2516,18 +2791,22 @@ chamilo.org: did not receive HSTS header champ.dog: did not receive HSTS header championnat-romand-cuisiniers-amateurs.ch: could not connect to host championsofregnum.com: did not receive HSTS header -chancat.blog: did not receive HSTS header +chancat.blog: could not connect to host chandlerredding.com: could not connect to host changelab.cc: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] changetip.com: did not receive HSTS header channelcards.com: did not receive HSTS header -channellife.asia: could not connect to host +channellife.asia: did not receive HSTS header +channellife.co.nz: did not receive HSTS header +channellife.com.au: did not receive HSTS header channyc.com: did not receive HSTS header +chanoyu-gakkai.jp: could not connect to host chanshiyu.com: did not receive HSTS header chaos.fail: could not connect to host chaospott.de: did not receive HSTS header chaoswebs.net: did not receive HSTS header chaouby.com: could not connect to host +charakato.com: could not connect to host charge.co: could not connect to host chargejuice.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] charityclear.com: could not connect to host @@ -2540,7 +2819,6 @@ charnleyhouse.co.uk: did not receive HSTS header charonsecurity.com: could not connect to host charp.eu: could not connect to host chartstoffarm.de: did not receive HSTS header -chasafilli.ch: could not connect to host chaseganey.com: did not receive HSTS header chasing-coins.com: did not receive HSTS header chaska.co.za: did not receive HSTS header @@ -2548,6 +2826,7 @@ chasse-et-plaisir.com: did not receive HSTS header chat-porc.eu: did not receive HSTS header chatbot.me: did not receive HSTS header chatbots.email: could not connect to host +chateau-belvoir.com: did not receive HSTS header chateauconstellation.ch: did not receive HSTS header chateaudevaugrigneuse.com: did not receive HSTS header chatint.com: did not receive HSTS header @@ -2557,23 +2836,27 @@ chatxp.com: could not connect to host chaulootz.com: did not receive HSTS header chaverde.org: could not connect to host chcemvediet.sk: max-age too low: 1555200 +chdgaming.xyz: could not connect to host cheah.xyz: could not connect to host cheapdns.org: could not connect to host -cheapssl.com.tr: could not connect to host +cheapssl.com.tr: did not receive HSTS header +cheapwritinghelp.com: could not connect to host cheapwritingservice.com: could not connect to host cheazey.net: did not receive HSTS header chebedara.com: could not connect to host chebwebb.com: could not connect to host checkhost.org: could not connect to host -checkmatewebsolutions.com: did not receive HSTS header +checkmatewebsolutions.com: max-age too low: 0 checkout.google.com: could not connect to host (error ignored - included regardless) -checkyourmeds.com: did not receive HSTS header +checkyourmeds.com: could not connect to host cheekylittlerascals.co.uk: did not receive HSTS header cheerflow.com: could not connect to host +cheesefusion.com: could not connect to host cheesetart.my: could not connect to host cheesypicsbooths.co.uk: could not connect to host cheetah85.de: could not connect to host chefgalles.com.br: could not connect to host +chehalemgroup.com: did not receive HSTS header chejianer.cn: could not connect to host chellame.com: could not connect to host chellame.fr: could not connect to host @@ -2589,12 +2872,17 @@ cherylsoleway.com: did not receive HSTS header chessreporter.nl: did not receive HSTS header chesterbrass.uk: did not receive HSTS header chiamata-aiuto.ch: could not connect to host +chiaramail.com: could not connect to host chib.chat: could not connect to host chicorycom.net: could not connect to host chihiro.xyz: could not connect to host chijiokeindustries.co.uk: could not connect to host +chikan-beacon.net: could not connect to host +chikatomo-ryugaku.com: did not receive HSTS header +chikory.com: could not connect to host childcaresolutionscny.org: did not receive HSTS header childrendeservebetter.org: did not receive HSTS header +childrens-room.com: did not receive HSTS header chilli943.info: did not receive HSTS header chimparoo.ca: did not receive HSTS header china-dhl.org: could not connect to host @@ -2602,24 +2890,29 @@ china-line.org: could not connect to host chinternet.xyz: could not connect to host chiphell.com: did not receive HSTS header chirgui.eu: could not connect to host -chiropracticwpb.com: could not connect to host chloca.jp: did not receive HSTS header chloe.re: did not receive HSTS header chloeallison.co.uk: could not connect to host +chloehorler.com: could not connect to host chlouis.net: could not connect to host chm.vn: did not receive HSTS header +chmielarz.it: could not connect to host chocolat-suisse.ch: could not connect to host chodobien.com: could not connect to host chodocu.com: did not receive HSTS header +choe.fi: could not connect to host choiralberta.ca: did not receive HSTS header +chonghe.org: did not receive HSTS header chontalpa.pw: could not connect to host chopperforums.com: could not connect to host -chordso.com: could not connect to host +chordso.com: did not receive HSTS header chorkley.me: could not connect to host choruscrowd.com: could not connect to host chotu.net: could not connect to host chris-web.info: could not connect to host chrisandsarahinasia.com: could not connect to host +chrisb.me: did not receive HSTS header +chrisb.xyz: did not receive HSTS header chrisbrakebill.com: did not receive HSTS header chrisbrown.id.au: could not connect to host chrisebert.net: could not connect to host @@ -2633,10 +2926,9 @@ christiaandruif.nl: could not connect to host christianbro.gq: could not connect to host christianhoffmann.info: could not connect to host christianhospitaltank.org: did not receive HSTS header -christianillies.de: could not connect to host christiansayswords.com: could not connect to host -christianscholz.eu: could not connect to host -christina-quast.de: could not connect to host +christianscholz.eu: did not receive HSTS header +christina-quast.de: did not receive HSTS header christophebarbezat.ch: could not connect to host christophercolumbusfoundation.gov: could not connect to host christophersole.com: could not connect to host @@ -2644,6 +2936,7 @@ christophheich.me: did not receive HSTS header chrisupjohn.com: could not connect to host chrisupjohn.xyz: could not connect to host chrisvicmall.com: did not receive HSTS header +chriswbarry.com: did not receive HSTS header chromaryu.net: could not connect to host chromaxa.com: could not connect to host chrome: could not connect to host @@ -2652,8 +2945,10 @@ chrome.google.com: did not receive HSTS header (error ignored - included regardl chronogram.me: did not receive HSTS header chronoproject.com: did not receive HSTS header chrst.ph: could not connect to host -chs.us: max-age too low: 0 +chs.us: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] +chsh.moe: could not connect to host chua.cf: could not connect to host +chua.family: did not receive HSTS header chuckame.fr: did not receive HSTS header chulado.com: did not receive HSTS header chundelac.com: could not connect to host @@ -2662,11 +2957,11 @@ churchwebcanada.ca: did not receive HSTS header churchwebsupport.com: did not receive HSTS header churrasqueirafacil.com.br: could not connect to host ci-labo.com.tw: max-age too low: 7889238 +ci-suite.com: could not connect to host cianmawhinney.xyz: could not connect to host cidadedopoker.com.br: did not receive HSTS header ciderclub.com: could not connect to host cidr.ml: could not connect to host -cielly.com: could not connect to host cienbeaute-lidl.fr: could not connect to host cigarblogs.net: could not connect to host cigarterminal.com: could not connect to host @@ -2676,6 +2971,7 @@ cim2b.de: could not connect to host cimalando.eu: could not connect to host cinartelorgu.com: did not receive HSTS header cinefilia.tk: could not connect to host +cinelite.club: could not connect to host cinema5.ru: did not receive HSTS header cinemaclub.co: could not connect to host cinerama.com.br: did not receive HSTS header @@ -2683,6 +2979,7 @@ cintdirect.com: could not connect to host cioconference.co.nz: did not receive HSTS header cipher.co.th: did not receive HSTS header cipher.land: could not connect to host +cipherboy.com: could not connect to host cipherli.st: did not receive HSTS header ciplanutrition.com: could not connect to host cipriano.nl: did not receive HSTS header @@ -2694,24 +2991,24 @@ ciscohomeanalytics.com: could not connect to host ciscommerce.net: could not connect to host citiagent.cz: could not connect to host citra-emu.org: did not receive HSTS header +citroner.blog: could not connect to host citybusexpress.com: did not receive HSTS header +cityofeastpointemi.gov: could not connect to host cityoflaurel.org: did not receive HSTS header +cityofwadley-ga.gov: could not connect to host citywalkr.com: could not connect to host ciuciucadou.ro: could not connect to host cium.ru: could not connect to host -ciurcasdan.eu: did not receive HSTS header civicunicorn.com: could not connect to host civicunicorn.us: could not connect to host cjcaron.org: could not connect to host -cjdpenterprises.com: could not connect to host -cjdpenterprises.com.au: could not connect to host cjessett.com: max-age too low: 0 cjtkfan.club: could not connect to host ckcameron.net: could not connect to host ckp.io: could not connect to host claimit.ml: could not connect to host clan-ww.com: did not receive HSTS header -clapping-rhymes.com: did not receive HSTS header +clapping-rhymes.com: could not connect to host clara-baumert.de: could not connect to host claralabs.com: did not receive HSTS header claretandbanter.uk: could not connect to host @@ -2725,7 +3022,6 @@ classicshop.ua: did not receive HSTS header classicspublishing.com: could not connect to host classifiedssa.co.za: could not connect to host claster.it: did not receive HSTS header -claude.tech: could not connect to host claudearpel.fr: did not receive HSTS header claudio4.com: did not receive HSTS header claytoncondon.com: could not connect to host @@ -2737,7 +3033,6 @@ cleanstar.org: could not connect to host clear.ml: could not connect to host clearc.tk: could not connect to host clearchatsandbox.com: could not connect to host -clearkonjac.com: could not connect to host clearsky.me: did not receive HSTS header clearviewwealthprojector.com.au: could not connect to host clemovementlaw.com: could not connect to host @@ -2751,8 +3046,9 @@ click2order.co.uk: did not receive HSTS header clickandgo.com: did not receive HSTS header clickandshoot.nl: could not connect to host clickclickphish.com: did not receive HSTS header +clickforclever.com: did not receive HSTS header clickgram.biz: could not connect to host -clickomobile.com: could not connect to host +clickomobile.com: did not receive HSTS header clicks.co.za: max-age too low: 1800 clicktenisdemesa.com.br: did not receive HSTS header clicn.bio: could not connect to host @@ -2762,12 +3058,14 @@ clinia.ca: did not receive HSTS header clinicaferrusbratos.com: did not receive HSTS header clinicasilos.com: did not receive HSTS header cliniko.com: did not receive HSTS header +cliniquecomplementaire.com: could not connect to host clintonbloodworth.com: could not connect to host clintonbloodworth.io: could not connect to host clintwilson.technology: max-age too low: 2592000 clipped4u.com: could not connect to host clod-hacking.com: could not connect to host cloghercastles.co.uk: did not receive HSTS header +clorik.com: could not connect to host closient.com: did not receive HSTS header closingholding.com: could not connect to host cloud-crowd.com.au: did not receive HSTS header @@ -2782,9 +3080,9 @@ cloudbleed.info: could not connect to host cloudcert.org: did not receive HSTS header cloudcy.net: could not connect to host clouddesktop.co.nz: could not connect to host -cloudfiles.at: could not connect to host cloudfren.com: did not receive HSTS header cloudimag.es: could not connect to host +cloudimproved.com: could not connect to host cloudimprovedtest.com: could not connect to host cloudlink.club: could not connect to host cloudmigrator365.com: did not receive HSTS header @@ -2808,9 +3106,12 @@ clownish.co.il: could not connect to host clsimplex.com: did not receive HSTS header clubcall.com: did not receive HSTS header clubdeslecteurs.net: could not connect to host +clubmate.rocks: could not connect to host clubmix.co.kr: could not connect to host +cluefulca.com: could not connect to host +cluefulca.net: could not connect to host +cluefulca.org: could not connect to host cluj.apartments: could not connect to host -cluster.biz.tr: could not connect to host cluster.id: could not connect to host clvrwebdesign.com: did not receive HSTS header clvs7.com: did not receive HSTS header @@ -2821,9 +3122,10 @@ cmc-versand.de: did not receive HSTS header cmcc.network: could not connect to host cmci.dk: did not receive HSTS header cmdtelecom.net.br: did not receive HSTS header +cmitao.com: could not connect to host cmpr.es: could not connect to host cmrss.com: could not connect to host -cms-weble.jp: did not receive HSTS header +cms-weble.jp: could not connect to host cmsbattle.com: could not connect to host cmscafe.ru: did not receive HSTS header cmskh.co.uk: could not connect to host @@ -2833,19 +3135,21 @@ cnaprograms.online: could not connect to host cncfraises.fr: did not receive HSTS header cncn.us: did not receive HSTS header cnetw.xyz: could not connect to host -cnitdog.com: did not receive HSTS header +cnitdog.com: could not connect to host cnlic.com: could not connect to host cnrd.me: did not receive HSTS header cnsyear.com: did not receive HSTS header cnwage.com: could not connect to host cnwarn.com: could not connect to host -co-driversphoto.se: could not connect to host +co-driversphoto.se: did not receive HSTS header co-yutaka.com: could not connect to host coach-sportif.paris: did not receive HSTS header coachingconsultancy.com: did not receive HSTS header +coam.co: could not connect to host coathangerstrangla.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] coathangerstrangler.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] cobaltlp.com: could not connect to host +cobcode.com: could not connect to host cobrax.net: could not connect to host coccinellaskitchen.com: could not connect to host coccinellaskitchen.de: could not connect to host @@ -2856,9 +3160,10 @@ cockerspanielamericano.com.br: could not connect to host cockerspanielingles.com.br: could not connect to host cocktailfuture.fr: could not connect to host coco-cool.fr: could not connect to host +cocodemy.com: did not receive HSTS header cocolovesdaddy.com: could not connect to host codabix.com: did not receive HSTS header -codabix.de: could not connect to host +codabix.de: did not receive HSTS header codabix.net: could not connect to host code-35.com: could not connect to host code-digsite.com: could not connect to host @@ -2870,11 +3175,10 @@ codecontrollers.de: could not connect to host codedelarouteenligne.fr: did not receive HSTS header codeforce.io: could not connect to host codeforhakodate.org: did not receive HSTS header -codejunkie.de: did not receive HSTS header codelayer.ca: could not connect to host codelitmus.com: did not receive HSTS header codeloop.pw: could not connect to host -codelove.de: could not connect to host +codelove.de: did not receive HSTS header codemonkeyrawks.net: did not receive HSTS header codemperium.com: could not connect to host codenlife.xyz: could not connect to host @@ -2883,6 +3187,7 @@ codeplay.org: could not connect to host codepoet.de: did not receive HSTS header codeproxy.ddns.net: could not connect to host codepx.com: did not receive HSTS header +codercy.com: could not connect to host coderhangout.com: could not connect to host codewiththepros.org: could not connect to host codewiz.xyz: could not connect to host @@ -2893,18 +3198,19 @@ coffeeetc.co.uk: could not connect to host coffeestrategies.com: max-age too low: 5184000 cogniflex.com: did not receive HSTS header cogumelosmagicos.org: could not connect to host -cohesive.io: could not connect to host +cohesive.io: did not receive HSTS header coin-exchange.cz: could not connect to host coindam.com: could not connect to host -coins2001.ru: could not connect to host +coinessa.com: could not connect to host colarelli.ch: could not connect to host +coldaddy.com: could not connect to host coldlostsick.net: could not connect to host coldwatericecream.com: did not receive HSTS header colearnr.com: could not connect to host collablynk.com: could not connect to host collabra.email: did not receive HSTS header collard.tk: could not connect to host -collectiblebeans.com: could not connect to host +collbox.co: did not receive HSTS header collectosaurus.com: did not receive HSTS header colleencornez.com: could not connect to host collegepulse.org: could not connect to host @@ -2918,15 +3224,18 @@ colmexpro.com: did not receive HSTS header colognegaming.net: could not connect to host coloradocomputernetworking.net: could not connect to host colorcentertoner.com.br: did not receive HSTS header +coloringnotebook.com: could not connect to host colorlib.com: did not receive HSTS header colorunhas.com.br: did not receive HSTS header -coltonrb.com: could not connect to host com.cc: could not connect to host combatshield.cz: did not receive HSTS header comchezmeme.com: could not connect to host -comefollowme2016.com: did not receive HSTS header +comdotgame.com: could not connect to host +comefollowme2016.com: could not connect to host comeoncolleen.com: did not receive HSTS header comercialtrading.eu: could not connect to host +cometonovascotia.ca: could not connect to host +cometrueunlimited.com: could not connect to host comfortdom.ua: did not receive HSTS header comfortticket.de: did not receive HSTS header comfy.cafe: could not connect to host @@ -2938,16 +3247,18 @@ comicspines.com: could not connect to host comiq.io: could not connect to host comitesaustria.at: could not connect to host comiteshopping.com: could not connect to host -commania.co.kr: could not connect to host commencepayments.com: did not receive HSTS header commerciallocker.com: could not connect to host commercialplanet.eu: could not connect to host commune-preuilly.fr: did not receive HSTS header community-cupboard.org: did not receive HSTS header -communityflow.info: could not connect to host comocurarlagastritis24.online: did not receive HSTS header comocurarlashemorroides.org: could not connect to host comocurarlashemorroidesya.com: did not receive HSTS header +comoimportar.net: did not receive HSTS header +comorecuperaratumujerpdf.com: could not connect to host +comosecarabarriga.net: did not receive HSTS header +comoseduzir.net: did not receive HSTS header comotalk.com: could not connect to host compalytics.com: could not connect to host comparamejor.com: did not receive HSTS header @@ -2959,11 +3270,10 @@ compiledworks.com: could not connect to host completesportperformance.com: did not receive HSTS header completionist.audio: could not connect to host complex-organization.com: could not connect to host -compliance-systeme.de: could not connect to host complt.xyz: could not connect to host complymd.com: did not receive HSTS header compredietlight.com.br: did not receive HSTS header -comprefitasadere.com.br: did not receive HSTS header +comprefitasadere.com.br: could not connect to host comprehensiveihc.com: could not connect to host compromised.com: could not connect to host compsmag.com: did not receive HSTS header @@ -2979,31 +3289,34 @@ concerts-metal.ch: did not receive HSTS header conclave.global: could not connect to host concord-group.co.jp: did not receive HSTS header concretehermit.com: did not receive HSTS header -conectalmeria.com: could not connect to host +conectalmeria.com: did not receive HSTS header confirm365.com: could not connect to host +conflux.tw: could not connect to host conformal.com: could not connect to host -confucio.cl: could not connect to host congz.me: could not connect to host +conkret.ch: could not connect to host conkret.co.uk: could not connect to host conkret.eu: could not connect to host conkret.in: did not receive HSTS header +conkret.mobi: could not connect to host connaitre-les-astres.com: did not receive HSTS header -connect-me.com: did not receive HSTS header connect.ua: could not connect to host connected-verhuurservice.nl: did not receive HSTS header connectfss.com: could not connect to host connectingconcepts.com: did not receive HSTS header -conpins.nl: could not connect to host +conniesacademy.com: could not connect to host +connorsmith.co: could not connect to host conrad.am: could not connect to host consciousandglamorous.com: could not connect to host consciousbrand.org.au: could not connect to host consciousbranding.org.au: could not connect to host consciousbrands.net.au: could not connect to host +conseil-gli.fr: did not receive HSTS header consejosdehogar.com: did not receive HSTS header console.python.org: did not receive HSTS header console.support: did not receive HSTS header +construct-trust.com: did not receive HSTS header constructive.men: could not connect to host -consultation.biz.tr: could not connect to host consultcelerity.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] consultingroupitaly.com: did not receive HSTS header consultorcr.net: did not receive HSTS header @@ -3014,22 +3327,22 @@ contaimo.com: did not receive HSTS header container-lion.com: did not receive HSTS header containerstatistics.com: could not connect to host contarkos.xyz: could not connect to host +contents.ga: did not receive HSTS header continuation.io: could not connect to host continuumgaming.com: could not connect to host contraout.com: could not connect to host controlcenter.gigahost.dk: did not receive HSTS header -controleer-maar-een-ander.nl: did not receive HSTS header convergemagazine.com: did not receive HSTS header convertimg.com: could not connect to host convoitises.com: did not receive HSTS header cooink.net: could not connect to host cookiestudies.cf: could not connect to host -cool110.tk: could not connect to host -cool110.xyz: could not connect to host +cookingbazart.com: did not receive HSTS header coolaj86.com: did not receive HSTS header coolbutbroken.com: did not receive HSTS header coolchevy.org.ua: did not receive HSTS header coole-meister.de: could not connect to host +coolerssr.space: could not connect to host cooljs.me: could not connect to host coolkidsbouncycastles.co.uk: did not receive HSTS header coolvox.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] @@ -3038,6 +3351,7 @@ cooxa.com: could not connect to host copshop.com.br: could not connect to host coptic-treasures.com: max-age too low: 2592000 copycaught.com: could not connect to host +copytrack.com: did not receive HSTS header cor-ser.es: could not connect to host coralproject.net: did not receive HSTS header coralrosado.com.br: did not receive HSTS header @@ -3050,16 +3364,16 @@ coreapm.com: could not connect to host corecdn.org: could not connect to host coreinfrastructure.org: did not receive HSTS header corenetworking.de: could not connect to host +coresos.com: could not connect to host corex.io: could not connect to host corgicloud.com: could not connect to host corinnanese.de: could not connect to host -coriver.me: could not connect to host +coriver.me: did not receive HSTS header corkyoga.site: could not connect to host cormactagging.ie: could not connect to host cormilu.com.br: did not receive HSTS header cornishcamels.com: did not receive HSTS header cornmachine.com: did not receive HSTS header -cornodo.com: could not connect to host coroasdefloresonline.com.br: could not connect to host corozanu.ro: did not receive HSTS header corpoatletico.com.br: could not connect to host @@ -3072,7 +3386,7 @@ corruption-mc.net: could not connect to host corruption-rsps.net: could not connect to host corruption-server.net: could not connect to host corzntin.fr: could not connect to host -cosmeticosnet.com.br: could not connect to host +cosmeticosnet.com.br: did not receive HSTS header cosmiatria.pe: could not connect to host cosmoluziluminacion.com: did not receive HSTS header cosmoss-departure.com: did not receive HSTS header @@ -3083,8 +3397,10 @@ cougarsland.com: did not receive HSTS header coughlan.de: did not receive HSTS header counselling.network: could not connect to host count.sh: could not connect to host +countryoutlaws.ca: did not receive HSTS header coup-dun-soir.ch: could not connect to host couponcodeq.com: could not connect to host +cour4g3.me: could not connect to host couragewhispers.ca: could not connect to host coursdeprogrammation.com: could not connect to host course.pp.ua: did not receive HSTS header @@ -3092,7 +3408,6 @@ course.rs: could not connect to host coursella.com: did not receive HSTS header courses.nl: could not connect to host courseworkbank.info: could not connect to host -cousincouples.com: max-age too low: 0 cove.sh: could not connect to host covenantbank.net: could not connect to host coverdat.com: could not connect to host @@ -3103,10 +3418,11 @@ cozy.io: did not receive HSTS header cozycloud.cc: did not receive HSTS header cpaneltips.com: could not connect to host cpbanq.com: could not connect to host -cpu.biz.tr: could not connect to host +cptoon.com: could not connect to host cpuvinf.eu.org: could not connect to host +cqchome.com: did not receive HSTS header cracking.org: did not receive HSTS header -crackingking.com: did not receive HSTS header +crackingking.com: could not connect to host crackpfer.de: could not connect to host crackslut.eu: could not connect to host craftbeerbarn.co.uk: could not connect to host @@ -3115,17 +3431,17 @@ craftination.net: could not connect to host craftmain.eu: could not connect to host craftmine.cz: could not connect to host craftngo.hu: could not connect to host +craftwmcp.xyz: could not connect to host craftydev.design: could not connect to host -craigsimpson.scot: did not receive HSTS header cranems.com.ua: could not connect to host cranesafe.com: max-age too low: 7889238 cranioschule.com: did not receive HSTS header -crashsec.com: could not connect to host +crashsec.com: did not receive HSTS header crate.io: did not receive HSTS header cravelyrics.com: could not connect to host crazifyngers.com: could not connect to host crazy-crawler.de: did not receive HSTS header -crazycen.com: did not receive HSTS header +crazycen.com: could not connect to host crazycraftland.de: did not receive HSTS header crazycraftland.net: did not receive HSTS header crazyfamily11.de: did not receive HSTS header @@ -3134,23 +3450,29 @@ crazyker.com: did not receive HSTS header crbug.com: did not receive HSTS header (error ignored - included regardless) creaescola.com: did not receive HSTS header creamybuild.com: could not connect to host +create-ls.jp: could not connect to host create-test-publish.co.uk: could not connect to host creativeapple.ltd: did not receive HSTS header creativeartifice.com: did not receive HSTS header creativecommonscatpictures.com: could not connect to host +creativefolks.co.uk: did not receive HSTS header creativephysics.ml: could not connect to host creativeplayuk.com: did not receive HSTS header creato.top: could not connect to host +crecips.com: could not connect to host crecket.me: could not connect to host credia.jp: did not receive HSTS header creditclear.com.au: did not receive HSTS header -creditreporttips.net: could not connect to host +creditreporttips.net: did not receive HSTS header crendontech.com: did not receive HSTS header +creorin.com: did not receive HSTS header crestoncottage.com: could not connect to host crewplanner.eu: did not receive HSTS header +crge.eu: max-age too low: 0 crimewatch.net.za: could not connect to host crisissurvivalspecialists.com: could not connect to host cristianhares.com: could not connect to host +critcola.com: could not connect to host criticalaim.com: could not connect to host crizk.com: could not connect to host crl-autos.com: could not connect to host @@ -3158,42 +3480,42 @@ crmdemo.website: did not receive HSTS header crockett.io: did not receive HSTS header croco.vision: did not receive HSTS header croeder.net: could not connect to host +croisieres.discount: did not receive HSTS header +cromosomax.com: could not connect to host croods-mt2.fr: did not receive HSTS header croome.no-ip.org: could not connect to host crop-alert.com: could not connect to host crosbug.com: did not receive HSTS header (error ignored - included regardless) crosspeakoms.com: did not receive HSTS header crosssec.com: did not receive HSTS header -crow.tw: could not connect to host crowd.supply: did not receive HSTS header crowdcurity.com: did not receive HSTS header crowdjuris.com: could not connect to host +crowdwis.com: could not connect to host crownbouncycastlehire.co.uk: did not receive HSTS header crownruler.com: did not receive HSTS header crox.co: could not connect to host crrev.com: did not receive HSTS header (error ignored - included regardless) -crt.sh: could not connect to host +crt.cloud: could not connect to host crtvmgmt.com: could not connect to host crudysql.com: could not connect to host crufad.org: did not receive HSTS header -cruikshank.com.au: could not connect to host +cruikshank.com.au: did not receive HSTS header crushroom.com: max-age too low: 43200 cruzeiropedia.org: did not receive HSTS header cruzr.xyz: could not connect to host crypalert.com: could not connect to host crypt.guru: did not receive HSTS header cryptify.eu: could not connect to host +crypto-armory.com: could not connect to host cryptobells.com: did not receive HSTS header cryptobin.org: could not connect to host cryptocaseproject.com: could not connect to host cryptodash.net: could not connect to host -cryptoegg.ca: could not connect to host -cryptofrog.co: could not connect to host cryptoisnotacrime.org: could not connect to host cryptojar.io: could not connect to host cryptolab.pro: could not connect to host -cryptolab.tk: could not connect to host -cryptolosophy.io: could not connect to host +cryptolab.tk: did not receive HSTS header cryptoparty.dk: could not connect to host cryptopartyatx.org: could not connect to host cryptopartynewcastle.org: could not connect to host @@ -3209,31 +3531,34 @@ csawctf.poly.edu: could not connect to host cscau.com: did not receive HSTS header csehnyelv.hu: could not connect to host cselzer.com: did not receive HSTS header -cser.me: did not receive HSTS header +cser.me: could not connect to host csfs.org.uk: could not connect to host csgf.ru: did not receive HSTS header csgo.help: could not connect to host csgo77.com: could not connect to host csgodicegame.com: could not connect to host csgoelemental.com: could not connect to host -csgogamers.com: could not connect to host +csgogamers.com: did not receive HSTS header +csgohandouts.com: did not receive HSTS header csgokings.eu: could not connect to host csgoshifter.com: could not connect to host csilies.de: could not connect to host csinfo.us: could not connect to host -csinterstargeneve.ch: could not connect to host csohack.tk: could not connect to host -cspbuilder.info: could not connect to host -cspeti.hu: could not connect to host +cspbuilder.info: did not receive HSTS header cssps.org: could not connect to host cssu.in: did not receive HSTS header csvape.com: did not receive HSTS header +cswarzone.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] ct-status.org: could not connect to host ct-watches.dk: did not receive HSTS header -ctl.email: could not connect to host +ctliu.com: could not connect to host ctrl.blog: did not receive HSTS header +ctyi.me: did not receive HSTS header cuanhua3s.com: did not receive HSTS header cubecart.net: could not connect to host +cubecraftstore.com: could not connect to host +cubecraftstore.net: could not connect to host cubela.tech: could not connect to host cubeserver.eu: could not connect to host cubewano.com: could not connect to host @@ -3244,19 +3569,21 @@ cujanovic.com: did not receive HSTS header cujba.com: could not connect to host culinae.nl: could not connect to host culture-school.top: did not receive HSTS header +cultureelbeleggen.nl: did not receive HSTS header cumparama.com: did not receive HSTS header cumshots-video.ru: could not connect to host +cunha.be: could not connect to host cuni-cuni-club.com: did not receive HSTS header -cuni-rec.com: could not connect to host -cuntflaps.me: did not receive HSTS header +cuni-rec.com: did not receive HSTS header +cuntflaps.me: could not connect to host cuongquach.com: did not receive HSTS header cuongthach.com: did not receive HSTS header cuonic.com: could not connect to host cupcake.io: did not receive HSTS header cupcake.is: did not receive HSTS header +cupofarchitects.net: could not connect to host curacao-license.com: could not connect to host curarnosensalud.com: could not connect to host -curatedgeek.com: did not receive HSTS header curiouscat.me: max-age too low: 2592000 curlyroots.com: did not receive HSTS header current.com: did not receive HSTS header @@ -3268,17 +3595,19 @@ custe.rs: could not connect to host customadesign.com: did not receive HSTS header customd.com: did not receive HSTS header customfilmworks.com: could not connect to host +customizeyourshower.com: could not connect to host custompapers.com: could not connect to host +customromlist.com: could not connect to host customwritings.com: could not connect to host cutelariafiveladeouro.com.br: did not receive HSTS header cutorrent.com: could not connect to host cuvva.insure: did not receive HSTS header cvjm-memmingen.de: did not receive HSTS header -cvsoftub.com: could not connect to host +cvsoftub.com: did not receive HSTS header cvtparking.co.uk: did not receive HSTS header cw-bw.de: could not connect to host cwage.com: could not connect to host -cwbw.network: could not connect to host +cwbw.network: did not receive HSTS header cwilson.ga: could not connect to host cy.technology: did not receive HSTS header cyanogenmod.xxx: could not connect to host @@ -3289,35 +3618,36 @@ cyber-perikarp.eu: did not receive HSTS header cybercecurity.com: did not receive HSTS header cybercloud.cc: did not receive HSTS header cyberdos.de: did not receive HSTS header +cyberdyne-industries.net: could not connect to host cyberlab.kiev.ua: did not receive HSTS header cyberlab.team: did not receive HSTS header cyberpeace.nl: could not connect to host cyberprey.com: did not receive HSTS header cyberpunk.ca: could not connect to host -cybersafesolutions.com: did not receive HSTS header -cyberscan.io: did not receive HSTS header +cybersantri.com: could not connect to host +cyberserver.org: could not connect to host cybershambles.com: could not connect to host cyberspace.today: could not connect to host -cybit.io: did not receive HSTS header cyclehackluxembourgcity.lu: could not connect to host cyclingjunkies.com: could not connect to host cydia-search.io: could not connect to host cyelint.com: could not connect to host -cygu.ch: did not receive HSTS header +cygu.ch: could not connect to host cymtech.net: could not connect to host cynoshair.com: could not connect to host cyoda.com: did not receive HSTS header +cypherpunk.com: could not connect to host cypherpunk.ws: could not connect to host cyphertite.com: could not connect to host +cypressinheritancesaga.com: could not connect to host cytadel.fr: did not receive HSTS header -czakey.net: could not connect to host czaw.org: did not receive HSTS header czirnich.org: did not receive HSTS header -czk.mk: could not connect to host czlx.co: could not connect to host d-academia.com: did not receive HSTS header d-macindustries.com: did not receive HSTS header d-rickroll-e.pw: could not connect to host +d-toys.com.ua: could not connect to host d00r.de: did not receive HSTS header d0xq.net: could not connect to host d1ves.io: did not receive HSTS header @@ -3330,11 +3660,10 @@ dabblegoat.com: could not connect to host dabbot.org: did not receive HSTS header dad256.tk: could not connect to host dadtheimpaler.com: could not connect to host -daemon.xin: did not receive HSTS header dah5.com: did not receive HSTS header dahl-pind.dk: did not receive HSTS header dai-rin.co.jp: could not connect to host -dailybunda.com: could not connect to host +dailybunda.com: did not receive HSTS header dailystormerpodcasts.com: could not connect to host dailytopix.com: could not connect to host daimadi.com: could not connect to host @@ -3349,10 +3678,11 @@ dalfiume.it: did not receive HSTS header dalingk.co: could not connect to host daltonedwards.me: could not connect to host dam74.com.ar: could not connect to host -damedrogy.cz: could not connect to host damianuv-blog.cz: did not receive HSTS header damjanovic.work: could not connect to host +dan.org.nz: could not connect to host danbarrett.com.au: could not connect to host +dancebuzz.co.uk: did not receive HSTS header dancerdates.net: did not receive HSTS header dandymrsb.com: could not connect to host dane-bre.net: max-age too low: 172800 @@ -3364,8 +3694,12 @@ daniel-steuer.de: could not connect to host danielcowie.me: could not connect to host danieldk.eu: did not receive HSTS header danielgraziano.ca: could not connect to host +danielheal.net: could not connect to host danieliancu.com: could not connect to host danielkratz.com: max-age too low: 172800 +danielmarquard.com: could not connect to host +danielt.co.uk: could not connect to host +danielthompson.info: could not connect to host danielverlaan.nl: could not connect to host danielworthy.com: did not receive HSTS header danielzuzevich.com: could not connect to host @@ -3374,20 +3708,22 @@ danishenanigans.com: could not connect to host dankeblog.com: could not connect to host danmark.guide: did not receive HSTS header dannycrichton.com: did not receive HSTS header -dannystevens.co.uk: could not connect to host +danova.de: did not receive HSTS header danrl.de: could not connect to host +dansage.co: could not connect to host danskringsporta.be: did not receive HSTS header danwillenberg.com: did not receive HSTS header daolerp.xyz: could not connect to host -daphne.informatik.uni-freiburg.de: did not receive HSTS header dargasia.is: could not connect to host +darinjohnson.ca: did not receive HSTS header dario.im: did not receive HSTS header dariosirangelo.me: did not receive HSTS header dark-x.cf: could not connect to host +dark.ninja: could not connect to host darkanzali.pl: max-age too low: 0 darkdestiny.ch: could not connect to host darkfriday.ddns.net: could not connect to host -darkhole.cn: did not receive HSTS header +darkhole.cn: could not connect to host darkishgreen.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] darkkeepers.dk: max-age too low: 172800 darknebula.space: could not connect to host @@ -3396,9 +3732,9 @@ darkpony.ru: could not connect to host darksideof.it: could not connect to host darkstance.org: could not connect to host darktree.in: could not connect to host +darkwebkittens.xyz: could not connect to host darlastudio66.com: did not receive HSTS header darlo.co.uk: could not connect to host -daropia.org: could not connect to host darrenellis.xyz: could not connect to host darrenm.net: could not connect to host das-tyrol.at: did not receive HSTS header @@ -3411,10 +3747,16 @@ data-abundance.com: could not connect to host data-detox.com: could not connect to host data.haus: could not connect to host data.qld.gov.au: did not receive HSTS header +databeam.de: could not connect to host datacave.is: could not connect to host -datacool.tk: could not connect to host +datacenternews.asia: did not receive HSTS header +datacenternews.co.nz: did not receive HSTS header +datacentrenews.eu: did not receive HSTS header datacubed.com: did not receive HSTS header +datafd.com: could not connect to host +datafd.net: could not connect to host datahoarder.download: could not connect to host +datahoarderschool.club: did not receive HSTS header dataisme.com: did not receive HSTS header datajapan.co.jp: did not receive HSTS header datamatic.ru: could not connect to host @@ -3424,7 +3766,7 @@ datasnitch.co.uk: could not connect to host datatekniikka.com: could not connect to host datedeposit.com: could not connect to host datengrab.ws: could not connect to host -datenlast.de: could not connect to host +datenlast.de: did not receive HSTS header datenreiter.cf: could not connect to host datenreiter.gq: could not connect to host datenreiter.ml: could not connect to host @@ -3433,6 +3775,7 @@ datenschutzhelden.org: could not connect to host datine.com.br: could not connect to host datorb.com: could not connect to host datortipsen.se: did not receive HSTS header +datsound.ru: did not receive HSTS header datsumou-q.com: did not receive HSTS header daverandom.com: could not connect to host davidandkailey.com: could not connect to host @@ -3441,10 +3784,11 @@ davidglidden.eu: did not receive HSTS header davidgrudl.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] davidhunter.scot: did not receive HSTS header davidletellier.com: did not receive HSTS header -davidmcevoy.org.uk: did not receive HSTS header +davidlillo.com: could not connect to host davidnoren.com: did not receive HSTS header davidreinhardt.de: could not connect to host davidscherzer.at: could not connect to host +davimun.org: could not connect to host davros.eu: could not connect to host davros.ru: could not connect to host daw.nz: could not connect to host @@ -3456,19 +3800,20 @@ daylightcompany.com: did not receive HSTS header days.one: could not connect to host daytonaseaside.com: did not receive HSTS header db.gy: could not connect to host +dbjc.duckdns.org: could not connect to host dblx.io: could not connect to host dbox.ga: could not connect to host dbpmedia.se: did not receive HSTS header -dbx.ovh: could not connect to host +dbx.ovh: did not receive HSTS header dbyz.co.uk: max-age too low: 43200 dcaracing.nl: could not connect to host -dcc.moe: did not receive HSTS header +dcc.moe: could not connect to host dccode.gov: could not connect to host dccoffeeproducts.com: did not receive HSTS header dccraft.net: could not connect to host dctxf.com: did not receive HSTS header dcuofriends.net: could not connect to host -dcw.io: could not connect to host +dcw.io: did not receive HSTS header dd.art.pl: could not connect to host ddatsh.com: did not receive HSTS header dden.website: could not connect to host @@ -3482,12 +3827,6 @@ de-servers.de: could not connect to host deadmann.com: could not connect to host deadsoul.net: could not connect to host debank.tv: did not receive HSTS header -debarrasantony.com: could not connect to host -debarrasasnieressurseine.com: could not connect to host -debarrasboulognebillancourt.com: could not connect to host -debarrasclichy.com: could not connect to host -debarrascolombes.com: could not connect to host -debarrasnanterre.com: could not connect to host debatch.se: could not connect to host debian-vhost.de: could not connect to host debiton.dk: could not connect to host @@ -3500,21 +3839,23 @@ decafu.co: could not connect to host decentralizedweb.net: did not receive HSTS header decesus.com: could not connect to host decibelios.li: could not connect to host -decloverly.com: did not receive HSTS header +decloverly.com: could not connect to host deco.me: could not connect to host decoboutique.com: did not receive HSTS header decofire.pl: did not receive HSTS header decomplify.com: did not receive HSTS header deconsolutions.com: did not receive HSTS header decoraid.com: did not receive HSTS header -decoratore.roma.it: did not receive HSTS header decorincasa.com.br: could not connect to host decorland.com.ua: could not connect to host decormiernissanparts.com: could not connect to host decoyrouting.com: could not connect to host -dedeo.tk: did not receive HSTS header +dedeo.tk: could not connect to host dedicatutiempo.es: could not connect to host dedietrich-asia.com: could not connect to host +deep.club: could not connect to host +deep.social: did not receive HSTS header +deeparamaraj.com: did not receive HSTS header deepcovelabs.net: could not connect to host deepcreampie.com: could not connect to host deepearth.uk: could not connect to host @@ -3525,6 +3866,7 @@ deeps.cat: could not connect to host deeps.me: did not receive HSTS header deepvalley.tech: could not connect to host deepvision.com.ua: did not receive HSTS header +deer.team: could not connect to host deetz.nl: did not receive HSTS header deetzen.de: did not receive HSTS header defi-metier.com: did not receive HSTS header @@ -3538,7 +3880,7 @@ defimetier.fr: could not connect to host defimetier.org: did not receive HSTS header defimetiers.com: did not receive HSTS header defimetiers.fr: did not receive HSTS header -degroetenvanrosaline.nl: did not receive HSTS header +degroetenvanrosaline.nl: could not connect to host deight.co: could not connect to host deight.in: could not connect to host dekasan.ru: could not connect to host @@ -3551,16 +3893,18 @@ deloittequant.com: could not connect to host deltaconcepts.de: could not connect to host delvj.org: could not connect to host demandware.com: did not receive HSTS header -demarche-expresse.com: could not connect to host +demarche-expresse.com: did not receive HSTS header +demarle.ch: could not connect to host demdis.org: could not connect to host demilitarized.ninja: could not connect to host demo-server.us: could not connect to host demo.sb: could not connect to host +demo.swedbank.se: did not receive HSTS header +demo9.ovh: did not receive HSTS header democracy.io: did not receive HSTS header -democraticdifference.com: did not receive HSTS header +democraticdifference.com: could not connect to host demomanca.com: did not receive HSTS header demotops.com: could not connect to host -dengchangdong.com: could not connect to host denh.am: did not receive HSTS header denisjean.fr: could not connect to host dennispotter.eu: did not receive HSTS header @@ -3573,10 +3917,13 @@ denverphilharmonic.org: did not receive HSTS header denverprophit.us: did not receive HSTS header depaco.com: did not receive HSTS header deped.blog: could not connect to host +depedshs.com: could not connect to host depedtayo.ph: could not connect to host depijl-mz.nl: did not receive HSTS header depixion.agency: could not connect to host depo.space: could not connect to host +deprobe.pro: could not connect to host +depth-co.jp: could not connect to host dequehablamos.es: could not connect to host derbyshiredotnet.co.uk: did not receive HSTS header derchris.me: could not connect to host @@ -3602,7 +3949,7 @@ despotika.de: could not connect to host desserteagleselvenar.tk: could not connect to host destinationbijoux.fr: could not connect to host destom.be: could not connect to host -desuperheroes.co: could not connect to host +desveja.com.br: could not connect to host detalhecomercio.com.br: could not connect to host detechnologiecooperatie.nl: did not receive HSTS header detecte-fuite.ch: could not connect to host @@ -3614,48 +3961,47 @@ dethikiemtra.com: did not receive HSTS header detroitrocs.org: did not receive HSTS header detteflies.com: max-age too low: 7889238 detutorial.com: max-age too low: 36000 -deuchnord.fr: could not connect to host deusu.de: could not connect to host deusu.org: could not connect to host +deux.solutions: could not connect to host +deuxsol.co: could not connect to host +deuxsol.com: could not connect to host +deuxsolutions.com: could not connect to host deuxvia.com: could not connect to host dev: could not connect to host dev-aegon.azurewebsites.net: did not receive HSTS header dev-bluep.pantheonsite.io: did not receive HSTS header dev-talk.eu: did not receive HSTS header -dev-talk.net: could not connect to host +dev-talk.net: did not receive HSTS header devafterdark.com: could not connect to host devdesco.com: could not connect to host devdom.io: max-age too low: 172800 -devdoodle.net: could not connect to host +develop.cool: did not receive HSTS header develop.fitness: could not connect to host developermail.io: did not receive HSTS header developersclub.website: could not connect to host developyourelement.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] devh.de: could not connect to host -deviltraxxx.de: could not connect to host devin-balimuhac.de: did not receive HSTS header devincrow.me: could not connect to host -devinpacker.com: did not receive HSTS header +devinpacker.com: could not connect to host devisonline.ch: could not connect to host devistravaux.org: did not receive HSTS header -devkit.cc: could not connect to host devlux.ch: did not receive HSTS header -devmsg.com: did not receive HSTS header +devmsg.com: could not connect to host devnsec.com: could not connect to host devnull.team: could not connect to host devopps.me: did not receive HSTS header devops.moe: could not connect to host devopsconnected.com: could not connect to host -devpsy.info: could not connect to host devtestfan1.gov: could not connect to host devtub.com: could not connect to host devuan.org: did not receive HSTS header -dewebwerf.nl: did not receive HSTS header dewin.io: could not connect to host -dezet-ev.de: could not connect to host dfixit.com: could not connect to host dfrance.com.br: did not receive HSTS header dfviana.com.br: max-age too low: 2592000 +dgby.org: did not receive HSTS header dggwp.de: did not receive HSTS header dharamkot.com: could not connect to host dharma.ai: did not receive HSTS header @@ -3669,7 +4015,8 @@ diablotine.rocks: could not connect to host diabolic.chat: could not connect to host diagnosia.com: did not receive HSTS header diagonale-deco.fr: did not receive HSTS header -diamondcare.com.br: could not connect to host +dialoegue.com: did not receive HSTS header +diamondcare.com.br: did not receive HSTS header diamondpkg.org: could not connect to host diamondt.us: did not receive HSTS header dianlujitao.com: did not receive HSTS header @@ -3685,13 +4032,13 @@ dicio.com.br: did not receive HSTS header dicionariofinanceiro.com: did not receive HSTS header dicionariopopular.com: did not receive HSTS header dick.red: could not connect to host -dickpics.ru: could not connect to host -didierlaumen.be: could not connect to host -die-besten-weisheiten.de: did not receive HSTS header +didierlaumen.be: did not receive HSTS header +die-besten-weisheiten.de: could not connect to host die-gruenen-teufel.de: could not connect to host dieb.photo: could not connect to host diejanssens.net: did not receive HSTS header diemogebhardt.com: could not connect to host +dierencompleet.nl: did not receive HSTS header dierenkruiden.nl: did not receive HSTS header dieser.me: could not connect to host dietagespresse.com: did not receive HSTS header @@ -3701,14 +4048,17 @@ diferenca.com: did not receive HSTS header diggable.co: max-age too low: 2592000 digihyp.ch: could not connect to host digikol.net: could not connect to host +diginota.com: did not receive HSTS header digired.xyz: could not connect to host +digital1world.com: did not receive HSTS header digitalbank.kz: could not connect to host digitalcloud.ovh: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] digitalcraftmarketing.co.uk: did not receive HSTS header digitaldaddy.net: did not receive HSTS header digitalero.rip: did not receive HSTS header +digitalewelten.de: could not connect to host digitalexhale.com: did not receive HSTS header -digitalhurricane.io: did not receive HSTS header +digitalhurricane.io: could not connect to host digitalimpostor.co.uk: could not connect to host digitaljungle.net: could not connect to host digitallocker.com: did not receive HSTS header @@ -3722,17 +4072,20 @@ digiworks.se: did not receive HSTS header diguass.us: could not connect to host dijks.com: could not connect to host dikshant.net: could not connect to host -diletec.com.br: did not receive HSTS header +diletec.com.br: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] dillynbarber.com: did not receive HSTS header dim.lighting: could not connect to host dimes.com.tr: did not receive HSTS header dimitrisotiropoulosbooks.com: max-age too low: 7889238 din-tools.com: did not receive HSTS header dinamoelektrik.com: could not connect to host -dingcc.me: could not connect to host +dingcc.com: could not connect to host dingcc.org: could not connect to host dingcc.xyz: could not connect to host +dinge.xyz: could not connect to host +dingelbob-schuhcreme.gq: could not connect to host dingss.com: could not connect to host +dinheirolucrar.com: did not receive HSTS header dinkum.online: could not connect to host dinotv.at: could not connect to host dintillat.fr: could not connect to host @@ -3741,6 +4094,7 @@ dionysus.se: could not connect to host dipconsultants.com: could not connect to host direct2uk.com: could not connect to host directhskincream.com: could not connect to host +directinsure.in: did not receive HSTS header directorinegocis.cat: could not connect to host directtwo.solutions: could not connect to host directtwosolutions.org: could not connect to host @@ -3748,10 +4102,9 @@ directwatertanks.co.uk: did not receive HSTS header direnv.net: did not receive HSTS header direwolfsoftware.ca: could not connect to host dirk-weise.de: could not connect to host +dirkwolf.de: could not connect to host dirtycat.ru: could not connect to host -dirtygeek.ovh: could not connect to host disadattamentolavorativo.it: could not connect to host -disarc.com: max-age too low: 0 disclosure.io: did not receive HSTS header disco-crazy-world.de: could not connect to host discord-chan.net: could not connect to host @@ -3772,7 +4125,7 @@ dissieux.com: did not receive HSTS header dissimulo.me: could not connect to host distinctivephotography.com.au: could not connect to host distinguishedwindows.co.uk: did not receive HSTS header -distractionco.de: could not connect to host +distractionco.de: did not receive HSTS header distrilogservices.com: could not connect to host ditch.ch: could not connect to host ditrutoancau.vn: could not connect to host @@ -3780,29 +4133,25 @@ dittvertshus.no: could not connect to host diva-ey.com: could not connect to host divegearexpress.com.cn: did not receive HSTS header diversity-spielzeug.de: did not receive HSTS header -divingwithnic.com: could not connect to host divvi.co.nz: did not receive HSTS header divvyradio.com: did not receive HSTS header -diwei.vip: did not receive HSTS header dixiediner.com: did not receive HSTS header dixmag.com: could not connect to host diz.in.ua: did not receive HSTS header dizihocasi.com: could not connect to host dizorg.net: could not connect to host dj4et.de: could not connect to host -djieno.com: could not connect to host djul.net: could not connect to host djxmmx.net: did not receive HSTS header -djz4music.com: did not receive HSTS header dkniss.de: could not connect to host dko-steiermark.ml: did not receive HSTS header dl.google.com: did not receive HSTS header (error ignored - included regardless) -dlbouncers.co.uk: did not receive HSTS header +dlbouncers.co.uk: could not connect to host dlc.viasinc.com: could not connect to host dlemper.de: did not receive HSTS header -dlouwrink.nl: could not connect to host dlyl888.com: could not connect to host dmarketer.com: did not receive HSTS header +dmcastles.com: did not receive HSTS header dmcglobaltravel.com.mx: did not receive HSTS header dmcibulldog.com: did not receive HSTS header dmdre.com: did not receive HSTS header @@ -3822,15 +4171,14 @@ dnsknowledge.com: did not receive HSTS header dnsql.io: could not connect to host do-do.tk: could not connect to host do-it.cz: could not connect to host -do67.de: could not connect to host -do67.net: could not connect to host doak.io: did not receive HSTS header dobet.in: could not connect to host -doc-justice.com: could not connect to host +doc-justice.com: did not receive HSTS header docid.io: could not connect to host -dockerturkiye.com: max-age too low: 0 +dockerturkiye.com: could not connect to host docket.news: could not connect to host -doclot.io: did not receive HSTS header +doclassworks.com: could not connect to host +doclot.io: could not connect to host docplexus.in: did not receive HSTS header docset.io: could not connect to host docufiel.com: could not connect to host @@ -3842,13 +4190,14 @@ doeswindowssuckforeveryoneorjustme.com: could not connect to host dogbox.se: could not connect to host dogcratereview.info: could not connect to host dogespeed.ga: could not connect to host -doggedbyirs.com: could not connect to host doggieholic.net: could not connect to host dognlife.com: could not connect to host dogoodbehappyllc.com: did not receive HSTS header +dogprograms.net: could not connect to host dohosting.ru: could not connect to host dojifish.space: could not connect to host dojin.nagoya: could not connect to host +dokan-e.com: could not connect to host dokan.online: did not receive HSTS header doked.io: could not connect to host dolarcanadense.com.br: could not connect to host @@ -3876,12 +4225,12 @@ dong8.top: could not connect to host donhoward.org: did not receive HSTS header donmez.uk: could not connect to host donmez.ws: could not connect to host +donner-reuschel.de: did not receive HSTS header donotcall.gov: did not receive HSTS header donotspampls.me: could not connect to host donotspellitgav.in: did not receive HSTS header -donsbach-edv.de: did not receive HSTS header +donpaginasweb.com: did not receive HSTS header donthedragonwilson.com: could not connect to host -dontpayfull.com: did not receive HSTS header donttrustrobots.nl: could not connect to host donzelot.co.uk: did not receive HSTS header doobydude.us: could not connect to host @@ -3890,25 +4239,22 @@ doodlefinder.de: max-age too low: 600000 dooku.cz: could not connect to host doomleika.com: did not receive HSTS header doooonoooob.com: could not connect to host +door.cards: could not connect to host dopost.it: could not connect to host -dorfbaeck.at: did not receive HSTS header -doridian.com: could not connect to host -doridian.de: could not connect to host -doridian.org: could not connect to host doriginal.es: did not receive HSTS header dorkfarm.com: did not receive HSTS header dormebebe.com.br: could not connect to host dosipe.com: could not connect to host doska.kz: could not connect to host dostavkakurierom.ru: could not connect to host -dot42.no: could not connect to host dotadata.me: could not connect to host dotb.dn.ua: did not receive HSTS header dotbrick.co.th: did not receive HSTS header -dotconnor.com: could not connect to host dotkod.com: could not connect to host dotnetsandbox.ca: could not connect to host +dotrox.net: could not connect to host dotspaperie.com: could not connect to host +doubleaste.com: did not receive HSTS header doublethink.online: could not connect to host doubleyummy.uk: did not receive HSTS header dougferris.id.au: could not connect to host @@ -3924,11 +4270,11 @@ download.jitsi.org: did not receive HSTS header downsouthweddings.com.au: did not receive HSTS header doyoulyft.com: could not connect to host dpangerl.de: did not receive HSTS header -dpg.no: could not connect to host dps.srl: did not receive HSTS header dpsart.it: did not receive HSTS header +dr-knirr.de: could not connect to host dr2dr.ca: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] -drabim.org: did not receive HSTS header +drabbin.com: could not connect to host draghive.club: did not receive HSTS header draghive.net: could not connect to host draghive.photos: did not receive HSTS header @@ -3938,7 +4284,6 @@ dragons-of-highlands.cz: did not receive HSTS header dragonsmoke.cloud: could not connect to host dragonstower.net: could not connect to host dragonteam.ninja: could not connect to host -drahcro.uk: could not connect to host drainagebuizen.nl: did not receive HSTS header drakefortreasurer.sexy: could not connect to host drakensberg-tourism.com: did not receive HSTS header @@ -3948,15 +4293,16 @@ drastosasports.com.br: could not connect to host drawvesly.ovh: did not receive HSTS header drdevil.ru: could not connect to host dreadbyte.com: could not connect to host -dreadd.org: did not receive HSTS header +dreadd.org: could not connect to host dreamaholic.club: could not connect to host dreamcatcherblog.de: could not connect to host dreaming.solutions: could not connect to host dreamlighteyeserum.com: could not connect to host dreamof.net: could not connect to host dreamsforabetterworld.com.au: did not receive HSTS header +dreax.win: could not connect to host dredgepress.com: did not receive HSTS header -dreischneidiger.de: did not receive HSTS header +dreischneidiger.de: could not connect to host dreizwosechs.de: could not connect to host drewgle.net: could not connect to host drhopeson.com: could not connect to host @@ -3968,6 +4314,7 @@ drive.xyz: could not connect to host drivewithstatetransit.com.au: did not receive HSTS header driving-lessons.co.uk: could not connect to host drixn.cn: could not connect to host +drixn.com: could not connect to host drixn.info: could not connect to host drixn.net: could not connect to host drizz.com.br: could not connect to host @@ -3992,7 +4339,7 @@ droomhuisindestadverkopen.nl: could not connect to host droomhuisophetplattelandverkopen.nl: could not connect to host dropcam.com: did not receive HSTS header drostschocolates.com: did not receive HSTS header -drpure.pw: could not connect to host +drpure.pw: did not receive HSTS header drtroyhendrickson.com: could not connect to host drtti.io: could not connect to host drturner.com.au: did not receive HSTS header @@ -4001,18 +4348,19 @@ drumbandesperanto.nl: could not connect to host drupal123.com: could not connect to host druznek.rocks: could not connect to host druznek.xyz: could not connect to host -dryan.com: did not receive HSTS header drybasement.com: did not receive HSTS header drybasementkansas.com: did not receive HSTS header drycreekapiary.com: could not connect to host ds-christiansen.de: could not connect to host -ds67.de: could not connect to host dshiv.io: could not connect to host +dsne.com.mx: did not receive HSTS header +dsouzamusic.com: could not connect to host +dstvinstallrandburg.co.za: did not receive HSTS header +dsuinnovation.com: could not connect to host dsyunmall.com: could not connect to host -dtg-fonds.com: could not connect to host -dtg-fonds.de: could not connect to host -dtg-fonds.net: could not connect to host +dtp-mstdn.jp: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] dtub.co: could not connect to host +dualascent.com: did not receive HSTS header duan.li: could not connect to host dubik.su: did not receive HSTS header duckyubuntu.tk: could not connect to host @@ -4021,10 +4369,6 @@ dudesunderwear.com.br: could not connect to host duelsow.eu: could not connect to host duelysthub.com: could not connect to host duerls.de: could not connect to host -dugnet.com: could not connect to host -dugnet.io: could not connect to host -dugnet.net: could not connect to host -dugnet.org: could not connect to host dugnet.tech: could not connect to host dujsq.com: could not connect to host dujsq.top: could not connect to host @@ -4032,18 +4376,20 @@ dukec.me: did not receive HSTS header dukefox.com: could not connect to host duks.com.br: did not receive HSTS header dullsir.com: did not receive HSTS header +dumbdemo.com: could not connect to host +dunamiscommunity.com: could not connect to host dunashoes.com: could not connect to host -dune.io: could not connect to host +dune.io: did not receive HSTS header dunea.nl: did not receive HSTS header dung-massage.fr: did not receive HSTS header duo.money: could not connect to host +duocircle.com: did not receive HSTS header duole30.com: could not connect to host -duoluodeyu.com: could not connect to host duongpho.com: did not receive HSTS header durangoenergyllc.com: could not connect to host dushu.cat: could not connect to host duskopy.top: could not connect to host -dutchessuganda.com: did not receive HSTS header +dutchessuganda.com: could not connect to host dutchrank.com: did not receive HSTS header dutyfreeonboard.com: did not receive HSTS header duuu.ch: could not connect to host @@ -4053,14 +4399,14 @@ dwellstudio.com: did not receive HSTS header dwhd.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] dwnld.me: could not connect to host dycem-ns.com: did not receive HSTS header -dycoa.com: did not receive HSTS header dycontrol.de: could not connect to host dylanscott.com.au: did not receive HSTS header dynamic-innovations.net: could not connect to host dynamic-networks.be: could not connect to host dynamize.solutions: did not receive HSTS header +dyncdn.me: could not connect to host dynts.pro: could not connect to host -dzet.de: could not connect to host +dyz.pw: did not receive HSTS header dziekonski.com: could not connect to host dzimejl.sk: did not receive HSTS header dzlibs.io: could not connect to host @@ -4071,11 +4417,12 @@ e-baraxolka.ru: could not connect to host e-deca2.org: did not receive HSTS header e-isfa.eu: did not receive HSTS header e-mak.eu: could not connect to host +e-migration.ch: could not connect to host e-newshub.com: could not connect to host e-pokupki.eu: did not receive HSTS header e-rickroll-r.pw: could not connect to host e-sa.com: did not receive HSTS header -e-speak24.pl: did not receive HSTS header +e-speak24.pl: could not connect to host e-vau.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] e-vo-linka.cz: did not receive HSTS header e-wishlist.net: could not connect to host @@ -4096,8 +4443,6 @@ earga.sm: could not connect to host earlybirdsnacks.com: could not connect to host earth-people.org: could not connect to host earthrise16.com: could not connect to host -earvinkayonga.com: did not receive HSTS header -easelforart.com: could not connect to host easew.com: could not connect to host eastcoastinflatables.co.uk: did not receive HSTS header easthokkaido-5airport.jp: did not receive HSTS header @@ -4107,8 +4452,10 @@ easy-factures.fr: could not connect to host easychiller.org: could not connect to host easykonto.de: could not connect to host easyplane.it: did not receive HSTS header -easysimplecrm.com: did not receive HSTS header +easyreal.ru: could not connect to host +easysimplecrm.com: could not connect to host eat-the-world.ch: could not connect to host +eat4happiness.com: did not receive HSTS header eatfitoutlet.com.br: could not connect to host eatlowcarb.de: did not receive HSTS header eattherich.us: did not receive HSTS header @@ -4122,8 +4469,9 @@ ebiografias.com.br: could not connect to host ebolsa.com.br: did not receive HSTS header ebolsas.com.br: did not receive HSTS header ebooksgratuits.org: could not connect to host +ebop.ch: could not connect to host ebp2p.com: did not receive HSTS header -ebpglobal.com: did not receive HSTS header +ebpglobal.com: could not connect to host ebraph.com: could not connect to host ebrowz.com: could not connect to host ecake.in: could not connect to host @@ -4133,8 +4481,8 @@ ecfs.link: could not connect to host ecg.fr: could not connect to host echipstore.com: did not receive HSTS header echo.cc: could not connect to host -echomanchester.net: did not receive HSTS header -echoteen.com: did not receive HSTS header +echoactive.com: could not connect to host +echomanchester.net: could not connect to host eckro.com: did not receive HSTS header ecole-en-danger.fr: could not connect to host ecole-iaf.fr: could not connect to host @@ -4144,8 +4492,10 @@ ecology-21.ru: did not receive HSTS header ecomlane.com: could not connect to host ecomparemo.com: did not receive HSTS header econativa.pt: could not connect to host -economy.st: did not receive HSTS header +economy.st: could not connect to host +economycarrentalscyprus.com: could not connect to host ecorus.eu: did not receive HSTS header +ecosoftconsult.com: could not connect to host ecotruck-pooling.com: did not receive HSTS header ecrimex.net: did not receive HSTS header ectora.com: could not connect to host @@ -4163,24 +4513,29 @@ edenvaleplumber24-7.co.za: did not receive HSTS header edenvalerubbleremovals.co.za: did not receive HSTS header edgecustomersportal.com: could not connect to host edgereinvent.com: did not receive HSTS header +edh.email: did not receive HSTS header edhrealtor.com: did not receive HSTS header edilservizi.it: did not receive HSTS header edilservizivco.it: did not receive HSTS header -ediscomp.sk: did not receive HSTS header +edisonchee.com: could not connect to host edissecurity.sk: did not receive HSTS header edition-pommern.com: did not receive HSTS header editoraacademiacrista.com.br: could not connect to host edix.ru: could not connect to host edk.com.tr: did not receive HSTS header edsh.de: did not receive HSTS header +eduardnikolenko.com: could not connect to host +eduardnikolenko.ru: could not connect to host educaid.be: did not receive HSTS header educatio.tech: could not connect to host +educators.co.nz: did not receive HSTS header educatoys.com.br: could not connect to host educatweb.de: did not receive HSTS header educnum.fr: did not receive HSTS header educourse.ga: could not connect to host eduif.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] eduvance.in: did not receive HSTS header +edvgarbe.de: could not connect to host ee-terminals.com: could not connect to host eeb98.com: could not connect to host eeetrust.org: could not connect to host @@ -4198,15 +4553,18 @@ eengezinswoning-in-zuidplas-kopen.nl: could not connect to host eengezinswoning-in-zwartewaterland-kopen.nl: could not connect to host eengezinswoningverkopen.nl: could not connect to host eenhoorn.ga: could not connect to host +eeqj.com: did not receive HSTS header eesistumine2017.ee: could not connect to host eez.ee: could not connect to host effectiveosgi.com: could not connect to host effectivepapers.com: could not connect to host efficienthealth.com: did not receive HSTS header effortlesshr.com: did not receive HSTS header +efinity.io: did not receive HSTS header eftcorp.biz: max-age too low: 0 +egarden.it: did not receive HSTS header +egfl.org.uk: did not receive HSTS header egge.com: max-age too low: 0 -eggert.org: could not connect to host egit.co: could not connect to host ego-world.org: did not receive HSTS header egupova.ru: did not receive HSTS header @@ -4218,22 +4576,25 @@ ehrlichesbier.de: could not connect to host ehuber.info: could not connect to host eicfood.com: could not connect to host eidolonhost.com: did not receive HSTS header -eidolons.org: could not connect to host -eifelindex.de: could not connect to host +eifelindex.de: did not receive HSTS header eiga-movie.com: max-age too low: 0 eigenbubi.de: could not connect to host +eightyfour.ca: could not connect to host eigo.work: could not connect to host eimanavicius.lt: did not receive HSTS header +einar.io: max-age too low: 86400 einfachmaldiefressehalten.de: could not connect to host einhorn.space: could not connect to host +einmonolog.de: could not connect to host einsatzstiefel.info: could not connect to host -einsitapis.com: did not receive HSTS header +einsit.com: could not connect to host +einsitapis.com: could not connect to host ejgconsultancy.co.uk: did not receive HSTS header ejusu.com: did not receive HSTS header +ek.network: could not connect to host ekbanden.nl: could not connect to host ekobudisantoso.net: could not connect to host ekong366.com: could not connect to host -ekpyroticfrood.net: could not connect to host eksik.com: could not connect to host el-soul.com: did not receive HSTS header elaintehtaat.fi: did not receive HSTS header @@ -4241,18 +4602,20 @@ elan-organics.com: did not receive HSTS header elanguest.pl: could not connect to host elanguest.ro: could not connect to host elanguest.ru: could not connect to host +elastic7.uk: could not connect to host elaxy-online.de: could not connect to host +elbaal.gov: did not receive HSTS header elblein.de: did not receive HSTS header +elderoost.com: could not connect to host elearningpilot.com: did not receive HSTS header -electicofficial.com: could not connect to host +electicofficial.com: did not receive HSTS header electricalcontrolpanels.co.uk: could not connect to host electricant.com: did not receive HSTS header electricant.nl: did not receive HSTS header electriccitysf.com: could not connect to host -electrician-umhlanga.co.za: could not connect to host +electrician-umhlanga.co.za: did not receive HSTS header electricianforum.co.uk: did not receive HSTS header electricianumhlangarocks.co.za: did not receive HSTS header -electricienasnieres.fr: could not connect to host electricoperaduo.com: did not receive HSTS header electromc.com: could not connect to host eled.io: could not connect to host @@ -4279,20 +4642,27 @@ elias-nicolas.com: could not connect to host eliasojala.me: did not receive HSTS header elimdengelen.com: did not receive HSTS header eliott.be: could not connect to host +elistor6100.xyz: did not receive HSTS header elite-box.com: did not receive HSTS header elite-box.org: did not receive HSTS header +elite-porno.ru: could not connect to host elitecovering.fr: did not receive HSTS header elitefishtank.com: could not connect to host -elitesensual.com.br: did not receive HSTS header -ellegaard.dk: could not connect to host +elitesensual.com.br: could not connect to host +elizeugomes.com.br: did not receive HSTS header ellen-skye.de: max-age too low: 604800 +elliff.net: did not receive HSTS header elliotgluck.com: did not receive HSTS header +elliquiy.com: could not connect to host elmar-kraamzorg.nl: did not receive HSTS header elna-service.com.ua: did not receive HSTS header elnutricionista.es: could not connect to host +elo.fyi: could not connect to host elohna.ch: did not receive HSTS header elonbase.com: could not connect to host +elpado.de: could not connect to host elpay.kz: did not receive HSTS header +elpo.net: did not receive HSTS header elpo.xyz: could not connect to host elsamakhin.com: could not connect to host elsemanario.com: did not receive HSTS header @@ -4300,29 +4670,35 @@ elsensohn.ch: did not receive HSTS header elsitar.com: could not connect to host elsword.moe: could not connect to host eltransportquevolem.org: could not connect to host +eltrox.me: could not connect to host elyisus.info: could not connect to host -elytronsecurity.com: could not connect to host +elytronsecurity.com: did not receive HSTS header email.lookout.com: could not connect to host email2rss.net: could not connect to host +emailcontrol.nl: did not receive HSTS header emanatepixels.com: could not connect to host emanga.su: did not receive HSTS header -emavok.eu: did not receive HSTS header +emavok.eu: could not connect to host embellir-aroma.com: could not connect to host embellir-kyujin.com: could not connect to host embracethedarkness.co.uk: could not connect to host embroidered-stuff.com: could not connect to host +embudospro.net: did not receive HSTS header emeldi-commerce.com: max-age too low: 0 +emergencyessay.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] emergencymedicinefoundations.com: did not receive HSTS header emergentvisiontec.com: did not receive HSTS header emesolutions.net: did not receive HSTS header emiele.com.br: could not connect to host emilyhorsman.com: could not connect to host +emilyjohnson.ga: could not connect to host emilyshepherd.me: did not receive HSTS header eminhuseynov.com: could not connect to host eminovic.me: could not connect to host emjainteractive.com: did not receive HSTS header emjimadhu.com: could not connect to host emmable.com: could not connect to host +emmaliddell.com: did not receive HSTS header emmanuelle-et-julien.ch: could not connect to host emmdy.com: did not receive HSTS header emmehair.com: could not connect to host @@ -4339,12 +4715,15 @@ employeestore.org: did not receive HSTS header emporiovinareal.com.br: could not connect to host empty-r.com: could not connect to host emptypath.com: did not receive HSTS header +emyself.info: could not connect to host +emyself.org: did not receive HSTS header en4u.org: could not connect to host enaia.fr: did not receive HSTS header encadrer-mon-enfant.com: did not receive HSTS header encode.space: could not connect to host encode.uk.com: did not receive HSTS header encoder.pw: could not connect to host +encoderx.uk: could not connect to host encontrebarato.com.br: did not receive HSTS header encrypted.google.com: did not receive HSTS header (error ignored - included regardless) encryptedaudience.com: could not connect to host @@ -4362,29 +4741,38 @@ endohaus.us: could not connect to host endspamwith.us: could not connect to host enecoshop.nl: did not receive HSTS header enefan.jp: could not connect to host -enginsight.com: did not receive HSTS header +energethik-tulln.at: did not receive HSTS header +enersaveapp.org: could not connect to host +enersec.co.uk: could not connect to host +enfoqueseguro.com: did not receive HSTS header +enginx.cn: could not connect to host englerts.de: did not receive HSTS header +englishclub.com: did not receive HSTS header englishdirectory.de: could not connect to host englishyamal.ru: did not receive HSTS header enigmacpt.com: did not receive HSTS header enigmail.net: did not receive HSTS header -enixgaming.com: could not connect to host enjen.net: did not receive HSTS header enjoymayfield.com: max-age too low: 0 enjoystudio.ro: did not receive HSTS header +enlatte.com: did not receive HSTS header +enlightened.si: could not connect to host enoou.com: could not connect to host -enpalmademallorca.info: did not receive HSTS header +enpalmademallorca.info: could not connect to host ensemble-vos-idees.fr: could not connect to host +enskat.de: could not connect to host +enskatson-sippe.de: could not connect to host entaurus.com: could not connect to host enteente.club: could not connect to host enteente.com: could not connect to host enteente.space: could not connect to host enteente.xyz: could not connect to host -entercenter.ru: could not connect to host enterdev.co: did not receive HSTS header enterprisecarclub.co.uk: did not receive HSTS header +enterprisechannel.asia: did not receive HSTS header enterprivacy.com: did not receive HSTS header entersynapse.com: could not connect to host +entheorie.net: did not receive HSTS header entourneebeetle.com: could not connect to host entrepreneur.or.id: could not connect to host enum.eu.org: could not connect to host @@ -4394,6 +4782,8 @@ enviam.de: did not receive HSTS header enviapresentes.com.br: could not connect to host enviatufoto.com: max-age too low: 604800 environment.ai: could not connect to host +envoyglobal.com: did not receive HSTS header +envoyworld.com: did not receive HSTS header envygeeks.com: could not connect to host eol34.com: could not connect to host eoldb.org: could not connect to host @@ -4405,9 +4795,16 @@ ephry.com: could not connect to host epicmc.games: could not connect to host epitesz.co: did not receive HSTS header eposcloud.net: could not connect to host +eposmidlands.co.uk: could not connect to host +eposnewport.co.uk: could not connect to host +eposnottingham.co.uk: could not connect to host +eposreading.co.uk: could not connect to host +eposreview.co.uk: could not connect to host +epossurrey.co.uk: could not connect to host +epossussex.co.uk: could not connect to host +eposwales.co.uk: could not connect to host epoxate.com: could not connect to host eprofitacademy.com: did not receive HSTS header -epsilon.dk: could not connect to host eq8.net.au: could not connect to host eqib.nl: did not receive HSTS header eqim.me: could not connect to host @@ -4421,7 +4818,6 @@ equitee.co: did not receive HSTS header equityflows.com: did not receive HSTS header er-music.com: could not connect to host erad.fr: could not connect to host -erawanarifnugroho.com: did not receive HSTS header erclab.kr: could not connect to host erepublik-deutschland.de: did not receive HSTS header eressea.xyz: could not connect to host @@ -4431,34 +4827,37 @@ ericloud.tk: could not connect to host ericorporation.com: did not receive HSTS header ericyl.com: did not receive HSTS header eriel.com.br: could not connect to host +erikwagner.de: did not receive HSTS header erinlin.com: did not receive HSTS header eriser.fr: did not receive HSTS header -ernaehrungsberatung-rapperswil.ch: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] ernaehrungsberatung-zurich.ch: could not connect to host ernesto.at: could not connect to host eroimatome.com: could not connect to host eromixx.com: could not connect to host erotalia.es: could not connect to host erotic4me.ch: did not receive HSTS header -eroticforce.com: could not connect to host erotische-aanbiedingen.nl: could not connect to host +erotpo.cz: could not connect to host errolz.com: did not receive HSTS header errors.zenpayroll.com: could not connect to host erspro.net: could not connect to host eru.me: did not receive HSTS header +erverydown.ml: could not connect to host erwinvanlonden.net: did not receive HSTS header es8888.net: could not connect to host es888999.com: could not connect to host -esaborit.ddns.net: could not connect to host esafar.cz: did not receive HSTS header esb111.com: could not connect to host esb111.net: could not connect to host esb112.com: could not connect to host esb112.net: could not connect to host +esb1314.net: could not connect to host +esb1668.com: could not connect to host esb16888.com: could not connect to host esb17888.com: could not connect to host esb222.net: could not connect to host esb555.com: could not connect to host +esb556.com: could not connect to host esb666.com: could not connect to host esb666.net: could not connect to host esb66666.com: could not connect to host @@ -4485,20 +4884,21 @@ escapees.com: did not receive HSTS header escolaengenharia.com.br: did not receive HSTS header escort-fashion.com: could not connect to host escortdisplay.com: could not connect to host -escortshotsexy.com: max-age too low: 2592000 +escortshotsexy.com: could not connect to host escotour.com: did not receive HSTS header escueladewordpress.com: did not receive HSTS header esec.rs: did not receive HSTS header eseth.de: did not receive HSTS header esh.ink: could not connect to host -esibun.net: could not connect to host +eshepperd.com: did not receive HSTS header +eshtapay.com: could not connect to host esko.bar: could not connect to host -eskriett.com: could not connect to host esln.org: did not receive HSTS header esn-ypci.com: did not receive HSTS header esocweb.com: could not connect to host esoterik.link: could not connect to host esp-berlin.de: could not connect to host +esp-desarrolladores.com: could not connect to host esp.community: did not receive HSTS header esp8285.store: could not connect to host espacemontmorency.com: did not receive HSTS header @@ -4510,6 +4910,7 @@ esprit-cloture.fr: did not receive HSTS header esquonic.com: could not connect to host esrs.gov: could not connect to host essayforum.com: could not connect to host +essayhave.com: could not connect to host essaylib.com: could not connect to host essayscam.org: could not connect to host essayshark.com: could not connect to host @@ -4521,13 +4922,15 @@ essenzialeenxovais.com.br: could not connect to host esseriumani.com: could not connect to host essexghosthunters.co.uk: did not receive HSTS header essplusmed.org: could not connect to host -essteebee.ch: could not connect to host estaciona.guru: could not connect to host +estaleiro.org: could not connect to host +estan.cn: could not connect to host estebanborges.com: did not receive HSTS header estespr.com: did not receive HSTS header estilosapeca.com: could not connect to host estland.guide: could not connect to host estoqueinformatica.com.br: could not connect to host +estudioamazonico.com: could not connect to host et-buchholz.de: could not connect to host et180.com: could not connect to host etangs-magazine.com: could not connect to host @@ -4538,6 +4941,7 @@ etenendrinken.nu: could not connect to host eternalsymbols.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] eternitylove.us: could not connect to host eth9.net: could not connect to host +etha.nz: max-age too low: 0 ethanfaust.com: did not receive HSTS header ethanlew.is: could not connect to host ethantskinner.com: did not receive HSTS header @@ -4545,6 +4949,7 @@ ether.school: could not connect to host etheria-software.tk: did not receive HSTS header ethicalexploiting.com: did not receive HSTS header ethicall.org.uk: did not receive HSTS header +ethicaltek.com: could not connect to host ethil-faer.fr: could not connect to host ethiobaba.com: could not connect to host etidni.help: did not receive HSTS header @@ -4560,7 +4965,7 @@ etula.ga: could not connect to host etula.me: could not connect to host etys.no: did not receive HSTS header euanbaines.com: did not receive HSTS header -eucl3d.com: could not connect to host +euanbarrett.com: could not connect to host euclideanpostulates.xyz: could not connect to host eucollegetours.com: could not connect to host euexia.fr: could not connect to host @@ -4572,14 +4977,15 @@ eung.ga: could not connect to host eupbor.com: could not connect to host euph.eu: could not connect to host eupho.me: could not connect to host -eupresidency2018.com: did not receive HSTS header +eupresidency2018.com: could not connect to host euren.se: could not connect to host -euroapo.org: max-age too low: 3600 eurocamping.se: could not connect to host euroescortguide.com: could not connect to host euroshop24.net: could not connect to host +euroskano.nl: did not receive HSTS header eurospecautowerks.com: did not receive HSTS header eurostrategy.vn.ua: could not connect to host +euteamo.cn: did not receive HSTS header evanhandgraaf.nl: did not receive HSTS header evankurniawan.com: did not receive HSTS header evasion-energie.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] @@ -4587,26 +4993,27 @@ evasioncreole.com: could not connect to host evdenevenakliyatankara.pw: could not connect to host evecalm.com: did not receive HSTS header evedanjailbreak.com: could not connect to host -evegalaxy.net: did not receive HSTS header +evegalaxy.net: could not connect to host +evenstar-gaming.com: could not connect to host event64.ru: did not receive HSTS header eventmake.es: could not connect to host eventplace.me: did not receive HSTS header events12.com: did not receive HSTS header -eventsafrica.net: did not receive HSTS header +eventsafrica.net: could not connect to host everyarti.st: could not connect to host everybooks.com: could not connect to host everydaytherich.com: max-age too low: 7776000 -everygayporn.com: could not connect to host +everydaywot.com: could not connect to host everygayporn.xyz: could not connect to host everylab.org: could not connect to host everymove.org: could not connect to host -everything.place: did not receive HSTS header +everything.place: could not connect to host everytruckjob.com: did not receive HSTS header eveseat.net: could not connect to host eveshaiwu.com: could not connect to host evi.be: did not receive HSTS header +evileden.com: could not connect to host evilnerd.de: did not receive HSTS header -evilness.nl: could not connect to host evilsay.com: could not connect to host evin.ml: could not connect to host evio.com: did not receive HSTS header @@ -4621,32 +5028,35 @@ ewex.org: could not connect to host eworksmedia.com: could not connect to host exampleessays.com: could not connect to host excelgum.ca: did not receive HSTS header -exceptionalbits.com: did not receive HSTS header -exceptionalservers.com: did not receive HSTS header +exceptionalbits.com: could not connect to host exceptionalservices.us: could not connect to host +excessamerica.com: could not connect to host exchangecoordinator.com: could not connect to host -execution.biz.tr: could not connect to host +exchangeworks.co: did not receive HSTS header exembit.com: did not receive HSTS header exfiles.cz: did not receive HSTS header +exgaywatch.com: could not connect to host exgravitus.com: could not connect to host exno.co: could not connect to host exo.do: could not connect to host +exoticads.com: could not connect to host exousiakaidunamis.xyz: could not connect to host expanddigital.media: did not receive HSTS header expatads.com: could not connect to host expatriate.pl: did not receive HSTS header +expecting.com.br: could not connect to host experticon.com: did not receive HSTS header expertmile.com: did not receive HSTS header -explodie.org: could not connect to host explodingcamera.com: did not receive HSTS header exploit-db.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] exploit.cz: did not receive HSTS header -expo-designers.com: could not connect to host +expo-designers.com: did not receive HSTS header +expokohler.com: could not connect to host expoort.com.br: could not connect to host -expoundite.net: could not connect to host +expoundite.net: did not receive HSTS header expowerhps.com: did not receive HSTS header +expressemotion.net: could not connect to host expressfinance.co.za: did not receive HSTS header -extensibility.biz.tr: could not connect to host exteriorservices.io: could not connect to host extramoney.cash: did not receive HSTS header extrathemeshowcase.net: could not connect to host @@ -4666,8 +5076,10 @@ eyes-of-universe.eu: did not receive HSTS header eyesoccer-didikh.rhcloud.com: could not connect to host eytosh.net: could not connect to host ez.fi: could not connect to host +ezgamble.com: could not connect to host ezimoeko.net: could not connect to host ezmod.org: could not connect to host +eznfe.com: could not connect to host ezorgportaal.nl: could not connect to host ezrefurb.co.uk: did not receive HSTS header eztv.ch: did not receive HSTS header @@ -4675,8 +5087,10 @@ f-rickroll-g.pw: could not connect to host f-s-u.co.uk: could not connect to host f00.ca: did not receive HSTS header f1bigpicture.com: could not connect to host +f2e.io: did not receive HSTS header f2f.cash: could not connect to host f42.net: could not connect to host +f5movies.top: could not connect to host f8842.com: could not connect to host f9digital.com: did not receive HSTS header faber.io: could not connect to host @@ -4688,26 +5102,29 @@ fabianmunoz.com: did not receive HSTS header fabienbaker.com: could not connect to host fabled.com: did not receive HSTS header fabriko.fr: did not receive HSTS header +fabrysociety.org: could not connect to host fabulouslyyouthfulskin.com: could not connect to host fabulouslyyouthfulskineyeserum.com: could not connect to host +facebattle.com: could not connect to host facebook.ax: could not connect to host facebooktsukaikata.net: did not receive HSTS header +facepalmsecurity.com: could not connect to host facesnf.com: could not connect to host fachschaft-informatik.de: did not receive HSTS header facilitrak.com: could not connect to host +factor.cc: did not receive HSTS header factorable.net: did not receive HSTS header factorygw.com: did not receive HSTS header factorypartsdirect.com: could not connect to host -factureenlinea.com: did not receive HSTS header fadednet.com: could not connect to host fadilus.com: did not receive HSTS header fads-center.online: could not connect to host +faeriecakes.be: could not connect to host faesser.com: did not receive HSTS header fafatiger.com: could not connect to host fag.wtf: could not connect to host fahmed.de: did not receive HSTS header faidanoi.it: did not receive HSTS header -fail4free.de: did not receive HSTS header failproof.be: max-age too low: 604800 faircom.co.za: did not receive HSTS header fairkey.dk: did not receive HSTS header @@ -4715,16 +5132,19 @@ fairlyoddtreasures.com: did not receive HSTS header faisalshuvo.com: did not receive HSTS header faizan.net: did not receive HSTS header faizan.xyz: did not receive HSTS header -fakeletters.org: did not receive HSTS header +fakeletters.org: could not connect to host +fakerli.com: could not connect to host faktura.pl: did not receive HSTS header falcibiosystems.org: did not receive HSTS header falconwiz.com: did not receive HSTS header -falkhusemann.de: could not connect to host falkp.no: did not receive HSTS header falkus.net: could not connect to host +falldennismarketing.com: max-age too low: 2592000 fallenangeldrinks.eu: could not connect to host fallenangelspirits.uk: could not connect to host fallingapart.de: could not connect to host +fallofthecitadel.com: did not receive HSTS header +false.in.net: could not connect to host faluninfo.ba: did not receive HSTS header fame-agency.net: could not connect to host famep.gov: could not connect to host @@ -4735,15 +5155,15 @@ familie-sprink.de: could not connect to host familie-zimmermann.at: could not connect to host famio.cn: did not receive HSTS header fan.gov: could not connect to host +fancy-bridge.com: could not connect to host fanflow.com: did not receive HSTS header -fansmade.art: did not receive HSTS header +fansmade.art: could not connect to host fant.dk: did not receive HSTS header fantasticgardenersmelbourne.com.au: did not receive HSTS header fantasticpestcontrolmelbourne.com.au: did not receive HSTS header fantasyfootballpundit.com: did not receive HSTS header fanyl.cn: could not connect to host faq.lookout.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] -faradji.nu: could not connect to host faraonplay5.com: could not connect to host faraonplay7.com: could not connect to host faraonplay8.com: could not connect to host @@ -4752,13 +5172,15 @@ farces.com: could not connect to host faretravel.co.uk: could not connect to host farkas.bz: did not receive HSTS header farm24.co.uk: could not connect to host -farmacia-discreto.com: did not receive HSTS header farmacia.pt: did not receive HSTS header farmaciaformula.com.br: could not connect to host farmaciamedicom.com.br: could not connect to host -fascia.fit: max-age too low: 2592000 +fascia.fit: could not connect to host fashion.net: did not receive HSTS header fashioncare.cz: did not receive HSTS header +fashiondays.bg: max-age too low: 0 +fashiondays.hu: max-age too low: 0 +fashiondays.ro: max-age too low: 0 fashionholic.my: did not receive HSTS header fashionoutfits24.com: did not receive HSTS header fasset.jp: could not connect to host @@ -4774,6 +5196,7 @@ fatdoge.cn: did not receive HSTS header fatgeekflix.net: could not connect to host fatherhood.gov: did not receive HSTS header fatlossguide.xyz: could not connect to host +fator25.com.br: could not connect to host fatox.de: could not connect to host fatwin.pw: could not connect to host fatzebra.com.au: max-age too low: 0 @@ -4781,6 +5204,7 @@ favorit.club: did not receive HSTS header fawkex.me: could not connect to host faxreader.net: could not connect to host fayolle.info: did not receive HSTS header +fbi.pw: did not receive HSTS header fbook.top: could not connect to host fbox.li: could not connect to host fcapartsdb.com: could not connect to host @@ -4788,7 +5212,7 @@ fcp.cn: could not connect to host fdj.im: could not connect to host fdt.name: did not receive HSTS header feard.space: could not connect to host -fed51.com: did not receive HSTS header +fed51.com: could not connect to host fedbizopps.gov: could not connect to host fedemo.top: did not receive HSTS header federalregister.gov: did not receive HSTS header @@ -4796,26 +5220,27 @@ fedn.it: could not connect to host fedo.moe: could not connect to host feedstringer.com: could not connect to host feedthebot.com: did not receive HSTS header -feelmom.com: could not connect to host +feegg.com.br: could not connect to host +feelgood-workouts.de: did not receive HSTS header fefore.com: did not receive HSTS header fegans.org.uk: did not receive HSTS header feirlane.org: could not connect to host +feisbed.com: could not connect to host feist.io: could not connect to host feitobrasilcosmeticos.com.br: did not receive HSTS header felger-times.fr: could not connect to host -felicifia.org: could not connect to host feliwyn.fr: did not receive HSTS header +felixhefner.de: did not receive HSTS header felixrr.pro: could not connect to host femaledom.xyz: could not connect to host +femdombbw.com: could not connect to host feminists.co: could not connect to host fengyadi.com: could not connect to host -fengyi.tel: did not receive HSTS header fenixhost.com.br: could not connect to host fenno.net: could not connect to host fensdorf.de: did not receive HSTS header fensterbau-mutscheller.de: could not connect to host fenteo.com: could not connect to host -feragon.net: did not receive HSTS header feras-alhajjaji.com: could not connect to host feriahuamantla.com: could not connect to host ferienwohnungen-lastminute.de: could not connect to host @@ -4826,6 +5251,7 @@ ferrolatino.com: could not connect to host feschiyan.com: could not connect to host festember.com: did not receive HSTS header festival.house: did not receive HSTS header +festivalxdentro.com: did not receive HSTS header festrip.com: could not connect to host fetch.co.uk: did not receive HSTS header fetclips.se: could not connect to host @@ -4834,6 +5260,7 @@ fettbrot.tk: did not receive HSTS header feudaltactics.com: could not connect to host feuerwehr-dachaufsetzer.de: could not connect to host fexmen.com: could not connect to host +ff-bg.xyz: could not connect to host ffh.me: could not connect to host ffl123.com: did not receive HSTS header fgequipamentos.com.br: did not receive HSTS header @@ -4851,31 +5278,35 @@ fiendishmasterplan.com: did not receive HSTS header fierman.eu: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] fierman.net: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] fierman.us: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] -fifieldtech.com: could not connect to host fiftyshadesofluca.ml: could not connect to host fig.co: did not receive HSTS header fig.ms: could not connect to host fightr.co: could not connect to host +figura.cz: did not receive HSTS header figura.im: did not receive HSTS header figuurzagers.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] fiksel.info: could not connect to host fikt.space: could not connect to host +filebox.moe: could not connect to host filebox.space: did not receive HSTS header filedir.com: did not receive HSTS header fileio.io: could not connect to host fileon.com: could not connect to host filesense.com: could not connect to host -filewall.de: could not connect to host +filewall.de: did not receive HSTS header filey.co.uk: did not receive HSTS header filhomes.ph: could not connect to host fillitupchallenge.eu: did not receive HSTS header fillmysuitca.se: did not receive HSTS header +film.photography: did not receive HSTS header +film.photos: did not receive HSTS header +filmatiporno.xxx: could not connect to host filme-online.eu.com: did not receive HSTS header filmesubtitrate2017.online: could not connect to host filo.xyz: did not receive HSTS header filoitoupediou.gr: did not receive HSTS header finalgear.com: could not connect to host -finalvpn.com: could not connect to host +finalvpn.com: did not receive HSTS header financier.io: did not receive HSTS header financieringsportaal.nl: did not receive HSTS header finanzkontor.net: could not connect to host @@ -4893,13 +5324,14 @@ finiteheap.com: did not receive HSTS header finn.io: did not receive HSTS header finstererlebnis.de: could not connect to host finsterlebnis.de: did not receive HSTS header +fintandunleavy.com: could not connect to host fiodental.com.br: did not receive HSTS header fiork.com: did not receive HSTS header fire-wolf.com: could not connect to host fireandelectrical.co.uk: did not receive HSTS header firebaseio-demo.com: could not connect to host firebaseio.com: could not connect to host (error ignored - included regardless) -firebird.io: could not connect to host +firebird.io: did not receive HSTS header firefall.rocks: could not connect to host firehost.com: could not connect to host fireinthedeep.com: could not connect to host @@ -4909,14 +5341,14 @@ fireorbit.de: did not receive HSTS header firepeak.ru: could not connect to host fireworkcoaching.com: did not receive HSTS header firexarxa.de: could not connect to host -firmenverzeichnis.nu: could not connect to host +firmament.space: could not connect to host +firmenverzeichnis.nu: did not receive HSTS header first-time-offender.com: could not connect to host firstchoicepool.com: did not receive HSTS header firstdogonthemoon.com.au: did not receive HSTS header firstforex.co.uk: did not receive HSTS header firstlook.org: did not receive HSTS header -fischers.it: could not connect to host -fischers.srv.br: could not connect to host +fischers.cc: could not connect to host fiscoeconti.it: did not receive HSTS header fishfinders.info: did not receive HSTS header fiskestang.com: did not receive HSTS header @@ -4928,6 +5360,7 @@ fitnesswerk.de: could not connect to host fitqbe.com: did not receive HSTS header fitshop.com.br: could not connect to host fitsw.com: did not receive HSTS header +fiuxy.org: could not connect to host five.vn: did not receive HSTS header fivestarsitters.com: did not receive HSTS header fivestepfunnels.com: could not connect to host @@ -4956,7 +5389,7 @@ fl0666.com: did not receive HSTS header fl0777.com: did not receive HSTS header fl0888.com: did not receive HSTS header fl0999.com: did not receive HSTS header -flagfic.com: did not receive HSTS header +flagfic.com: could not connect to host flags.ninja: could not connect to host flair.co: max-age too low: 7889238 flairbros.at: could not connect to host @@ -4972,19 +5405,27 @@ flatbellyreview.com: max-age too low: 2592000 flawcheck.com: could not connect to host flc111.com: did not receive HSTS header flc999.com: max-age too low: 129600 +fleetcor.at: could not connect to host +fleetcor.de: could not connect to host +fleetcor.fr: could not connect to host +fleetcor.hu: could not connect to host +fleetcor.nl: could not connect to host +fleetcor.pl: could not connect to host flemingtonaudiparts.com: could not connect to host +fleurette.me: could not connect to host fleursdesoleil.fr: did not receive HSTS header flexdrukker.nl: could not connect to host flexinvesting.fi: could not connect to host fliexer.com: could not connect to host flightschoolusa.com: did not receive HSTS header +fling.dating: could not connect to host flipagram.com: did not receive HSTS header flipbell.com: did not receive HSTS header flipkey.com: did not receive HSTS header -flirchi.com: could not connect to host +flirchi.com: did not receive HSTS header flixtor.net: could not connect to host -floless.co.uk: did not receive HSTS header -flomeyer.de: could not connect to host +flkrpxl.com: max-age too low: 86400 +floless.co.uk: could not connect to host floorball-haunwoehr.de: did not receive HSTS header flopy.club: could not connect to host florafiora.com.br: did not receive HSTS header @@ -4996,6 +5437,7 @@ floridaescapes.co.uk: did not receive HSTS header florinapp.com: could not connect to host florispoort.nl: did not receive HSTS header floro.me: did not receive HSTS header +flosserver.de: could not connect to host floth.at: could not connect to host flouartistique.ch: could not connect to host flow.pe: could not connect to host @@ -5003,18 +5445,21 @@ flowerandplant.org: did not receive HSTS header flowersandclouds.com: could not connect to host floweslawncare.com: could not connect to host flowlo.me: could not connect to host +flox.io: could not connect to host floydm.com: did not receive HSTS header flugplatz-edvc.de: could not connect to host +flugsportvereinigungcelle.de: did not receive HSTS header flugstadplasticsurgery.com: did not receive HSTS header fluidojobs.com: could not connect to host fluitbeurt.nl: could not connect to host flukethoughts.com: did not receive HSTS header -flurrybridge.com: did not receive HSTS header +flurrybridge.com: could not connect to host flushstudios.com: did not receive HSTS header flyaces.com: could not connect to host flybunnyfly.dk: did not receive HSTS header flygpost.com: did not receive HSTS header flyingdoggy.net: could not connect to host +flyingspaghettimonsterdonationsfund.nl: could not connect to host flyp.me: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] flyspace.ga: did not receive HSTS header flyss.net: could not connect to host @@ -5033,15 +5478,15 @@ fohome.ca: could not connect to host fokan.ch: did not receive HSTS header foliekonsulenten.dk: did not receive HSTS header folioapp.io: did not receive HSTS header -fondanastasia.ru: could not connect to host +fondanastasia.ru: did not receive HSTS header +fondy.ru: did not receive HSTS header foneo.com: could not connect to host fonetiq.io: could not connect to host -fonseguin.ca: did not receive HSTS header fontawesome.com: did not receive HSTS header foo: could not connect to host food4health.guide: could not connect to host +foodacademy.capetown: could not connect to host foodbuddy.ch: could not connect to host -foodev.de: could not connect to host foodiebox.no: did not receive HSTS header foodies.my: did not receive HSTS header foodievenues.com: could not connect to host @@ -5064,27 +5509,26 @@ forestfinance.fr: did not receive HSTS header foreveralone.io: could not connect to host foreveryoung.pt: did not receive HSTS header forex-dan.com: did not receive HSTS header +forex-plus.com: did not receive HSTS header forgix.com: could not connect to host forlagetmarx.dk: did not receive HSTS header -formadmin.com: could not connect to host -formaliteo.com: could not connect to host +formadmin.com: did not receive HSTS header +formaliteo.com: did not receive HSTS header formazioneopen.it: could not connect to host formersessalaries.com: did not receive HSTS header formula.cf: could not connect to host forplanetsake.com: could not connect to host -forschbach-janssen.de: could not connect to host +forplayers.pl: could not connect to host forsyththeatre.com: could not connect to host fortricks.in: did not receive HSTS header fortuna-loessnitz.de: could not connect to host fortuna-s.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] fortworth.ch: did not receive HSTS header -forty-two.nl: did not receive HSTS header forty2.eu: did not receive HSTS header forum.linode.com: did not receive HSTS header forumjuridico.org: did not receive HSTS header forus.be: could not connect to host foryoucosmeticos.com.br: could not connect to host -foshanshequ.com: could not connect to host fossewayflowers.co.uk: could not connect to host fossewayflowers.com: could not connect to host fossewaygardencentre.co.uk: did not receive HSTS header @@ -5092,13 +5536,16 @@ fossgruppen.se: could not connect to host fotiu.com: could not connect to host fotoallerlei.com: did not receive HSTS header fotocerita.net: could not connect to host +fotofaerie.net: could not connect to host fotogiraffe.ru: did not receive HSTS header fotografosexpertos.com: did not receive HSTS header +fotonjan.com: could not connect to host fotopasja.info: could not connect to host +fotostravestisbr.com: could not connect to host fourchin.net: could not connect to host fourwheelpartloanssimple.com: did not receive HSTS header -foxdev.io: did not receive HSTS header -foxelbox.com: did not receive HSTS header +foxdev.io: could not connect to host +foxelbox.com: could not connect to host foxes.no: could not connect to host foxley-farm.co.uk: did not receive HSTS header foxley-seeds.co.uk: did not receive HSTS header @@ -5106,15 +5553,21 @@ foxleyseeds.co.uk: could not connect to host foxmay.co.uk: could not connect to host foxtrot.pw: could not connect to host foxyslut.com: could not connect to host +foyale.io: could not connect to host +fpki.sh: could not connect to host +fptravelling.com: could not connect to host fr0zenbits.io: could not connect to host fr33d0m.link: could not connect to host fragilesolar.cf: could not connect to host -fragnic.com: did not receive HSTS header +fragnic.com: could not connect to host fralef.me: did not receive HSTS header francesca-and-lucas.com: did not receive HSTS header +francescoservida.ch: could not connect to host francevpn.xyz: could not connect to host francois-vidit.com: did not receive HSTS header frangor.info: did not receive HSTS header +frankedier.com: did not receive HSTS header +frankl.in: did not receive HSTS header franklinhua.com: could not connect to host franta.biz: did not receive HSTS header franta.email: did not receive HSTS header @@ -5133,7 +5586,6 @@ freakyawesome.ca: could not connect to host freakyawesome.club: could not connect to host freakyawesome.co: could not connect to host freakyawesome.co.uk: could not connect to host -freakyawesome.com: could not connect to host freakyawesome.company: could not connect to host freakyawesome.email: could not connect to host freakyawesome.events: could not connect to host @@ -5192,19 +5644,24 @@ freakyawesometeam.com: could not connect to host freakyawesometheme.com: could not connect to host freakyawesomethemes.com: could not connect to host freakyawesomewp.com: could not connect to host -freddythechick.uk: did not receive HSTS header +freddythechick.uk: could not connect to host +fredericcote.com: could not connect to host fredliang.cn: could not connect to host fredtec.ru: could not connect to host free8.xyz: could not connect to host freeasinlliure.org: did not receive HSTS header -freeassangenow.org: could not connect to host +freeassangenow.org: did not receive HSTS header freeben666.fr: could not connect to host +freeblog.me: could not connect to host freebookmakerbets.com.au: did not receive HSTS header freebus.org: could not connect to host +freecam2cam.site: could not connect to host +freecookies.nl: did not receive HSTS header freedomrealtyoftexas.com: did not receive HSTS header freedomvote.nl: could not connect to host freeexampapers.com: could not connect to host freeflow.tv: could not connect to host +freehao123.cn: could not connect to host freejidi.com: could not connect to host freekdevries.nl: did not receive HSTS header freelanced.co.za: could not connect to host @@ -5217,8 +5674,10 @@ freesoftwaredriver.com: could not connect to host freesounding.com: did not receive HSTS header freesounding.ru: did not receive HSTS header freesourcestl.org: did not receive HSTS header +freesquare.net: did not receive HSTS header freethought.org.au: could not connect to host freeutopia.org: did not receive HSTS header +frenzel.dk: could not connect to host freqlabs.com: did not receive HSTS header freshfind.xyz: could not connect to host freshlymind.com: did not receive HSTS header @@ -5227,7 +5686,6 @@ frforms.com: did not receive HSTS header frickelboxx.de: could not connect to host frickenate.com: could not connect to host fridaperfumaria.com.br: could not connect to host -fridolinka.cz: did not receive HSTS header friedhelm-wolf.de: could not connect to host friendica.ch: could not connect to host friendlyfiregameshow.com: could not connect to host @@ -5237,18 +5695,23 @@ frodriguez.xyz: could not connect to host froehlich.it: did not receive HSTS header froggstack.de: could not connect to host frolov.net: could not connect to host +from-the-net.com: could not connect to host fromix.de: could not connect to host fromlemaytoz.com: could not connect to host front-end.dog: could not connect to host frontisme.nl: did not receive HSTS header frontline.cloud: did not receive HSTS header frontline6.com: did not receive HSTS header +frontlinemessenger.com: did not receive HSTS header frontmin.com: did not receive HSTS header frost-ci.xyz: could not connect to host -frostbytes.net: did not receive HSTS header +frostbytes.net: could not connect to host frosty-gaming.xyz: could not connect to host frp-roleplay.de: could not connect to host +frprn.com: could not connect to host +frprn.xxx: could not connect to host frsis2017.com: could not connect to host +fruitscale.com: could not connect to host fruitusers.com: could not connect to host frumious.fyi: could not connect to host frusky.net: could not connect to host @@ -5256,12 +5719,14 @@ fs-gamenet.de: could not connect to host fsf.moe: did not receive HSTS header fsfi.is: could not connect to host fsinf.at: did not receive HSTS header +fsk.fo: did not receive HSTS header fspphoto.com: could not connect to host fsradio.eu: did not receive HSTS header fsrs.gov: could not connect to host fstatic.io: could not connect to host fstfy.de: could not connect to host -ftc.gov: did not receive HSTS header +fsvoboda.cz: could not connect to host +ftang.de: could not connect to host ftctele.com: could not connect to host fteproxy.org: did not receive HSTS header ftgho.com: could not connect to host @@ -5275,41 +5740,52 @@ fudanshi.org: could not connect to host fuelministry.com: did not receive HSTS header fugle.de: could not connect to host fuitedeau.ch: could not connect to host +fujianshipbuilding.com: could not connect to host fukuko.biz: could not connect to host fukuko.xyz: could not connect to host fukuoka-cityliner.jp: did not receive HSTS header fukushima-web.com: did not receive HSTS header fuli.am: max-age too low: 129600 fulilingyu.info: could not connect to host -fuliydys.com: did not receive HSTS header +fuliydys.com: could not connect to host +fullpackage.co.uk: did not receive HSTS header +fulltxt.ml: could not connect to host fullytrained.co.uk: could not connect to host fumiware.com: could not connect to host +fun25.tk: could not connect to host fun9.cc: could not connect to host fun99.cc: could not connect to host funarena.com.ua: did not receive HSTS header fundacionfranciscofiasco.org: could not connect to host fundacionhijosdelsol.org: could not connect to host +fundayltd.com: could not connect to host funderburg.me: did not receive HSTS header fungame.eu: did not receive HSTS header funi4u.com: could not connect to host funideas.org: could not connect to host funkes-ferien.de: did not receive HSTS header -funkner.ru: could not connect to host funkyweddingideas.com.au: could not connect to host +funnelweb.xyz: could not connect to host funny-joke-pictures.com: did not receive HSTS header funnyang.com: could not connect to host funrun.com: did not receive HSTS header funtastic-event-hire.co.uk: did not receive HSTS header funtastic.ie: could not connect to host +funtimebourne.co.uk: could not connect to host fuorifuocogenova.it: did not receive HSTS header furi.ga: could not connect to host furiffic.com: did not receive HSTS header +furikake.xyz: did not receive HSTS header furnation.com: could not connect to host furnishedproperty.com.au: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] +furry.agency: could not connect to host furry.be: did not receive HSTS header furtivelook.com: did not receive HSTS header +fusa-miyamoto.jp: could not connect to host fusedrops.com: did not receive HSTS header fusionmate.com: could not connect to host +fuskator.com: could not connect to host +fussell.io: could not connect to host futbol11.com: did not receive HSTS header futbolvivo.tv: did not receive HSTS header futos.de: could not connect to host @@ -5322,28 +5798,30 @@ futuristarchitecture.com: did not receive HSTS header fuvpn.com: could not connect to host fuxwerk.de: could not connect to host fuzoku-sodan.com: could not connect to host +fuzoku.jp: could not connect to host fwei.tk: did not receive HSTS header fws.gov: did not receive HSTS header +fwww7.com: did not receive HSTS header fxgame.online: could not connect to host fxpig-ib.com: could not connect to host fxwebstudio.com.au: max-age too low: 0 -fyfywka.com: could not connect to host fyodorpi.com: did not receive HSTS header fyol.pw: could not connect to host -fyol.xyz: did not receive HSTS header fysiohaenraets.nl: did not receive HSTS header fzn.io: did not receive HSTS header -fzslm.me: did not receive HSTS header +fzslm.me: could not connect to host g-i-s.vn: did not receive HSTS header g-rickroll-o.pw: could not connect to host g01.in.ua: could not connect to host g1jeu.com: could not connect to host +g1s.cc: could not connect to host g2-inc.com: max-age too low: 600 g2a.co: did not receive HSTS header g2g.com: did not receive HSTS header g4w.co: could not connect to host (error ignored - included regardless) g5led.nl: could not connect to host g77.ca: could not connect to host +gaanbaksho.com.au: did not receive HSTS header gaasuper6.com: could not connect to host gabber.scot: could not connect to host gabethebabetv.com: could not connect to host @@ -5354,10 +5832,13 @@ gablaxian.com: max-age too low: 2592000 gabriele-kluge.de: could not connect to host gaelleetarnaud.com: did not receive HSTS header gafachi.com: could not connect to host +gagor.pl: could not connect to host gaichanh.com: did not receive HSTS header +gailfellowsphotography.com: could not connect to host gainesvillegoneaustin.org: did not receive HSTS header -gaiserik.com: could not connect to host +gaiserik.com: did not receive HSTS header gaite.me: did not receive HSTS header +gajas18.com: could not connect to host gakkainavi4.com: could not connect to host galardi.org: could not connect to host galena.io: could not connect to host @@ -5378,7 +5859,6 @@ gamebits.net: did not receive HSTS header gamecave.de: could not connect to host gamecdn.com: could not connect to host gamechasm.com: could not connect to host -gameclue.jp: did not receive HSTS header gamefund.me: could not connect to host gamehacks.me: could not connect to host gameink.net: did not receive HSTS header @@ -5391,12 +5871,11 @@ gamepader.com: could not connect to host gameparade.de: could not connect to host gameparagon.info: could not connect to host gamepiece.com: did not receive HSTS header -gamereader.de: could not connect to host gamerpoets.com: did not receive HSTS header gamers-life.fr: could not connect to host gamerslair.org: did not receive HSTS header gamerz-point.de: could not connect to host -gamerz-stream.com: could not connect to host +gamerz-stream.com: did not receive HSTS header gamesdepartment.co.uk: could not connect to host gameserver-sponsor.de: did not receive HSTS header gamesurferapp.com: could not connect to host @@ -5404,13 +5883,15 @@ gameswitchers.uk: could not connect to host gametium.com: could not connect to host gametium.es: could not connect to host gamhealth.net: could not connect to host -gamingmedia.eu: could not connect to host +gamingmedia.eu: did not receive HSTS header gamingreinvented.com: did not receive HSTS header gamoice.com: did not receive HSTS header gampenhof.de: could not connect to host gangnam-club.com: could not connect to host gangnam-karaoke.com: could not connect to host ganhonet.com.br: did not receive HSTS header +ganzgraph.de: did not receive HSTS header +gaon.network: could not connect to host gaphag.ddns.net: could not connect to host gar-nich.net: could not connect to host garage-abri-chalet.fr: did not receive HSTS header @@ -5421,7 +5902,6 @@ garcinia--cambogia.com: could not connect to host garciniacambogiareviewed.co: did not receive HSTS header garden.trade: could not connect to host gardencarezone.com: did not receive HSTS header -garethkirk.com: did not receive HSTS header garfieldairlines.net: did not receive HSTS header garten-bau.ch: did not receive HSTS header garten-diy.de: could not connect to host @@ -5429,40 +5909,48 @@ gasbarkenora.com: could not connect to host gasnews.net: could not connect to host gasser-daniel.ch: did not receive HSTS header gastauftritt.net: did not receive HSTS header +gastritisolucion.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] gatapro.net: could not connect to host +gatemotorsumhlanga.co.za: could not connect to host gatemoves.com: could not connect to host gateworld.fr: did not receive HSTS header +gatilagata.com.br: could not connect to host gatomix.net: could not connect to host gatorsa.es: could not connect to host gaussorgues.me: could not connect to host gautham.pro: could not connect to host gavick.com: did not receive HSTS header +gay-sissies.com: could not connect to host gaycc.cc: could not connect to host gaygeeks.de: could not connect to host +gaysfisting.com: could not connect to host +gaytorrent.ru: could not connect to host +gayxsite.com: could not connect to host gazflynn.com: did not receive HSTS header -gc-mc.de: did not receive HSTS header +gbit.xyz: could not connect to host gc.net: could not connect to host gchoic.com: max-age too low: 7889238 gchp.ie: did not receive HSTS header gdegem.org: did not receive HSTS header gdevpenze.ru: could not connect to host gdprhallofshame.com: could not connect to host +gdutnic.com: could not connect to host gdz-otvety.com: could not connect to host gdz.tv: could not connect to host gear-acquisition-syndrome.community: could not connect to host +geaskb.nl: could not connect to host geblitzt.de: did not receive HSTS header gedankenbude.info: could not connect to host geekbaba.com: could not connect to host geekcast.co.uk: did not receive HSTS header +geekchimp.com: did not receive HSTS header geekdt.com: could not connect to host geekmind.org: max-age too low: 172800 -geeks.berlin: did not receive HSTS header +geeks.berlin: could not connect to host geeks.lgbt: could not connect to host -geeks.one: did not receive HSTS header geektimes.com: did not receive HSTS header +geeky.software: could not connect to host geemo.top: could not connect to host -geertdegraaf.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] -gehaowu.com: did not receive HSTS header gehrke.nrw: could not connect to host geigr.de: could not connect to host geiser.io: did not receive HSTS header @@ -5477,7 +5965,7 @@ generationnext.pl: could not connect to host genesischangelog.com: could not connect to host geneve.guide: could not connect to host genia-life.de: could not connect to host -genie-seiner-generation.de: could not connect to host +genie-seiner-generation.de: did not receive HSTS header genneve.com: did not receive HSTS header genoog.com: could not connect to host genossen.ru: could not connect to host @@ -5501,6 +5989,7 @@ gereon.ch: could not connect to host geri.be: could not connect to host germanticz.de: could not connect to host gers-authentique.com: could not connect to host +gerum.dynv6.net: did not receive HSTS header geschenkly.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] geschmackspiloten.de: did not receive HSTS header gesiwista.net: did not receive HSTS header @@ -5508,7 +5997,6 @@ gesunde-smoothies.de: did not receive HSTS header gesundes-im-napf.de: did not receive HSTS header get-asterisk.ru: could not connect to host get-cctv.com: could not connect to host -get-it-live.de: could not connect to host get.zenpayroll.com: did not receive HSTS header getable.com: did not receive HSTS header getblys.com.au: did not receive HSTS header @@ -5533,7 +6021,6 @@ getgeek.nu: could not connect to host getgeek.pl: could not connect to host getgeek.se: did not receive HSTS header getinternet.de: did not receive HSTS header -getitlive.de: could not connect to host getkai.co.nz: did not receive HSTS header getlantern.org: did not receive HSTS header getlifti.com: could not connect to host @@ -5549,46 +6036,48 @@ getremembrall.com: could not connect to host getronics.care: could not connect to host getsello.com: could not connect to host getserum.xyz: could not connect to host +getsetupfile.com: did not receive HSTS header getshifter.io: did not receive HSTS header getspeaker.com: did not receive HSTS header getspire.com: could not connect to host -getswadeshi.com: could not connect to host getwarden.net: could not connect to host getwashdaddy.com: could not connect to host -getyeflask.com: could not connect to host getyourphix.tk: could not connect to host gevaulug.fr: could not connect to host gfbouncycastles.co.uk: did not receive HSTS header gfhgiro.nl: did not receive HSTS header gfm.tech: could not connect to host gfoss.gr: could not connect to host -gfw.moe: did not receive HSTS header +gfw.moe: could not connect to host gfwsb.ml: could not connect to host gglks.com: could not connect to host +ggobbo.com: could not connect to host ggrks-asano.com: could not connect to host ggss.cf: could not connect to host ggss.ml: could not connect to host gh16.com.ar: could not connect to host -ghaglund.se: could not connect to host -ghcif.de: could not connect to host +ghcif.de: did not receive HSTS header gheorghe-sarcov.ga: could not connect to host gheorghesarcov.ga: could not connect to host gheorghesarcov.tk: could not connect to host ghi.gov: could not connect to host ghibli.studio: did not receive HSTS header -ghid-pitesti.ro: did not receive HSTS header ghkim.net: could not connect to host +ghuntley.com: max-age too low: 0 giakki.eu: could not connect to host gianlucapartengo.photography: did not receive HSTS header giant-powerfit.co.uk: did not receive HSTS header gibraltar-firma.com: did not receive HSTS header +giddyaunt.net: could not connect to host gidea.nu: could not connect to host giegler.software: did not receive HSTS header giftgofers.com: max-age too low: 2592000 +giftservices.nl: did not receive HSTS header gifzilla.net: could not connect to host gigacloud.org: could not connect to host gigawattz.com: could not connect to host gigiscloud.servebeer.com: could not connect to host +gigolodavid.be: could not connect to host gilcloud.com: could not connect to host gilgaz.com: did not receive HSTS header gillet-cros.fr: could not connect to host @@ -5596,6 +6085,7 @@ gilly.berlin: did not receive HSTS header gilroywestwood.org: did not receive HSTS header gincher.net: did not receive HSTS header gingali.de: did not receive HSTS header +ginie.de: did not receive HSTS header ginijony.com: did not receive HSTS header ginkel.com: did not receive HSTS header gintenreiter-photography.com: did not receive HSTS header @@ -5605,7 +6095,6 @@ gip-carif-idf.net: could not connect to host gip-carif-idf.org: could not connect to host gipsamsfashion.com: could not connect to host gipsic.com: did not receive HSTS header -girlsnet.work: could not connect to host gis3m.org: did not receive HSTS header gisac.org: did not receive HSTS header gistfy.com: could not connect to host @@ -5622,14 +6111,13 @@ gixtools.uk: could not connect to host gizzo.sk: could not connect to host glabiatoren-kst.de: could not connect to host gladystudio.com: did not receive HSTS header -glahcks.com: could not connect to host glass.google.com: did not receive HSTS header (error ignored - included regardless) glasslikes.com: did not receive HSTS header glbg.eu: did not receive HSTS header gle: could not connect to host glenavy.tk: could not connect to host glentakahashi.com: could not connect to host -glicerina.online: could not connect to host +glicerina.online: did not receive HSTS header glittersjabloon.nl: did not receive HSTS header glitzmirror.com: could not connect to host glnpo.gov: could not connect to host @@ -5648,7 +6136,7 @@ globalsites.nl: did not receive HSTS header globaltennis.ca: could not connect to host globalvisions-events.ch: could not connect to host globalvisions-events.com: could not connect to host -globuli-info.de: did not receive HSTS header +globuli-info.de: could not connect to host gloomyspark.com: could not connect to host glotter.com: did not receive HSTS header gloucesterphotographer.com: did not receive HSTS header @@ -5656,12 +6144,12 @@ glubbforum.de: did not receive HSTS header glutenfreiheit.at: did not receive HSTS header glws.org: did not receive HSTS header glyph.ws: could not connect to host -gm-assicurazioni.it: did not receive HSTS header +gm-assicurazioni.it: could not connect to host gmail.com: did not receive HSTS header (error ignored - included regardless) -gmantra.org: did not receive HSTS header gmanukyan.com: could not connect to host gmat.ovh: could not connect to host -gmoes.at: could not connect to host +gmoes.at: did not receive HSTS header +gmslparking.co.uk: did not receive HSTS header gnaptracker.tk: could not connect to host gnom.me: could not connect to host gnosticjade.net: did not receive HSTS header @@ -5671,17 +6159,17 @@ go4it.solutions: did not receive HSTS header goabonga.com: could not connect to host goalsetup.com: did not receive HSTS header goaltree.ch: did not receive HSTS header -goapunks.net: could not connect to host +goapunks.net: did not receive HSTS header goarmy.eu: could not connect to host goat.chat: did not receive HSTS header goat.xyz: could not connect to host goben.ch: could not connect to host goblins.net: did not receive HSTS header goblinsatwork.com: could not connect to host +gocardless.com: did not receive HSTS header godrealms.com: could not connect to host goedeke.ml: could not connect to host goerner.me: did not receive HSTS header -goerres2014.de: could not connect to host goge.site: could not connect to host gogenenglish.com: could not connect to host gogetssl.com: did not receive HSTS header @@ -5695,22 +6183,24 @@ goldendata.io: could not connect to host goldfelt.com: could not connect to host goldminer.ga: could not connect to host goldpros.com: did not receive HSTS header +goldsky.com.au: did not receive HSTS header goldwater.gov: could not connect to host goldwaterfoundation.gov: could not connect to host goldwaterscholarship.gov: could not connect to host golearn.gov: could not connect to host golfburn.com: could not connect to host golocal-media.de: could not connect to host -gomiblog.com: did not receive HSTS header gong8.win: could not connect to host +gongjianwei.com: could not connect to host +gonkar.com: did not receive HSTS header gonzalosanchez.mx: did not receive HSTS header goodeats.nyc: did not receive HSTS header -goodfeels.net: could not connect to host goodfurday.ca: could not connect to host goodmengroup.de: did not receive HSTS header goods-memo.net: did not receive HSTS header goodsex4all.com.br: could not connect to host goodtech.com.br: could not connect to host +goodvibesblog.com: could not connect to host goodwin43.ru: could not connect to host goodyearsotn.co.uk: could not connect to host google: could not connect to host (error ignored - included regardless) @@ -5723,31 +6213,31 @@ goozz.nl: did not receive HSTS header gopay.cz: did not receive HSTS header gopokego.cz: could not connect to host goranrango.ch: could not connect to host -gordonobrecht.com: did not receive HSTS header gorgiaxx.com: could not connect to host gorilla-gym.site: could not connect to host gorillow.com: could not connect to host gorognyelv.hu: could not connect to host gosharewood.com: did not receive HSTS header goshop.cz: did not receive HSTS header +goshow.tv: could not connect to host gostream.asia: could not connect to host gotgenes.com: could not connect to host goto.google.com: did not receive HSTS header (error ignored - included regardless) gotobrno.cz: did not receive HSTS header gotocloud.ru: could not connect to host +gotowned.org: could not connect to host gotspot.com: could not connect to host gottfridsberg.org: could not connect to host -gottfriedfeyen.com: could not connect to host +gottfriedfeyen.com: did not receive HSTS header goubi.me: did not receive HSTS header goujianwen.com: did not receive HSTS header goukon.ru: could not connect to host gourmettia.com: did not receive HSTS header -gouthro-goteborg.se: could not connect to host +gouthro-goteborg.se: did not receive HSTS header gouv.ovh: did not receive HSTS header gov.ax: could not connect to host goverage.org: could not connect to host govillemo.ca: did not receive HSTS header -gowe.wang: could not connect to host gozadentro.com: could not connect to host gozel.com.tr: did not receive HSTS header gpalabs.com: could not connect to host @@ -5757,21 +6247,24 @@ gplintegratedit.com: could not connect to host gpo.gov: did not receive HSTS header gpstuner.com: did not receive HSTS header graavaapi.elasticbeanstalk.com: could not connect to host +grabi.ga: could not connect to host gracechurchpc.net: could not connect to host graceful-project.eu: did not receive HSTS header gracesofgrief.com: could not connect to host grachtenpandverkopen.nl: could not connect to host -grademymac.com: could not connect to host -grademypc.com: could not connect to host +grademymac.com: did not receive HSTS header +grademypc.com: did not receive HSTS header +gradenotify.com: could not connect to host grads360.org: could not connect to host gradsm-ci.net: could not connect to host grafitec.ru: did not receive HSTS header graftworld.pw: could not connect to host -grana.com: did not receive HSTS header grandchamproofing.com: did not receive HSTS header grande.coffee: could not connect to host grandlinecsk.ru: did not receive HSTS header grandmascookieblog.com: did not receive HSTS header +grandmasfridge.org: did not receive HSTS header +grandwailea.com: did not receive HSTS header grantedby.me: max-age too low: 0 granth.io: could not connect to host graph.no: did not receive HSTS header @@ -5781,27 +6274,26 @@ gratis-app.com: did not receive HSTS header gratisonlinesex.com: could not connect to host gravitation.pro: did not receive HSTS header gravito.nl: did not receive HSTS header -gravity-dev.de: could not connect to host gravity-net.de: could not connect to host graycell.net: could not connect to host grazetech.com: did not receive HSTS header grcnode.co.uk: could not connect to host great.nagoya: could not connect to host +greatergoodoffers.com: did not receive HSTS header greatfire.kr: could not connect to host greatideahub.com: did not receive HSTS header greatnet.de: did not receive HSTS header greatsong.net: did not receive HSTS header -green-light.cf: could not connect to host -green-light.ga: could not connect to host -green-light.gq: could not connect to host -green-light.ml: could not connect to host greencardtalent.com: could not connect to host +greenconn.ca: could not connect to host +greenenergysolution.uk: did not receive HSTS header greenesting.ch: could not connect to host greenesting.com: could not connect to host greengov.gov: could not connect to host greenhillantiques.co.uk: did not receive HSTS header greenitpark.net: could not connect to host greensolid.biz: could not connect to host +greenville.ag: did not receive HSTS header greenvines.com.tw: did not receive HSTS header greenvpn.ltd: could not connect to host greenvpn.pro: did not receive HSTS header @@ -5818,7 +6310,6 @@ greuel.online: could not connect to host greve.xyz: could not connect to host grevesgarten.de: could not connect to host greyline.se: could not connect to host -greysky.me: max-age too low: 300 grian-bam.at: did not receive HSTS header gribani.com: could not connect to host grid2osm.org: could not connect to host @@ -5836,7 +6327,7 @@ groentefruitzeep.com: could not connect to host groentefruitzeep.nl: could not connect to host groetzner.net: did not receive HSTS header groseb.net: did not receive HSTS header -grossberger-ge.org: could not connect to host +grossell.ru: could not connect to host grossmann.gr: could not connect to host grossmisconduct.news: could not connect to host groupe-cassous.com: did not receive HSTS header @@ -5846,7 +6337,10 @@ grow-shop.lt: could not connect to host grow-shop.lv: could not connect to host growingmetrics.com: could not connect to host grozip.com: did not receive HSTS header +grozter.se: did not receive HSTS header +gruelang.org: could not connect to host gruenderwoche-dresden.de: did not receive HSTS header +grumples.biz: did not receive HSTS header grunex.com: did not receive HSTS header grupopgn.com.br: could not connect to host grusig-geil.ch: could not connect to host @@ -5867,7 +6361,9 @@ gts-schulsoftware.de: did not receive HSTS header guarajubaimoveis.com.br: did not receive HSTS header guava.studio: did not receive HSTS header gudangpangan.id: could not connect to host +gudrun.ml: could not connect to host guelphhydropool.com: could not connect to host +guendra.dedyn.io: could not connect to host guentherhouse.com: did not receive HSTS header guenthernoack.de: could not connect to host guffrits.com: could not connect to host @@ -5877,10 +6373,12 @@ gugga.dk: could not connect to host guguke.net: did not receive HSTS header guidechecking.com: could not connect to host guides-et-admin.com: did not receive HSTS header +guidesetc.com: did not receive HSTS header guilde-vindicta.fr: could not connect to host guildgearscore.cf: could not connect to host guillaume-leduc.fr: did not receive HSTS header guillaumematheron.fr: did not receive HSTS header +guillaumeperrin.io: could not connect to host guiltypleasuresroleplaying.com: did not receive HSTS header guinea-pig.co: could not connect to host guineafruitcorp.com: could not connect to host @@ -5898,6 +6396,7 @@ gunnarhafdal.com: did not receive HSTS header gunnaro.com: could not connect to host guntbert.net: could not connect to host guoqiang.info: did not receive HSTS header +gurochan.ch: could not connect to host gurom.lv: could not connect to host gurubetng.com: did not receive HSTS header gurusupe.com: could not connect to host @@ -5907,17 +6406,19 @@ guso.ml: could not connect to host guso.site: could not connect to host guso.tech: could not connect to host gussi.is: did not receive HSTS header -guthabenkarten-billiger.de: did not receive HSTS header +guthabenkarten-billiger.de: could not connect to host guts.me: did not receive HSTS header guts.moe: did not receive HSTS header guyot-tech.com: did not receive HSTS header gvchannel.xyz: could not connect to host -gvi.be: could not connect to host +gvi.be: did not receive HSTS header +gvm.io: could not connect to host gvpt.sk: did not receive HSTS header gvt2.com: could not connect to host (error ignored - included regardless) gvt3.com: could not connect to host (error ignored - included regardless) gw2oracle.com: could not connect to host gw2reload.eu: could not connect to host +gwa-verwaltung.de: could not connect to host gwijaya.com: could not connect to host gwtest.us: could not connect to host gxgx.org: could not connect to host @@ -5925,31 +6426,33 @@ gxlrx.net: could not connect to host gyboche.com: could not connect to host gyboche.science: could not connect to host gylauto.fr: could not connect to host -gypsycatdreams.com: did not receive HSTS header +gymjp.com: did not receive HSTS header +gypsycatdreams.com: could not connect to host gypthecat.com: did not receive HSTS header gyz.io: did not receive HSTS header -gzitech.net: could not connect to host gzpblog.com: could not connect to host h-og.com: could not connect to host h-rickroll-n.pw: could not connect to host h2cdn.cloud: could not connect to host -h2check.org: did not receive HSTS header +h2check.org: could not connect to host h3x.jp: could not connect to host +ha6.ru: could not connect to host haarkliniek.com: did not receive HSTS header habbixed.tk: could not connect to host -habbo.life: did not receive HSTS header +habbo.life: could not connect to host habbotalk.nl: could not connect to host habeo.si: could not connect to host hablemosdetecnologia.com.ve: could not connect to host hac30.com: could not connect to host -hack.cz: could not connect to host +hack.club: could not connect to host hack.li: could not connect to host hackbubble.me: could not connect to host -hackdown.me: could not connect to host +hacker.club: could not connect to host hacker.deals: could not connect to host hacker8.cn: could not connect to host hackercat.ninja: max-age too low: 2592000 hackerforever.com: could not connect to host +hackerlite.xyz: did not receive HSTS header hackerone-ext-adroll.com: could not connect to host hackerspace-ntnu.no: did not receive HSTS header hackest.org: did not receive HSTS header @@ -5958,8 +6461,9 @@ hackit.im: could not connect to host hackmeplz.com: could not connect to host hackroyale.xyz: could not connect to host hacksnack.io: could not connect to host -hackworx.com: could not connect to host +hackthissite.org: could not connect to host hackyourfaceoff.com: could not connect to host +hackzogtum-coburg.de: did not receive HSTS header hadaf.pro: could not connect to host hadzic.co: could not connect to host haeckdesign.com: did not receive HSTS header @@ -5968,6 +6472,7 @@ haehnlein.at: could not connect to host haemmerle.net: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] haf.gr: could not connect to host hafoda.com: did not receive HSTS header +haggeluring.su: could not connect to host hahayidu.org: could not connect to host hail2u.net: did not receive HSTS header hainoni.com: did not receive HSTS header @@ -5976,8 +6481,6 @@ haitschi.com: could not connect to host haitschi.de: did not receive HSTS header haitschi.net: could not connect to host haitschi.org: could not connect to host -hajnzic.at: could not connect to host -hakase.pw: could not connect to host haktec.de: did not receive HSTS header haku.moe: could not connect to host hakugin.me: could not connect to host @@ -5996,6 +6499,7 @@ hamking.tk: could not connect to host hammamsayad.com: could not connect to host hamon.cc: did not receive HSTS header hamu.blue: could not connect to host +hanakaraku.com: could not connect to host hancatemc.com: did not receive HSTS header hancc.net: could not connect to host handenafvanhetmedischdossier.nl: could not connect to host @@ -6003,16 +6507,18 @@ handicapindeles.nl: did not receive HSTS header handinhandfoundation.org.uk: did not receive HSTS header handiworker.com: could not connect to host handmadegobelin.com: did not receive HSTS header +handmadeshoes.pe: did not receive HSTS header handmadetutorials.ro: could not connect to host handsandall.com: did not receive HSTS header hanfu.la: could not connect to host -hang333.moe: could not connect to host hang333.pw: could not connect to host hangar18-modelismo.com.br: could not connect to host hanimalis.fr: could not connect to host hanksservice.com: could not connect to host hannes-speelgoedencadeautjes.nl: did not receive HSTS header hans-natur.de: did not receive HSTS header +hansch.ventures: could not connect to host +hanys.xyz: could not connect to host hanzcollection.online: could not connect to host haobo111.com: could not connect to host haobo1111.com: could not connect to host @@ -6035,14 +6541,15 @@ hapsfordmill.co.uk: could not connect to host hapvm.com: could not connect to host haqaza.com.br: did not receive HSTS header harambe.site: could not connect to host -harbourweb.net: did not receive HSTS header -hardergayporn.com: could not connect to host +harbourweb.net: could not connect to host +hardeman.nu: could not connect to host hardline.xyz: could not connect to host +hardtime.ru: could not connect to host hardyboyplant.com: did not receive HSTS header +harekaze.info: could not connect to host haribosupermix.com: could not connect to host hariome.com: did not receive HSTS header harlentimberproducts.co.uk: did not receive HSTS header -harmfarm.nl: could not connect to host harmonycosmetic.com: max-age too low: 300 harrisonsdirect.co.uk: did not receive HSTS header harristony.com: could not connect to host @@ -6053,6 +6560,7 @@ harschnitz.nl: did not receive HSTS header hartlep.eu: could not connect to host hartmancpa.com: did not receive HSTS header harvestrenewal.org: did not receive HSTS header +harveymilton.com: did not receive HSTS header harz.cloud: could not connect to host has.vision: could not connect to host hasabig.wang: could not connect to host @@ -6061,25 +6569,28 @@ haschrebellen.de: could not connect to host hash-list.com: could not connect to host hashiconf.com: did not receive HSTS header hashidays.com: did not receive HSTS header +hashimah.ca: could not connect to host hashplex.com: could not connect to host hasinase.de: could not connect to host haste.ch: could not connect to host hastherebeenamassshooting.today: could not connect to host -hatarisecurity.co.ke: could not connect to host +hatcherlawgroupnm.com: did not receive HSTS header hatethe.uk: could not connect to host hatoko.net: could not connect to host haufschild.de: could not connect to host haurumcraft.net: could not connect to host hausarzt-stader-str.de: did not receive HSTS header +hauswarteam.com: could not connect to host hav.com: could not connect to host haveeruexaminer.com: could not connect to host +haven-moon.com: could not connect to host haven-staging.cloud: could not connect to host haven.cloud: did not receive HSTS header havenmoon.com: could not connect to host havenswift-hosting.co.uk: did not receive HSTS header hawk-la.com: could not connect to host hawthornharpist.com: could not connect to host -haxoff.com: could not connect to host +haxoff.com: did not receive HSTS header haxon.me: could not connect to host haxx.hu: did not receive HSTS header haydenhill.us: could not connect to host @@ -6105,17 +6616,20 @@ hbvip07.com: could not connect to host hbvip08.com: could not connect to host hcfhomelottery.ca: did not receive HSTS header hcie.pl: did not receive HSTS header +hcoe.fi: did not receive HSTS header hcr.io: did not receive HSTS header hcs-company.com: did not receive HSTS header hcs-company.nl: did not receive HSTS header hcstr.com: did not receive HSTS header hd1tj.org: did not receive HSTS header +hda.me: could not connect to host hdm.io: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] hdrboundless.com: could not connect to host hdritalyphotos.com: did not receive HSTS header hdserver.info: did not receive HSTS header hdsmigrationtool.com: could not connect to host hduin.xyz: could not connect to host +hdwallpapers.net: could not connect to host hdy.nz: could not connect to host head-shop.lt: could not connect to host head-shop.lv: could not connect to host @@ -6128,18 +6642,20 @@ healtious.com: could not connect to host hearingshofar.com: could not connect to host heart.ge: did not receive HSTS header heartlandrentals.com: did not receive HSTS header -hearty.cf: could not connect to host +hearty.cf: did not receive HSTS header hearty.ink: could not connect to host hearty.space: could not connect to host hearty.tech: could not connect to host hearty.tw: did not receive HSTS header +heartyapp.com: could not connect to host heartyme.net: could not connect to host heathmanners.com: could not connect to host heavenlyseals.com: could not connect to host heavenlysmokenc.com: could not connect to host heavystresser.com: could not connect to host +heayao.com: could not connect to host hebaus.com: could not connect to host -hebikhiv.nl: could not connect to host +hectorj.net: could not connect to host hedweb.com: could not connect to host heidilein.info: did not receive HSTS header heimnetze.org: could not connect to host @@ -6155,8 +6671,7 @@ hellenicaward.com: did not receive HSTS header hello-nestor.com: did not receive HSTS header helloanselm.com: did not receive HSTS header hellofilters.com: could not connect to host -hellomouse.cf: did not receive HSTS header -hellomouse.net: could not connect to host +hellomouse.cf: could not connect to host hellomouse.tk: could not connect to host hellotandem.com: could not connect to host hellothought.net: could not connect to host @@ -6181,17 +6696,19 @@ hemlockhillscabinrentals.com: did not receive HSTS header hencagon.com: could not connect to host hendersonrealestatepros.com: did not receive HSTS header hendric.us: did not receive HSTS header +henhenlu.com: could not connect to host henningkerstan.org: did not receive HSTS header henriknoerr.com: could not connect to host hentai.design: did not receive HSTS header hentaimaster.net: could not connect to host +hentaiz.net: could not connect to host hepteract.us: could not connect to host heptner24.de: could not connect to host her25.com: did not receive HSTS header herbertmouwen.nl: could not connect to host here.ml: could not connect to host here4funpartysolutions.ie: did not receive HSTS header -heribe-maruo.com: could not connect to host +heribe-maruo.com: did not receive HSTS header heritagedentistry.ca: did not receive HSTS header hermes-servizi.it: could not connect to host heroin.org.uk: could not connect to host @@ -6200,29 +6717,33 @@ herramientasbazarot.com: did not receive HSTS header herrenfahrt.com: did not receive HSTS header hetmeisjeachterpauw.nl: could not connect to host hetmer.com: did not receive HSTS header +hetmer.cz: did not receive HSTS header hetmer.net: did not receive HSTS header heutger.net: did not receive HSTS header +heverhagen.rocks: could not connect to host hex2013.com: did not receive HSTS header hexacon.io: could not connect to host -hexadecimal.tech: did not receive HSTS header +hexadecimal.tech: could not connect to host hexe.net: did not receive HSTS header hexhu.com: could not connect to host hexo.io: did not receive HSTS header hexobind.com: could not connect to host +hexstream.net: did not receive HSTS header heyguevara.com: did not receive HSTS header heywoodtown.co.uk: did not receive HSTS header hfbg.nl: did not receive HSTS header hfcbank.com.gh: could not connect to host hfi.me: did not receive HSTS header +hflsdev.org: could not connect to host hfu.io: could not connect to host +hg525.com: max-age too low: 86400 hg71839.com: could not connect to host hg881.com: could not connect to host -hh-wolke.dedyn.io: did not receive HSTS header +hgfa.fi: could not connect to host hi808.net: did not receive HSTS header hialatv.com: could not connect to host hibilog.com: could not connect to host hicn.gq: could not connect to host -hiddendepth.ie: max-age too low: 0 hiddenmail.xyz: could not connect to host hiddenprocess.com: did not receive HSTS header hiddenrefuge.eu.org: could not connect to host @@ -6231,8 +6752,10 @@ hideftv.deals: could not connect to host hideout.agency: could not connect to host hidrofire.com: did not receive HSTS header hiexmerida-mailing.com: did not receive HSTS header +hig.gov: could not connect to host highgrove.org.uk: could not connect to host highlandparkcog.org: did not receive HSTS header +highperformancehvac.com: did not receive HSTS header highseer.com: did not receive HSTS header highsurf-miyazaki.com: could not connect to host hightechgadgets.net: could not connect to host @@ -6248,6 +6771,7 @@ hikagestudios.com: did not receive HSTS header hikariempire.com: could not connect to host hikinggearlab.com: did not receive HSTS header hilaolu.com: could not connect to host +hilariousbeer.com.mx: could not connect to host hilinemerchandising.com: did not receive HSTS header hill.selfip.net: could not connect to host hillcity.org.nz: did not receive HSTS header @@ -6259,15 +6783,17 @@ hingle.me: could not connect to host hinkel-sohn.de: did not receive HSTS header hinrich.de: did not receive HSTS header hintergedanken.com: could not connect to host -hintermeier-rae.at: could not connect to host +hintermeier-rae.at: did not receive HSTS header hipercultura.com: did not receive HSTS header hiphop.ren: could not connect to host hiphopconvention.nl: could not connect to host hipnos.net: did not receive HSTS header hipnoseinstitute.org: did not receive HSTS header -hiqhub.co.uk: could not connect to host hiraku.me: did not receive HSTS header +hireprofs.com: could not connect to host hiresuccessstaffing.com: did not receive HSTS header +hiretech.com: did not receive HSTS header +hirevets.gov: did not receive HSTS header hirokilog.com: could not connect to host hisingenrunt.se: did not receive HSTS header histoire-theatre.com: did not receive HSTS header @@ -6275,10 +6801,13 @@ history.pe: could not connect to host hitchunion.org: could not connect to host hitoy.org: did not receive HSTS header hittipps.com: could not connect to host +hivatal-info.hu: could not connect to host +hiyuki2578.net: could not connect to host hjes.com.ve: could not connect to host +hjf-immobilien.de: did not receive HSTS header +hjkhs.cn: did not receive HSTS header hknet.at: did not receive HSTS header hlacosedora.com: max-age too low: 7889238 -hloe0xff.ru: could not connect to host hlpublicidad.com: could not connect to host hlyue.com: did not receive HSTS header hm1ch.com: could not connect to host @@ -6288,6 +6817,7 @@ hmm.nyc: could not connect to host hoast.xyz: could not connect to host hobaugh.social: could not connect to host hobby-gamerz-community.de: did not receive HSTS header +hocassian.cn: did not receive HSTS header hochzeitshelferlein.de: did not receive HSTS header hodamakade.com: could not connect to host hodne.io: could not connect to host @@ -6310,37 +6840,38 @@ holisticdrbright.com: max-age too low: 300 hollandguns.com: did not receive HSTS header hollerau.de: could not connect to host holowaty.me: could not connect to host +holy-hi.com: did not receive HSTS header holymoly.lu: could not connect to host -holytransaction.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] +holymolycasinos.com: did not receive HSTS header homa.website: could not connect to host homads.com: did not receive HSTS header home-cloud.online: could not connect to host home-coaching.be: did not receive HSTS header home-craft.de: could not connect to host home-v.ind.in: could not connect to host +home-work-jobs.com: did not receive HSTS header homeandyarddetailing.com: could not connect to host homeclouding.de: could not connect to host +homecoming.city: could not connect to host homedna.com: did not receive HSTS header homeexx.com: did not receive HSTS header -homefacialpro.com: did not receive HSTS header -homegreenmark.com: did not receive HSTS header homeownersassociationmanagementla.com: did not receive HSTS header homeremodelingcontractorsca.com: did not receive HSTS header homesandal.com: did not receive HSTS header homeseller.co.uk: could not connect to host homesfordinner.ca: could not connect to host -homewatt.co.uk: could not connect to host homeyantra.com: did not receive HSTS header homezhi.com.tw: could not connect to host homoglyph.net: could not connect to host +honeybeard.co.uk: did not receive HSTS header honeytracks.com: could not connect to host -hong.io: could not connect to host hongyd.online: could not connect to host hongzhaxiaofendui.com: could not connect to host hongzu.cc: could not connect to host hongzuwang.com: could not connect to host hongzuzhibo.com: could not connect to host honkhonk.net: could not connect to host +honkion.net: could not connect to host honoo.com: could not connect to host hoodiecrow.com: could not connect to host hoodoo.io: could not connect to host @@ -6354,11 +6885,14 @@ hopesb.org: did not receive HSTS header hopewellproperties.co.uk: did not receive HSTS header hopglass.eu: could not connect to host hopglass.net: could not connect to host +hoponmedia.de: could not connect to host +hopzone.net: could not connect to host horace.li: did not receive HSTS header horisonttimedia.fi: did not receive HSTS header horizonmoto.fr: did not receive HSTS header horning.co: did not receive HSTS header horosho.in: could not connect to host +horrendous-servers.com: could not connect to host horror-forum.de: could not connect to host horrorserv.com: could not connect to host horseboners.xxx: could not connect to host @@ -6377,18 +6911,20 @@ hostinaus.com.au: did not receive HSTS header hostingfirst.nl: could not connect to host hostingfj.com: could not connect to host hostisan.com: could not connect to host +hostworkz.com: could not connect to host +hosyaku.gr.jp: did not receive HSTS header hot-spa.ch: did not receive HSTS header hotartup.com: could not connect to host hotchillibox.co.za: could not connect to host hotchoc.io: could not connect to host hotel-huberhof.at: did not receive HSTS header -hotel-rosner.at: did not receive HSTS header hotel-tongruben.de: max-age too low: 0 hotelaustria-wien.at: did not receive HSTS header hotelmadhuwanvihar.com: could not connect to host hotelvictoriaoax-mailing.com: did not receive HSTS header hotelvillahermosa-mailing.com: did not receive HSTS header hotelvue.nl: could not connect to host +hotjuice.com: could not connect to host hotornot.com: could not connect to host hotpoint-training.com: did not receive HSTS header hottestwebcamgirls.org: could not connect to host @@ -6404,18 +6940,20 @@ howtocuremysciatica.com: could not connect to host howtofreelance.com: did not receive HSTS header hozinga.de: could not connect to host hpctecnologias.com: did not receive HSTS header -hpepub.asia: could not connect to host +hpeditor.tk: could not connect to host +hpepub.asia: did not receive HSTS header hpepub.org: could not connect to host hppub.info: could not connect to host hppub.org: could not connect to host hppub.site: could not connect to host hqhost.net: did not receive HSTS header +hqq.tv: could not connect to host +hqy.moe: did not receive HSTS header hr-intranet.com: could not connect to host hr-tech.store: could not connect to host hr98.tk: could not connect to host hrackydomino.cz: did not receive HSTS header hrfhomelottery.com: did not receive HSTS header -hrk.io: could not connect to host hrtech.store: could not connect to host hrtraining.com.au: did not receive HSTS header hschen.top: could not connect to host @@ -6424,17 +6962,18 @@ hsir.me: could not connect to host hsts-preload-test.xyz: could not connect to host hsts.com.br: could not connect to host hsts.date: could not connect to host -hsts.eu: could not connect to host hstspreload.me: could not connect to host hszhyy120.com: could not connect to host htlball.at: could not connect to host html-lab.tk: could not connect to host http418.xyz: could not connect to host httphacker.com: could not connect to host -https-rulesets.org: could not connect to host https.ps: could not connect to host +https.ren: could not connect to host httpstatuscode418.xyz: could not connect to host httptest.net: could not connect to host +hu8hu8.com: could not connect to host +huang-haitao.com: did not receive HSTS header huang.nu: could not connect to host huangguancq.com: could not connect to host huangh.com: could not connect to host @@ -6442,26 +6981,32 @@ huangzenghao.com: could not connect to host huarongdao.com: did not receive HSTS header hubert.systems: did not receive HSTS header hubertmoszka.pl: could not connect to host +hubrick.com: could not connect to host hudhaifahgoga.co.za: could not connect to host hudingyuan.cn: could not connect to host hugocollignon.fr: could not connect to host huiser.nl: could not connect to host hukaloh.com: could not connect to host hukkatavara.com: could not connect to host -humankode.com: did not receive HSTS header +humanexperiments.com: could not connect to host humblefinances.com: could not connect to host humeurs.net: could not connect to host +humorce.com: did not receive HSTS header humortuga.pt: did not receive HSTS header hump.dk: could not connect to host humpi.at: could not connect to host humpteedumptee.in: did not receive HSTS header hunger.im: could not connect to host +hunqz.com: could not connect to host huntshomeinspections.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] huodongweb.com: could not connect to host +huoduan.com: did not receive HSTS header huongquynh.com: could not connect to host -hup.blue: did not receive HSTS header +hup.blue: could not connect to host huskybutt.dog: could not connect to host huskyduvercors.com: did not receive HSTS header +hustle.com: did not receive HSTS header +hustle.life: did not receive HSTS header huwjones.me: could not connect to host huzu.com: did not receive HSTS header huzurmetal.net: could not connect to host @@ -6469,10 +7014,13 @@ hwcine.com: did not receive HSTS header hwpkasse.de: max-age too low: 2592000 hyakumachi.com: did not receive HSTS header hyatt.com: did not receive HSTS header +hybridiyhdistys.fi: could not connect to host +hybridklubben.fi: could not connect to host hybula.nl: could not connect to host hydai.co: could not connect to host hydra.ws: could not connect to host hydra.zone: could not connect to host +hydrabit.nl: did not receive HSTS header hydrante.ch: could not connect to host hydrodipcenter.nl: did not receive HSTS header hydronium.cf: could not connect to host @@ -6481,10 +7029,12 @@ hydronium.me: could not connect to host hydronium.ml: could not connect to host hydronium.tk: could not connect to host hydronyx.me: could not connect to host +hydrosight.com: did not receive HSTS header +hyeok.org: did not receive HSTS header hymerscollege.co.uk: max-age too low: 43200 hypa.net.au: did not receive HSTS header hyper-matrix.org: could not connect to host -hyper69.com: did not receive HSTS header +hyper69.com: could not connect to host hyperactive.am: could not connect to host hyperporn.net: could not connect to host hyperreal.info: could not connect to host @@ -6496,16 +7046,17 @@ hyvive.com: could not connect to host hzh.pub: did not receive HSTS header hztgzz.com: could not connect to host i--b.com: did not receive HSTS header -i-aloks.ru: could not connect to host i-jp.net: could not connect to host i-partners.sk: could not connect to host i-rickroll-n.pw: could not connect to host i-stats.net: could not connect to host i10z.com: could not connect to host +i28s.com: did not receive HSTS header i496.eu: could not connect to host i4m1k0su.com: could not connect to host i95.me: could not connect to host i9multiequipamentos.com.br: did not receive HSTS header +ia1000.com: could not connect to host iacono.com.br: did not receive HSTS header iadttaveras.com: could not connect to host iain.tech: did not receive HSTS header @@ -6522,15 +7073,15 @@ ibestreview.com: did not receive HSTS header ibizatopcharter.com: did not receive HSTS header ibna.online: could not connect to host ibnuwebhost.com: could not connect to host -ibox.ovh: could not connect to host +ibnw.de: did not receive HSTS header +ibox.ovh: did not receive HSTS header ibps.blog: did not receive HSTS header +ibpsrecruitment.co.in: could not connect to host ibron.co: could not connect to host ibsafrica.co.za: could not connect to host ibsglobal.co.za: could not connect to host -icabanken.se: did not receive HSTS header icaforsakring.se: did not receive HSTS header icasnetwork.com: did not receive HSTS header -iccpublisher.com: could not connect to host ice.yt: could not connect to host icebat.dyndns.org: could not connect to host icebound.cc: did not receive HSTS header @@ -6547,19 +7098,22 @@ ichoosebtec.com: did not receive HSTS header ichronos.net: did not receive HSTS header icity.ly: did not receive HSTS header icloud.net: could not connect to host +icmshoptrend.com: did not receive HSTS header icnsoft.ga: did not receive HSTS header -icnsoft.me: could not connect to host icntorrent.download: could not connect to host -icpc.pp.ua: could not connect to host +ico500.com: did not receive HSTS header +icondoom.nl: did not receive HSTS header +icowhitepapers.co: did not receive HSTS header icpc2016.in.th: could not connect to host icreative.nl: did not receive HSTS header +ictinforensics.org: could not connect to host ictpro.info: did not receive HSTS header icusignature.com: could not connect to host icys2017.com: did not receive HSTS header id-co.in: could not connect to host id-conf.com: did not receive HSTS header -id.fedoraproject.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] -idblab.tk: did not receive HSTS header +idafauziyah.com: could not connect to host +idc.yn.cn: could not connect to host idcrane.com: could not connect to host iddconnect.com: could not connect to host iddconnect.org: could not connect to host @@ -6575,11 +7129,12 @@ ideasmeetingpoint.com: could not connect to host ideation-inc.co.jp: could not connect to host idedr.com: could not connect to host idemo.in: could not connect to host -idenamaislami.com: could not connect to host identity-hash.online: could not connect to host identitylabs.uk: could not connect to host identitysandbox.gov: could not connect to host +identitytheft.gov: did not receive HSTS header idgsupply.com: did not receive HSTS header +idid.tk: could not connect to host idinby.dk: did not receive HSTS header idiopolis.org: could not connect to host idisplay.es: could not connect to host @@ -6588,11 +7143,11 @@ idol-bikes.ru: could not connect to host idontexist.me: could not connect to host idsafe.co.za: could not connect to host idsoccer.com: did not receive HSTS header -idtheft.gov: could not connect to host iec.pe: could not connect to host iemb.cf: could not connect to host ierna.com: did not receive HSTS header ies.id.lv: could not connect to host +ietsdoenofferte.nl: did not receive HSTS header ievgenialehner.com: did not receive HSTS header iexpert9.com: did not receive HSTS header if0.ru: could not connect to host @@ -6600,6 +7155,7 @@ ifad.org: did not receive HSTS header ifan.ch: could not connect to host ifastuniversity.com: did not receive HSTS header ifcfg.me: could not connect to host +ifconfig.co: did not receive HSTS header ifleurs.com: could not connect to host ifreetion.cn: did not receive HSTS header ifx.ee: could not connect to host @@ -6612,9 +7168,8 @@ igforums.com: could not connect to host igi.codes: did not receive HSTS header igiftcards.nl: did not receive HSTS header ignatisd.gr: did not receive HSTS header -ignatovich.by: could not connect to host igule.net: could not connect to host -ihoey.com: could not connect to host +iha6.com: could not connect to host ihongzu.com: could not connect to host ihotel.io: did not receive HSTS header ihrlotto.de: could not connect to host @@ -6624,8 +7179,7 @@ ihsbsd.tk: could not connect to host ihzys.com: could not connect to host iide.co: did not receive HSTS header iideaz.org: could not connect to host -iilin.com: could not connect to host -iiong.com: did not receive HSTS header +iilin.com: did not receive HSTS header iispeed.com: did not receive HSTS header ijn-dd.nl: could not connect to host ijoda.com: could not connect to host @@ -6635,6 +7189,7 @@ ikenmeyer.com: could not connect to host ikenmeyer.eu: could not connect to host ikocik.sk: could not connect to host ikon.name: could not connect to host +ikraenglish.com: could not connect to host ikwilguidobellen.nl: could not connect to host ikzoekeengoedkopeauto.nl: could not connect to host ikzoekjeugdhulp.nl: did not receive HSTS header @@ -6642,7 +7197,6 @@ ilbuongiorno.it: did not receive HSTS header ildomani.it: did not receive HSTS header ileat.com: could not connect to host ilgi.work: could not connect to host -ilhansubasi.com: did not receive HSTS header ilii.me: could not connect to host ilikerainbows.co: could not connect to host ilikerainbows.co.uk: could not connect to host @@ -6650,9 +7204,13 @@ ilikfreshweedstores.com: did not receive HSTS header ilmconpm.de: could not connect to host iloilofit.org: did not receive HSTS header ilona.graphics: did not receive HSTS header +iltec-prom.ru: could not connect to host +iltec.ru: could not connect to host iluvscotland.co.uk: did not receive HSTS header im-design.com.ua: did not receive HSTS header image.tf: could not connect to host +imagecurl.com: could not connect to host +imagecurl.org: could not connect to host imaginarymakings.me: could not connect to host imakepoems.net: could not connect to host imanhearts.com: did not receive HSTS header @@ -6667,22 +7225,24 @@ imfromthefuture.com: did not receive HSTS header img.ovh: could not connect to host imgencrypt.com: could not connect to host imgul.net: could not connect to host -imgup.co: did not receive HSTS header +imguoguo.com: could not connect to host imim.pw: could not connect to host imjiangtao.com: did not receive HSTS header imlinan.cn: could not connect to host imlinan.info: could not connect to host imlinan.net: could not connect to host +imlonghao.com: did not receive HSTS header immanuel60.hu: did not receive HSTS header +immaternity.com: could not connect to host immersionwealth.com: could not connect to host -immigrationdirect.com.au: could not connect to host +immo-vk.de: did not receive HSTS header immobilien-wallat.de: could not connect to host immoprotect.ca: did not receive HSTS header immortals-co.com: did not receive HSTS header immoverkauf24.at: did not receive HSTS header immoverkauf24.de: did not receive HSTS header immunicity.cc: could not connect to host -immunicity.date: did not receive HSTS header +immunicity.date: could not connect to host immunicity.eu: did not receive HSTS header immunicity.host: could not connect to host immunicity.info: could not connect to host @@ -6697,13 +7257,15 @@ immunicity.works: could not connect to host immunicity.world: could not connect to host imoe.ac.cn: did not receive HSTS header imolug.org: did not receive HSTS header +imoner.com: could not connect to host imoner.ga: could not connect to host imoni-blog.net: could not connect to host imoto.me: could not connect to host imperdintechnologies.com: could not connect to host imperialonlinestore.com: did not receive HSTS header imperialwebsolutions.com: did not receive HSTS header -implicitdenial.com: did not receive HSTS header +implicitdenial.com: could not connect to host +imprenta-es.com: did not receive HSTS header improvingwp.com: could not connect to host impulse-clan.de: could not connect to host imrejonk.nl: could not connect to host @@ -6725,7 +7287,9 @@ indieethos.com: did not receive HSTS header indiemods.com: could not connect to host indien.guide: could not connect to host indilens.com: did not receive HSTS header +indiroyunu.com: did not receive HSTS header indoorskiassen.nl: did not receive HSTS header +indostar303.com: did not receive HSTS header indredouglas.me: could not connect to host industreiler.com: could not connect to host industreiler.com.br: could not connect to host @@ -6735,7 +7299,6 @@ ineed.com.mt: could not connect to host inexlog.fr: could not connect to host inexpensivecomputers.net: could not connect to host infcof.com: did not receive HSTS header -inference.biz.tr: could not connect to host infilock.com: could not connect to host infinether.net: could not connect to host infinitiofmarinparts.com: could not connect to host @@ -6751,8 +7314,9 @@ inflation.ml: could not connect to host influxus.com: could not connect to host info-bay.com: could not connect to host info-sys.tk: could not connect to host +infoamin.com: did not receive HSTS header +infocoin.es: did not receive HSTS header infoduv.fr: did not receive HSTS header -infopagina.es: did not receive HSTS header inforichjapan.com: did not receive HSTS header inforisposte.com: did not receive HSTS header informaticapremium.com: did not receive HSTS header @@ -6763,7 +7327,9 @@ infosoph.org: could not connect to host infotics.es: did not receive HSTS header infovae-idf.com: did not receive HSTS header infoworm.org: could not connect to host +infradio.am: could not connect to host infranix.eu: max-age too low: 7360000 +infrarank.com: could not connect to host infruction.com: could not connect to host infura.co.th: could not connect to host ingalabs.hu: could not connect to host @@ -6772,8 +7338,6 @@ ingesol.fr: did not receive HSTS header ingresscode.cn: did not receive HSTS header inhelix.com: could not connect to host inhive.group: did not receive HSTS header -iniiter.com: could not connect to host -initramfs.io: could not connect to host injapan.nl: could not connect to host injertoshorticolas.com: did not receive HSTS header injigo.com: did not receive HSTS header @@ -6784,8 +7348,10 @@ injust.gq: could not connect to host injust.me: could not connect to host injust.ml: could not connect to host injust.tk: could not connect to host +inkbunny.net: could not connect to host inked-guy.de: could not connect to host inkedguy.de: could not connect to host +inkhor.se: could not connect to host inkstory.gr: did not receive HSTS header inksupply.com: did not receive HSTS header inku.ovh: did not receive HSTS header @@ -6793,21 +7359,25 @@ inkvisual.tk: could not connect to host inleaked.com: could not connect to host innerform.com: could not connect to host innit.be: could not connect to host +innobatics.com: did not receive HSTS header innophate-security.nl: could not connect to host innovamag.ca: did not receive HSTS header innovativebuildingsolutions.co.za: could not connect to host innovativeideaz.org: could not connect to host +innoventure.de: did not receive HSTS header inobun.jp: could not connect to host inondation.ch: could not connect to host +inorder.website: could not connect to host inox.io: did not receive HSTS header inoxio.com: did not receive HSTS header inoxio.de: did not receive HSTS header inplacers.ru: did not receive HSTS header -inquisitive.io: could not connect to host +inquisitive.io: did not receive HSTS header insane-bullets.com: could not connect to host insane.zone: could not connect to host inschrijfformulier.com: could not connect to host inscript.pl: did not receive HSTS header +insho.fashion: did not receive HSTS header insideofgaming.de: could not connect to host insite-feedback.com: could not connect to host insouciant.org: could not connect to host @@ -6819,12 +7389,14 @@ instacart.com: did not receive HSTS header instant-hack.com: did not receive HSTS header instant-hack.io: could not connect to host instantdev.io: could not connect to host +instantsubs.de: did not receive HSTS header instaquiz.ru: could not connect to host instasex.ch: could not connect to host institutoflordelavida.com: could not connect to host institutulcultural.ro: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] instruktor.io: could not connect to host insurance: could not connect to host +insurethebox.tk: could not connect to host int-ext-design.fr: could not connect to host integrationinc.com: did not receive HSTS header integrityingovernmentidaho.com: could not connect to host @@ -6833,36 +7405,39 @@ intel.li: could not connect to host intelbet.es: did not receive HSTS header intelbet.ro: did not receive HSTS header intelldynamics.com: could not connect to host -intelliance.eu: could not connect to host -interboursegeneva.ch: could not connect to host -interference.io: could not connect to host +intensifyrsvp.com.au: could not connect to host +interboursegeneva.ch: did not receive HSTS header +interference.io: did not receive HSTS header +interfug.de: did not receive HSTS header intergenx.co.uk: could not connect to host intergenx.com: could not connect to host intergenx.org: could not connect to host intergenx.org.uk: could not connect to host interhosts.co.za: could not connect to host interim-cto.de: could not connect to host +interiorcheapo.com: could not connect to host interiorprofesional.com.ar: max-age too low: 604800 +interiortradingco.com.au: could not connect to host interleucina.org: did not receive HSTS header interlocal.co.uk: could not connect to host interlun.com: could not connect to host intermezzo-emmerich.de: did not receive HSTS header intermezzo-emmerich.nl: did not receive HSTS header +internacao.com: did not receive HSTS header internaldh.com: could not connect to host internaut.co.za: did not receive HSTS header -internet-aukcion.info: could not connect to host internet-pornografie.de: did not receive HSTS header internetbugbounty.org: did not receive HSTS header internetcasinos.de: could not connect to host internetcensus.org: could not connect to host internetdentalalliance.com: did not receive HSTS header internetradiocharts.de: did not receive HSTS header -internetstaff.com: could not connect to host internshipandwork.com: did not receive HSTS header internshipandwork.ru: did not receive HSTS header interociter-enterprises.com: could not connect to host intersectraven.net: did not receive HSTS header interspot.nl: could not connect to host +interstellarhyperdrive.com: did not receive HSTS header interviewpipeline.co.uk: could not connect to host intervisteperstrada.com: could not connect to host intexplore.org: could not connect to host @@ -6872,18 +7447,18 @@ intimici.com.br: could not connect to host intimtoy.com.ua: could not connect to host intranetsec.fr: could not connect to host introvertedtravel.space: max-age too low: 0 -intrp.net: did not receive HSTS header -intxt.net: could not connect to host +intrp.net: could not connect to host invenio.software: could not connect to host inverselink.com: could not connect to host investcountry.com: could not connect to host investingdiary.cn: could not connect to host investingtrader.net: could not connect to host investnext.com: max-age too low: 43200 +investorloanshub.com: could not connect to host invictusmc.uk: could not connect to host -invidio.us: did not receive HSTS header invinsec.cloud: did not receive HSTS header invinsec.com: max-age too low: 86400 +invis.net: could not connect to host invite24.pro: could not connect to host invuelto.com: did not receive HSTS header iodice.org: did not receive HSTS header @@ -6896,6 +7471,7 @@ iop.intuit.com: max-age too low: 86400 iora.fr: could not connect to host iosmods.com: did not receive HSTS header iostips.ru: could not connect to host +iotfen.com: could not connect to host iotsms.io: could not connect to host ip-life.net: did not receive HSTS header ip.or.at: could not connect to host @@ -6904,12 +7480,13 @@ ipbill.org.uk: could not connect to host ipcfg.me: could not connect to host ipfp.pl: did not receive HSTS header iphonechina.net: could not connect to host +iplantom.com: could not connect to host iplife.cn: could not connect to host iplog.info: could not connect to host ipmimagazine.com: did not receive HSTS header ipmotion.ca: could not connect to host ipnetworking.net: could not connect to host -ipo-times.com: did not receive HSTS header +ipo-times.com: could not connect to host ipop.gr: did not receive HSTS header iprice.co.id: did not receive HSTS header iprice.hk: did not receive HSTS header @@ -6918,11 +7495,13 @@ iprice.ph: did not receive HSTS header iprice.sg: did not receive HSTS header iprice.vn: did not receive HSTS header ipricethailand.com: did not receive HSTS header +iprody.com: did not receive HSTS header ipsilon-project.org: did not receive HSTS header iptel.ro: could not connect to host ipuservicedesign.com: could not connect to host ipv6.watch: did not receive HSTS header ipv6cloud.club: could not connect to host +ipv6demo.de: could not connect to host ipv6only.network: could not connect to host ipvsec.nl: could not connect to host iqcn.co: could not connect to host @@ -6935,14 +7514,14 @@ irazimina.ru: could not connect to host irccloud.com: did not receive HSTS header irelandesign.com: could not connect to host irinkeby.nu: could not connect to host -irische-segenswuensche.info: did not receive HSTS header +irische-segenswuensche.info: could not connect to host irisdina.de: could not connect to host irishmusic.nu: could not connect to host irland.guide: could not connect to host irmag.ru: did not receive HSTS header irmtrudjurke.de: did not receive HSTS header irodorinet.com: max-age too low: 0 -iron-guard.net: could not connect to host +iron-guard.net: did not receive HSTS header irstaxforumsonline.com: did not receive HSTS header irugs.ch: did not receive HSTS header irugs.co.uk: did not receive HSTS header @@ -6951,17 +7530,13 @@ irukandjilabs.com: could not connect to host irun-telecom.co.uk: could not connect to host irvinepa.org: max-age too low: 10540800 is-a-furry.org: did not receive HSTS header -isaackabel.cf: could not connect to host -isaackabel.ga: could not connect to host -isaackabel.gq: could not connect to host -isaackabel.ml: could not connect to host -isaackabel.tk: could not connect to host ischool.co.jp: did not receive HSTS header isdf.me: could not connect to host isdown.cz: could not connect to host -isef-eg.com: could not connect to host +isef-eg.com: did not receive HSTS header iserv.fr: did not receive HSTS header iseulde.com: did not receive HSTS header +isfriday.com: could not connect to host ishadowsocks.ltd: could not connect to host ishillaryclintoninprisonyet.com: could not connect to host ishome.org: could not connect to host @@ -6971,11 +7546,13 @@ isisfighters.info: could not connect to host isitamor.pm: could not connect to host isitnuclearwaryet.com: could not connect to host iskai.net: did not receive HSTS header +islam.si: could not connect to host islandinthenet.com: did not receive HSTS header islandoilsupply.com: max-age too low: 300 islandpumpandtank.com: did not receive HSTS header -islandzero.net: could not connect to host -islief.com: could not connect to host +islandzero.net: did not receive HSTS header +islazia.fr: could not connect to host +isntall.us: did not receive HSTS header isocom.eu: could not connect to host isoface33.fr: did not receive HSTS header isogen5.com: could not connect to host @@ -6985,31 +7562,41 @@ ispringcloud.ru: [Exception... "Component returned failure code: 0x80004005 (NS_ issala.org: did not receive HSTS header isscouncil.com: could not connect to host isslshop.com: could not connect to host -istanbul.systems: did not receive HSTS header +istanbul.systems: could not connect to host istanbultravelguide.info: could not connect to host istaspirtslietas.lv: did not receive HSTS header -istgame.com: could not connect to host +istgame.com: did not receive HSTS header isthefieldcontrolsystemdown.com: could not connect to host istherrienstillcoach.com: could not connect to host +isv.online: did not receive HSTS header it-cave.com: could not connect to host it-go.net: did not receive HSTS header it-labor.info: did not receive HSTS header it-schwerin.de: could not connect to host +it-sysoft.com: could not connect to host itad.top: could not connect to host +itbrief.co.nz: did not receive HSTS header +itbrief.com.au: did not receive HSTS header itchimes.com: did not receive HSTS header +itchybrainscentral.com: could not connect to host itechgeek.com: max-age too low: 0 items.lv: did not receive HSTS header itemton.com: could not connect to host itfaq.nl: did not receive HSTS header itfensi.net: max-age too low: 6307200 itforcc.com: did not receive HSTS header +itilo.de: did not receive HSTS header itinsight.hu: did not receive HSTS header +itiomassagem.com.br: did not receive HSTS header itisjustnot.cricket: could not connect to host itmanie.cz: could not connect to host +itnews-bg.com: could not connect to host itos.asia: did not receive HSTS header itos.pl: did not receive HSTS header itpol.dk: did not receive HSTS header itpro-mg.de: could not connect to host +itproject.guru: did not receive HSTS header +itrack.in.th: could not connect to host itriskltd.com: did not receive HSTS header its-schindler.de: could not connect to host its-v.de: could not connect to host @@ -7022,11 +7609,12 @@ itsg-faq.de: could not connect to host itshka.rv.ua: max-age too low: 604800 itshost.ru: could not connect to host itsmejohn.org: could not connect to host -itspawned.com: max-age too low: 200 itsupport-luzern.ch: could not connect to host +ittop-gabon.com: could not connect to host itu2015.de: could not connect to host ius.io: did not receive HSTS header iuscommunity.org: did not receive HSTS header +ivanboi.com: could not connect to host ivanilla.org: could not connect to host ivanpolchenko.com: could not connect to host ivi-co.com: max-age too low: 0 @@ -7035,7 +7623,6 @@ ivi.es: max-age too low: 0 ivk.website: could not connect to host ivklombard.ru: did not receive HSTS header ivyshop.com.br: could not connect to host -ivystech.com: could not connect to host iwannarefill.com: could not connect to host iwex.swiss: could not connect to host iwilcox.me.uk: could not connect to host @@ -7056,6 +7643,7 @@ j-lsolutions.com: could not connect to host j-rickroll-a.pw: could not connect to host j0ng.xyz: could not connect to host j15t98j.co.uk: did not receive HSTS header +j8y.de: did not receive HSTS header ja-publications.com: did not receive HSTS header jaan.su: could not connect to host jaaxypro.com: could not connect to host @@ -7063,26 +7651,28 @@ jackalworks.com: could not connect to host jackdoan.com: did not receive HSTS header jackfahnestock.com: could not connect to host jackops.com: could not connect to host -jackyyf.com: could not connect to host -jacobparry.ca: did not receive HSTS header +jacobparry.ca: max-age too low: 0 jacobsenarquitetura.com: max-age too low: 5184000 jadopado.com: could not connect to host jaepinformatica.com: did not receive HSTS header jagido.de: did not receive HSTS header -jaguarwong.xyz: could not connect to host jahliveradio.com: could not connect to host jaimechanaga.com: could not connect to host jaion.ml: could not connect to host -jakebeardsley.com: could not connect to host -jakewalker.xyz: could not connect to host +jak-na-les.cz: could not connect to host +jakenbake.com: could not connect to host +jakewalker.xyz: did not receive HSTS header jakincode.army: could not connect to host jaksel.id: could not connect to host jaksi.io: did not receive HSTS header +jakubtopic.cz: could not connect to host jamanji.com.ng: could not connect to host +jamaware.org: did not receive HSTS header james-parker.com: did not receive HSTS header james.je: could not connect to host jamesandanneke.com: did not receive HSTS header jamesandpame.la: could not connect to host +jamesbradach.com: did not receive HSTS header jamesburton.london: could not connect to host jamesbywater.co.uk: could not connect to host jamesbywater.com: could not connect to host @@ -7109,13 +7699,13 @@ jan-cermak.cz: did not receive HSTS header jan-daniels.de: did not receive HSTS header jan27.org: did not receive HSTS header janario.me: could not connect to host +janebondsurety.com: did not receive HSTS header jangho.me: could not connect to host jangocloud.tk: could not connect to host janheidler.dynv6.net: could not connect to host janhermann.cz: did not receive HSTS header janking.de: could not connect to host janmachynka.cz: could not connect to host -janmg.com: could not connect to host janosh.com: did not receive HSTS header janssen.fm: could not connect to host janus-engineering.de: did not receive HSTS header @@ -7128,21 +7718,26 @@ japanbaths.com: could not connect to host japaneseemoticons.org: did not receive HSTS header japanesenames.biz: did not receive HSTS header japangids.nl: could not connect to host +japanphilosophy.com: did not receive HSTS header +japansm.com: could not connect to host japanwide.net: could not connect to host japaripark.com: could not connect to host +jape.today: could not connect to host japlex.com: could not connect to host jaqen.ch: could not connect to host jardins-utopie.net: could not connect to host jaredbates.net: did not receive HSTS header +jarl.ninja: could not connect to host jarnail.ca: could not connect to host -jaroslavc.eu: did not receive HSTS header jaroslavtrsek.cz: did not receive HSTS header +jarrodcastaing.com: did not receive HSTS header +jarrodcastaing.com.au: did not receive HSTS header jarsater.com: could not connect to host jartza.org: could not connect to host jasmineconseil.com: did not receive HSTS header jasoncosper.com: did not receive HSTS header jasonradin.com: did not receive HSTS header -jasonrobinson.me: max-age too low: 60 +jasonrobinson.me: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] jasonroe.me: did not receive HSTS header jasonwindholz.com: could not connect to host jastoria.pl: did not receive HSTS header @@ -7153,6 +7748,7 @@ javachip.win: could not connect to host javan.ga: could not connect to host javascriptlab.fr: could not connect to host javelinsms.com: could not connect to host +javfree.me: could not connect to host javiermixdjs.com: did not receive HSTS header javilacat.info: could not connect to host jawn.ca: could not connect to host @@ -7174,16 +7770,20 @@ jbfp.dk: could not connect to host jbj.co.uk: did not receive HSTS header jbn.mx: could not connect to host jbrowndesign.me: did not receive HSTS header +jcaicedo.tk: could not connect to host jccars-occasions.be: could not connect to host jcch.de: could not connect to host jccrew.org: could not connect to host jcf-office.com: did not receive HSTS header +jcolideles.com: could not connect to host jcom-communication-system.biz: could not connect to host jcor.me: could not connect to host jcoscia.com: could not connect to host -jcraft.us: did not receive HSTS header +jcraft.us: could not connect to host jctf.io: could not connect to host +jcyz.cf: could not connect to host jdav-leipzig.de: could not connect to host +jdcdirectsales.com.ph: could not connect to host jdfk.net: could not connect to host jdgonzalez95.com: did not receive HSTS header jdh8.org: did not receive HSTS header @@ -7191,7 +7791,8 @@ jdsf.tk: did not receive HSTS header jean-remy.ch: could not connect to host jebengotai.com: did not receive HSTS header jecho.cn: could not connect to host -jeepeg.com: could not connect to host +jeepeg.com: did not receive HSTS header +jeff.forsale: could not connect to host jeff.is: did not receive HSTS header jeff393.com: could not connect to host jeffersonregan.org: could not connect to host @@ -7203,18 +7804,24 @@ jekkt.com: max-age too low: 604800 jellow.nl: did not receive HSTS header jemoticons.com: did not receive HSTS header jenjoit.de: could not connect to host +jenniferchan.id.au: could not connect to host jennifercherniack.com: did not receive HSTS header +jennybeaned.com: did not receive HSTS header jens-prangenberg.de: did not receive HSTS header jens.hk: could not connect to host jensenbanden.no: could not connect to host jenssen.org: did not receive HSTS header +jeremyc.ca: could not connect to host jeremye77.com: did not receive HSTS header jeremymade.com: did not receive HSTS header +jeremyness.com: could not connect to host jeremywagner.me: did not receive HSTS header jermann.biz: did not receive HSTS header -jeroldirvin.com: could not connect to host +jeroenvanderwal.nl: did not receive HSTS header +jeroldirvin.com: did not receive HSTS header jerrypau.ca: could not connect to host jesorsenville.com: did not receive HSTS header +jessevictors.com: could not connect to host jessicah.org: could not connect to host jesuisformidable.nl: could not connect to host jesuslucas.com: did not receive HSTS header @@ -7223,11 +7830,9 @@ jetlagphotography.com: could not connect to host jeton.com: did not receive HSTS header jetsetcharge.com: could not connect to host jetsetpay.com: could not connect to host -jettlarue.com: could not connect to host jettravel.com.mt: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] jettshome.org: could not connect to host jetzt-elektromobil.de: could not connect to host -jeugdkans.nl: could not connect to host jevisite.ca: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] jewellerydesignstore.com: could not connect to host jewellerymarvels.com: did not receive HSTS header @@ -7245,7 +7850,6 @@ jhermsmeier.de: could not connect to host jia1hao.com: could not connect to host jiaidu.com: could not connect to host jiangzequn.com: could not connect to host -jiangzm.com: did not receive HSTS header jianjiantv.com: could not connect to host jiaqiang.vip: could not connect to host jichi.me: could not connect to host @@ -7258,14 +7862,16 @@ jimas.eu: did not receive HSTS header jimenacocina.com: did not receive HSTS header jimgao.tk: did not receive HSTS header jimmehcai.com: could not connect to host +jimmycai.org: could not connect to host +jimmynelson.com: did not receive HSTS header jingyuesi.com: could not connect to host jinliming.ml: could not connect to host jinmaguoji.com: could not connect to host -jinshavip.com: could not connect to host jiosongs.com: did not receive HSTS header jira.com: did not receive HSTS header jirav.io: could not connect to host jisaku-homepage.com: did not receive HSTS header +jitlab.org: could not connect to host jitsi.org: did not receive HSTS header jiyue.com: did not receive HSTS header jiyuu-ni.com: could not connect to host @@ -7276,24 +7882,28 @@ jkb.pics: could not connect to host jkbuster.com: could not connect to host jkng.eu: could not connect to host jko.works: could not connect to host +jkuvw.xyz: could not connect to host jlhmedia.com: did not receive HSTS header jm06.com: did not receive HSTS header jm22.com: could not connect to host jmb.lc: could not connect to host jmdekker.it: could not connect to host -jmoreau.ddns.net: could not connect to host +jmssg.jp: could not connect to host jmvbmx.ch: could not connect to host jn1.me: did not receive HSTS header -jncde.de: could not connect to host -joacimeldre.com: did not receive HSTS header +jncde.de: did not receive HSTS header +jncie.de: did not receive HSTS header +jncie.eu: did not receive HSTS header +jncip.de: did not receive HSTS header joakimalgroy.com: could not connect to host joaquimgoliveira.pt: could not connect to host -job.biz.tr: could not connect to host +job-offer.de: could not connect to host jobers.ch: did not receive HSTS header jobers.pt: did not receive HSTS header jobflyapp.com: could not connect to host jobmedic.com: could not connect to host jobshq.com: did not receive HSTS header +jobss.co.uk: did not receive HSTS header jobtestprep.de: max-age too low: 0 jobtestprep.dk: max-age too low: 0 jobtestprep.fr: max-age too low: 0 @@ -7305,13 +7915,12 @@ joe-pagan.com: did not receive HSTS header joearodriguez.com: could not connect to host joecod.es: could not connect to host joelgonewild.com: did not receive HSTS header -joellombardo.com: could not connect to host +joepitt.co.uk: could not connect to host joerg-wellpott.de: did not receive HSTS header joetyson.io: could not connect to host johannaojanen.com: could not connect to host johannes-bugenhagen.de: did not receive HSTS header johannes-sprink.de: could not connect to host -johannesen.tv: could not connect to host johnbrownphotography.ch: did not receive HSTS header johncardell.com: did not receive HSTS header johners.me: could not connect to host @@ -7319,12 +7928,11 @@ johngaltgroup.com: did not receive HSTS header johnhgaunt.com: did not receive HSTS header johnrom.com: could not connect to host johnsanchez.io: could not connect to host -johnsiu.com: could not connect to host johntomasowa.com: could not connect to host johnverkerk.com: could not connect to host +joinamericacorps.gov: could not connect to host jointoweb.com: could not connect to host jomp16.tk: could not connect to host -jonarcher.info: could not connect to host jonas-keidel.de: did not receive HSTS header jonasgroth.se: did not receive HSTS header jonathan.ir: could not connect to host @@ -7332,15 +7940,19 @@ jonathandowning.uk: did not receive HSTS header jonathanmassacand.ch: could not connect to host jonathanreyes.com: did not receive HSTS header jonathansanchez.pro: could not connect to host +jonathanselea.se: did not receive HSTS header jonfor.net: could not connect to host jongha.me: could not connect to host jonn.me: could not connect to host jonnichols.info: could not connect to host +jons.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] jonsno.ws: could not connect to host joostbovee.nl: did not receive HSTS header jooto.com: did not receive HSTS header jopl.org: did not receive HSTS header +jordankirby.co.uk: could not connect to host jordanp.engineer: could not connect to host +jordanscorporatelaw.com: could not connect to host jordanstrustcompany.cn: could not connect to host jordanstrustcompany.ru: could not connect to host jordikroon.nl: could not connect to host @@ -7353,7 +7965,6 @@ josahrens.me: could not connect to host josc.com.au: could not connect to host joseaveleira.es: did not receive HSTS header josecage.com: could not connect to host -josefottosson.se: max-age too low: 2592000 josephre.es: did not receive HSTS header joshi.su: could not connect to host joshplant.co.uk: could not connect to host @@ -7362,6 +7973,7 @@ joto.de: did not receive HSTS header jotpics.com: could not connect to host jottit.com: could not connect to host journalof.tech: could not connect to host +joworld.net: could not connect to host joyceclerkx.com: could not connect to host joyjohnston.ca: did not receive HSTS header joyqi.com: did not receive HSTS header @@ -7369,7 +7981,7 @@ jpaglier.com: could not connect to host jpbike.cz: did not receive HSTS header jpcrochetapparel.com: could not connect to host jpeaches.xyz: could not connect to host -jpod.cc: could not connect to host +jpgangbang.com: could not connect to host jproxx.com: did not receive HSTS header jptun.com: could not connect to host jrgold.me: could not connect to host @@ -7390,11 +8002,15 @@ ju1ro.de: did not receive HSTS header jualautoclave.com: did not receive HSTS header jualssh.com: could not connect to host juandesouza.com: did not receive HSTS header +juanhub.com: did not receive HSTS header juchheim-methode.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] +judge2020.com: did not receive HSTS header juiced.gs: did not receive HSTS header juka.pp.ua: could not connect to host juku-info.top: did not receive HSTS header +juku-wing.jp: could not connect to host julegoerke.de: did not receive HSTS header +julenlanda.com: could not connect to host juliamweber.de: could not connect to host julian-kipka.de: did not receive HSTS header julian-witusch.de: could not connect to host @@ -7403,6 +8019,8 @@ julianwallmeroth.de: could not connect to host juliaoantiguidades.com.br: could not connect to host juliawebber.co.za: could not connect to host julido.de: did not receive HSTS header +julio.jamil.nom.br: could not connect to host +juliohernandezgt.com: could not connect to host jumba.com.au: did not receive HSTS header jumbopan.com: could not connect to host jumbox.xyz: could not connect to host @@ -7414,39 +8032,41 @@ junaos.com: did not receive HSTS header junaos.xyz: did not receive HSTS header jundimax.com.br: could not connect to host junge-selbsthilfe.info: could not connect to host -jungleculture.co.za: could not connect to host +jungleculture.co.za: did not receive HSTS header junglegoat.xyz: did not receive HSTS header juniwalk.cz: could not connect to host junjung.me: could not connect to host junqtion.com: could not connect to host -jupp0r.de: did not receive HSTS header -juridiqueo.com: could not connect to host -juristas.com.br: did not receive HSTS header -juristeo.com: could not connect to host +jupp0r.de: could not connect to host +juridiqueo.com: did not receive HSTS header +juristeo.com: did not receive HSTS header jurke.com: did not receive HSTS header jurko.cz: could not connect to host +just-english.online: did not receive HSTS header just-pools.co.za: could not connect to host just2trade.com: did not receive HSTS header justiceforfathers.com: did not receive HSTS header -justiceo.org: could not connect to host -justin-tech.com: could not connect to host +justiceo.org: did not receive HSTS header justinlemay.com: could not connect to host justinrudio.com: did not receive HSTS header justlikethat.hosting: did not receive HSTS header justmy.website: did not receive HSTS header justnaw.co.uk: could not connect to host justonce.net: could not connect to host +justsome.info: did not receive HSTS header justudin.com: did not receive HSTS header justwood.cz: did not receive HSTS header justzz.xyz: could not connect to host jutella.de: did not receive HSTS header juul.xyz: could not connect to host +juventusclublugano.ch: could not connect to host juventusmania1897.com: could not connect to host juwairen.cn: could not connect to host jvn.com: did not receive HSTS header -jvoice.net: could not connect to host +jvoice.net: did not receive HSTS header jwilsson.me: could not connect to host jwolt-lx.com: could not connect to host +jxir.de: could not connect to host jxm.in: could not connect to host jysperm.me: did not receive HSTS header jznet.org: could not connect to host @@ -7454,12 +8074,16 @@ k-dev.de: could not connect to host k-rickroll-g.pw: could not connect to host k-wallet.com: did not receive HSTS header k1cp.com: could not connect to host +k33k00.com: could not connect to host k38.cc: max-age too low: 3600 ka-clan.com: could not connect to host kaanduman.com: could not connect to host kaasbijwijn.nl: did not receive HSTS header -kabinapp.com: could not connect to host +kabarlinux.id: could not connect to host +kabat-fans.cz: did not receive HSTS header +kabinapp.com: did not receive HSTS header kabuabc.com: could not connect to host +kabus.org: could not connect to host kackscharf.de: could not connect to host kadioglumakina.com.tr: did not receive HSTS header kadmec.com: did not receive HSTS header @@ -7468,6 +8092,7 @@ kahopoon.net: could not connect to host kai.cool: did not receive HSTS header kaika-facilitymanagement.de: could not connect to host kaika-hms.de: did not receive HSTS header +kainetsoft.com: could not connect to host kainz.bayern: could not connect to host kainz.be: could not connect to host kaisers.de: did not receive HSTS header @@ -7475,15 +8100,13 @@ kaiyuewu.com: could not connect to host kajlovo.cz: could not connect to host kakaomilchkuh.de: did not receive HSTS header kaketalk.com: did not receive HSTS header +kakie-gobocha.jp: could not connect to host kalami.nl: could not connect to host kaleidomarketing.com: did not receive HSTS header kaleidoskop-freiburg.de: did not receive HSTS header kalender.goip.de: could not connect to host kalilinux.tech: could not connect to host kaloix.de: could not connect to host -kam-serwis.pl: could not connect to host -kamagra-comprare.it: did not receive HSTS header -kamagra-italia.it: max-age too low: 3600 kamalame.co: could not connect to host kambodja.guide: could not connect to host kamcvicit.sk: could not connect to host @@ -7495,19 +8118,18 @@ kanada.guide: could not connect to host kanagawachuo-hospital.jp: did not receive HSTS header kanar.nl: could not connect to host kancolle.me: could not connect to host -kandalife.com: could not connect to host kandec.co.jp: did not receive HSTS header kaneo-gmbh.de: did not receive HSTS header kanganer.com: could not connect to host kangzaber.com: could not connect to host kaniklani.co.za: did not receive HSTS header -kanmitao.com: did not receive HSTS header +kanmitao.com: could not connect to host +kanotijd.nl: could not connect to host kanr.in: could not connect to host kanscooking.org: could not connect to host kantorad.io: could not connect to host kantv1.com: could not connect to host kanuvu.de: did not receive HSTS header -kanzakiranko.jp: could not connect to host kanzlei-wirtschaftsrecht.berlin: max-age too low: 600000 kaohub.com: could not connect to host kaomojis.net: did not receive HSTS header @@ -7519,15 +8141,14 @@ kapucini.si: max-age too low: 0 kaputt.com: could not connect to host kapverde.guide: could not connect to host karamna.com: could not connect to host -karanjthakkar.com: did not receive HSTS header +karamomo.net: did not receive HSTS header +karanastic.com: did not receive HSTS header karaoketonight.com: could not connect to host karatekit.co.uk: did not receive HSTS header karatorian.org: did not receive HSTS header -karenledger.ca: could not connect to host karjala-ski.ru: could not connect to host karloskontana.tk: could not connect to host karlproctor.co.uk: could not connect to host -karlstabo.se: max-age too low: 86400 karmaflux.com: did not receive HSTS header karpanhellas.com: could not connect to host kars.ooo: could not connect to host @@ -7535,8 +8156,9 @@ karting34.com: did not receive HSTS header karuneshjohri.com: could not connect to host kashdash.ca: could not connect to host kashis.com.au: max-age too low: 0 -kat.al: could not connect to host +kat.al: max-age too low: 0 katalogakci.cz: did not receive HSTS header +katata-kango.ac.jp: could not connect to host kati0.com: could not connect to host katiaetdavid.fr: could not connect to host katja-nikolic-design.de: could not connect to host @@ -7549,11 +8171,13 @@ katproxy.top: could not connect to host katrinjanke.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] kattenfun.be: did not receive HSTS header kattenfun.nl: did not receive HSTS header +katthewaffle.fr: could not connect to host katzen.me: could not connect to host kaufkraftkiel.de: could not connect to host kauperwood.ovh: could not connect to host kauplusprofesional.com: did not receive HSTS header kausch.at: could not connect to host +kausta.me: could not connect to host kavinvin.me: could not connect to host kawaiii.link: did not receive HSTS header kawaiiku.com: could not connect to host @@ -7561,17 +8185,15 @@ kawaiiku.de: could not connect to host kaydan.io: could not connect to host kayipmurekkep.com: could not connect to host kayon.cf: could not connect to host -kayscs.com: could not connect to host +kazamasion.com: did not receive HSTS header kazanasolutions.de: could not connect to host kazenojiyu.fr: did not receive HSTS header -kb3.net: did not receive HSTS header kbfl.org: could not connect to host kcluster.io: could not connect to host kd-plus.pp.ua: could not connect to host kdata.it: did not receive HSTS header kdbx.online: could not connect to host kdm-online.de: did not receive HSTS header -keaneokelley.com: could not connect to host kearney.io: could not connect to host keechain.io: could not connect to host keeley.gq: could not connect to host @@ -7587,7 +8209,6 @@ keeprubyweird.com: did not receive HSTS header kefaloniatoday.com: did not receive HSTS header keihin-chaplin.jp: did not receive HSTS header kein-fidget-spinner-werden.de: could not connect to host -keithws.net: could not connect to host kejibot.com: could not connect to host kekehouse.net: could not connect to host kellyandantony.com: could not connect to host @@ -7617,9 +8238,9 @@ keshausconsulting.com: could not connect to host keskeces.com: did not receive HSTS header kesteren.com: could not connect to host kevindekoninck.com: could not connect to host -kevinmeijer.nl: could not connect to host +kevinfoley.cc: could not connect to host +kevinfoley.org: could not connect to host kevinmoreland.com: could not connect to host -kevinmorssink.nl: could not connect to host kevinroebert.de: did not receive HSTS header kevlar.pw: did not receive HSTS header kewego.co.uk: could not connect to host @@ -7632,11 +8253,11 @@ kgb.us: could not connect to host kgregorczyk.pl: could not connect to host kgxtech.com: max-age too low: 2592000 khaganat.net: did not receive HSTS header +khmath.com: did not receive HSTS header khosla.uk: could not connect to host ki-on.net: did not receive HSTS header -kiaka.co: did not receive HSTS header +kiaka.co: could not connect to host kialo.com: did not receive HSTS header -kiapps.ovh: could not connect to host kickass-proxies.org: could not connect to host kickass.al: could not connect to host kickasstorrents.gq: could not connect to host @@ -7644,11 +8265,12 @@ kickerplaza.nl: did not receive HSTS header kid-dachau.de: did not receive HSTS header kidbacker.com: could not connect to host kidkat.cn: could not connect to host -kiel-kind.de: could not connect to host +kiehls.pt: could not connect to host kiel-media.de: did not receive HSTS header kielderweather.org.uk: did not receive HSTS header kienlen.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] kieranweightman.me: could not connect to host +kiesuwcursus.nl: did not receive HSTS header kievradio.com: could not connect to host kikuzuki.org: could not connect to host kiladera.be: did not receive HSTS header @@ -7658,44 +8280,46 @@ kimberg.co.uk: did not receive HSTS header kimberlybeautysoapcompany.com: did not receive HSTS header kimpost.org: could not connect to host kimscrazeecastles.co.uk: did not receive HSTS header -kin.life: could not connect to host kina.guide: could not connect to host kinderbuecher-kostenlos.de: did not receive HSTS header kinderjugendfreizeitverein.de: could not connect to host kinderly.co.uk: did not receive HSTS header kinderopvangengeltjes.nl: did not receive HSTS header +kinderopvangzevenbergen.nl: did not receive HSTS header kinderwagen-test24.de: could not connect to host kindlyfire.com: could not connect to host kindof.ninja: could not connect to host kinepolis-studio.ga: could not connect to host kineto.space: could not connect to host kingclass.cn: could not connect to host +kingdomcrc.org: did not receive HSTS header kingmanhall.org: could not connect to host kingpincages.com: could not connect to host kingqueen.org.uk: did not receive HSTS header kinkdr.com: could not connect to host -kinmunity.com: could not connect to host +kinmunity.com: did not receive HSTS header kinnon.enterprises: could not connect to host -kinomoto.me: could not connect to host kinow.com: did not receive HSTS header kinsmenhomelottery.com: did not receive HSTS header -kintawifi.com: could not connect to host kintoandar.com: max-age too low: 0 kintrip.com: did not receive HSTS header kintzingerfilm.de: did not receive HSTS header kionetworks.com: did not receive HSTS header -kipin.fr: could not connect to host +kipin.fr: did not receive HSTS header kipira.com: could not connect to host kiraboshi.xyz: could not connect to host kirainmoe.com: did not receive HSTS header kirara.eu: could not connect to host kirill.ws: could not connect to host +kirito.kr: could not connect to host kirkforsenate.com: could not connect to host kirkpatrickdavis.com: could not connect to host +kirstin-peters.de: could not connect to host kisa.io: could not connect to host kisalt.im: could not connect to host kiss-register.org: could not connect to host kissart.net: could not connect to host +kisskiss.ch: could not connect to host kisstyle.ru: did not receive HSTS header kisun.co.jp: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] kita.id: did not receive HSTS header @@ -7710,52 +8334,61 @@ kitestar.co.uk: did not receive HSTS header kitk.at: could not connect to host kitsostech.com: could not connect to host kitsta.com: could not connect to host +kiwi.global: could not connect to host kiwiirc.com: max-age too low: 5256000 +kiwipayment.com: could not connect to host +kiwipayments.com: could not connect to host +kiwiplace.com: could not connect to host +kix.moe: did not receive HSTS header kiyo.space: could not connect to host kizil.net: could not connect to host -kj1396.net: could not connect to host +kj1391.com: did not receive HSTS header kjaermaxi.me: did not receive HSTS header kjg-bachrain.de: could not connect to host kjoglum.me: could not connect to host kkull.tv: could not connect to host -kkzxak47.com: could not connect to host +klantenadvies.nl: did not receive HSTS header klas.or.id: did not receive HSTS header klatschreime.de: did not receive HSTS header klausimas.lt: did not receive HSTS header klauwd.com: could not connect to host klaxn.org: could not connect to host +klean-ritekc.com: did not receive HSTS header kleberstoff.xyz: could not connect to host kleertjesvoordelig.nl: could not connect to host -kleidertauschpartys.de: did not receive HSTS header +kleidertauschpartys.de: could not connect to host kleinerarchitekturfuehrer.de: could not connect to host kleinholding.com: could not connect to host +kleinserienproduktion.com: could not connect to host klempnershop.eu: did not receive HSTS header kleppe.co: could not connect to host kletterkater.com: did not receive HSTS header klicktojob.de: could not connect to host klingeletest.de: could not connect to host klingsundet.no: did not receive HSTS header -kloentrup.de: did not receive HSTS header +kliqsd.com: could not connect to host +kloentrup.de: max-age too low: 604800 klunkergarten.org: could not connect to host -klva.cz: could not connect to host +kmdev.me: did not receive HSTS header knapen.io: max-age too low: 604800 knccloud.com: could not connect to host kngk-azs.ru: could not connect to host knigadel.com: did not receive HSTS header -knightsblog.de: could not connect to host +knightsbridgegroup.org: could not connect to host knightsweep.com: could not connect to host knnet.ch: could not connect to host knowdebt.org: did not receive HSTS header +knowledgehook.com: did not receive HSTS header knowledgesnap.com: could not connect to host knowledgesnapsites.com: could not connect to host knownsec.cf: could not connect to host kobieta.guru: could not connect to host +kobolya.hu: did not receive HSTS header koddsson.com: did not receive HSTS header kodexplorer.ml: could not connect to host kodiaklabs.org: could not connect to host kodokushi.fr: could not connect to host koen.io: max-age too low: 86400 -koenleemans.nl: did not receive HSTS header koenrouwhorst.nl: did not receive HSTS header koenvdheuvel.me: could not connect to host koerperimpuls.ch: did not receive HSTS header @@ -7763,10 +8396,10 @@ koez-mangal.ch: could not connect to host koezmangal.ch: could not connect to host koik.io: could not connect to host koirala.net: could not connect to host -kojipkgs.fedoraproject.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] kokenmetaanbiedingen.nl: could not connect to host kola-entertainments.de: did not receive HSTS header kolaykaydet.com: could not connect to host +kolbeck.tk: could not connect to host kollawat.me: could not connect to host kolozsvaricsuhe.hu: did not receive HSTS header komikito.com: could not connect to host @@ -7774,6 +8407,7 @@ kompetenzwerft.de: did not receive HSTS header konata.us: could not connect to host kongbaofang.com: could not connect to host konicaprinterdriver.com: could not connect to host +koningskwartiertje.nl: could not connect to host konkurs.ba: could not connect to host kontakthuman.hu: did not receive HSTS header kontaxis.network: could not connect to host @@ -7784,21 +8418,22 @@ koordinate.net: could not connect to host koppelvlak.net: could not connect to host kopular.com: could not connect to host kori.ml: did not receive HSTS header +korinar.com: could not connect to host koriyoukai.net: did not receive HSTS header kornersafe.com: did not receive HSTS header korni22.org: could not connect to host korsanparti.org: could not connect to host kostuumstore.nl: could not connect to host kostya.net: did not receive HSTS header +kotakoo.id: could not connect to host +kotomei.moe: could not connect to host kotonehoko.net: could not connect to host kotorimusic.ga: could not connect to host kotovstyle.ru: could not connect to host -kottur.is: could not connect to host koukni.cz: did not receive HSTS header kourpe.online: could not connect to host kousaku.jp: could not connect to host kouten-jp.com: could not connect to host -kovals.sk: could not connect to host kozmik.co: could not connect to host kpdyer.com: did not receive HSTS header kpebetka.net: did not receive HSTS header @@ -7822,7 +8457,7 @@ krestanskydarek.cz: [Exception... "Component returned failure code: 0x80004005 ( kreza.de: could not connect to host kriegskindernothilfe.de: could not connect to host kriegt.es: did not receive HSTS header -krist.club: could not connect to host +krist.club: did not receive HSTS header kristjanrang.eu: did not receive HSTS header kristofferkoch.com: could not connect to host krizek.cc: did not receive HSTS header @@ -7833,6 +8468,7 @@ kroodle.nl: did not receive HSTS header krouzkyliduska.cz: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] kruegerrand-wert.de: did not receive HSTS header krunut.com: did not receive HSTS header +kryha.io: did not receive HSTS header krypteia.org: could not connect to host kryptomech.com: could not connect to host ksfh-mail.de: could not connect to host @@ -7841,10 +8477,11 @@ ksk-agentur.de: did not receive HSTS header kstan.me: could not connect to host kswcosmetics.com: could not connect to host kswriter.com: could not connect to host -kteen.info: could not connect to host +kteen.info: did not receive HSTS header ktube.yt: could not connect to host ku.io: did not receive HSTS header kuba.guide: could not connect to host +kubiwa.net: could not connect to host kubusadvocaten.nl: could not connect to host kuchenfeelisa.de: did not receive HSTS header kuchenschock.de: did not receive HSTS header @@ -7855,9 +8492,11 @@ kuehnel.org: max-age too low: 604800 kueulangtahunanak.net: could not connect to host kuko-crews.org: could not connect to host kultmobil.se: did not receive HSTS header +kum.com: could not connect to host kummerlaender.eu: did not receive HSTS header kundenerreichen.com: did not receive HSTS header kundenerreichen.de: did not receive HSTS header +kunstschule-krabax.de: did not receive HSTS header kuops.com: did not receive HSTS header kupdokuchyne.cz: could not connect to host kupelne-ptacek.sk: did not receive HSTS header @@ -7866,23 +8505,23 @@ kura.io: could not connect to host kurehun.org: could not connect to host kuro346.moe: could not connect to host kuroisalva.xyz: did not receive HSTS header -kurrietv.nl: did not receive HSTS header kursprogramisty.pl: could not connect to host kurtmclester.com: could not connect to host kurz.pw: could not connect to host kurzonline.com.br: could not connect to host kuwago.io: could not connect to host kvt.berlin: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] -kweddingplanning.com: could not connect to host +kweddingplanning.com: max-age too low: 0 +kwidz.fr: did not receive HSTS header kwikmed.eu: could not connect to host kwipi.com: did not receive HSTS header -kwok.tv: did not receive HSTS header +kwok.tv: could not connect to host kwondratsch.com: could not connect to host kxind.cn: did not receive HSTS header kyanite.co: could not connect to host kyberna.xyz: could not connect to host kykoonn.net: did not receive HSTS header -kylapps.com: could not connect to host +kylapps.com: did not receive HSTS header kyle.place: could not connect to host kylebaldw.in: did not receive HSTS header kylerwood.com: could not connect to host @@ -7890,12 +8529,15 @@ kylling.io: could not connect to host kymo.org: did not receive HSTS header kyochon.fr: could not connect to host kyonagashima.com: did not receive HSTS header +kyoto-k9.com: could not connect to host +kyoto-tomoshibi.jp: could not connect to host kyouko.nl: could not connect to host kyujin-office.net: could not connect to host kzjnet.com: could not connect to host l-rickroll-i.pw: could not connect to host l.me.uk: could not connect to host l18.io: could not connect to host +l3j.net: could not connect to host la-flora-negra.de: could not connect to host la-grande-jaugue.fr: did not receive HSTS header la-retraite-info.com: did not receive HSTS header @@ -7906,6 +8548,7 @@ labelleza.com.br: could not connect to host labfox.de: did not receive HSTS header labiblioafronebrulepas.com: could not connect to host labina.com.tr: did not receive HSTS header +labms.com.au: could not connect to host laboiteanem.fr: could not connect to host laboiteapc.fr: did not receive HSTS header labordata.io: could not connect to host @@ -7921,9 +8564,7 @@ lacasa.fr: could not connect to host lacasseroy.com: could not connect to host lacaverne.nl: could not connect to host lacentral.com: did not receive HSTS header -lachlankidson.net: could not connect to host lacledeslan.ninja: could not connect to host -lacocinadelila.com: did not receive HSTS header lacuevadechauvet.com: did not receive HSTS header ladadate.com: could not connect to host ladylikeit.com: could not connect to host @@ -7932,7 +8573,6 @@ laemen.com: did not receive HSTS header laemen.nl: could not connect to host laf.in.net: could not connect to host lafamillemusique.fr: did not receive HSTS header -lafema.de: could not connect to host laforetenchantee.ch: could not connect to host lafr4nc3.xyz: could not connect to host lagalerievirtuelle.fr: did not receive HSTS header @@ -7942,9 +8582,10 @@ laharilais.fr: did not receive HSTS header lainchan.org: did not receive HSTS header laisashop.com.br: could not connect to host lajijonencadebarbera.com: could not connect to host +lakatrop.com: could not connect to host lakefrontlittleelm.com: did not receive HSTS header -lakehavasuhouserentals.com: did not receive HSTS header -lakhesis.net: could not connect to host +lakehavasuhouserentals.com: could not connect to host +lakewoodcomputerservices.com: could not connect to host lalajj.com: could not connect to host laltroweb.it: did not receive HSTS header lamaland.ru: did not receive HSTS header @@ -7953,22 +8594,21 @@ lambdafive.co.uk: could not connect to host lamomebijou.paris: did not receive HSTS header lampl.info: could not connect to host lamtv.com.mx: could not connect to host -lan.biz.tr: could not connect to host lan2k.org: max-age too low: 86400 +lana.swedbank.se: did not receive HSTS header lanauzedesigns.com: did not receive HSTS header lanboll.com: could not connect to host -lanbyte.se: could not connect to host +lanbyte.se: did not receive HSTS header lancehoteis.com: did not receive HSTS header lancehoteis.com.br: did not receive HSTS header -lancork.net: did not receive HSTS header land-links.org: did not receive HSTS header landbetweenthelakes.us: did not receive HSTS header landell.ml: could not connect to host landgoedverkopen.nl: could not connect to host landhuisverkopen.nl: could not connect to host -landinfo.no: max-age too low: 300 landscape.canonical.com: max-age too low: 2592000 landscapingmedic.com: did not receive HSTS header +langatang.com: could not connect to host langenbach.rocks: could not connect to host langendorf-ernaehrung-training.de: could not connect to host langendries.eu: did not receive HSTS header @@ -7980,17 +8620,20 @@ lanzainc.xyz: could not connect to host laobox.fr: could not connect to host laohei.org: could not connect to host laospage.com: did not receive HSTS header +lapetition.be: could not connect to host laplaceduvillage.net: could not connect to host laquack.com: could not connect to host lared.ovh: did not receive HSTS header laredsemanario.com: could not connect to host -larky.top: could not connect to host +larsgujord.no: did not receive HSTS header +larsmerke.de: did not receive HSTS header lasepiataca.com: did not receive HSTS header lasercloud.ml: could not connect to host lashstuff.com: did not receive HSTS header lasnaves.com: did not receive HSTS header -lasst-uns-beten.de: did not receive HSTS header +lasst-uns-beten.de: could not connect to host latable-bowling-vire.fr: did not receive HSTS header +latabledebry.be: could not connect to host latamarissiere.eu: could not connect to host lateliercantaldeco.fr: could not connect to host latelierdekathy.com: could not connect to host @@ -8002,6 +8645,7 @@ lathamlabs.org: could not connect to host lathen-wahn.de: did not receive HSTS header latinred.com: could not connect to host latitude42technology.com: did not receive HSTS header +latour-managedcare.ch: could not connect to host latus.xyz: could not connect to host laufcampus.com: did not receive HSTS header laufseminare-laufreisen.com: did not receive HSTS header @@ -8011,15 +8655,18 @@ laurelspaandlash.com: did not receive HSTS header laureltv.org: did not receive HSTS header laurent-e-levy.com: did not receive HSTS header lausitzer-widerstand.de: could not connect to host +lavabit.no: could not connect to host lavapot.com: did not receive HSTS header laventainnhotel-mailing.com: could not connect to host lavine.ch: did not receive HSTS header lavito.cz: could not connect to host lawly.org: could not connect to host +lawrence-institute.com: could not connect to host laxatus.com: could not connect to host laxiongames.es: did not receive HSTS header layer8.tk: could not connect to host laymans911.info: could not connect to host +lazapateriahandmade.pe: did not receive HSTS header lazerus.net: could not connect to host lazulu.com: could not connect to host lazytux.de: did not receive HSTS header @@ -8031,8 +8678,10 @@ lbrt.xyz: could not connect to host lclarkpdx.com: could not connect to host lcti.biz: could not connect to host ldarby.me.uk: could not connect to host +ldcraft.pw: could not connect to host leadbook.ru: max-age too low: 604800 leadership9.com: could not connect to host +leadgenie.me: could not connect to host leakedminecraft.net: could not connect to host leakreporter.net: could not connect to host leaks.directory: could not connect to host @@ -8043,9 +8692,9 @@ learn-smart.uk: did not receive HSTS header learnedhacker.com: could not connect to host learnedovo.com: did not receive HSTS header learnfrenchfluently.com: could not connect to host -learningman.top: did not receive HSTS header learningorder.com: could not connect to host lebal.se: could not connect to host +lebosse.me: could not connect to host lebrun.org: could not connect to host lecourtier.fr: did not receive HSTS header led-tl-wereld.nl: did not receive HSTS header @@ -8053,6 +8702,7 @@ leddruckalarm.de: did not receive HSTS header ledgerscope.net: could not connect to host ledhouse.sk: did not receive HSTS header ledlampor365.se: could not connect to host +ledshop.mx: did not receive HSTS header leebiblestudycentre.net: could not connect to host leebiblestudycentre.org: could not connect to host leefindlow.com: could not connect to host @@ -8061,6 +8711,7 @@ leen.io: could not connect to host leerkotte.eu: could not connect to host leetsaber.com: did not receive HSTS header legal.farm: could not connect to host +legalcontrol.info: could not connect to host legaleus.co.uk: could not connect to host legalisepeacebloom.com: could not connect to host legalrobot-uat.com: could not connect to host @@ -8072,7 +8723,6 @@ legitaxi.com: did not receive HSTS header legymnase.eu: did not receive HSTS header lehtinen.xyz: could not connect to host leighneithardt.com: could not connect to host -leilautourdumon.de: did not receive HSTS header leinir.dk: did not receive HSTS header leitner.com.au: did not receive HSTS header lelehei.com: could not connect to host @@ -8081,8 +8731,6 @@ lelongbank.com: did not receive HSTS header lelubre.info: did not receive HSTS header lemon.co: could not connect to host lemonrockbiketours.com: did not receive HSTS header -lemonthy.ca: could not connect to host -lemonthy.com: could not connect to host lemp.io: did not receive HSTS header lenders.direct: could not connect to host lengyelnyelvoktatas.hu: could not connect to host @@ -8111,21 +8759,24 @@ lerlivros.online: could not connect to host lerner.moscow: could not connect to host les-corsaires.net: could not connect to host les-voitures-electriques.com: max-age too low: 2592000 +lesbiansslaves.com: could not connect to host +lesbofight.com: could not connect to host lescomptoirsdepierrot.com: could not connect to host lesdouceursdeliyana.com: could not connect to host lesecuadors.com: did not receive HSTS header lesformations.net: did not receive HSTS header lesh.eu: could not connect to host -lesliekearney.com: could not connect to host +lesjardinsdubanchet.fr: could not connect to host +lesliekearney.com: did not receive HSTS header lesperlesdunet.fr: could not connect to host lesquatredauphins.fr: did not receive HSTS header lesquerda.cat: did not receive HSTS header lessing.consulting: did not receive HSTS header +let-go.cc: could not connect to host letempsdunefleur.be: could not connect to host leter.io: did not receive HSTS header lethbridgecoffee.com: did not receive HSTS header letitfly.me: could not connect to host -letraba.com: could not connect to host letras.mus.br: did not receive HSTS header letreview.ph: could not connect to host letsgetintouch.com: could not connect to host @@ -8150,11 +8801,11 @@ lezdomsm.com: could not connect to host lfaz.org: could not connect to host lfullerdesign.com: could not connect to host lg21.co: could not connect to host +lgbtqventures.com: could not connect to host lgiswa.com.au: did not receive HSTS header lgrs.com.au: did not receive HSTS header lgsg.us: could not connect to host lgts.se: could not connect to host -lhalbert.xyz: could not connect to host lhasaapso.com.br: could not connect to host lheinrich.com: could not connect to host lheinrich.de: did not receive HSTS header @@ -8173,11 +8824,12 @@ lianyexiuchang.in: could not connect to host liaoshuma.com: could not connect to host liaozheqi.cn: could not connect to host liaronce.win: could not connect to host +liautard.fr: could not connect to host libanco.com: could not connect to host libdeer.so: could not connect to host libertas-tech.com: could not connect to host libertins.date: did not receive HSTS header -libertyrp.org: did not receive HSTS header +libertyrp.org: could not connect to host libfte.org: did not receive HSTS header librairie-asie.com: did not receive HSTS header library.linode.com: did not receive HSTS header @@ -8189,6 +8841,7 @@ liceo.cn: did not receive HSTS header liceserv.com: could not connect to host lichess4545.com: did not receive HSTS header lichess4545.tv: did not receive HSTS header +lickmypussy.us: could not connect to host lidl-selection.at: did not receive HSTS header liduan.com: could not connect to host liebach.me: did not receive HSTS header @@ -8198,12 +8851,14 @@ liehuojun.com: could not connect to host liemen.net: did not receive HSTS header lietaer.eu: did not receive HSTS header life-time.nl: did not receive HSTS header -lifecoachproviders.com: did not receive HSTS header +lifecoach.tw: did not receive HSTS header +lifecoachproviders.com: could not connect to host lifeguard.aecom.com: did not receive HSTS header lifeinitsownway.com: could not connect to host -lifeinsurances.pro: could not connect to host -lifeinsurances24.com: could not connect to host +lifeinsurances.pro: did not receive HSTS header +lifeinsurances24.com: did not receive HSTS header lifemarque.co.uk: did not receive HSTS header +lifenexto.com: could not connect to host lifeng.us: did not receive HSTS header lifeskillsdirect.com: did not receive HSTS header lifestyler.me: could not connect to host @@ -8215,7 +8870,7 @@ lightning-ashe.com: did not receive HSTS header lightnovelsekai.com: could not connect to host lightpaste.com: could not connect to host lighttherapydevice.com: did not receive HSTS header -lightworx.io: did not receive HSTS header +lightworx.io: could not connect to host lignemalin.com: could not connect to host lignemax.com: did not receive HSTS header lignenet.com: did not receive HSTS header @@ -8223,30 +8878,30 @@ like.lgbt: could not connect to host likenosis.com: could not connect to host lila.pink: did not receive HSTS header lilapmedia.com: could not connect to host +liliang13.com: could not connect to host lilismartinis.com: could not connect to host -lillpopp.eu: did not receive HSTS header +lillpopp.eu: max-age too low: 10 lilpwny.com: could not connect to host lilycms.com: could not connect to host lilygreen.co.za: did not receive HSTS header limalama.eu: max-age too low: 1 limeyeti.com: could not connect to host -limiteddata.co.uk: did not receive HSTS header -limitget.com: could not connect to host +limiteddata.co.uk: could not connect to host +limitget.com: did not receive HSTS header limodo-shop.de: did not receive HSTS header limpens.net: did not receive HSTS header limpido.it: could not connect to host +lincsbouncycastlehire.co.uk: did not receive HSTS header lindberg.io: did not receive HSTS header -lindholmen.club: did not receive HSTS header lineauniformes.com.br: could not connect to host linext.cn: could not connect to host lingerie.net.br: did not receive HSTS header lingerielovers.com.br: did not receive HSTS header -lingerieonline.com.br: did not receive HSTS header +lingerieonline.com.br: could not connect to host lingolia.com: did not receive HSTS header lingros-test.tk: could not connect to host lingting.vip: could not connect to host linguaquote.com: did not receive HSTS header -linguatrip.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] linhaoyi.com: could not connect to host link.ba: could not connect to host linkage.ph: did not receive HSTS header @@ -8258,9 +8913,11 @@ linley.de: could not connect to host linmi.cc: did not receive HSTS header linno.me: could not connect to host linorman1997.me: could not connect to host +linostassi.net: could not connect to host linpx.com: could not connect to host linux-admin-california.com: could not connect to host linux-mint.cz: could not connect to host +linux.army: could not connect to host linux.sb: could not connect to host linuxandstuff.de: could not connect to host linuxcode.net: could not connect to host @@ -8272,9 +8929,10 @@ linuxmint.cz: could not connect to host linuxmonitoring.net: could not connect to host linvx.org: did not receive HSTS header linxmind.eu: could not connect to host -lionlyrics.com: could not connect to host +lipo.lol: could not connect to host liquid.solutions: did not receive HSTS header liquidcomm.net: could not connect to host +liquidwarp.net: could not connect to host liquimoly.market: did not receive HSTS header liquorsanthe.in: could not connect to host lisaco.de: could not connect to host @@ -8293,21 +8951,23 @@ little.pw: could not connect to host littledisney.ro: did not receive HSTS header littlefreelibrary.org: did not receive HSTS header littlelife.co.uk: did not receive HSTS header -littleqiu.net: could not connect to host littleservice.cn: could not connect to host +littleskin.cn: did not receive HSTS header liud.im: could not connect to host liujunyang.com: did not receive HSTS header liukang.tech: could not connect to host -liushuyu.tk: could not connect to host liv3ly.com: did not receive HSTS header livechatlady.info: did not receive HSTS header livedemo.io: could not connect to host livej.am: could not connect to host +livejasmin.dk: could not connect to host liverewrite.com: could not connect to host +livesearch-fukuoka.com: did not receive HSTS header liviababynet.com.br: could not connect to host livinghealthywithchocolate.com: did not receive HSTS header livrariahugodesaovitor.com.br: could not connect to host lixiang.one: could not connect to host +lixiaojiang.ga: could not connect to host lixingcong.com: could not connect to host liyang.pro: did not receive HSTS header lizzythepooch.com: did not receive HSTS header @@ -8316,14 +8976,16 @@ llamasweet.tech: could not connect to host lll.st: could not connect to host llslb.com: could not connect to host llvm.us: could not connect to host +lmcm.io: could not connect to host lmrcouncil.gov: could not connect to host ln.io: could not connect to host lnbeauty.ru: max-age too low: 0 lnoldan.com: could not connect to host -loacg.com: could not connect to host +loacg.com: did not receive HSTS header loadingdeck.com: did not receive HSTS header loadso.me: could not connect to host loafbox.com: could not connect to host +loafhead.me: could not connect to host loanmatch.sg: could not connect to host loansonline.today: could not connect to host loanstreet.be: could not connect to host @@ -8333,12 +8995,14 @@ lobosdomain.no-ip.info: could not connect to host lobste.rs: did not receive HSTS header locais.org: could not connect to host localchum.com: could not connect to host +localdata.us: did not receive HSTS header localdrive.me: could not connect to host localnetwork.nz: could not connect to host location-fichier-email.com: could not connect to host locationvoitureautriche.com: could not connect to host +locationvoiturecorse.net: could not connect to host locationvoiturefinlande.com: could not connect to host -locationvoitureirlande.com: could not connect to host +locationvoitureirlande.com: did not receive HSTS header locationvoitureislande.com: could not connect to host locationvoiturenorvege.com: could not connect to host locationvoiturepaysbas.com: could not connect to host @@ -8348,7 +9012,7 @@ locker3.com: could not connect to host locksmithrandburg24-7.co.za: could not connect to host locksport.org.nz: could not connect to host locktheirphone.com: could not connect to host -lockyourcomputer.pw: did not receive HSTS header +lockyourcomputer.pw: could not connect to host locomotive.ca: did not receive HSTS header locomotive.net.br: could not connect to host locvis.ru: did not receive HSTS header @@ -8359,7 +9023,6 @@ loftboard.eu: could not connect to host log2n.uk: could not connect to host logario.com.br: could not connect to host logcat.info: could not connect to host -logfile.at: did not receive HSTS header logfile.ch: did not receive HSTS header logic8.ml: could not connect to host logicaladvertising.com: could not connect to host @@ -8378,6 +9041,8 @@ lognot.net: could not connect to host logymedia.com: could not connect to host loisircreatif.net: did not receive HSTS header lojadocristaozinho.com.br: did not receive HSTS header +lojadoprazer.com.br: could not connect to host +lojahunamarcenaria.com.br: could not connect to host lojashowdecozinha.com.br: could not connect to host lojasviavento.com.br: could not connect to host lojavalcapelli.com.br: could not connect to host @@ -8386,13 +9051,18 @@ loli.vip: could not connect to host lolicon.info: could not connect to host lolicore.ch: could not connect to host lolidunno.com: could not connect to host +lolis.stream: could not connect to host lollaconcept.com.br: could not connect to host +lonal.com: could not connect to host +lonasdigital.com: did not receive HSTS header lonbali.com: did not receive HSTS header londoncalling.co: did not receive HSTS header +londonkan.jp: could not connect to host londonlanguageexchange.com: could not connect to host londonseedcentre.co.uk: could not connect to host lonerwolf.com: did not receive HSTS header longboarding-ulm.de: could not connect to host +longtaitouwang.com: did not receive HSTS header look-at-my.site: could not connect to host lookout.com: did not receive HSTS header looktothestars.org: did not receive HSTS header @@ -8411,10 +9081,10 @@ lostarq.com: could not connect to host lostg.com: did not receive HSTS header lostinsecurity.com: could not connect to host lostinweb.eu: could not connect to host +lostwithdan.com: could not connect to host loteks.de: did not receive HSTS header lothai.re: did not receive HSTS header lothuytinhsi.com: could not connect to host -lotl.ru: could not connect to host lotos-ag.ch: did not receive HSTS header lotsencafe.de: did not receive HSTS header lottosonline.com: did not receive HSTS header @@ -8436,6 +9106,7 @@ lovelycorral.com: did not receive HSTS header lovelyfriends.org: did not receive HSTS header lovemen.cc: did not receive HSTS header lovemysafetynet.com: did not receive HSTS header +loveread-ec.appspot.com: did not receive HSTS header loveto.at: could not connect to host lovingpenguin.com: did not receive HSTS header lowhangingfruitgrabber.com: could not connect to host @@ -8444,10 +9115,12 @@ lowtherpavilion.co.uk: did not receive HSTS header loxis.be: did not receive HSTS header loyaleco.it: could not connect to host loyaltech.ch: could not connect to host +lpacademy.com.br: could not connect to host lpak.nl: could not connect to host lpgram.ga: could not connect to host lpm-uk.com: did not receive HSTS header lrhsclubs.com: could not connect to host +lrhstsa.com: could not connect to host ls-a.org: did not receive HSTS header ls-reallife.de: did not receive HSTS header ls-rp.es: did not receive HSTS header @@ -8467,21 +9140,24 @@ lubot.net: could not connect to host lucas-garte.com: did not receive HSTS header lucascantor.com: did not receive HSTS header lucascodes.com: could not connect to host -lucasgaland.com: could not connect to host +lucassoler.com.ar: could not connect to host lucaterzini.com: could not connect to host lucidlogs.com: could not connect to host +luckydog.pw: could not connect to host luckystarfishing.com: did not receive HSTS header luclu7.pw: could not connect to host +lucysan.net: could not connect to host +ludum.pl: could not connect to host ludwig.click: did not receive HSTS header lufthansaexperts.com: max-age too low: 2592000 luis-checa.com: could not connect to host -luisgf.es: could not connect to host luisv.me: could not connect to host luk.photo: could not connect to host lukasunger.cz: could not connect to host lukasunger.net: could not connect to host lukaszdolan.com: did not receive HSTS header lukasztkacz.com: could not connect to host +lukem.eu: could not connect to host lukeng.me: could not connect to host lukonet.com: did not receive HSTS header luludapomerania.com: could not connect to host @@ -8490,7 +9166,7 @@ luma.pink: could not connect to host lumd.me: could not connect to host lumer.tech: could not connect to host lumi.do: did not receive HSTS header -luminancy.com: could not connect to host +luminancy.com: did not receive HSTS header lunapatch.com: max-age too low: 7889238 lunarift.com: could not connect to host lunarrift.net: could not connect to host @@ -8500,7 +9176,7 @@ lunight.ml: could not connect to host luno.io: could not connect to host luody.info: could not connect to host luoe.ml: could not connect to host -luolikong.vip: could not connect to host +luolikong.vip: did not receive HSTS header luom.net: could not connect to host luoxiao.im: could not connect to host luoxingyu.ml: could not connect to host @@ -8509,28 +9185,31 @@ lusis.fr: did not receive HSTS header lusis.net: could not connect to host lustrumxi.nl: could not connect to host luther.fi: could not connect to host -luxcraft.eng.br: could not connect to host luxe-it.co.uk: could not connect to host luxinmo.com: did not receive HSTS header -luxonetwork.com: did not receive HSTS header +luxonetwork.com: could not connect to host luxus-russen.de: could not connect to host luzeshomologadas.com.br: could not connect to host +luzfaltex.com: did not receive HSTS header +lwhate.com: could not connect to host lycly.top: could not connect to host lydia-und-simon.de: could not connect to host -lydiagorstein.com: could not connect to host +lydiagorstein.com: did not receive HSTS header lylares.com: did not receive HSTS header +lynkos.com: did not receive HSTS header lyonelkaufmann.ch: did not receive HSTS header -lyonl.com: could not connect to host +lyonl.com: did not receive HSTS header lyscnd.com: could not connect to host lysergion.com: could not connect to host lyuba.fr: could not connect to host -lyukaacom.ru: could not connect to host +lz.sb: could not connect to host lzahq.tech: did not receive HSTS header lzkill.com: did not receive HSTS header lzqii.cn: could not connect to host lzzr.me: did not receive HSTS header m-ali.xyz: did not receive HSTS header m-generator.com: could not connect to host +m-idea.jp: could not connect to host m-rickroll-v.pw: could not connect to host m-warrior.tk: could not connect to host m.gparent.org: could not connect to host @@ -8547,7 +9226,6 @@ maartenprovo.be: did not receive HSTS header maartenterpstra.xyz: could not connect to host mac-torrents.me: did not receive HSTS header mac-world.pl: did not receive HSTS header -mac.biz.tr: could not connect to host macandtonic.com: did not receive HSTS header macbolo.com: could not connect to host macchaberrycream.com: could not connect to host @@ -8556,15 +9234,18 @@ macdj.tk: could not connect to host macedopesca.com.br: did not receive HSTS header macgeneral.de: did not receive HSTS header mach1club.com: did not receive HSTS header +machinelearningjavascript.com: could not connect to host mack.space: could not connect to host macleodnc.com: did not receive HSTS header macsandcheesedreams.com: could not connect to host +macstore.pe: did not receive HSTS header macustar.eu: did not receive HSTS header -madandpissedoff.com: could not connect to host +madandpissedoff.com: did not receive HSTS header madcatdesign.de: did not receive HSTS header maddin.ga: could not connect to host madebyfalcon.co.uk: did not receive HSTS header madebymagnitude.com: did not receive HSTS header +madeglobal.com: did not receive HSTS header madeinorder.com: did not receive HSTS header madeintucson.org: could not connect to host mademoiselle-emma.be: could not connect to host @@ -8572,6 +9253,7 @@ mademoiselle-emma.fr: could not connect to host maderwin.com: did not receive HSTS header madesoftware.com.br: could not connect to host madnetwork.org: could not connect to host +madokami.net: could not connect to host madpeople.net: max-age too low: 2592000 madrants.net: could not connect to host madweb.design: did not receive HSTS header @@ -8580,17 +9262,17 @@ mafiareturns.com: max-age too low: 2592000 magazinedabeleza.net: could not connect to host magebankin.com: did not receive HSTS header magenx.com: did not receive HSTS header +magi.systems: could not connect to host magia360.com: did not receive HSTS header -magical.rocks: could not connect to host magicball.co: could not connect to host +magieblanche.fr: did not receive HSTS header magnacumlaude.co: could not connect to host magneticanvil.com: did not receive HSTS header magyarokegyhelyen.hu: did not receive HSTS header mahamed91.pw: could not connect to host mahansexcavating.com: did not receive HSTS header mahfouzadedimeji.com: did not receive HSTS header -mahraartisan.com: max-age too low: 7889238 -maidofhonorcleaning.net: max-age too low: 200 +mahraartisan.com: could not connect to host maik-mahlow.de: could not connect to host mail-settings.google.com: did not receive HSTS header (error ignored - included regardless) mail.google.com: did not receive HSTS header (error ignored - included regardless) @@ -8602,6 +9284,7 @@ mailhost.it: could not connect to host mailing-femprendedores.com: did not receive HSTS header mailing-jbgg.com: could not connect to host mailon.ga: could not connect to host +mailpenny.com: could not connect to host main-street-seo.com: did not receive HSTS header main-unit.com: could not connect to host maintainerheaven.ch: could not connect to host @@ -8614,11 +9297,13 @@ make-pizza.info: could not connect to host makedonien.guide: could not connect to host makeit-so.de: could not connect to host makeitdynamic.com: could not connect to host +makemejob.com: could not connect to host makemyvape.co.uk: max-age too low: 7889238 makerstuff.net: did not receive HSTS header makeshiftco.de: did not receive HSTS header makeuplove.nl: could not connect to host -makeyourank.com: max-age too low: 200 +makeyourlaws.org: could not connect to host +makinen.ru: could not connect to host malamutedoalasca.com.br: could not connect to host maldiverna.guide: could not connect to host maleexcel.com: did not receive HSTS header @@ -8629,39 +9314,44 @@ malfait.nl: could not connect to host malgraph.net: could not connect to host malibubeachrecoverycenter.com: could not connect to host maljaars-media.nl: could not connect to host +malkaso.com.ua: could not connect to host +mallner.me: could not connect to host malmstroms-co.se: could not connect to host malone.link: could not connect to host +malte-kiefer.de: did not receive HSTS header maltes.website: could not connect to host malvy.kiev.ua: could not connect to host -malware.watch: did not receive HSTS header -malwaretips.com: did not receive HSTS header malwre.io: could not connect to host maly.io: did not receive HSTS header malya.fr: could not connect to host mamacobaby.com: could not connect to host +mamadoma.com.ua: could not connect to host mamaison.io: could not connect to host mamastore.eu: could not connect to host mamaxi.org: did not receive HSTS header +mammeitalianeavienna.com: could not connect to host mammothmail.com: could not connect to host mammothmail.net: could not connect to host mammothmail.org: could not connect to host mammut.space: could not connect to host mamochka.org.ua: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] +mamout.xyz: could not connect to host +manaboutahor.se: could not connect to host manage.zenpayroll.com: did not receive HSTS header manage4all.com: could not connect to host manageall.de: could not connect to host managed-varnish.de: did not receive HSTS header manageforall.com: could not connect to host manageforall.de: could not connect to host +management-ethics.com: did not receive HSTS header managemynetsuite.com: did not receive HSTS header -managewp.org: could not connect to host -manalu.cz: did not receive HSTS header +manalu.cz: could not connect to host manantial.mx: could not connect to host manav-it.de: could not connect to host mandala-ausmalbilder.de: did not receive HSTS header mandm.servebeer.com: could not connect to host mandpress.com: did not receive HSTS header -mangazuki.co: did not receive HSTS header +mangazuki.co: could not connect to host maniadeprazer.com.br: could not connect to host manifestbin.com: did not receive HSTS header manipulatedtme.com: could not connect to host @@ -8676,25 +9366,31 @@ manova.cz: could not connect to host mansfieldplacevt.com: did not receive HSTS header manshop24.com: could not connect to host mansion-note.com: did not receive HSTS header +mansiontech.cn: did not receive HSTS header manududu.com.br: could not connect to host -manuel-schefczyk.de: could not connect to host -manylots.ru: could not connect to host +manuelrueger.de: could not connect to host +manutrol.com.br: did not receive HSTS header +maomaobt.com: did not receive HSTS header maomaofuli.vip: could not connect to host maosi.xin: could not connect to host -mapasmundi.com.br: could not connect to host maple5.com: did not receive HSTS header maplenorth.co: did not receive HSTS header mapresidentielle.fr: did not receive HSTS header +maquillage-permanent-tatoo.com: did not receive HSTS header maranatha.pl: did not receive HSTS header marbinvest.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] +marc-schlagenhauf.de: could not connect to host +marcaixala.me: could not connect to host marcberman.co: could not connect to host marcbuehlmann.com: did not receive HSTS header marcelmarnitz.com: could not connect to host marcelparra.com: could not connect to host -marcelsiegert.com: could not connect to host +marcelwiedemeier.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] marchagen.nl: did not receive HSTS header marche-nordic-jorat.ch: could not connect to host marchhappy.tech: did not receive HSTS header +marcianoandtopazio.com: could not connect to host +marco-kretz.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] marco01809.net: could not connect to host marcoececilia.it: did not receive HSTS header marcofinke.de: could not connect to host @@ -8704,12 +9400,15 @@ marcosteixeira.tk: could not connect to host marcschlagenhauf.de: could not connect to host marcus-scheffler.com: did not receive HSTS header marcush.de: could not connect to host +marcusserver.synology.me: could not connect to host mardelcupon.com: could not connect to host mare92.cz: could not connect to host +mareklecian.cz: did not receive HSTS header margaretrosefashions.co.uk: could not connect to host mariacristinadoces.com.br: did not receive HSTS header mariannematthew.com: could not connect to host marianwehlus.de: did not receive HSTS header +mariaolesen.dk: could not connect to host marie-curie.fr: could not connect to host marie-elisabeth.dk: did not receive HSTS header marie-en-provence.com: did not receive HSTS header @@ -8721,10 +9420,11 @@ mark-armstrong-gaming.com: could not connect to host markayapilandirma.com: could not connect to host markcp.me: could not connect to host market.android.com: did not receive HSTS header (error ignored - included regardless) -marketgot.com: could not connect to host +marketgot.com: did not receive HSTS header marketing-advertising.eu: could not connect to host marketingdesignu.cz: could not connect to host marketingromania.ro: did not receive HSTS header +marketio.co: could not connect to host markllego.com: could not connect to host marko-fenster24.de: did not receive HSTS header markorszulak.com: did not receive HSTS header @@ -8734,7 +9434,6 @@ markrobin.de: did not receive HSTS header marksill.com: could not connect to host marktboten.de: did not receive HSTS header markusabraham.com: did not receive HSTS header -markuskeppeler.no-ip.biz: could not connect to host markusueberallassetmanagement.de: could not connect to host markusueberallconsulting.de: could not connect to host markusweimar.de: did not receive HSTS header @@ -8743,6 +9442,7 @@ marleyresort.com: did not receive HSTS header marqperso.ch: could not connect to host marquepersonnelle.ch: could not connect to host marriottvetcareers.com: could not connect to host +marsatapp.com: could not connect to host marshut.net: could not connect to host martialc.be: could not connect to host martiert.com: could not connect to host @@ -8757,21 +9457,26 @@ martinp.no: could not connect to host martinrogalla.com: did not receive HSTS header martins.im: could not connect to host marumagic.com: did not receive HSTS header -marvinkeller.de: did not receive HSTS header +marvinkeller.de: could not connect to host marxist.party: could not connect to host marykshoup.com: could not connect to host +masa-hou.com: did not receive HSTS header masa-yoga.com: did not receive HSTS header masa.li: could not connect to host +masaze-hanka.cz: could not connect to host +maservant.net: could not connect to host mashek.net: could not connect to host mashnew.com: could not connect to host masjidtawheed.net: did not receive HSTS header maskinkultur.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] maskt.pw: could not connect to host +massagelimaperu.com: did not receive HSTS header massivum.de: did not receive HSTS header massot.eu: did not receive HSTS header mastd.fr: could not connect to host mastd.onl: could not connect to host masteragenasia.com: did not receive HSTS header +masteragenasia.net: did not receive HSTS header masterapi.ninja: did not receive HSTS header masterhaus.bg: did not receive HSTS header masteringtheterminal.com: did not receive HSTS header @@ -8789,6 +9494,7 @@ mastodon.fun: could not connect to host mastodon.my: could not connect to host mastodon.org.uk: did not receive HSTS header mastodon.pl: did not receive HSTS header +mastodon.top: did not receive HSTS header mastodones.club: could not connect to host masty.nl: could not connect to host masumreza.tk: could not connect to host @@ -8798,11 +9504,11 @@ matatall.com: did not receive HSTS header maternalsafety.org: did not receive HSTS header mateusmeyer.com.br: could not connect to host mateuszpilszek.pl: could not connect to host -matheo-schefczyk.de: could not connect to host mathers.ovh: did not receive HSTS header mathias.re: did not receive HSTS header +mathieui.net: could not connect to host mathijskingma.nl: could not connect to host -matildajaneclothing.com: did not receive HSTS header +mathis.com.tr: did not receive HSTS header matillat.ovh: did not receive HSTS header matlabjo.ir: could not connect to host matomeplus.co: could not connect to host @@ -8812,17 +9518,20 @@ matrip.de: could not connect to host matrix.ac: could not connect to host matrixcheats.net: could not connect to host matsuz.com: did not receive HSTS header +matt-brooks.com: could not connect to host matt.tf: did not receive HSTS header mattandreko.com: did not receive HSTS header mattberryman.com: did not receive HSTS header matterconcern.com: could not connect to host matthew-carson.info: could not connect to host matthewemes.com: did not receive HSTS header +matthewgrow.com: did not receive HSTS header matthewprenger.com: could not connect to host matthewtester.com: did not receive HSTS header matthiassteen.be: could not connect to host matthiasweiler.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] -mattisam.com: could not connect to host +mattia98.org: could not connect to host +mattisam.com: did not receive HSTS header mattressinsider.com: max-age too low: 3153600 mattwb65.com: did not receive HSTS header matty.digital: did not receive HSTS header @@ -8834,6 +9543,7 @@ maurus-automation.de: did not receive HSTS header mausi.co: did not receive HSTS header mavisang.cf: could not connect to host mawe.red: could not connect to host +maxhoechtl.at: could not connect to host maxhorvath.com: could not connect to host maxibanki.ovh: could not connect to host maxicore.co.za: could not connect to host @@ -8847,13 +9557,13 @@ maya.mg: could not connect to host maybeul.com: could not connect to host maynardnetworks.com: could not connect to host mayoristassexshop.com: did not receive HSTS header +maze.design: did not receive HSTS header mazurlabs.tk: could not connect to host mazyun.com: did not receive HSTS header mazz-tech.com: could not connect to host mbanq.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] mbconsultancy.nu: did not receive HSTS header mbdrogenbos-usedcars.be: could not connect to host -mbsec.net: could not connect to host mbwemmel-usedcars.be: could not connect to host mc81.com: did not receive HSTS header mca2017.org: did not receive HSTS header @@ -8861,34 +9571,37 @@ mcadmin.net: could not connect to host mcard.vn: did not receive HSTS header mcb-bank.com: did not receive HSTS header mcc.re: could not connect to host -mccarty.io: did not receive HSTS header +mccarty.io: could not connect to host mccordworks.com: did not receive HSTS header mcdanieldevelopmentservices.com: could not connect to host mcdonalds.ru: did not receive HSTS header mcga.media: could not connect to host mcgavocknissanwichitaparts.com: could not connect to host -mchopkins.net: could not connect to host +mchan.us: did not receive HSTS header mcideas.tk: could not connect to host mcjackk77.com: could not connect to host mckinley1.com: could not connect to host mckinleytk.com: could not connect to host mclab.su: max-age too low: 2592000 mclist.it: could not connect to host -mcmillansedationdentistry.com: did not receive HSTS header mcnoobs.pro: could not connect to host mcooperlaw.com: did not receive HSTS header +mcqyy.com: could not connect to host mcsa-usa.org: could not connect to host +mcsniper.co: could not connect to host mcsnovatamabayan.com: could not connect to host +mctherealm.net: could not connect to host mcuexchange.com: did not receive HSTS header mcuong.tk: could not connect to host md-student.com: did not receive HSTS header mdfnet.se: did not receive HSTS header mdscomp.net: did not receive HSTS header mdwftw.com: could not connect to host -me-dc.com: did not receive HSTS header +me-dc.com: could not connect to host meadowfenfarm.com: could not connect to host meadowviewfarms.org: could not connect to host mealz.com: did not receive HSTS header +meanevo.com: could not connect to host measuretwice.com: did not receive HSTS header meat-education.com: could not connect to host meathealth.com: could not connect to host @@ -8898,9 +9611,9 @@ mecenat-cassous.com: did not receive HSTS header mechok.ru: could not connect to host medallia.io: could not connect to host media-access.online: did not receive HSTS header -mediacru.sh: max-age too low: 0 +media-courses.com: could not connect to host +mediacru.sh: could not connect to host mediadandy.com: could not connect to host -mediaexpert.fr: did not receive HSTS header mediafinancelab.org: could not connect to host mediamag.am: max-age too low: 0 mediastorm.us: did not receive HSTS header @@ -8915,22 +9628,20 @@ mediterenopmaandag.nl: did not receive HSTS header mediumraw.org: did not receive HSTS header mediweed.tk: could not connect to host medm-test.com: could not connect to host -medmarkt24.com: max-age too low: 3600 medpot.net: did not receive HSTS header +medsindex.com: max-age too low: 2592000 medstreaming.com: did not receive HSTS header medy-me.com: could not connect to host medzinenews.com: did not receive HSTS header meedoenzaanstad.nl: did not receive HSTS header meetfinch.com: could not connect to host meetmibaby.co.uk: could not connect to host -meetscompany.jp: did not receive HSTS header -mega-aukcion.ru: could not connect to host +meetscompany.jp: could not connect to host megadrol.com: could not connect to host megakiste.de: could not connect to host megam.host: could not connect to host -megamarkey.de: did not receive HSTS header megashur.se: did not receive HSTS header -megauction.tk: could not connect to host +megasystem.cl: did not receive HSTS header meghudson.com: could not connect to host mego.cloud: could not connect to host meifrench.com: could not connect to host @@ -8940,16 +9651,16 @@ meine-reise-gut-versichert.de: did not receive HSTS header meinebo.it: could not connect to host meisterritter.de: did not receive HSTS header meizufans.eu: could not connect to host +mekongeye.com: could not connect to host melakaltenegger.at: did not receive HSTS header melangebrasil.com: could not connect to host -melaniebilodeau.com: could not connect to host +melaniebilodeau.com: did not receive HSTS header melcher.it: did not receive HSTS header melenchatsmelenchiens.fr: could not connect to host melf.nl: could not connect to host melhoresdominios.net: could not connect to host melhorproduto.com.br: could not connect to host melikoff.es: could not connect to host -melina-schefczyk.de: could not connect to host melodic.com.au: could not connect to host melody-lyrics.com: could not connect to host melonstudios.net: could not connect to host @@ -8962,19 +9673,23 @@ members.mayfirst.org: did not receive HSTS header memdoc.org: could not connect to host memeblast.ninja: could not connect to host memepasmal.org: could not connect to host +memes.nz: could not connect to host memetrash.co.uk: could not connect to host memory-plus-180.com: could not connect to host memorygame.io: did not receive HSTS header memorytrace.space: could not connect to host menaraannonces.com: could not connect to host menchez.me: could not connect to host +mennace.com: did not receive HSTS header menotag.com: did not receive HSTS header mensachterdepatient.nl: max-age too low: 2592000 mensmaximus.de: did not receive HSTS header mentax.net: did not receive HSTS header menthix.net: could not connect to host menudrivetest.com: could not connect to host +menuiserie-berard.com: did not receive HSTS header menzaijia.com: could not connect to host +meo.de: could not connect to host meow.cloud: could not connect to host meozcraft.com: could not connect to host mercamaris.es: did not receive HSTS header @@ -8984,26 +9699,33 @@ mercedes-benz-usedcars.be: could not connect to host mercury-studio.com: did not receive HSTS header mereckas.com: could not connect to host meredithkm.info: did not receive HSTS header +meremobil.dk: did not receive HSTS header mergozzo.com: did not receive HSTS header merimatka.fi: could not connect to host meritz.rocks: could not connect to host mersinunivercity.com: could not connect to host merson.me: could not connect to host +mertak.cz: did not receive HSTS header meshlab.co: could not connect to host -meshok.info: could not connect to host meshotes.com: max-age too low: 8640000 meskdeals.com: could not connect to host mesmoque.com: could not connect to host messagescelestes.ca: did not receive HSTS header +meta-word.com: could not connect to host metadistribution.com: did not receive HSTS header +metaether.net: could not connect to host metagrader.com: could not connect to host metalsculpture.co.uk: max-age too low: 0 metasyntactic.xyz: could not connect to host +metaword.com: could not connect to host +metaword.net: could not connect to host +metaword.org: could not connect to host metebalci.com: did not receive HSTS header -meteosherbrooke.com: did not receive HSTS header meteosky.net: could not connect to host meter.md: could not connect to host +metikam.pl: did not receive HSTS header metin2blog.de: did not receive HSTS header +metin2sepeti.com: could not connect to host metis.pw: could not connect to host metrans-spedition.de: could not connect to host metricaid.com: did not receive HSTS header @@ -9039,15 +9761,15 @@ mht-travel.com: could not connect to host mhx.pw: could not connect to host mia.ac: could not connect to host mia.to: could not connect to host +miamicityballet.org: did not receive HSTS header mianfei-vpn.com: could not connect to host -michael-schefczyk.de: could not connect to host +miboulot.com: could not connect to host michael-schilling.de: did not receive HSTS header -michaelcullen.name: could not connect to host michaeldemuth.com: could not connect to host michaelfitzpatrickruth.com: did not receive HSTS header michaelklos.nl: could not connect to host michaelmorpurgo.com: did not receive HSTS header -michaeln.net: did not receive HSTS header +michaeln.net: could not connect to host michaelscrivo.com: did not receive HSTS header michaelsulzer.com: did not receive HSTS header michaelsulzer.eu: did not receive HSTS header @@ -9063,10 +9785,11 @@ michiganmetalartwork.com: max-age too low: 7889238 mico.world: could not connect to host miconware.de: could not connect to host micro-dv.ru: could not connect to host -micro-rain-systems.com: could not connect to host +micro-rain-systems.com: did not receive HSTS header +microbiote-insectes-vecteurs.group: did not receive HSTS header microblading.pe: could not connect to host microdesic.com: could not connect to host -microme.ga: did not receive HSTS header +microme.ga: could not connect to host micropple.net: could not connect to host microtalk.org: could not connect to host midirs.org: did not receive HSTS header @@ -9084,29 +9807,30 @@ mightymillionslottery.com: did not receive HSTS header mightymillionsraffle.com: did not receive HSTS header migrantskillsregister.org.uk: could not connect to host migrator.co: could not connect to host +miguelgfierro.com: did not receive HSTS header miguksaram.com: could not connect to host mijn-email.org: could not connect to host -mijndiad.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] +mijndiad.nl: did not receive HSTS header mijnkredietpaspoort.nl: could not connect to host mika.cat: could not connect to host mikadesign.se: did not receive HSTS header mikaela.info: did not receive HSTS header -mikaelemilsson.net: could not connect to host +mikaelemilsson.net: did not receive HSTS header mikeburns.com: could not connect to host mikedugan.org: did not receive HSTS header mikeg.de: did not receive HSTS header -mikegarnett.co.uk: could not connect to host mikek.work: did not receive HSTS header mikeology.org: could not connect to host mikepair.net: could not connect to host mikes.tk: could not connect to host mikeybot.com: could not connect to host -mikhirev.ru: could not connect to host mikii.club: could not connect to host mikk.cz: could not connect to host +mikkelscheike.com: could not connect to host +mikkelvej.dk: could not connect to host mikro-inwestycje.co.uk: did not receive HSTS header miku.be: could not connect to host -miku.hatsune.my: did not receive HSTS header +miku.hatsune.my: could not connect to host mikusinec.com: could not connect to host milahendri.com: did not receive HSTS header milang.xyz: could not connect to host @@ -9120,13 +9844,18 @@ millibitcoin.jp: could not connect to host millionairessecrets.com: could not connect to host millstep.de: did not receive HSTS header milonga.tips: could not connect to host +mim.properties: could not connect to host mimbeim.com: did not receive HSTS header -mimithedog.com: could not connect to host +mimm.gov: could not connect to host mimoderoupa.pt: could not connect to host min.kiwi: could not connect to host +minacssas.com: could not connect to host minantavla.se: could not connect to host mind.sh: did not receive HSTS header +mindbodycontinuum.com: could not connect to host +mindcell.no: could not connect to host mindcraft.ga: could not connect to host +mindturbo.com: did not receive HSTS header mine.world: could not connect to host minecraft-forum.cf: could not connect to host minecraft-forum.ga: could not connect to host @@ -9144,6 +9873,7 @@ minecraftvoter.com: could not connect to host minecrell.net: max-age too low: 172800 mineover.es: could not connect to host minetude.com: could not connect to host +mingkyaa.com: could not connect to host mingo.nl: max-age too low: 2592000 mingy.ddns.net: could not connect to host mingyueli.com: could not connect to host @@ -9161,12 +9891,15 @@ minnesotadata.com: could not connect to host minor.news: could not connect to host minora.io: could not connect to host minoris.se: did not receive HSTS header +mintea-noua.ro: could not connect to host +minu.link: could not connect to host mipiaci.co.nz: did not receive HSTS header mipiaci.com.au: did not receive HSTS header miragrow.com: could not connect to host mireillewendling.com.br: could not connect to host mirgleich.dnshome.de: could not connect to host mirindadomo.ru: did not receive HSTS header +mirodasilva.be: could not connect to host mironized.com: did not receive HSTS header mirrorsedgearchive.ga: could not connect to host mirrorx.com: did not receive HSTS header @@ -9174,19 +9907,19 @@ miruc.co: did not receive HSTS header mirucon.com: did not receive HSTS header misconfigured.io: could not connect to host miscreant.me: could not connect to host -misericordiasegrate.org: did not receive HSTS header +misericordiasegrate.org: could not connect to host misgluteosperfectos.com: did not receive HSTS header misiondelosangeles-mailing.com: did not receive HSTS header misiru.jp: could not connect to host +missguidedus.com: did not receive HSTS header missrain.tw: could not connect to host missycosmeticos.com.br: could not connect to host mist.ink: could not connect to host -mister.hosting: did not receive HSTS header +mister.hosting: could not connect to host misterl.net: did not receive HSTS header misuzu.moe: could not connect to host mitarbeiter-pc.de: did not receive HSTS header mitchellrenouf.ca: could not connect to host -mitchelmore.ca: could not connect to host mitior.net: could not connect to host mitm-software.badssl.com: could not connect to host mittenhacks.com: could not connect to host @@ -9198,28 +9931,33 @@ miyako-kyoto.jp: could not connect to host miyoshi-kikaku.co.jp: could not connect to host mizd.at: could not connect to host mizi.name: could not connect to host -mjcaffarattilaw.com: did not receive HSTS header +mjcaffarattilaw.com: could not connect to host mjhsc.nl: did not receive HSTS header mk-dizajn.com: could not connect to host mkacg.com: could not connect to host mkakh.xyz: could not connect to host -mkasu.org: could not connect to host mkfs.be: could not connect to host mkfs.fr: could not connect to host mkg-palais-hanau.de: did not receive HSTS header +mkg-wiebelskirchen.de: could not connect to host mkp-deutschland.de: did not receive HSTS header mkplay.io: could not connect to host mkw.st: could not connect to host +mlcambiental.com.br: did not receive HSTS header mlcdn.co: could not connect to host +mlm-worldwide.de: did not receive HSTS header mlpchan.net: could not connect to host mlpepilepsy.org: could not connect to host mlpvc-rr.ml: did not receive HSTS header mlrslateroofing.com.au: did not receive HSTS header +mlsrv.de: could not connect to host +mm-wife.com: could not connect to host +mmarnitz.de: could not connect to host +mmcc.pe: did not receive HSTS header mmgazhomeloans.com: did not receive HSTS header mmilog.hu: could not connect to host mmmm.com: could not connect to host mmstick.tk: could not connect to host -mnd.sc: could not connect to host mnec.io: could not connect to host mneeb.de: could not connect to host mnemotiv.com: could not connect to host @@ -9227,6 +9965,7 @@ mnetworkingsolutions.co.uk: could not connect to host mnmt.no: did not receive HSTS header mnwt.nl: could not connect to host moar.so: did not receive HSTS header +moas.design: did not receive HSTS header moas.photos: did not receive HSTS header mobaircon.com: did not receive HSTS header mobile-gesundheit.org: could not connect to host @@ -9234,14 +9973,15 @@ mobile.eti.br: could not connect to host mobilebay.top: could not connect to host mobilecoach.com: did not receive HSTS header mobilekey.co: could not connect to host -mobilemalin.com: could not connect to host +mobilemalin.com: did not receive HSTS header mobileritelushi.com: could not connect to host mobilethreat.net: could not connect to host mobilethreatnetwork.net: could not connect to host mobilpass.no: could not connect to host -mobimalin.com: could not connect to host +mobimalin.com: did not receive HSTS header +mobisium.com: did not receive HSTS header mobiwalk.com: could not connect to host -mobix5.com: did not receive HSTS header +mobix5.com: could not connect to host mobmp4.co: could not connect to host mobmp4.com: could not connect to host mobmp4.info: could not connect to host @@ -9251,16 +9991,21 @@ mockmyapp.com: could not connect to host mocloud.eu: could not connect to host mocloud.win: could not connect to host mocsuite.club: could not connect to host +modalrakyat.com: could not connect to host +modalrakyat.id: did not receive HSTS header modaperuimport.com: could not connect to host +modcentral.pw: max-age too low: 2592000 modded-minecraft-server-list.com: could not connect to host moddedark.com: could not connect to host mode-marine.com: could not connect to host modecaso.com: could not connect to host +modehaus-marionk.de: could not connect to host model9.io: did not receive HSTS header modelsclub.org.ua: could not connect to host modemagazines.co.uk: could not connect to host moderatortv.de: did not receive HSTS header modernibytovytextil.cz: could not connect to host +moderntld.net: could not connect to host mododo.de: could not connect to host modx.by: max-age too low: 31536 modx.io: could not connect to host @@ -9272,11 +10017,14 @@ moebel-nagel.de: did not receive HSTS header moebel-vergleichen.com: did not receive HSTS header moefi.xyz: could not connect to host moegirl.org: did not receive HSTS header +moehrke.cc: could not connect to host moellers.it: could not connect to host moeloli.pw: did not receive HSTS header moelord.org: could not connect to host moen.io: did not receive HSTS header +moeqing.net: could not connect to host moevenpick-cafe.com: did not receive HSTS header +moeyun.net: could not connect to host mogry.net: did not receive HSTS header mohio.co.nz: did not receive HSTS header moho.kr: could not connect to host @@ -9285,22 +10033,30 @@ moitur.com: did not receive HSTS header mojapraca.sk: did not receive HSTS header mojefilmy.xyz: could not connect to host mojizuri.jp: max-age too low: 86400 +mojnet.eu: could not connect to host +mojnet.net: could not connect to host +mojoco.co.za: could not connect to host mokadev.com: did not receive HSTS header -mols.me: did not receive HSTS header +molokai.org: could not connect to host +mols.me: could not connect to host +momento.co.id: did not receive HSTS header momfulfilled.com: could not connect to host mommel.com: could not connect to host mommelonline.de: could not connect to host momoka.moe: could not connect to host mon-a-lisa.com: did not receive HSTS header -mon-mobile.com: could not connect to host +mon-mobile.com: did not receive HSTS header +mona-antenna.com: did not receive HSTS header mona.lu: could not connect to host monalisa.wtf: could not connect to host monarca.systems: could not connect to host monasterialis.eu: could not connect to host monautoneuve.fr: did not receive HSTS header mondar.io: could not connect to host +mondedie.fr: could not connect to host mondopoint.com: did not receive HSTS header mondwandler.de: could not connect to host +moneoci.com.br: could not connect to host moneromerchant.com: could not connect to host moneycrownmedia.com: could not connect to host moneyfactory.gov: did not receive HSTS header @@ -9309,28 +10065,30 @@ mongla88.net: could not connect to host monicabeckstrom.no: could not connect to host monika-sokol.de: did not receive HSTS header monitaure.io: could not connect to host +monitman.com: did not receive HSTS header monitman.solutions: could not connect to host +monitorchain.com: did not receive HSTS header monitori.ng: could not connect to host monkieteel.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] monochrometoys.com: could not connect to host monodukuri.cafe: did not receive HSTS header monodzukuri.cafe: did not receive HSTS header -monoseis-monotica.gr: max-age too low: 300 +monokoo.com: could not connect to host monotsuku.com: could not connect to host monozukuri.cafe: did not receive HSTS header -monsieurbureau.com: max-age too low: 0 montanacures.org: could not connect to host montanana.com: did not receive HSTS header +montand.com: did not receive HSTS header monteurzimmerfrei.de: could not connect to host montonicms.com: could not connect to host moo.pet: did not receive HSTS header moobo.xyz: did not receive HSTS header moodifiers.com: could not connect to host moon.lc: could not connect to host -moonagic.io: did not receive HSTS header moonchart.co.uk: did not receive HSTS header moonless.net: could not connect to host moonloupe.com: could not connect to host +moonrhythm.io: did not receive HSTS header moonysbouncycastles.co.uk: could not connect to host moosemanstudios.com: could not connect to host moov.is: could not connect to host @@ -9349,11 +10107,10 @@ morethanadream.lv: could not connect to host morfitronik.pl: could not connect to host morganestes.com: max-age too low: 0 morganino.eu: could not connect to host -morhys.com: could not connect to host morningcalculation.com: could not connect to host morninglory.com: did not receive HSTS header -mornings.com: did not receive HSTS header -morotech.com.br: could not connect to host +mornings.com: could not connect to host +morotech.com.br: did not receive HSTS header morpheusx.at: could not connect to host morpheusxaut.net: could not connect to host morpork.xyz: could not connect to host @@ -9367,11 +10124,14 @@ motherbase.io: could not connect to host motherboard.services: could not connect to host motionfreight.com: could not connect to host motionpicturesolutions.com: did not receive HSTS header +motocollection.pl: did not receive HSTS header motocyklovedily.cz: did not receive HSTS header motomorgen.com: could not connect to host motorbiketourhanoi.com: could not connect to host motorcheck.ie: did not receive HSTS header +motornomaslo.bg: did not receive HSTS header motoroilinfo.com: did not receive HSTS header +motorsportdiesel.com: did not receive HSTS header motovio.de: did not receive HSTS header motransportinfo.com: did not receive HSTS header mottvd.com: could not connect to host @@ -9382,28 +10142,30 @@ moumaobuchiyu.com: could not connect to host mountainadventureseminars.com: did not receive HSTS header mountainmusicpromotions.com: did not receive HSTS header movabletype.net: max-age too low: 3600 -move.mil: did not receive HSTS header +moveltix.net: could not connect to host movepin.com: could not connect to host movie4k.fyi: could not connect to host movie4k.life: could not connect to host -moviedollars.com: did not receive HSTS header +movie4kto.site: could not connect to host +moviedollars.com: could not connect to host movienang.com: max-age too low: 0 moviesabout.net: could not connect to host moviespur.info: did not receive HSTS header moving-pixtures.de: could not connect to host movingoklahoma.org: could not connect to host -movio.ga: did not receive HSTS header +movio.ga: could not connect to host mowalls.net: could not connect to host moy-gorod.od.ua: did not receive HSTS header moyu.host: did not receive HSTS header mozart-game.cz: could not connect to host mozartgame.cz: could not connect to host -mozgb.ru: did not receive HSTS header +mozgb.ru: could not connect to host mozillians.org: did not receive HSTS header mozoa.net: could not connect to host mozzilla.cz: could not connect to host mp3donusturucu.com: did not receive HSTS header mp3donusturucu.net: did not receive HSTS header +mp3gratuiti.com: could not connect to host mp3juices.is: could not connect to host mpi-sa.fr: did not receive HSTS header mpkossen.com: did not receive HSTS header @@ -9411,7 +10173,6 @@ mpn.poker: did not receive HSTS header mpserver12.org: could not connect to host mr-coffee.net: could not connect to host mr-hosting.com: could not connect to host -mr-nachhilfe.de: did not receive HSTS header mrafrohead.com: could not connect to host mrawe.com: could not connect to host mrburtbox.com: could not connect to host @@ -9422,7 +10183,6 @@ mrettich.org: did not receive HSTS header mrhc.ru: could not connect to host mrhee.com: did not receive HSTS header mrizzio.com: could not connect to host -mrjooz.com: did not receive HSTS header mrksk.com: could not connect to host mrleonardo.com: did not receive HSTS header mrliu.me: could not connect to host @@ -9430,7 +10190,7 @@ mrnh.tk: could not connect to host mrnonz.com: max-age too low: 0 mrparker.pw: did not receive HSTS header mrpopat.in: did not receive HSTS header -mrpropop.com: did not receive HSTS header +mrpropop.com: max-age too low: 0 mrs-shop.com: did not receive HSTS header mruganiepodspacja.pl: could not connect to host msc-seereisen.net: could not connect to host @@ -9438,39 +10198,42 @@ msgallery.tk: could not connect to host msp66.de: could not connect to host mstd.tokyo: did not receive HSTS header mstdn-tech.jp: could not connect to host -mstdn.io: did not receive HSTS header -mstdn.nl: did not receive HSTS header -mstiles92.com: did not receive HSTS header +mstdn.nl: could not connect to host +mstiles92.com: could not connect to host msz-fotografie.de: could not connect to host mszaki.com: did not receive HSTS header mt.me.uk: could not connect to host mtamaki.com: could not connect to host mtau.com: max-age too low: 2592000 -mtcgf.com: could not connect to host +mtcgf.com: did not receive HSTS header mtd.ovh: could not connect to host mtdn.jp: could not connect to host mtfgnettoyage.fr: could not connect to host mtg-esport.de: did not receive HSTS header -mtg-tutor.de: could not connect to host mtirc.co: could not connect to host mtn.cc: could not connect to host -muenchberger.com: could not connect to host +mu3on.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] +muchohentai.com: could not connect to host muffet.pw: could not connect to host muga.space: could not connect to host muj-svet.cz: could not connect to host mujadin.se: did not receive HSTS header mulenvo.com: did not receive HSTS header +mulheres18.com: could not connect to host mullen.net.au: did not receive HSTS header multiterm.org: did not receive HSTS header multivpn.cn.com: could not connect to host multivpn.com.de: could not connect to host multivpn.com.ua: could not connect to host multivpn.fr: could not connect to host +multiworldsoftware.com: did not receive HSTS header mumei.space: did not receive HSTS header +mundoadulto.com.br: did not receive HSTS header mundoalpha.com.br: did not receive HSTS header mundodapoesia.com: did not receive HSTS header munecoscabezones.com: did not receive HSTS header munich-rage.de: did not receive HSTS header +munirajiwa.com: could not connect to host munkiepus.com: did not receive HSTS header munpanel.com: could not connect to host munrabi.com: could not connect to host @@ -9487,6 +10250,8 @@ murraycolin.org: could not connect to host murrayrun.com: did not receive HSTS header mursu.directory: could not connect to host murz.tv: could not connect to host +murzik.space: could not connect to host +muscleangels.com: could not connect to host museminder2.com: did not receive HSTS header museumstreak.com: did not receive HSTS header musewearflipflops.com: could not connect to host @@ -9500,6 +10265,7 @@ mustika.cf: did not receive HSTS header mutamatic.com: could not connect to host mutuelle-obligatoire-pme.fr: did not receive HSTS header muzgra.in: did not receive HSTS header +muzi.cz: could not connect to host muzykaprzeszladoplay.pl: could not connect to host mvanmarketing.nl: did not receive HSTS header mvnet.com.br: did not receive HSTS header @@ -9518,6 +10284,9 @@ myairshop.gr: could not connect to host myandroid.tools: could not connect to host myandroidtools.cc: could not connect to host myandroidtools.pro: could not connect to host +myappliancerepairhouston.com: did not receive HSTS header +myartsway.com: did not receive HSTS header +mybboard.pl: could not connect to host mybudget.xyz: could not connect to host mybuilderinlondon.co.uk: did not receive HSTS header mybusiness.cm: did not receive HSTS header @@ -9525,6 +10294,7 @@ mycamda.com: could not connect to host mychocolateweightloss.com: could not connect to host myclientsplus.com: did not receive HSTS header mycollab.net: could not connect to host +mycolorado.gov: could not connect to host mycontrolmonitor.com: could not connect to host mycoted.com: did not receive HSTS header myday.eu.com: did not receive HSTS header @@ -9539,7 +10309,8 @@ myepass.de: could not connect to host myfappening.org: could not connect to host myfdic.gov: could not connect to host myfunworld.de: could not connect to host -mygate.at: could not connect to host +mygalgame.com: could not connect to host +mygate.at: did not receive HSTS header mygaysitges.com: could not connect to host mygivingcircle.org: did not receive HSTS header mygooder.com: did not receive HSTS header @@ -9547,23 +10318,28 @@ mygov.scot: did not receive HSTS header mygpsite.com: did not receive HSTS header mygreatjob.eu: could not connect to host myhair.asia: did not receive HSTS header -myicare.org: could not connect to host +myhloli.com: did not receive HSTS header +myhostname.net: did not receive HSTS header +myicare.org: did not receive HSTS header myiocc.org: did not receive HSTS header myip.tech: max-age too low: 2592000 +myipaddr.de: did not receive HSTS header mykolab.com: did not receive HSTS header mykreuzfahrt.de: could not connect to host mylene-chandelier.me: did not receive HSTS header mylighthost.com: did not receive HSTS header mylocalsearch.co.uk: did not receive HSTS header -mymixtapez.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] +mylotto.co.nz: could not connect to host +mymadina.com: could not connect to host mymp3singer.co: could not connect to host mymp3singer.net: could not connect to host mymp3singer.site: could not connect to host mymsr.de: did not receive HSTS header myndcommunication.com: could not connect to host mynetblog.com: did not receive HSTS header +mynetworkingbuddy.com: could not connect to host mynewleaf.co: did not receive HSTS header -mynewselfbariatrics.com: could not connect to host +mynewselfbariatrics.com: did not receive HSTS header myni.io: could not connect to host mynigma.org: did not receive HSTS header myon.info: did not receive HSTS header @@ -9576,13 +10352,16 @@ mypagella.com: could not connect to host mypagella.eu: could not connect to host mypagella.it: could not connect to host mypanier.com: max-age too low: 7889238 +mypaperwriter.com: could not connect to host +myparfumerie.at: did not receive HSTS header mypension.ca: could not connect to host myphonebox.de: could not connect to host myptsite.com: could not connect to host myqdu.cn: could not connect to host myqdu.com: could not connect to host +myrig.com.ua: did not receive HSTS header myrig.io: could not connect to host -myrig.net: could not connect to host +myrig.ru: did not receive HSTS header myrsa.in: did not receive HSTS header myruststats.com: could not connect to host mysa.is: could not connect to host @@ -9593,20 +10372,24 @@ mysteryblog.de: did not receive HSTS header mystown.org: could not connect to host mystudy.me: could not connect to host mytc.fr: could not connect to host +mythemeshop.com: did not receive HSTS header mythlogic.com: did not receive HSTS header mythslegendscollection.com: did not receive HSTS header mytravelblog.de: could not connect to host +mywallets.io: could not connect to host myweb360.de: did not receive HSTS header -myxbox.gr: did not receive HSTS header +myxbox.gr: max-age too low: 0 myzone.com: did not receive HSTS header mzlog.win: could not connect to host mzorn.photography: could not connect to host n-rickroll-e.pw: could not connect to host +n-x.info: did not receive HSTS header n0099.cf: did not receive HSTS header n0rm.ru: could not connect to host n0s.de: did not receive HSTS header n2host.eu: could not connect to host n2x.in: could not connect to host +n3twork.net: could not connect to host n4l.pw: could not connect to host n64chan.me: did not receive HSTS header n8ch.net: could not connect to host @@ -9616,22 +10399,24 @@ nabru.co.uk: did not receive HSTS header nabu-bad-nauheim.de: did not receive HSTS header nabytko.cz: could not connect to host nacktetatsachen.at: did not receive HSTS header -nadaquenosepas.com: could not connect to host nadia.pt: could not connect to host nagaragem.com.br: did not receive HSTS header nagios.by: did not receive HSTS header nagoya-kyuyo.com: could not connect to host naiaspa.fr: did not receive HSTS header naiharngym.com: did not receive HSTS header -nais.me: could not connect to host +nailedithomebuilders.com: could not connect to host +nais.me: did not receive HSTS header najedlo.sk: could not connect to host +nakada4610.com: could not connect to host nakamastreamingcommunity.com: could not connect to host +nakanishi-paint.com: could not connect to host nakhonidc.com: could not connect to host nakitbonus2.com: could not connect to host nakliyatsirketi.biz: could not connect to host nakuro.de: could not connect to host nalao-company.com: did not receive HSTS header -nalifornia.com: did not receive HSTS header +nalifornia.com: could not connect to host nalinux.cz: did not receive HSTS header nallon.com.br: could not connect to host nalukfitness.com.br: could not connect to host @@ -9641,32 +10426,35 @@ named.ga: could not connect to host nameme.xyz: could not connect to host nametaken-cloud.duckdns.org: could not connect to host namethatbone.com: could not connect to host +namethatporn.com: could not connect to host namikawatetsuji.jp: could not connect to host namorico.me: could not connect to host nan.ci: did not receive HSTS header nan.zone: could not connect to host -nanami.moe: did not receive HSTS header +nanami.moe: could not connect to host nanderson.me: could not connect to host nanfangstone.com: could not connect to host nani.io: did not receive HSTS header naniki.co.uk: could not connect to host nanogeneinc.com: could not connect to host nanokamo.com: did not receive HSTS header +nanosingularity.com: could not connect to host nanrenba.net: could not connect to host nanto.eu: could not connect to host naoar.com: could not connect to host naphex.rocks: could not connect to host napisynapomniky.cz: did not receive HSTS header narach.com: did not receive HSTS header +nargele.eu: could not connect to host narko.space: could not connect to host narodniki.com: did not receive HSTS header narviz.com: did not receive HSTS header nasarawanewsonline.com: could not connect to host -nasmocopati.com: could not connect to host -nasralmabrooka.com: did not receive HSTS header +nasmocopati.com: did not receive HSTS header +nasralmabrooka.com: could not connect to host nastysclaw.com: could not connect to host natalia-fadeeva.ru: could not connect to host -natalia.io: could not connect to host +natalia.io: did not receive HSTS header natalieandjoshua.com: could not connect to host natalt.org: did not receive HSTS header natalydanilova.com: max-age too low: 300 @@ -9675,12 +10463,11 @@ nate.sh: could not connect to host natenom.com: max-age too low: 7200 natenom.de: max-age too low: 7200 natenom.name: max-age too low: 7200 -nathankonopinski.com: could not connect to host nathanmfarrugia.com: did not receive HSTS header nationalmall.gov: could not connect to host nationwidevehiclecontracts.co.uk: did not receive HSTS header natur-udvar.hu: could not connect to host -natural-progesterone.net: did not receive HSTS header +natural-progesterone.net: could not connect to host naturalcommission.com: could not connect to host naturblogg.no: did not receive HSTS header naturecoaster.com: did not receive HSTS header @@ -9690,8 +10477,8 @@ nauck.org: did not receive HSTS header naudles.me: could not connect to host nav.jobs: could not connect to host naval.tf: could not connect to host -navdeep.ca: could not connect to host naviaddress.io: did not receive HSTS header +navigate-it-services.de: did not receive HSTS header naviteq.eu: could not connect to host navjobs.com: could not connect to host nawroth.info: could not connect to host @@ -9701,22 +10488,24 @@ nba2kqq.com: could not connect to host nbb.io: could not connect to host nbg-ha.de: could not connect to host nbis.gov: could not connect to host +nbl.org.tw: could not connect to host nbrown.us: could not connect to host +nbtparse.org: could not connect to host nc2c.com: could not connect to host nc99.co: could not connect to host ncc60205.info: could not connect to host ncdesigns-studio.com: could not connect to host -ncea.net.au: did not receive HSTS header nchristo.com: did not receive HSTS header +ncloud.freeddns.org: could not connect to host ncpc.gov: could not connect to host ncpw.gov: did not receive HSTS header ncrmnt.org: did not receive HSTS header -nct.org.uk: could not connect to host +nct.org.uk: did not receive HSTS header nctx.co.uk: did not receive HSTS header ndmath.club: could not connect to host ndtblog.com: could not connect to host ndtmarket.place: could not connect to host -ne1home.dyndns.org: did not receive HSTS header +ne1home.dyndns.org: could not connect to host neap.io: could not connect to host near.st: did not receive HSTS header nearbiwa.com: did not receive HSTS header @@ -9729,7 +10518,6 @@ nedcf.org.uk: could not connect to host nediyor.com: did not receive HSTS header nedwave.com: did not receive HSTS header nedzad.me: could not connect to host -neecist.org: could not connect to host neels.ch: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] neer.io: could not connect to host neftaly.com: did not receive HSTS header @@ -9740,12 +10528,14 @@ neilgreen.net: did not receive HSTS header nejnamc.org: did not receive HSTS header neko-life.com: did not receive HSTS header neko.li: could not connect to host +neko.ml: could not connect to host nekoku.io: could not connect to host nekox.ml: could not connect to host nellen.it: did not receive HSTS header +nemanja.top: did not receive HSTS header nemno.de: could not connect to host nemovement.org: could not connect to host -nemunai.re: could not connect to host +nemplex.win: could not connect to host neoani.me: did not receive HSTS header neocyd.com: could not connect to host neofelhz.space: could not connect to host @@ -9753,6 +10543,7 @@ neojames.me: could not connect to host neonisi.com: could not connect to host neonnuke.tech: did not receive HSTS header neosolution.ca: did not receive HSTS header +nephy.jp: could not connect to host nercp.org.uk: did not receive HSTS header nerd42.de: could not connect to host nerdbox.cc: did not receive HSTS header @@ -9760,10 +10551,7 @@ nerdjokes.de: could not connect to host nerfroute.com: could not connect to host neris.io: could not connect to host neriumhcp.com: did not receive HSTS header -nerpa-club.ru: did not receive HSTS header -nerull7.info: could not connect to host nesantuoka.lt: could not connect to host -nestedquotes.ca: could not connect to host nestone.ru: could not connect to host net-navi.cc: did not receive HSTS header net-rencontre.com: did not receive HSTS header @@ -9777,33 +10565,33 @@ netbuzz.ru: could not connect to host netde.jp: could not connect to host netdego.jp: could not connect to host netfs.pl: did not receive HSTS header +netguide.co.nz: did not receive HSTS header netherwind.eu: did not receive HSTS header netlilo.com: could not connect to host netloanusa.com: could not connect to host netmagik.com: did not receive HSTS header netprofile.com.au: did not receive HSTS header netresourcedesign.com: could not connect to host -netronome.com: did not receive HSTS header netsafeid.biz: did not receive HSTS header netscaler.expert: could not connect to host netsight.org: could not connect to host netsparkercloud.com: did not receive HSTS header netsystems.pro: could not connect to host +nettacompany.com.tr: did not receive HSTS header nettefoundation.com: could not connect to host -networking4all.net: max-age too low: 0 networx-online.de: could not connect to host netzbit.de: could not connect to host netzpolitik.org: max-age too low: 2592000 netztest.at: did not receive HSTS header -netzvieh.de: did not receive HSTS header +netzvieh.de: could not connect to host netzzwerg4u.de: did not receive HSTS header neuch.info: did not receive HSTS header neueonlinecasino2016.com: could not connect to host neuralgic.net: could not connect to host neuro-plus-100.com: could not connect to host neuronfactor.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] -neurotransmitter.net: could not connect to host neutralvehicle.com: did not receive HSTS header +neva.li: could not connect to host nevadafiber.net: could not connect to host never-afk.de: did not receive HSTS header neveta.com: could not connect to host @@ -9813,10 +10601,11 @@ newbieboss.com: did not receive HSTS header newbownerton.xyz: could not connect to host newchance.store: could not connect to host newcityinfo.info: could not connect to host +newdeveloper.download: could not connect to host newedivideo.it: could not connect to host newfacialbeautycream.com: could not connect to host newgenerationplus.org: could not connect to host -newhdmovies.io: max-age too low: 0 +newhdmovies.io: could not connect to host newline.online: did not receive HSTS header newlooknow.com: did not receive HSTS header newmelalife.com: did not receive HSTS header @@ -9829,14 +10618,14 @@ newstarnootropics.com: could not connect to host newtnote.com: could not connect to host newtonhaus.com: could not connect to host newtonwarp.com: could not connect to host +nexgeneration-solutions.com: could not connect to host nexlab.org: did not receive HSTS header next-taxi.ru: could not connect to host next176.sk: did not receive HSTS header next47.com: did not receive HSTS header nextcloud.li: could not connect to host -nextcloud.nerdpol.ovh: could not connect to host nextcloud.org: could not connect to host -nextgenthemes.com: did not receive HSTS header +nextend.org: could not connect to host nexth.de: could not connect to host nexth.net: did not receive HSTS header nexth.us: could not connect to host @@ -9845,10 +10634,10 @@ nexthop.co.th: did not receive HSTS header nextpages.de: could not connect to host nextproject.us: could not connect to host nextshutter.com: did not receive HSTS header -nexus-vienna.at: could not connect to host nexusbyte.de: could not connect to host nexuscorporation.in: could not connect to host nfhome.be: did not receive HSTS header +nfluence.org: could not connect to host nfo.so: could not connect to host ng-firewall.com: did not receive HSTS header ng-security.com: could not connect to host @@ -9866,6 +10655,7 @@ nhus.de: max-age too low: 172800 niallator.com: could not connect to host nibiisclaim.com: could not connect to host nicestresser.fr: could not connect to host +nicholasperkins.io: could not connect to host nicky.io: did not receive HSTS header nico.one: could not connect to host nicoborghuis.nl: could not connect to host @@ -9874,16 +10664,20 @@ nicolaelmer.ch: did not receive HSTS header nicolasbettag.me: did not receive HSTS header nicolasdutour.com: did not receive HSTS header nicolasklotz.de: did not receive HSTS header +nicoleoquendo.com: max-age too low: 2592000 niconiconi.xyz: could not connect to host nicorevin.ru: could not connect to host nidux.com: did not receive HSTS header niduxcomercial.com: could not connect to host +niedersetz.de: did not receive HSTS header nien.chat: could not connect to host nien.com.tw: could not connect to host nienfun.com: could not connect to host nieuwsoverijssel.nl: did not receive HSTS header +niffler.software: could not connect to host nifpnet.nl: could not connect to host nifume.com: could not connect to host +niggo.eu: could not connect to host nightsnack.cf: could not connect to host niho.jp: did not receive HSTS header nikcub.com: could not connect to host @@ -9895,6 +10689,7 @@ nikolaichik.photo: did not receive HSTS header nikolasbradshaw.com: could not connect to host nilianwo.com: could not connect to host niloxy.com: did not receive HSTS header +nimidam.com: could not connect to host ninchisho-online.com: did not receive HSTS header ninebytes.xyz: could not connect to host ning.so: did not receive HSTS header @@ -9902,12 +10697,13 @@ ninhs.org: could not connect to host ninjan.co: did not receive HSTS header ninjaspiders.com: could not connect to host ninofink.com: could not connect to host -ninreiei.jp: could not connect to host niouininon.eu: could not connect to host nippler.org: could not connect to host nippombashi.net: did not receive HSTS header +nippon.fr: could not connect to host nipponcareers.com: did not receive HSTS header nirada.info: could not connect to host +nirjharstudio.com: could not connect to host nirna.io: did not receive HSTS header nirvanashop.com: could not connect to host nishaswonderland.be: did not receive HSTS header @@ -9918,6 +10714,7 @@ nitaonline.org: [Exception... "Component returned failure code: 0x80004005 (NS_E niveldron.com: could not connect to host nixien.fr: could not connect to host nixmag.net: could not connect to host +nixne.st: could not connect to host nkadvertising.online: could not connect to host nkautoservice.nl: did not receive HSTS header nkb.in.th: could not connect to host @@ -9925,42 +10722,50 @@ nlegall.fr: did not receive HSTS header nll.fi: could not connect to host nmadda.com: did not receive HSTS header nmctest.net: could not connect to host +nmgb.ga: could not connect to host +nmgb.ml: could not connect to host nmsnj.com: did not receive HSTS header nmueller.at: could not connect to host nnote.net: could not connect to host nnya.cat: could not connect to host no17sifangjie.cc: could not connect to host +noc.wang: could not connect to host nocallaghan.com: could not connect to host -nocit.dk: could not connect to host noclegi-online.pl: did not receive HSTS header noctinus.tk: could not connect to host -nodari.com.ar: could not connect to host node-core-app.com: could not connect to host nodebrewery.com: could not connect to host nodechate.xyz: could not connect to host +nodecompat.com: could not connect to host nodefiles.com: could not connect to host +nodefoo.com: could not connect to host nodepanel.net: did not receive HSTS header +nodepositcasinouk.com: did not receive HSTS header nodeselect.com: could not connect to host nodespin.com: did not receive HSTS header nodetemple.com: could not connect to host nodi.at: did not receive HSTS header +nodum.io: did not receive HSTS header noegoph.com: did not receive HSTS header noelblog.ga: could not connect to host noelssanssoucipensacola.com: did not receive HSTS header noesberts-weidmoos.de: did not receive HSTS header noexpect.org: could not connect to host -noima.com: did not receive HSTS header noisebridge.social: could not connect to host -nokia.la: could not connect to host +nojok.es: could not connect to host nolag.host: could not connect to host nolatepayments.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] nolberg.net: did not receive HSTS header nolimits.net.nz: could not connect to host nolimitsbook.de: did not receive HSTS header nolte.work: could not connect to host +nomagic.software: did not receive HSTS header nomorebytes.de: could not connect to host nonemu.ninja: could not connect to host +noodlecrave.com: did not receive HSTS header noodlesandwich.com: did not receive HSTS header +noodleyum.com: did not receive HSTS header +nootropicpedia.com: could not connect to host nootropicsource.com: did not receive HSTS header nope.website: could not connect to host nopex.no: could not connect to host @@ -9972,11 +10777,15 @@ norden.eu.org: could not connect to host nordic-survival.de: did not receive HSTS header nordiccasinocommunity.com: did not receive HSTS header nordlicht.photography: did not receive HSTS header +nordseeblicke.de: did not receive HSTS header +noref.tk: could not connect to host norge.guide: could not connect to host +normalady.com: could not connect to host normanschwaneberg.de: did not receive HSTS header north.supply: could not connect to host northcutt.com: did not receive HSTS header -northpennvwparts.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] +northernmuscle.ca: could not connect to host +northpennvwparts.com: max-age too low: 604800 northwoodsfish.com: could not connect to host nosbenevolesontdutalent.com: could not connect to host nosecretshop.com: could not connect to host @@ -9987,6 +10796,7 @@ not-a.link: could not connect to host nota-web.com: could not connect to host notablog.xyz: did not receive HSTS header notadd.io: could not connect to host +notadd.store: could not connect to host notarankastojkovic.me: could not connect to host notarobot.fr: did not receive HSTS header notboring.co.uk: could not connect to host @@ -9998,12 +10808,14 @@ notevencode.com: could not connect to host nothing.net.nz: max-age too low: 7776000 nothing.org.uk: could not connect to host noticia.do: did not receive HSTS header -notjustbitchy.com: did not receive HSTS header +notificami.com: could not connect to host +notjustbitchy.com: could not connect to host notonprem.com: could not connect to host nottheonion.net: did not receive HSTS header +nottori.com: could not connect to host notypiesni.sk: did not receive HSTS header nou.si: did not receive HSTS header -nouma.fr: could not connect to host +nouma.fr: did not receive HSTS header nouvelle-vague-saint-cast.fr: did not receive HSTS header nova-elearning.com: could not connect to host nova.com.hk: did not receive HSTS header @@ -10018,19 +10830,23 @@ novelabs.de: could not connect to host novelabs.eu: could not connect to host novelshouse.com: could not connect to host novfishing.ru: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] -novinhabucetuda.com: did not receive HSTS header +novinhabucetuda.com: could not connect to host novinivo.com: did not receive HSTS header novtest.ru: did not receive HSTS header +nowcost.com: could not connect to host noworrywp.com: could not connect to host nowprotein.com: did not receive HSTS header +nowremindme.com: could not connect to host nozoe.jp: could not connect to host npm.li: did not receive HSTS header npol.de: could not connect to host npool.org: could not connect to host nq7.pl: could not connect to host +nrc-gateway.gov: could not connect to host nrechn.de: could not connect to host nrizzio.me: could not connect to host -nrnjn.xyz: did not receive HSTS header +nrnjn.xyz: could not connect to host +nrvn.cc: did not receive HSTS header nrvnastudios.com: could not connect to host nsbfalconacademy.org: could not connect to host nsdev.cn: could not connect to host @@ -10038,7 +10854,6 @@ nsellier.fr: did not receive HSTS header nshost.ro: did not receive HSTS header nsmail.cn: could not connect to host nspeaks.com: did not receive HSTS header -nstremsdoerfer.ovh: did not receive HSTS header nstyleintl.ca: did not receive HSTS header nsure.us: could not connect to host nsweb.solutions: could not connect to host @@ -10048,20 +10863,21 @@ ntse.xyz: could not connect to host nu3.at: did not receive HSTS header nu3.ch: did not receive HSTS header nu3.co.uk: could not connect to host -nu3.com: did not receive HSTS header nu3.de: did not receive HSTS header nu3.fr: did not receive HSTS header nube.ninja: did not receive HSTS header -nubeslayer.com: did not receive HSTS header -nuclear-crimes.com: could not connect to host -nuclearcrimes.com: could not connect to host -nuclearcrimes1.com: could not connect to host +nubeslayer.com: could not connect to host +nuclear-crimes.com: did not receive HSTS header +nuclearcrimes.com: did not receive HSTS header +nuclearcrimes1.com: did not receive HSTS header nudel.ninja: could not connect to host +nudestpics.com: could not connect to host nufla.de: could not connect to host nugetdependencies.com: did not receive HSTS header nuiguru.me: could not connect to host nukenet.se: could not connect to host nukute.com: did not receive HSTS header +nulap.com: could not connect to host null-pointer.eu: did not receive HSTS header null-sec.ru: could not connect to host null.cat: did not receive HSTS header @@ -10077,9 +10893,11 @@ nupef.org.br: did not receive HSTS header nurserybook.co: did not receive HSTS header nurture.be: did not receive HSTS header nusatrip-api.com: did not receive HSTS header +nusku.biz: did not receive HSTS header nutricuerpo.com: did not receive HSTS header nutrieduca.com: could not connect to host nutrienti.eu: did not receive HSTS header +nutrifyyourself.com: could not connect to host nutritionculture.com: could not connect to host nutsandboltsmedia.com: did not receive HSTS header nuttyveg.com: did not receive HSTS header @@ -10087,21 +10905,22 @@ nuwaterglobal.com: did not receive HSTS header nvlop.xyz: did not receive HSTS header nwa.xyz: could not connect to host nweb.co.nz: could not connect to host -nwk1.com: did not receive HSTS header -nwork.media: could not connect to host +nwork.media: did not receive HSTS header nxt.sh: did not receive HSTS header nyanpasu.tv: could not connect to host nyatane.com: could not connect to host nyazeeland.guide: could not connect to host nycroth.com: could not connect to host -nydnxs.com: could not connect to host nyesider.org: could not connect to host +nyffo.com: did not receive HSTS header +nylonfeetporn.com: could not connect to host nyored.com: did not receive HSTS header nyphox.net: could not connect to host -nys-hk.com: did not receive HSTS header nysepho.pw: could not connect to host nysifclaimcentral.com: did not receive HSTS header nystart.no: did not receive HSTS header +nystudio107.com: did not receive HSTS header +nyuusannkinn.com: did not receive HSTS header nz.search.yahoo.com: max-age too low: 172800 nzbs.io: could not connect to host nzmk.cz: could not connect to host @@ -10127,6 +10946,7 @@ obscuredfiles.com: could not connect to host observatory.se: could not connect to host obsydian.org: could not connect to host oc-minecraft.com: could not connect to host +ocad.com.au: did not receive HSTS header ocapic.com: could not connect to host occ.gov: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] occasion-impro.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] @@ -10134,6 +10954,7 @@ occupymedia.org: could not connect to host ochaken.cf: could not connect to host ocmeulebeke.be: did not receive HSTS header ocrami.us: did not receive HSTS header +octal.es: could not connect to host octanio.com: could not connect to host octo.im: could not connect to host octocat.ninja: could not connect to host @@ -10143,6 +10964,7 @@ oddmouse.com: could not connect to host odin.xxx: could not connect to host odinkapital.no: did not receive HSTS header odinoffice.no: did not receive HSTS header +odisealinux.com: did not receive HSTS header odosblog.de: could not connect to host odysseyandco.com: could not connect to host odysseyconservationtrust.com: did not receive HSTS header @@ -10153,6 +10975,7 @@ ofer.site: did not receive HSTS header off-the-clock.us: could not connect to host offenedialoge.de: max-age too low: 2592000 offersgame.com: could not connect to host +offerstone.cl: could not connect to host offgames.pro: could not connect to host office-ruru.com: could not connect to host officeclub.com.mx: did not receive HSTS header @@ -10161,18 +10984,18 @@ offshore-unternehmen.com: could not connect to host offshorefirma-gruenden.com: could not connect to host offshoremarineparts.com: did not receive HSTS header offtherails.ie: could not connect to host +ofggolf.com: could not connect to host oficinadocelular.com.br: could not connect to host ofo2.com: could not connect to host oganek.ie: could not connect to host oganime.com: did not receive HSTS header oggw.us: could not connect to host ogkw.de: could not connect to host -oglen.ca: could not connect to host ogogoshop.com: could not connect to host ogrodywstudniach.pl: did not receive HSTS header ohayosoro.me: could not connect to host ohm2013.org: did not receive HSTS header -ohma.ga: could not connect to host +ohma.ga: did not receive HSTS header ohnemusik.com: could not connect to host ohohrazi.com: did not receive HSTS header ohreally.de: could not connect to host @@ -10181,9 +11004,14 @@ oiepoie.nl: could not connect to host oinky.ddns.net: could not connect to host oishioffice.com: did not receive HSTS header ojbk.eu: could not connect to host +ojeremy.com: could not connect to host ojls.co: could not connect to host +okad-center.de: could not connect to host +okad.de: could not connect to host +okad.eu: could not connect to host okane.love: could not connect to host okashi.me: could not connect to host +okaz.de: could not connect to host oklahomamoversassociation.org: could not connect to host oklahomanotepro.com: could not connect to host okok-rent.com: could not connect to host @@ -10191,22 +11019,26 @@ okok.rent: could not connect to host okutama.in.th: could not connect to host olafnorge.de: did not receive HSTS header olcso-vps-szerver.hu: could not connect to host -oldandyounglesbians.us: did not receive HSTS header +oldandyounglesbians.us: could not connect to host oldschool-criminal.com: did not receive HSTS header oldtimer-trifft-flugplatz.de: did not receive HSTS header oliverdunk.com: did not receive HSTS header -oliverfaircliff.com: could not connect to host ollehbizev.co.kr: could not connect to host +ols.io: did not receive HSTS header olswangtrainees.com: could not connect to host olympe-transport.fr: did not receive HSTS header omacostudio.com: could not connect to host +omar.yt: could not connect to host omarh.net: could not connect to host +omeuanimal.com: did not receive HSTS header omgaanmetidealen.com: could not connect to host ominto.com: did not receive HSTS header +omise.co: did not receive HSTS header ommahpost.com: did not receive HSTS header omnigon.network: could not connect to host omnilab.tech: could not connect to host omniti.com: max-age too low: 1 +omorashi.org: could not connect to host omquote.gq: could not connect to host omskit.ru: did not receive HSTS header omyogarishikesh.com: did not receive HSTS header @@ -10216,11 +11048,11 @@ onearth.one: did not receive HSTS header oneb4nk.com: could not connect to host onecycling.my: could not connect to host onecycling.world: could not connect to host -onedot.nl: could not connect to host onefour.co: could not connect to host onehourloan.com: could not connect to host onehourloan.sg: did not receive HSTS header -onelawsuit.com: did not receive HSTS header +oneiros.cc: could not connect to host +onelawsuit.com: could not connect to host oneminutefilm.tv: did not receive HSTS header onemusou.com: could not connect to host onepathnetwork.com: max-age too low: 7776000 @@ -10233,22 +11065,25 @@ onetly.com: could not connect to host onetwentyseven001.com: did not receive HSTS header onewebdev.info: could not connect to host oneworldbank.com: did not receive HSTS header -onewpst.com: did not receive HSTS header +onewpst.com: could not connect to host onguardonline.gov: did not receive HSTS header oniichan.us: did not receive HSTS header +onionbot.ga: could not connect to host onioncloud.org: could not connect to host onionsburg.com: could not connect to host online-casino.eu: did not receive HSTS header online-scene.com: did not receive HSTS header online-wetten.de: did not receive HSTS header +online.swedbank.se: did not receive HSTS header onlinebiller.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] -onlinebillingform.com: did not receive HSTS header +onlinebillingform.com: could not connect to host onlinecasinobluebook.com: could not connect to host onlinecompliance.org: did not receive HSTS header onlinedemo.hu: could not connect to host onlinedeposit.us: could not connect to host onlinekasino.de: did not receive HSTS header onlinepollsph.com: could not connect to host +onlineporno.tv: could not connect to host onlineschadestaat.nl: did not receive HSTS header onlinespielothek.com: did not receive HSTS header onlinewetten.de: could not connect to host @@ -10256,8 +11091,9 @@ only-roses.co.uk: did not receive HSTS header only-roses.com: max-age too low: 2592000 onlyshopstation.com: did not receive HSTS header onlyzero.net: could not connect to host -onmuvo.com: did not receive HSTS header +onmuvo.com: could not connect to host onmyoji.biz: could not connect to host +onnee.ch: could not connect to host ononpay.com: did not receive HSTS header onovlena.dn.ua: could not connect to host onpatient.com: did not receive HSTS header @@ -10285,10 +11121,10 @@ oopsorup.com: could not connect to host oost.io: could not connect to host opatut.de: did not receive HSTS header opcaobolsas.com.br: could not connect to host +open-domotics.info: could not connect to host open-future.be: did not receive HSTS header open-mx.de: could not connect to host open-to-repair.fr: max-age too low: 86400 -opencad.io: did not receive HSTS header openclub24.ru: could not connect to host openconcept.no: did not receive HSTS header openconnect.com.au: could not connect to host @@ -10307,8 +11143,9 @@ opensourcehouse.net: could not connect to host openspace.xxx: did not receive HSTS header opensrd.com: could not connect to host openssf.org: did not receive HSTS header -opentexon.com: could not connect to host +opentexon.com: did not receive HSTS header openxmpp.com: could not connect to host +operad.fr: could not connect to host opiates.net: did not receive HSTS header opic.gov: could not connect to host opim.ca: did not receive HSTS header @@ -10316,25 +11153,32 @@ opinion8td.com: did not receive HSTS header opinionicentrifuga.it: could not connect to host opinionipannolini.it: could not connect to host opioids.com: could not connect to host +oppag.com.br: did not receive HSTS header opperwall.net: could not connect to host -opportunitycorps.org: max-age too low: 43200 +opposer.me: could not connect to host opsafewinter.net: could not connect to host opsbears.com: did not receive HSTS header -opstacks.com: did not receive HSTS header +opsnotepad.com: could not connect to host +opstacks.com: could not connect to host optenhoefel.de: could not connect to host +optiekzien.nl: did not receive HSTS header optimal-e.com: did not receive HSTS header -optimist.bg: could not connect to host optimista.soy: could not connect to host +optimize-jpg.com: could not connect to host optometriepunt.nl: did not receive HSTS header optumrxhealthstore.com: could not connect to host opunch.org: did not receive HSTS header oracaodocredo.com.br: could not connect to host orangekey.tk: could not connect to host +orangenuts.in: could not connect to host +oranges.tokyo: could not connect to host +orangetravel.eu: could not connect to host oranic.com: did not receive HSTS header orbiosales.com: could not connect to host orbitcom.de: did not receive HSTS header orbitdefence.co.uk: could not connect to host orbograph-hrcm.com: could not connect to host +orcahq.com: did not receive HSTS header order.one: could not connect to host ordereat.fr: could not connect to host orderlounge.de: did not receive HSTS header @@ -10342,31 +11186,29 @@ oref-idf.com: did not receive HSTS header oref-idf.net: did not receive HSTS header oref-idf.org: did not receive HSTS header oregonmu.org: did not receive HSTS header -oreka.online: could not connect to host orelavtomaster.ru: did not receive HSTS header orfeo-engineering.ch: could not connect to host organic-superfood.net: could not connect to host +organicae.com: did not receive HSTS header oricejoc.com: could not connect to host originalmockups.com: did not receive HSTS header originalsport.com.br: could not connect to host -originpc.com: could not connect to host orioncustompcs.com: could not connect to host orionfcu.com: did not receive HSTS header -orionfinancialservices.com: did not receive HSTS header orionrebellion.com: did not receive HSTS header orleika.ml: could not connect to host oroweatorganic.com: could not connect to host orthodoxy.lt: did not receive HSTS header +orui.com.br: could not connect to host orum.in: could not connect to host osaiyuwu.com: could not connect to host -oscarmashauri.com: could not connect to host +oscarmashauri.com: did not receive HSTS header oscillation-services.fr: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] -oscloud.com: could not connect to host oscloud.com.ua: could not connect to host oscreen.me: could not connect to host oscreen.org: could not connect to host oscsdp.cz: could not connect to host -osdls.gov: could not connect to host +osdls.gov: did not receive HSTS header osha-kimi.com: did not receive HSTS header oshanko.de: could not connect to host oshinagaki.jp: could not connect to host @@ -10382,29 +11224,30 @@ oswaldmattgroup.com: did not receive HSTS header otakuworld.de: could not connect to host other98.com: did not receive HSTS header othercode.nl: could not connect to host +otherkinforum.com: could not connect to host othermedia.cc: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] otherstuff.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] otichi.com: did not receive HSTS header otinane.eu: could not connect to host +otmns.net: could not connect to host otokonna.com: could not connect to host otrsdemo.hu: did not receive HSTS header ottospora.nl: could not connect to host -ouaibe.qc.ca: could not connect to host ourbank.com: max-age too low: 2592000 ourchoice2016.com: could not connect to host -outdooradventures.pro: did not receive HSTS header +ourls.win: could not connect to host +ourmaster.org: did not receive HSTS header +outdooradventures.pro: could not connect to host outdoorproducts.com: max-age too low: 7889238 outreachbuddy.com: could not connect to host outsider.im: could not connect to host outurnate.com: could not connect to host -ouvirmusica.com.br: could not connect to host +ouvirmusica.com.br: did not receive HSTS header ovenapp.io: did not receive HSTS header over25tips.com: did not receive HSTS header -overclockers.ge: could not connect to host override.io: could not connect to host -overrustle.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] +overrustle.com: could not connect to host oversight.io: could not connect to host -overstockpromote.com: did not receive HSTS header ovuscloud.de: could not connect to host ovwane.com: could not connect to host owennelson.me: max-age too low: 2592000 @@ -10415,9 +11258,9 @@ owngeek.com: could not connect to host ownmovies.fr: could not connect to host ownspec.com: could not connect to host owothisdiz.pw: could not connect to host +oxanababy.com: could not connect to host oxro.co: did not receive HSTS header oxro.io: did not receive HSTS header -oxygaming.com: could not connect to host oxygenabsorbers.com: did not receive HSTS header oxymc.com: did not receive HSTS header oxynux.fr: could not connect to host @@ -10430,25 +11273,45 @@ p-rickroll-o.pw: could not connect to host p.linode.com: could not connect to host p1c.pw: could not connect to host p22.co: did not receive HSTS header +p2av.com: could not connect to host p3.marketing: did not receive HSTS header p3in.com: could not connect to host p3ter.fr: did not receive HSTS header p8r.de: did not receive HSTS header paavolastudio.com: did not receive HSTS header +pablo.im: could not connect to host +pablo.scot: could not connect to host +pablo.sh: could not connect to host +pabloarteaga.co.uk: could not connect to host +pabloarteaga.com: could not connect to host +pabloarteaga.com.es: could not connect to host +pabloarteaga.es: could not connect to host +pabloarteaga.eu: could not connect to host +pabloarteaga.info: could not connect to host +pabloarteaga.me: could not connect to host +pabloarteaga.name: could not connect to host +pabloarteaga.net: could not connect to host +pabloarteaga.nom.es: could not connect to host +pabloarteaga.org: could not connect to host +pabloarteaga.science: could not connect to host +pabloarteaga.tech: could not connect to host +pabloarteaga.uk: could not connect to host +pabloarteaga.xyz: could not connect to host pablocamino.tk: could not connect to host pablofain.com: did not receive HSTS header pablorey-art.com: did not receive HSTS header -pachaiyappas.org: could not connect to host +pachaiyappas.org: did not receive HSTS header packair.com: did not receive HSTS header packetapp.ru: could not connect to host packetcrash.net: could not connect to host packlane.com: did not receive HSTS header -packshot-creator.com: did not receive HSTS header pacnetwork.io: could not connect to host pacoda.de: could not connect to host pactf-flag-4boxdpa21ogonzkcrs9p.com: could not connect to host pactocore.org: could not connect to host +padeoe.com: did not receive HSTS header pader-deko.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] +padovani.de: could not connect to host paestbin.com: could not connect to host page: could not connect to host pagerate.io: could not connect to host @@ -10456,7 +11319,6 @@ pages-tocaven.com: could not connect to host pagetoimage.com: could not connect to host paginapolitica.ro: could not connect to host pagure.org: could not connect to host -pahlawanpulsa.com: did not receive HSTS header pahnid.com: could not connect to host paigeglass.com: did not receive HSTS header paino.cloud: could not connect to host @@ -10465,14 +11327,16 @@ paintingat.com: could not connect to host paio2-rec.com: could not connect to host paio2.com: did not receive HSTS header paisaone.com: could not connect to host +paizinhovirgula.com: did not receive HSTS header pajonzeck.de: could not connect to host paket.io: could not connect to host -paket.ml: could not connect to host +paket.ml: did not receive HSTS header +paketkreditsuzuki.com: could not connect to host paku.me: could not connect to host palariviera.com: could not connect to host palationtrade.com: could not connect to host +palawan.jp: could not connect to host palazzotalamo.it: did not receive HSTS header -paleolowcarb.de: did not receive HSTS header paleosquawk.com: could not connect to host pallet.io: did not receive HSTS header palmer.im: could not connect to host @@ -10492,8 +11356,8 @@ panni.me: could not connect to host panoranordic.net: could not connect to host panos.io: did not receive HSTS header pansu.space: could not connect to host -pants-off.xyz: could not connect to host pantsu.cat: did not receive HSTS header +paolo565.org: did not receive HSTS header papalytics.com: could not connect to host papatest24.de: could not connect to host papeda.net: could not connect to host @@ -10503,20 +11367,21 @@ papercrunch.io: could not connect to host paperhaven.com.au: max-age too low: 7889238 papermasters.com: could not connect to host papersmart.net: could not connect to host +paperwork.co.za: could not connect to host papierniak.net: could not connect to host papygeek.com: could not connect to host -parabhairavayoga.com: max-age too low: 0 +parabhairavayoga.com: did not receive HSTS header paradiesgirls.ch: could not connect to host paradise-engineers.com: could not connect to host paragon.edu: did not receive HSTS header parakranov.ru: did not receive HSTS header paranormalweirdo.com: could not connect to host +parav.xyz: did not receive HSTS header pardnoy.com: could not connect to host parent5446.us: could not connect to host parentmail.co.uk: did not receive HSTS header -parfum-baza.ru: did not receive HSTS header +parfum-baza.ru: could not connect to host paris-cyber.fr: did not receive HSTS header -parisbloom.com: did not receive HSTS header parisdimanche.com: did not receive HSTS header parishome.jp: could not connect to host parisvox.info: did not receive HSTS header @@ -10529,10 +11394,11 @@ parksubaruoemparts.com: could not connect to host parkwithark.com: could not connect to host parodybit.net: did not receive HSTS header parpaing-paillette.net: could not connect to host +parteaga.com: could not connect to host +parteaga.net: could not connect to host particonpsplus.it: could not connect to host -partiono.com: did not receive HSTS header partirkyoto.jp: did not receive HSTS header -partnercardservices.com: did not receive HSTS header +partnercardservices.com: could not connect to host partnerwerk.de: did not receive HSTS header partyhaus.ovh: could not connect to host partyhireformby.co.uk: did not receive HSTS header @@ -10543,7 +11409,6 @@ partyvan.it: could not connect to host partyvan.moe: could not connect to host partyvan.nl: could not connect to host partyvan.se: could not connect to host -parvaneh.fr: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] pascalchristen.ch: did not receive HSTS header pasportaservo.org: did not receive HSTS header passpilot.co.uk: did not receive HSTS header @@ -10553,6 +11418,7 @@ password.codes: could not connect to host passwordbox.com: did not receive HSTS header passwordrevelator.net: did not receive HSTS header passwordscon.com: could not connect to host +pasta-factory.co.il: could not connect to host pastaf.com: could not connect to host pastdream.xyz: could not connect to host paste.linode.com: could not connect to host @@ -10563,7 +11429,6 @@ pasteros.io: could not connect to host pastie.se: could not connect to host pastorcanadense.com.br: could not connect to host pataua.kiwi: did not receive HSTS header -patbatesremodeling.com: could not connect to host paternitydnatest.com: could not connect to host patfs.com: did not receive HSTS header pathwaytofaith.com: could not connect to host @@ -10572,13 +11437,14 @@ patriaco.net: did not receive HSTS header patrick.dark.name: could not connect to host patrickbusch.net: could not connect to host patrickneuro.de: could not connect to host +patrickquinn.ca: did not receive HSTS header +patrickschneider.me: could not connect to host patt.us: did not receive HSTS header patterson.mp: could not connect to host paul-kerebel.pro: could not connect to host paul-schmidt.de: max-age too low: 0 paulbunyanmls.com: did not receive HSTS header paulchen.at: did not receive HSTS header -paulerhof.com: did not receive HSTS header paulproell.at: did not receive HSTS header paulrudge.codes: could not connect to host paulshir.com: could not connect to host @@ -10587,12 +11453,14 @@ paulyang.cn: did not receive HSTS header paveljanda.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] pavelkahouseforcisco.com: did not receive HSTS header pavelstriz.cz: could not connect to host +pawsru.org: could not connect to host paxdei.com.br: could not connect to host paxwinkel.nl: could not connect to host pay.gigahost.dk: did not receive HSTS header pay.ubuntu.com: could not connect to host payclixpayments.com: did not receive HSTS header payfreez.com: could not connect to host +paykings.com: did not receive HSTS header payload.tech: could not connect to host payments-reference.org: could not connect to host payments.google.com: did not receive HSTS header (error ignored - included regardless) @@ -10605,14 +11473,10 @@ pbapp.net: did not receive HSTS header pbbr.com: did not receive HSTS header pbcknd.ml: could not connect to host pbcomp.com.au: did not receive HSTS header -pbprint.ru: did not receive HSTS header -pbqs.site: could not connect to host -pbreen.co.uk: could not connect to host +pbprint.ru: could not connect to host pbscreens.com: could not connect to host pbytes.com: could not connect to host pc-nf.de: did not receive HSTS header -pc-servis-brno.com: did not receive HSTS header -pc-tablet.com: max-age too low: 0 pc-tweak.de: did not receive HSTS header pcat.io: could not connect to host pcfun.net: did not receive HSTS header @@ -10632,16 +11496,16 @@ pecot.fr: did not receive HSTS header peekops.com: could not connect to host peerherrmann.de: could not connect to host peerless.ae: could not connect to host -peinard.net: could not connect to host +peinard.net: did not receive HSTS header peirong.me: could not connect to host peissen.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] pekkapikkarainen.fi: did not receive HSTS header pekkarik.ru: could not connect to host peliculasaudiolatinoonline.com: could not connect to host +peliseries24.com: could not connect to host pemagrid.org: could not connect to host pemberton.at: did not receive HSTS header penablog.com: did not receive HSTS header -penfold.fr: could not connect to host pengisatelier.net: could not connect to host pengui.uk: could not connect to host penguinclientsystem.com: did not receive HSTS header @@ -10650,6 +11514,7 @@ pennyapp.io: did not receive HSTS header pennylane.me.uk: did not receive HSTS header pensanisso.com: did not receive HSTS header penser-electronique.com: did not receive HSTS header +pension-veldzigt.nl: did not receive HSTS header pension-waldesruh.de: did not receive HSTS header pensiunealido.ro: could not connect to host pentagram.me: max-age too low: 2592000 @@ -10663,10 +11528,12 @@ pepsicoemployeepreferencesurvey.com: could not connect to host per-pedes.at: did not receive HSTS header perdel.cn: could not connect to host pereuda.com: could not connect to host +perez-marrero.com: could not connect to host perfect-radiant-wrinkles.com: could not connect to host perfectionis.me: could not connect to host -perfectionunite.com: did not receive HSTS header +perfectionunite.com: could not connect to host perfectseourl.com: did not receive HSTS header +performaride.com.au: did not receive HSTS header performaterm.ro: could not connect to host performous.org: did not receive HSTS header perfumista.vn: did not receive HSTS header @@ -10684,6 +11551,7 @@ personalcommunicationsecurity.com: could not connect to host personaldatabasen.no: could not connect to host personalinjurylist.com: could not connect to host personalizedtouch.co: could not connect to host +personcar.com.br: could not connect to host personnedisparue.fr: could not connect to host persson.im: could not connect to host perthdevicelab.com: did not receive HSTS header @@ -10691,21 +11559,25 @@ pestalozzishop.com.br: could not connect to host pesto.video: could not connect to host pet-life.top: did not receive HSTS header pet-nsk.ru: could not connect to host -petbooking.it: did not receive HSTS header +petangen.se: could not connect to host petchart.net: could not connect to host -peterkshultz.com: did not receive HSTS header +peterfolta.net: could not connect to host +petermazur.com: did not receive HSTS header peternagy.ie: did not receive HSTS header +peters.consulting: could not connect to host petersmark.com: did not receive HSTS header pethelpers.org: did not receive HSTS header pethub.com: did not receive HSTS header petit.site: could not connect to host petlife.od.ua: could not connect to host petplum.com: could not connect to host +petrachuk.ru: could not connect to host +petravdbos.nl: could not connect to host petrkrapek.cz: did not receive HSTS header petrolplus.ru: max-age too low: 7776000 petrovsky.pro: could not connect to host petsittersservices.com: could not connect to host -pettsy.com: could not connect to host +pettsy.com: did not receive HSTS header peuf.shop: could not connect to host peuterspeelzaalhoekvanholland.nl: could not connect to host pewboards.com: could not connect to host @@ -10729,20 +11601,22 @@ phcmembers.com: did not receive HSTS header phcnetworks.net: did not receive HSTS header phdsupply.com: could not connect to host phdwuda.com: could not connect to host +phelx.de: could not connect to host phenomeno-porto.com: could not connect to host phenomeno.nl: could not connect to host phenomenoporto.com: could not connect to host phenomenoporto.nl: could not connect to host -phil.tw: could not connect to host philadelphiacandies.com: did not receive HSTS header philadelphiadancefoundation.org: could not connect to host philipmordue.co.uk: could not connect to host philippa.cool: could not connect to host phillippi.me: could not connect to host phillmoore.com: did not receive HSTS header -phillprice.com: did not receive HSTS header +phillprice.com: could not connect to host philonas.net: did not receive HSTS header philpropertygroup.com: could not connect to host +phippsreporting.com: did not receive HSTS header +phishing.rs: did not receive HSTS header phoebe.co.nz: did not receive HSTS header phoenicis.com.ua: did not receive HSTS header phoenix.dj: did not receive HSTS header @@ -10755,14 +11629,15 @@ photographyforchange.com: could not connect to host photographyforchange.org: could not connect to host photops.fr: could not connect to host photosoftware.nl: could not connect to host -phototag.org: could not connect to host +phototag.org: did not receive HSTS header php-bach.org: could not connect to host phperformances.fr: did not receive HSTS header phpfashion.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] +phpinfo.in.th: could not connect to host +phr34kz.pw: did not receive HSTS header phrasing.me: could not connect to host +phumin.in.th: did not receive HSTS header phuong.faith: could not connect to host -physicaltherapist.com: did not receive HSTS header -pi-box.ml: could not connect to host pi-eng.fr: did not receive HSTS header pianetaottica.eu: could not connect to host pianetaottica.info: could not connect to host @@ -10770,6 +11645,7 @@ pianetaottica.net: could not connect to host pianetaottica.org: could not connect to host pias-button.net: did not receive HSTS header piasto.com.cy: could not connect to host +piatanoua.md: could not connect to host picallo.es: could not connect to host picardiascr.com: could not connect to host pickr.co: could not connect to host @@ -10780,45 +11656,53 @@ picscare.co.uk: did not receive HSTS header picshare.nz: could not connect to host pidatacenters.com: did not receive HSTS header pidomex.com: did not receive HSTS header +piedfeed.com: did not receive HSTS header piekacz.co.uk: could not connect to host pierrejeansuau.fr: could not connect to host pieterjangeeroms.me: could not connect to host piggott.me.uk: did not receive HSTS header +pigritia.de: could not connect to host +piils.fr: did not receive HSTS header pikmy.com: could not connect to host pilgermaske.org: did not receive HSTS header piligrimname.com: could not connect to host pillowandpepper.com: did not receive HSTS header +pilotandy.com: could not connect to host pilotcrowd.nl: did not receive HSTS header pimpmymac.ru: did not receive HSTS header +pimpmypaper.com: could not connect to host pims.global: did not receive HSTS header pimspage.nl: could not connect to host pin.net.au: did not receive HSTS header +pineapplesapp.com: did not receive HSTS header pinebaylibrary.org: could not connect to host +pinesandneedles.com: max-age too low: 7889238 pinkfis.ch: did not receive HSTS header pinkhq.com: did not receive HSTS header pinkinked.com: could not connect to host -pinoyonlinetv.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] +pinkyf.com: did not receive HSTS header +pinoylinux.org: did not receive HSTS header +pintoselectrician.co.za: did not receive HSTS header pioche.ovh: did not receive HSTS header -pipenny.net: could not connect to host pippen.io: could not connect to host pips.rocks: could not connect to host pir9.com: did not receive HSTS header pirata.ga: did not receive HSTS header pirateahoy.eu: could not connect to host -piratebit.tech: max-age too low: 0 +piratebit.tech: could not connect to host piratedb.com: could not connect to host piratedot.com: could not connect to host piratelist.online: could not connect to host piratenlogin.de: could not connect to host piratepay.io: could not connect to host -piratepay.ir: could not connect to host +piratepay.ir: did not receive HSTS header pirateproxy.pe: could not connect to host pirateproxy.sx: did not receive HSTS header pirateproxy.vip: could not connect to host pirati.cz: max-age too low: 604800 piratte.net: did not receive HSTS header pirganj24.com: did not receive HSTS header -pirlitu.com: could not connect to host +pirlitu.com: did not receive HSTS header pisexy.me: did not receive HSTS header pisidia.de: could not connect to host pitchup.com: did not receive HSTS header @@ -10826,23 +11710,35 @@ pitonarms.com: could not connect to host pitsstop.nu: could not connect to host pittaya.com: did not receive HSTS header pittonpreschool.com: did not receive HSTS header -piwko.co: could not connect to host pix-geeks.com: max-age too low: 2592000 pixdigital.net: did not receive HSTS header -pixeame.com: did not receive HSTS header +pixeame.com: could not connect to host pixel.google.com: did not receive HSTS header (error ignored - included regardless) pixelcode.com.au: could not connect to host +pixelesque.uk: could not connect to host pixelgliders.de: could not connect to host pixelhero.co.uk: did not receive HSTS header +pixelpoint.io: did not receive HSTS header pixi.chat: could not connect to host pixi.me: did not receive HSTS header pixlfox.com: could not connect to host pizzadoc.ch: could not connect to host +pj00100.com: did not receive HSTS header +pj00200.com: did not receive HSTS header +pj00300.com: did not receive HSTS header +pj00400.com: did not receive HSTS header +pj00600.com: did not receive HSTS header +pj00700.com: did not receive HSTS header +pj00800.com: could not connect to host +pj00900.com: did not receive HSTS header +pj02.com: did not receive HSTS header pj83.duckdns.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] pj881988.com: could not connect to host -pjbet.mg: did not receive HSTS header -pjili.com: did not receive HSTS header +pjbet.mg: could not connect to host +pjsec.tk: could not connect to host pkautodesign.com: did not receive HSTS header +pkbjateng.or.id: could not connect to host +pko.ch: could not connect to host pkschat.com: could not connect to host plaasprodukte.com: could not connect to host placefade.com: could not connect to host @@ -10852,13 +11748,13 @@ plaettliaktion.ch: did not receive HSTS header plagiarismcheck.org: max-age too low: 604800 plakbak.nl: could not connect to host planbox.info: could not connect to host -planespotterblog.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] +planeexplanation.com: could not connect to host planete-secu.com: could not connect to host planetromeo.com: could not connect to host planktonholland.com: did not receive HSTS header planpharmacy.com: could not connect to host plant.ml: could not connect to host -plantroon.com: could not connect to host +plantroon.com: did not receive HSTS header plass.hamburg: could not connect to host plasvilledescartaveis.com.br: could not connect to host platform.lookout.com: could not connect to host @@ -10868,25 +11764,25 @@ play.google.com: did not receive HSTS header (error ignored - included regardles playdreamcraft.com.br: did not receive HSTS header playerhunter.com: did not receive HSTS header playflick.com: did not receive HSTS header +playkh.com: did not receive HSTS header playmaker.io: did not receive HSTS header playmaza.live: did not receive HSTS header playmfe.com: could not connect to host -playnation.io: could not connect to host +playsoundevents.be: could not connect to host playsource.co: could not connect to host playwhyyza.com: could not connect to host +playyou.be: could not connect to host please-deny.me: did not receive HSTS header -pleaseuseansnisupportedbrowser.ml: could not connect to host pleasure-science.com: could not connect to host pleasure.forsale: could not connect to host plen.io: could not connect to host -plexi.dyndns.tv: could not connect to host plexpy13.ddns.net: could not connect to host plexusmd.com: did not receive HSTS header plfgr.eu.org: could not connect to host plhdb.org: did not receive HSTS header plinc.co: could not connect to host plirt.ru: could not connect to host -ploader.ru: could not connect to host +ploader.ru: max-age too low: 604800 plogable.co: could not connect to host plomberierenga.com: max-age too low: 2592000 plombirator.kz: did not receive HSTS header @@ -10895,12 +11791,16 @@ ploup.net: could not connect to host pluff.nl: did not receive HSTS header plugboard.xyz: could not connect to host pluggedhead.com: did not receive HSTS header -plus-digital.net: could not connect to host +plumbingboksburg.co.za: could not connect to host +plumbingman.com.au: did not receive HSTS header +plus-digital.net: did not receive HSTS header plus-u.com.au: did not receive HSTS header plus.sandbox.google.com: did not receive HSTS header (error ignored - included regardless) plus1s.tk: could not connect to host +plushev.com: did not receive HSTS header plussizereviews.com: could not connect to host plut.org: did not receive HSTS header +pluth.org: did not receive HSTS header plymouthsoftplay.co.uk: could not connect to host pm13-media.cz: could not connect to host pmac.pt: could not connect to host @@ -10908,13 +11808,14 @@ pmbremer.de: could not connect to host pmctire.com: did not receive HSTS header pmemanager.fr: did not receive HSTS header pmessage.ch: could not connect to host +pmheart.site: could not connect to host pmnts.io: could not connect to host pneusgppremium.com.br: did not receive HSTS header pnukee.com: did not receive HSTS header po.gl: could not connect to host pocakdrops.com: did not receive HSTS header pocket-lint.com: did not receive HSTS header -pocketinsure.com: could not connect to host +pocketfullofapps.com: did not receive HSTS header pocketmemories.net: could not connect to host pocketsix.com: could not connect to host pocloud.homelinux.net: could not connect to host @@ -10928,6 +11829,7 @@ poinsot.beer: could not connect to host pointeringles.com: could not connect to host pointiswunderland.de: did not receive HSTS header pointpro.de: did not receive HSTS header +points4unitedway.com: could not connect to host pointworksacademy.com: could not connect to host pokeduel.me: did not receive HSTS header pokomichi.com: did not receive HSTS header @@ -10950,25 +11852,26 @@ pollpodium.nl: could not connect to host polsport.live: did not receive HSTS header polycoise.com: could not connect to host polycrypt.us: could not connect to host -polymorph.rs: could not connect to host polypho.nyc: could not connect to host polysage.org: could not connect to host polytechecosystem.vc: could not connect to host +pomardaserra.com: could not connect to host pomfe.co: could not connect to host pompefunebrilariviera.it: could not connect to host pompompoes.com: did not receive HSTS header pondof.fish: could not connect to host -poneytelecom.org: did not receive HSTS header +poneytelecom.org: could not connect to host ponteencima.com: could not connect to host ponteus.com: could not connect to host pontodogame.com.br: could not connect to host pontokay.com.br: could not connect to host pontualcomp.com: could not connect to host -pony.today: did not receive HSTS header +pony.today: could not connect to host ponythread.com: did not receive HSTS header poolinstallers.co.za: could not connect to host poolsandstuff.com: did not receive HSTS header poon.tech: could not connect to host +popcultureshack.com: could not connect to host popi.se: did not receive HSTS header popkins.cf: could not connect to host popkins.ga: could not connect to host @@ -10977,15 +11880,25 @@ popkins.ml: could not connect to host popkins.tk: could not connect to host popupsoftplay.com: could not connect to host poris.web.id: could not connect to host +porn77.info: could not connect to host +pornbay.org: could not connect to host pornblog.org: could not connect to host -pornstars.me: could not connect to host +porncandi.com: could not connect to host +porno-gif.ru: could not connect to host +pornohub.su: could not connect to host +pornolab-net.appspot.com: could not connect to host +pornoserver.eu: could not connect to host +pornstars.me: did not receive HSTS header porschen.fr: could not connect to host port.social: could not connect to host +portale-randkowe.pl: did not receive HSTS header +portalhubnuti.cz: did not receive HSTS header portalisapres.cl: could not connect to host portalm.tk: could not connect to host portalmundo.xyz: could not connect to host portalplatform.net: could not connect to host -portaluniversalista.org: could not connect to host +portaluniversalista.org: did not receive HSTS header +portalveneza.com.br: did not receive HSTS header portefeuillesignalen.nl: did not receive HSTS header poshpak.com: max-age too low: 86400 positivesobrietyinstitute.com: did not receive HSTS header @@ -10999,18 +11912,14 @@ posylka.de: did not receive HSTS header potatoheads.net: could not connect to host potbar.com: could not connect to host potbox.com: could not connect to host -potenzmittel-levitra.com: max-age too low: 300 -potenzmittel-webshop.com: max-age too low: 3600 potenzmittelblog.info: could not connect to host -potenzpillen-kaufen.biz: did not receive HSTS header -potenzprobleme-info.net: did not receive HSTS header potlytics.com: could not connect to host potomania.cz: could not connect to host potpourrifestival.de: did not receive HSTS header potsky.com: did not receive HSTS header pouet.it: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] pouets.ovh: could not connect to host -poupatempo.org: could not connect to host +poupatempo.org: did not receive HSTS header pourmesloisirs.com: could not connect to host pourout.org: did not receive HSTS header poussinooz.fr: could not connect to host @@ -11028,18 +11937,20 @@ powersergunited.com: could not connect to host powersergunited.org: could not connect to host powershellmagic.com: could not connect to host powershift.ne.jp: did not receive HSTS header -powerxequality.com: could not connect to host +powerxequality.com: did not receive HSTS header poy-tech.com: could not connect to host pozniak.at: did not receive HSTS header pozyczka-bez-zaswiadczen.pl: did not receive HSTS header pozytywnyplan.pl: could not connect to host pozzo-balbi.com: did not receive HSTS header -ppoozl.com: could not connect to host +ppembed.com: did not receive HSTS header pppo.gov: could not connect to host ppr-truby.ru: could not connect to host +ppsvcs2.com: did not receive HSTS header ppuu.org: did not receive HSTS header ppy3.com: did not receive HSTS header practicallabs.com: could not connect to host +practicalprogrammer.tech: could not connect to host practodev.com: could not connect to host pratinav.xyz: could not connect to host prattpokemon.com: could not connect to host @@ -11047,19 +11958,22 @@ praxis-research.info: did not receive HSTS header precedecaritas.com.br: could not connect to host precisionaeroimaging.com: did not receive HSTS header prediksisydney.com: could not connect to host +preexport.com: did not receive HSTS header preezzie.com: could not connect to host prefis.com: did not receive HSTS header prefontaine.name: could not connect to host prego-shop.de: could not connect to host +preio.cn: could not connect to host preisser-it.de: did not receive HSTS header preisser.it: did not receive HSTS header preissler.co.uk: could not connect to host prekladysanca.cz: could not connect to host prelist.org: did not receive HSTS header +premaritalsex.info: could not connect to host premioambiente.it: did not receive HSTS header premiumzweirad.de: max-age too low: 7776000 +prepaidgirl.com: could not connect to host prepandgo-euro.com: could not connect to host -preposted.com: did not receive HSTS header preppertactics.com: did not receive HSTS header preprodfan.gov: could not connect to host prescriptionrex.com: did not receive HSTS header @@ -11069,6 +11983,7 @@ press-presse.ca: did not receive HSTS header pressenews.net: did not receive HSTS header pressfreedomfoundation.org: did not receive HSTS header prestigeeventshire.co.uk: could not connect to host +prestonapp.com: could not connect to host prettygrouse.com: did not receive HSTS header prettyphotoart.de: did not receive HSTS header prettytunesapp.com: could not connect to host @@ -11076,27 +11991,30 @@ pretzlaff.info: did not receive HSTS header preworkout.me: could not connect to host prgslab.net: could not connect to host priceholic.com: could not connect to host +pridetechdesign.com: did not receive HSTS header pridoc.se: did not receive HSTS header prifo.se: could not connect to host prijsvergelijken.ml: could not connect to host prilock.com: did not receive HSTS header -primaconsulting.net: could not connect to host primecaplending.com: could not connect to host +primordialsnooze.com: could not connect to host primotiles.co.uk: did not receive HSTS header -prinbanat.ngo: could not connect to host +prinbanat.ngo: did not receive HSTS header princeofwhales.com: did not receive HSTS header +princesparktouch.com: did not receive HSTS header princessbackpack.de: could not connect to host princessmargaretlotto.com: did not receive HSTS header prinesdoma.at: did not receive HSTS header printerest.io: could not connect to host printersonline.be: did not receive HSTS header printery.be: could not connect to host +printexpress.cloud: could not connect to host printfn.com: did not receive HSTS header +printler.com: did not receive HSTS header priolkar.com: could not connect to host prism-communication.com: could not connect to host pristineevents.co.uk: did not receive HSTS header pritchett.xyz: could not connect to host -privacyforjournalists.org.au: could not connect to host privacylabs.io: did not receive HSTS header privacymanatee.com: could not connect to host privacynow.eu: did not receive HSTS header @@ -11110,6 +12028,7 @@ prmte.com: max-age too low: 2592000 prnt.li: did not receive HSTS header pro-image.de: did not receive HSTS header pro-zone.com: could not connect to host +proact-it.co.uk: could not connect to host proactive.run: could not connect to host procode.gq: could not connect to host prodpad.com: did not receive HSTS header @@ -11123,9 +12042,10 @@ profloorstl.com: did not receive HSTS header profpay.com: could not connect to host profundr.com: could not connect to host profusion.io: could not connect to host -progblog.net: could not connect to host +progblog.net: max-age too low: 0 progolfjourney.com: could not connect to host program-and.work: could not connect to host +programmaticmagic.com: could not connect to host programmingstudent.com: could not connect to host progress-technologies.com: could not connect to host progressivecfo.co.nz: could not connect to host @@ -11134,7 +12054,7 @@ proitconsulting.com.au: could not connect to host proj.org.cn: could not connect to host project-rune.tech: could not connect to host project-sparks.eu: did not receive HSTS header -project-splash.com: could not connect to host +project-splash.com: max-age too low: 0 project-stats.com: could not connect to host projectascension.io: could not connect to host projectasterk.com: could not connect to host @@ -11150,7 +12070,6 @@ projektik.cz: did not receive HSTS header projektzentrisch.de: could not connect to host projetoresecia.com: could not connect to host prokop.ovh: could not connect to host -prolan.pw: did not receive HSTS header promarketer.net: did not receive HSTS header promecon-gmbh.de: did not receive HSTS header promedicalapplications.com: did not receive HSTS header @@ -11158,6 +12077,7 @@ promesa.net: did not receive HSTS header promhadan.com: could not connect to host promocao.email: could not connect to host promohunt.ru: did not receive HSTS header +pronostic-king.fr: could not connect to host prontocleaners.co.uk: could not connect to host prontolight.com: did not receive HSTS header prontomovers.co.uk: could not connect to host @@ -11170,24 +12090,26 @@ proslimdiets.com: could not connect to host prosocialmachines.com: could not connect to host prosoft.sk: did not receive HSTS header prosperident.com: did not receive HSTS header +prostohobby.ru: could not connect to host +prostoporno.net: could not connect to host proteapower.co.za: could not connect to host protecciondelconsumidor.gov: did not receive HSTS header proteinnuts.cz: could not connect to host proteinnuts.sk: could not connect to host protonmail.ch: did not receive HSTS header protoyou.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] -proveits.me: could not connect to host -provisionaldriving.com: could not connect to host -provitacare.com: could not connect to host +provisionaldriving.com: did not receive HSTS header +provisionircd.tk: did not receive HSTS header +provitacare.com: did not receive HSTS header proweser.de: did not receive HSTS header prowhisky.de: did not receive HSTS header -proxbox.net: could not connect to host +proxbox.net: did not receive HSTS header proxi.cf: could not connect to host proximato.com: could not connect to host proxybay.al: could not connect to host proxybay.club: could not connect to host proxybay.info: did not receive HSTS header -proxybay.top: max-age too low: 0 +proxybay.top: could not connect to host proxydesk.eu: could not connect to host proxydesk.net: could not connect to host proxyowl.pw: could not connect to host @@ -11195,7 +12117,7 @@ proxyportal.me: could not connect to host proxyportal.org: did not receive HSTS header proxyrox.com: could not connect to host proxyweb.us: did not receive HSTS header -prpr.cloud: could not connect to host +proymaganadera.com: did not receive HSTS header prpsss.com: could not connect to host prstatic.com: could not connect to host pruikshop.nl: could not connect to host @@ -11205,7 +12127,6 @@ ps-qa.com: could not connect to host ps-x.ru: could not connect to host pscleaningsolutions.co.uk: could not connect to host pseudo.coffee: could not connect to host -pshostpk.com: did not receive HSTS header psicologia.co.ve: could not connect to host psicologoforensebarcelona.com: did not receive HSTS header psicosalud.online: could not connect to host @@ -11218,7 +12139,8 @@ pstudio.me: max-age too low: 0 psw.academy: could not connect to host psw.consulting: could not connect to host psychiatrie-betreuung.ch: did not receive HSTS header -psychoco.net: could not connect to host +psylab.re: could not connect to host +psylab.vip: could not connect to host psynapse.net.au: could not connect to host ptn.moscow: could not connect to host ptonet.com: could not connect to host @@ -11250,6 +12172,8 @@ punkdns.top: could not connect to host puppydns.com: did not receive HSTS header purahealthyliving.com: could not connect to host purbd.com: did not receive HSTS header +pureessentialoil.biz: max-age too low: 300 +pureholisticliving.me: could not connect to host purewebmasters.com: could not connect to host purplehippie.in: did not receive HSTS header purplez.pw: did not receive HSTS header @@ -11285,26 +12209,27 @@ q-rickroll-u.pw: could not connect to host q2.si: did not receive HSTS header q8mp3.me: did not receive HSTS header qadmium.tk: could not connect to host +qamrulhaque.com: could not connect to host qazcloud.com: could not connect to host qbik.de: did not receive HSTS header qbin.io: did not receive HSTS header qbnt.ca: could not connect to host qccqld.org.au: could not connect to host qe2homelottery.com: did not receive HSTS header +qensio.com: did not receive HSTS header qforum.org: could not connect to host qi0.de: did not receive HSTS header qiannews.net: could not connect to host -qikan.net: could not connect to host +qifu.org.cn: could not connect to host qimiao.io: did not receive HSTS header qingxuan.info: could not connect to host qinxi1992.com: could not connect to host qionglu.pw: could not connect to host qipp.com: did not receive HSTS header qirinus.com: did not receive HSTS header +qiuxian.ddns.net: could not connect to host qixxit.de: did not receive HSTS header -qkmortgage.com: could not connect to host qldconservation.org: could not connect to host -qledtech.com: did not receive HSTS header qnatek.org: could not connect to host qonqa.de: did not receive HSTS header qoohoot.com: did not receive HSTS header @@ -11313,29 +12238,29 @@ qoqo.us: did not receive HSTS header qorm.co.uk: could not connect to host qqj.net: could not connect to host qqq.gg: could not connect to host +qqvrsmart.cn: could not connect to host qrara.net: did not receive HSTS header qredo.com: did not receive HSTS header qrforex.com: did not receive HSTS header qrlending.com: could not connect to host qrlfinancial.com: could not connect to host -qswoo.org: did not receive HSTS header -qto.com: could not connect to host -qto.org: could not connect to host +qswoo.org: could not connect to host quail.solutions: could not connect to host quakerlens.com: did not receive HSTS header quality1.com.br: did not receive HSTS header qualityology.com: did not receive HSTS header quanglepro.com: could not connect to host quangngaimedia.com: did not receive HSTS header -quanjinlong.cn: could not connect to host +quanjinlong.cn: did not receive HSTS header quantacloud.ch: could not connect to host quantenteranik.eu: could not connect to host quantor.dk: did not receive HSTS header quantum-cloud.xyz: could not connect to host -quantum-ethics.com: did not receive HSTS header +quantum-ethics.com: could not connect to host quantum-lviv.pp.ua: could not connect to host quantumcore.cn: could not connect to host quantumcourse.org: did not receive HSTS header +quanwuji.com: could not connect to host quarryhillrentals.com: did not receive HSTS header quebecmailbox.com: could not connect to host queenbrownie.com.br: could not connect to host @@ -11355,14 +12280,16 @@ quimsertek.com: [Exception... "Component returned failure code: 0x80004005 (NS_E quizionic.com: could not connect to host quizl.io: did not receive HSTS header quizmemes.org: could not connect to host +quizstore.net: could not connect to host quotehex.com: could not connect to host quotemaster.co.za: could not connect to host quranserver.net: could not connect to host qwallet.ca: did not receive HSTS header +qwaser.fr: could not connect to host +qwertyatom100.me: could not connect to host qwilink.me: did not receive HSTS header qybot.cc: could not connect to host r-ay.club: did not receive HSTS header -r-ay.cn: could not connect to host r-core.org: could not connect to host r-core.ru: could not connect to host r-cut.fr: could not connect to host @@ -11370,64 +12297,71 @@ r-rickroll-u.pw: could not connect to host r10n.com: did not receive HSTS header r15.me: did not receive HSTS header r18.moe: did not receive HSTS header -r3bl.me: could not connect to host -r40.us: could not connect to host raajheshkannaa.com: could not connect to host rabbitvcactus.eu: did not receive HSTS header rabota-x.ru: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] -rabotaescort.com: could not connect to host racasdecachorro.org: could not connect to host rackblue.com: could not connect to host racktear.com: did not receive HSTS header -racoo.net: did not receive HSTS header -rad-route.de: did not receive HSTS header +raconteur.net: did not receive HSTS header +rad-route.de: could not connect to host raddavarden.nu: could not connect to host radicaleducation.net: could not connect to host radioheteroglossia.com: did not receive HSTS header -radiorsvp.com: could not connect to host +radtke.bayern: did not receive HSTS header rafaelcz.de: could not connect to host ragingserenity.com: did not receive HSTS header ragnaroktop.com.br: could not connect to host rahadiana.com: could not connect to host rahamasin.eu: could not connect to host +rai-co.net: did not receive HSTS header raiblockscommunity.net: could not connect to host +raidensnakesden.co.uk: could not connect to host +raidensnakesden.com: could not connect to host +raidensnakesden.net: could not connect to host raidstone.com: could not connect to host raidstone.rocks: could not connect to host +raiffeisen-kosovo.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] railgun.com.cn: could not connect to host +railyardurgentcare.com: did not receive HSTS header rainbin.com: could not connect to host rainbowbarracuda.com: could not connect to host -rainel.at: did not receive HSTS header +rainel.at: could not connect to host raisecorp.com: could not connect to host raitza.de: could not connect to host rajkapoordas.com: could not connect to host +rakugaki.cn: could not connect to host ramarka.de: could not connect to host -ramezanloo.com: could not connect to host -ramitmittal.com: could not connect to host +ramatola.uk: could not connect to host +rambii.de: could not connect to host +ramblingrf.tech: could not connect to host +ramezanloo.com: did not receive HSTS header ramon-c.nl: could not connect to host ramonj.nl: could not connect to host -ramsor-gaming.de: could not connect to host randomcage.com: did not receive HSTS header randomcloud.net: could not connect to host randomhero.cloud: could not connect to host +randomquotesapp.com: could not connect to host randomwinpicker.de: could not connect to host randy.pw: could not connect to host ranegroup.hosting: could not connect to host rankthespot.com: could not connect to host rannseier.org: did not receive HSTS header ranos.org: could not connect to host +rantanda.com: could not connect to host rany.duckdns.org: could not connect to host rany.io: could not connect to host rany.pw: could not connect to host -rapidemobile.com: could not connect to host +rapidemobile.com: did not receive HSTS header rapidflow.io: could not connect to host rapido.nu: could not connect to host rapidresearch.me: could not connect to host rapidthunder.io: could not connect to host -rasing.me: did not receive HSTS header +rasing.me: could not connect to host raspass.me: did not receive HSTS header raspberry.us: could not connect to host -raspberryultradrops.com: did not receive HSTS header rastreador.com.es: did not receive HSTS header +rastreie.net: did not receive HSTS header ratajczak.fr: could not connect to host rate-esport.de: could not connect to host rathorian.fr: could not connect to host @@ -11443,13 +12377,14 @@ raven.lipetsk.ru: could not connect to host ravengergaming.ga: could not connect to host ravengergaming.net: could not connect to host ravenx.me: could not connect to host -ravkr.duckdns.org: max-age too low: 360000 +ravkr.duckdns.org: did not receive HSTS header ravse.dk: could not connect to host raw-diets.com: did not receive HSTS header rawet.se: could not connect to host rawoil.com: could not connect to host rawr.sexy: could not connect to host rawstorieslondon.com: could not connect to host +rayanitco.com: did not receive HSTS header raycarruthersphotography.co.uk: could not connect to host raydan.space: could not connect to host raydobe.me: could not connect to host @@ -11465,7 +12400,6 @@ rbxcatalog.com: could not connect to host rc4.io: could not connect to host rc7.ch: could not connect to host rcafox.com: could not connect to host -rcmlinx.com: could not connect to host rcoliveira.com: could not connect to host rcpcbd.com: could not connect to host rcvd.io: did not receive HSTS header @@ -11481,9 +12415,10 @@ reactdatepicker.com: did not receive HSTS header reactor92.com: could not connect to host reader.ga: could not connect to host readism.io: could not connect to host -readityourself.net: did not receive HSTS header +readityourself.net: could not connect to host readmeeatmedrinkme.com: did not receive HSTS header readr.pw: could not connect to host +readtldr.com: could not connect to host readydok.com: did not receive HSTS header reagir43.fr: did not receive HSTS header reaiaer.com: could not connect to host @@ -11491,17 +12426,17 @@ reakyaweso.me: could not connect to host real-bits.com: could not connect to host real-compare.com: did not receive HSTS header realcli.com: could not connect to host +realfamilyincest.com: could not connect to host realhost.name: could not connect to host +realloc.me: could not connect to host really.io: could not connect to host reallyreally.io: did not receive HSTS header realmic.net: could not connect to host realmofespionage.com: could not connect to host realnewhomes.com: could not connect to host -realum.com: could not connect to host -realum.de: could not connect to host -realum.eu: could not connect to host -realum.net: could not connect to host -realwoo.com: could not connect to host +realoteam.ddns.net: could not connect to host +realraghavgupta.com: could not connect to host +realwoo.com: did not receive HSTS header reapdrive.net: did not receive HSTS header reaper.rip: could not connect to host reardenporn.com: could not connect to host @@ -11512,7 +12447,8 @@ receitasdebacalhau.pt: could not connect to host recetasfacilesdehacer.com: did not receive HSTS header rechat.com: did not receive HSTS header rechenwerk.net: could not connect to host -recommended.reviews: could not connect to host +recht-freundlich.de: did not receive HSTS header +rechtenliteratuurleiden.nl: could not connect to host recompiled.org: max-age too low: 7776000 recruitsecuritytraining.co.uk: could not connect to host recruitsecuritytraining.com: could not connect to host @@ -11529,20 +12465,23 @@ redhorsemountainranch.com: did not receive HSTS header redicabo.de: could not connect to host redirectman.com: could not connect to host redizoo.com: did not receive HSTS header -redlatam.org: could not connect to host +redlatam.org: did not receive HSTS header redmbk.com: did not receive HSTS header +redmind.se: could not connect to host +redneck-gaming.de: did not receive HSTS header redner.cc: did not receive HSTS header rednertv.de: did not receive HSTS header rednoseday.com: did not receive HSTS header redoakmedia.net: did not receive HSTS header redperegrine.com: did not receive HSTS header +redporno.cz: could not connect to host redports.org: could not connect to host redra.ws: did not receive HSTS header +redsquirrelcampsite.co.uk: could not connect to host redstarsurf.com: did not receive HSTS header reducerin.ro: did not receive HSTS header -redwoodpaddle.es: did not receive HSTS header -redwoodpaddle.pt: could not connect to host redy.host: did not receive HSTS header +reedyforkfarm.com: did not receive HSTS header reeson.at: could not connect to host reeson.de: could not connect to host reeson.info: could not connect to host @@ -11552,6 +12491,7 @@ refactor.zone: did not receive HSTS header referenten.org: did not receive HSTS header refitplanner.com: did not receive HSTS header reflecton.io: could not connect to host +reforesttheplanet.com: could not connect to host reformatreality.com: could not connect to host refreshingserum.com: could not connect to host reg.ru: did not receive HSTS header @@ -11563,7 +12503,9 @@ regendevices.eu: could not connect to host reggae-cdmx.com: could not connect to host reginagroffy.com: could not connect to host regio-salland.nl: could not connect to host +regionalcoalition.org: did not receive HSTS header regionale.org: did not receive HSTS header +register.gov.uk: did not receive HSTS header registertovoteflorida.gov: did not receive HSTS header regoul.com: did not receive HSTS header regsec.com: could not connect to host @@ -11573,35 +12515,34 @@ reic.me: could not connect to host reidascuecas.com.br: could not connect to host reignsphere.net: could not connect to host reikiqueen.uk: could not connect to host +reinaertvandecruys.com: could not connect to host reinaertvandecruys.me: could not connect to host reineberthe.ch: could not connect to host reismil.ch: could not connect to host reisyukaku.org: did not receive HSTS header reithguard-it.de: did not receive HSTS header rejo.in: could not connect to host +rejushiiplotter.ru: could not connect to host rejuvemedspa.com: did not receive HSTS header -rekyou.com: could not connect to host relatic.net: could not connect to host -relaxhavefun.com: could not connect to host relayawards.com: could not connect to host reldoc.com.mx: did not receive HSTS header reliable-mail.de: could not connect to host +religiousforums.com: did not receive HSTS header relisten.nl: did not receive HSTS header relsak.cz: could not connect to host rem.pe: did not receive HSTS header rema.site: did not receive HSTS header -remaimodern.org: did not receive HSTS header remain.london: could not connect to host remedica.fr: could not connect to host -remedioskaseros.com: did not receive HSTS header remedium.de: could not connect to host remedyrehab.com: did not receive HSTS header rememberthis.co.za: could not connect to host remodela.com.ve: could not connect to host remodelwithlegacy.com: did not receive HSTS header remonttitekniikka.fi: could not connect to host -remoteham.com: could not connect to host remotestance.com: did not receive HSTS header +remrol.ru: could not connect to host rencaijia.com: did not receive HSTS header rencontres-erotiques.com: did not receive HSTS header rengarenkblog.com: could not connect to host @@ -11611,13 +12552,15 @@ renlong.org: did not receive HSTS header rennfire.org: could not connect to host renrenss.com: could not connect to host rentacarcluj.xyz: did not receive HSTS header +rentalmed.com.br: did not receive HSTS header rentbrowser.com: could not connect to host rentbrowsertrain.me: could not connect to host rentcarassist.com: could not connect to host renteater.com: could not connect to host rentex.com: did not receive HSTS header renxinge.cn: did not receive HSTS header -repex.co.il: did not receive HSTS header +reparo.pe: did not receive HSTS header +repex.co.il: could not connect to host replaceits.me: could not connect to host replacemychina.com: could not connect to host repo.ml: did not receive HSTS header @@ -11633,8 +12576,10 @@ reporturi.io: did not receive HSTS header reporturl.com: did not receive HSTS header reporturl.io: did not receive HSTS header reposaarenkuva.fi: could not connect to host -reprolife.co.uk: could not connect to host -reputationweaver.com: could not connect to host +reprolife.co.uk: did not receive HSTS header +reptilauksjonen.no: did not receive HSTS header +republicmo.gov: could not connect to host +repustate.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] reqognize.com: could not connect to host res-rheingau.de: did not receive HSTS header res42.com: could not connect to host @@ -11646,6 +12591,7 @@ residentsinsurance.co.uk: did not receive HSTS header resl20.servehttp.com: could not connect to host resoundpro.ca: could not connect to host respice.xyz: could not connect to host +ressl.ch: could not connect to host ressos.com: did not receive HSTS header restaurace-klokocka.cz: did not receive HSTS header restaurant-mangal.ch: could not connect to host @@ -11657,15 +12603,16 @@ restioson.me: could not connect to host restopro.nyc: did not receive HSTS header restoreresearchstudy.com: did not receive HSTS header resultsdate.news: could not connect to host -retcor.net: could not connect to host reth.ch: could not connect to host +reto.io: could not connect to host +retogroup.com: could not connect to host retropage.co: did not receive HSTS header retrowave.eu: could not connect to host rets.org.br: did not receive HSTS header retube.ga: did not receive HSTS header returnofwar.com: could not connect to host +reussir-ma-fete.fr: could not connect to host revapost.ch: could not connect to host -revapost.fr: could not connect to host revealdata.com: did not receive HSTS header revelaciones.tv: could not connect to host revello.org: did not receive HSTS header @@ -11673,32 +12620,36 @@ reverie.pw: could not connect to host review.info: did not receive HSTS header reviewbestseller.com: did not receive HSTS header reviewjust.com: did not receive HSTS header -reviewspedia.org: could not connect to host revistapequenosolhares.com.br: could not connect to host revolutionhive.com: could not connect to host revtut.net: could not connect to host rewopit.net: could not connect to host rex.st: could not connect to host +rexhockingkelpies.com.au: did not receive HSTS header reykjavik.guide: could not connect to host rezun.cloud: did not receive HSTS header rf.tn: could not connect to host +rfxanalyst.com: could not connect to host +rgservers.com: did not receive HSTS header rhapsodhy.hu: could not connect to host rhdigital.pro: could not connect to host rhering.de: could not connect to host rhiskiapril.com: did not receive HSTS header +rhodes.ml: could not connect to host rhodesianridgeback.com.br: could not connect to host rhodosdreef.nl: could not connect to host riaucybersolution.net: did not receive HSTS header ribopierre.fr: could not connect to host -ricardo.nu: could not connect to host riceglue.com: could not connect to host richamorindonesia.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] richardb.me: could not connect to host -richardbloomfield.blog: did not receive HSTS header +richardhicks.us: could not connect to host richeza.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] +richie.link: did not receive HSTS header richiemail.net: could not connect to host richmondsunlight.com: did not receive HSTS header -richsiciliano.com: could not connect to host +richmtdriver.com: could not connect to host +richsiciliano.com: did not receive HSTS header richterphilipp.com: could not connect to host rickmartensen.nl: did not receive HSTS header ricknox.com: did not receive HSTS header @@ -11707,11 +12658,11 @@ rideaudiscount.com: did not receive HSTS header rideforwade.com: could not connect to host rideforwade.net: could not connect to host rideforwade.org: could not connect to host -rideworks.com: did not receive HSTS header +rideworks.com: could not connect to host ridingoklahoma.com: could not connect to host ridwan.co: could not connect to host rienasemettre.fr: did not receive HSTS header -riesenmagnete.de: did not receive HSTS header +riesenmagnete.de: could not connect to host rievo.net: did not receive HSTS header right-to-love.name: did not receive HSTS header right2.org: could not connect to host @@ -11720,14 +12671,15 @@ righttoknow.ie: did not receive HSTS header rijndael.xyz: could not connect to host rijnmondeg.nl: did not receive HSTS header rika.me: could not connect to host +rincon-nsn.gov: could not connect to host ring0.xyz: did not receive HSTS header ringh.am: could not connect to host rinj.se: could not connect to host rionewyork.com.br: could not connect to host +rioshop.com.br: could not connect to host ripa.io: did not receive HSTS header rippleunion.com: could not connect to host -riqy86.nl: could not connect to host -ris.fi: could not connect to host +risi-china.com: could not connect to host risingsun.red: could not connect to host riskmgt.com.au: could not connect to host rissato.com.br: could not connect to host @@ -11745,27 +12697,30 @@ rjnutrition.consulting: did not receive HSTS header rk6.cz: could not connect to host rkc-hygrotherm.de: could not connect to host rkmantpur.org: did not receive HSTS header +rkmedia.no: could not connect to host rmaqequipamentos.com.br: could not connect to host rmdlingerie.com.br: did not receive HSTS header rme.li: did not receive HSTS header +rmit.me: could not connect to host +rmk.si: could not connect to host +rmsides.com: did not receive HSTS header roadfeast.com: could not connect to host roan24.pl: did not receive HSTS header +rob.uk.com: could not connect to host robertabittle.com: could not connect to host -robertayamashita.com: could not connect to host -robertayamashita.com.br: could not connect to host -robertbln.com: could not connect to host roberto-webhosting.nl: did not receive HSTS header robertocasares.no-ip.biz: could not connect to host robi-net.it: could not connect to host robigalia.org: did not receive HSTS header robinvdmarkt.nl: could not connect to host +robjager-fotografie.nl: could not connect to host robomonkey.org: could not connect to host robteix.com: did not receive HSTS header robtex.com: did not receive HSTS header robtex.net: did not receive HSTS header robtex.org: did not receive HSTS header robust.ga: could not connect to host -rochman.id: could not connect to host +rochman.id: did not receive HSTS header rocketnet.ml: could not connect to host rockeyscrivo.com: did not receive HSTS header rocksberg.net: could not connect to host @@ -11774,27 +12729,32 @@ rodarion.pl: could not connect to host rodehutskors.net: could not connect to host rodney.id.au: did not receive HSTS header rodneybrooksjr.com: did not receive HSTS header +rodomonte.org: did not receive HSTS header rodosto.com: did not receive HSTS header +roelbazuin.com: did not receive HSTS header roelf.org: did not receive HSTS header roeper.party: could not connect to host roesemann.email: could not connect to host rofrank.space: could not connect to host rogeiro.net: could not connect to host rogerdat.ovh: could not connect to host +roguefortgame.com: could not connect to host +rohanbassett.com: could not connect to host rohankrishnadev.in: could not connect to host -rohlik.cz: did not receive HSTS header roketix.co.uk: did not receive HSTS header -rolandinsh.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] rolandkolodziej.com: max-age too low: 86400 +rolandreed.cn: did not receive HSTS header rolandslate.com: did not receive HSTS header rolemaster.net: could not connect to host -roleplayhome.com: could not connect to host rolroer.co.za: could not connect to host romaimperator.com: did not receive HSTS header romainmuller.xyz: did not receive HSTS header romans-place.me.uk: could not connect to host romanticschemermovie.com: could not connect to host +romar-bos.nl: did not receive HSTS header romeoferraris.com: did not receive HSTS header +romleg.cf: could not connect to host +roms.fun: could not connect to host romulusapp.com: could not connect to host ron2k.za.net: could not connect to host rondoniatec.com.br: did not receive HSTS header @@ -11812,9 +12772,8 @@ rootforum.org: did not receive HSTS header rootrelativity.com: could not connect to host rootservice.org: did not receive HSTS header rootwpn.com: could not connect to host -rop.io: could not connect to host +rop.io: did not receive HSTS header roquecenter.org: did not receive HSTS header -roromendut.online: could not connect to host rorymcdaniel.com: did not receive HSTS header rosewoodranch.com: did not receive HSTS header rosi-royal.com: could not connect to host @@ -11822,6 +12781,7 @@ rospa100.com: did not receive HSTS header rossclark.com: did not receive HSTS header rossen.be: did not receive HSTS header rossiworld.com: did not receive HSTS header +rosslug.org.uk: could not connect to host rotex1840.de: did not receive HSTS header rotozen.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] rotter-dam.nl: did not receive HSTS header @@ -11834,12 +12794,14 @@ rous.se: could not connect to host rouvray.org: could not connect to host royal-forest.org: max-age too low: 0 royal-mangal.ch: could not connect to host +royal876.com: could not connect to host royalhop.co: could not connect to host royalpub.net: did not receive HSTS header royalsignaturecruise.com: could not connect to host roychan.org: max-age too low: 0 royzez.com: could not connect to host rozalisbengal.ro: could not connect to host +rozalynne-dawn.ga: could not connect to host rozeapp.nl: could not connect to host rpasafrica.com: could not connect to host rr.in.th: could not connect to host @@ -11851,27 +12813,25 @@ rsampaio.info: did not receive HSTS header rsf.io: could not connect to host rsi.im: did not receive HSTS header rskuipers.com: did not receive HSTS header +rsldb.com: could not connect to host rsmaps.org: could not connect to host -rstraining.co.uk: could not connect to host +rsships.com: could not connect to host +rstraining.co.uk: did not receive HSTS header rstsecuritygroup.co.uk: could not connect to host rtc.fun: could not connect to host -rte.eu: could not connect to host rtho.me: did not receive HSTS header rtvi.com: did not receive HSTS header +ru-music.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] rubbereggs.ca: could not connect to host rubbix.net: could not connect to host -rubbleremovalsbenoni.co.za: did not receive HSTS header rubecodeberg.com: could not connect to host -ruben.am: did not receive HSTS header rubendv.be: did not receive HSTS header rubens.cloud: did not receive HSTS header rubenschulz.nl: could not connect to host rubi-ka.net: max-age too low: 0 ruborr.se: did not receive HSTS header -ruby-auf-schienen.de: could not connect to host rubysecurity.org: did not receive HSTS header rubyshop.nl: could not connect to host -rucnerobene.eu: could not connect to host rudeotter.com: did not receive HSTS header rue-de-la-vieille.fr: max-age too low: 0 ruflay.ru: could not connect to host @@ -11883,29 +12843,31 @@ ruig.jp: could not connect to host ruitershoponline.nl: did not receive HSTS header ruja.dk: did not receive HSTS header rukhaiyar.com: could not connect to host +rullzer.com: did not receive HSTS header +rumlager.de: max-age too low: 600000 rummel-platz.de: could not connect to host rumoterra.com.br: could not connect to host run-forrest.run: could not connect to host runawebinar.nl: could not connect to host runcarina.com: could not connect to host rundumcolumn.xyz: could not connect to host -runementors.com: could not connect to host runhardt.eu: did not receive HSTS header runtl.com: did not receive HSTS header runtondev.com: did not receive HSTS header -ruobiyi.com: could not connect to host ruqu.nl: could not connect to host rusadmin.biz: did not receive HSTS header +rushball.net: could not connect to host rusl.me: could not connect to host -rusmolotok.ru: could not connect to host russmarshall.com: could not connect to host rustbyexample.com: did not receive HSTS header rustfanatic.com: did not receive HSTS header ruurdboomsma.nl: could not connect to host ruxit.com: did not receive HSTS header rvg.zone: could not connect to host +rvolve.net: could not connect to host rw-solutions.tech: could not connect to host rwanderlust.com: did not receive HSTS header +rxgroup.io: could not connect to host rxprep.com: did not receive HSTS header rxt.social: could not connect to host rxv.cc: could not connect to host @@ -11923,21 +12885,21 @@ s.how: could not connect to host s0923.com: could not connect to host s0laris.co.uk: could not connect to host s1mplescripts.de: could not connect to host +s1ris.org: did not receive HSTS header s3cases.com: did not receive HSTS header s3n.se: could not connect to host -saabwa.org: did not receive HSTS header +saabwa.org: could not connect to host +saba-piserver.info: could not connect to host sabatek.pl: did not receive HSTS header -sabine-forschbach.de: could not connect to host -sabineforschbach.de: could not connect to host -sabtunes.com: did not receive HSTS header sac-shop.com: did not receive HSTS header +sachk.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] saco-ceso.com: could not connect to host sadiejanehair.com: could not connect to host safari-afrique.com: did not receive HSTS header -safe.moe: did not receive HSTS header safedevice.net: did not receive HSTS header safelist.eu: did not receive HSTS header safemovescheme.co.uk: could not connect to host +safemt.gov: could not connect to host safepay.io: could not connect to host saferedirect.link: could not connect to host saferedirectlink.com: could not connect to host @@ -11955,7 +12917,7 @@ saint-astier-triathlon.com: did not receive HSTS header saintjohnlutheran.church: did not receive HSTS header saintw.com: could not connect to host sairai.bid: could not connect to host -saitrance.com: could not connect to host +saiyasu-search.com: did not receive HSTS header sakaserver.com: did not receive HSTS header sakib.ninja: did not receive HSTS header sakurabuff.com: could not connect to host @@ -11963,8 +12925,12 @@ salaervergleich.com: did not receive HSTS header sale.sh: could not connect to host salearnership.co.za: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] saleslift.pl: did not receive HSTS header +salishseawhalewatching.ca: could not connect to host sallysubs.com: could not connect to host +salmo23.com.br: could not connect to host +salon-claudia.ch: could not connect to host salonestella.it: could not connect to host +salrosadohimalaia.com: did not receive HSTS header salserocafe.com: did not receive HSTS header salserototal.com: could not connect to host saltedskies.com: could not connect to host @@ -11975,43 +12941,45 @@ salzamt.tk: could not connect to host samanthahumphreysstudio.com: did not receive HSTS header samaritan.tech: could not connect to host samaritansnet.org: did not receive HSTS header +samenwerkingsportaal.tk: did not receive HSTS header sametovymesic.cz: could not connect to host -samkelleher.com: could not connect to host saml2.com: could not connect to host samlamac.com: could not connect to host samm.com.au: did not receive HSTS header sammyjohnson.com: could not connect to host samp.im: could not connect to host sampcup.com: could not connect to host -sampoznay.ru: did not receive HSTS header +sampoznay.ru: could not connect to host samraskauskas.com: could not connect to host samsen.club: could not connect to host samsonova.de: could not connect to host samsungxoa.com: could not connect to host -samvanderkris.com: did not receive HSTS header +samvanderkris.com: could not connect to host +samvanderkris.xyz: did not receive HSTS header sanael.net: could not connect to host +sanandreasstories.com: did not receive HSTS header sanasalud.org: could not connect to host sanatfilan.com: did not receive HSTS header sanatrans.com: could not connect to host sand-islets.de: did not receive HSTS header +sanderknape.com: did not receive HSTS header sandviks.com: did not receive HSTS header -sanglierhurlant.fr: could not connect to host sanguoxiu.com: could not connect to host sanhei.ch: did not receive HSTS header -sanik.my: did not receive HSTS header +sanik.my: could not connect to host sanradon.by: did not receive HSTS header sansage.com.br: could not connect to host sansdev.com: could not connect to host sansemea.com: did not receive HSTS header -santanderideas.com: could not connect to host santi.eu: did not receive HSTS header +santing.net: could not connect to host santmark.com: could not connect to host santmark.eu: could not connect to host santmark.fi: could not connect to host santmark.info: could not connect to host santmark.net: could not connect to host santmark.org: could not connect to host -santodomingocg.org: did not receive HSTS header +santodomingocg.org: could not connect to host santorinibbs.com: did not receive HSTS header santouri.be: could not connect to host saotn.org: did not receive HSTS header @@ -12020,14 +12988,16 @@ sapporobeer.com: could not connect to host sapuncheta.com: could not connect to host saq.com: could not connect to host sarah-beckett-harpist.com: did not receive HSTS header +sarahdoyley.com: could not connect to host +sarahlouisesearle.com: could not connect to host sarahsweetlife.com: could not connect to host sarahsweger.com: could not connect to host sarakas.com: could not connect to host sarangsemutbandung.com: could not connect to host sarindia.com: could not connect to host sarindia.de: could not connect to host -sarink.eu: could not connect to host sarisonproductions.com: did not receive HSTS header +sarkarikhoj.com: could not connect to host sarkarischeme.in: could not connect to host sarkisozleri.us: could not connect to host sarndipity.com: could not connect to host @@ -12045,11 +13015,13 @@ satrent.se: did not receive HSTS header satriyowibowo.my.id: did not receive HSTS header satsang-uwe.de: did not receive HSTS header satsukii.moe: did not receive HSTS header +sattamatkadpboss.mobi: could not connect to host saturne.tk: could not connect to host saturngames.co.uk: could not connect to host saucyfox.net: did not receive HSTS header saudeeconforto.com.br: did not receive HSTS header sauenytt.no: could not connect to host +sauerbrey.eu: did not receive HSTS header saumon.io: did not receive HSTS header saumon.xyz: could not connect to host saunasandstuff.ca: did not receive HSTS header @@ -12060,23 +13032,22 @@ saveaward.gov: could not connect to host savecashindia.com: did not receive HSTS header savekorea.net: max-age too low: 0 savemoneyonenergy.com: did not receive HSTS header +saveora.shop: could not connect to host savethedogfishfoundation.org: could not connect to host saveyour.biz: could not connect to host -savingbytes.com: could not connect to host +savingbytes.com: did not receive HSTS header savinggoliath.com: could not connect to host savvysuit.com: did not receive HSTS header saxol-group.com: could not connect to host +saxotex.de: did not receive HSTS header say-hanabi.com: could not connect to host sayhanabi.com: could not connect to host sazima.ru: did not receive HSTS header -sbirecruitment.co.in: could not connect to host sbm.cloud: could not connect to host sbobetfun.com: did not receive HSTS header sbox-archives.com: could not connect to host sby.de: did not receive HSTS header sc4le.com: could not connect to host -scaffoldhirefourways.co.za: did not receive HSTS header -scaffoldhirerandburg.co.za: did not receive HSTS header scala.click: did not receive HSTS header scannabi.com: could not connect to host sch44r0n.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] @@ -12087,14 +13058,14 @@ schalkoortbv.nl: did not receive HSTS header schau-rein.co.at: did not receive HSTS header schauer.so: could not connect to host schd.io: did not receive HSTS header -schefczyk.com: could not connect to host -schefczyk.de: could not connect to host -schefczyk.eu: could not connect to host schermreparatierotterdam.nl: did not receive HSTS header schlabbi.com: did not receive HSTS header +schlagenhauf.info: could not connect to host +schlagma.de: could not connect to host schmidttulskie.de: could not connect to host schmitt.ovh: could not connect to host schmitt.ws: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] +schnapke.name: could not connect to host schneider-electric.tg: could not connect to host schnell-abnehmen.tips: did not receive HSTS header schnell-gold.com: did not receive HSTS header @@ -12105,14 +13076,17 @@ schoolze.com: did not receive HSTS header schoop.me: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] schorel.ovh: could not connect to host schraebanowicz.net: did not receive HSTS header +schreck-thomas.de: could not connect to host schreiber-netzwerk.eu: did not receive HSTS header schreibnacht.de: did not receive HSTS header schreinerei-wortmann.de: did not receive HSTS header schrikdraad.net: did not receive HSTS header +schritt4fit.de: did not receive HSTS header schrodinger.io: could not connect to host schroepfglas-versand.de: did not receive HSTS header schroettle.com: did not receive HSTS header schulterglatzen-altenwalde.de: could not connect to host +schur-it.de: could not connect to host schwarzkopfforyou.de: did not receive HSTS header schwarzwaldcon.de: could not connect to host schweiz.guide: could not connect to host @@ -12148,7 +13122,6 @@ scramble.io: did not receive HSTS header scrambler.in: could not connect to host scrapings.net: could not connect to host screencaster.io: did not receive HSTS header -screenplay.jp: max-age too low: 0 screenresolution.space: could not connect to host screensaversplanet.com: did not receive HSTS header scribbleserver.com: could not connect to host @@ -12161,8 +13134,7 @@ scriptict.nl: could not connect to host scriptjunkie.us: could not connect to host scrollstory.com: did not receive HSTS header scruffymen.com: could not connect to host -scrumbleship.com: did not receive HSTS header -sctm.at: could not connect to host +scrumplex.net: did not receive HSTS header sdhmanagementgroup.com: could not connect to host sdia.ru: could not connect to host sdl-corporatesite-staging.azurewebsites.net: did not receive HSTS header @@ -12170,6 +13142,7 @@ sdmoscow.ru: could not connect to host sdrobs.com: did not receive HSTS header sdsl-speedtest.de: could not connect to host se7ensins.com: did not receive HSTS header +sea-godzilla.com: could not connect to host seadus.ee: could not connect to host seanationals.org: did not receive HSTS header seanchaidh.org: could not connect to host @@ -12177,8 +13150,8 @@ seans.cc: did not receive HSTS header seanstrout.com: did not receive HSTS header seansyardservice.com: did not receive HSTS header searchgov.gov.il: did not receive HSTS header +searchshops.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] searx.pw: could not connect to host -seatshare.co.uk: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] sebastian-bair.de: could not connect to host sebastian-schmidt.me: did not receive HSTS header sebastianhampl.de: could not connect to host @@ -12186,10 +13159,16 @@ sebastianpedersen.com: did not receive HSTS header sebastiensenechal.com: did not receive HSTS header sebi.cf: could not connect to host sebster.com: did not receive HSTS header +sec44.com: could not connect to host +sec44.net: could not connect to host +sec44.org: could not connect to host secandtech.com: could not connect to host +secanje.nl: did not receive HSTS header seccomp.ru: did not receive HSTS header seceye.cn: could not connect to host +secitem.at: did not receive HSTS header secitem.de: could not connect to host +secitem.eu: did not receive HSTS header secnet.ga: could not connect to host secondary-survivor.com: could not connect to host secondary-survivor.help: could not connect to host @@ -12203,7 +13182,7 @@ secondpay.nl: could not connect to host secondspace.ca: could not connect to host secretnation.net: did not receive HSTS header secretofanah.com: could not connect to host -secretsanta.fr: could not connect to host +secretpanties.com: could not connect to host sectest.ml: could not connect to host sectia22.ro: did not receive HSTS header secur3.us: did not receive HSTS header @@ -12225,6 +13204,10 @@ security-thoughts.org: could not connect to host security.google.com: did not receive HSTS header (error ignored - included regardless) security.xn--q9jyb4c: could not connect to host securityarena.com: could not connect to host +securitybrief.asia: did not receive HSTS header +securitybrief.co.nz: did not receive HSTS header +securitybrief.com.au: did not receive HSTS header +securitybrief.eu: did not receive HSTS header securitybsides.pl: did not receive HSTS header securityglance.com: could not connect to host securityinet.biz: did not receive HSTS header @@ -12234,6 +13217,7 @@ securitymap.wiki: could not connect to host securitysoapbox.com: could not connect to host securitytalk.pl: could not connect to host securitytestfan.gov: could not connect to host +securitywatch.co.nz: did not receive HSTS header securiviera.ch: did not receive HSTS header securon.io: could not connect to host securoswiss.ch: could not connect to host @@ -12252,7 +13236,6 @@ seele.ca: could not connect to host seen.life: could not connect to host sehenderson.com: did not receive HSTS header seida.at: could not connect to host -seiko-dojo.com: could not connect to host seiler-bad.de: did not receive HSTS header seizoushokoyuubangou.com: did not receive HSTS header sektor.team: could not connect to host @@ -12265,7 +13248,6 @@ seleondar.ru: did not receive HSTS header selfdefenserx.com: did not receive HSTS header selfhosters.com: could not connect to host selfie-france.fr: could not connect to host -selfmade4u.de: could not connect to host selfserverx.com: could not connect to host selitysvideot.fi: did not receive HSTS header selldorado.com: could not connect to host @@ -12276,6 +13258,7 @@ semantheme.fr: did not receive HSTS header semen3325.xyz: could not connect to host semenkovich.com: did not receive HSTS header sementes.gratis: could not connect to host +semjonov.de: could not connect to host semps-servers.de: could not connect to host sendash.com: did not receive HSTS header sendmeback.de: did not receive HSTS header @@ -12287,31 +13270,34 @@ senseye.io: did not receive HSTS header sensiblemn.org: could not connect to host sensibus.com: did not receive HSTS header sensoft-int.com: could not connect to host +sensualism.com: could not connect to host seo-lagniappe.com: did not receive HSTS header seoarchive.org: could not connect to host seobot.com.au: could not connect to host seohochschule.de: could not connect to host +seolaba.io: could not connect to host seomarketingdeals.com: did not receive HSTS header seomen.biz: could not connect to host seomobo.com: could not connect to host seosanantonioinc.com: did not receive HSTS header seoscribe.net: could not connect to host -seosec.xyz: could not connect to host +seosec.xyz: did not receive HSTS header seotronix.net: did not receive HSTS header seowarp.net: did not receive HSTS header sep23.ru: could not connect to host sepakbola.win: could not connect to host sephr.com: did not receive HSTS header sepie.gob.es: did not receive HSTS header -seproco.com: could not connect to host seq.tf: did not receive HSTS header +sequatchiecounty-tn.gov: could not connect to host serafin.tech: could not connect to host serathius.ovh: could not connect to host serbien.guide: could not connect to host serenitycreams.com: did not receive HSTS header serfdom.io: did not receive HSTS header +sergeyreznikov.com: could not connect to host serized.pw: could not connect to host -serkaneles.com: could not connect to host +serkaneles.com: did not receive HSTS header servecrypt.com: could not connect to host servecrypt.net: could not connect to host servecrypt.ru: could not connect to host @@ -12322,29 +13308,41 @@ servercode.ca: did not receive HSTS header serverdensity.io: did not receive HSTS header servergno.me: did not receive HSTS header serverlauget.no: could not connect to host +serverlog.net: could not connect to host servermonkey.nl: could not connect to host servfefe.com: could not connect to host +service.gov.uk: could not connect to host servicevie.com: did not receive HSTS header +servpanel.de: did not receive HSTS header servu.de: did not receive HSTS header servx.ru: did not receive HSTS header +serwusik.pl: did not receive HSTS header seryo.moe: could not connect to host seryo.net: could not connect to host seryovpn.com: could not connect to host -sesha.co.za: did not receive HSTS header -setkit.net: did not receive HSTS header +sesha.co.za: could not connect to host +sethoedjo.com: could not connect to host +setkit.net: could not connect to host setuid.de: could not connect to host setuid.io: did not receive HSTS header sevenhearts.online: could not connect to host +sex-education.com: could not connect to host +sexgarage.de: could not connect to host +sexocomgravidas.com: could not connect to host +sexoyrelax.com: could not connect to host +sexpay.net: could not connect to host +sexplicit.co.uk: did not receive HSTS header sexshopfacil.com.br: could not connect to host sexshopsgay.com: did not receive HSTS header +sexwork.net: could not connect to host +sexymassageoil.com: could not connect to host seyahatsagliksigortalari.com: could not connect to host -seydaozcan.com: could not connect to host +seydaozcan.com: did not receive HSTS header seyr.it: could not connect to host -seyr.me: could not connect to host sfashion.si: did not receive HSTS header +sfaturiit.ro: could not connect to host sfhobbies.com.br: could not connect to host sfsltd.com: did not receive HSTS header -sgcaccounts.co.uk: did not receive HSTS header sgovaard.nl: did not receive HSTS header sgthotshot.com: could not connect to host sh11.pp.ua: did not receive HSTS header @@ -12353,7 +13351,7 @@ sha2017.org: did not receive HSTS header shaamrelief.org: did not receive HSTS header shadiku.com: could not connect to host shadow-socks.net: could not connect to host -shadow-socks.org: could not connect to host +shadow-socks.org: did not receive HSTS header shadow-socks.pro: could not connect to host shadowguardian507-irl.tk: did not receive HSTS header shadowguardian507.tk: did not receive HSTS header @@ -12377,16 +13375,19 @@ shagi29.ru: did not receive HSTS header shahbeat.com: could not connect to host shaitan.eu: could not connect to host shakebox.de: could not connect to host +shaken-kyoto.jp: could not connect to host shamka.ru: could not connect to host +shandonsg.co.uk: could not connect to host +shanekoster.net: did not receive HSTS header shanesage.com: could not connect to host shang-yu.cn: could not connect to host -shankangke.com: did not receive HSTS header shanxiapark.com: could not connect to host shanyhs.com: did not receive HSTS header shapesedinburgh.co.uk: did not receive HSTS header shardsoft.com: could not connect to host shareimg.xyz: could not connect to host sharejoy.cn: did not receive HSTS header +sharemessage.net: could not connect to host shareoine.com: did not receive HSTS header sharepass.pw: could not connect to host sharepic.xyz: could not connect to host @@ -12395,6 +13396,7 @@ shareworx.net: could not connect to host sharezen.de: could not connect to host sharingcode.com: did not receive HSTS header sharpe-practice.co.uk: could not connect to host +sharvey.ca: could not connect to host shatorin.com: could not connect to host shauncrowley.co.uk: could not connect to host shaunwheelhou.se: could not connect to host @@ -12405,7 +13407,7 @@ shawnstarrcustomhomes.com: did not receive HSTS header shawnwilson.info: could not connect to host shellj.me: did not receive HSTS header shellsec.pw: did not receive HSTS header -shengrenyu.com: could not connect to host +shemissed.me: did not receive HSTS header shentengtu.idv.tw: could not connect to host shep.co.il: did not receive HSTS header sheratan.web.id: could not connect to host @@ -12416,10 +13418,10 @@ shethbox.com: could not connect to host shevronpatriot.ru: did not receive HSTS header sheying.tm: could not connect to host shg-pornographieabhaengigkeit.de: did not receive HSTS header +shh.sh: could not connect to host shiatsu-institut.ch: could not connect to host shibainu.com.br: could not connect to host shibe.club: could not connect to host -shieldofachilles.in: could not connect to host shift.ooo: did not receive HSTS header shiftins.com: could not connect to host shiftnrg.org: did not receive HSTS header @@ -12435,7 +13437,7 @@ shinobi-fansub.ro: could not connect to host shiona.xyz: could not connect to host shipinsight.com: did not receive HSTS header shipmile.com: did not receive HSTS header -shipping24h.com: did not receive HSTS header +shipping24h.com: could not connect to host shippingbo.com: did not receive HSTS header shiroki-k.net: could not connect to host shirosaki.org: could not connect to host @@ -12450,7 +13452,6 @@ sho-tanaka.jp: did not receive HSTS header shocksrv.com: did not receive HSTS header shooshosha.com: could not connect to host shootpooloklahoma.com: could not connect to host -shopatkei.com: could not connect to host shopdopastor.com.br: could not connect to host shopherbal.co.za: could not connect to host shopods.com: did not receive HSTS header @@ -12460,18 +13461,20 @@ shoppingreview.org: did not receive HSTS header shoprose.ru: could not connect to host shoprsc.com: could not connect to host shops.neonisi.com: could not connect to host -shorten.ninja: could not connect to host shortpath.com: could not connect to host shortr.li: could not connect to host shota.party: could not connect to host -shotonwhat.com: could not connect to host shotpixonline.com.br: did not receive HSTS header show-stream.tv: could not connect to host +showdepiscinas.com.br: did not receive HSTS header shower.im: did not receive HSTS header showkeeper.tv: did not receive HSTS header showroom.de: did not receive HSTS header +showroom113.ru: could not connect to host +shoxmusic.net: did not receive HSTS header shred.ch: could not connect to host shredoptics.ch: could not connect to host +shrug.ml: could not connect to host shtorku.com: could not connect to host shu-kin.net: did not receive HSTS header shukatsu-note.com: could not connect to host @@ -12489,15 +13492,19 @@ sianimacion.com: could not connect to host siao-mei.com: did not receive HSTS header sichere-kartenakzeptanz.de: could not connect to host siciliadigitale.pro: could not connect to host +sicklepod.com: could not connect to host sictame-tigf.org: did not receive HSTS header +sidpod.ru: could not connect to host siebens.net: could not connect to host +sieh.es: did not receive HSTS header sifls.com: could not connect to host sifreuret.com: could not connect to host signere.com: could not connect to host -signere.no: could not connect to host +signere.no: did not receive HSTS header signoracle.com: could not connect to host signosquecombinam.com.br: could not connect to host sigsegv.run: did not receive HSTS header +sihaizixun.net: could not connect to host siikarantacamping.fi: did not receive HSTS header sijimi.cn: could not connect to host sijmenschoon.nl: could not connect to host @@ -12508,20 +13515,20 @@ silentcircle.com: did not receive HSTS header silentcircle.org: could not connect to host silentexplosion.de: could not connect to host silentlink.io: could not connect to host -silentmode.com: max-age too low: 7889238 +silentmode.com: max-age too low: 0 silicagelpackets.ca: did not receive HSTS header +silke-hunde.de: did not receive HSTS header silqueskineyeserum.com: could not connect to host silver-drachenkrieger.de: did not receive HSTS header silverback.is: did not receive HSTS header silvergoldbull.ba: could not connect to host silvergoldbull.md: could not connect to host +silvergoldbull.ph: could not connect to host silverhome.ninja: could not connect to host silverpvp.com: could not connect to host silverstartup.sk: could not connect to host silviamacallister.com: did not receive HSTS header silvistefi.com: could not connect to host -silvobeat.blog: could not connect to host -sim-sim.appspot.com: did not receive HSTS header simbast.com: could not connect to host simbihaiti.com: max-age too low: 7889238 simbol.id: could not connect to host @@ -12539,11 +13546,13 @@ simon.butcher.name: max-age too low: 2629743 simon.lc: did not receive HSTS header simongong.net: did not receive HSTS header simonsaxon.com: did not receive HSTS header +simonschmitt.ch: could not connect to host simonsmh.cc: did not receive HSTS header simpan.id: could not connect to host simpeo.fr: did not receive HSTS header simpeo.org: did not receive HSTS header simpleai.net: max-age too low: 600 +simplecoding.click: did not receive HSTS header simplefraud.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] simplelearner.com: could not connect to host simplepractice.com: did not receive HSTS header @@ -12560,17 +13569,21 @@ sin30.net: could not connect to host sincai666.com: could not connect to host sinclairmoving.com: did not receive HSTS header sincron.org: could not connect to host -sinefili.com: did not receive HSTS header sinful.pw: could not connect to host singee.site: could not connect to host +singerwang.com: could not connect to host +singles-berlin.de: could not connect to host singul4rity.com: could not connect to host sinkip.com: could not connect to host sinneserweiterung.de: could not connect to host +sinon.org: did not receive HSTS header sinoscandinavia.se: could not connect to host sinosky.org: did not receive HSTS header +sinsojb.me: did not receive HSTS header sintesysglobal.com: did not receive HSTS header sinusbot.online: did not receive HSTS header sion.moe: did not receive HSTS header +sipc.org: did not receive HSTS header sipsik.net: did not receive HSTS header siqi.wang: could not connect to host sirburton.com: did not receive HSTS header @@ -12578,7 +13591,10 @@ siriad.com: could not connect to host sirius-lee.net: could not connect to host siro.gq: did not receive HSTS header siroop.ch: max-age too low: 86400 +sisgopro.com: could not connect to host sistemasespecializados.com: did not receive HSTS header +sistemlash.com: did not receive HSTS header +sistemos.net: could not connect to host sistersurprise.de: did not receive HSTS header sitecloudify.com: could not connect to host sitecuatui.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] @@ -12589,14 +13605,14 @@ sitennisclub.com: did not receive HSTS header siterip.org: could not connect to host sites.google.com: did not receive HSTS header (error ignored - included regardless) sitesforward.com: did not receive HSTS header -sitesko.de: did not receive HSTS header -sitesource101.com: did not receive HSTS header +sitesource101.com: could not connect to host sitesten.com: did not receive HSTS header sittinginoblivion.com: did not receive HSTS header -sixcorners.info: could not connect to host sizingservers.be: did not receive HSTS header sizzle.co.uk: did not receive HSTS header +sja-se-training.com: could not connect to host sjdaws.com: could not connect to host +sjdtaxi.com: did not receive HSTS header sjhyl11.com: could not connect to host sjsc.fr: did not receive HSTS header skandiabanken.no: did not receive HSTS header @@ -12607,6 +13623,8 @@ skarox.eu: could not connect to host skarox.net: could not connect to host skarox.ru: could not connect to host skates.guru: did not receive HSTS header +skday.com: did not receive HSTS header +sketchywebsite.net: max-age too low: 0 ski-insurance.com.au: did not receive HSTS header skidstresser.com: could not connect to host skiinstructor.services: did not receive HSTS header @@ -12623,27 +13641,33 @@ skoda-clever-lead.de: could not connect to host skoda-im-dialog.de: could not connect to host skoda-nurdiebesten.de: did not receive HSTS header skoda-service-team-cup.de: did not receive HSTS header +skomski.org: did not receive HSTS header skotty.io: did not receive HSTS header skpdev.net: could not connect to host +skrimix.tk: could not connect to host skrivande.co: could not connect to host skullhouse.nyc: did not receive HSTS header sky-aroma.com: could not connect to host skyasker.cn: could not connect to host skyasker.com: did not receive HSTS header +skybloom.com: could not connect to host +skybound.link: did not receive HSTS header skyflix.me: could not connect to host skyline.link: could not connect to host skyline.tw: did not receive HSTS header skylocker.net: could not connect to host +skylocker.nl: could not connect to host skyoy.com: did not receive HSTS header skypeassets.com: could not connect to host skypoker.com: could not connect to host skyrunners.ch: could not connect to host +skytec.host: did not receive HSTS header skyvault.io: could not connect to host skyveo.ml: did not receive HSTS header skyway.capital: did not receive HSTS header skyworldserver.ddns.net: could not connect to host -sl1pkn07.wtf: could not connect to host -slab.com: did not receive HSTS header +sl1pkn07.wtf: max-age too low: 2592000 +slapen17.nl: could not connect to host slaps.be: could not connect to host slash-dev.de: did not receive HSTS header slash64.co.uk: could not connect to host @@ -12653,8 +13677,9 @@ slashand.co: could not connect to host slashbits.no: did not receive HSTS header slashdesign.it: did not receive HSTS header slashem.me: did not receive HSTS header -slattery.co: could not connect to host +slattery.co: did not receive HSTS header slauber.de: did not receive HSTS header +sld08.com: did not receive HSTS header sleeklounge.com: did not receive HSTS header sleep10.com: could not connect to host sleepstar.com.mt: did not receive HSTS header @@ -12663,52 +13688,62 @@ slicketl.com: did not receive HSTS header slightfuture.click: could not connect to host slightfuture.com: did not receive HSTS header slimmerbouwen.be: did not receive HSTS header +slingo.com: did not receive HSTS header slix.io: could not connect to host sln.cloud: could not connect to host +slo-net.net: could not connect to host slope.haus: could not connect to host slovakiana.sk: did not receive HSTS header +slovenskycestovatel.sk: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] slovoice.org: could not connect to host slowfood.es: did not receive HSTS header slowsociety.org: could not connect to host slse.ca: max-age too low: 0 +sluimann.de: could not connect to host sluplift.com: did not receive HSTS header -slycurity.de: did not receive HSTS header +slycurity.de: could not connect to host slytech.ch: could not connect to host smallcdn.rocks: could not connect to host smallchat.nl: could not connect to host smalldata.tech: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] -smallplanet.ch: could not connect to host +smallpath.me: could not connect to host +smallplanet.ch: did not receive HSTS header smallshopit.com: did not receive HSTS header smart-mirror.de: did not receive HSTS header smart-ov.nl: could not connect to host smartbiz.vn: could not connect to host -smartboleta.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] +smartboleta.com: did not receive HSTS header smartbuyelectric.com: could not connect to host smartcoin.com.br: could not connect to host smarterskies.gov: did not receive HSTS header smarthomedna.com: did not receive HSTS header +smartietop.com: could not connect to host smartit.pro: did not receive HSTS header smartlend.se: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] smartofficesandsmarthomes.com: did not receive HSTS header smartofficeusa.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] smartphone.continental.com: could not connect to host smartrak.co.nz: did not receive HSTS header +smartshoppers.es: did not receive HSTS header +smartwritingservice.com: could not connect to host smcbox.com: did not receive HSTS header smdev.fr: could not connect to host smet.us: could not connect to host smexpt.com: did not receive HSTS header smi-a.me: could not connect to host +smiatek.name: could not connect to host smileawei.com: could not connect to host -smimea.com: did not receive HSTS header +smimea.com: could not connect to host smirkingwhorefromhighgarden.pro: could not connect to host -smith.is: could not connect to host +smith.is: did not receive HSTS header smittix.co.uk: did not receive HSTS header -smkn1lengkong.sch.id: did not receive HSTS header +smkn1lengkong.sch.id: could not connect to host smksi2.com: could not connect to host smksultanismail2.com: could not connect to host -smkw.com: did not receive HSTS header sml.lc: could not connect to host smmcab.ru: could not connect to host +smmcab.website: could not connect to host +smokinghunks.com: could not connect to host smove.sg: did not receive HSTS header smplix.com: could not connect to host smries.com: could not connect to host @@ -12719,19 +13754,22 @@ smspodmena.ru: could not connect to host smtp.bz: did not receive HSTS header smuhelper.cn: could not connect to host smusg.com: could not connect to host -smx.net.br: could not connect to host snafarms.com: did not receive HSTS header snailing.org: could not connect to host +snake.dog: could not connect to host snakehosting.dk: did not receive HSTS header snapappts.com: could not connect to host +snaptools.io: could not connect to host snapworks.net: did not receive HSTS header snarf.in: could not connect to host -sneaker.date: did not receive HSTS header +sneak.berlin: did not receive HSTS header +sneaker.date: could not connect to host sneed.company: could not connect to host snekchat.moe: could not connect to host snelwerk.be: could not connect to host sng.my: could not connect to host snic.website: could not connect to host +sniderman.pro: could not connect to host sniderman.xyz: could not connect to host snip.host: could not connect to host snippet.host: could not connect to host @@ -12741,10 +13779,16 @@ snoqualmiefiber.org: could not connect to host snovey.com: could not connect to host snowdy.eu: could not connect to host snowdy.link: could not connect to host +snowplane.net: did not receive HSTS header +snowraven.de: did not receive HSTS header +snowyluma.com: could not connect to host +snrat.com: did not receive HSTS header so-healthy.co.uk: did not receive HSTS header sobabox.ru: could not connect to host sobinski.pl: did not receive HSTS header soboleva-pr.com.ua: could not connect to host +sobreporcentagem.com: did not receive HSTS header +socal-babes.com: could not connect to host soccergif.com: could not connect to host soci.ml: could not connect to host social-journey.com: could not connect to host @@ -12755,7 +13799,6 @@ socialfacecook.com: could not connect to host socialgrowing.cl: did not receive HSTS header socialhead.io: could not connect to host socialhub.com: did not receive HSTS header -socialmirror.app: did not receive HSTS header socialprize.com: could not connect to host socialspirit.com.br: did not receive HSTS header socialworkout.com: could not connect to host @@ -12769,10 +13812,11 @@ sodacore.com: could not connect to host soe-server.com: could not connect to host softballsavings.com: did not receive HSTS header softclean.pt: did not receive HSTS header +softplaynation.co.uk: could not connect to host sogeek.me: could not connect to host sogravatas.net.br: could not connect to host -soia.ca: could not connect to host sojingle.net: could not connect to host +soju.fi: did not receive HSTS header sokolka.tv: did not receive HSTS header sol-3.de: did not receive HSTS header solarcom.com.br: could not connect to host @@ -12781,17 +13825,16 @@ soldbygold.net: did not receive HSTS header solentes.com.br: could not connect to host solidfuelappliancespares.co.uk: did not receive HSTS header solidimage.com.br: could not connect to host -solidus.systems: could not connect to host +solidtuesday.com: could not connect to host +solidus.systems: did not receive HSTS header solidwebnetworks.co.uk: did not receive HSTS header solinter.com.br: did not receive HSTS header solisrey.es: could not connect to host soljem.com: did not receive HSTS header soll-i.ch: did not receive HSTS header -solos.im: did not receive HSTS header solosmusic.xyz: could not connect to host solsystems.ru: did not receive HSTS header solutive.fi: did not receive HSTS header -solve-it.se: did not receive HSTS header solymar.co: could not connect to host some.rip: max-age too low: 6307200 somebodycares.org: did not receive HSTS header @@ -12799,7 +13842,8 @@ someshit.xyz: could not connect to host something-else.cf: could not connect to host somethingnew.xyz: could not connect to host somethingsimilar.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] -sonafe.info: did not receive HSTS header +somewherein.jp: did not receive HSTS header +sonafe.info: could not connect to host sonerezh.bzh: did not receive HSTS header sonialive.com: did not receive HSTS header sonic.network: did not receive HSTS header @@ -12814,9 +13858,9 @@ soply.com: could not connect to host soporte.cc: could not connect to host sorenam.com: could not connect to host sorensen-online.com: could not connect to host -sorincocorada.ro: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] +sorex.photo: max-age too low: 0 +sorincocorada.ro: could not connect to host sorinmuntean.ro: did not receive HSTS header -sorn.service.gov.uk: did not receive HSTS header sortaweird.net: could not connect to host sortingwizard.com: could not connect to host soruly.moe: did not receive HSTS header @@ -12825,7 +13869,7 @@ sosaka.ml: could not connect to host sosecu.red: could not connect to host sosiolog.com: could not connect to host sosko.in.rs: could not connect to host -sotiran.com: could not connect to host +sotiran.com: did not receive HSTS header sotor.de: did not receive HSTS header soucorneteiro.com.br: could not connect to host sougi-review.top: did not receive HSTS header @@ -12833,12 +13877,15 @@ soulcraft.bz: could not connect to host soulema.com: could not connect to host soulfulglamour.uk: could not connect to host soulsteer.com: could not connect to host +soundbytemedia.com: did not receive HSTS header soundforsound.co.uk: did not receive HSTS header +soundgasm.net: could not connect to host soundsecurity.io: could not connect to host souqtajmeel.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] sourcecode.love: could not connect to host sourcelair.com: did not receive HSTS header sourcitec.com: did not receive HSTS header +sous-surveillance.net: could not connect to host southcoastkitesurf.co.uk: did not receive HSTS header southcoastswords.com: did not receive HSTS header southernjamusa.com: did not receive HSTS header @@ -12863,7 +13910,6 @@ spacelabs.io: could not connect to host spacemo.com: did not receive HSTS header spacountryexplorer.org.au: did not receive HSTS header spaggel.nl: did not receive HSTS header -spaldingwall.com: could not connect to host spam.lol: could not connect to host spamloco.net: did not receive HSTS header spangehlassociates.com: did not receive HSTS header @@ -12879,34 +13925,34 @@ sparta-trade.com: could not connect to host spartantheatre.org: could not connect to host spauted.com: could not connect to host spawn.cz: could not connect to host -spcx.eu: could not connect to host +spcx.eu: did not receive HSTS header spdysync.com: could not connect to host specialedesigns.com: could not connect to host specialistnow.com.au: did not receive HSTS header +spectreattack.com: did not receive HSTS header speculor.net: could not connect to host +spedition-transport-umzug.de: could not connect to host spedplus.com.br: did not receive HSTS header speed-mailer.com: could not connect to host speedcounter.net: could not connect to host speeds.vip: could not connect to host speedway.com.pl: did not receive HSTS header +speedychat.it: could not connect to host speedyprep.com: did not receive HSTS header speidel.com.tr: did not receive HSTS header spencerbaer.com: could not connect to host spendwise.com.au: could not connect to host sperohub.io: could not connect to host sperohub.lt: did not receive HSTS header -spherenix.org: could not connect to host sphinx.network: could not connect to host spicydog.tk: could not connect to host spicywombat.com: could not connect to host -spidermail.tk: could not connect to host -spidernet.tk: could not connect to host -spiegels.nl: could not connect to host +spiegels.nl: did not receive HSTS header spielcasinos.com: did not receive HSTS header -spiet.nl: could not connect to host spikeykc.me: did not receive HSTS header spilsbury.io: could not connect to host spineandscoliosis.com: did not receive HSTS header +spinner.dnshome.de: could not connect to host spirit-dev.net: max-age too low: 0 spirit-hunters-germany.de: did not receive HSTS header spiritbionic.ro: could not connect to host @@ -12916,17 +13962,20 @@ spitefultowel.com: did not receive HSTS header spitfireuav.com: could not connect to host spititout.it: could not connect to host split.is: could not connect to host -splunk.zone: could not connect to host spokonline.com: could not connect to host spon.cz: did not receive HSTS header +sponsorowani.pl: did not receive HSTS header sponsortobias.com: could not connect to host spontex.org: did not receive HSTS header +spookyinternet.com: could not connect to host sporara.com: did not receive HSTS header -sportakrobatik.at: could not connect to host +sport247.bet: max-age too low: 2592000 sportchirp-internal.azurewebsites.net: did not receive HSTS header +sportflash.info: did not receive HSTS header sporthit.ru: could not connect to host sportifik.com: did not receive HSTS header sportingoods.com.br: could not connect to host +sportressofblogitude.com: did not receive HSTS header sportscollection.com.br: could not connect to host sportsmanadvisor.com: could not connect to host sportwette.eu: did not receive HSTS header @@ -12943,13 +13992,13 @@ sprk.fitness: did not receive HSTS header sproing.ca: max-age too low: 0 spron.in: could not connect to host sproutconnections.com: could not connect to host -sprueche-zum-valentinstag.de: did not receive HSTS header -sprueche-zur-geburt.info: did not receive HSTS header +sprueche-zum-valentinstag.de: could not connect to host +sprueche-zur-geburt.info: could not connect to host sprueche-zur-hochzeit.de: did not receive HSTS header sprueche-zur-konfirmation.de: did not receive HSTS header sprutech.de: could not connect to host +spykedigital.com: could not connect to host sqetsa.com: did not receive HSTS header -sqroot.eu: could not connect to host sqshq.de: did not receive HSTS header squaddraft.com: did not receive HSTS header square.gs: could not connect to host @@ -12977,9 +14026,9 @@ ssh.nu: could not connect to host sshool.at: could not connect to host ssl.panoramio.com: could not connect to host ssl.rip: could not connect to host +sslpoint.com: did not receive HSTS header sslzilla.de: did not receive HSTS header ssn1.ru: did not receive HSTS header -sso.to: could not connect to host sspanda.com: could not connect to host ssrvpn.tech: could not connect to host sss3s.com: could not connect to host @@ -12992,23 +14041,29 @@ stackhub.cc: could not connect to host stadionmanager.com: could not connect to host stadjerspasonline.nl: could not connect to host stadtbauwerk.at: did not receive HSTS header -stadtbuecherei-bad-wurzach.de: did not receive HSTS header +stadtbuecherei-bad-wurzach.de: max-age too low: 0 stadtgartenla.com: could not connect to host staffjoy.com: did not receive HSTS header staffjoystaging.com: could not connect to host stagingjobshq.com: did not receive HSTS header stahl.xyz: could not connect to host +stalder.work: could not connect to host stalkerhispano.com: max-age too low: 0 stalkerteam.pl: did not receive HSTS header stalkthe.net: could not connect to host +stall-zur-linde.de: did not receive HSTS header stalschermer.nl: could not connect to host +stamboommuller.nl: did not receive HSTS header +stamboomvanderwal.nl: did not receive HSTS header stanandjerre.org: could not connect to host standardssuck.org: did not receive HSTS header standingmist.com: did not receive HSTS header -standoutbooks.com: max-age too low: 0 +standoutbooks.com: did not receive HSTS header standuppaddlesports.com.au: did not receive HSTS header stannahtrapliften.nl: did not receive HSTS header +star-killer.net: could not connect to host star-stuff.de: did not receive HSTS header +star.do: did not receive HSTS header starandshield.com: did not receive HSTS header starapple.nl: did not receive HSTS header starcafe.me: could not connect to host @@ -13016,12 +14071,10 @@ stardeeps.net: max-age too low: 0 starease.net: could not connect to host starfeeling.net: could not connect to host stargatepartners.com: did not receive HSTS header -starina.ru: could not connect to host starklane.com: max-age too low: 300 starmusic.ga: could not connect to host starplatinum.jp: could not connect to host starquake.nl: could not connect to host -starsam80.net: could not connect to host starsbattle.net: could not connect to host starteesforsale.co.za: did not receive HSTS header startup.melbourne: could not connect to host @@ -13044,23 +14097,25 @@ staticisnoise.com: could not connect to host stationaryjourney.com: did not receive HSTS header stationcharlie.com: could not connect to host stationnementdenuit.ca: did not receive HSTS header -status-sprueche.de: did not receive HSTS header +status-sprueche.de: could not connect to host +status.coffee: could not connect to host statusbot.io: could not connect to host statuschecks.net: could not connect to host stavebnice.net: did not receive HSTS header staxflax.tk: could not connect to host stayokhotelscdc-mailing.com: could not connect to host -stb-schefczyk.de: could not connect to host stcable.net: did not receive HSTS header stcomex.com: did not receive HSTS header -stdrc.cc: did not receive HSTS header +stdev.org: could not connect to host steamhours.com: could not connect to host steampunkrobot.com: did not receive HSTS header +stedbg.net: could not connect to host steelbea.ms: could not connect to host steelrhino.co: could not connect to host steem.io: did not receive HSTS header steenackers.be: did not receive HSTS header stefanweiser.de: did not receive HSTS header +stefany.eu: could not connect to host steffi-in-australien.com: could not connect to host stem.is: did not receive HSTS header stepbystep3d.com: did not receive HSTS header @@ -13080,25 +14135,29 @@ stevensheffey.me: could not connect to host stevensononthe.net: did not receive HSTS header steventruesdell.com: could not connect to host stewartremodelingadvantage.com: could not connect to host +stewonet.nl: did not receive HSTS header +stge.uk: could not connect to host sticklerjs.org: could not connect to host stickmy.cn: could not connect to host stickswag.cf: could not connect to host stig.io: did not receive HSTS header stiger.me: could not connect to host stigroom.com: could not connect to host +stigviewer.com: did not receive HSTS header stijnbelmans.be: max-age too low: 604800 stilettomoda.com.br: could not connect to host stillblackhat.id: could not connect to host stillyarts.com: did not receive HSTS header stinkytrashhound.com: could not connect to host +stirling.co: could not connect to host stirlingpoon.net: could not connect to host stirlingpoon.xyz: could not connect to host -stitthappens.com: could not connect to host +stitthappens.com: did not receive HSTS header stjohnmiami.org: did not receive HSTS header stjohnsc.com: could not connect to host stkbn.com: could not connect to host stkeverneparishcouncil.org.uk: did not receive HSTS header -stl.news: did not receive HSTS header +stl.news: max-age too low: 0 stlucasmuseum.org: did not receive HSTS header stmbgr.com: could not connect to host stn.me.uk: did not receive HSTS header @@ -13108,13 +14167,14 @@ stoffe-monster.de: did not receive HSTS header stoffelen.nl: did not receive HSTS header stoianlawfirm.com: could not connect to host stoick.me: could not connect to host +stoinov.com: could not connect to host stole-my.bike: could not connect to host stole-my.tv: could not connect to host stomadental.com: did not receive HSTS header stonecutterscommunity.com: could not connect to host +stonemain.eu: could not connect to host stonemanbrasil.com.br: could not connect to host stopakwardhandshakes.org: could not connect to host -stopbreakupnow.org: did not receive HSTS header stopwoodfin.org: could not connect to host storbritannien.guide: could not connect to host store-host.com: did not receive HSTS header @@ -13132,7 +14192,6 @@ str0.at: did not receive HSTS header strangeplace.net: did not receive HSTS header strangescout.me: did not receive HSTS header strasweb.fr: did not receive HSTS header -strathewerd.de: did not receive HSTS header strbt.de: could not connect to host strchr.com: did not receive HSTS header stream-ing.xyz: could not connect to host @@ -13142,19 +14201,20 @@ streamer.tips: did not receive HSTS header streamingeverywhere.com: could not connect to host streamingmagazin.de: could not connect to host streampanel.net: did not receive HSTS header +streams.dyndns.org: could not connect to host streamthemeeting.com: did not receive HSTS header streamzilla.com: did not receive HSTS header -streetmarket.ru: could not connect to host strehl.tk: could not connect to host -streklhof.at: did not receive HSTS header strelitzia02.com: could not connect to host stressfreehousehold.com: could not connect to host strictlysudo.com: could not connect to host strife.tk: could not connect to host strila.me: could not connect to host -striptizer.tk: did not receive HSTS header +striptizer.tk: could not connect to host +strobeto.de: did not receive HSTS header stroeercrm.de: could not connect to host strongest-privacy.com: could not connect to host +struxureon.com: did not receive HSTS header stuartbaxter.co: could not connect to host stubbings.eu: could not connect to host student-scientist.org: did not receive HSTS header @@ -13166,15 +14226,16 @@ studenttravel.cz: did not receive HSTS header studer.su: could not connect to host studinf.xyz: could not connect to host studio-panic.com: did not receive HSTS header -studiocn.cn: did not receive HSTS header +studiocn.cn: could not connect to host studiodoprazer.com.br: could not connect to host studiozelden.com: did not receive HSTS header studport.rv.ua: max-age too low: 604800 studyabroadstation.com: could not connect to host -studybay.com: did not receive HSTS header +studybay.com: could not connect to host studydrive.net: did not receive HSTS header studyhub.cf: did not receive HSTS header studying-neet.com: could not connect to host +stuff-fibre.co.nz: did not receive HSTS header stugb.de: did not receive HSTS header stumeta2018.de: could not connect to host stupidstatetricks.com: could not connect to host @@ -13184,13 +14245,16 @@ sturge.co.uk: did not receive HSTS header stuudium.life: could not connect to host stylenda.com: could not connect to host stylle.me: could not connect to host -stytt.com: could not connect to host +styloeart.com: could not connect to host +stytt.com: did not receive HSTS header +suaraangin.com: could not connect to host suareforma.com: could not connect to host +suave.io: did not receive HSTS header subbing.work: could not connect to host subdimension.org: could not connect to host subeesu.com: could not connect to host subhacker.net: could not connect to host -subrain.com: could not connect to host +subrain.com: did not receive HSTS header subrosa.io: could not connect to host subsys.no: did not receive HSTS header subtitle.rip: could not connect to host @@ -13199,14 +14263,14 @@ subzerolosangeles.com: did not receive HSTS header subzerotech.co.uk: could not connect to host successwithflora.com: could not connect to host succubus.network: could not connect to host +succubus.xxx: could not connect to host suche.org: could not connect to host suchprogrammer.net: did not receive HSTS header sudo.im: could not connect to host sudo.li: did not receive HSTS header -sudokian.io: could not connect to host sudosu.fr: could not connect to host suempresa.cloud: could not connect to host -suffts.de: did not receive HSTS header +suffts.de: could not connect to host sugarcitycon.com: could not connect to host sugarsweetorsour.com: did not receive HSTS header sugartownfarm.com: could not connect to host @@ -13221,6 +14285,7 @@ sun.re: could not connect to host suncountrymarine.com: did not receive HSTS header sundaycooks.com: max-age too low: 2592000 suneilpatel.com: could not connect to host +sunfeathers.net: could not connect to host sunfireshop.com.br: could not connect to host sunlandsg.vn: did not receive HSTS header sunnyfruit.ru: could not connect to host @@ -13228,9 +14293,11 @@ sunriseafricarelief.com: did not receive HSTS header sunshinepress.org: could not connect to host sunxchina.com: could not connect to host sunyanzi.tk: could not connect to host +sunyataherb.com: could not connect to host suos.io: could not connect to host supcro.com: could not connect to host -super-demarche.com: could not connect to host +super-demarche.com: did not receive HSTS header +super-erotica.ru: could not connect to host super-garciniaslim.com: could not connect to host super-o-blog.com: could not connect to host super-radiant-skin.com: could not connect to host @@ -13238,6 +14305,7 @@ super-ripped-power.com: could not connect to host super-slim-coffee.com: could not connect to host superbabysitting.ch: could not connect to host superbike.tw: could not connect to host +superbshare.com: could not connect to host supercastlessouthsydney.com.au: could not connect to host supercreepsvideo.com: did not receive HSTS header superiorfloridavacation.com: could not connect to host @@ -13245,28 +14313,33 @@ superklima.ro: did not receive HSTS header superlandnetwork.de: did not receive HSTS header superlentes.com.br: could not connect to host supernovabrasil.com.br: did not receive HSTS header +supernt.lt: could not connect to host superpase.com: could not connect to host +supersahnetorten.de: could not connect to host supersalescontest.nl: did not receive HSTS header superschnappchen.de: could not connect to host +supersec.es: could not connect to host supersecurefancydomain.com: could not connect to host supertramp-dafonseca.com: did not receive HSTS header superuser.fi: could not connect to host superwally.org: could not connect to host supes.io: did not receive HSTS header +supperclub.es: could not connect to host support4server.de: could not connect to host supportfan.gov: could not connect to host suprlink.net: could not connect to host supweb.ovh: did not receive HSTS header -surasak.org: could not connect to host surasak.xyz: could not connect to host suraya.online: could not connect to host surfeasy.com: did not receive HSTS header surfone-leucate.com: did not receive HSTS header +surgiclinic.gr: did not receive HSTS header surkatty.org: did not receive HSTS header -survivalistplanet.com: did not receive HSTS header +survivebox.fr: did not receive HSTS header susastudentenjobs.de: could not connect to host susconam.org: could not connect to host suseasky.com: did not receive HSTS header +sushifrick.de: could not connect to host sushiwereld.be: did not receive HSTS header suspiciousdarknet.xyz: could not connect to host sussexwebdesigns.com: could not connect to host @@ -13280,9 +14353,11 @@ suzukikenichi.com: did not receive HSTS header svadobkajuvi.sk: did not receive HSTS header svarovani.tk: could not connect to host svatba-frantovi.cz: could not connect to host +sve-hosting.nl: could not connect to host svenluijten.com: did not receive HSTS header svenskacasino.com: did not receive HSTS header svenskaservern.se: could not connect to host +svetdrzaku.cz: did not receive HSTS header svetjakonadlani.cz: did not receive HSTS header sviz.pro: could not connect to host svj-stochovska.cz: could not connect to host @@ -13294,17 +14369,17 @@ swallsoft.co.uk: could not connect to host swallsoft.com: could not connect to host swanseapartyhire.co.uk: could not connect to host swarmation.com: did not receive HSTS header +sway.com: did not receive HSTS header swdatlantico.pt: could not connect to host sweep.cards: did not receive HSTS header sweetlegs.jp: could not connect to host sweetstreats.ca: could not connect to host sweetvanilla.jp: could not connect to host -sweharris.org: could not connect to host -swerve-media-testbed-03.co.uk: could not connect to host swfloshatraining.com: could not connect to host swift-devedge.de: could not connect to host swiftconf.com: did not receive HSTS header swiftcrypto.com: could not connect to host +swiftpk.net: could not connect to host swiggy.com: did not receive HSTS header swimming.ca: did not receive HSTS header swissentreprises.ch: could not connect to host @@ -13316,24 +14391,28 @@ swite.com: did not receive HSTS header swmd5c.org: could not connect to host swordfighting.net: could not connect to host swu.party: could not connect to host -swuosa.org: could not connect to host sx3.no: could not connect to host sxbk.pw: could not connect to host +sy-anduril.de: did not receive HSTS header syam.cc: could not connect to host +sychov.pro: could not connect to host sydgrabber.tk: could not connect to host -syha.org.uk: could not connect to host sykl.us: could not connect to host +sylvaincombe.net: could not connect to host sylvangarden.org: could not connect to host sylvanorder.com: could not connect to host +symetria.io: max-age too low: 2592000 synackr.com: did not receive HSTS header synapticconsulting.co.uk: could not connect to host syncaddict.net: could not connect to host syncappate.com: could not connect to host syncclinicalstudy.com: could not connect to host syncer.jp: did not receive HSTS header +synchrocube.com: could not connect to host +synchtu.be: could not connect to host syncmylife.net: could not connect to host syncserve.net: did not receive HSTS header -syneic.com: did not receive HSTS header +syneic.com: could not connect to host synergisticsoccer.com: could not connect to host syno.gq: could not connect to host syntaxoff.com: could not connect to host @@ -13350,6 +14429,7 @@ syspen.space: could not connect to host sysrq.tech: could not connect to host syss.de: did not receive HSTS header systea.net: could not connect to host +system-online.cz: did not receive HSTS header systemd.me: could not connect to host syy.hk: did not receive HSTS header szaszm.tk: could not connect to host @@ -13357,7 +14437,7 @@ szerbnyelvkonyv.hu: could not connect to host szlovaknyelv.hu: could not connect to host szlovennyelv.hu: could not connect to host szongott.net: did not receive HSTS header -szymczak.at: could not connect to host +szymczak.at: did not receive HSTS header t-complex.space: could not connect to host t-ken.xyz: could not connect to host t-point.eu: did not receive HSTS header @@ -13376,6 +14456,7 @@ tabla-periodica.com: could not connect to host tachyonapp.com: could not connect to host tacoma-games.com: did not receive HSTS header tacotown.tk: could not connect to host +tadata.me: could not connect to host tadcastercircuit.org.uk: did not receive HSTS header tadigitalstore.com: could not connect to host tafoma.com: did not receive HSTS header @@ -13385,6 +14466,7 @@ tahakomat.cz: could not connect to host tahf.net: could not connect to host taichi-jade.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] taidu.news: could not connect to host +tailandfur.com: did not receive HSTS header tailify.com: did not receive HSTS header tailpuff.net: did not receive HSTS header tails.com.ar: could not connect to host @@ -13394,6 +14476,7 @@ takebackyourstate.net: could not connect to host takebackyourstate.org: could not connect to host takebonus.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] takedownthissite.com: could not connect to host +takemoto-ped.com: could not connect to host takinet.kr: could not connect to host takusan.ru: could not connect to host talenthero.io: did not receive HSTS header @@ -13405,16 +14488,16 @@ talk.xyz: could not connect to host talkitup.mx: could not connect to host talkitup.online: could not connect to host talklifestyle.nl: could not connect to host +talktwincities.com: could not connect to host tallr.se: could not connect to host tallshoe.com: could not connect to host +talsi.eu: could not connect to host tam7t.com: did not receive HSTS header tamaraboutique.com: could not connect to host -tamasszabo.net: did not receive HSTS header tamersunion.org: did not receive HSTS header tamex.xyz: could not connect to host tandarts-haarlem.nl: did not receive HSTS header tandblekningidag.com: could not connect to host -tandk.com.vn: did not receive HSTS header tangerine.ga: could not connect to host tangibilizing.com: could not connect to host tangiblesecurity.com: did not receive HSTS header @@ -13424,7 +14507,7 @@ tangzhao.net: could not connect to host taniesianie.pl: did not receive HSTS header tankfreunde.de: did not receive HSTS header tante-bugil.net: could not connect to host -tantetilli.de: could not connect to host +tantetilli.de: did not receive HSTS header tantotiempo.de: did not receive HSTS header tanze-jetzt.de: could not connect to host taotuba.net: did not receive HSTS header @@ -13444,18 +14527,18 @@ taskstats.com: could not connect to host tasmansecurity.com: could not connect to host tassup.com: could not connect to host tasta.ro: did not receive HSTS header -tasticfilm.com: could not connect to host +tasticfilm.com: did not receive HSTS header tastyyy.co: could not connect to host tasyacherry-anal.com: could not connect to host tatilbus.com: could not connect to host tatilmix.com: could not connect to host -tatort-fanpage.de: did not receive HSTS header +tatort-fanpage.de: could not connect to host tatt.io: could not connect to host tauchkater.de: could not connect to host tavoittaja.fi: did not receive HSTS header tavopica.lt: did not receive HSTS header -taxaudit.com: did not receive HSTS header taxbench.com: could not connect to host +taxiindenbosch.nl: did not receive HSTS header taxmadras.com: could not connect to host taxsnaps.co.nz: did not receive HSTS header taxspeaker.com: did not receive HSTS header @@ -13463,14 +14546,16 @@ tazemama.biz: could not connect to host tazj.in: did not receive HSTS header tazz.in: could not connect to host tbarter.com: did not receive HSTS header +tbpixel.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] tbrss.com: did not receive HSTS header +tbtech.cz: did not receive HSTS header tbys.us: could not connect to host tc-bonito.de: did not receive HSTS header tcao.info: could not connect to host tcby45.xyz: could not connect to host -tchaka.top: could not connect to host tcl.ath.cx: did not receive HSTS header tcp.expert: did not receive HSTS header +tcspartner.net: did not receive HSTS header tcwebvn.com: could not connect to host tdelmas.eu: could not connect to host tdelmas.ovh: could not connect to host @@ -13487,7 +14572,6 @@ tdsbhack.tk: could not connect to host teacherph.net: could not connect to host teachforcanada.ca: did not receive HSTS header tealdrones.com: did not receive HSTS header -team-pancake.eu: could not connect to host team-teasers.com: could not connect to host team2fou.cf: did not receive HSTS header teamassists.com: did not receive HSTS header @@ -13502,7 +14586,8 @@ teamup.rocks: did not receive HSTS header teamx-gaming.de: could not connect to host teamzeus.cz: could not connect to host teaparty.id: could not connect to host -tearoy.faith: could not connect to host +tearoy.faith: did not receive HSTS header +teasenetwork.com: could not connect to host tebieer.com: could not connect to host tech-blog.fr: did not receive HSTS header tech-finder.fr: could not connect to host @@ -13511,6 +14596,10 @@ techandtux.de: could not connect to host techask.it: could not connect to host techassist.io: did not receive HSTS header techcavern.ml: did not receive HSTS header +techday.co.nz: did not receive HSTS header +techday.com: did not receive HSTS header +techday.com.au: did not receive HSTS header +techday.eu: did not receive HSTS header techelements.co: did not receive HSTS header techfactslive.com: did not receive HSTS header techhipster.net: could not connect to host @@ -13522,6 +14611,8 @@ techmasters.andover.edu: could not connect to host techmatehq.com: could not connect to host technicalforensic.com: could not connect to host technicalpenguins.com: did not receive HSTS header +techniclab.org: could not connect to host +techniclab.ru: could not connect to host technikrom.org: did not receive HSTS header technogroup.cz: did not receive HSTS header technosavvyport.com: did not receive HSTS header @@ -13540,11 +14631,12 @@ tecnidev.com: could not connect to host tecnimotos.com: did not receive HSTS header tecnogaming.com: did not receive HSTS header tecture.de: did not receive HSTS header -tedovo.com: did not receive HSTS header +tedovo.com: could not connect to host tedxkmitl.com: could not connect to host tee-idf.net: could not connect to host teedb.de: could not connect to host teehaus-shila.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] +teenerotic.net: could not connect to host teeplelaw.com: did not receive HSTS header tefl.io: did not receive HSTS header tegelsensanitaironline.nl: did not receive HSTS header @@ -13555,7 +14647,9 @@ teknogeek.id: could not connect to host teknologi.or.id: max-age too low: 36000 teknotes.co.uk: could not connect to host tekshrek.com: did not receive HSTS header +teksuperior.com: could not connect to host tektoria.de: could not connect to host +tekuteku.jp: could not connect to host tel-dithmarschen.de: did not receive HSTS header teleallarme.ch: could not connect to host telecharger-itunes.com: could not connect to host @@ -13572,12 +14666,15 @@ teletechnology.in: did not receive HSTS header teletra.ru: could not connect to host telfordwhitehouse.co.uk: did not receive HSTS header tellingua.com: did not receive HSTS header +teltonica.com: did not receive HSTS header +telugu4u.net: could not connect to host temasa.net: did not receive HSTS header temehu.com: did not receive HSTS header tempcraft.net: could not connect to host tempflix.com: could not connect to host tempo.co: did not receive HSTS header tempodecolheita.com.br: could not connect to host +tempus-aquilae.de: could not connect to host ten-cafe.com: could not connect to host tenberg.com: could not connect to host tendertool.nl: could not connect to host @@ -13595,9 +14692,9 @@ teodio.cl: did not receive HSTS header teoleonie.com: did not receive HSTS header teos.online: could not connect to host teoskanta.fi: could not connect to host -tepid.org: could not connect to host teranga.ch: did not receive HSTS header -terminalvelocity.co.nz: could not connect to host +tercerapuertoaysen.cl: could not connect to host +termino.eu: did not receive HSTS header terra-x.net: could not connect to host terra.by: did not receive HSTS header terrax.berlin: could not connect to host @@ -13605,6 +14702,7 @@ terrax.info: did not receive HSTS header terrax.net: could not connect to host terrazoo.de: did not receive HSTS header teru.com.br: could not connect to host +test-dns.eu: could not connect to host test02.dk: did not receive HSTS header testadron.com: could not connect to host testandroid.xyz: could not connect to host @@ -13628,16 +14726,15 @@ teuniz.nl: did not receive HSTS header texte-zur-taufe.de: did not receive HSTS header textoplano.xyz: could not connect to host textracer.dk: could not connect to host -tf2stadium.com: could not connect to host +tf2stadium.com: did not receive HSTS header tfcoms-sp-tracker-client.azurewebsites.net: could not connect to host tffans.com: could not connect to host tfl.lu: did not receive HSTS header tgbyte.com: did not receive HSTS header tgod.co: could not connect to host tgr.re: could not connect to host -tgtv.tn: did not receive HSTS header th-bl.de: did not receive HSTS header -th3nd.com: did not receive HSTS header +th3nd.com: could not connect to host thackert.myfirewall.org: could not connect to host thagki9.com: did not receive HSTS header thai.land: did not receive HSTS header @@ -13647,7 +14744,7 @@ thaihostcool.com: did not receive HSTS header thailandpropertylisting.com: did not receive HSTS header thailandpropertylistings.com: did not receive HSTS header thalmann.fr: did not receive HSTS header -thalskarth.com: could not connect to host +thalskarth.com: did not receive HSTS header thatgudstuff.com: could not connect to host thatpodcast.io: did not receive HSTS header thatvizsla.life: did not receive HSTS header @@ -13666,17 +14763,21 @@ theamp.com: did not receive HSTS header theater.cf: could not connect to host theavenuegallery.com: did not receive HSTS header thebakingclass.com: max-age too low: 60 +thebarneystyle.com: did not receive HSTS header thebasementguys.com: could not connect to host thebeautifulmusic.net: did not receive HSTS header thebeginningisnye.com: could not connect to host -theberkshirescompany.com: did not receive HSTS header +theberkshirescompany.com: could not connect to host thebigfail.net: could not connect to host thebreakhotel.com: did not receive HSTS header thebrotherswarde.com: could not connect to host thebte.com: could not connect to host thebuffalotavern.com: could not connect to host +thecandidforum.com: could not connect to host thecapitalbank.com: did not receive HSTS header thecharlestonwaldorf.com: did not receive HSTS header +theciderlink.com.au: did not receive HSTS header +thecitizens.com: did not receive HSTS header theclementinebutchers.com: could not connect to host theclimbingunit.com: did not receive HSTS header thecloudmigrator.com: did not receive HSTS header @@ -13685,7 +14786,7 @@ theclubjersey.com: did not receive HSTS header thecodeninja.net: did not receive HSTS header thecoffeehouse.xyz: could not connect to host thecoffeepod.co.uk: did not receive HSTS header -thecskr.in: could not connect to host +thecskr.in: did not receive HSTS header thecsw.com: did not receive HSTS header thedailyupvote.com: could not connect to host thedarkartsandcrafts.com: could not connect to host @@ -13695,8 +14796,9 @@ thedrinks.co: did not receive HSTS header thedrop.pw: did not receive HSTS header thedrunkencabbage.com: could not connect to host thedystance.com: could not connect to host +theel0ja.info: did not receive HSTS header theelitebuzz.com: could not connect to host -theendofzion.com: did not receive HSTS header +theendofzion.com: could not connect to host theepankar.com: could not connect to host theescapistswiki.com: could not connect to host theevergreen.me: could not connect to host @@ -13704,18 +14806,21 @@ theexpatriate.de: could not connect to host theeyeopener.com: did not receive HSTS header thefarbeyond.com: could not connect to host thefootballanalyst.com: did not receive HSTS header -thefox.co: could not connect to host +thefox.co: did not receive HSTS header +thefox.com.fr: could not connect to host thefreebirds.in: could not connect to host thefrk.xyz: could not connect to host thefrozenfire.com: did not receive HSTS header thefutureharrills.com: could not connect to host +thegcccoin.com: max-age too low: 2592000 thegemriverside.com.vn: could not connect to host thego2swatking.com: could not connect to host thegoldregister.co.uk: could not connect to host thegraciousgourmet.com: did not receive HSTS header +thegreens.us: could not connect to host thegreenvpn.com: could not connect to host thehiddenbay.cc: could not connect to host -thehiddenbay.eu: could not connect to host +thehiddenbay.eu: max-age too low: 0 thehiddenbay.me: could not connect to host thehiddenbay.net: could not connect to host thehighersideclothing.com: did not receive HSTS header @@ -13725,6 +14830,7 @@ thehoopsarchive.com: could not connect to host theimagesalon.com: max-age too low: 43200 theinvisibletrailer.com: could not connect to host theitsage.com: did not receive HSTS header +thej0lt.com: could not connect to host thejobauction.com: did not receive HSTS header thejserver.de: could not connect to host thekrewserver.com: did not receive HSTS header @@ -13735,14 +14841,16 @@ thelostyankee.com: could not connect to host themadmechanic.net: could not connect to host themanufacturingmarketingagency.com: could not connect to host themarble.co: could not connect to host -themaster.site: did not receive HSTS header themathbehindthe.science: could not connect to host themathematician.uk: could not connect to host +themeaudit.com: could not connect to host themerchandiser.net: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] themesurgeons.net: could not connect to host themicrocapital.com: could not connect to host +themilanlife.com: could not connect to host themoderate.xyz: could not connect to host thenextstep.events: could not connect to host +thenichecast.com: could not connect to host thenorthschool.org.uk: did not receive HSTS header thenrdhrd.nl: could not connect to host theodorejones.info: could not connect to host @@ -13754,7 +14862,6 @@ theoverfly.co: could not connect to host thepaffy.de: could not connect to host thepartywarehouse.co.uk: did not receive HSTS header thepcweb.tk: could not connect to host -thepeninsulaires.com: could not connect to host thepiratebay.al: could not connect to host thepiratebay.poker: could not connect to host thepiratebay.tech: could not connect to host @@ -13766,25 +14873,28 @@ therise.ca: max-age too low: 300 thermique.ch: could not connect to host theroamingnotary.com: did not receive HSTS header therockawaysny.com: did not receive HSTS header +thesassynut.com: did not receive HSTS header thesearchnerds.co.uk: did not receive HSTS header thesecurityteam.net: could not connect to host thesehighsandlows.com: could not connect to host theserver201.tk: could not connect to host theshadestore.com: max-age too low: 10368000 -theshopally.com: did not receive HSTS header thesled.net: could not connect to host thesplit.is: could not connect to host thestack.xyz: could not connect to host thestagchorleywood.co.uk: did not receive HSTS header thestonegroup.de: could not connect to host +thestoritplace.com: max-age too low: 0 thetapirsmouth.com: could not connect to host thethirdroad.com: did not receive HSTS header +thetradinghall.com: could not connect to host thetruthhurvitz.com: could not connect to host theurbanyoga.com: did not receive HSTS header theuucc.org: did not receive HSTS header thevintagenews.com: did not receive HSTS header thevoid.one: could not connect to host thewallset.com: could not connect to host +thewaxhouse.shop: did not receive HSTS header thewebfellas.com: did not receive HSTS header thewego.com: could not connect to host theweilai.com: could not connect to host @@ -13793,18 +14903,19 @@ theworkingeye.nl: [Exception... "Component returned failure code: 0x80004005 (NS thewp.pro: could not connect to host thezonders.com: did not receive HSTS header thgros.fr: could not connect to host +thibautcharles.net: did not receive HSTS header +thienteakee.com: did not receive HSTS header thierfreund.de: did not receive HSTS header -thierryhayoz.ch: could not connect to host thinkcash.nl: could not connect to host thinkcoding.de: could not connect to host thinkcoding.org: could not connect to host thinkdo.jp: could not connect to host +thinklikeanentrepreneur.com: did not receive HSTS header thinkswap.com: did not receive HSTS header thinlyveiledcontempt.com: could not connect to host thirdpartytrade.com: did not receive HSTS header -thirdworld.moe: did not receive HSTS header thirty5.net: did not receive HSTS header -thirtyspot.com: did not receive HSTS header +thirtyspot.com: could not connect to host thisisacompletetest.ga: could not connect to host thisisforager.com: could not connect to host thismumdoesntknowbest.com: could not connect to host @@ -13814,48 +14925,54 @@ thkb.net: could not connect to host thomas-ferney.fr: did not receive HSTS header thomas-gibertie.fr: did not receive HSTS header thomas-grobelny.de: could not connect to host -thomas-prior.com: could not connect to host thomascloud.ddns.net: could not connect to host -thomasetsophie.fr: could not connect to host +thomasgriffin.io: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] thomasharvey.me: did not receive HSTS header thomaskliszowski.fr: did not receive HSTS header -thomasmeester.nl: did not receive HSTS header thomasnet.fr: could not connect to host thomasscholz.com: max-age too low: 2592000 thomasschweizer.net: could not connect to host thomasvt.xyz: max-age too low: 2592000 +thompsonfamily.cloud: could not connect to host thorbis.com: could not connect to host thorbiswebsitedesign.com: could not connect to host thorgames.nl: did not receive HSTS header thorncreek.net: did not receive HSTS header thot.space: could not connect to host +thoughtsynth.com: could not connect to host +thoughtsynth.net: could not connect to host +thoughtsynth.org: could not connect to host threatcentral.io: could not connect to host threebrothersbrewing.com: max-age too low: 2592000 threebulls.be: did not receive HSTS header +threit.de: did not receive HSTS header thriveapproach.co.uk: did not receive HSTS header thrivewellnesshub.co.za: did not receive HSTS header throughthelookingglasslens.co.uk: could not connect to host thrx.net: did not receive HSTS header thumbtack.com: did not receive HSTS header thundercampaign.com: could not connect to host -thunderfield-boat.co.uk: could not connect to host +thuviensoft.net: could not connect to host +thuybich.com: did not receive HSTS header thyrex.fr: could not connect to host ti-js.com: could not connect to host -ti.blog.br: could not connect to host +ti.blog.br: did not receive HSTS header +tiacollection.com: did not receive HSTS header tianxicaipiao.com: could not connect to host tianxicaipiao.win: could not connect to host tianxicp.com: could not connect to host -tianxing.pro: could not connect to host +tianxing.pro: did not receive HSTS header tianxingvpn.pro: could not connect to host tibbitshall.ca: could not connect to host tibovanheule.site: could not connect to host ticketoplichting.nl: did not receive HSTS header tickopa.co.uk: could not connect to host tickreport.com: did not receive HSTS header -ticktock.today: did not receive HSTS header +ticktock.today: could not connect to host tictactux.de: could not connect to host tidmore.us: could not connect to host tie-online.org: did not receive HSTS header +tiendafetichista.com: could not connect to host tiendschuurstraat.nl: could not connect to host tiensnet.com: could not connect to host tierarztpraxis-illerwinkel.de: did not receive HSTS header @@ -13863,15 +14980,16 @@ tierrarp.com: could not connect to host tiffanytravels.com: did not receive HSTS header tightlineproductions.com: did not receive HSTS header tigit.co.nz: could not connect to host +tiki-god.co.uk: could not connect to host tikutiku.pl: could not connect to host tildebot.com: could not connect to host tilient.eu: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] -tilkah.com.au: did not receive HSTS header +tilkah.com.au: could not connect to host tillcraft.com: could not connect to host timbeilby.com: could not connect to host timbuktutimber.com: did not receive HSTS header -timcamara.com: did not receive HSTS header -timco.cloud: could not connect to host +timcamara.com: could not connect to host +timdebruijn.nl: did not receive HSTS header time-river.xyz: could not connect to host timeatlas.com: did not receive HSTS header timer.fit: could not connect to host @@ -13884,24 +15002,26 @@ timeserver2.de: could not connect to host timeserver3.de: could not connect to host timestamp.io: did not receive HSTS header timestamp.uk: could not connect to host +timhieubenh.net: could not connect to host timhjalpen.se: could not connect to host timklefisch.de: did not receive HSTS header timmy.ws: could not connect to host -timotrans.de: did not receive HSTS header -timotrans.eu: did not receive HSTS header +timotrans.de: could not connect to host +timotrans.eu: could not connect to host timowi.de: could not connect to host timowi.net: could not connect to host timroes.de: did not receive HSTS header timschubert.net: max-age too low: 172800 +timtj.ca: could not connect to host timvandekamp.nl: did not receive HSTS header +timweb.ca: could not connect to host timwhite.io: did not receive HSTS header timwittenberg.com: could not connect to host -timysewyn.be: could not connect to host tinchbear.xyz: did not receive HSTS header tindewen.net: could not connect to host tink.network: could not connect to host tipiakers.club: could not connect to host -tipps-fuer-den-haushalt.de: did not receive HSTS header +tipps-fuer-den-haushalt.de: could not connect to host tippspiel.cc: could not connect to host tipsyk.ru: could not connect to host tiredofeating.com: could not connect to host @@ -13911,8 +15031,10 @@ tism.in: could not connect to host tiste.org: could not connect to host titanlab.de: could not connect to host titanleaf.com: could not connect to host +titanpointe.org: did not receive HSTS header tittarpuls.se: could not connect to host titties.ml: could not connect to host +tjandpals.com: could not connect to host tjc.wiki: could not connect to host tjeckien.guide: could not connect to host tjs.me: could not connect to host @@ -13924,6 +15046,7 @@ tkonstantopoulos.tk: could not connect to host tkts.cl: could not connect to host tlach.cz: did not receive HSTS header tlcdn.net: could not connect to host +tlcnet.info: could not connect to host tlo.hosting: could not connect to host tlo.link: could not connect to host tlo.network: could not connect to host @@ -13933,7 +15056,6 @@ tlshost.net: could not connect to host tm-solutions.eu: could not connect to host tm.id.au: did not receive HSTS header tmaward.net: could not connect to host -tmdc.ddns.net: could not connect to host tmhlive.com: could not connect to host tmin.cf: could not connect to host tmitchell.io: could not connect to host @@ -13942,6 +15064,7 @@ tmtradingmorocco.ma: could not connect to host tnb-plattform.de: could not connect to host tncnanet.com.br: could not connect to host tno.io: could not connect to host +to2mbn.org: could not connect to host tobaby.com.br: could not connect to host tobaccore.eu: could not connect to host tobaccore.sk: could not connect to host @@ -13951,21 +15074,26 @@ tobiasmathes.com: could not connect to host tobiasmathes.name: could not connect to host tobiasofficial.at: could not connect to host tobiassachs.cf: could not connect to host -tobiassachs.de: could not connect to host tobiassachs.tk: could not connect to host +tobis-webservice.de: did not receive HSTS header +tobisworld.ch: could not connect to host tobyx.is: could not connect to host todesschaf.org: could not connect to host todo.is: could not connect to host todobazar.es: could not connect to host +todokete.ga: could not connect to host todoscomciro.com: did not receive HSTS header todosrv.com: could not connect to host tofa-koeln.de: could not connect to host +tofilmhub.com: could not connect to host tofu.im: could not connect to host togelonlinecommunity.com: did not receive HSTS header -tojeto.eu: could not connect to host +tohokufd.com: could not connect to host +tojeto.eu: did not receive HSTS header toka.sg: could not connect to host tokage.me: could not connect to host tokenloan.com: could not connect to host +tokfun.com: could not connect to host tokobungaasryflorist.com: did not receive HSTS header tokobungadijambi.com: did not receive HSTS header tokobungadilampung.com: could not connect to host @@ -13977,10 +15105,12 @@ tokotimbangandigitalmurah.web.id: did not receive HSTS header tokototech.com: could not connect to host tokoyo.biz: could not connect to host tollmanz.com: did not receive HSTS header -tollsjekk.no: did not receive HSTS header +tollsjekk.no: could not connect to host tolud.com: could not connect to host tom.run: did not receive HSTS header tomandshirley.com: could not connect to host +tomaz.eu: could not connect to host +tomcort.com: could not connect to host tomeara.net: could not connect to host tomevans.io: did not receive HSTS header tomharling.co.uk: could not connect to host @@ -13992,13 +15122,16 @@ tommy-bordas.fr: did not receive HSTS header tommyads.com: could not connect to host tommyweber.de: did not receive HSTS header tomphill.co.uk: could not connect to host +tomy.icu: could not connect to host tonburi.jp: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] tongmu.me: could not connect to host toniharant.de: could not connect to host +tono.us: could not connect to host toomanypillows.com: could not connect to host -tooolroc.org: could not connect to host +top-solar-info.de: could not connect to host top-stage.net: could not connect to host top10mountainbikes.info: could not connect to host +top9.fr: did not receive HSTS header topanlage.de: could not connect to host topbargains.com.au: did not receive HSTS header topbestsellerproduct.com: did not receive HSTS header @@ -14013,15 +15146,15 @@ topnovini.com: did not receive HSTS header toppik.com.br: could not connect to host topservercccam.com: did not receive HSTS header topshelfguild.com: could not connect to host +topshoptools.com: could not connect to host toptenthebest.com: did not receive HSTS header toptranslation.com: did not receive HSTS header -topwin.la: could not connect to host topyx.com: did not receive HSTS header tor2web.org: could not connect to host torbay.ga: could not connect to host +torbe.es: could not connect to host torchl.it: could not connect to host toretfaction.net: could not connect to host -torg-room.ru: could not connect to host torlock.download: could not connect to host torproject.org.uk: could not connect to host torproject.ovh: could not connect to host @@ -14035,6 +15168,7 @@ torv.rocks: did not receive HSTS header tosecure.link: could not connect to host toshnix.com: could not connect to host toshub.com: could not connect to host +totaku.ru: could not connect to host totalle.com.br: could not connect to host totallynotaserver.com: could not connect to host totalsystemcare.com: could not connect to host @@ -14047,23 +15181,25 @@ totot.net: did not receive HSTS header toucedo.de: could not connect to host touch-up-net.com: could not connect to host touchbasemail.com: did not receive HSTS header +touchinformatica.com: did not receive HSTS header touchpointidg.us: could not connect to host touchscreen-handy.de: did not receive HSTS header touchstonefms.co.uk: did not receive HSTS header -touhou.cc: did not receive HSTS header touray-enterprise.ch: could not connect to host tournaire.fr: did not receive HSTS header tourpeer.com: did not receive HSTS header toursandtransfers.it: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] tousproducteurs.fr: did not receive HSTS header towaway.ru: could not connect to host -town-farm.surrey.sch.uk: could not connect to host +town-farm.surrey.sch.uk: max-age too low: 0 +townofbridgewater.ca: could not connect to host tox.im: did not receive HSTS header toxicboot.com: could not connect to host toxicip.com: could not connect to host toxme.se: did not receive HSTS header toymania.de: could not connect to host toyotamotala.se: could not connect to host +tpansino.com: could not connect to host tpbcdn.com: could not connect to host tpblist.xyz: could not connect to host tpbunblocked.org: could not connect to host @@ -14073,10 +15209,11 @@ tppdebate.org: did not receive HSTS header trabajarenperu.com: did not receive HSTS header tracetracker.com: did not receive HSTS header tracetracker.no: did not receive HSTS header +tracewind.top: could not connect to host track.plus: could not connect to host trackdays4fun.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] tracker-gps.ch: could not connect to host -trackingstream.com: did not receive HSTS header +trackmeet.io: did not receive HSTS header tracktivity.com.au: did not receive HSTS header trade-smart.ru: could not connect to host tradietrove.com.au: did not receive HSTS header @@ -14086,7 +15223,6 @@ tradingcentre.com.au: did not receive HSTS header tradinghope.com: could not connect to host tradingrooms.com: did not receive HSTS header traditional-knowledge.tk: did not receive HSTS header -tradiz.org: could not connect to host traeningsprojekt.dk: did not receive HSTS header trafficquality.org: could not connect to host traffictigers.com: did not receive HSTS header @@ -14097,20 +15233,11 @@ trainhorns.us: did not receive HSTS header training4girls.ru: could not connect to host traininglist.org: could not connect to host trainingproviderresults.gov: could not connect to host -trainline.at: could not connect to host -trainline.cn: could not connect to host -trainline.com.br: could not connect to host -trainline.com.pt: could not connect to host -trainline.cz: could not connect to host trainline.dk: could not connect to host trainline.io: could not connect to host -trainline.nl: could not connect to host -trainline.no: could not connect to host -trainline.pl: could not connect to host trainline.se: could not connect to host trainut.com: could not connect to host trakfusion.com: could not connect to host -tran.pw: did not receive HSTS header tranos.de: did not receive HSTS header transbike.es: did not receive HSTS header transcendmotor.sg: could not connect to host @@ -14123,13 +15250,15 @@ translate.googleapis.com: did not receive HSTS header (error ignored - included transmithe.net: could not connect to host transportal.sk: did not receive HSTS header transsexualpantyhose.com: could not connect to host -trauertexte.info: did not receive HSTS header +tratamentoparacelulite.biz: did not receive HSTS header +tratamentoparacelulite.net: did not receive HSTS header +trauertexte.info: could not connect to host traumhuetten.de: did not receive HSTS header travality.ru: could not connect to host travel-kuban.ru: did not receive HSTS header -travel1x1.com: could not connect to host +travel1x1.com: did not receive HSTS header +traveling-thailand.info: could not connect to host travelinsightswriter.com: could not connect to host -travelinsurance.co.nz: did not receive HSTS header travelling.expert: could not connect to host travotion.com: could not connect to host trazosdearte.com: did not receive HSTS header @@ -14141,7 +15270,7 @@ treeremovaljohannesburg.co.za: could not connect to host treino.blog.br: could not connect to host treker.us: could not connect to host trell.co.in: did not receive HSTS header -tremoureux.fr: did not receive HSTS header +tremoureux.fr: could not connect to host trendberry.ru: could not connect to host trendingpulse.com: could not connect to host trendisland.de: did not receive HSTS header @@ -14162,12 +15291,12 @@ trinitytechdev.com: did not receive HSTS header tripcombi.com: did not receive HSTS header tripdelta.com: did not receive HSTS header tripinsider.club: did not receive HSTS header -tripp.xyz: did not receive HSTS header trisportas.lt: did not receive HSTS header tristanfarkas.one: could not connect to host trixati.org.ua: did not receive HSTS header trixies-wish.nz: could not connect to host trixy.com.br: could not connect to host +trizone.com.au: did not receive HSTS header troi.de: did not receive HSTS header trollme.me: could not connect to host trollscave.xyz: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] @@ -14175,6 +15304,7 @@ tronflix.com: did not receive HSTS header troo.ly: could not connect to host trouter.io: could not connect to host trouver-son-chemin.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] +trpg.wiki: could not connect to host truckgpsreviews.com: did not receive HSTS header true.ink: did not receive HSTS header truebred-labradors.com: did not receive HSTS header @@ -14185,6 +15315,8 @@ trush.in: could not connect to host trustedinnovators.com: could not connect to host trusteecar.com: did not receive HSTS header trustmeimfancy.com: could not connect to host +trustocean.com: did not receive HSTS header +try2services.cm: did not receive HSTS header trybind.com: could not connect to host tryfabulousdiet.com: could not connect to host tryfm.net: did not receive HSTS header @@ -14224,15 +15356,17 @@ tubex.ga: could not connect to host tucidi.net: could not connect to host tucker.wales: could not connect to host tucnak.eu: could not connect to host +tudorapido.com.br: did not receive HSTS header tueche.com.ar: did not receive HSTS header -tuingereedschappen.net: did not receive HSTS header +tufilo.com: could not connect to host +tugers.com: did not receive HSTS header tuja.hu: could not connect to host +tulenceria.es: could not connect to host tulsameetingroom.com: could not connect to host -tuminauskas.lt: did not receive HSTS header -tunai.id: could not connect to host tunca.it: did not receive HSTS header tunebitfm.de: could not connect to host tungstenroyce.com: did not receive HSTS header +tunity.be: did not receive HSTS header tupizm.com: could not connect to host turismo.cl: could not connect to host turkiet.guide: could not connect to host @@ -14246,12 +15380,13 @@ turtles.ga: could not connect to host tusb.ml: did not receive HSTS header tussengelegenwoningverkopen.nl: could not connect to host tuthowto.com: did not receive HSTS header +tutiendaroja.com: did not receive HSTS header +tutiendarosa.com: did not receive HSTS header tutorio.ga: could not connect to host tutu.ro: could not connect to host tuturulianda.com: did not receive HSTS header tuvalie.com: did not receive HSTS header tuxhound.org: could not connect to host -tuxplace.nl: could not connect to host tv.search.yahoo.com: could not connect to host tvc.red: could not connect to host tverdohleb.com: could not connect to host @@ -14274,26 +15409,28 @@ twee-onder-een-kap-woning-in-zwartewaterland-kopen.nl: could not connect to host tweeondereenkapverkopen.nl: could not connect to host tweeondereenkapwoningverkopen.nl: could not connect to host tweetify.io: could not connect to host +twelve.rocks: could not connect to host twelve.today: could not connect to host -twelverocks.com: did not receive HSTS header +twelverocks.com: could not connect to host +twem.ddns.net: could not connect to host twillionmas.com: could not connect to host twinkieman.com: could not connect to host twinkseason.ca: could not connect to host twinkseason.co: could not connect to host twinkseason.co.uk: could not connect to host -twinkseason.com: could not connect to host twinkseason.net: could not connect to host twinkseason.org: could not connect to host twinkseason.xyz: could not connect to host twiri.net: could not connect to host twist.party: could not connect to host +twisted-brains.org: could not connect to host twitter.ax: could not connect to host twogo.com: did not receive HSTS header +twolanedesign.com: did not receive HSTS header twolinepassbrewing.com: could not connect to host twolivelife.com: could not connect to host twoo.com: could not connect to host twotube.ie: could not connect to host -twuni.org: could not connect to host tx041cap.org: could not connect to host txbi.de: could not connect to host txclimbers.com: could not connect to host @@ -14304,21 +15441,27 @@ ty2u.com: did not receive HSTS header tycjt.vip: did not receive HSTS header tykoon.com: could not connect to host tyler.coach: could not connect to host -tyler.rs: could not connect to host tylercoach.com: could not connect to host tylerharcourt.ca: max-age too low: 86400 tylerharcourt.com: could not connect to host tylerharcourt.org: did not receive HSTS header tylerharcourt.xyz: could not connect to host tylerjharcourt.com: could not connect to host -tyleromeara.com: could not connect to host tylian.net: max-age too low: 0 +type1joe.com: could not connect to host +type1joe.net: could not connect to host +type1joe.org: could not connect to host typeofweb.com: did not receive HSTS header +typeonejoe.net: could not connect to host +typeonejoe.org: could not connect to host typingrevolution.com: did not receive HSTS header -tyreis.com: could not connect to host +tyreis.com: did not receive HSTS header tyrelius.com: could not connect to host tyroproducts.eu: did not receive HSTS header tyskland.guide: could not connect to host +tysye.ca: could not connect to host +tyuo-keibi.co.jp: did not receive HSTS header +tz56789.com: did not receive HSTS header tzappa.net: could not connect to host tzwe.com: could not connect to host u-master.net: did not receive HSTS header @@ -14333,15 +15476,19 @@ ubicloud.de: could not connect to host ubicv.com: could not connect to host ublox.com: did not receive HSTS header ubtce.com: could not connect to host -ubuntuhot.com: could not connect to host -udruga-point.hr: did not receive HSTS header +ubuntuhot.com: did not receive HSTS header +uc.ac.id: did not receive HSTS header +uclanmasterplan.co.uk: did not receive HSTS header +udbhav.me: could not connect to host ueba1085.jp: could not connect to host uefeng.com: did not receive HSTS header uega.net: did not receive HSTS header +uerdingen.info: did not receive HSTS header uesociedadlimitada.com: could not connect to host ueu.me: could not connect to host ufgaming.com: did not receive HSTS header uflixit.com: did not receive HSTS header +ufo.moe: did not receive HSTS header ufotable.uk: could not connect to host ugcdn.com: could not connect to host ugisgutless.com: could not connect to host @@ -14352,7 +15499,7 @@ uhlhosting.ch: [Exception... "Component returned failure code: 0x80004005 (NS_ER uhm.io: did not receive HSTS header uhuru-market.com: could not connect to host uitslagensoftware.nl: did not receive HSTS header -ukas.com: did not receive HSTS header +ukas.com: could not connect to host ukdropshipment.co.uk: did not receive HSTS header ukdropshipment.com: did not receive HSTS header ukk.dk: did not receive HSTS header @@ -14363,18 +15510,20 @@ ulabox.es: did not receive HSTS header ulalau.com: could not connect to host ullamodaintima.com.br: could not connect to host ulmo.dk: could not connect to host -ulti.gq: could not connect to host +ulti.gq: did not receive HSTS header ultimate-garcinia-plus.com: could not connect to host ultimate-glow-skin.com: could not connect to host ultimate-memoryplus.com: could not connect to host ultimate-neuroplus.com: could not connect to host +ultrasteam.net: could not connect to host ultros.io: did not receive HSTS header umaimise.info: did not receive HSTS header +umassfive.coop: did not receive HSTS header +umbriel.fr: did not receive HSTS header umgardi.ca: could not connect to host umidev.com: could not connect to host umie.cc: did not receive HSTS header ump45.moe: did not receive HSTS header -umsapi.com: could not connect to host unapolegetic.co: did not receive HSTS header unart.info: could not connect to host unbanthe.net: could not connect to host @@ -14385,8 +15534,10 @@ unblocked.date: could not connect to host unblocked.faith: could not connect to host unblocked.host: could not connect to host unblocked.party: could not connect to host +unblocked.sh: could not connect to host unblocked.st: did not receive HSTS header unblocked.today: could not connect to host +unblocked.vc: could not connect to host unblocked.win: could not connect to host unblocked.works: could not connect to host unblocked.world: could not connect to host @@ -14402,9 +15553,10 @@ unblockthe.site: could not connect to host unblockthe.top: could not connect to host unccdesign.club: could not connect to host unclegen.xyz: could not connect to host +undeadbrains.de: could not connect to host under30stravelinsurance.com.au: did not receive HSTS header +undercovercondoms.com: could not connect to host underkin.com: could not connect to host -underskatten.tk: could not connect to host unefuite.ch: could not connect to host unfiltered.nyc: could not connect to host ungern.guide: could not connect to host @@ -14424,23 +15576,23 @@ uniformespousoalegre.com.br: did not receive HSTS header unikitty-on-tour.com: could not connect to host unikrn.com: could not connect to host unionstationapp.com: could not connect to host -unipig.de: could not connect to host unirenter.ru: did not receive HSTS header unison.com: did not receive HSTS header -unisyssecurity.com: could not connect to host -uniteasia.org: did not receive HSTS header +unisyssecurity.com: did not receive HSTS header unitedcyberdevelopment.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] unitlabs.net: could not connect to host unitrade-425.co.za: did not receive HSTS header university4industry.com: did not receive HSTS header +universogay.com: could not connect to host univstore.win: could not connect to host univz.com: could not connect to host unixtime.pro: could not connect to host +unknownbreakup.com: max-age too low: 2592000 unknownphenomena.net: could not connect to host unmanaged.space: could not connect to host unplugg3r.dk: could not connect to host +unpossible.xyz: could not connect to host unravel.ie: could not connect to host -uns.vn: could not connect to host unschoolrules.com: did not receive HSTS header unstockd.org: could not connect to host unsupervised.ca: did not receive HSTS header @@ -14454,38 +15606,41 @@ uonstaffhub.com: could not connect to host uow.ninja: could not connect to host up1.ca: could not connect to host upaknship.com: did not receive HSTS header -upbad.com: did not receive HSTS header +upandclear.org: max-age too low: 0 upboard.jp: could not connect to host -upgauged.com: could not connect to host upldr.pw: could not connect to host uploadbro.com: could not connect to host upmchealthsecurity.us: could not connect to host uporoops.com: could not connect to host uprotect.it: could not connect to host upstats.eu: could not connect to host +uptakedigital.com.au: max-age too low: 2592000 uptic.net: did not receive HSTS header upupming.site: did not receive HSTS header ur-lauber.de: did not receive HSTS header urban-garden.lt: could not connect to host urban-garden.lv: could not connect to host urbanmic.com: could not connect to host +urbanstylestaging.com: did not receive HSTS header urbpic.com: could not connect to host urcentral.org: could not connect to host +url.cab: could not connect to host urlachershop.com.br: did not receive HSTS header +urlakite.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] urlchomp.com: did not receive HSTS header urology.wiki: did not receive HSTS header -urphp.com: could not connect to host -ursae.co: did not receive HSTS header -us-immigration.com: could not connect to host +urphp.com: did not receive HSTS header +us-immigration.com: did not receive HSTS header usaab.org: did not receive HSTS header usafuelservice.com: did not receive HSTS header usatomotori.com: did not receive HSTS header usbirthcertificate.com: could not connect to host usbtypeccompliant.com: could not connect to host -uscitizenship.info: could not connect to host +uscitizenship.info: did not receive HSTS header uscntalk.com: could not connect to host uscp8.com: could not connect to host uscurrency.gov: did not receive HSTS header +use.ci: could not connect to host used-in.jp: could not connect to host usedesk.ru: did not receive HSTS header useevlo.com.br: could not connect to host @@ -14493,26 +15648,27 @@ user-new.com: did not receive HSTS header usercare.com: did not receive HSTS header useresponse.com: did not receive HSTS header userify.com: max-age too low: 0 -usimmigration.us: could not connect to host uslab.io: could not connect to host usparklodging.com: did not receive HSTS header usportsgo.com: could not connect to host usr.nz: did not receive HSTS header +utdscanner.com: did not receive HSTS header utilitronium-shockwave.com: could not connect to host utleieplassen.no: could not connect to host utopiagalaxy.space: could not connect to host +utopialgb.org.uk: could not connect to host utopian-surgery.com: could not connect to host utopianconcept.com: did not receive HSTS header utopianhomespa.com: did not receive HSTS header utopianrealms.org: did not receive HSTS header utopians.dk: did not receive HSTS header uttnetgroup.fr: could not connect to host -utumno.ch: did not receive HSTS header +utumno.ch: could not connect to host utvbloggen.se: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] uvarov.pw: did not receive HSTS header uwesander.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] uwfreelanceopticien.nl: could not connect to host -uwsoftware.be: did not receive HSTS header +uwimonacs.org.jm: did not receive HSTS header uwstartups.com: could not connect to host uxux.pl: could not connect to host uygindir.ml: could not connect to host @@ -14524,9 +15680,10 @@ v-desk.ga: could not connect to host v0rtex.xyz: could not connect to host v0tti.com: did not receive HSTS header v12.co.uk: did not receive HSTS header +v1sit0r.ru: could not connect to host v2.pw: did not receive HSTS header v2ex.us: could not connect to host -v4s.ro: could not connect to host +v4s.ro: did not receive HSTS header v4veedu.com: could not connect to host v5wz.com: did not receive HSTS header v5xp.com: did not receive HSTS header @@ -14545,9 +15702,11 @@ vaddder.com: could not connect to host vadennissanofhinesvilleparts.com: could not connect to host vadik.me: could not connect to host vadodesign.nl: did not receive HSTS header +vagaerg.com: could not connect to host +vagaerg.net: could not connect to host vaibhavchatarkar.com: could not connect to host +val-sec.com: could not connect to host valaeris.de: did not receive HSTS header -valasi.eu: could not connect to host valecnatechnika.cz: could not connect to host valenhub.com: could not connect to host valenhub.es: could not connect to host @@ -14571,14 +15730,12 @@ vanderkley.it: could not connect to host vanderstraeten.dynv6.net: could not connect to host vanessabalibridal.com: could not connect to host vanestack.com: could not connect to host -vanetv.com: did not receive HSTS header +vanetv.com: could not connect to host vangeluwedeberlaere.be: did not receive HSTS header vanitas.xyz: did not receive HSTS header vanitynailworkz.com: could not connect to host vanlaanen.com: did not receive HSTS header vansieleghem.com: could not connect to host -vante.me: could not connect to host -vantru.is: could not connect to host vapecraftinc.com: did not receive HSTS header vapemania.eu: could not connect to host vapeshopsupply.com: max-age too low: 7889238 @@ -14587,35 +15744,41 @@ variablyconstant.com: could not connect to host varta.io: could not connect to host vasa-webstranka.sk: did not receive HSTS header vasanth.org: could not connect to host +vase-eroticke-povidky.cz: could not connect to host +vastgoedcultuurfonds.nl: did not receive HSTS header vastkustenrunt.se: did not receive HSTS header vavai.net: did not receive HSTS header +vavouchers.com: could not connect to host vayaport.com: could not connect to host vbest.net: could not connect to host vbhelp.org: did not receive HSTS header vbulletin-russia.com: could not connect to host vbulletinrussia.com: could not connect to host +vcdn.xyz: could not connect to host vcdove.com: could not connect to host vconcept.ch: could not connect to host vconcept.me: could not connect to host vcr.re: could not connect to host vdhco.be: did not receive HSTS header +vdownloader.com: could not connect to host vdrpro.com: could not connect to host veblen.com: did not receive HSTS header vechkasov.ru: could not connect to host vectro.me: could not connect to host vedatkamer.com: did not receive HSTS header vega-motor.com.ua: did not receive HSTS header +vega-rumia.com.pl: max-age too low: 2592000 vega.dyndns.info: could not connect to host vegalayer.com: did not receive HSTS header vegalengd.com: did not receive HSTS header +vegangaymer.blog: could not connect to host veganosonline.com: could not connect to host +vegasdocs.com: did not receive HSTS header veggiefasting.com: could not connect to host veggiesbourg.fr: did not receive HSTS header vegis.ro: did not receive HSTS header veglog.com: did not receive HSTS header vehent.org: did not receive HSTS header -vehicleenquiry.service.gov.uk: did not receive HSTS header -vehicletax.service.gov.uk: did not receive HSTS header vehicleuplift.co.uk: did not receive HSTS header vekenz.com: could not connect to host velasense.com: could not connect to host @@ -14633,20 +15796,19 @@ venninvestorplatform.com: did not receive HSTS header venoom.eu: did not receive HSTS header vensl.org: could not connect to host venturepro.com: did not receive HSTS header -venturum.com: could not connect to host -venturum.de: could not connect to host -venturum.eu: could not connect to host -venturum.net: could not connect to host venzocrm.com: did not receive HSTS header ver-ooginoog.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] veraandsteve.date: could not connect to host verdeandco.co.uk: could not connect to host -verdict.gg: could not connect to host verifiedinvesting.com: could not connect to host verifikatorindonesia.com: could not connect to host +veriny.tf: could not connect to host +veriomed.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] veristor.com: did not receive HSTS header +verliefde-jongens.nl: could not connect to host vermontcareergateway.org: could not connect to host vernonfishandgame.ca: did not receive HSTS header +versbeton.nl: max-age too low: 864000 versfin.net: could not connect to host versia.ru: did not receive HSTS header versolslapeyre.fr: did not receive HSTS header @@ -14659,13 +15821,15 @@ veterinaire-cazeres-foucault.fr: could not connect to host vethouse.com.ua: did not receive HSTS header vetmgmt.com: could not connect to host veto.fish: could not connect to host +vforvendetta.science: could not connect to host vfree.org: could not connect to host vgatest.nl: could not connect to host vglimg.com: could not connect to host vhost.co.id: could not connect to host +via-shire-krug.ru: could not connect to host viabemestar.com.br: could not connect to host viadeux.com: did not receive HSTS header -viagra-kaufen.biz: did not receive HSTS header +vialibido.com.br: could not connect to host viasinc.com: did not receive HSTS header vibrashop.com.br: did not receive HSTS header vicenage.com: could not connect to host @@ -14674,25 +15838,26 @@ vicianovi.cz: could not connect to host viciousviscosity.xyz: could not connect to host victorenxovais.com.br: could not connect to host victoriapemberton.com: did not receive HSTS header +victoriaville.ca: did not receive HSTS header vid.me: did not receive HSTS header -vidadu.com: did not receive HSTS header vidb.me: could not connect to host vidbuchanan.co.uk: did not receive HSTS header viddiaz.com: did not receive HSTS header videnskabsklubben.dk: did not receive HSTS header -videoload.co: could not connect to host videomuz.com: could not connect to host videorullen.se: could not connect to host +videosxgays.com: could not connect to host videotogel.net: could not connect to host videoueberwachung-set.de: did not receive HSTS header vider.ga: could not connect to host vidid.net: could not connect to host vidiproject.com: did not receive HSTS header viditut.com: could not connect to host +vidkovaomara.si: could not connect to host vidlyoficial.com: could not connect to host vidz.ga: could not connect to host +vieaw.com: could not connect to host viennan.net: could not connect to host -vientos.coop: could not connect to host vietnam-lifer.com: could not connect to host vietnamchevrolet.net: did not receive HSTS header vietnamphotographytours.com: did not receive HSTS header @@ -14703,17 +15868,17 @@ viikko.eu: could not connect to host vijos.org: did not receive HSTS header vikasbabyworld.de: could not connect to host viktor-machnik.de: did not receive HSTS header -viktorsvantesson.net: could not connect to host +viktorsvantesson.net: did not receive HSTS header viladochurrasco.com.br: could not connect to host vilaydin.com: did not receive HSTS header vilight.com.br: could not connect to host +villa-bellarte.de: did not receive HSTS header villacarmela.com.br: did not receive HSTS header villainsclothing.com.au: could not connect to host +villalaskowa.pl: did not receive HSTS header villasenor.online: could not connect to host -villekaaria.eu: could not connect to host vilog.me: could not connect to host vimeosucks.nyc: could not connect to host -vinagro.sk: could not connect to host vinasec.se: could not connect to host vinbet.org: could not connect to host vinbet000.com: could not connect to host @@ -14726,7 +15891,6 @@ vinbet666.com: could not connect to host vinbet888.com: could not connect to host vincentkooijman.at: did not receive HSTS header vincentkooijman.nl: did not receive HSTS header -vinciconps4.it: could not connect to host vinesauce.info: could not connect to host vinetalk.net: could not connect to host vinicius.sl: could not connect to host @@ -14735,21 +15899,21 @@ vinogradovka.com: did not receive HSTS header vio.no: did not receive HSTS header violenceinterrupted.org: did not receive HSTS header violet-letter.delivery: could not connect to host +violetraven.co.uk: could not connect to host viosey.com: could not connect to host -vioye.com: did not receive HSTS header +vioye.com: could not connect to host viperdns.com: could not connect to host vipesball.net: could not connect to host viphospitality.se: could not connect to host viplentes.com.br: did not receive HSTS header vipmusic.ga: could not connect to host -vipnettikasinoklubi.com: could not connect to host +vipnettikasinoklubi.com: did not receive HSTS header viral8.jp: could not connect to host virginiacrimeanalysisnetwork.org: did not receive HSTS header -virial.de: did not receive HSTS header viris.si: max-age too low: 536000 -virtualcloud.ddns.net: could not connect to host virtualhealth.com: did not receive HSTS header virtualstrongbox.ca: did not receive HSTS header +virtusaero.com: could not connect to host visa-shinsei.com: did not receive HSTS header visanhigia.com: could not connect to host viserproject.com: did not receive HSTS header @@ -14758,6 +15922,7 @@ visiongamestudios.com: could not connect to host visionthroughknowledge.com: could not connect to host visiontree-beta.eu: could not connect to host visiontree.eu: could not connect to host +visistruct.com: max-age too low: 2592000 visitbroadstairs.com: did not receive HSTS header vispaleistexel.nl: did not receive HSTS header vissanum.com: did not receive HSTS header @@ -14770,6 +15935,7 @@ vitalamin.ch: could not connect to host vitalita.cz: did not receive HSTS header vitalorange.com: did not receive HSTS header vitalthings.de: could not connect to host +vitamaxxi.com.br: could not connect to host vitapingu.de: could not connect to host vitta.me: did not receive HSTS header vitzro.kr: could not connect to host @@ -14778,57 +15944,63 @@ vivanosports.com.br: did not receive HSTS header vivasports.com.br: could not connect to host vivocloud.com: could not connect to host vivoregularizafacil.com.br: did not receive HSTS header -vivoseg.com: did not receive HSTS header +vivoseg.com: could not connect to host vivremoinscher.fr: did not receive HSTS header +viza.io: could not connect to host vizeat.com: did not receive HSTS header vkino.com: could not connect to host vkulagin.ru: could not connect to host vladimiroff.org: did not receive HSTS header vldkn.net: could not connect to host vleij.family: could not connect to host -vlogge.com: could not connect to host +vlogge.com: did not receive HSTS header vlzbazar.ru: could not connect to host vmrdev.com: could not connect to host vmstan.com: did not receive HSTS header +vndb.org: could not connect to host vocab.guru: could not connect to host +vocalsynth.space: could not connect to host voceinveste.com: did not receive HSTS header vogt.tech: could not connect to host -voice-of-design.com: could not connect to host voicesuk.co.uk: did not receive HSTS header void-it.nl: could not connect to host -voidark.com: did not receive HSTS header voidi.ca: could not connect to host voidserv.net: could not connect to host -voilo.club: did not receive HSTS header -voilodaisuki.club: did not receive HSTS header +voidshift.com: could not connect to host +voilo.club: could not connect to host +voilodaisuki.club: could not connect to host voipkb.com: did not receive HSTS header -voiro.club: did not receive HSTS header -voirodaisuki.club: did not receive HSTS header +voiro.club: could not connect to host +voirodaisuki.club: could not connect to host volatimer.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] volbyzive.cz: did not receive HSTS header volcain.io: could not connect to host -volcrado.com: did not receive HSTS header +volcrado.com: could not connect to host volkden.com: could not connect to host volkswurst.de: did not receive HSTS header -voltimax.com: could not connect to host +voltimax.com: did not receive HSTS header voltotc.com: did not receive HSTS header voluptueuse.com: did not receive HSTS header +volvipress.gr: did not receive HSTS header vonavy-cukor.sk: could not connect to host vonavycukor.sk: could not connect to host vonedelmann.de: did not receive HSTS header vongerlach.at: did not receive HSTS header -vonterra.us: could not connect to host +vonterra.us: did not receive HSTS header vooreenveiligthuis.nl: did not receive HSTS header voorjou.com: did not receive HSTS header vorangerie.com: could not connect to host vorderklier.de: could not connect to host +vorm2.com: did not receive HSTS header vortexhobbies.com: did not receive HSTS header vosjesweb.nl: could not connect to host -voterstartingpoint.uk: could not connect to host +votercircle.com: did not receive HSTS header +voterstartingpoint.uk: did not receive HSTS header votresiteweb.ch: could not connect to host vow.vn: could not connect to host vowsy.club: did not receive HSTS header vox.vg: did not receive HSTS header +vozami.com: could not connect to host vpip.net: could not connect to host vpl.me: did not receive HSTS header vpn-byen.dk: did not receive HSTS header @@ -14851,17 +16023,24 @@ vrijstaandhuis-in-zuid-holland-kopen.nl: could not connect to host vrijstaandhuis-in-zuidplas-kopen.nl: could not connect to host vrijstaandhuis-in-zwartewaterland-kopen.nl: could not connect to host vrijstaandhuisverkopen.nl: could not connect to host +vrlaid.com: could not connect to host vrobert.fr: could not connect to host +vrsgames.com.mx: did not receive HSTS header +vrtak-cz.net: could not connect to host vrzl.pro: could not connect to host +vsamsonov.com: could not connect to host vsc-don-stocksport.de: did not receive HSTS header +vsestiralnie.com: did not receive HSTS header vucdn.com: could not connect to host +vulndetect.com: did not receive HSTS header vulnerabilities.io: could not connect to host -vumetric.com: could not connect to host vuosaarenmontessoritalo.fi: did not receive HSTS header vvl.me: did not receive HSTS header vwoforangeparts.com: could not connect to host +vwt-event.nl: could not connect to host vxapps.com: could not connect to host vxml.club: could not connect to host +vykup-car.ru: could not connect to host vynedmusic.com: could not connect to host vyshivanochka.in.ua: could not connect to host vysvetluju.cz: could not connect to host @@ -14872,19 +16051,21 @@ w10club.com: could not connect to host w2gshop.com.br: could not connect to host w4.no: did not receive HSTS header w4a.fr: could not connect to host +w4b.in: could not connect to host w4xzr.top: could not connect to host w4xzr.xyz: could not connect to host w9rld.com: did not receive HSTS header wabifoggynuts.com: could not connect to host wachtwoordencheck.nl: could not connect to host +waelti.xxx: could not connect to host wafairhaven.com.au: did not receive HSTS header wafni.com: could not connect to host -wahhoi.net: did not receive HSTS header wai-in.com: could not connect to host wait.moe: could not connect to host waixingrenfuli7.vip: could not connect to host wakapp.de: could not connect to host wakened.net: did not receive HSTS header +waldkinder-ilmenau.de: did not receive HSTS header walkeryoung.ca: could not connect to host walkingforhealth.org.uk: did not receive HSTS header wallabag.it: did not receive HSTS header @@ -14894,7 +16075,6 @@ wallet.google.com: did not receive HSTS header (error ignored - included regardl wallsblog.dk: could not connect to host walnutgaming.co.uk: could not connect to host walterlynnmosley.com: did not receive HSTS header -wan.pp.ua: could not connect to host wanashi.com: could not connect to host wanban.io: could not connect to host wanda76.com: could not connect to host @@ -14909,7 +16089,10 @@ wangqiliang.xn--fiqs8s: could not connect to host wangql.cn: could not connect to host wanquanojbk.com: did not receive HSTS header wantshow.com.br: did not receive HSTS header +wanybug.cn: could not connect to host +wapgu.cc: could not connect to host wapjt.cn: could not connect to host +wapking.co: could not connect to host wapking.live: could not connect to host wapt.fr: did not receive HSTS header warandpeace.xyz: could not connect to host @@ -14921,18 +16104,20 @@ warekon.dk: could not connect to host warezaddict.com: could not connect to host warhistoryonline.com: did not receive HSTS header warlions.info: could not connect to host +warnings.xyz: could not connect to host warped.com: did not receive HSTS header warren.sh: could not connect to host warrencreative.com: did not receive HSTS header -warsentech.com: could not connect to host +warsentech.com: did not receive HSTS header warumsuchen.at: did not receive HSTS header wasatchconstables.com: did not receive HSTS header wasatchcrest.com: did not receive HSTS header wasfuereintheater.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] -wassim.is: could not connect to host +wasserburg.dk: did not receive HSTS header +wassim.is: did not receive HSTS header watashi.bid: could not connect to host watchium.com: did not receive HSTS header -watchtv-online.pw: could not connect to host +watchtv-online.pw: max-age too low: 0 watchweasel.com: could not connect to host waterforlife.net.au: did not receive HSTS header waterpoint.com.br: could not connect to host @@ -14941,7 +16126,6 @@ watsonhall.uk: could not connect to host wattechweb.com: did not receive HSTS header wavefloatrooms.com: did not receive HSTS header wavefrontsystemstech.com: could not connect to host -wavesoftime.com: could not connect to host waxlrs.com: could not connect to host waylaydesign.com: did not receive HSTS header waylee.net: did not receive HSTS header @@ -14953,14 +16137,13 @@ wdt.io: did not receive HSTS header we.serveftp.net: could not connect to host wealthformyhealth.com: did not receive HSTS header wear2work.nl: could not connect to host -wearedisneyland.com: did not receive HSTS header weareincognito.org: could not connect to host wearewithyou.org: could not connect to host weaverhairextensions.nl: could not connect to host +web-advisor.co.uk: could not connect to host web-demarche.com: could not connect to host web-industry.fr: could not connect to host web-insider.net: did not receive HSTS header -web-mail.info: could not connect to host web-vision.de: did not receive HSTS header web4all.fr: did not receive HSTS header web4pro.fr: could not connect to host @@ -14971,13 +16154,14 @@ webapps.directory: could not connect to host webart-factory.de: could not connect to host webassadors.com: could not connect to host webbuzz.com.au: did not receive HSTS header +webbx.se: did not receive HSTS header webchat.domains: did not receive HSTS header webcreation.rocks: did not receive HSTS header webdesign-kronberg.de: did not receive HSTS header -webdesignsandiego.com: did not receive HSTS header webdesignssussex.co.uk: could not connect to host webdev-quiz.de: did not receive HSTS header webdev.mobi: could not connect to host +webdevxp.com: could not connect to host webdosh.com: did not receive HSTS header webeconomia.it: did not receive HSTS header webelement.sk: did not receive HSTS header @@ -14995,6 +16179,7 @@ webm.to: could not connect to host webmail.mayfirst.org: did not receive HSTS header webmaniabr.com: did not receive HSTS header webmarketingfestival.it: did not receive HSTS header +webmel.com: did not receive HSTS header webmixseo.com: did not receive HSTS header webnetmail4u.com: could not connect to host webneuch.ch: could not connect to host @@ -15009,7 +16194,11 @@ webnosql.com: could not connect to host webperformance.ru: could not connect to host webproshosting.tk: could not connect to host webpublica.pt: could not connect to host +webqueens.com: could not connect to host +webreslist.com: could not connect to host websandbox.uk: could not connect to host +websectools.com: could not connect to host +webseo.de: did not receive HSTS header websiteadvice.com.au: did not receive HSTS header websitedesign.bg: did not receive HSTS header websitesabq.com: did not receive HSTS header @@ -15017,7 +16206,7 @@ websmartmedia.co.uk: did not receive HSTS header webspotter.nl: could not connect to host webstationservice.fr: could not connect to host webstellung.com: could not connect to host -webstory.xyz: did not receive HSTS header +webstory.xyz: could not connect to host webswitch.io: could not connect to host webtar.info: could not connect to host webtech.com.br: could not connect to host @@ -15025,20 +16214,23 @@ webtechgadgetry.com: could not connect to host webtek.nu: could not connect to host webthings.com.br: did not receive HSTS header webtiles.co.uk: could not connect to host +webtobesocial.de: could not connect to host webukhost.com: could not connect to host webuni.hu: did not receive HSTS header webveloper.com: did not receive HSTS header webwork.pw: could not connect to host webypass.xyz: could not connect to host +webz.one: could not connect to host webzanem.com: could not connect to host wecanfindit.co.za: could not connect to host +wecanvisit.com: could not connect to host wedding-m.jp: did not receive HSTS header weddingenvelopes.co.uk: did not receive HSTS header weddingibiza.nl: could not connect to host wedotrains.club: did not receive HSTS header weebsr.us: could not connect to host weed.ren: could not connect to host -week.report: could not connect to host +weedlandia.org: did not receive HSTS header weekly.fyi: could not connect to host weerstationgiethoorn.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] wegenaer.nl: could not connect to host @@ -15046,32 +16238,35 @@ weicn.org: did not receive HSTS header weightreviews.com: did not receive HSTS header weiji.ga: could not connect to host weiler.xyz: could not connect to host -weiming.ddns.net: could not connect to host weinhandel-preissler.de: could not connect to host +weirdserver.com: could not connect to host weiyuz.com: max-age too low: 6585555 weizenke.im: could not connect to host wejumall.com: could not connect to host wekibe.de: could not connect to host welby.cat: did not receive HSTS header -welches-kinderfahrrad.de: did not receive HSTS header +welches-kinderfahrrad.de: could not connect to host welkers.org: could not connect to host wellastore.ru: could not connect to host wellcomp.com.br: did not receive HSTS header +welldrake.com: could not connect to host +wellmarts.com: did not receive HSTS header wellness.so: could not connect to host wellopp.com: did not receive HSTS header wellproducedwines.com: did not receive HSTS header -wellsolveit.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] wellsplasticsurgery.com: did not receive HSTS header wellspringcamps.com: did not receive HSTS header welovejobs.com: did not receive HSTS header welovemail.com: could not connect to host +welpo.me: could not connect to host welpy.com: could not connect to host weltentreff.com: could not connect to host weltmeisterschaft.net: could not connect to host weme.eu: could not connect to host wendalyncheng.com: did not receive HSTS header wendigo.pl: could not connect to host -wenode.net: could not connect to host +wengebowuguan.com: could not connect to host +wenode.net: did not receive HSTS header wentu.ml: could not connect to host wenz.io: did not receive HSTS header wer.sh: could not connect to host @@ -15079,17 +16274,17 @@ werdeeintimo.de: could not connect to host wereldplanner.nl: could not connect to host werhatunsverraten.eu: could not connect to host werken-bij-inwork.nl: could not connect to host -werkenbijkfc.nl: could not connect to host +werkenbijkfc.nl: did not receive HSTS header werkplaatsoost.nl: did not receive HSTS header werkruimtebottendaal.nl: could not connect to host werner-schaeffer.de: did not receive HSTS header wernerschaeffer.de: did not receive HSTS header +wes-dev.com: did not receive HSTS header wesayyesprogram.com: could not connect to host wesleyharris.ca: did not receive HSTS header wespeakgeek.co.za: could not connect to host -westcanal.net: could not connect to host westcoastaggregate.com: could not connect to host -westendzone.com: max-age too low: 0 +westendzone.com: could not connect to host westerhoud.nl: did not receive HSTS header westlinwinds.com: could not connect to host westsussexconnecttosupport.org: could not connect to host @@ -15110,19 +16305,22 @@ wevolver.com: did not receive HSTS header wewillgo.com: could not connect to host wewillgo.org: did not receive HSTS header wewlad.me: could not connect to host +weyland.tech: did not receive HSTS header wezl.net: did not receive HSTS header wf-training-master.appspot.com: did not receive HSTS header (error ignored - included regardless) wftda.com: did not receive HSTS header wg-tools.de: could not connect to host +whanau.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] whatisl.ovh: could not connect to host whats.io: could not connect to host whatsstalk.me: could not connect to host -whatsyouroffer.co.uk: could not connect to host +whatsyouroffer.co.uk: did not receive HSTS header +wheelwright.org: did not receive HSTS header when-release.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] when-release.ru: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] whereisjason.com: could not connect to host whereismyorigin.cf: could not connect to host -wherephoto.com: could not connect to host +wherephoto.com: did not receive HSTS header wheresben.today: could not connect to host whilsttraveling.com: could not connect to host whisker.network: could not connect to host @@ -15132,9 +16330,9 @@ whitehat.id: did not receive HSTS header whiterabbit.org: did not receive HSTS header whiterabbitcakery.com: could not connect to host whiteroom.agency: did not receive HSTS header -whiteshadowimperium.com: could not connect to host -whitestagforge.com: could not connect to host +whitestagforge.com: did not receive HSTS header whoclicks.net: could not connect to host +whoisamitsingh.com: did not receive HSTS header whoisapi.online: could not connect to host wholebites.com: max-age too low: 7889238 wholikes.us: could not connect to host @@ -15148,7 +16346,7 @@ wibuw.com: could not connect to host widdleguy.com: did not receive HSTS header wideinfo.org: did not receive HSTS header widenews.org: did not receive HSTS header -wienerwichtelchallenge.at: could not connect to host +wienerwichtelchallenge.at: did not receive HSTS header wieninternational.at: did not receive HSTS header wificafehosting.com: did not receive HSTS header wifimapa.cz: could not connect to host @@ -15163,7 +16361,6 @@ wildbee.org: could not connect to host wildbirds.dk: did not receive HSTS header wildcard.hu: could not connect to host wilddog.com: did not receive HSTS header -wildewood.ca: could not connect to host wilf1rst.com: could not connect to host wilfrid-calixte.fr: could not connect to host wilhelm-nathan.de: could not connect to host @@ -15174,6 +16371,7 @@ william.si: did not receive HSTS header williamboundsltd.com: could not connect to host williamle.com: did not receive HSTS header williamsapiens.com: could not connect to host +williamsonshore.com: max-age too low: 0 williamtm.design: could not connect to host willkommen-fuerstenberg.de: could not connect to host willosagiede.com: did not receive HSTS header @@ -15187,7 +16385,7 @@ windowwellexperts.com: did not receive HSTS header winds.cf: could not connect to host windwoodmedia.com: could not connect to host windwoodweb.com: could not connect to host -wine-importer.ru: could not connect to host +wine-importer.ru: did not receive HSTS header winebid.com: could not connect to host winecodeavocado.com: could not connect to host wineworksonline.com: could not connect to host @@ -15203,12 +16401,14 @@ winsec.nl: could not connect to host winshiplending.com: could not connect to host winsufi.biz: could not connect to host wintercircle.co: max-age too low: 60 -wintermeyer-consulting.de: could not connect to host wipc.net: did not receive HSTS header wipply.com: could not connect to host wirbatz.org: did not receive HSTS header wirc.gr: could not connect to host +wiredcut.com: did not receive HSTS header wireless-emergency-stop.com: did not receive HSTS header +wirelesswatch.com.au: did not receive HSTS header +wiretrip.io: did not receive HSTS header wirkaufendeinau.to: could not connect to host wisak.eu: could not connect to host wisdomize.me: could not connect to host @@ -15237,6 +16437,7 @@ wmawri.com: did not receive HSTS header wmcuk.net: did not receive HSTS header wmfinanz.com: could not connect to host wmoda.com.br: could not connect to host +wnmed.com.au: did not receive HSTS header wnmm.nl: could not connect to host wnnc.co.uk: could not connect to host wobblylang.org: could not connect to host @@ -15245,12 +16446,13 @@ wod-stavby.cz: could not connect to host wodice.com: could not connect to host wohnungsbau-ludwigsburg.de: did not receive HSTS header woima.fi: max-age too low: 604800 -wokeai.net: did not receive HSTS header +wokeai.net: could not connect to host woktoss.com: could not connect to host wolfemg.com: could not connect to host wolfenland.net: did not receive HSTS header wolfesden.com: could not connect to host wolfram.io: could not connect to host +wolkenspeicher.org: could not connect to host wollekorb.de: could not connect to host womf.org: did not receive HSTS header womosale.de: could not connect to host @@ -15262,43 +16464,47 @@ wondy.com: could not connect to host woodlandschurch.net: max-age too low: 43200 woodmafia.com.au: could not connect to host woodworkertip.com: did not receive HSTS header +woomai.net: did not receive HSTS header woomu.me: could not connect to host woording.com: could not connect to host wootton95.com: could not connect to host wooviet.com: could not connect to host wopen.org: could not connect to host wordbits.net: did not receive HSTS header +wordlessecho.com: could not connect to host wordplay.one: could not connect to host +wordpress-test.site: could not connect to host wordpresspro.cl: did not receive HSTS header wordsofamaster.com: could not connect to host work-and-jockel.de: did not receive HSTS header -workemy.com: did not receive HSTS header +workemy.com: could not connect to host workfone.io: could not connect to host +workissime.com: did not receive HSTS header workpermit.com.vn: could not connect to host -workray.com: did not receive HSTS header worksofwyoming.org: did not receive HSTS header workwithgo.com: could not connect to host world-education-association.org: could not connect to host worldchess.london: could not connect to host -worldfree4.org: could not connect to host +worldfree4.org: did not receive HSTS header worldlist.org: could not connect to host worldpovertysolutions.org: did not receive HSTS header worldsbeststory.com: did not receive HSTS header worldwhisperer.net: could not connect to host wormholevpn.net: could not connect to host -worshapp.com: could not connect to host +worshapp.com: did not receive HSTS header wow-travel.eu: could not connect to host +wow202y5.com: did not receive HSTS header wowapi.org: could not connect to host wowinvasion.com: did not receive HSTS header wp-fastsearch.de: could not connect to host -wp-rescue.com.au: did not receive HSTS header +wp-rescue.com.au: could not connect to host wp-stack.pro: could not connect to host wp6.pw: could not connect to host wpblog.com.tw: could not connect to host wpcarer.pro: could not connect to host -wpcdn.bid: did not receive HSTS header wpcheck.io: could not connect to host wpcontrol.se: could not connect to host +wpfast.net: could not connect to host wpfortify.com: could not connect to host wpg-inc.com: did not receive HSTS header wphelpwithhomework.tk: could not connect to host @@ -15321,6 +16527,7 @@ wrfu.co.nz: did not receive HSTS header wriedts.de: did not receive HSTS header wrightdoumawedding.com: could not connect to host writeapp.me: did not receive HSTS header +writemytermpapers.com: could not connect to host writing-expert.com: could not connect to host wrldevelopment.com: did not receive HSTS header wroffle.com: did not receive HSTS header @@ -15333,13 +16540,14 @@ wss.com.ve: could not connect to host wsscompany.com.ve: could not connect to host wsup.social: could not connect to host wtwk.com: could not connect to host -wubify.com: could not connect to host +wubify.com: did not receive HSTS header wubocong.com: could not connect to host wubthecaptain.eu: could not connect to host wuchipc.com: could not connect to host wufupay.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] wuhengmin.com: could not connect to host wulpi.it: did not receive HSTS header +wumai.cloud: did not receive HSTS header wumbo.kiwi: could not connect to host wundtherapie-schulung.de: could not connect to host wurzelzwerg.net: could not connect to host @@ -15349,21 +16557,22 @@ wvr-law.de: did not receive HSTS header wvw698.com: max-age too low: 2592000 www-001133.com: could not connect to host www-0385.com: could not connect to host -www-1116.com: did not receive HSTS header +www-1116.com: could not connect to host www-1117.com: could not connect to host www-38978.com: could not connect to host www-39988.com: did not receive HSTS header www-507.net: could not connect to host www-62755.com: did not receive HSTS header +www-66136.com: did not receive HSTS header www-68277.com: could not connect to host www-746.com: could not connect to host www-771122.com: did not receive HSTS header -www-8003.com: did not receive HSTS header +www-8003.com: could not connect to host www-88599.com: did not receive HSTS header www-8887999.com: could not connect to host -www-9995.com: did not receive HSTS header -www-djbet.com: did not receive HSTS header -www-jinshavip.com: did not receive HSTS header +www-9995.com: could not connect to host +www-djbet.com: could not connect to host +www-jinshavip.com: could not connect to host www.amazon.ca: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] www.amazon.co.jp: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] www.amazon.co.uk: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] @@ -15400,18 +16609,21 @@ www.viasinc.com: did not receive HSTS header www.zenpayroll.com: did not receive HSTS header www3.info: could not connect to host wxrlab.com: could not connect to host -wxukang.cn: did not receive HSTS header +wxukang.cn: could not connect to host +wxyz.buzz: could not connect to host wy6.org: did not receive HSTS header wybmabiity.com: could not connect to host wygluszanie.eu: could not connect to host +wylog.ph: could not connect to host wyu.cc: could not connect to host wyzphoto.nl: did not receive HSTS header wyzwaniemilosci.com: could not connect to host -wzfetish.com.br: could not connect to host +wzrd.in: did not receive HSTS header +x-iweb.ru: did not receive HSTS header x-pertservice.com: did not receive HSTS header x-power-detox.com: could not connect to host x-ripped-hd.com: could not connect to host -x1616.tk: could not connect to host +x1be.win: could not connect to host x23.eu: did not receive HSTS header x2c0.net: did not receive HSTS header x2w.io: could not connect to host @@ -15419,20 +16631,25 @@ x3led.com: could not connect to host x509.pub: could not connect to host x509.pw: could not connect to host x64architecture.com: could not connect to host -xanax.pro: could not connect to host +x69.biz: could not connect to host +x69x.net: could not connect to host xanderweaver.com: did not receive HSTS header xandocs.com: could not connect to host xat.re: did not receive HSTS header -xavierbarroso.com: could not connect to host +xavierbarroso.com: did not receive HSTS header +xawen.net: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] xbc.nz: could not connect to host xbind.io: could not connect to host xchangeinfo.com: could not connect to host xchating.com: could not connect to host xcompany.one: could not connect to host xcoop.me: did not receive HSTS header +xd.fi: did not receive HSTS header xd.gov: did not receive HSTS header xdd.io: could not connect to host xdty.org: could not connect to host +xecure.zone: could not connect to host +xecureit.com: could not connect to host xehoivn.vn: could not connect to host xellos.ga: could not connect to host xellos.ml: could not connect to host @@ -15453,13 +16670,13 @@ xiaolvmu.com: could not connect to host xiaolvmu.me: could not connect to host xiaomionline24.pl: could not connect to host xiaoxiao.im: could not connect to host -xiaxuejin.cn: did not receive HSTS header +xiaxuejin.cn: could not connect to host xilegames.com: could not connect to host xiliant.com: did not receive HSTS header -ximage.me: did not receive HSTS header +ximage.me: could not connect to host ximens.me: could not connect to host xinbiji.cn: could not connect to host -xinex.cz: could not connect to host +xinex.cz: did not receive HSTS header xing.ml: could not connect to host xinghuokeji.xin: could not connect to host xingiahanvisa.net: did not receive HSTS header @@ -15471,15 +16688,17 @@ xivpn.com: could not connect to host xiyu.it: did not receive HSTS header xiyu.moe: did not receive HSTS header xjoi.net: could not connect to host -xjoin.de: could not connect to host xlaff.com: could not connect to host xlboo.com: did not receive HSTS header xlfblog.com: did not receive HSTS header xlinar.com: could not connect to host +xmerak.com: could not connect to host xmiui.com: could not connect to host xmonk.org: did not receive HSTS header xmr.my: could not connect to host +xn-----8kcgbo2bmdgkdacthvjf.xn--p1ai: could not connect to host xn----7sbmucgqdbgwwc5e9b.xn--p1ai: could not connect to host +xn--3lqp21gwna.cn: could not connect to host xn--3lqp21gwna.xn--fiqs8s: could not connect to host xn--3lqp21gwna.xn--fiqz9s: could not connect to host xn--3lqt7ir4md4tzwa.cn: did not receive HSTS header @@ -15490,10 +16709,12 @@ xn--4dbjwf8c.ga: could not connect to host xn--4dbjwf8c.gq: could not connect to host xn--4dbjwf8c.ml: could not connect to host xn--4dbjwf8c.tk: could not connect to host +xn--68jub.pw: could not connect to host xn--6cv66l79sp0n0ibo7s9ne.xyz: did not receive HSTS header xn--7rvz7ku3ppnr.jp: could not connect to host xn--7v8h.cf: could not connect to host -xn--80aaihqncaejjobbu6v.xn--p1ai: did not receive HSTS header +xn--80aaagmgvmvmcuoq7r.xn--p1ai: did not receive HSTS header +xn--80aaihqncaejjobbu6v.xn--p1ai: max-age too low: 0 xn--80ablh1c.online: could not connect to host xn--80ac0aqlt.xn--p1ai: could not connect to host xn--80aocgsfei.xn--p1ai: could not connect to host @@ -15512,8 +16733,10 @@ xn--e--4h4axau6ld4lna0g.com: could not connect to host xn--e--ig4a4c3f6bvc5et632i.com: could not connect to host xn--e--k83a5h244w54gttk.xyz: could not connect to host xn--ekr87w7se89ay98ezcs.biz: did not receive HSTS header +xn--gfrr-7qa.li: could not connect to host xn--gmq92k.nagoya: could not connect to host xn--grnderlehrstuhl-0vb.de: could not connect to host +xn--hfk-allgu-schwaben-stb.de: could not connect to host xn--hwt895j.xn--kpry57d: could not connect to host xn--internetlnen-1cb.com: could not connect to host xn--jp-6l5cs1yf3ivjsglphyv.net: could not connect to host @@ -15530,6 +16753,7 @@ xn--ls8hi7a.tk: could not connect to host xn--maraa-rta.org: could not connect to host xn--mensenges-o1a8c.gq: could not connect to host xn--mhringen-65a.de: did not receive HSTS header +xn--mhsv04avtt1xi.com: could not connect to host xn--milchaufschumer-test-lzb.de: could not connect to host xn--n8jubz39q0g0afpa985c.com: could not connect to host xn--neb-tma3u8u.xyz: could not connect to host @@ -15540,11 +16764,12 @@ xn--pckqk6xk43lunk.net: could not connect to host xn--qckqc0nxbyc4cdb4527err7c.biz: did not receive HSTS header xn--qckyd1cu698a35zarib.xyz: could not connect to host xn--r77hya.ga: could not connect to host -xn--rlcus7b3d.xn--xkc2dl3a5ee0h: could not connect to host xn--rt-cja.eu: could not connect to host xn--sdkwa9azd389v01ya.com: did not receive HSTS header xn--srenpind-54a.dk: could not connect to host +xn--sz8h.ml: could not connect to host xn--t8j2a3042d.xyz: could not connect to host +xn--t8j4aa4nyhxa7duezbl49aqg5546e264d.net: could not connect to host xn--tda.ml: could not connect to host xn--thorme-6uaf.ca: could not connect to host xn--u9jy16ncfao19mo8i.nagoya: could not connect to host @@ -15557,6 +16782,7 @@ xn--vck8crcu789ajtaj92eura.xyz: could not connect to host xn--w22a.jp: could not connect to host xn--werner-schffer-fib.de: did not receive HSTS header xn--wmq.jp: could not connect to host +xn--wq9h.ml: could not connect to host xn--xdtx3pfzbiw3ar8e7yedqrhui.com: could not connect to host xn--xz1a.jp: could not connect to host xn--y8j2eb5631a4qf5n0h.com: could not connect to host @@ -15567,36 +16793,45 @@ xn--yoamomisuasbcn-ynb.com: could not connect to host xn--zck9a4b352yuua.jp: did not receive HSTS header xng.io: did not receive HSTS header xobox.me: could not connect to host +xoda.pw: could not connect to host xoffy.com: did not receive HSTS header xom.party: could not connect to host xombra.com: could not connect to host xor-a.net: could not connect to host +xotika.tv: could not connect to host xpenology-fr.net: could not connect to host xperiacodes.com: could not connect to host xpi.fr: could not connect to host +xpj.bet: did not receive HSTS header xpj.sx: could not connect to host +xpjcunkuan.com: could not connect to host xpressprint.com.br: max-age too low: 90 xpwn.cz: could not connect to host -xq55.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] +xq55.com: did not receive HSTS header xqin.net: could not connect to host xrp.pw: could not connect to host +xscancun.com: could not connect to host xscapers.com: did not receive HSTS header xsstime.nl: could not connect to host xsyds.cn: did not receive HSTS header xt.om: did not receive HSTS header +xtenz.xyz: could not connect to host xtom.email: could not connect to host -xtream-hosting.com: did not receive HSTS header +xtream-hosting.com: could not connect to host xtream-hosting.de: could not connect to host xtream-hosting.eu: could not connect to host xtreamhosting.eu: could not connect to host xtrim.ru: did not receive HSTS header xtzone.be: could not connect to host +xuanmeishe.top: could not connect to host xuexb.com: did not receive HSTS header +xujan.com: could not connect to host xuntaosms.com: could not connect to host -xupeng.me: could not connect to host +xupeng.me: did not receive HSTS header xuyh0120.win: did not receive HSTS header -xwalck.se: could not connect to host xxbase.com: did not receive HSTS header +xxx3dbdsm.com: could not connect to host +xxxladyboysporn.com: could not connect to host xy1919.com: could not connect to host xy6161.com: could not connect to host xy6262.com: could not connect to host @@ -15607,11 +16842,12 @@ xy7373.com: could not connect to host xyndrac.net: max-age too low: 2592000 xynex.us: could not connect to host xynta.ch: could not connect to host -xza.fr: could not connect to host +xzoneadventure.com: did not receive HSTS header y-o-w.com: did not receive HSTS header y-s.pw: could not connect to host y3451.com: could not connect to host yaay.com.br: could not connect to host +yabrt.cn: could not connect to host yaccin.com: could not connect to host yachts-magazine.com: did not receive HSTS header yagi2.com: did not receive HSTS header @@ -15619,18 +16855,19 @@ yahoo.ax: could not connect to host yalla.jp: did not receive HSTS header yamamo10.com: could not connect to host yameveo.com: did not receive HSTS header +yangmaodang.org: did not receive HSTS header yanwh.xyz: did not receive HSTS header -yaoidreams.com: did not receive HSTS header -yaporn.tv: did not receive HSTS header +yaoidreams.com: could not connect to host +yaporn.tv: could not connect to host yarchives.jp: could not connect to host yard-fu.com: could not connect to host yardbird.us: could not connect to host yarnhookup.com: did not receive HSTS header +yarogneva.ru: could not connect to host yasinaydin.net: did not receive HSTS header yasutomonodokoiko.com: did not receive HSTS header yaucy.win: could not connect to host yawen.tw: did not receive HSTS header -ybresson.com: could not connect to host ybscareers.co.uk: did not receive HSTS header ycaaz.com: did not receive HSTS header ycc.wtf: could not connect to host @@ -15641,41 +16878,46 @@ yello.website: could not connect to host yellowcar.website: could not connect to host yemalu.com: could not connect to host yemekbaz.az: could not connect to host +yennhi.co: could not connect to host yenniferallulli.com: could not connect to host yenniferallulli.de: could not connect to host yenniferallulli.es: did not receive HSTS header yenniferallulli.moda: could not connect to host yenniferallulli.nl: could not connect to host +yenpape.com: did not receive HSTS header yepbitcoin.com: could not connect to host yesdevnull.net: did not receive HSTS header yesfone.com.br: could not connect to host yestees.com: did not receive HSTS header -yeswecan.co.bw: did not receive HSTS header yetcore.io: could not connect to host yetishirt.com: could not connect to host yffengshi.ml: could not connect to host ygcdyf.com: did not receive HSTS header yggdar.ga: could not connect to host +yh35.net: max-age too low: 86400 yhori.xyz: could not connect to host +yhrd.org: did not receive HSTS header yibaoweilong.top: could not connect to host yibin0831.com: could not connect to host yikzu.cn: could not connect to host yin.roma.it: did not receive HSTS header +yin8888.tv: did not receive HSTS header ying299.com: could not connect to host ying299.net: could not connect to host yinga.ga: did not receive HSTS header yingsuo.ltd: could not connect to host yingyj.com: did not receive HSTS header yinhe12.net: did not receive HSTS header +yipingguo.com: did not receive HSTS header yippie.nl: could not connect to host yizhu.com: could not connect to host yjsoft.me: could not connect to host +ylilauta.org: could not connect to host ylk.io: could not connect to host ynode.co: did not receive HSTS header ynsn.nl: could not connect to host yntongji.com: could not connect to host yob.vn: could not connect to host -yobbelwobbel.de: could not connect to host yobst.tk: could not connect to host yoga-prive.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] yoga.is-an-engineer.com: could not connect to host @@ -15687,66 +16929,76 @@ yoimise.net: did not receive HSTS header yoiyado.info: did not receive HSTS header yokeepo.com: could not connect to host yolo-csgo.com: could not connect to host -yolocelebs.com: did not receive HSTS header +yolocelebs.com: could not connect to host yoloprod.fr: could not connect to host yoloseo.com: could not connect to host yomena.in: could not connect to host yomepre.com: could not connect to host yopers.com: did not receive HSTS header yorkshireterrier.com.br: could not connect to host -yorname.ml: could not connect to host +yorname.ml: did not receive HSTS header yoru.me: could not connect to host -yoticonnections.com: could not connect to host yotilabs.com: could not connect to host youcaitian.com: did not receive HSTS header youcancraft.de: could not connect to host youcanfuckoff.xyz: could not connect to host youcontrol.ru: could not connect to host +youdowell.com: could not connect to host youfencun.com: did not receive HSTS header +youjizz.bz: could not connect to host youlend.com: did not receive HSTS header youlog.net: could not connect to host +youmiracle.com: could not connect to host +youmonit.me: could not connect to host youngandunited.nl: did not receive HSTS header younl.net: could not connect to host youon.tokyo: did not receive HSTS header +youran.me: could not connect to host yourbapp.ch: could not connect to host -yourcomputer.expert: did not receive HSTS header yourgame.co.il: did not receive HSTS header youri.me: could not connect to host yourlovesong.com.mx: could not connect to host -yourname.xyz: did not receive HSTS header +yourname.xyz: could not connect to host yoursbookstore.jp: max-age too low: 0 yoursecondphone.co: could not connect to host yourself.today: could not connect to host yourstrongbox.com: could not connect to host +yourtrainingsolutions.com: did not receive HSTS header youruseragent.info: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] yourznc.com: could not connect to host yousite.by: could not connect to host youth2009.org: did not receive HSTS header youtube: could not connect to host youtubeviews.ml: could not connect to host +youwatchporn.com: could not connect to host youyoulemon.com: could not connect to host ypcs.fi: did not receive HSTS header yryz.net: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] +ysicing.net: could not connect to host yslbeauty.com: did not receive HSTS header +yspeo.com: max-age too low: 2592000 ytcuber.xyz: could not connect to host ythyth.com: max-age too low: 2592000 ytvwld.de: did not receive HSTS header yu7.jp: did not receive HSTS header +yuanbenlian.com: did not receive HSTS header yudan.com.br: could not connect to host yude.ml: could not connect to host -yue2.net: did not receive HSTS header yuema.net.cn: could not connect to host yufan.me: did not receive HSTS header yugege.cf: could not connect to host yuhen.ru: did not receive HSTS header -yuhuo.org: max-age too low: 0 yui.cat: did not receive HSTS header +yuka.one: could not connect to host yukijinji.moe: did not receive HSTS header yukiminami.net: could not connect to host +yukimochi.com: could not connect to host yukimochi.io: could not connect to host +yukimochi.jp: could not connect to host yuko.moe: could not connect to host yukonrefugees.com: could not connect to host yum.beer: could not connect to host +yum0.cn: could not connect to host yumli.net: could not connect to host yummyfamilyrecipes.com: could not connect to host yummylooks.com: did not receive HSTS header @@ -15757,17 +17009,21 @@ yuntama.xyz: could not connect to host yunzhan.io: could not connect to host yunzhu.org: could not connect to host yuppi.tv: max-age too low: 43200 +yuqi.me: could not connect to host yurinet.org: could not connect to host yuriykuzmin.com: did not receive HSTS header yutabon.com: could not connect to host yuushou.com: could not connect to host yux.fr: could not connect to host yux.io: did not receive HSTS header +yuxingxin.com: did not receive HSTS header yuzu.tk: did not receive HSTS header ywei.org: could not connect to host ywyz.tech: could not connect to host z-coder.com: could not connect to host z0rro.net: could not connect to host +z33.ch: did not receive HSTS header +z33.co: could not connect to host z3liff.com: could not connect to host z3liff.net: could not connect to host zacharopoulos.me: could not connect to host @@ -15776,6 +17032,11 @@ zadieheimlich.com: did not receive HSTS header zaem.tv: could not connect to host zahnrechner-staging.azurewebsites.net: could not connect to host zahyantechnologies.com: did not receive HSTS header +zaidan.de: could not connect to host +zaidan.eu: could not connect to host +zaidanfood.com: could not connect to host +zaidanfood.eu: could not connect to host +zaidanlebensmittelhandel.de: could not connect to host zakoncontrol.com: did not receive HSTS header zalan.do: could not connect to host zalohovaniburian.cz: could not connect to host @@ -15786,7 +17047,8 @@ zaneweb.org: could not connect to host zao.fi: could not connect to host zaoext.com: could not connect to host zaoshanghao-dajia.rhcloud.com: could not connect to host -zap.yt: did not receive HSTS header +zap.yt: could not connect to host +zapatoshechoamano.pe: did not receive HSTS header zargaripour.com: did not receive HSTS header zarooba.com: could not connect to host zavca.com: did not receive HSTS header @@ -15799,6 +17061,7 @@ zdravotnickasluzba.eu: could not connect to host zdrowiepaleo.pl: did not receive HSTS header zdx.ch: max-age too low: 0 zeb.fun: could not connect to host +zebibyte.cn: did not receive HSTS header zebrababy.cn: could not connect to host zebry.nl: did not receive HSTS header zecrypto.com: could not connect to host @@ -15810,38 +17073,43 @@ zehntner.ch: max-age too low: 3600 zeitzer-turngala.de: could not connect to host zelfmoord.ga: could not connect to host zelfstandigemakelaars.net: could not connect to host -zellari.ru: did not receive HSTS header +zellari.ru: could not connect to host zeloz.xyz: could not connect to host zenghx.tk: could not connect to host -zenhaiku.com: did not receive HSTS header +zenhaiku.com: could not connect to host zeno-system.com: did not receive HSTS header zenpayroll.com: did not receive HSTS header zentience.dk: did not receive HSTS header zentience.net: did not receive HSTS header zentience.org: did not receive HSTS header +zentiweb.nl: did not receive HSTS header zentraler-kreditausschuss.de: did not receive HSTS header zentralwolke.de: did not receive HSTS header zenvite.com: could not connect to host zenwears.com: could not connect to host zenycosta.com: could not connect to host +zeparadox.com: did not receive HSTS header zepect.com: did not receive HSTS header zera.com.au: could not connect to host -zerekin.net: did not receive HSTS header +zerekin.net: max-age too low: 86400 zero-sum.xyz: could not connect to host zero-x-baadf00d.com: could not connect to host zerocool.io: could not connect to host zeroday.sk: did not receive HSTS header zerofox.gq: could not connect to host +zerolab.org: could not connect to host zeroling.com: could not connect to host zeroml.ml: could not connect to host zerosource.net: could not connect to host zerudi.com: did not receive HSTS header zetadisseny.es: did not receive HSTS header zeto365.pl: did not receive HSTS header +zetrov.pl: did not receive HSTS header zett4.me: max-age too low: 172800 zeug.co: could not connect to host zewtie.com: could not connect to host zeytin.pro: could not connect to host +zfo.gg: could not connect to host zgan.ga: could not connect to host zh1.li: could not connect to host zhang.wtf: could not connect to host @@ -15855,7 +17123,7 @@ zhengouwu.com: could not connect to host zhenmeish.com: could not connect to host zhh.in: could not connect to host zhihua-lai.com: did not receive HSTS header -zhiin.net: did not receive HSTS header +zhiin.net: could not connect to host zhikin.com: could not connect to host zhimajk.com: could not connect to host zhome.info: could not connect to host @@ -15865,10 +17133,12 @@ zhuji.com.cn: could not connect to host zhuji5.com: could not connect to host zhujicaihong.com: could not connect to host zhuweiyou.com: did not receive HSTS header +zi.is: could not connect to host zi0r.com: did not receive HSTS header zian.online: could not connect to host zicklam.com: could not connect to host zigcore.com.br: could not connect to host +zii.bz: could not connect to host zikirakhirzaman.com: could not connect to host zinc-x.com: did not receive HSTS header zinenapse.info: could not connect to host @@ -15899,16 +17169,17 @@ zocken.com: did not receive HSTS header zoe.vc: could not connect to host zohar.link: could not connect to host zohar.shop: could not connect to host +zoi.jp: could not connect to host zokster.net: could not connect to host zolotoy-standart.com.ua: did not receive HSTS header zombiesecured.com: could not connect to host zomiac.pp.ua: could not connect to host zonadebolsa.es: did not receive HSTS header -zonadigital.co: did not receive HSTS header zone403.net: could not connect to host zoneminder.com: did not receive HSTS header zoners.si: did not receive HSTS header zonky.io: could not connect to host +zoo.city: could not connect to host zoo24.de: did not receive HSTS header zoofaeth.de: did not receive HSTS header zoofit.com.au: did not receive HSTS header @@ -15916,30 +17187,36 @@ zoological-gardens.eu: could not connect to host zoomingin.net: max-age too low: 5184000 zoommailing.com: did not receive HSTS header zoorigin.com: did not receive HSTS header +zooxdata.com: could not connect to host +zorki.nl: did not receive HSTS header zortium.report: could not connect to host zorz.info: could not connect to host +zouyaoji.top: did not receive HSTS header zoznamrealit.sk: did not receive HSTS header +zpy.fun: could not connect to host zq789.com: could not connect to host zqhong.com: could not connect to host zqjs.tk: could not connect to host +zqwqz.com: could not connect to host zrkr.de: could not connect to host zrn.in: did not receive HSTS header ztan.tk: could not connect to host ztcaoll222.cn: could not connect to host ztytian.com: could not connect to host zuan-in.com: could not connect to host +zubro.net: could not connect to host zuckerfloh.de: did not receive HSTS header zudomc.me: could not connect to host zuehlcke.de: could not connect to host zukix.com: could not connect to host zulu7.com: did not receive HSTS header -zumazar.ru: could not connect to host zunftmarke.de: did not receive HSTS header zutsu-raku.com: did not receive HSTS header zuviel.space: could not connect to host +zvejonys.lt: did not receive HSTS header zvncloud.com: did not receive HSTS header zvz.im: could not connect to host -zwembadheeten.nl: could not connect to host +zwembadheeten.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no] zx1168.com: could not connect to host zx2268.com: could not connect to host zxity.co.uk: could not connect to host @@ -15954,5 +17231,4 @@ zyso.org: could not connect to host zzb510.com: could not connect to host zzb6688.com: could not connect to host zzb8899.com: could not connect to host -zzpd.nl: did not receive HSTS header zzw.ca: could not connect to host diff --git a/security/manager/ssl/nsSTSPreloadList.inc b/security/manager/ssl/nsSTSPreloadList.inc index 16dd59d71..8dab9a1ee 100644 --- a/security/manager/ssl/nsSTSPreloadList.inc +++ b/security/manager/ssl/nsSTSPreloadList.inc @@ -8,7 +8,7 @@ /*****************************************************************************/ #include <stdint.h> -const PRTime gPreloadListExpirationTime = INT64_C(1544002174024000); +const PRTime gPreloadListExpirationTime = INT64_C(1547572131850000); class nsSTSPreload { @@ -32,22 +32,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "00550055.net", true }, { "00660066.net", true }, { "00770077.net", true }, - { "00778899.com", true }, + { "0086286.com", true }, { "00990099.net", true }, { "00dani.me", true }, { "00f.net", true }, { "0100dev.com", false }, { "0100dev.nl", false }, - { "013028.com", true }, - { "016028.com", true }, - { "016098.com", true }, - { "016328.com", true }, - { "019328.com", true }, - { "019398.com", true }, + { "01011970.xyz", true }, + { "01110000011100110111001001100111.com", true }, { "01electronica.com.ar", true }, { "01seguridad.com.ar", true }, { "01smh.com", true }, - { "0222.mg", true }, { "022367.com", true }, { "022379.com", true }, { "022391.com", true }, @@ -65,9 +60,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "02607.com", true }, { "026122.com", true }, { "02638.net", true }, - { "028718.com", true }, - { "029978.com", true }, { "02smh.com", true }, + { "0311buy.cn", true }, { "03170317.com", true }, { "0391315.com", true }, { "046569.com", true }, @@ -75,21 +69,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "050.ca", true }, { "050media.nl", true }, { "0511315.net", true }, - { "0513c.com", true }, - { "055268.com", true }, { "0573wk.com", true }, - { "066538.com", true }, + { "06091994.xyz", true }, { "06se.com", true }, { "07733.win", true }, - { "078805.com", true }, - { "078810.com", true }, - { "078820.com", true }, - { "078860.com", true }, - { "078890.com", true }, { "0788yh.com", true }, { "0792112.com", true }, { "0809yh.com", true }, - { "081638.com", true }, { "081752.com", true }, { "081763.com", true }, { "081769.com", true }, @@ -118,7 +104,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "083962.com", true }, { "083965.com", true }, { "083967.com", true }, - { "086628.com", true }, { "09115.com", true }, { "0916app.com", true }, { "09892.net", true }, @@ -136,11 +121,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "0wx.org", true }, { "0x.cx", true }, { "0x.sk", true }, + { "0x0.cloud", true }, { "0x0.li", true }, { "0x00ff00ff.com", true }, { "0x17.de", true }, { "0x52.net", true }, - { "0x5f3759df.cf", true }, { "0x7d.com", true }, { "0x7fffffff.net", true }, { "0x90.io", true }, @@ -150,7 +135,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "0xdc.io", false }, { "0xdefaced.de", true }, { "0xee.eu", true }, - { "0xf00.ch", true }, { "0xfc.de", true }, { "0xn.de", true }, { "0yen.org", true }, @@ -158,8 +142,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "100-downloads.com", true }, { "10000v.ru", true }, { "1000minds.com", true }, - { "1000serien.com", false }, - { "1001firms.com", true }, + { "1001carats.fr", true }, + { "1001kartini.com", true }, { "1001kerstpakketten.com", false }, { "1001mv.com", true }, { "10086.nl", true }, @@ -182,6 +166,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "10439.net", true }, { "10453.net", true }, { "10495.net", true }, + { "1066.io", true }, { "10774.net", true }, { "10840.net", true }, { "10gb.io", true }, @@ -189,7 +174,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "10og.de", true }, { "10ppm.com", true }, { "10seos.com", true }, - { "10v2.com", true }, { "1100.so", true }, { "110110110.net", true }, { "112112112.net", true }, @@ -197,8 +181,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "112hz.com", true }, { "113113113.net", true }, { "114514ss.com", true }, + { "1177107.com", true }, { "118118118.net", true }, - { "11bt.cc", true }, { "11dzon.com", true }, { "11loc.de", true }, { "11scc.com", true }, @@ -214,9 +198,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "123bearing.co.uk", true }, { "123bearing.com", true }, { "123bearing.eu", true }, - { "123comparer.fr", false }, + { "123comparer.fr", true }, { "123djdrop.com", true }, { "123midterm.com", true }, + { "123opstalverzekeringen.nl", true }, { "123pay.ir", false }, { "123plons.nl", true }, { "123roulement.be", true }, @@ -227,18 +212,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "124133.com", true }, { "124633.com", true }, { "125m125.de", true }, + { "1288366.com", true }, { "1288fc.com", true }, { "12photos.eu", true }, { "12thmanrising.com", true }, { "12vpn.net", true }, { "130.ua", true }, - { "130978.com", true }, { "132kv.ch", true }, - { "13318522.com", true }, { "1359826938.rsc.cdn77.org", true }, - { "1391kj.com", true }, { "1395kj.com", true }, - { "1396.net", true }, { "13th-dover.uk", true }, { "143533.com", true }, { "143633.com", true }, @@ -266,6 +248,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "149733.com", true }, { "14it.de", true }, { "14x3.de", true }, + { "15-10.com", true }, { "1511774230.rsc.cdn77.org", true }, { "152433.com", true }, { "154233.com", true }, @@ -276,15 +259,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "1600esplanade.com", true }, { "1644091933.rsc.cdn77.org", true }, { "1661237.com", true }, - { "1689886.com", true }, + { "166166.com", true }, { "168bo9.com", true }, { "168bo9.net", true }, + { "16book.org", true }, { "1750studios.com", false }, - { "17hats.com", true }, { "1811559.com", true }, { "1844329061.rsc.cdn77.org", true }, { "1876996.com", true }, - { "18888msc.com", true }, { "188da.com", true }, { "188dv.com", true }, { "189dv.com", true }, @@ -293,7 +275,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "18celebration.org", true }, { "18f.gov", true }, { "18f.gsa.gov", false }, - { "19216811.online", true }, { "192168ll.repair", true }, { "192433.com", true }, { "1972969867.rsc.cdn77.org", true }, @@ -310,6 +291,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "1cover.com.au", true }, { "1e9.nl", true }, { "1f123.net", true }, + { "1fach-digital.de", true }, { "1hourproofreading.com", true }, { "1it.click", true }, { "1js.de", true }, @@ -317,6 +299,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "1km.ro", true }, { "1kmi.co", true }, { "1ll.uk", true }, + { "1lord1faith.com", true }, { "1m.duckdns.org", true }, { "1montre.fr", true }, { "1morebounce.co.uk", true }, @@ -326,8 +309,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "1on1on1.tv", true }, { "1panorama.ru", true }, { "1para.net", true }, + { "1password.ca", true }, { "1password.com", true }, + { "1password.eu", true }, { "1px.tv", true }, + { "1q2w.nl", true }, { "1r.is", true }, { "1rs.nl", true }, { "1salland.nl", true }, @@ -339,15 +325,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "1stclassbouncycastles.co.uk", true }, { "1stforfun.co.uk", true }, { "1stpeninsulabouncers.co.uk", true }, - { "1ststop.co.uk", true }, - { "1upinternet.com", true }, { "1volcano.ru", true }, { "1whw.co.uk", true }, { "1wirelog.de", true }, { "1wl.uk", true }, { "2.wtf", true }, + { "200.network", true }, { "200fcw.com", true }, - { "2018.wales", true }, { "2048-spiel.de", true }, { "20at.com", true }, { "20denier.com", true }, @@ -356,46 +340,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "21sthammersmith.org.uk", true }, { "21x9.org", true }, { "2222yh.com", true }, - { "22bt.cc", true }, { "22digital.agency", true }, { "22scc.com", true }, { "230beats.com", true }, - { "2333666.xyz", true }, { "2333blog.com", true }, { "233abc.com", true }, { "233blog.com", true }, - { "233ss.net", true }, + { "233boy.com", true }, + { "233bwg.com", true }, + { "233hugo.com", true }, { "233vps.com", true }, { "24-7.jp", true }, - { "245meadowvistaway.com", true }, { "246060.ru", true }, - { "247a.co.uk", true }, { "247exchange.com", true }, { "247healthshop.com", true }, { "247medplan.com", true }, { "24dian30.com", true }, + { "24hour-locksmithsanantonio.com", true }, + { "24hourlocksmithbaltimore.com", true }, + { "24hourlocksmithdallastx.com", true }, + { "24hourlocksmithdetroit.com", true }, { "24hoursanantoniolocksmiths.com", true }, { "24hourscienceprojects.com", true }, { "24ip.com", true }, { "24ip.de", true }, { "24ip.fr", true }, { "24timeravis.dk", true }, + { "24zpravy.cz", true }, + { "256pages.com", false }, { "258da.com", true }, { "25reinyan25.net", true }, { "2600edinburgh.org", true }, { "2600hq.com", true }, { "263.info", true }, - { "27728522.com", true }, { "28-industries.com", true }, { "281180.de", true }, { "2858958.com", true }, + { "286.com", true }, { "288da.com", true }, { "28peaks.com", true }, { "28spots.net", true }, + { "291167.xyz", true }, { "2912.nl", true }, { "2948.ca", true }, + { "297computers.com", true }, { "298da.com", true }, { "2991236.com", true }, + { "2au.ru", true }, { "2bas.nl", true }, { "2bcompany.ch", true }, { "2bis10.de", true }, @@ -411,7 +402,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "2cv-fahrer.de", true }, { "2fm.ie", true }, { "2fraud.pro", true }, - { "2gen.com", true }, + { "2g1s.net", true }, + { "2h-nagoya.org", true }, { "2heartsbookings.co.uk", true }, { "2hypeenterprises.com", true }, { "2kgwf.fi", true }, @@ -419,9 +411,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "2li.ch", true }, { "2manydots.nl", true }, { "2mb.solutions", true }, - { "2mir.com", true }, { "2nains.ch", true }, { "2nerds1bit.com", true }, + { "2nics.net", true }, { "2pay.fr", true }, { "2programmers.net", true }, { "2rsc.com", true }, @@ -429,6 +421,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "2stv.net", true }, { "2ulcceria.nl", true }, { "2wheel.com", true }, + { "2y.fi", true }, { "3-dot-careapp1-146314.appspot.com", true }, { "300m.com", false }, { "302422.com", true }, @@ -439,13 +432,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "304squadron.org", true }, { "3056999.com", true }, { "309422.com", true }, - { "30yearmortgagerates.net", true }, + { "30hzcollective.com", true }, { "310422.com", true }, { "313422.com", true }, { "314022.com", true }, { "314122.com", true }, { "314322.com", true }, { "314522.com", true }, + { "314553.com", true }, { "314622.com", true }, { "314633.com", true }, { "314922.com", true }, @@ -525,7 +519,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "354933.com", true }, { "356433.com", true }, { "360live.fr", true }, + { "360rail.nl", true }, { "360woodworking.com", true }, + { "364553.com", true }, { "365365.com", true }, { "365daysreview.com", true }, { "365healthworld.com", true }, @@ -536,12 +532,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "373422.com", true }, { "374933.com", true }, { "375422.com", true }, - { "3778vip.com", true }, { "379700.com", true }, { "380422.com", true }, - { "38888msc.com", true }, { "388da.com", true }, - { "38blog.com", true }, { "390422.com", true }, { "392422.com", true }, { "393335.ml", true }, @@ -550,6 +543,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "394122.com", true }, { "394322.com", true }, { "394522.com", true }, + { "394553.com", true }, { "394622.com", true }, { "394922.com", true }, { "396422.com", true }, @@ -566,6 +560,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "3circlefunding.ch", true }, { "3countiescastlehire.co.uk", true }, { "3cs.ch", true }, + { "3deeplearner.com", true }, { "3djuegos.com", true }, { "3dmedium.de", true }, { "3dmusiclab.nl", true }, @@ -575,8 +570,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "3haeuserprojekt.org", true }, { "3haueserprojekt.org", true }, { "3hl0.net", true }, + { "3ik.us", true }, { "3james.com", true }, { "3logic.ru", true }, + { "3lot.ru", true }, { "3n5b.com", true }, { "3os.ooo", true }, { "3phase.pw", true }, @@ -604,7 +601,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "3v4l.org", true }, { "3weekdietworks.com", true }, { "4-1-where.com", true }, - { "40-grad.de", true }, + { "4-it.de", true }, { "4000milestare.com", true }, { "403.ch", true }, { "404notfound.com.br", true }, @@ -616,30 +613,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "411film.com", true }, { "411movie.com", true }, { "414553.com", true }, + { "41studio.com", true }, { "41where.com", true }, { "420java.com", true }, - { "4237.com", true }, - { "42day.info", true }, - { "42entrepreneurs.fr", true }, { "439050.com", true }, { "441jj.com", false }, { "4444yh.com", true }, { "448da.com", true }, { "44scc.com", true }, - { "44sec.com", true }, - { "4500.co.il", false }, { "451.ooo", true }, { "4553s.com", true }, { "4553vip.com", true }, - { "478933.com", true }, + { "4736666.com", true }, { "47essays.com", true }, { "491mhz.net", true }, { "49889.com", true }, { "49dollaridahoregisteredagent.com", true }, + { "4c-haircare.com", true }, { "4decor.org", true }, { "4everproxy.com", true }, { "4eyes.ch", true }, { "4fit.ro", true }, + { "4flex.info", true }, { "4freepress.com", true }, { "4g-server.eu", false }, { "4garage.com.br", true }, @@ -659,6 +654,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "4x.fi", true }, { "4x4.lk", true }, { "4xlabs.co", true }, + { "50.pe", true }, { "500a500.com", true }, { "500b500.com", true }, { "500c500.com", true }, @@ -692,6 +688,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "504922.com", true }, { "506422.com", true }, { "506pay.com", true }, + { "508088.com", true }, { "50lakeshore.com", true }, { "50ma.xyz", true }, { "50north.de", true }, @@ -705,12 +702,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "51877.net", true }, { "519422.com", true }, { "51acg.eu.org", true }, + { "51tiaojiu.com", true }, { "5214889.com", true }, { "5214889.net", true }, { "524022.com", true }, { "524622.com", true }, { "524922.com", true }, { "525.info", true }, + { "52hentai.ml", true }, { "52kb365.com", true }, { "52ncp.net", true }, { "52sykb.com", true }, @@ -731,18 +730,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "541622.com", true }, { "541722.com", true }, { "541922.com", true }, - { "5432.cc", true }, { "545922.com", true }, { "546802.com", true }, { "54below.com", true }, { "5518k3.com", true }, { "5533445.com", true }, { "5555yh.com", true }, + { "55797.com", true }, { "558da.com", true }, - { "55bt.cc", true }, { "55scc.com", true }, { "576422.com", true }, { "579422.com", true }, + { "57he.com", true }, { "57wilkie.net", true }, { "583422.com", true }, { "585422.com", true }, @@ -760,13 +759,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "5997891.com", true }, { "5apps.com", true }, { "5c1fd0f31022cbc40af9f785847baaf9.space", true }, - { "5chat.it", true }, { "5crowd.com", true }, { "5dm.tv", true }, - { "5ece.de", true }, { "5francs.com", true }, { "5gb.space", true }, { "5kraceforals.com", true }, + { "5percentperweek.com", true }, { "5starbouncycastlehire.co.uk", true }, { "5thchichesterscouts.org.uk", true }, { "5w5.la", true }, @@ -827,8 +825,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "645722.com", true }, { "645822.com", true }, { "645922.com", true }, - { "645ds.cn", true }, - { "645ds.com", true }, { "646022.com", true }, { "646322.com", true }, { "646722.com", true }, @@ -837,7 +833,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "64970.com", true }, { "649722.com", true }, { "649822.com", true }, - { "64bitgaming.de", true }, { "651422.com", true }, { "652422.com", true }, { "6541166.com", true }, @@ -853,7 +848,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "6547766.com", true }, { "6548855.com", true }, { "6548877.com", true }, + { "656088.com", true }, { "659422.com", true }, + { "66136.com", true }, { "6616fc.com", true }, { "66205.net", true }, { "6633445.com", true }, @@ -862,13 +859,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "6664553.com", true }, { "666668722.com", true }, { "6666yh.com", true }, + { "666omg.com", true }, { "668da.com", true }, + { "66bwf.com", true }, { "670422.com", true }, { "671422.com", true }, { "672422.com", true }, { "673422.com", true }, { "676422.com", true }, - { "67899876.com", true }, { "679422.com", true }, { "680422.com", true }, { "686848.com", true }, @@ -884,12 +882,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "6997896.com", true }, { "69butterfly.com", true }, { "69fps.gg", true }, - { "6ird.com", true }, { "6lo.zgora.pl", true }, { "6pm.com", true }, { "6t-montjoye.org", true }, { "6w6.la", true }, - { "6z3.net", true }, { "700.az", true }, { "704233.com", true }, { "704533.com", true }, @@ -913,25 +909,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "736433.com", true }, { "738433.com", true }, { "739433.com", true }, - { "73info.com", true }, { "740833.com", true }, { "741833.com", true }, { "742833.com", true }, { "743833.com", true }, { "74th.jp", true }, + { "755k3.com", true }, + { "7570.com", true }, { "762.ch", true }, - { "771122.tv", true }, - { "7717a.com", true }, { "772244.net", true }, { "7733445.com", true }, { "7777yh.com", true }, { "777coin.com", true }, { "778da.com", true }, + { "783lab.com", true }, + { "787k3.com", true }, { "7885765.com", true }, { "788da.com", true }, { "7891553.com", true }, { "7891997.com", true }, - { "789zr.com", true }, { "7careconnect.com", true }, { "7delights.com", true }, { "7delights.in", true }, @@ -939,31 +935,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "7graus.pt", true }, { "7kicks.com", true }, { "7kovrikov.ru", true }, - { "7nw.eu", true }, { "7proxies.com", true }, { "7sons.de", true }, { "7thcircledesigns.com", true }, + { "7trade8.com", true }, { "7x24servis.com", true }, + { "80036.com", true }, { "804322.com", true }, + { "8086.cf", true }, { "809422.com", true }, { "80993.net", true }, { "814022.com", true }, - { "81818app.com", true }, { "8189196.com", true }, + { "818bwf.com", true }, { "818da.com", true }, - { "8206688.com", true }, { "8522.com", true }, { "8522club.com", true }, { "8522hk.com", true }, { "8522ph.com", true }, - { "8522top.com", true }, { "8522tw.com", true }, { "8522usa.com", true }, + { "86286286.com", true }, { "86499.com", true }, { "8649955.com", true }, { "8649966.com", true }, { "8649977.com", true }, { "8688fc.com", true }, + { "86metro.ru", true }, + { "8722.am", true }, { "8722am.com", true }, { "8722cn.com", true }, { "8722hk.com", true }, @@ -977,7 +976,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "88889822.com", true }, { "8888esb.com", true }, { "8888yh.com", true }, + { "888bwf.com", true }, { "888msc.vip", true }, + { "88bwf.com", true }, { "8901178.com", true }, { "8901178.net", true }, { "8910899.com", true }, @@ -988,13 +989,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "8917818.net", true }, { "8951889.com", true }, { "8951889.net", true }, - { "8989k3.com", true }, { "8992088.com", true }, { "8992088.net", true }, { "8ack.de", true }, { "8ackprotect.com", true }, { "8da188.com", true }, { "8da2017.com", true }, + { "8da222.com", true }, { "8da88.com", true }, { "8da999.com", true }, { "8dabet.com", true }, @@ -1008,11 +1009,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "8thportsmouth.org.uk", true }, { "8tuffbeers.com", true }, { "8ung.online", true }, + { "8xx.bet", true }, + { "8xx.io", true }, + { "8xx888.com", true }, + { "8xxbet.net", true }, { "9-11commission.gov", true }, { "903422.com", true }, { "905422.com", true }, { "90r.jp", true }, - { "910kj.com", true }, { "9118.com", true }, { "911commission.gov", true }, { "912422.com", true }, @@ -1020,9 +1024,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "914122.com", true }, { "918116.com", true }, { "918gd.com", true }, + { "918yy.com", true }, { "919422.com", true }, { "91966.com", true }, - { "919945.com", true }, { "91tianmi.com", false }, { "91travel.info", true }, { "924122.com", true }, @@ -1035,7 +1039,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "934122.com", true }, { "943022.com", true }, { "9449-27a1-22a1-e0d9-4237-dd99-e75e-ac85-2f47-9d34.de", true }, - { "9454.com", true }, { "946022.com", true }, { "946422.com", true }, { "949022.com", true }, @@ -1050,18 +1053,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "972422.com", true }, { "9788876.com", true }, { "97bros.com", true }, - { "9822.com", true }, - { "9822.info", true }, + { "9822.am", true }, + { "9822.bz", true }, { "9822am.com", true }, { "9822cn.com", true }, { "9822hk.com", true }, { "9822ph.com", true }, { "9822tw.com", true }, { "9822usa.com", true }, - { "987987.com", true }, { "98laba.com", true }, { "98laba.net", true }, - { "9906753.net", true }, { "9918883.com", true }, { "9933445.com", true }, { "99599.fi", true }, @@ -1074,13 +1075,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "99rst.org", true }, { "9bingo.net", true }, { "9farm.com", true }, - { "9iwan.net", true }, + { "9fvip.net", true }, { "9jajuice.com", true }, { "9pkfz.com", true }, - { "9ss6.com", true }, + { "9riddles.com", true }, { "9tolife.be", true }, { "9uelle.jp", true }, - { "9vies.ca", true }, { "9vx.org", true }, { "9won.kr", true }, { "9y.at", true }, @@ -1092,8 +1092,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "a-little-linux-box.at", true }, { "a-msystems.com", true }, { "a-oben.org", true }, - { "a-shafaat.ir", true }, { "a-starbouncycastles.co.uk", true }, + { "a-wife.net", true }, { "a0print.nl", true }, { "a1bouncycastlehire.com", true }, { "a1jumpandbounce.co.uk", true }, @@ -1106,14 +1106,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "a4sound.com", true }, { "a632079.me", true }, { "a7m2.me", true }, - { "a8q.org", true }, { "aa-tour.ru", true }, { "aa1718.net", true }, + { "aa43d.cn", true }, { "aa6688.net", true }, { "aaapl.com", true }, { "aabanet.com.br", true }, { "aaben-bank.dk", true }, { "aabenbank.dk", true }, + { "aacfree.com", true }, { "aagetransport.no", true }, { "aalalbayt.com", true }, { "aalalbayt.net", true }, @@ -1128,21 +1129,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aapas.org.ar", true }, { "aardvarksolutions.co.za", true }, { "aarkue.eu", true }, + { "aaron.cm", false }, { "aaron.xin", true }, { "aaronhorler.com", true }, - { "aaronhorler.com.au", true }, { "aaronkimmig.de", true }, { "aaronroyle.com", true }, { "aaronsilber.me", true }, { "aatf.us", true }, { "aati.be", true }, + { "aati.info", true }, { "aavienna.com", true }, + { "ab-bauservice-berlin.de", true }, { "abaapplianceservice.com", true }, + { "abaaustin.com", true }, { "abacus-events.co.uk", true }, { "abacusbouncycastle.co.uk", true }, { "abacustech.co.jp", true }, { "abacustech.net", true }, { "abacustech.org", true }, + { "abandonedmines.gov", true }, { "abbadabbabouncycastles.co.uk", true }, { "abbas.ch", true }, { "abborsjo.fi", true }, @@ -1158,13 +1163,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "abckam.com", true }, { "abcpartyhire.com", true }, { "abcstudio.com.au", true }, + { "abdel.me", true }, + { "abdelsater.net", true }, { "abdullah.pw", true }, + { "abdulwahaab.ca", true }, { "abe-elektro.de", true }, { "abe-medical.jp", true }, { "abeestrada.com", false }, { "abeilles-idapi.fr", true }, { "abenteuer-ahnenforschung.de", true }, - { "abeontech.com", true }, { "aberdeenalmeras.com", true }, { "aberdeencastles.co.uk", true }, { "aberdeenjudo.co.uk", true }, @@ -1178,7 +1185,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "abilitycaresoftware.com", true }, { "abilitynet.org.uk", true }, { "abilityone.gov", true }, - { "abilma.com", true }, { "abilymp06.net", true }, { "abimelec.com", true }, { "abinyah.com", true }, @@ -1215,6 +1221,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "abolitionistsociety.com", true }, { "abolitionniste.com", true }, { "abolizionista.com", true }, + { "abonilla.com", true }, { "abos.eu", true }, { "abouncycastleman.co.uk", true }, { "abouthrm.nl", true }, @@ -1229,20 +1236,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aboutyou.nl", true }, { "abox-kb.com", true }, { "abpis.hr", true }, - { "abracadabra.co.jp", false }, { "abrakidabra.com.br", true }, { "abraxan.pro", true }, { "abrilect.com", true }, { "abristolgeek.co.uk", true }, { "abseits.org", true }, { "absolem.cc", true }, + { "absolutedouble.co.uk", true }, { "absolutehaitian.com", true }, { "absolutehosting.co.za", true }, { "absolutelyinflatables.co.uk", true }, { "absoluterush.net", true }, - { "absolutewaterproofingsolutions.com", true }, { "absolutewebdesigns.com", true }, { "abstraction21.com", true }, + { "absturztau.be", true }, + { "absturztaube.ch", true }, { "absynthe-inquisition.fr", true }, { "abthorpe.org", true }, { "abulanov.com", true }, @@ -1263,10 +1271,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "academytv.com.au", true }, { "acaeum.com", true }, { "acampar.com.br", true }, + { "acaptureservices.com", true }, { "acara-yoga.de", true }, + { "acareer.in", true }, + { "acat.io", true }, { "acbrussels-used.be", true }, { "accadoro.it", true }, - { "accbay.com", true }, { "accelaway.com", true }, { "acceleratenetworks.com", true }, { "accelerateyourworld.org", true }, @@ -1282,6 +1292,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "accessoirescheveuxchic.com", true }, { "accessoripersmartphone.it", true }, { "accme.co", true }, + { "accoladescreens.com.au", true }, { "accord-application.com", true }, { "accordiondoor.com", true }, { "accounts.firefox.com", true }, @@ -1297,17 +1308,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aceanswering.com", true }, { "acecerts.co.uk", true }, { "acecolleges.edu.au", true }, + { "acedog.co", true }, { "aceinflatables.com", true }, { "aceinstituteonline.com", true }, - { "acelpb.com", true }, { "acem.org.au", true }, { "acemobileforce.com", true }, - { "acemypaper.com", true }, + { "acen.eu", true }, { "acendealuz.com.br", true }, { "acerentalandsales.com", true }, { "acerislaw.com", true }, { "acessoeducacao.com", true }, { "acevik.de", true }, + { "acfo.org", true }, + { "acg.social", true }, { "acg18.us", false }, { "acgtalktw.com", true }, { "achalay.org", true }, @@ -1316,19 +1329,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "acheter-ethylotest.fr", true }, { "achromatisch.de", true }, { "achterblog.de", true }, - { "achterstieg.dedyn.io", true }, { "achtzehn.eu", true }, { "achtzehnterachter.de", true }, + { "achtzig20.de", true }, { "achwo.de", true }, + { "acid.ninja", true }, { "acidbin.co", true }, { "aciety.com", true }, { "aciksite.com", true }, + { "ackermann.ch", true }, { "ackis.duckdns.org", false }, { "aclu.org", false }, { "acluva.org", false }, { "acme.beer", true }, { "acmexyz123.info", true }, { "acnpacific.com", true }, + { "acodess.com", true }, { "aconnor.xyz", true }, { "acordes.online", true }, { "acorncastles.co.uk", true }, @@ -1337,6 +1353,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "acoshift.me", true }, { "acourse.io", true }, { "acousti-tech.com", true }, + { "acousticalsolutions.com", true }, { "acoustics.network", true }, { "acoustics.tech", true }, { "acoustique-tardy.com", true }, @@ -1349,6 +1366,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "acrepairhutto.com", true }, { "acrepairroundrocktx.com", true }, { "acrevalue.com", true }, + { "acriticismlab.org", true }, { "acrolife.cz", true }, { "acroso.me", true }, { "across.ml", true }, @@ -1375,24 +1393,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "active-tluszcz.pl", true }, { "active.hu", false }, { "activecare-monitor.com", true }, - { "activeclearweb.com", true }, { "activehire.co.uk", true }, { "activeleisure.ie", true }, { "activeworld.net", false }, + { "activiteithardenberg.nl", true }, { "activitesaintnicaise.org", true }, { "activityeventhire.co.uk", true }, { "actom.cc", true }, + { "actonwoodworks.com", true }, { "actors-cafe.net", true }, { "actorsroom.com", true }, { "actserv.co.ke", true }, + { "actualidadiphone.com", true }, + { "actualidadmotor.com", true }, { "acuica.co.uk", false }, { "acul.me", true }, { "acupofsalt.tv", true }, { "acus.gov", true }, { "acwcerts.co.uk", true }, { "acwi.gov", true }, - { "acy.com", true }, { "acyfxasia.com", true }, + { "acyume.com", true }, { "ad-notam.asia", true }, { "ad-notam.ch", true }, { "ad-notam.co.uk", true }, @@ -1402,6 +1423,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ad-notam.it", true }, { "ad-notam.pt", true }, { "ad-notam.us", true }, + { "ad13.in", true }, { "ada.gov", true }, { "adalis.org", true }, { "adam-ant.co.uk", true }, @@ -1420,10 +1442,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "adamradocz.com", true }, { "adams.dk", true }, { "adamsbouncycastles.co.uk", true }, - { "adamsfoundationrepair.com", true }, { "adamstas.com", true }, - { "adamwallington.co.uk", true }, { "adamwilcox.org", true }, + { "adamyuan.xyz", true }, { "adapt-elektronik.com", true }, { "adapt.de", true }, { "adaptablesecurity.org", true }, @@ -1438,9 +1459,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "adderall.space", true }, { "addicional.com", true }, { "addictively.com", true }, - { "addiko.net", true }, { "addisoncrump.info", true }, { "addnine.com", true }, + { "addon.watch", true }, { "addones.net", true }, { "addtoany.com", true }, { "adduono.com", true }, @@ -1449,7 +1470,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "adeline.mobi", true }, { "adentalsolution.com", true }, { "adept.org.pl", true }, - { "adevel.eu", true }, + { "adesa.co.uk", true }, + { "adex.network", true }, { "adf-safetytools.com", true }, { "adftrasporti.it", true }, { "adhd-inattentive.com", true }, @@ -1458,7 +1480,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "adimaja.com", true }, { "adinariversloveschool.com", true }, { "adingenierie.fr", true }, - { "adint.net", true }, { "adiponectinsupplement.info", true }, { "adiponectinsupplement.net", true }, { "adjagu.org", true }, @@ -1470,6 +1491,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "adm-sarov.ru", true }, { "adme.co.il", true }, { "admin-serv.net", true }, + { "admin.casa", true }, { "admin.fedoraproject.org", true }, { "admin.google.com", true }, { "admin.stg.fedoraproject.org", true }, @@ -1477,14 +1499,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "administratorserwera.pl", true }, { "adminlinux.pl", true }, { "admino.cz", true }, - { "adminwerk.com", true }, { "adminwiki.fr", true }, { "admody.com", true }, { "admongo.gov", true }, { "adnanotoyedekparca.com", true }, { "adnot.am", true }, { "adnseguros.es", true }, - { "adoniscabaret.co.uk", true }, { "adonnante.com", true }, { "adoptionlink.co.uk", true }, { "adora-illustrations.fr", true }, @@ -1493,24 +1513,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "adorecricket.com", true }, { "adorewe.com", true }, { "adoriasoft.com", false }, + { "adorno-gymnasium.de", true }, { "adoucisseur.shop", true }, { "adquisitio.co.uk", true }, { "adquisitio.es", true }, { "adquisitio.fr", true }, { "adquisitio.it", true }, { "adr.gov", true }, + { "adra.com", true }, { "adrafinil.wiki", true }, { "adrianbechtold.de", true }, { "adriancitu.com", true }, { "adriancostin.ro", true }, { "adrianjensen.com", true }, { "adrianmejias.com", true }, - { "adrien.vin", true }, { "adrienkohlbecker.com", true }, { "adriennesmiles.com", true }, - { "adrinet.tk", true }, { "adrup.com", true }, + { "adsamcik.com", true }, { "adsbouncycastles.co.uk", true }, + { "adsbtc.org", true }, { "adsl2meg.fr", true }, { "adtgroup.com", true }, { "adurra.com", true }, @@ -1544,10 +1566,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "advocate-europe.eu", true }, { "advocaten-avocats.be", true }, { "advocatenalkmaar.org", true }, + { "advocator.ca", true }, { "advocoeurdehaan.nl", true }, { "advokat-romanov.com", true }, { "advtran.com", true }, { "adware.pl", true }, + { "adwokatkosterka.pl", true }, + { "adwokatzdunek.pl", true }, { "adws.io", true }, { "adxperience.com", true }, { "adzuna.at", true }, @@ -1565,6 +1590,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "adzuna.pl", true }, { "adzuna.ru", true }, { "adzuna.sg", true }, + { "ae-construction.co.uk", true }, { "aebian.org", true }, { "aecexpert.fr", true }, { "aegee-utrecht.nl", true }, @@ -1575,21 +1601,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aegrel.ee", true }, { "aehe.us", true }, { "aei.co.uk", true }, - { "aelurus.com", true }, + { "aelisya.ch", true }, { "aeon.co", true }, { "aep-digital.com", true }, { "aeradesign.com", true }, { "aerandir.fr", true }, + { "aerapass.io", true }, { "aereco.com", true }, { "aergia.eu", true }, { "aerisnetwork.com", true }, { "aero-pioneer.com", true }, + { "aerobasegroup.com", true }, { "aerobotz.com", true }, { "aerosimexperience.com", true }, { "aertel.ie", true }, { "aessencia.com.br", true }, { "aestheticdr.org", true }, - { "aesthetics-blog.com", true }, { "aesthetx.com", true }, { "aestore.by", true }, { "aeternus.tech", true }, @@ -1605,7 +1632,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "afb24.de", true }, { "afbeelding.im", true }, { "afbeeldinguploaden.nl", true }, - { "afeefzarapackages.com", true }, + { "afcompany.it", true }, + { "afcurgentcarelyndhurst.com", true }, { "affichagepub3.com", true }, { "affiliatefeatures.com", true }, { "affiliateroyale.com", true }, @@ -1615,6 +1643,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "affissioni.roma.it", true }, { "affittacamere.roma.it", true }, { "affordableazdivorce.com", true }, + { "affordableblindsexpress.com", true }, + { "affordableenergyadvocates.com", true }, { "affordablehealthquotesforyou.com", true }, { "affordablekilimanjaro.com", true }, { "affordablemudjacking.com", true }, @@ -1626,7 +1656,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aficionados.com.br", true }, { "afinadoronline.com.br", true }, { "afinaudio.com", true }, - { "aflamtorrent.com", true }, { "aflfreebets.com", true }, { "aflowershop.ca", true }, { "afmt.fr", true }, @@ -1650,6 +1679,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "afva.net", true }, { "afzco.asia", true }, { "ag-websolutions.de", true }, + { "ag8-game.com", true }, { "agalliasis.ch", true }, { "agamsecurity.ch", true }, { "agatajanik.de", true }, @@ -1657,10 +1687,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "agechecker.net", true }, { "ageg.ca", true }, { "agenceklic.com", true }, + { "agencewebstreet.com", true }, { "agenciadeempregosdourados.com.br", true }, { "agenciafiscal.pe", true }, + { "agencyinmotion.com", true }, { "agenda-loto.net", false }, { "agenda21senden.de", true }, + { "agendatelefonica.com.br", true }, { "agent-grow.com", true }, { "agent6.com.au", true }, { "agentprocessing.com", true }, @@ -1689,6 +1722,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "agoravox.fr", true }, { "agoravox.it", true }, { "agoravox.tv", true }, + { "agostinhoenascimento.com.br", true }, { "agotnes.com", true }, { "agouraelectrical.com", true }, { "agouraelectrician.com", true }, @@ -1705,29 +1739,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "agouraoutdoorlighting.com", true }, { "agr.asia", true }, { "agracan.com", true }, + { "agrajag.nl", true }, { "agrarking.de", true }, { "agrarshop4u.de", true }, { "agrekov.ru", true }, { "agreor.com", true }, { "agrichamber.com.ua", true }, + { "agricolo.ch", true }, { "agridir.site", true }, { "agrilinks.org", true }, { "agrios.de", true }, { "agro-forestry.net", true }, - { "agro.rip", true }, { "agroline.by", true }, - { "agroyard.com.ua", true }, + { "agroxxi.ru", true }, { "agsb.ch", true }, + { "agscinemas.com", true }, + { "agscinemasapp.com", true }, { "agung-furniture.com", true }, { "agwa.name", true }, { "ahd.com", false }, { "aheng.me", true }, { "ahero4all.org", true }, { "ahiru3.com", true }, + { "ahkubiak.ovh", true }, { "ahlaejaba.com", true }, { "ahmad.works", true }, { "ahmadly.com", true }, { "ahmedabadflowermall.com", true }, + { "ahmedcharles.com", true }, { "ahmerjamilkhan.org", true }, { "ahmetozer.org", true }, { "ahosi.com", true }, @@ -1738,9 +1777,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ahxxm.com", true }, { "ai-english.jp", true }, { "ai-soft.co.jp", true }, + { "ai.gov", true }, { "aia.de", true }, - { "aibaoyou.com", true }, { "aibenzi.com", true }, + { "aicial.co.uk", true }, { "aidanapple.com", true }, { "aidanmontare.net", true }, { "aide-valais.ch", true }, @@ -1752,6 +1792,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aifriccampbell.com", true }, { "aigcev.org", true }, { "aigenpul.se", true }, + { "aignermunich.com", true }, + { "aignermunich.de", true }, { "aignermunich.jp", true }, { "aiicy.org", true }, { "aiida.se", true }, @@ -1763,10 +1805,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aikido-kiel.de", true }, { "aikido-linz.at", true }, { "aikido-wels.at", true }, + { "aimax.com", true }, { "aimeeandalec.com", true }, - { "aimerworld.com", true }, { "aimgroup.co.tz", true }, { "aimotive.com", true }, + { "aimstoreglobal.com", true }, { "aintevenmad.ch", true }, { "aiois.com", true }, { "aipbarcelona.com", true }, @@ -1774,17 +1817,77 @@ static const nsSTSPreload kSTSPreloadList[] = { { "air-shots.ch", true }, { "air-we-go.co.uk", true }, { "airbly.com", true }, + { "airbnb.ae", true }, + { "airbnb.at", true }, + { "airbnb.be", true }, + { "airbnb.ca", true }, + { "airbnb.cat", true }, + { "airbnb.ch", true }, + { "airbnb.cl", true }, + { "airbnb.co.cr", true }, + { "airbnb.co.id", true }, + { "airbnb.co.il", true }, + { "airbnb.co.in", true }, + { "airbnb.co.kr", true }, + { "airbnb.co.nz", true }, + { "airbnb.co.uk", true }, + { "airbnb.co.ve", true }, { "airbnb.com", true }, + { "airbnb.com.ar", true }, + { "airbnb.com.au", true }, + { "airbnb.com.bo", true }, + { "airbnb.com.br", true }, + { "airbnb.com.bz", true }, + { "airbnb.com.co", true }, + { "airbnb.com.ec", true }, + { "airbnb.com.gt", true }, + { "airbnb.com.hk", true }, + { "airbnb.com.hn", true }, + { "airbnb.com.hr", true }, + { "airbnb.com.kh", true }, + { "airbnb.com.mt", true }, + { "airbnb.com.my", true }, + { "airbnb.com.ni", true }, + { "airbnb.com.pa", true }, + { "airbnb.com.pe", true }, + { "airbnb.com.ph", true }, + { "airbnb.com.py", true }, + { "airbnb.com.sg", true }, + { "airbnb.com.sv", true }, + { "airbnb.com.tr", true }, + { "airbnb.com.tw", true }, + { "airbnb.com.ua", true }, + { "airbnb.com.vn", true }, + { "airbnb.cz", true }, + { "airbnb.de", true }, + { "airbnb.dk", true }, + { "airbnb.es", true }, + { "airbnb.fi", true }, + { "airbnb.fr", true }, + { "airbnb.gr", true }, + { "airbnb.gy", true }, + { "airbnb.hu", true }, + { "airbnb.ie", true }, + { "airbnb.is", true }, + { "airbnb.it", true }, + { "airbnb.jp", true }, + { "airbnb.la", true }, + { "airbnb.lu", true }, + { "airbnb.mx", true }, + { "airbnb.nl", true }, + { "airbnb.no", true }, + { "airbnb.pl", true }, + { "airbnb.pt", true }, + { "airbnb.ru", true }, + { "airbnb.se", true }, { "airbnbopen.com", true }, { "airborne-inflatables.co.uk", true }, { "airclass.com", true }, { "aircomms.com", true }, - { "airconsboksburg.co.za", true }, - { "airconsfourways.co.za", true }, - { "airconsmidrand.co.za", true }, - { "airconssandton.co.za", true }, { "airductclean.com", false }, { "airductcleaning-fresno.com", true }, + { "airductcleaninggrandprairie.com", true }, + { "airductcleaningirving.com", true }, { "airdur.eu", true }, { "aireaseleaks.org", true }, { "airetvie.com", true }, @@ -1804,8 +1907,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "airportlimototoronto.com", true }, { "airpurifierproductsonline.com", true }, { "airrestoration.ch", true }, - { "airsick.guide", true }, { "airsoft.ch", true }, + { "airtimerewards.co.uk", true }, { "airvpn.org", true }, { "airvuz.com", true }, { "airwegobouncycastles.co.uk", true }, @@ -1815,12 +1918,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aisi316l.net", true }, { "aisr.nl", true }, { "aistockcharts.com", true }, + { "aistrope.com", true }, { "ait.com.ar", true }, { "aiticon.com", true }, { "aitosoftware.com", true }, { "aiutodomestico.ch", true }, { "aivd.lol", true }, - { "aivene.com", true }, { "aiwdirect.com", true }, { "aixvox.com", false }, { "aixxe.net", true }, @@ -1856,26 +1959,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "akhealthconnection.com", true }, { "akihito.com", true }, { "akijo.de", true }, + { "akilli-devre.com", true }, { "akita-boutique.com", true }, { "akiym.com", true }, - { "akj.io", true }, { "akkbouncycastles.co.uk", true }, { "akkeylab.com", true }, - { "akoch.net", true }, { "akostecki.de", true }, { "akovana.com", true }, { "akoya.fi", true }, { "akplates.org", true }, { "akpwebdesign.com", true }, { "akr.io", true }, - { "akracing.se", true }, - { "akronet.cz", true }, - { "akropol.cz", true }, + { "akr.services", true }, + { "akritikos.info", true }, + { "akronet.cz", false }, + { "akropol.cz", false }, { "akropolis-ravensburg.de", true }, { "aksehir.bel.tr", true }, { "akselinurmio.fi", false }, { "akshi.in", true }, - { "aktan.com.br", true }, { "aktiv-naturheilmittel.at", true }, { "aktiv-naturheilmittel.ch", true }, { "aktiv-naturheilmittel.de", true }, @@ -1884,30 +1986,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aktuelle-uhrzeit.at", true }, { "akuislam.com", true }, { "akukas.com", true }, - { "akul.co.in", true }, { "akustik.tech", true }, { "akutun.cl", true }, { "akvorrat.at", true }, { "al3xpro.com", true }, { "alab.space", true }, + { "alabamadebtrelief.org", true }, { "alaboard.com", true }, { "aladdin.ie", true }, { "aladdinschools.appspot.com", true }, { "alainbaechlerphotography.ch", true }, + { "alainfrancois.eu", true }, + { "alainfrancois.nl", true }, { "alainmargot.ch", true }, { "alainodea.com", true }, { "alainwolf.ch", true }, { "alainwolf.net", true }, { "alair.cn", false }, + { "alamancetv.com", true }, { "alamgir.works", true }, { "alanberger.me.uk", true }, { "alanhua.ng", true }, { "alaninkenya.org", true }, - { "alanya.law", true }, { "alaricfavier.eu", false }, { "alarmcomplete.co.uk", true }, { "alarna.de", true }, { "alasdelalma.com.co", true }, + { "alaskafishinglodges.net", true }, { "alaskajewelry.com", true }, { "alastairs-place.net", true }, { "alaxyjewellers.co.za", true }, @@ -1923,20 +2028,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alboweb.nl", true }, { "albuic.tk", true }, { "alca31.com", true }, - { "alcatelonetouch.us", true }, { "alchimic.ch", true }, { "alcnutrition.com", true }, { "alco-united.com", true }, { "alcoholapi.com", true }, - { "aldes.co.za", true }, + { "aldiabcs.com", true }, { "aldien.com.br", true }, { "aldo-vandini.de", true }, - { "aldorr.net", true }, + { "aldomedia.com", true }, + { "aldorr.net", false }, { "aldous-huxley.com", true }, { "aldred.cloud", true }, { "alecpap.com", true }, { "alecpapierniak.com", true }, { "alecrust.com", true }, + { "aledg.cl", true }, + { "alek.in", true }, + { "aleksejjocic.tk", true }, { "aleksib.fi", true }, { "alela.fr", true }, { "alerbon.net", true }, @@ -1946,6 +2054,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alertwire.com", true }, { "alesia-formation.fr", true }, { "alessandroonline.com.br", true }, + { "alessandroz.ddns.net", true }, { "aletm.it", true }, { "alex-ross.co.uk", true }, { "alex97000.de", true }, @@ -1953,13 +2062,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alexanderb.info", true }, { "alexandermuetzel.de", true }, { "alexanderneng.de", true }, - { "alexandernorth.ch", true }, { "alexanderschimpf.de", true }, { "alexanderzinn.com", true }, { "alexandra-schulze.de", true }, + { "alexandrastorm.com", true }, { "alexandrastylist.com", true }, { "alexandre-blond.fr", true }, - { "alexandros.io", true }, + { "alexbaker.org", true }, { "alexberts.ch", true }, { "alexbresnahan.com", true }, { "alexcoman.com", true }, @@ -1968,14 +2077,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alexey-shamara.ru", true }, { "alexeykopytko.com", true }, { "alexgaynor.net", true }, + { "alexgebhard.com", true }, { "alexhd.de", true }, { "alexio.ml", true }, { "alexisabarca.com", true }, - { "alexischaussy.xyz", true }, - { "alexismeza.com", true }, - { "alexismeza.com.mx", true }, - { "alexismeza.es", true }, - { "alexismeza.nl", true }, { "alexkott.com", true }, { "alexlouden.com", true }, { "alexmerkel.com", true }, @@ -1984,7 +2089,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alexmroberts.net", true }, { "alexn.org", true }, { "alexpavel.com", true }, - { "alexpotter.net", false }, + { "alexpotter.net", true }, { "alexs.de", true }, { "alexschroeder.ch", true }, { "alexsergeyev.com", true }, @@ -1999,7 +2104,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alexwardweb.com", true }, { "alexyang.me", true }, { "alfa-tech.su", true }, + { "alfaperfumes.com.br", true }, + { "alftrain.com", true }, { "alghanimcatering.com", true }, + { "algoaware.eu", true }, { "algoentremanos.com", true }, { "algofactory.de", true }, { "algolia.com", true }, @@ -2015,16 +2123,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alicemaywebdesign.com.au", true }, { "alicestudio.it", true }, { "alicetone.net", true }, - { "alicialab.org", true }, { "alienation.biz", true }, { "alienflight.com", true }, { "alienslab.net", true }, { "alienstat.com", true }, - { "alignrs.com", true }, { "aliim.gdn", true }, { "alijammusic.com", true }, { "alinasmusicstudio.com", true }, { "alinode.com", true }, + { "aliorange.com", true }, { "alisonisrealestate.com", true }, { "alisonlitchfield.com", true }, { "alistairholland.me", true }, @@ -2036,18 +2143,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aljaspod.hu", true }, { "aljaspod.net", true }, { "aljweb.com", true }, - { "alkel.info", true }, { "all-connect.net", false }, { "all-markup-news.com", true }, { "all4hardware4u.de", true }, - { "allaboutbelgaum.com", false }, { "allaboutfunuk.com", true }, { "allaboutswing.co.uk", true }, { "allaboutswing.com", true }, { "allaboutthekink.org", true }, { "allactioneventhire.co.uk", true }, { "allamericanmuslim.com", true }, + { "allamericanprotection.net", true }, { "allamericatrans.com", true }, + { "allangirvan.net", true }, { "allarmi.roma.it", true }, { "allbenjoy.de", true }, { "allbounceandplay.co.uk", true }, @@ -2064,13 +2171,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alldigitalsolutions.com", true }, { "alle.bg", true }, { "allemobieleproviders.nl", true }, + { "allenosgood.com", true }, { "allenscaravans.co.uk", true }, { "allensun.org", true }, - { "allerbestefreunde.de", true }, { "allesisonline.nl", true }, { "alleskomtgoed.org", true }, { "allesrocknroll.de", true }, { "allforyou.at", true }, + { "allgaragefloors.com", true }, { "allgreenturf.com.au", true }, { "alliance-psychiatry.com", true }, { "alliances-faq.de", true }, @@ -2082,12 +2190,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "allinone-ranking150.com", true }, { "allis.studio", true }, { "alljamin.com", true }, - { "allladyboys.com", true }, { "allmebel.ru", true }, { "allmend-ru.de", true }, { "allns.fr", true }, { "allo-credit.ch", true }, { "allo-symo.fr", true }, + { "allofthestops.com", true }, { "allontanamentovolatili.it", true }, { "allontanamentovolatili.milano.it", true }, { "alloverthehill.com", true }, @@ -2096,6 +2204,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "allpointsblog.com", true }, { "allproptonline.com", true }, { "allroundpvp.net", true }, + { "allsaints.church", true }, { "allsearch.io", true }, { "allshousedesigns.com", true }, { "allstakesupply.com.au", true }, @@ -2104,10 +2213,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "allstarquilts.com", true }, { "allsync.com", true }, { "allsync.nl", true }, + { "allteach.co.uk", true }, { "allthecryptonews.com", true }, { "allthethings.co.nz", true }, { "allthings.me", true }, - { "allthingsblogging.com", true }, { "allthingssquared.com", true }, { "allthingswild.co.uk", true }, { "alltubedownload.net", true }, @@ -2118,6 +2227,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aloesoluciones.com.ar", true }, { "alohapartyevents.co.uk", true }, { "alonetone.com", true }, + { "alorenzi.eu", true }, + { "alp.net.cn", true }, { "alp.od.ua", true }, { "alpca.org", true }, { "alpe-d-or.dyn-o-saur.com", true }, @@ -2136,10 +2247,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alphabouncycastles.co.uk", true }, { "alphabrock.cn", true }, { "alphachat.net", true }, + { "alphadote.com", true }, { "alphaetomega3d.fr", true }, { "alphafiduciaryservices.ch", true }, { "alphafitnesslibya.com", true }, + { "alphagateanddoor.com", true }, { "alphainflatablehire.com", true }, + { "alphaman.ooo", true }, { "alphapengu.in", true }, { "alpharotary.com", true }, { "alphasall.com", true }, @@ -2164,10 +2278,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alstroemeria.org", true }, { "alt-three.com", true }, { "alt.org", true }, + { "altapina.com", true }, { "altaplana.be", true }, { "altedirect.com", true }, { "alter-news.fr", true }, - { "altered.network", true }, + { "alterbaum.net", true }, { "alternador.com.br", true }, { "alternative.bike", true }, { "alternativebit.fr", true }, @@ -2181,25 +2296,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "altmaestrat.es", true }, { "altoa.cz", true }, { "altonblom.com", true }, - { "altoneum.com", true }, { "altopartners.com", true }, { "altopia.com", true }, { "altphotos.com", true }, - { "altruistgroup.net", true }, { "alts.li", true }, { "altstipendiaten.de", true }, { "alttrackr.com", true }, { "altunbas.info", true }, { "alumni-kusa.jp", true }, - { "aluoblog.pw", true }, - { "aluoblog.top", false }, { "alupferd.de", true }, { "aluroof.eu", true }, { "alvcs.com", true }, { "alviano.com", true }, { "alvicom.hu", true }, { "alvis-audio.com", true }, - { "alvn.ga", true }, { "alvosec.com", true }, { "alwaysdry.com.au", true }, { "alwayslookingyourbest.com", true }, @@ -2218,7 +2328,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "am2s.fr", true }, { "am3.se", true }, { "ama.ne.jp", true }, - { "amadoraslindas.com", true }, { "amadvice.com", true }, { "amaforro.com", true }, { "amagdic.com", true }, @@ -2232,8 +2341,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "amandasage.ca", true }, { "amani-kinderdorf.de", true }, { "amaresq.com", true }, - { "amateri.com", true }, - { "amateurvoicetalent.com", true }, + { "amateurchef.co.uk", true }, + { "amateurradionotes.com", true }, + { "amati.solutions", true }, { "amato.tk", true }, { "amatsuka.com", true }, { "amauf.de", true }, @@ -2264,9 +2374,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "amees.me", false }, { "amelandadventure.nl", true }, { "amello.de", true }, + { "amend-friseur-schwabing.de", true }, { "america.gov", true }, { "americafamilylawcenter.org", true }, { "american.dating", true }, + { "americandetour.com", true }, { "americanfoundationbr.com", true }, { "americanmediainstitute.com", true }, { "americasbasementcontractor.com", true }, @@ -2276,14 +2388,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "amerika-forum.de", true }, { "amerimarkdirect.com", true }, { "amerimex.cc", true }, + { "ameschristian.net", true }, { "amesgen.de", true }, { "amesvacuumrepair.com", true }, { "amethystdevelopment.co.uk", true }, - { "ameza.co.uk", true }, - { "ameza.com.mx", true }, - { "ameza.io", true }, - { "ameza.me", true }, - { "ameza.net", true }, { "amf.to", true }, { "amg-exterieur.fr", true }, { "amg-microwave.com", true }, @@ -2292,22 +2400,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "amicalecanyon.ch", true }, { "amiciidogrescue.org.uk", true }, { "amielucha.com", true }, + { "amifoundation.net", true }, { "amikootours.com", true }, - { "amin.ga", true }, - { "amin.one", true }, { "aminafrance.com", true }, { "amineptine.com", true }, + { "aminorth.com", true }, + { "amionvpn.com", true }, { "amirautos.com", true }, { "amirmahdy.com", true }, { "amisderodin.fr", true }, { "amisharingstuff.com", true }, + { "amitabhsirkiclasses.org.in", true }, { "amitpatra.com", true }, + { "amiu.org", true }, { "ammanagingdirectors.com", true }, { "amministratore.biz", true }, { "amministratore.roma.it", true }, { "amministratorecondominio.roma.it", true }, + { "amnesty-bf.org", true }, { "amnesty.org.au", true }, { "amnesy.fr", true }, + { "amoozesh98.com", true }, + { "amoozesh98.ir", true }, { "amorgos-aegialis.com", true }, { "amorim.ca", true }, { "amosng.com", true }, @@ -2319,6 +2433,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "amrcaustin.com", true }, { "amrcla.com", true }, { "ams.co.rs", true }, + { "amsportuk.com", true }, { "amsterdamian.com", true }, { "amuq.net", true }, { "amuraimpianti.it", true }, @@ -2329,28 +2444,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "amzn.rocks", true }, { "anacreon.de", true }, { "anadiyogacentre.com", true }, - { "anadoluefessk.org", true }, - { "anaiscoachpersonal.es", true }, - { "anaisypirueta.es", true }, + { "anaethelion.fr", true }, { "anajianu.ro", true }, - { "analangelsteen.com", true }, { "analbleachingguide.com", true }, { "analgesia.net", true }, { "analisilaica.it", true }, { "analogist.net", true }, - { "analteengirls.net", true }, { "analyticsinmotion.com", true }, + { "analyticum.at", true }, + { "analyticum.com", true }, + { "analyticum.de", true }, + { "analyticum.eu", true }, + { "analyticum.net", true }, { "ananas.gq", true }, { "ananke.io", true }, { "anankecosmetics.com", true }, { "anantshri.info", true }, { "ananyoo.com", true }, { "anarchistischegroepnijmegen.nl", false }, + { "anarchyrp.life", true }, { "anassiriphotography.com", false }, { "anastasia-shamara.ru", true }, { "ancestramil.fr", true }, { "anchev.net", true }, { "anchovy.nz", false }, + { "ancientcraft.eu", true }, { "ancientnorth.com", true }, { "ancientnorth.nl", true }, { "ancolies-andre.com", true }, @@ -2368,7 +2486,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "andisadhdspot.com", true }, { "andiscyber.space", true }, { "anditi.com", true }, - { "andoms.fi", true }, { "andre-ballensiefen.de", true }, { "andre-lategan.com", true }, { "andre-otto.com", true }, @@ -2376,15 +2493,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "andrea-m.me", true }, { "andrea-wirthensohn.at", true }, { "andreaboero.it", true }, + { "andreadraghetti.it", true }, { "andreagourmet.it", true }, { "andreahruby.it", true }, { "andreamcnett.com", true }, + { "andreas-hecht.com", true }, { "andreaseracleous.com", true }, { "andreasfeusi.ch", true }, + { "andreashecht-blog.de", true }, { "andreaskrasa.com", true }, { "andreaslicht.nl", true }, { "andreasolsson.se", true }, { "andreasr.com", true }, + { "andree.cloud", true }, { "andrefaber.nl", true }, { "andrehansen.de", true }, { "andrei-nakov.org", true }, @@ -2393,9 +2514,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "andrepicard.de", true }, { "andrespaz.com", true }, { "andreundnina.de", true }, + { "andrew.london", true }, { "andrewbdesign.com", true }, { "andrewdaws.io", true }, { "andrewensley.com", true }, + { "andrewhowden.com", true }, { "andrewimeson.com", true }, { "andrewin.ru", true }, { "andrewmichaud.com", true }, @@ -2416,6 +2539,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "androidkatalog.cz", true }, { "androidnovinky.cz", true }, { "androidservicetool.com", true }, + { "androidsis.com", true }, { "androidtamer.com", true }, { "androidtelefony.cz", true }, { "androidzone.me", true }, @@ -2423,22 +2547,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "androticsdirect.com", true }, { "andruvision.cz", true }, { "andsat.org", true }, - { "andschwa.com", true }, + { "andschwa.com", false }, { "andso.cn", true }, - { "anduril.de", true }, - { "anduril.eu", true }, { "andybrett.com", true }, { "andyc.cc", true }, { "andycloud.dynu.net", true }, { "andycrockett.io", true }, { "andymoore.info", true }, { "andys-place.co.uk", true }, + { "andysroom.dynu.net", true }, { "andyt.eu", true }, { "andzia.art.pl", true }, { "anedot-sandbox.com", true }, { "anedot.com", true }, { "anedot.space", true }, { "anedot.xyz", true }, + { "aneebahmed.com", true }, { "anegabawa.com", true }, { "anetaben.nl", true }, { "anextraordinaryday.net", true }, @@ -2448,6 +2572,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "angelesydemonios.es", true }, { "angelicare.co.uk", true }, { "angelinahair.com", true }, + { "angeloryndon.com", true }, { "angelremigene.com", true }, { "angelsgirl.eu.org", true }, { "anginf.de", true }, @@ -2461,10 +2586,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "angrapa.ru", true }, { "angristan.fr", true }, { "angristan.xyz", true }, - { "angrut.com", true }, { "angry.im", true }, + { "angrylab.com", true }, { "angrysnarl.com", true }, - { "angryteeth.net", true }, + { "angryteeth.net", false }, { "anguiao.com", true }, { "angularjs.org", false }, { "angusmak.com", true }, @@ -2476,11 +2601,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "animacurse.moe", true }, { "animaemundi.be", true }, { "animal-liberation.com", true }, - { "animal-nature-human.com", true }, { "animal-rights.com", true }, { "animalistic.io", true }, { "animaltesting.fr", true }, { "animan.ca", true }, + { "animatelluris.nl", true }, { "animationsmusicales.ch", true }, { "anime-culture.com", true }, { "anime-rg.com", true }, @@ -2491,20 +2616,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "anime1.pw", true }, { "animeai.com", true }, { "animefluxxx.com", true }, + { "animeinsights.net", true }, { "animesharp.com", true }, { "animetriad.com", true }, { "animojis.es", true }, { "animorphsfanforum.com", true }, - { "anipassion.com", true }, + { "anipassion.com", false }, { "anitaalbersen.nl", true }, { "anitube.ch", true }, { "aniwhen.com", true }, + { "anjoola.com", true }, { "ankarakart.com.tr", true }, { "ankaraprofesyonelwebtasarim.com", true }, { "ankarauzmanlarnakliyat.com", true }, { "ankarayilmaznakliyat.com", true }, { "ankarayucelnakliyat.com", true }, { "ankenbrand.me", true }, + { "ankitpati.in", true }, { "ankiuser.net", true }, { "ankiweb.net", true }, { "ankwanoma.com", true }, @@ -2525,6 +2653,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "annawagner.pl", true }, { "annedaniels.co.uk", true }, { "annejan.com", true }, + { "anneliesonline.nl", true }, { "annemakeslovelycandles.co.uk", true }, { "annetta.com", true }, { "annettewindlin.ch", true }, @@ -2535,13 +2664,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "annonasoftware.com", true }, { "annotate.software", true }, { "annoyingasfuk.com", true }, + { "annrusnak.com", true }, { "annuaire-jcb.com", true }, { "annuaire-photographe.fr", false }, { "anohana.org", true }, { "anojan.com", true }, { "anon-next.de", true }, { "anoncom.net", true }, - { "anoneko.com", true }, + { "anoneko.com", false }, { "anongoth.pl", true }, { "anons.fr", true }, { "anonukradio.org", true }, @@ -2561,6 +2691,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ansermet.net", true }, { "ansgar-sonntag.de", true }, { "ansgarsonntag.de", true }, + { "anshar.eu", true }, { "ansibeast.net", true }, { "ansichtssache.at", true }, { "ansogning-sg.dk", true }, @@ -2581,16 +2712,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "anteprima.info", true }, { "anthedesign.fr", true }, { "anthisis.tv", true }, - { "anthony-rouanet.com", true }, { "anthony.codes", true }, { "anthonyaires.com", true }, { "anthonycarbonaro.com", true }, + { "anthonyfontanez.com", true }, { "anthonygaidot.fr", true }, + { "anthonyvadala.me", true }, { "anthropoid.ca", true }, { "anti-bible.com", true }, { "anti-radar.org", true }, { "antibioticshome.com", true }, { "anticopyright.com", true }, + { "antiekboerderijgraafland.nl", true }, { "antihype.space", true }, { "antik-trodelmarkt.de", true }, { "antikvariat.ru", true }, @@ -2599,7 +2732,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "antimine.me", true }, { "antipolygraph.org", true }, { "antique-pedalcars.ch", true }, - { "antirayapmalang.com", true }, { "antirepressionbayarea.com", true }, { "antispeciesism.com", true }, { "antispeciesist.com", true }, @@ -2618,6 +2750,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "antragsgruen.de", true }, { "antroposofica.com.br", true }, { "antyblokada.pl", true }, + { "anulowano.pl", true }, { "anvartay.com", true }, { "anwaltsindex.com", true }, { "anxietyspace.com", true }, @@ -2631,20 +2764,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "anyprime.net", true }, { "anyquestions.govt.nz", true }, { "anystack.xyz", true }, - { "anyways.at", true }, { "anzeiger.ag", true }, { "ao-dev.com", true }, { "ao2.it", true }, + { "aoa.gov", true }, + { "aoadatacommunity.us", true }, { "aoaprograms.net", true }, + { "aofusa.net", true }, { "aoku3d.com", true }, - { "aomonk.com", true }, { "aopedeure.nl", true }, { "aopsy.de", true }, + { "aos-llc.com", true }, { "aosc.io", false }, { "aosus.org", true }, { "aotearoa.maori.nz", true }, { "aotearoaleaks.org", true }, { "ap-swiss.ch", true }, + { "apac-tech.com", false }, { "apache-portal.com", true }, { "apachehaus.de", false }, { "apadvantage.com", true }, @@ -2660,7 +2796,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "apdx.com", true }, { "apef.ch", true }, { "apercloud.es", true }, - { "aperim.com", true }, { "apertis.org", true }, { "aperturesciencelabs.de", true }, { "apervita.net", true }, @@ -2689,11 +2824,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "apiled.io", true }, { "apination.com", true }, { "apio.systems", true }, - { "apis.blue", true }, { "apis.google.com", true }, { "apis.moe", true }, { "apisyouwonthate.com", true }, - { "apivia.fr", true }, { "apk.li", true }, { "apk4fun.com", true }, { "aplikaceproandroid.cz", true }, @@ -2703,7 +2836,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "apmpproject.org", true }, { "apn-dz.org", true }, { "apn-einstellungen.de", true }, + { "apo-deutschland.biz", true }, { "apobot.de", true }, + { "apogeephoto.com", true }, { "apoil.org", true }, { "apollyon.work", true }, { "apoly.de", true }, @@ -2712,6 +2847,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aposke.com", true }, { "aposke.net", true }, { "aposke.org", true }, + { "apostilasaprovacao.com", true }, { "apotheke-ch.org", true }, { "apothes.is", true }, { "app-at.work", true }, @@ -2743,12 +2879,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "appleranch.com", true }, { "applesana.es", true }, { "applesencia.com", true }, - { "applewatch.co.nz", true }, { "applian.jp", true }, - { "appliancerepairlosangeles.com", true }, { "applicationmanager.gov", true }, { "apply.eu", true }, - { "apply55gx.com", true }, { "appmeas.co.uk", true }, { "appmobile.io", true }, { "appninjas.com", true }, @@ -2784,9 +2917,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aprr.org", true }, { "aprsdroid.org", true }, { "aprz.de", true }, + { "apsa.paris", true }, { "apstudynotes.org", true }, + { "aptitudetests.org", true }, { "apu-board.de", true }, { "apv-ollon.ch", true }, + { "aqdun.com", true }, { "aqilacademy.com.au", true }, { "aqsiq.net", true }, { "aqua-fitness-nacht.de", true }, @@ -2795,6 +2931,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aquabio.ch", true }, { "aquadonis.ch", true }, { "aquahomo.com", true }, + { "aquainfo.net", true }, { "aqualife.com.gr", true }, { "aqualifeprojects.com", true }, { "aqualysis.nl", true }, @@ -2805,20 +2942,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aquatechnologygroup.com", true }, { "aquaundine.net", true }, { "aquavitaedayspa.com.au", true }, + { "aquelarreweb.com", true }, { "aquila.co.uk", true }, { "aquitainebrasserie.com.au", true }, { "aquitroc.com", true }, { "ar-informatique.ch", true }, { "arab.dating", true }, - { "arabsexi.info", true }, + { "arabicxz.com", true }, { "arachina.com", true }, { "arados.de", true }, { "arai21.net", true }, { "araleeniken.com", true }, { "aramado.com", true }, { "aramido.de", true }, - { "aranel.me", true }, { "aranycsillag.net", true }, + { "araraexpress.com.br", true }, { "araratour.com", true }, { "araro.ch", true }, { "araseifudousan.com", true }, @@ -2826,6 +2964,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "arawaza.com", false }, { "arawaza.info", true }, { "araxis.com", true }, + { "arbeitsch.eu", true }, { "arbeitskreis-asyl-eningen.de", true }, { "arbeitslosenverwaltung.de", true }, { "arbejdsdag.dk", true }, @@ -2838,24 +2977,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "arcenergy.co.uk", true }, { "archimedicx.com", true }, { "archined.nl", true }, - { "architectdirect.nl", false }, + { "architectryan.com", true }, { "archivero.es", true }, { "archivesdelavieordinaire.ch", true }, { "archlinux.de", true }, { "archlinux.org", true }, + { "arclandholdings.com.au", true }, { "arcobalabs.ca", true }, { "arcridge.ca", true }, { "arctic.gov", true }, { "arcueil-cachan.fr", false }, { "arcusnova.de", true }, { "arda-audio.pt", true }, - { "ardor.noip.me", true }, { "ardtrade.ru", true }, { "area4pro.com", true }, { "area536.com", true }, { "areaclienti.net", true }, { "areafiftylan.nl", true }, { "areatrend.com", true }, + { "arefidgetspinnersgay.com", true }, { "arekatieandchrisgettingmarried.com", true }, { "arekatieandchrisgettingmarried.today", true }, { "arekatieandchrismarriedyet.com", true }, @@ -2865,9 +3005,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "arenns.com", true }, { "areqgaming.com", true }, { "ares-trading.de", true }, - { "arethsu.se", true }, { "arfad.ch", true }, { "arg.zone", true }, + { "argama-nature.com", true }, { "arganaderm.ch", true }, { "argb.de", true }, { "argekultur.at", true }, @@ -2876,8 +3016,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ariaartgallery.com", true }, { "ariadermspa.com", true }, { "arian.io", true }, + { "arias.re", true }, { "ariba.info", true }, - { "ariege-pyrenees.net", true }, { "arieswdd.com", true }, { "arigato-java.download", true }, { "arijitdg.net", true }, @@ -2888,11 +3028,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "arise19.com", true }, { "arisevendor.net", true }, { "aristilabs.com", true }, - { "aristocrates.co", true }, - { "aristocratps.com", true }, { "aritec-la.com", true }, { "arivo.com.br", true }, + { "arizer.com", true }, { "arizonaautomobileclub.com", true }, + { "arizonabondedtitle.com", true }, { "arjandejong.eu", true }, { "arjanvaartjes.net", true }, { "arjunasdaughter.pub", true }, @@ -2906,12 +3046,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "arlen.tv", true }, { "arlenarmageddon.com", true }, { "arlet.click", true }, + { "arletalibrary.com", true }, { "arm-host.com", true }, { "armadaquadrat.com", true }, { "armandsdiscount.com", true }, + { "armanozak.com", true }, { "armansfinejewellery.com", true }, { "armansfinejewellery.com.au", true }, { "armarinhovirtual.com.br", true }, + { "armbrust.me", true }, { "armedpoet.com", true }, { "armeni-jewellery.gr", true }, { "armil.it", true }, @@ -2925,6 +3068,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "arnaudb.net", true }, { "arnaudfeld.de", true }, { "arnaudminable.net", true }, + { "arne.codes", true }, + { "arnevankauter.com", true }, { "arniescastles.co.uk", true }, { "arno-klein.de", true }, { "arno-klein.eu", true }, @@ -2942,31 +3087,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aromacos.ch", true }, { "aron.host", true }, { "aroonchande.com", true }, + { "aros.pl", true }, + { "arose.io", true }, { "arox.eu", true }, + { "arpamip.org", true }, + { "arpnet.co.jp", true }, { "arqueo-ecuatoriana.ec", true }, { "arquitetura.pt", true }, { "arrakis.se", true }, + { "arrazane.com.br", true }, + { "arresttracker.com", true }, { "arrive.by", true }, { "arrmaforum.com", true }, { "arrow-analytics.nl", true }, { "arrow-api.nl", true }, { "arrowfastener.com", true }, { "arrowheadaddict.com", true }, + { "arrowheadflats.com", true }, { "arrowwebprojects.nl", true }, { "arschkrebs.org", true }, - { "arswb.men", true }, { "art-auction.jp", true }, { "art-et-culture.ch", true }, { "artansoft.com", true }, { "artboja.com", true }, { "artdeco-photo.com", true }, - { "artea.ga", true }, - { "arteaga.co.uk", true }, - { "arteaga.eu", true }, - { "arteaga.me", true }, - { "arteaga.tech", true }, - { "arteaga.uk", true }, - { "arteaga.xyz", true }, { "artecat.ch", true }, { "artedellavetrina.it", true }, { "artedona.com", true }, @@ -2981,12 +3125,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "artforum.sk", true }, { "artfullyelegant.com", true }, { "arthermitage.org", true }, - { "arthur.cn", true }, { "arthurlaw.ca", true }, + { "artificial.army", true }, { "artik.cloud", true }, { "artimpact.ch", true }, { "artioml.net", true }, { "artionet.ch", true }, + { "artisan-cheminees-poeles-design.fr", true }, { "artisans-libres.com", true }, { "artisansoftaste.com", true }, { "artistagenda.com", true }, @@ -3009,6 +3154,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "arts.gov", true }, { "artschmidtoptical.com", true }, { "artspac.es", true }, + { "arturkohut.com", true }, { "arturrossa.de", true }, { "arturszalak.com", true }, { "artweby.cz", true }, @@ -3017,10 +3163,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "arubasunsetbeach.com", true }, { "arveron.ch", true }, { "arvid.io", true }, + { "arviksa.co.uk", true }, { "arvindhariharan.com", true }, + { "arvindhariharan.me", true }, { "arvutiladu.ee", true }, { "arw.me", true }, - { "arxell.com", true }, { "aryan-nation.com", true }, { "aryasenna.net", true }, { "arzid.com", true }, @@ -3034,6 +3181,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "asandu.eu", true }, { "asanger.biz", true }, { "asato-jewelry.com", true }, + { "asbestosthedarkarts.com", true }, { "asbito.de", true }, { "ascamso.com", true }, { "ascendprime.com", true }, @@ -3046,6 +3194,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "asdyx.de", true }, { "asec01.net", true }, { "aseith.com", true }, + { "aseko.gr", true }, { "asenno.com", true }, { "aserver.co", true }, { "asexualitat.cat", true }, @@ -3054,6 +3203,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ashd1.goip.de", true }, { "ashd2.goip.de", true }, { "ashd3.goip.de", true }, + { "ashleyedisonuk.com", true }, { "ashlocklawgroup.com", true }, { "ashmportfolio.com", true }, { "ashutoshmishra.org", true }, @@ -3063,11 +3213,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "asiaheavens.com", true }, { "asialeonding.at", true }, { "asian-industry.eu", true }, - { "asianodor.com", true }, { "asianshops.net", true }, { "asianspa.co.uk", true }, { "asiba.com.au", true }, - { "asiesvenezuela.com", true }, { "asile-colis.fr", true }, { "asinetasima.com", true }, { "asisee.photography", true }, @@ -3083,7 +3231,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aslinfinity.com", true }, { "asmbsurvey.com", true }, { "asmdz.com", true }, - { "asmik-armenie.com", true }, + { "asmm.cc", true }, { "asmood.net", true }, { "asoul.tw", true }, { "aspargesgaarden.no", true }, @@ -3091,10 +3239,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aspcl.ch", true }, { "aspectcontext.com", true }, { "asperti.com", true }, + { "asphyxia.su", true }, { "aspiescentral.com", true }, { "aspirateur-anti-pollution.fr", true }, { "aspires.co.jp", true }, { "aspisdata.com", true }, + { "asproni.it", true }, { "asr.cloud", true }, { "asr.li", true }, { "asr.rocks", true }, @@ -3110,7 +3260,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "assguidesporrentruy.ch", true }, { "assign-it.co.uk", true }, { "assistance-personnes-agees.ch", true }, - { "assistcart.com", true }, + { "assistel.com", true }, { "assistenzaferrodastiro.org", true }, { "assistenzafrigorifero.org", true }, { "assistenzalavatrice.org", true }, @@ -3126,6 +3276,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "astengox.com", true }, { "astenotarili.online", true }, { "astenretail.com", true }, + { "astral-imperium.uk", true }, { "astral.org.pl", true }, { "astrology42.com", true }, { "astroscopy.ch", true }, @@ -3141,10 +3292,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "asvsa.ch", true }, { "asws.nl", true }, { "asystent-dzierzawy.pl", true }, + { "at-one.ca", true }, { "at.search.yahoo.com", false }, { "atac.no", true }, { "atacadocervejeiro.com.br", true }, - { "atacadodesandalias.com.br", true }, { "ataton.ch", true }, { "atc.io", true }, { "atchleyjazz.com", true }, @@ -3163,6 +3314,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "atelierdefrancais.ch", true }, { "atelierdeloulou.fr", true }, { "atelierdesflammesnoires.fr", true }, + { "atelierfantazie.sk", true }, { "atelierhupsakee.nl", true }, { "ateliernaruby.cz", true }, { "ateliers-veronese-nantes.fr", true }, @@ -3175,11 +3327,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "atgroup.gr", true }, { "atgseed.co.uk", true }, { "atgseed.uk", true }, - { "ath0.org", true }, { "atheist-refugees.com", true }, { "athena-bartholdi.com", true }, { "athena-garage.co.uk", true }, { "athenadynamics.com", true }, + { "athenaneuro.com", true }, { "atheoryofchange.com", true }, { "atherosense.ga", true }, { "athlin.de", true }, @@ -3193,7 +3345,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "atisoft.web.tr", true }, { "atitude.com", true }, { "ativapsicologia.com.br", true }, - { "atk.me", true }, { "atl-paas.net", true }, { "atlantahairsurgeon.com", true }, { "atlantareroof.com", true }, @@ -3203,7 +3354,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "atlantischild.hu", true }, { "atlantishq.de", true }, { "atlantiswaterproofing.com", true }, - { "atlas.co", true }, { "atlaschiropractic.org", true }, { "atlascultural.com", true }, { "atlasdev.nl", true }, @@ -3211,7 +3361,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "atlassian.io", true }, { "atlassignsandplaques.com", true }, { "atletika.hu", true }, - { "atmocdn.com", true }, { "atmschambly.com", true }, { "atnis.com", true }, { "ato4sound.com", true }, @@ -3228,11 +3377,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "atpnutrition.com", true }, { "atraining.ru", true }, { "atraverscugy.ch", true }, - { "atrevillot.com", true }, { "atrinik.org", true }, { "atsoftware.de", true }, { "attac.us", true }, { "atte.fi", true }, + { "attelage.net", true }, { "attendantdesign.com", true }, { "attendu.cz", true }, { "attention.horse", true }, @@ -3245,7 +3394,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "attwood.org", true }, { "atulhost.com", true }, { "atviras.lt", false }, + { "atvirtual.at", true }, { "atwonline.org", true }, + { "atxchirocoverage.com", true }, + { "atyourprice.net", true }, { "atypicom.es", true }, { "atypicom.fr", true }, { "atypicom.it", true }, @@ -3279,10 +3431,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "audisto.com", true }, { "auditmatrix.com", true }, { "auditos.com", true }, + { "audits.io", true }, { "auditsquare.com", true }, { "auerbach-verlag.de", true }, { "auf-feindgebiet.de", true }, - { "augaware.org", true }, { "augen-seite.de", true }, { "augiero.it", true }, { "augmentable.de", true }, @@ -3310,15 +3462,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "auroraassociationofrealtors.com", true }, { "aurosa.cz", true }, { "auroware.com", true }, + { "auroz.tech", true }, + { "auroz.video", true }, { "aus-ryugaku.info", true }, { "ausmwoid.de", true }, { "aussiefunadvisor.com", true }, + { "aussiegreenmarks.com.au", true }, { "aussieservicedown.com", true }, { "aussiestoresonline.com", true }, + { "austenplumbing.com", true }, { "austin-pearce.com", true }, { "austin-security-cameras.com", true }, { "austincardiac.com", true }, - { "austinheap.com", true }, + { "austinheap.com", false }, + { "austinlockout.com", true }, + { "austintxacrepairtoday.com", true }, + { "austintxlocksmiths.com", true }, { "austinuniversityhouse.com", true }, { "australian.dating", true }, { "australianarmedforces.org", true }, @@ -3333,7 +3492,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "authinity.com", true }, { "author24.biz", true }, { "authoritysolutions.com", true }, - { "authorsguild.in", true }, { "autimatisering.nl", true }, { "auto-anleitung.de", true }, { "auto-motor-i-sport.pl", true }, @@ -3342,6 +3500,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "auto.nl", true }, { "autoauctionsohio.com", true }, { "autoauctionsvirginia.com", true }, + { "autobahnco.com", true }, { "autobedrijfgarant.nl", true }, { "autobelle.it", true }, { "autobourcier.com", true }, @@ -3352,6 +3511,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "autocrypt.org", true }, { "autod.hu", true }, { "autodalmacija.com", true }, + { "autodidactic.ai", true }, + { "autodidacticstudios.com", true }, + { "autodidacticstudios.net", true }, + { "autodidacticstudios.org", true }, { "autoentrepreneurinfo.com", true }, { "autoepc.ro", true }, { "autoinsurancehavasu.com", true }, @@ -3364,15 +3527,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "automationpro.me", true }, { "automotivegroup-usedcars.be", true }, { "automotivemechanic.org", true }, + { "automoto-tom.net", true }, { "autoosijek.com", true }, { "autopapo.com.br", true }, { "autoparts.im", true }, { "autoparts.sh", true }, { "autoparts.wf", true }, { "autoprice.info", true }, + { "autoprogconsortium.ga", true }, { "autorando.com", true }, { "autoschadeschreuder.nl", true }, { "autoscuola.roma.it", true }, + { "autosecurityfinance.com", true }, { "autoshinka72.ru", true }, { "autoshopsolutions.com", true }, { "autoshun.org", true }, @@ -3392,7 +3558,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aux-arts-de-la-table.com", true }, { "auxquatrevents.ch", true }, { "av-yummy.com", true }, - { "av01.tv", true }, { "av0ndale.de", true }, { "ava-creative.de", false }, { "ava-software.at", true }, @@ -3400,6 +3565,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "avabouncehire.co.uk", true }, { "avacariu.me", true }, { "availablecastles.com", true }, + { "avalon-island.ru", true }, { "avalon-rpg.com", true }, { "avalon-studios.de", true }, { "avanet.ch", true }, @@ -3423,17 +3589,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "averen.co.uk", true }, { "avernis.de", true }, { "avexon.com", true }, + { "avi9526.pp.ua", true }, { "avia-krasnoyarsk.ru", true }, { "avia-ufa.ru", true }, { "aviapoisk.kz", true }, { "aviationstrategy.aero", true }, { "avid.blue", true }, + { "avidmode-dev.com", true }, + { "avidmode-staging.com", true }, + { "avidmode.com", true }, + { "avidthink.com", true }, { "avietech.com", true }, { "aviv.nyc", true }, { "avlhostel.com", true }, - { "avmemo.com", true }, - { "avmoo.com", true }, - { "avnet.ws", true }, { "avocadooo.stream", true }, { "avocatbeziau.com", true }, { "avocode.com", true }, @@ -3449,12 +3617,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "avtovokzaly.ru", true }, { "avv.li", true }, { "avvcorda.com", true }, + { "avvocato.bologna.it", true }, { "awaremi-tai.com", true }, { "awaresec.com", true }, { "awaresec.no", true }, { "awaro.net", true }, { "awbouncycastlehire.com", true }, - { "awccanadianpharmacy.com", true }, { "awen.me", true }, { "awesomebouncycastles.co.uk", true }, { "awesomesit.es", true }, @@ -3477,12 +3645,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "axiomer.me", true }, { "axiomer.net", true }, { "axiomer.org", true }, + { "axis-stralis.co.uk", true }, + { "axisfleetmanagement.co.uk", true }, { "axka.com", false }, - { "axolotlfarm.org", true }, { "axonholdingse.eu", true }, { "axrec.de", true }, - { "axtudo.com", true }, - { "axtux.tk", true }, + { "axtudo.com", false }, { "ayanomimi.com", true }, { "aycomba.de", true }, { "ayesh.me", true }, @@ -3491,18 +3659,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aylak.com", true }, { "aylesburycastlehire.co.uk", true }, { "aymerick.fr", true }, - { "aymericlagier.com", true }, - { "ayon.group", true }, { "ayothemes.com", true }, { "ayrohq.com", true }, { "ayrshirebouncycastlehire.co.uk", true }, { "ayumindev.net", true }, { "ayurveda-mantry.com", true }, + { "az-moga.bg", true }, { "az.search.yahoo.com", false }, + { "azabani.com", true }, { "azadliq.info", true }, { "azazy.net", false }, { "azgfd.com", true }, + { "aziende.com.ar", true }, { "azimut.fr", true }, + { "azizfirat.com", true }, + { "azizvicdan.com", true }, { "azlk-team.ru", true }, { "azort.com", true }, { "azrazalea.net", true }, @@ -3511,8 +3682,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aztrix.me", true }, { "azu-l.com", true }, { "azu-l.jp", true }, - { "azun.pl", true }, - { "azuxul.fr", true }, + { "azuki.cloud", true }, + { "azurecrimson.com", true }, + { "azuriasky.com", true }, + { "azuriasky.net", true }, { "azzag.co.uk", true }, { "azzorti.com", true }, { "azzurrapelletterie.it", true }, @@ -3529,6 +3702,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "b0618.net", true }, { "b0868.com", true }, { "b0868.net", true }, + { "b0k.org", true }, { "b0rk.com", true }, { "b1.work", true }, { "b1758.com", true }, @@ -3541,10 +3715,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "b1rd.tk", true }, { "b2486.com", true }, { "b2486.net", true }, - { "b2and.com", false }, { "b2bmuzikbank.com", true }, { "b303.me", true }, - { "b422edu.com", true }, { "b4bouncycastles.co.uk", true }, { "b4ckbone.de", true }, { "b4r7.de", true }, @@ -3555,8 +3727,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "b5289.net", true }, { "b5989.com", true }, { "b5989.net", true }, - { "b61688.com", true }, { "b64.club", true }, + { "b72.com", true }, + { "b72.net", true }, { "b8591.com", true }, { "b8591.net", true }, { "b8979.com", true }, @@ -3628,10 +3801,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "b9948.com", true }, { "b9948.net", true }, { "b9960.com", true }, - { "b99881.com", true }, - { "b99882.com", true }, - { "b99883.com", true }, - { "b99885.com", true }, { "b99886.com", true }, { "b9best.cc", true }, { "b9best.net", true }, @@ -3647,20 +3816,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "babarkata.com", true }, { "babeleo.com", true }, { "baby-digne.com", true }, + { "baby-fotografie-muenchen.de", true }, + { "babybauch-shooting-muenchen.de", true }, { "babyboom.pl", true }, { "babycamapp.com", true }, { "babyfotograf-schweiz.ch", true }, { "babymasaze.cz", true }, { "babyphototime.com", true }, { "babypibu.com", true }, + { "babyshoprimini.com", true }, { "bacgrouppublishing.com", true }, { "bachata.info", true }, { "baches-piscines.com", true }, { "baciu.ch", true }, { "backeby.eu", true }, - { "backlogapp.io", true }, { "backmountaingas.com", true }, - { "backpacken.org", true }, { "backpacker.dating", true }, { "backschues.com", true }, { "backschues.de", true }, @@ -3669,11 +3839,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "backterris.com", true }, { "backtest.org", true }, { "backupcloud.ru", true }, - { "backupsinop.com.br", true }, { "bacon-monitoring.org", true }, { "baconismagic.ca", true }, { "bacontreeconsulting.com", true }, { "bacoux.com", true }, + { "bacsituvansuckhoe.com", true }, { "bacula.jp", true }, { "bad.horse", true }, { "bad.pet", true }, @@ -3682,14 +3852,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "badblock.fr", true }, { "badboyzclub.de", true }, { "badf00d.de", true }, + { "badgersystems.de", true }, { "badges.fedoraproject.org", true }, { "badges.stg.fedoraproject.org", true }, { "badgesenpatches.nl", true }, - { "badgirlsbible.com", true }, { "badhusky.com", true }, { "badmania.fr", true }, { "badmintonbible.com", true }, { "badoo.com", true }, + { "badoo.de", true }, + { "badoo.eu", true }, + { "badoo.us", true }, { "badpackets.net", true }, { "badrequest.me", true }, { "badseacoffee.com", true }, @@ -3704,14 +3877,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bageluncle.com", true }, { "baggy.me.uk", true }, { "bagheera.me.uk", true }, - { "baglu.com", true }, { "bagsofbounce.co.uk", true }, { "bagspecialist.nl", true }, { "bagstage.de", true }, { "bah.im", false }, { "bahnbonus-praemienwelt.de", true }, + { "bahnenimbild.de", true }, + { "bahnenimbild.eu", true }, { "bahnhelden.de", true }, { "bahninrotweissrot.at", true }, + { "bahnmagazine.de", true }, + { "baiduo.com", true }, { "baifubao.com", true }, { "baiker.info", true }, { "bailakomigo.com.br", true }, @@ -3736,12 +3912,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "baladecommune.ch", true }, { "balancascia.com.br", true }, { "balance7.jp", true }, + { "balancedbrawl.net", true }, { "balancenaturalhealthclinic.ca", true }, { "balboa.io", true }, { "balcaonet.com.br", true }, { "balconnr.com", true }, { "balconsverdun.com", true }, - { "baldur.cc", true }, { "balia.de", true }, { "balicekzdravi.cz", true }, { "balidesignshop.com.br", true }, @@ -3751,28 +3927,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "balivillassanur.com", true }, { "balkonien.org", true }, { "ball.holdings", true }, - { "ballarin.cc", true }, + { "ball3d.es", true }, { "ballejaune.com", true }, { "ballinarsl.com.au", true }, + { "ballitolocksmith.com", true }, { "ballmerpeak.org", true }, { "ballonsportclub-erlangen.de", true }, { "ballotapi.com", true }, { "ballothero.com", true }, { "ballparkbuns.com", false }, { "ballroom.info", true }, - { "balnearionaturaspa.com", true }, { "balslev.io", true }, { "balticnetworks.com", true }, { "bamahammer.com", true }, { "bambooforest.nl", true }, { "bamboorelay.com", true }, { "bambumania.com.br", true }, - { "banburybid.com", true }, + { "bamily.rocks", true }, + { "bananavapes.com", true }, { "bancacrs.it", true }, { "bancaolhares.com.br", true }, { "bancobai.ao", true }, { "bancoctt.pt", true }, - { "bandar303.win", true }, + { "bancor.network", true }, + { "bandagastrica.es", true }, { "bandeira1.com.br", true }, { "bandgap.io", true }, { "bandiga.it", true }, @@ -3781,21 +3959,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bangkok-dark-night.com", true }, { "bangkok.dating", true }, { "bangkokcity.de", true }, - { "bangorfederal.com", true }, + { "bangorfederal.com", false }, { "bangumi.co", true }, + { "banham.co.uk", true }, + { "banham.com", true }, { "bank.simple.com", false }, { "bankbranchlocator.com", true }, { "bankcardoffer.com", true }, { "bankee.us", true }, { "bankerbuch.de", true }, - { "bankersonline.com", true }, { "banketbesteld.nl", true }, { "bankfreeoffers.com", true }, { "bankgradesecurity.com", true }, { "bankin.com", true }, { "bankinter.pt", true }, { "bankio.se", true }, - { "bankitt.network", true }, { "banknet.gov", true }, { "bankofdenton.com", true }, { "banksiaparkcottages.com.au", true }, @@ -3813,7 +3991,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "baodan666.com", true }, { "baofengtech.com", true }, { "baopublishing.it", true }, - { "baptistboard.com", true }, { "baptistedeleris.fr", true }, { "bar-harcourt.com", true }, { "barabrume.fr", true }, @@ -3823,24 +4000,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "barbarians.com", false }, { "barbaros.info", true }, { "barbate.fr", true }, + { "barbershop-harmony.org", true }, + { "barbershop-lasvillas.com", true }, { "barbu.family", true }, { "barburas.com", true }, { "barcamp.koeln", true }, - { "barcel.com.mx", false }, + { "barcel.com.mx", true }, { "barclays.net", true }, { "barcodeberlin.com", true }, { "barcoderealty.com", true }, + { "bardes.org", true }, + { "bardiharborow.com", true }, { "bardiharborow.tk", true }, + { "baresquare.com", true }, { "barf-alarm.de", true }, { "baripedia.org", true }, { "baris-sagdic.com", true }, { "bariseau-mottrie.be", true }, { "bariskaragoz.nl", true }, + { "baristador.com", true }, { "barkerjr.xyz", true }, { "barlotta.net", true }, { "barnabycolby.io", true }, { "barnel.com", true }, - { "barnrats.com", true }, { "barpodsosnami.pl", true }, { "barracuda.com.tr", true }, { "barrera.io", true }, @@ -3854,15 +4036,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bart-f.com", true }, { "barta.me", true }, { "bartel.ws", true }, - { "bartelldrugs.com", true }, { "bartelt.name", true }, + { "barter4crypto.com", true }, { "barthonia-showroom.de", true }, { "bartlamboo.nl", true }, + { "bartolomebellido.com", true }, { "bartula.de", true }, { "bartzutow.xyz", true }, { "baruch.me", true }, { "bas.co.jp", true }, - { "bascht.com", true }, { "base-autonome-durable.com", true }, { "baseballrampage.com", true }, { "baseballsavings.com", true }, @@ -3874,19 +4056,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "basementdoctor.com", true }, { "basementdoctornorthwest.com", true }, { "basementfinishingohio.com", true }, + { "basercap.co.ke", true }, + { "bashing-battlecats.com", true }, { "bashstreetband.co.uk", true }, { "basicapparel.de", true }, { "basicattentiontoken.org", true }, - { "basilicaknights.org", true }, { "basketball-brannenburg.de", true }, - { "basketsbymaurice.com", false }, { "basnoslovno.com.ua", false }, { "basnoslovno.ru", true }, + { "basonlinemarketing.nl", true }, { "bass-pro.ru", true }, { "bassblog.net", true }, { "bassment.ph", true }, { "bassresource.com", true }, { "bassrider.eu", true }, + { "bassys.com.co", true }, + { "bastadigital.com", true }, { "bastelzauberwelt.de", true }, { "bastianstalder.ch", true }, { "bastiv.com", true }, @@ -3907,11 +4092,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "batistareisfloresonline.com.br", true }, { "batlab.ch", true }, { "batolis.com", true }, - { "batonger.com", true }, { "batook.org", true }, { "batschu.de", true }, - { "batten.eu.org", true }, - { "batteryservice.ru", false }, { "batterystaple.pw", true }, { "battle-game.com", true }, { "battleboxx.com", false }, @@ -3927,24 +4109,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bauthier-occasions.be", true }, { "bautied.de", true }, { "bauunternehmen-herr.de", true }, + { "bauwens.cloud", true }, { "bayareaenergyevents.com", true }, { "baychimo.com", true }, { "bayden.com", true }, + { "bayer-stefan.com", true }, { "bayer-stefan.de", true }, { "bayer-stefan.eu", true }, { "bayerhazard.de", true }, + { "bayerstefan.com", true }, { "bayerstefan.de", true }, { "bayerstefan.eu", true }, { "bayherbalist.com", true }, { "bayilelakiku.com", true }, { "bayly.eu", true }, { "baymard.com", true }, + { "baytalebaa.com", true }, { "baywatch.io", true }, { "bayz.de", true }, + { "bazaarbhaav.com", true }, { "bazaarcompass.com", true }, - { "bazdell.com", false }, + { "bazdell.com", true }, { "bazos.at", true }, { "bazos.cz", true }, + { "bazos.pl", true }, { "bazos.sk", true }, { "bazziergraphik.com", true }, { "bb1718.net", true }, @@ -3953,8 +4141,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bbcastles.com", true }, { "bbgeschenke.ch", true }, { "bbimarketing.com", true }, - { "bbj.io", true }, { "bbka.org.uk", true }, + { "bbkaforum.co.uk", true }, { "bbkworldwide.jp", true }, { "bblove.me", true }, { "bblsa.ch", true }, @@ -3986,15 +4174,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bcmainland.ca", true }, { "bcmguide.com", true }, { "bcmhire.co.uk", true }, - { "bcmlu.org", true }, { "bcnet.com.hk", true }, { "bcpc-ccgpfcheminots.com", true }, { "bcrook.com", true }, + { "bcs.adv.br", true }, { "bcswampcabins.com", true }, { "bcvps.com", true }, { "bd2positivo.com", true }, { "bda-boulevarddesairs.com", true }, - { "bdata.cl", true }, + { "bdbxml.net", true }, { "bdd.fi", true }, { "bdikaros-network.net", true }, { "bdpachicago.tech", true }, @@ -4017,7 +4205,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "be958.info", true }, { "be958.net", true }, { "be958.org", true }, - { "be9966.com", true }, + { "beacham.online", true }, { "beachfutbolclub.com", true }, { "beacinsight.com", true }, { "beadare.com", true }, @@ -4025,10 +4213,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "beaglesecurity.com", true }, { "bealpha.pl", true }, { "beamer-discount.de", true }, + { "beamstat.com", true }, { "beanjuice.me", true }, { "beans-one.com", false }, { "bearcosports.com.br", true }, { "bearded.sexy", true }, + { "beardic.cn", true }, { "bearingworks.com", true }, { "beastowner.li", true }, { "beatfeld.de", true }, @@ -4040,7 +4230,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "beauty24.de", true }, { "beautybear.dk", true }, { "beautyby.tv", true }, - { "beautyconcept.co", false }, { "beautyevent.fr", true }, { "beautykat.ru", true }, { "bebef.de", true }, @@ -4049,8 +4238,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bebest.gov", false }, { "bebetrotteur.com", true }, { "bebout.domains", true }, + { "bebout.pw", true }, { "beckenhamcastles.co.uk", true }, - { "beckerantiques.com", false }, + { "beckerantiques.com", true }, { "beckon.com", true }, { "becoast.fr", true }, { "becs.ch", true }, @@ -4063,6 +4253,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bedfordnissanparts.com", true }, { "bedlingtonterrier.com.br", true }, { "bednar.co", true }, + { "bedrijfsportaal.nl", true }, { "bedrocklinux.org", true }, { "bedste10.dk", true }, { "bee-creative.nl", true }, @@ -4070,6 +4261,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bee.clothing", true }, { "bee.supply", true }, { "bee.tools", true }, + { "beechwoodmetalworks.com", true }, { "beehive.govt.nz", true }, { "beehive42.com", true }, { "beehive42.eu", true }, @@ -4086,8 +4278,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "beekeeping.clothing", true }, { "beekeeping.tools", true }, { "beeksnetwork.nl", true }, - { "beelen.fr", true }, { "beelit.com", true }, + { "beeming.net", true }, { "beercandle.com", true }, { "beergazetteer.com", true }, { "beerians.com", true }, @@ -4096,6 +4288,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "beerjet.ro", true }, { "beerjet.sk", true }, { "beerjetcz.cz", true }, + { "beerly.eu", true }, { "beerradar.no", true }, { "beerradar.party", true }, { "beersconf.com", true }, @@ -4116,10 +4309,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "beginner.nl", true }, { "beginwp.top", true }, { "begoodny.co.il", true }, + { "behamepresrdce.sk", true }, { "behamzdarma.cz", true }, { "behindthethrills.com", true }, { "behna24hodin.cz", true }, { "behoerden-online-dienste.de", true }, + { "beholdthehurricane.com", true }, { "behoreal.cz", true }, { "bei18.com", true }, { "beichtgenerator.de", true }, @@ -4154,6 +4349,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "believersweb.org", true }, { "bell.id.au", true }, { "bella.network", true }, + { "bellamodeling.com", true }, { "belloy.ch", true }, { "belloy.net", true }, { "bellthrogh.com", true }, @@ -4166,7 +4362,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "belvoirbouncycastles.co.uk", true }, { "bely-mishka.by", true }, { "belyvly.com", true }, + { "bemindly.com", true }, { "bemsoft.pl", true }, + { "ben-energy.com", false }, + { "ben-jarvis.co.uk", true }, { "ben-stock.de", true }, { "ben.ninja", true }, { "ben2.co.il", true }, @@ -4190,13 +4389,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "benepiscinas.com.br", true }, { "beneri.se", true }, { "benevita.bio", true }, - { "benevita.life", true }, - { "benevita.live", true }, { "bengalurugifts.com", true }, { "bengisureklam.com", true }, { "benhaney.com", true }, { "benhartmann.de", true }, { "benhavenarchives.org", true }, + { "benjamin-hering.com", true }, { "benjamin.pe", true }, { "benjaminblack.net", true }, { "benjamindietrich.com", true }, @@ -4239,11 +4437,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bequiia.com", true }, { "beranovi.com", true }, { "berasavocate.com", true }, - { "beraten-entwickeln-steuern.de", true }, { "berdaguermontes.eu", false }, { "bergenhave.nl", true }, { "bergevoet-fa.nl", true }, - { "bergfex.at", true }, { "bergfreunde.de", true }, { "bergfreunde.dk", true }, { "bergfreunde.es", true }, @@ -4254,7 +4450,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bergfreunde.no", true }, { "bergfreunde.se", true }, { "berglust-pur.de", true }, - { "bergstoneware.com", true }, + { "bergmann-fotografin-berlin.de", true }, + { "bergmann-fotografin-dortmund.de", true }, + { "bergmann-fotografin-duesseldorf.de", true }, + { "bergmann-fotografin-essen.de", true }, + { "bergmann-fotografin-frankfurt.de", true }, + { "bergmann-fotografin-hamburg.de", true }, + { "bergmann-fotografin-koeln.de", true }, + { "bergmann-fotografin-muenchen.de", true }, + { "bergmann-fotografin-stuttgart.de", true }, { "berichtsheft-vorlage.de", true }, { "berikod.ru", true }, { "berliancom.com", false }, @@ -4267,6 +4471,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bernarddickens.com", true }, { "bernardfischer.fr", true }, { "bernardgo.com", true }, + { "bernat.ch", true }, { "bernat.im", true }, { "bernd-leitner-fotodesign.com", true }, { "bernd-leitner-fotodesign.de", true }, @@ -4275,7 +4480,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bernhardkau.de", true }, { "bernhardluginbuehl.ch", true }, { "bernhardluginbuehl.com", true }, - { "bernieware.de", true }, { "berodes.be", true }, { "berr.yt", true }, { "berra.se", true }, @@ -4313,11 +4517,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bestattungen-kammerer.de", true }, { "bestattungshaus-kammerer.de", true }, { "bestautoinsurance.com", true }, - { "bestbonuses.co.uk", true }, + { "bestbatteriesonline.com", true }, { "bestbrakes.com", true }, { "bestbridal.top", true }, { "bestbyte.com.br", true }, { "bestcellular.com", false }, + { "bestdating.today", true }, { "bestemailmarketingsoftware.org", true }, { "bestesb.com", true }, { "bestesb.net", true }, @@ -4326,14 +4531,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bestfriendsequality.org", true }, { "bestgiftever.ca", true }, { "bestgifts4you.com", true }, + { "bestiahosting.com", true }, { "bestinductioncooktop.us", true }, + { "bestinver.es", true }, + { "bestjumptrampolines.be", true }, { "bestlashesandbrows.com", true }, { "bestlashesandbrows.hu", true }, { "bestmotherfucking.website", true }, { "bestoffert.club", true }, { "bestoliveoils.com", true }, + { "bestparking.xyz", true }, { "bestpartyhire.com", true }, { "bestperfumebrands.com", true }, + { "bestpig.fr", true }, + { "bestschools.io", true }, { "bestseries.tv", true }, { "bestshoesmix.com", true }, { "bestwebsite.gallery", true }, @@ -4347,15 +4558,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "betacavi.com", true }, { "betacloud.io", true }, { "betalenviainternet.nl", true }, + { "betaprofiles.com", true }, { "betaworx.de", true }, { "betaworx.eu", true }, { "betecnet.de", true }, { "betgo9.cc", true }, { "bethanyduke.com", true }, + { "bethpage.net", true }, { "betobaccofree.gov", true }, { "betonbit.com", true }, { "betpamm.com", true }, { "betrallyarabia.com", true }, + { "bets.gg", true }, { "betseybuckheit.com", true }, { "betsyshilling.com", true }, { "bett1.de", true }, @@ -4366,7 +4580,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "betterconsult.com", true }, { "bettercrypto.org", true }, { "betterhelp.com", true }, + { "betterjapanese.blog", true }, + { "betterjapanese.com", true }, { "betterjapanese.org", true }, + { "betterjapanese.xyz", true }, { "betterna.me", true }, { "betterscience.org", true }, { "bettertechinterviews.com", true }, @@ -4396,10 +4613,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bevnut.com", true }, { "bewegungsfluss.com", false }, { "bewerbungsfoto-deinfoto.ch", true }, - { "bewertet.de", true }, { "bewonderen.com", true }, { "bexit.nl", true }, - { "bexithosting.nl", true }, { "bexleycastles.co.uk", true }, { "beybiz.com", true }, { "beylikduzuvaillant.com", true }, @@ -4414,7 +4629,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "beyondweb.net", true }, { "beyonic.com", true }, { "beyours.be", true }, - { "bez-energie.de", true }, { "bezemkast.nl", true }, { "bezpecnostsiti.cf", true }, { "bezr.co.uk", true }, @@ -4429,11 +4643,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bftbradio.com", true }, { "bfw-online.de", true }, { "bg-sexologia.com", true }, - { "bg16.de", true }, { "bgbhsf.top", true }, - { "bgenlisted.com", true }, { "bgeo.io", true }, - { "bgfashion.net", true }, { "bgfoto.info", true }, { "bghost.xyz", true }, { "bgkoleda.bg", true }, @@ -4442,6 +4653,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bgr34.cz", true }, { "bgtgames.com", true }, { "bgtoyou.com", true }, + { "bgwfans.com", true }, { "bh-oberland.de", true }, { "bh.sb", true }, { "bharath-g.in", true }, @@ -4471,9 +4683,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bicranial.io", true }, { "bicycle-events.com", true }, { "biddl.com", true }, - { "bidorbuy.co.ke", true }, + { "biddle.co", true }, { "bidu.com.br", true }, { "bie.edu", false }, + { "biegal.ski", true }, { "biegner-technik.de", true }, { "biehlsoft.info", true }, { "bielefailed.de", true }, @@ -4481,10 +4694,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bienici.com", true }, { "bienoubien.org", true }, { "biensenvue.com", true }, + { "bienstar.tv", true }, { "bierbaumer.net", true }, { "biergaizi.info", true }, { "bieser.ch", true }, { "biester.pro", true }, + { "bieumau.net", true }, { "bifrost.cz", true }, { "biftin.net", true }, { "big-andy.co.uk", true }, @@ -4498,16 +4713,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bigcakes.dk", true }, { "bigclassaction.com", true }, { "bigdinosaur.org", true }, - { "bigfunbouncycastles.com", true }, { "biggreenexchange.com", true }, { "bigio.com.br", true }, { "bigjohn.ru", true }, - { "bigshort.org", true }, + { "biglou.com", false }, + { "bignumworks.com", true }, { "bigsisterchannel.com", true }, { "bigskymontanalandforsale.com", true }, + { "bigwiseguide.com", true }, { "bihub.io", true }, { "biilo.com", true }, - { "bijoux.com.br", true }, { "bijouxbrasil.com.br", true }, { "bijouxcherie.com", true }, { "bijuteriicualint.ro", true }, @@ -4530,6 +4745,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bildiri.ci", true }, { "bildkomponist.de", true }, { "bildschirmflackern.de", true }, + { "biletru.net", true }, { "biletyplus.by", true }, { "biletyplus.ua", true }, { "bilgo.com", true }, @@ -4537,10 +4753,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bilimoe.com", true }, { "bilke.org", true }, { "billaud.eu.org", true }, + { "billgoldstein.name", true }, { "billhartzer.com", true }, { "billiger-mietwagen.de", true }, { "billigerfinder.de", true }, { "billigpoker.dk", true }, + { "billin.net", true }, + { "billionaire365.com", true }, { "billionairemailinglist.com", false }, { "billionkiaparts.com", true }, { "billogram.com", true }, @@ -4567,9 +4786,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "binans.net", true }, { "binans.xyz", true }, { "binarization.com", true }, - { "binarization.net", true }, { "binaryapparatus.com", true }, { "binaryappdev.com", true }, + { "binarycreations.scot", true }, { "binarydream.fi", true }, { "binaryevolved.com", true }, { "binaryrebel.net", true }, @@ -4583,6 +4802,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "binhex.net", true }, { "binkanhada.biz", true }, { "binkconsulting.be", true }, + { "binnenmeer.de", true }, { "binti.com", true }, { "bintooshoots.com", true }, { "bio-disinfestazione.it", true }, @@ -4609,7 +4829,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bioharmony.ca", true }, { "biointelligence-explosion.com", true }, { "bioligo.ch", true }, - { "biomax-mep.com.br", true }, + { "biomasscore.com", true }, { "biometrics.es", true }, { "biomodra.cz", true }, { "biopsychiatry.com", true }, @@ -4618,7 +4838,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "biosbits.org", true }, { "bioshine.com.sg", true }, { "biosignalanalytics.com", true }, - { "biospeak.solutions", true }, { "biosphere.cc", true }, { "biotechware.com", true }, { "bipyo.com", true }, @@ -4634,19 +4853,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "birgerschwarz.de", true }, { "birgit-rydlewski.de", true }, { "birgitandmerlin.com", true }, - { "birkengarten.ch", true }, { "birkenstab.de", true }, { "birkhoff.me", true }, { "birminghamcastlehire.co.uk", true }, { "birminghamsunset.com", true }, { "birthdaytip.com", true }, { "birthmatters.us", true }, + { "birthright.website", true }, { "birzan.org", true }, { "bisa-sis.net", true }, - { "bischoff-mathey.family", true }, { "biscoint.io", true }, { "biser-borisov.eu", true }, { "bismarck-tb.de", true }, + { "biso.ga", true }, { "bison.co", true }, { "bissalama.org", true }, { "bisschopssteeg.nl", true }, @@ -4655,10 +4874,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bit-cloud.de", true }, { "bit-rapid.com", true }, { "bit-sentinel.com", true }, + { "bit-service-aalter.be", true }, + { "bit.biz.tr", true }, { "bit.voyage", true }, { "bit8.com", true }, + { "bitaccelerate.com", true }, { "bitbank.cc", true }, { "bitbeans.de", true }, + { "bitbox.me", true }, { "bitbucket.com", true }, { "bitbucket.io", true }, { "bitbucket.org", true }, @@ -4671,7 +4894,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bitcoin.asia", true }, { "bitcoin.ch", true }, { "bitcoin.co.nz", true }, - { "bitcoin.com", true }, { "bitcoin.de", true }, { "bitcoin.im", true }, { "bitcoin.info", true }, @@ -4680,7 +4902,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bitcoinbitcoin.com", true }, { "bitcoinclashic.ninja", true }, { "bitcoincore.org", true }, - { "bitcoinfo.jp", false }, { "bitcoinindia.com", true }, { "bitcoinkarlsruhe.de", true }, { "bitcoinrealestate.com.au", true }, @@ -4688,7 +4909,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bitcoinwalletscript.tk", true }, { "bitcoinx.gr", true }, { "bitcoinx.ro", true }, - { "bitedge.com", true }, { "bitenose.com", true }, { "bitex.la", true }, { "bitfasching.de", false }, @@ -4704,29 +4924,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bitk.co", true }, { "bitk.co.uk", true }, { "bitk.eu", true }, - { "bitk.uk", true }, { "bitlish.com", true }, { "bitlo.com", true }, { "bitlo.com.tr", true }, { "bitlo.io", true }, { "bitlo.org", true }, { "bitmainwarranty.com", true }, - { "bitmainwarranty.com.ua", true }, - { "bitmainwarranty.ru", true }, { "bitmarket.net", true }, { "bitmarket.pl", true }, { "bitmessage.ch", true }, { "bitmidi.com", true }, { "bitminter.com", true }, + { "bitmoe.com", true }, + { "bitmon.net", true }, { "bitok.com", true }, - { "bitpoll.de", true }, - { "bitpoll.org", true }, { "bitpumpe.net", true }, { "bitref.com", true }, { "bitrush.nl", true }, { "bitsafe.com.my", true }, { "bitsburg.ru", true }, { "bitshaker.net", true }, + { "bitskins.co", true }, { "bitskrieg.net", true }, { "bitstorm.nl", true }, { "bitstorm.org", true }, @@ -4744,12 +4962,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "biyou-homme.com", true }, { "biz4x.com", true }, { "bizeau.ch", true }, - { "bizedge.co.nz", true }, { "bizniskatalog.mk", true }, { "biznpro.ru", true }, { "bizstarter.cz", true }, { "biztera.com", true }, { "biztok.eu", true }, + { "biztouch.work", true }, { "bizzi.tv", true }, { "bjarnerest.de", true }, { "bjl5689.com", true }, @@ -4761,7 +4979,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bkentertainments.co.uk", true }, { "bkhayes.com", true }, { "bkhpilates.co.uk", true }, + { "bklaindia.com", true }, { "bkositspartytime.co.uk", true }, + { "bl00.se", true }, { "bl4ckb0x.biz", true }, { "bl4ckb0x.com", true }, { "bl4ckb0x.de", true }, @@ -4788,14 +5008,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "blablacar.ro", true }, { "blablacar.rs", true }, { "blablacar.ru", true }, - { "black-gay-porn.biz", true }, + { "black-khat.com", true }, { "black-mail.nl", true }, { "black-pool.net", true }, { "black-raven.fr", true }, { "black.dating", true }, { "black.host", true }, { "blackandpony.de", true }, - { "blackapron.com.br", true }, { "blackbag.nl", true }, { "blackbase.de", true }, { "blackberryforums.be", true }, @@ -4803,7 +5022,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "blackcatinformatics.ca", true }, { "blackcatinformatics.com", true }, { "blackcicada.com", true }, - { "blackdesertsp.com", true }, { "blackdotbrewery.com", true }, { "blackdown.de", true }, { "blackdragoninc.org", true }, @@ -4818,14 +5036,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "blackilli.de", true }, { "blackislegroup.com", true }, { "blackkeg.ca", true }, + { "blackl.net", true }, { "blackmonday.gr", true }, { "blacknetwork.eu", true }, + { "blacknova.io", true }, { "blackonion.com", true }, { "blackpapermoon.de", true }, { "blackphoenix.de", true }, { "blackroadphotography.de", true }, { "blackscytheconsulting.com", true }, { "blackseals.net", true }, + { "blackyau.cc", true }, { "blackys-chamber.de", true }, { "blaise.io", true }, { "blakecoin.org", true }, @@ -4834,6 +5055,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "blancodent.com", true }, { "blankersfamily.com", true }, { "blanket.technology", true }, + { "blantr.com", true }, { "blasorchester-runkel.de", true }, { "blastentertainment.com.au", true }, { "blastersklan.com", true }, @@ -4855,6 +5077,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "blendle.com", true }, { "blendle.nl", true }, { "blendr.com", true }, + { "blenheimears.com", true }, { "blenneros.net", false }, { "blessedearth.com.au", true }, { "blessedguy.com", true }, @@ -4864,9 +5087,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "blidz.com", true }, { "blieque.co.uk", true }, { "bliesekow.net", true }, + { "bliker.ga", true }, { "blikk.no", true }, - { "blikund.swedbank.se", true }, { "blindpigandtheacorn.com", true }, + { "blinds-unlimited.com", true }, { "bling9.com", true }, { "bling999.cc", true }, { "bling999.com", true }, @@ -4893,8 +5117,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "block65.com", true }, { "blockchain.com", true }, { "blockchain.info", true }, + { "blockchainced.com", true }, { "blockchaindaigakko.jp", true }, { "blockchainwhiz.com", true }, + { "blockcheck.network", true }, { "blockedyourcar.com", true }, { "blockedyourcar.net", true }, { "blockedyourcar.org", true }, @@ -4909,9 +5135,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "blog.linode.com", false }, { "blog.lookout.com", false }, { "blogaid.net", true }, + { "blogarts.net", true }, { "blogbooker.com", true }, { "blogconcours.net", true }, { "blogcuaviet.com", true }, + { "blogdelosjuguetes.com", true }, { "blogdeyugioh.com", true }, { "blogexpert.ca", true }, { "bloggermumofthreeboys.com", true }, @@ -4920,11 +5148,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bloggytalky.com", true }, { "bloginbeeld.nl", true }, { "bloglines.co.za", true }, + { "bloglogistics.com", true }, { "blogom.at", true }, { "blogpentrusuflet.ro", true }, { "blogreen.org", true }, + { "blogthedayaway.com", true }, { "blogtroterzy.pl", true }, - { "blok56.nl", true }, + { "blood4pets.tk", true }, { "bloodsports.org", true }, { "bloom-avenue.com", true }, { "bltc.co.uk", true }, @@ -4935,6 +5165,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bltdirect.com", true }, { "blubberladen.de", true }, { "bludnykoren.ml", true }, + { "blue-gmbh-erfahrungen.de", true }, + { "blue-gmbh.de", true }, { "blue-leaf81.net", true }, { "blue42.net", true }, { "blueblou.com", true }, @@ -4948,12 +5180,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "blueflare.org", true }, { "bluefrag.com", true }, { "bluefuzz.nl", true }, + { "bluehelixmusic.com", true }, { "blueimp.net", true }, { "blueliquiddesigns.com.au", true }, { "bluemeda.web.id", true }, - { "bluemoonroleplaying.com", true }, + { "bluemosh.com", true }, { "bluemtnrentalmanagement.ca", true }, { "bluenote9.com", true }, + { "blueoakart.com", true }, { "bluepearl.tk", true }, { "blueperil.de", true }, { "bluepoint.one", true }, @@ -4961,17 +5195,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "blueprintloans.co.uk", true }, { "bluerootsmarketing.com", true }, { "blues-and-pictures.com", true }, - { "bluesecure.com.br", true }, { "blueskycoverage.com", true }, { "bluestardiabetes.com", true }, + { "bluetexservice.com", true }, { "bluewavewebdesign.com", true }, { "bluex.im", true }, { "bluex.info", true }, { "bluex.net", true }, { "bluex.org", true }, { "blueyed.eu", true }, - { "blui.cf", true }, + { "blui.ml", true }, { "bluiandaj.ml", true }, + { "bluimedia.com", true }, { "blumenfeldart.com", true }, { "blumiges-fischbachtal.de", false }, { "blundell.wedding", true }, @@ -4980,9 +5215,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bluproducts.com.es", true }, { "blurringexistence.net", true }, { "blusmurf.net", true }, - { "blutopia.xyz", true }, { "blyat.science", true }, { "blyth.me.uk", true }, + { "blzrk.com", true }, { "bmhglobal.com.au", true }, { "bmone.net", true }, { "bmriv.com", true }, @@ -4991,8 +5226,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bmwcolors.com", true }, { "bn1digital.co.uk", true }, { "bn4t.me", true }, - { "bnb-buddy.nl", true }, - { "bnboy.cn", true }, { "bnbsinflatablehire.co.uk", true }, { "bngs.pl", true }, { "bnin.org", true }, @@ -5019,11 +5252,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bobancoamigo.com", true }, { "bobazar.com", true }, { "bobcopeland.com", true }, - { "bobep.ru", true }, + { "bobiji.com", false }, { "bobkidbob.com", true }, { "bobkoetsier.nl", true }, { "bobnbouncedublin.ie", true }, - { "boboates.com", true }, { "bobobox.net", true }, { "boboolo.com", true }, { "bobstronomie.fr", true }, @@ -5042,6 +5274,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bodymusclejournal.com", true }, { "bodypainter.pl", true }, { "bodypainting.waw.pl", true }, + { "bodyweb.com.br", true }, { "bodyworkbymichael.com", true }, { "boeddhashop.nl", true }, { "boekenlegger.nl", true }, @@ -5051,20 +5284,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bogdanepureanu.ro", true }, { "bogner.sh", true }, { "bogobeats.com", true }, - { "bohan.co", true }, + { "bogosity.se", true }, { "bohramt.de", true }, { "boimmobilier.ch", true }, { "boincstats.com", true }, { "boiseonlinemall.com", true }, { "boisewaldorf.org", true }, + { "bokadoktorn-test.net", true }, { "boke112.com", true }, { "bokka.com", true }, + { "bokkeriders.com", true }, { "bokutake.com", true }, { "boldmediagroup.com", true }, { "boldt-metallbau.de", true }, { "bolektro.de", true }, { "bolgarnyelv.hu", true }, - { "bolivarfm.com.ve", true }, { "bollywood.uno", true }, { "bologna-disinfestazioni.it", true }, { "bolovegna.it", true }, @@ -5072,6 +5306,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "boltbeat.com", true }, { "bolte.org", true }, { "bomb.codes", true }, + { "bombe-lacrymogene.fr", true }, { "bonaccorso.eu", true }, { "bonami.cz", true }, { "bonami.hu", true }, @@ -5079,19 +5314,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bonami.ro", true }, { "bonami.sk", true }, { "bonbonmania.com", true }, - { "bondagefetishstore.com", true }, { "bondank.com", true }, { "bondarenko.dn.ua", true }, { "bondingwithbaby.ca", true }, + { "bondlink.com", true }, { "bondoer.fr", true }, { "bondskampeerder.nl", true }, { "bonebunny.de", true }, - { "boneko.de", true }, { "bonesserver.com", true }, { "bonfi.net", true }, { "bonibuty.com", true }, { "bonifacius.be", true }, { "bonita.com.br", true }, + { "bonito.pl", true }, { "bonnant-associes.ch", true }, { "bonnant-partners.ch", true }, { "bonnebouffe.fr", true }, @@ -5103,11 +5338,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bonnyprints.fr", true }, { "bonprix.co.uk", true }, { "bonqoeur.ca", true }, + { "bonrecipe.com", true }, { "bonsaimedia.nl", true }, { "boodaah.com", true }, { "boodmo.com", true }, { "boogiebouncecastles.co.uk", true }, { "book-in-hotel.com", true }, + { "booker.ly", true }, { "bookingapp.be", true }, { "bookingapp.nl", true }, { "bookingdeluxesp.com", true }, @@ -5121,7 +5358,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bookshopofindia.com", true }, { "booksinthefridge.at", true }, { "booktracker-org.appspot.com", true }, - { "bookwitty.social", true }, { "bool.be", true }, { "boomersurf.com", true }, { "boomshelf.com", true }, @@ -5139,14 +5375,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "booq.org", true }, { "booquiz.com", true }, { "boosinflatablegames.co.uk", true }, + { "boost.fyi", true }, { "boost.ink", true }, + { "boostgame.win", true }, { "booter.pw", true }, { "bootjp.me", false }, { "bopiweb.com", true }, { "bopp.org", true }, { "borahan.net", true }, - { "borchers-media.de", true }, - { "borchers.ninja", true }, { "bordadoenpedreria.com", true }, { "bordes.me", true }, { "boredhackers.com", true }, @@ -5172,9 +5408,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bosufitness.cz", true }, { "bosun.io", true }, { "bosworthdental.co.uk", true }, - { "botlab.ch", true }, - { "botmanager.pl", true }, - { "bots.cat", true }, + { "bot-manager.pl", true }, + { "botguard.net", true }, { "botserver.de", true }, { "botstack.host", true }, { "bottaerisposta.net", true }, @@ -5187,7 +5422,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bouckaert-usedcars.be", true }, { "boudah.pl", true }, { "bougeret.fr", true }, - { "bouk.co", true }, + { "boukoubengo.com", true }, { "boulzicourt.fr", true }, { "bounce-a-mania.co.uk", true }, { "bounce-a-roo.co.uk", true }, @@ -5252,7 +5487,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bouncycastle.net.au", true }, { "bouncycastlehire-norwich.com", true }, { "bouncycastlehire-sheffield.co.uk", true }, - { "bouncycastlehireauckland.co.nz", true }, + { "bouncycastlehire.co.uk", true }, { "bouncycastlehirebarnstaple.co.uk", true }, { "bouncycastlehirebexley.co.uk", true }, { "bouncycastlehirechelmsford.org.uk", true }, @@ -5299,6 +5534,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bountyfactory.io", true }, { "bourasse.fr", true }, { "bourdon.fr.eu.org", true }, + { "bourgdepabos.com", true }, { "bourhis.info", true }, { "bournefun.co.uk", true }, { "bourqu.in", true }, @@ -5322,11 +5558,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bownty.it", true }, { "bownty.nl", true }, { "bowntycdn.net", true }, + { "boxmoe.cn", true }, { "boxpeg.com", true }, { "boxpirates.to", true }, { "boxvergelijker.nl", true }, + { "boyerassoc.com", true }, + { "boyfriendcookbook.com", true }, { "boyhost.cn", true }, - { "boypoint.de", true }, + { "boyinglanguage.com", true }, + { "boyntonobserver.org", true }, { "boz.nl", false }, { "bozdoz.com", true }, { "bozit.com.au", true }, @@ -5352,7 +5592,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bradler.net", true }, { "bradlinder.org", true }, { "bradypatterson.com", true }, - { "braemer-it-consulting.de", true }, { "braeunlich-gmbh.com", true }, { "brage.info", true }, { "brahmins.com", true }, @@ -5372,6 +5611,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "brainvoyagermusic.com", true }, { "brainwork.space", true }, { "brakemanpro.com", true }, + { "brakpanplumber24-7.co.za", true }, { "bralnik.com", true }, { "brambogaerts.nl", true }, { "bramburek.net", true }, @@ -5379,8 +5619,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "brammingfys.dk", true }, { "bramstaps.nl", true }, { "bramvanaken.be", true }, + { "bramygrozy.pl", true }, { "bran.land", true }, { "branch-bookkeeper.com", true }, + { "branchtrack.com", true }, + { "brandand.co.uk", true }, { "brandbil.dk", true }, { "brandbuilderwebsites.com", true }, { "brandcodeconsulting.com", true }, @@ -5388,6 +5631,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "brando753.xyz", true }, { "brandongomez.me", true }, { "brandonhubbard.com", true }, + { "brandonlui.ml", true }, { "brandonwalker.me", true }, { "brandrocket.dk", true }, { "brandstead.com", true }, @@ -5401,10 +5645,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "brasalcosmetics.com", true }, { "brashear.me", true }, { "brasilbombas.com.br", true }, + { "brasildxn.com.br", true }, { "brasserie-mino.fr", true }, { "brasspipedreams.org", true }, { "bratislava-airport-taxi.com", true }, { "bratteng.me", true }, + { "bratteng.xyz", true }, { "bratvanov.com", true }, { "brau-ingenieur.de", true }, { "braudoktor.de", true }, @@ -5449,7 +5695,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "breitbild-beamer.de", true }, { "brejoc.com", true }, { "bremen-restaurants.de", true }, - { "bremensaki.com", true }, { "bremerfriedensforum.de", true }, { "brendanbatliner.com", true }, { "brendanscherer.com", true }, @@ -5481,9 +5726,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "briarproject.org", true }, { "brickftp.com", true }, { "brickheroes.com", true }, + { "brickstreettrio.com", true }, { "brickvortex.com", true }, { "bricolajeux.ch", true }, { "brid.gy", false }, + { "bridalshoes.com", true }, { "brideandgroomdirect.ie", true }, { "bridgeglobalmarketing.com", true }, { "bridgement.com", true }, @@ -5493,19 +5740,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "briefassistant.com", true }, { "briefhansa.de", true }, { "briefvorlagen-papierformat.de", true }, - { "briggsleroux.com", true }, { "brighouse-leisure.co.uk", true }, { "brightday.bz", true }, + { "brightendofleasecleaning.com.au", true }, + { "brightlifedirect.com", true }, { "brightonbank.com", true }, { "brightonbouncycastles.net", true }, { "brightonchilli.org.uk", true }, { "brightonzhang.com", true }, { "brigidaarie.com", true }, { "brilliantbouncyfun.co.uk", true }, - { "brilliantdecisionmaking.com", true }, { "brilliantproductions.co.nz", true }, { "brimspark.systems", true }, - { "brinquedoseducativos.art.br", true }, { "brio-shop.ch", true }, { "brisbanelogistics.com.au", true }, { "bristebein.com", true }, @@ -5514,13 +5760,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "britelocate.com", true }, { "britishbeef.com", true }, { "britishbookmakers.co.uk", true }, + { "britishchronicles.com", true }, { "britishgroupsg.com", true }, { "britishpearl.com", true }, { "britishsciencefestival.org", true }, { "britishscienceweek.org", true }, + { "britishsnoring.co.uk", true }, { "britneyclause.com", true }, + { "brittanyferriesnewsroom.com", true }, { "britton-photography.com", true }, + { "brmsalescommunity.com", true }, { "brn.by", true }, + { "brnojebozi.cz", true }, { "bro.hk", true }, { "broadleft.org", true }, { "broadsheet.com.au", true }, @@ -5541,17 +5792,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "brookehatton.com", true }, { "brooklynrealestateblog.com", true }, { "brookworth.com", true }, - { "brossman.it", true }, { "brossmanit.com", true }, { "brother-printsmart.nl", true }, { "brouillard.ch", true }, - { "brouwerijkoelit.nl", true }, + { "brouwerijdeblauweijsbeer.nl", true }, { "brovelton.com", true }, { "brown-devost.com", true }, { "brownfieldstsc.org", true }, { "brownihc.com", true }, + { "browsemycity.com", true }, { "brring.com", true }, { "bru6.de", true }, + { "brucekovner.com", true }, { "brucemartin.net", true }, { "brucemobile.de", false }, { "bruck.me", true }, @@ -5559,17 +5811,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bruna-cdn.nl", true }, { "brunick.de", false }, { "brunn.email", true }, - { "brunner.ninja", false }, + { "brunner.ninja", true }, { "brunohenc.from.hr", true }, - { "brunoramos.com", true }, - { "brunoramos.org", true }, - { "brunosouza.org", true }, { "brush.ninja", true }, { "bruun.co", true }, { "bryankaplan.com", true }, { "bryanquigley.com", true }, { "bryansmith.net", true }, { "bryansmith.tech", true }, + { "brzy-svoji.cz", true }, { "bs-network.net", true }, { "bs-security.com", true }, { "bs.sb", true }, @@ -5596,17 +5846,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bsidessf.com", true }, { "bsimerch.com", true }, { "bslim-e-boutique.com", true }, + { "bsociabl.com", true }, { "bsp-southpool.com", true }, + { "bsquared.org", true }, + { "bst.gg", true }, { "bstoked.net", true }, + { "bsuru.xyz", true }, { "bsw-solution.de", true }, { "bt123.xyz", true }, - { "bt78.cn", true }, - { "bt85.cn", true }, - { "bt9.cc", true }, - { "bt96.cn", true }, - { "bt995.com", true }, { "bta.lv", false }, - { "btaoke.com", true }, { "btc2secure.com", true }, { "btcarmory.com", true }, { "btcbolsa.com", true }, @@ -5622,6 +5870,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "btserv.de", true }, { "btsoft.eu", true }, { "btsow.com", true }, + { "bttc.co.uk", true }, { "btth.live", true }, { "btth.pl", true }, { "btth.tv", true }, @@ -5692,31 +5941,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bulario.com", true }, { "bulario.net", true }, { "bulbcompare.com", true }, + { "bulbgenie.com", true }, { "bulkcandystore.com", true }, { "bulkingtime.com", true }, { "bulktrade.de", true }, { "bulkwholesalesweets.co.uk", true }, { "bull.id.au", true }, { "bulldog-hosting.de", true }, - { "bulldoghire.co.uk", true }, { "bulledair-savons.ch", true }, { "bullettags.com", true }, { "bullpay.com", true }, { "bullshitmail.nl", true }, { "bullterrier.nu", true }, { "bulwarkhost.com", true }, - { "bumarkamoda.com", true }, { "bunbun.be", false }, { "bund-von-theramore.de", true }, - { "bundaberg.com", true }, { "bundespolizei-forum.de", true }, { "bunkyo-life.com", true }, { "bunny-rabbits.com", true }, { "bunnyvishal.com", true }, { "bunzy.ca", true }, { "bupropion.com", true }, + { "bupu.ml", true }, { "buradangonder.com", true }, { "burcevo.info", true }, + { "burfordbedandbreakfast.co.uk", true }, { "burgernet.nl", true }, { "burgers.io", true }, { "burghardt.pl", true }, @@ -5725,10 +5974,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "buricloud.fr", true }, { "burke.services", true }, { "burlapsac.ca", true }, + { "burncorp.org", true }, { "burnerfitness.com", true }, { "burnhamonseabouncycastles.co.uk", true }, { "burningbird.net", true }, { "burningflipside.com", false }, + { "burningmarket.de", true }, { "burntfish.com", true }, { "burnworks.com", true }, { "buronwater.com", true }, @@ -5741,6 +5992,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "burtrum.name", true }, { "burtrum.org", true }, { "burzmali.com", true }, + { "busanhs.bid", true }, + { "busanhs.win", true }, { "buserror.cn", true }, { "bushbaby.com", true }, { "bushcraftfriends.com", true }, @@ -5754,6 +6007,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "businessimmigration-eu.ru", true }, { "businessplanexperts.ca", true }, { "businessradar.com.au", true }, + { "businesswebadmin.com", true }, { "busit.be", true }, { "busold.ws", true }, { "bustadice.com", true }, @@ -5764,7 +6018,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "buthowdoyoubuygroceries.com", true }, { "butikvip.ru", true }, { "buttercupstraining.co.uk", true }, - { "buttermilk.cf", true }, { "buttonline.ch", true }, { "buttonrun.com", true }, { "buturyu.net", true }, @@ -5774,6 +6027,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "buy-thing.com", true }, { "buyaccessible.gov", true }, { "buycarpet.shop", true }, + { "buycbd.store", true }, { "buycook.shop", true }, { "buydissertations.com", true }, { "buyerdocs.com", true }, @@ -5800,28 +6054,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bw.codes", true }, { "bwcscorecard.org", true }, { "bwe-seminare.de", true }, + { "bwf11.com", true }, + { "bwf55.com", true }, + { "bwf6.com", true }, + { "bwf66.com", true }, + { "bwf77.com", true }, + { "bwf99.com", true }, { "bwfc.nl", true }, { "bwh1.net", true }, { "bwilkinson.co.uk", true }, - { "bwin86.com", true }, - { "bwin8601.com", true }, - { "bwin8602.com", true }, - { "bwin8603.com", true }, - { "bwin8604.com", true }, - { "bwin8605.com", true }, - { "bwin8606.com", true }, { "bwl-earth.club", true }, { "bws16.de", true }, - { "bwwb.nu", true }, { "bx-n.de", true }, { "bxp40.at", true }, { "by.cx", true }, + { "byange.pro", true }, { "byatte.com", true }, { "bydisk.com", false }, { "byeskille.no", true }, { "bygningsregistrering.dk", true }, { "byiu.info", true }, - { "byken.cn", true }, { "bymark.co", true }, { "bymike.co", true }, { "bynder.com", true }, @@ -5844,8 +6096,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bytema.eu", true }, { "bytema.re", true }, { "bytema.sk", true }, + { "bytemix.cloud", true }, { "byteowls.com", false }, { "bytepark.de", true }, + { "bytepen.com", true }, { "bytes.co", true }, { "bytes.fyi", true }, { "bytesatwork.de", true }, @@ -5858,10 +6112,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bythisverse.com", true }, { "byvshie.com", true }, { "bywin9.com", true }, - { "bzhub.bid", true }, { "bziaks.xyz", true }, { "bzsparks.com", true }, { "bztech.com.br", true }, + { "bztraveler.com", true }, + { "bztraveler.net", true }, { "bzv-fr.eu", true }, { "c-aeroconsult.com", true }, { "c-path.org", true }, @@ -5872,6 +6127,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "c-world.co.uk", true }, { "c.cc", true }, { "c0rn3j.com", true }, + { "c0rporation.com", true }, { "c2design.it", true }, { "c2o-library.net", true }, { "c3hv.cn", true }, @@ -5880,16 +6136,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "c3wien.at", true }, { "c4539.com", true }, { "c4k3.net", true }, + { "c5h8no4na.net", true }, { "c7dn.com", true }, { "ca-key.de", true }, { "ca-terminal-multiservices.fr", true }, { "ca.gparent.org", true }, { "ca.search.yahoo.com", false }, { "ca5.de", true }, + { "caaps.org.au", true }, { "caarecord.org", true }, { "caasd.org", true }, + { "cabaladada.org", true }, { "cabarave.com", true }, { "cabforum.org", true }, + { "cabineritten.nl", true }, { "cabinet-bedin.com", true }, { "cablehighspeed.net", true }, { "cablemod.com", true }, @@ -5902,7 +6162,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "caceis.bank", true }, { "cachetagalong.com", true }, { "cachethome.com", true }, - { "cachethq.io", true }, { "cachetur.no", true }, { "cackette.com", true }, { "cad-noerdlingen.de", true }, @@ -5913,30 +6172,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cadooz.com", true }, { "cadorama.fr", true }, { "cadoth.net", true }, - { "cadra.nl", true }, + { "cadra.nl", false }, + { "cadre.com", true }, { "cadsys.net", true }, { "cadusilva.com", true }, { "caesarkabalan.com", true }, - { "cafe-service.ru", false }, { "cafedupont.be", true }, { "cafedupont.co.uk", true }, { "cafedupont.de", true }, { "cafedupont.nl", true }, - { "cafefresco.pe", true }, { "cafeimsueden.de", true }, { "cafelandia.net", true }, { "cafeobscura.nl", true }, + { "cafericoy.com", true }, { "caffeinatedcode.com", true }, - { "caibi.io", true }, + { "cagalogluyayinevi.com", true }, { "cainhosting.com", false }, - { "cais.de", true }, { "caitcs.com", true }, { "caiwenjian.xyz", true }, { "caizx.com", false }, { "caja-pdf.es", true }, { "cajio.ru", true }, { "cajunuk.co.uk", true }, - { "cake-time.co.uk", true }, { "cakestart.net", true }, { "caketoindia.com", true }, { "cakingandbaking.com", true }, @@ -5955,16 +6212,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "calc.pw", true }, { "calcedge.com", true }, { "calcinacci.com", true }, + { "calcoolator.pl", true }, { "calcularis.ch", true }, { "calculateaspectratio.com", true }, { "calculator-imt.com", true }, { "calculator.tf", true }, { "calcworkshop.com", true }, { "caldecotevillagehall.co.uk", true }, + { "caleb.cx", true }, { "caleb.host", true }, { "calebthompson.io", true }, { "calendarr.com", true }, { "calendarsnow.com", true }, + { "calendly.com", true }, { "caletka.cz", true }, { "calgoty.com", true }, { "calibreapp.com", true }, @@ -5973,8 +6233,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "calidoinvierno.com", true }, { "calixte-concept.fr", true }, { "call.me", true }, - { "callanbryant.co.uk", true }, - { "callawayracing.se", true }, + { "callawayracing.se", false }, { "callear.org", true }, { "callhub.io", true }, { "calltoar.ms", true }, @@ -5984,9 +6243,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "calluna.nl", true }, { "calmtech.com", true }, { "calotte-academy.com", true }, + { "calrotaract.org", true }, { "calvin.my", true }, { "calvinallen.net", false }, - { "calypso-tour.net", true }, { "calyxengineers.com", true }, { "camaradivisas.com", true }, { "camaras.uno", true }, @@ -6000,12 +6259,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cambier.org", true }, { "cambiowatch.ch", true }, { "cambodian.dating", true }, + { "cambridge-security.com", true }, { "cambridgebouncers.co.uk", true }, + { "camcapital.com", true }, { "camconn.cc", true }, + { "camdesign.pl", true }, { "camelservers.com", true }, + { "cameo-membership.uk", true }, { "cameraviva.com.br", true }, { "camerweb.es", true }, { "camilomodzz.net", true }, + { "camjobs.net", true }, { "camolist.com", true }, { "camp-pleinsoleil.ch", true }, { "camp.co.uk", true }, @@ -6018,6 +6282,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "campbrainybunch.com", true }, { "campcambodia.org", true }, { "campcanada.org", true }, + { "campeoesdofutebol.com.br", true }, { "campeonatoalemao.com.br", true }, { "camperdays.de", true }, { "camperlist.com", true }, @@ -6033,9 +6298,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "campus-discounts.com", true }, { "campus-finance.com", true }, { "campusdrugprevention.gov", true }, + { "campusportalng.com", true }, { "campuswire.com", true }, + { "campvana.com", true }, { "campwabashi.org", true }, - { "camshowhub.com", true }, + { "camshowstorage.com", true }, { "camsky.de", false }, { "canada-tourisme.ch", true }, { "canadabread.com", false }, @@ -6070,10 +6337,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "canlidoviz.com", true }, { "canmipai.com", true }, { "cannabis-marijuana.com", true }, - { "cannahealth.com", false }, + { "cannacards.ca", true }, + { "cannahealth.com", true }, { "cannoli.london", true }, { "cannyfoxx.me", true }, { "canoonic.se", true }, + { "cant.at", true }, { "cantatio.ch", true }, { "canterberry.cc", true }, { "canterburybouncycastlehire.co.uk", true }, @@ -6085,9 +6354,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cao.gov", true }, { "cao.la", true }, { "caodesantohumberto.com.br", true }, + { "caoshan60.com", true }, { "capacent.is", true }, { "capachitos.cl", true }, - { "capacitacionyautoempleo.com", true }, { "capacityproject.org", true }, { "capekeen.com", true }, { "capellidipremoli.com", true }, @@ -6108,10 +6377,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "capper.de", true }, { "capriccio.to", true }, { "caprichosdevicky.com", true }, + { "caps.is", true }, { "capsogusto.com", true }, { "capstansecurity.co.uk", true }, { "capstansecurity.com", true }, - { "captainark.net", true }, + { "capstoneinsights.com", true }, + { "captain-dandelion.com", true }, { "captainsinn.com", true }, { "captalize.com", true }, { "capturapp.com", false }, @@ -6133,8 +6404,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "carbon-project.org", true }, { "carbon12.org", true }, { "carbon12.software", true }, - { "carboneselectricosnettosl.info", true }, + { "carboneselectricosnettosl.info", false }, { "carbonmade.com", false }, + { "carbonmonoxidelawyer.net", true }, { "carbono.uy", true }, { "carbontv.com", true }, { "carck.co.uk", true }, @@ -6149,11 +6421,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cardelmar.de", true }, { "cardelmar.es", true }, { "cardexchangesolutions.com", true }, + { "cardgames.com", true }, { "cardios.srv.br", true }, { "cardranking.jp", true }, { "cardrecovery.fr", true }, { "cardse.net", true }, - { "cardwars.hu", true }, + { "cardsolutionsbh.com.br", true }, { "cardxl.be", true }, { "cardxl.de", true }, { "cardxl.fr", true }, @@ -6162,6 +6435,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "careeapp.com", true }, { "careeroptionscoach.com", true }, { "careerpower.co.in", true }, + { "careers.plus", true }, { "carefour.nl", true }, { "caremad.io", true }, { "carepassport.com", true }, @@ -6171,6 +6445,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "carezone.com", false }, { "cargobay.net", true }, { "cargorestraintsystems.com.au", true }, + { "carhunters.cz", true }, { "caribbean.dating", true }, { "caribbeanarthritisfoundation.org", true }, { "caribbeanexams.com", true }, @@ -6180,27 +6455,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "carinthia.eu", true }, { "cariocacooking.com", true }, { "carisenda.com", true }, + { "carkeysanantonio.com", true }, { "carlandfaith.com", true }, { "carlife-at.jp", true }, { "carlili.fr", true }, { "carlingfordapartments.com.au", true }, { "carlmjohnson.net", true }, { "carlobiagi.de", true }, + { "carlocksmith--dallas.com", true }, + { "carlocksmithbaltimore.com", true }, + { "carlocksmithellicottcity.com", true }, { "carlocksmithfallbrook.com", true }, + { "carlocksmithlewisville.com", true }, + { "carlocksmithmesquite.com", true }, + { "carlocksmithtucson.com", true }, { "carlosfelic.io", true }, { "carlosjeurissen.com", true }, + { "carlot-j.com", true }, { "carnaticalifornia.com", true }, { "carnet-du-voyageur.com", true }, { "carnildo.com", true }, { "caroes.be", true }, - { "carol-lambert.com", true }, { "carolcappelletti.com", true }, { "carolcestas.com", true }, - { "caroli.biz", true }, { "caroli.com", true }, { "caroli.info", true }, { "caroli.name", true }, { "caroli.net", true }, + { "carolina.cz", true }, { "carolinaclimatecontrolsc.com", true }, { "carolynjoyce.com.au", true }, { "carpetcleaningtomball.com", true }, @@ -6210,8 +6492,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "carriedin.com", true }, { "carrierplatform.com", true }, { "carringtonrealtygroup.com", true }, + { "carroceriascarluis.com", true }, { "carrollservicecompany.com", true }, + { "carseatchecks.ca", true }, { "carson-aviation-adventures.com", true }, + { "carsoug.com", true }, { "carspneu.cz", true }, { "cartadeviajes.cl", true }, { "cartadeviajes.co", true }, @@ -6227,9 +6512,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cartadeviajes.uk", true }, { "carteirasedistintivos.com.br", true }, { "cartelcircuit.com", true }, + { "carterstad.se", true }, { "cartertonscouts.org.nz", true }, { "cartesentreprises-unicef.fr", true }, { "carthedral.com", true }, + { "cartierplan.ga", true }, { "carto.la", true }, { "cartongesso.roma.it", true }, { "cartooncastles.ie", true }, @@ -6246,8 +6533,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "casa-su.casa", true }, { "casabouquet.com", true }, { "casacameo.com", false }, + { "casacochecurro.com", true }, { "casadasportasejanelas.com", true }, - { "casadellecose.com", true }, { "casadoarbitro.com.br", true }, { "casadowifi.com.br", true }, { "casalindamex.com", true }, @@ -6277,16 +6564,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "casino-trio.com", true }, { "casinobonuscodes.online", true }, { "casinocashflow.ru", true }, + { "casinolegal.pt", true }, + { "casinomucho.com", true }, { "casinoonlinesicuri.com", true }, { "casio-caisses-enregistreuses.fr", true }, + { "casjay.cloud", true }, { "casjay.com", true }, { "casjay.info", true }, + { "casjay.us", true }, + { "casjaygames.com", true }, { "caspar.ai", true }, { "casperpanel.com", true }, { "cassimo.com", true }, + { "castbulletassoc.org", false }, + { "casteloinformatica.com.br", true }, { "castible.de", true }, + { "castle-engine.io", true }, { "castlecapers.com.au", true }, { "castlecms.io", true }, + { "castlejackpot.com", true }, { "castleking.net", true }, { "castlekingdomstockport.co.uk", true }, { "castlekingkent.co.uk", true }, @@ -6296,6 +6592,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "castles4rascalsiow.co.uk", true }, { "castlesrus-kent.com", true }, { "castleswa.com.au", true }, + { "casualdesignsfurniture.com", true }, + { "casusgrillcaribbean.com", true }, { "cat-blum.com", true }, { "cat-box.de", true }, { "cat.net", true }, @@ -6303,10 +6601,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "catalog.beer", true }, { "catalogobiblioteca.com", true }, { "catalogoreina.com", true }, + { "catalogosvirtualesonline.com", true }, { "catalystapp.co", true }, { "catbold.space", true }, { "catbull.com", true }, { "catburton.co.uk", true }, + { "catchers.cc", true }, { "catchersgear.com", true }, { "catchfotografie.nl", true }, { "catchhimandkeephim.com", true }, @@ -6314,20 +6614,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "catdecor.ru", true }, { "catenacondos.com", true }, { "catfooddispensersreviews.com", true }, + { "catgirl.science", true }, { "catharinesomerville.com", true }, { "catharisme.eu", true }, { "catharisme.net", true }, - { "catherineidylle.com", true }, + { "catherinejf.com", true }, { "catherinescastles.co.uk", true }, { "catholics.dating", true }, { "cathosa.nl", true }, + { "cathy.guru", true }, + { "cathy.website", true }, + { "cathyfitzpatrick.com", true }, + { "cathyjf.ca", true }, + { "cathyjf.com", true }, + { "cathyjf.net", true }, + { "cathyjf.org", true }, + { "cathyjfitzpatrick.com", true }, { "cativa.net", true }, { "catl.st", true }, { "catmoose.ca", true }, { "catnet.dk", false }, + { "catprog.org", true }, { "cattivo.nl", false }, { "catuniverse.org", true }, { "catveteran.com", true }, + { "caughtredhanded.co.nz", true }, { "caulfieldeastapartments.com.au", true }, { "caulfieldracecourseapartments.com.au", true }, { "caulong-ao.net", true }, @@ -6336,10 +6647,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cave-reynard.ch", true }, { "cavevinsdefrance.fr", true }, { "cavzodiaco.com.br", true }, - { "cayafashion.de", true }, + { "caxalt.com", true }, { "caylercapital.com", true }, { "cazaviajes.es", true }, - { "cazes.info", true }, { "cb-crochet.com", true }, { "cbbank.com", true }, { "cbc-hire.co.uk", true }, @@ -6349,7 +6659,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cbdev.de", true }, { "cbdmarket.space", true }, { "cbecrft.net", true }, + { "cbin168.com", true }, { "cbintermountainrealty.com", true }, + { "cbk-connect.com", true }, { "cbr-xml-daily.ru", true }, { "cbsdeheidevlinder.nl", true }, { "cbw.sh", true }, @@ -6363,6 +6675,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ccoooss.com", true }, { "ccprwebsite.org", true }, { "ccsource.org", true }, + { "ccss-cces.com", true }, { "ccsys.com", true }, { "cctvview.info", true }, { "ccu.io", true }, @@ -6370,6 +6683,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ccv-deutschland.de", true }, { "ccv.ch", true }, { "ccv.nl", true }, + { "cd-shopware.de", true }, { "cd-sport.com", true }, { "cd.search.yahoo.com", false }, { "cd5k.net", true }, @@ -6381,6 +6695,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cdbtech.com", true }, { "cdburnerxp.se", true }, { "cdda.ch", true }, + { "cdeck.net", true }, { "cdepot.eu", true }, { "cdkeykopen.com", true }, { "cdlcenter.com", true }, @@ -6391,19 +6706,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cdns.cloud", true }, { "cdom.de", true }, { "cdsdigital.de", true }, + { "cdshining.com", true }, { "cdu-wilgersdorf.de", true }, + { "cduckett.net", true }, { "ce-pimkie.fr", true }, { "cebz.org", true }, { "ceciliacolombara.com", true }, { "cecipu.gob.cl", true }, { "ced-services.nl", true }, + { "cedarslodge.com", true }, { "cedriccassimo.ch", true }, { "cedriccassimo.com", true }, { "cedricmartineau.com", true }, { "ceebee.com", true }, { "cejhon.cz", false }, - { "cekaja.com", true }, { "celcomhomefibre.com.my", true }, + { "celebmasta.com", true }, + { "celebrityhealthcritic.com", true }, { "celebrityscope.net", true }, { "celectro-pro.com", true }, { "celiendev.ch", true }, @@ -6415,7 +6734,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "celti.ie.eu.org", true }, { "celti.name", true }, { "celuliteonline.com", true }, + { "cem.pw", true }, { "cementscience.com", true }, + { "cemeteriat.com", true }, { "ceml.ch", true }, { "cenatorium.pl", true }, { "censurfridns.dk", true }, @@ -6439,13 +6760,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "centrationgame.com", true }, { "centredaccueil.fr", true }, { "centreoeil.ch", true }, - { "centricbeats.com", true }, { "centrobill.com", true }, - { "centrodoinstalador.com.br", true }, { "centrojovencuenca.es", true }, + { "centromasterin.com", true }, { "centrosocialferrel.pt", true }, { "centrumhodinek.cz", true }, { "centruvechisv.ro", true }, + { "centrym.top", true }, { "centum.no", true }, { "centura.de", true }, { "centurialeonina.com", true }, @@ -6466,7 +6787,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cerebelo.info", true }, { "cerena-silver.ru", true }, { "ceres-corp.org", true }, - { "ceres1.space", true }, { "cerivo.co.uk", true }, { "cermak.photos", true }, { "cernakova.eu", true }, @@ -6484,6 +6804,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "certfa.com", true }, { "certible.com", true }, { "certificatedetails.com", true }, + { "certificatespending.com", true }, { "certificatetools.com", true }, { "certifiednurses.org", true }, { "certmonitor.com.au", true }, @@ -6491,7 +6812,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "certnazionale.it", true }, { "certspotter.com", true }, { "certspotter.org", true }, - { "cervejista.com", true }, + { "cesantias.co", true }, { "cesboard.com", true }, { "cesdb.com", true }, { "cesipagano.com", true }, @@ -6501,25 +6822,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cesobaly.cz", true }, { "cestasedelicias.com.br", true }, { "cestunmetier.ch", true }, + { "ceta.one", true }, { "cetamol.com", true }, { "ceu.edu", false }, { "cevo.com.hr", true }, { "ceyizlikelisleri.com", true }, { "cf-ide.de", true }, - { "cf-tm.net", true }, { "cfa.gov", true }, { "cfan.space", true }, { "cfda.gov", true }, { "cfdcre5.org", true }, { "cfh.com", true }, + { "cflsystems.com", true }, { "cfno.org", true }, { "cfo.gov", true }, { "cfpa-formation.fr", true }, - { "cfsh.tk", true }, { "cftc.gov", true }, { "cftcarouge.com", true }, + { "cfttt.com", true }, + { "cfurl.cf", true }, { "cfxdesign.com", true }, { "cg-systems.hu", true }, + { "cg.al", true }, { "cg.search.yahoo.com", false }, { "cgal.org", true }, { "cgan.de", true }, @@ -6530,21 +6854,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cgnparts.com", true }, { "cgpe.com", true }, { "cgsmart.com", true }, + { "cgurtner.ch", true }, { "ch-laborit.fr", true }, { "ch-sc.de", true }, { "ch.search.yahoo.com", false }, { "ch47f.com", true }, - { "chabaojia.com", true }, { "chabaudparfum.com", true }, { "chabert-provence.fr", true }, + { "chabik.com", true }, { "chad.ch", true }, { "chadstoneapartments.com.au", true }, + { "chadtaljaardt.com", true }, { "chaifeng.com", true }, { "chainedunion.info", true }, { "chaip.org", true }, { "chairinstitute.com", true }, { "chaisystems.net", true }, - { "chaldeen.pro", true }, { "chaletdemontagne.org", true }, { "chaletmanager.com", true }, { "chaletpierrot.ch", true }, @@ -6553,6 +6878,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "challstrom.com", true }, { "chamathellawala.com", true }, { "chambion.ch", true }, + { "chamicro.com", true }, { "champdogs.co.uk", true }, { "champdogs.com", true }, { "champicreuse.fr", true }, @@ -6564,14 +6890,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "champserver.net", false }, { "chanddriving.co.uk", true }, { "chandr1000.ga", true }, + { "chang-feng.info", true }, { "changecopyright.ru", true }, { "changes.jp", true }, { "changesfor.life", true }, { "changethislater.com", true }, { "channeladam.com", true }, - { "channellife.co.nz", true }, - { "channellife.com.au", true }, - { "chanoyu-gakkai.jp", true }, { "chantalguggenbuhl.ch", true }, { "chanz.com", true }, { "chaos-games.org", true }, @@ -6590,11 +6914,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chapelfordbouncers.co.uk", true }, { "chapiteauxduleman.fr", true }, { "chaplain.co", true }, - { "charakato.com", true }, { "charbonnel.eu", true }, { "charcoal-se.org", true }, { "charcoalvenice.com", true }, + { "chargedmonkey.com", true }, { "chargify.com", true }, + { "charisma.ai", true }, { "charissadescande.com", true }, { "charitylog.co.uk", true }, { "charl.eu", true }, @@ -6617,6 +6942,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "charlottesvillegolfcommunities.com", true }, { "charlotteswimmingpoolbuilder.com", true }, { "charmander.me", true }, + { "charmanterelefant.at", true }, { "charmingsaul.com", true }, { "charmyadesara.com", true }, { "charr.xyz", true }, @@ -6627,6 +6953,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chartpen.com", true }, { "chartsy.de", true }, { "charuru.moe", true }, + { "chasafilli.ch", true }, { "chaseandzoey.de", true }, { "chasetrails.co.uk", true }, { "chat-libera.org", true }, @@ -6640,7 +6967,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chatbotclick.com", true }, { "chatbots.systems", true }, { "chatear.social", true }, - { "chateau-belvoir.com", true }, { "chateau-de-lisle.fr", true }, { "chateaudestrainchamps.com", true }, { "chatfacile.org", true }, @@ -6667,12 +6993,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chazalet.fr", true }, { "chazay.net", false }, { "chazgie.se", true }, + { "chbk.co", true }, { "chbs.me", true }, { "chch.it", true }, { "chcoc.gov", true }, { "chcsct.com", true }, { "chd-expert.fr", true }, - { "chdgaming.xyz", true }, { "cheapalarmparts.com.au", true }, { "cheapcaribbean.com", true }, { "cheapessay.net", true }, @@ -6690,12 +7016,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cheapgoa.com", true }, { "cheapiesystems.com", true }, { "cheapticket.in", true }, - { "cheapwritinghelp.com", true }, { "check.torproject.org", false }, { "checkecert.nl", true }, { "checkmateshoes.com", false }, { "checkmyessay.com", true }, { "checkmyessays.com", true }, + { "checkmyip.com", true }, { "checkmypsoriasis.com", true }, { "checkout.google.com", true }, { "checkpoint-tshirt.com", true }, @@ -6712,12 +7038,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cheekymonkeysinflatables.co.uk", true }, { "cheela.org", true }, { "cheeseemergency.co.uk", true }, - { "cheesefusion.com", true }, { "cheesehosting.net", true }, { "cheetahwerx.com", true }, { "cheez.systems", true }, { "cheezflix.uk", true }, - { "chehalemgroup.com", true }, + { "chefwear.com", true }, { "cheladmin.ru", true }, { "chelema.xyz", true }, { "cheltenhambounce.co.uk", true }, @@ -6728,10 +7053,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chenapartment.com", true }, { "chenkun.pro", true }, { "chenky.com", true }, + { "chenna.me", true }, { "chennien.com", true }, { "chenqinghua.com", true }, { "chentianyi.cn", true }, { "chenzhekl.me", true }, + { "chenzhipeng.com.cn", true }, { "cheolguso.com", true }, { "cherevoiture.com", true }, { "cherie-belle.com", true }, @@ -6753,9 +7080,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chhory.com", true }, { "chhy.at", true }, { "chiaraiuola.com", false }, - { "chiaramail.com", true }, { "chiaseeds24.com", true }, { "chiboard.co", true }, + { "chibr.eu", true }, { "chic-leather.com", true }, { "chicagolug.org", true }, { "chicagostudentactivists.org", true }, @@ -6763,10 +7090,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chicolawfirm.com", true }, { "chiemgauflirt.de", true }, { "chif16.at", true }, - { "chikan-beacon.net", true }, - { "chikatomo-ryugaku.com", true }, { "chikazawa.info", true }, - { "chikory.com", true }, { "childcare.gov", true }, { "childcounseling.org", true }, { "childcustodylegalaid.org", true }, @@ -6774,13 +7098,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "childrenandmedia.org.au", true }, { "childrenfirstalways.org", true }, { "childreninadversity.gov", true }, - { "childrens-room.com", true }, { "childrensentertainmentleicester.co.uk", true }, { "childrenspartiesrus.com", true }, { "childstats.gov", true }, { "childvisitationassistance.org", true }, { "childwelfare.gov", true }, { "chilihosting.eu", true }, + { "chilimath.com", true }, + { "chilimathwords.com", true }, { "chilio.net", true }, { "chillebever.nl", true }, { "chima.net", true }, @@ -6793,14 +7118,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chinaspaceflight.com", true }, { "chinatrademarkoffice.com", true }, { "chinawhale.com", true }, + { "ching.tv", true }, { "chint.ai", true }, { "chinwag.im", true }, { "chinwag.org", true }, { "chipcore.com", true }, + { "chipglobe.com", true }, { "chippy.ch", false }, + { "chips-scheduler.de", true }, { "chiralsoftware.com", true }, { "chireiden.net", true }, { "chiro-neuchatel.ch", true }, + { "chiropractic.gr", true }, + { "chiropracticwpb.com", true }, { "chiropraktik-riemann.de", true }, { "chiropraticien-neuchatel.ch", true }, { "chiropratique-neuchatel.ch", true }, @@ -6812,7 +7142,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chitoku.jp", false }, { "chksite.com", true }, { "chl.la", true }, - { "chloehorler.com", true }, { "chloescastles.co.uk", true }, { "chlth.com", true }, { "chmsoft.com.ua", true }, @@ -6825,12 +7154,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chocolatesandhealth.com", true }, { "chocolatier-tristan.ch", true }, { "chocotough.nl", false }, - { "choe.fi", true }, { "choisirmonerp.com", true }, { "chokladfantasi.net", true }, { "chollima.pro", true }, { "chon.io", true }, - { "chonghe.org", true }, { "chook.as", true }, { "choootto.club", true }, { "choosemypc.net", true }, @@ -6841,11 +7168,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chorpinkpoemps.de", true }, { "chosenplaintext.org", true }, { "chourishi-shigoto.com", true }, + { "chovancova.sk", true }, { "chowii.com", true }, + { "choyri.com", true }, + { "chr0me.sh", true }, { "chris-edwards.net", true }, { "chrisaitch.com", true }, - { "chrisb.me", true }, - { "chrisb.xyz", true }, { "chrisbryant.me.uk", true }, { "chrisburnell.com", true }, { "chriscarey.com", true }, @@ -6877,8 +7205,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "christianfaq.org", true }, { "christianforums.com", true }, { "christiangehring.org", true }, + { "christianillies.de", true }, { "christianjens.com", true }, { "christianliebel.com", true }, + { "christianlis.org.uk", true }, + { "christianlis.uk", true }, { "christianpeltier.com", true }, { "christianpilgrimage.com.au", true }, { "christians.dating", true }, @@ -6898,9 +7229,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "christophertruncer.com", true }, { "christophkreileder.com", true }, { "christophsackl.de", true }, + { "christthekingparish.net", true }, + { "christtheredeemer.us", true }, { "chriswald.com", true }, { "chriswarrick.com", true }, - { "chriswbarry.com", true }, { "chriswells.io", true }, { "chromcraft-revington.com", true }, { "chrome-devtools-frontend.appspot.com", true }, @@ -6916,15 +7248,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chronoshop.cz", true }, { "chrpaul.de", true }, { "chrstn.eu", true }, - { "chsh.moe", true }, + { "chrysanthos.net", true }, { "chsterz.de", true }, - { "chua.family", true }, { "chuchote-moi.fr", true }, { "chuck.ovh", true }, { "chun.pro", true }, { "chunche.net", true }, { "chunk.science", true }, { "chupadelfrasco.com", true }, + { "chuppa.com.au", true }, { "churchlinkpro.com", true }, { "churchthemes.com", true }, { "churningtracker.com", true }, @@ -6933,7 +7265,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chytraauta.cz", true }, { "chziyue.com", true }, { "ci-fo.org", true }, - { "ci-suite.com", true }, { "ci5.me", true }, { "ciancode.com", true }, { "cianmawhinney.me", true }, @@ -6943,9 +7274,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cidersus.com.ec", true }, { "cie-theatre-montfaucon.ch", true }, { "cielbleu.org", true }, + { "cielly.com", true }, { "cifop-numerique.fr", true }, { "cig-dem.com", true }, { "cigar-cartel.com", true }, + { "ciiex.co", true }, { "cilloc.be", true }, { "cima-idf.fr", true }, { "cimballa.com", true }, @@ -6953,11 +7286,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cinafilm.com", true }, { "cinay.pw", true }, { "cindey.io", true }, + { "cindydudley.com", true }, { "cine-music.de", true }, { "cine.to", true }, { "cinefilzonen.se", true }, - { "cinelite.club", true }, { "cinemarxism.com", true }, + { "cinemasetfree.com", true }, { "cinemysticism.com", true }, { "cineplex.my", true }, { "ciner.is", true }, @@ -6976,7 +7310,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cip.md", true }, { "cipartyhire.co.uk", true }, { "cipher.team", true }, - { "cipherboy.com", true }, { "ciphersuite.info", true }, { "ciphrex.com", true }, { "cipri.com", true }, @@ -6999,8 +7332,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cirujanooral.com", true }, { "cirurgicagervasio.com.br", true }, { "cirurgicalucena.com.br", true }, - { "ciscodude.net", false }, + { "cirurgicasalutar.com.br", true }, + { "ciscodude.net", true }, { "cisoaid.com", true }, + { "cisofy.com", true }, + { "cispeo.org", true }, { "ciss.ltd", true }, { "cisum-cycling.com", true }, { "cisy.me", true }, @@ -7014,7 +7350,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "citizensleague.org", true }, { "citizenspact.eu", true }, { "citizing.org", true }, - { "citroner.blog", true }, { "citrusui.me", true }, { "cittadesign.com", false }, { "citton.com.br", true }, @@ -7029,10 +7364,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "citysportapp.com", true }, { "cityworksonline.com", true }, { "ciubotaru.tk", true }, + { "ciurcasdan.eu", true }, { "civilg20.org", true }, { "civillines.nl", true }, + { "civiltoday.com", true }, { "cj-espace-vert.fr", true }, { "cj-jackson.com", true }, + { "cjdby.net", true }, + { "cjdpenterprises.com", true }, + { "cjdpenterprises.com.au", true }, + { "cjean.fr", true }, { "cjey.me", true }, { "cjhzp.net", true }, { "cjr.host", true }, @@ -7051,6 +7392,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ckostecki.de", true }, { "cktennis.com", true }, { "cl.search.yahoo.com", false }, + { "clacetandil.com.ar", true }, { "clad.cf", true }, { "claimconnect.com", true }, { "claimconnect.us", true }, @@ -7078,6 +7420,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "classroomcountdown.co.nz", true }, { "classteaching.com.au", true }, { "claude-leveille.com", true }, + { "claude.tech", true }, { "claudia-urio.com", true }, { "claus-bahr.de", true }, { "clauseriksen.net", true }, @@ -7088,17 +7431,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "clazzrooms.com", true }, { "cldfile.com", true }, { "cldly.com", true }, + { "cleanapproachnw.com", true }, { "cleanbeautymarket.com.au", true }, { "cleanbrowsing.org", true }, { "cleancode.club", true }, + { "cleandetroit.org", true }, + { "cleandogsnederland.nl", true }, { "cleanhouse2000.us", true }, { "cleaningservicejulai.com", true }, { "cleansewellness.com", true }, { "clearance365.co.uk", true }, { "clearblueday.co.uk", true }, + { "clearbookscdn.uk", true }, { "clearbreezesecuritydoors.com.au", true }, { "clearip.com", true }, + { "clearkonjac.com", true }, { "clearsettle-admin.com", true }, + { "clearvoice.com", true }, { "clemenscompanies.com", true }, { "clement-beaufils.fr", true }, { "clementfevrier.fr", true }, @@ -7114,7 +7463,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "click-licht.de", true }, { "clickclock.cc", true }, { "clickenergy.com.au", true }, - { "clickforclever.com", true }, { "clickphish.com", true }, { "clicksaveandprint.com", true }, { "clien.net", true }, @@ -7132,8 +7480,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "clinicadelogopedia.net", true }, { "clinicalrehabilitation.info", true }, { "clinicaltrials.gov", true }, + { "clinicasmedicas.com.br", true }, { "clinicminds.com", true }, - { "cliniquecomplementaire.com", true }, { "cliniquevethuy.be", true }, { "clintonlibrary.gov", true }, { "clintonplasticsurgery.com", true }, @@ -7151,7 +7499,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "clojurescript.ru", true }, { "cloppenburg-autmobil.com", true }, { "cloppenburg-automobil.com", true }, - { "clorik.com", true }, { "clorophilla.net", true }, { "closeli.cn", true }, { "closelinksecurity.co.uk", true }, @@ -7164,6 +7511,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cloud.google.com", true }, { "cloud.gov", true }, { "cloud42.ch", false }, + { "cloud58.org", true }, { "cloud9bouncycastlehire.com", true }, { "cloudapps.digital", true }, { "cloudbolin.es", true }, @@ -7171,18 +7519,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cloudbrothers.info", true }, { "cloudcactuar.com", false }, { "cloudcaprice.net", true }, + { "cloudcite.net", true }, { "cloudcloudcloud.cloud", true }, { "cloudconsulting.net.za", true }, { "cloudconsulting.org.za", true }, { "cloudconsulting.web.za", true }, { "cloudey.net", true }, + { "cloudfiles.at", true }, { "cloudflare-dns.com", true }, { "cloudflare.com", true }, { "cloudflareonazure.com", true }, { "cloudia.org", true }, { "cloudily.com", true }, - { "cloudimproved.com", true }, + { "cloudkeep.nl", true }, { "cloudkit.pro", false }, + { "cloudlessdreams.com", true }, { "cloudlight.biz", true }, { "cloudnote.cc", true }, { "cloudns.net", true }, @@ -7190,9 +7541,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cloudoptimus.com", true }, { "cloudpengu.in", true }, { "cloudpipes.com", true }, + { "cloudse.co.uk", true }, { "cloudsecurityalliance.org", true }, { "cloudservice.io", true }, { "cloudservices.nz", true }, + { "cloudsign.jp", true }, { "cloudsocial.io", true }, { "cloudspace-analytics.com", true }, { "cloudspeedy.net", true }, @@ -7206,35 +7559,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "clownindeklas.nl", true }, { "cloxy.com", true }, { "clr3.com", true }, + { "clsfoundationrepairandwaterproofing.com", true }, { "clsimage.com", true }, { "clsoft.ch", true }, { "clu-in.org", true }, { "club-adulti.ro", true }, { "club-corsicana.de", true }, + { "club-creole.com", true }, { "club-duomo.com", true }, { "club-is.ru", true }, + { "club-premiere.com", true }, { "club-reduc.com", true }, + { "club-slow.jp", true }, + { "club-yy.com", true }, { "club103.ch", true }, + { "clubcorsavenezuela.com", true }, { "clubdelzapato.com", true }, { "clubedalutashop.com", true }, { "clubefiel.com.br", true }, { "clubempleos.com", true }, { "clubeohara.com", true }, { "clubfamily.de", true }, + { "clubgalaxy.futbol", true }, { "clubiconkenosha.com", true }, - { "clubmate.rocks", true }, { "clubmini.jp", true }, { "clubnoetig-ink2g.de", true }, { "clubon.space", true }, { "clubscannan.ie", true }, { "clueful.ca", true }, - { "cluefulca.com", true }, - { "cluefulca.net", true }, - { "cluefulca.org", true }, + { "cluster.biz.tr", true }, { "clusteranalyse.net", true }, { "clusterfuck.nz", true }, { "clustermaze.net", true }, { "clweb.ch", true }, + { "cm.center", true }, + { "cm3.pw", true }, { "cmacacias.ch", true }, { "cmadeangelis.it", true }, { "cmahy.be", true }, @@ -7244,7 +7603,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cmfaccounting.com", true }, { "cmftech.com", true }, { "cmillrehab.com", true }, - { "cmitao.com", true }, { "cmlachapelle.ch", true }, { "cmlancy.ch", true }, { "cmlignon.ch", true }, @@ -7273,6 +7631,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cnet-hosting.com", true }, { "cni-certing.it", true }, { "cnre.eu", true }, + { "cnvt.fr", true }, { "co-factor.ro", true }, { "co-founder-stuttgart.de", true }, { "co.search.yahoo.com", false }, @@ -7283,7 +7642,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "coaching-impulse.ch", true }, { "coalitionministries.org", true }, { "coalpointcottage.com", true }, - { "coam.co", true }, { "coastline.net.au", true }, { "coathangastrangla.com", true }, { "coathangastrangler.com", true }, @@ -7302,7 +7660,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "coco-line.ch", true }, { "cocoaheads.at", false }, { "cocoamexico.com", true }, - { "cocodemy.com", true }, { "cocodroid.com", true }, { "coconutoil24.com", true }, { "cocoscastles.co.uk", true }, @@ -7331,6 +7688,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "codeine.co.uk", true }, { "codeit.guru", true }, { "codeit.us", true }, + { "codejots.com", true }, + { "codejunkie.de", false }, { "codemonster.eu", true }, { "codenode.io", true }, { "codeofthenorth.com", true }, @@ -7339,7 +7698,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "codepult.com", true }, { "codera.co.uk", true }, { "codercross.com", true }, - { "codercy.com", true }, { "codereview.appspot.com", false }, { "codereview.chromium.org", false }, { "coderme.com", true }, @@ -7359,6 +7717,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "codeventure.de", true }, { "codeversetech.com", true }, { "codewild.de", true }, + { "codexpo.net", true }, { "codeyellow.nl", true }, { "codific.com", true }, { "codific.eu", true }, @@ -7369,11 +7728,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "coding.net", true }, { "codingforspeed.com", true }, { "codingfromhell.net", true }, + { "codinginfinity.me", true }, { "codingrobots.com", true }, { "codxg.org", true }, { "codyevanscomputer.com", true }, { "codymoniz.com", true }, { "codyqx4.com", true }, + { "coentropic.com", true }, { "coffee-mamenoki.jp", true }, { "coffeeandteabrothers.com", true }, { "coffeetocode.me", true }, @@ -7400,7 +7761,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "coincoin.eu.org", true }, { "coincolors.co", true }, { "coindatabase.net", true }, - { "coinessa.com", true }, { "coinf.it", true }, { "coinflux.com", true }, { "coingate.com", true }, @@ -7409,6 +7769,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "coinloan.io", true }, { "coinmewallet.com", true }, { "coinpit.io", true }, + { "coins2001.ru", true }, { "coinx.pro", true }, { "coisasdemulher.org", true }, { "cojam.ru", true }, @@ -7418,7 +7779,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "colaborativa.tv", true }, { "colapsys.net", true }, { "colasjourdain.fr", true }, - { "coldaddy.com", true }, { "coldawn.com", false }, { "coldfff.com", false }, { "coldhak.ca", true }, @@ -7448,9 +7808,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "collabornation.net", true }, { "collaction.hk", true }, { "collada.org", true }, - { "collbox.co", true }, { "collectdocs.com", true }, { "collectfood.com", true }, + { "collectiblebeans.com", true }, { "collectivesupply.com", true }, { "collectorknives.net", true }, { "collectorsystems.com", true }, @@ -7472,18 +7832,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "colorectalcompounding.com", true }, { "colorfuldots.com", true }, { "colorhexa.com", true }, - { "coloringnotebook.com", true }, { "coloristcafe.com", true }, - { "colorlifesupport.com", true }, { "colorsbycarin.com", true }, { "colossal-events.co.uk", true }, { "colourfulcastles.co.uk", true }, { "colpacpackaging.com", true }, { "colson-occasions.be", true }, + { "coltonrb.com", true }, { "columbuswines.com", true }, { "colyakootees.com", true }, { "com-in.de", true }, + { "com-news.io", true }, { "comalia.com", true }, + { "comandofilmes.club", true }, { "comarkinstruments.net", true }, { "combatircelulitis.com", true }, { "combattrecellulite.com", true }, @@ -7492,15 +7853,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "combron.com", true }, { "combron.nl", true }, { "comcol.nl", true }, - { "comdotgame.com", true }, { "comdurav.com", true }, + { "comeals.com", true }, + { "comeoishii.com", true }, { "comercialtpv.com", true }, { "comerford.net", true }, { "comestoarra.com", true }, { "cometbot.cf", true }, { "cometcache.com", true }, - { "cometonovascotia.ca", true }, - { "cometrueunlimited.com", true }, + { "comevius.com", true }, + { "comevius.org", true }, + { "comevius.xyz", true }, { "comff.net", true }, { "comfintouch.com", true }, { "comflores.com.br", true }, @@ -7512,6 +7875,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "comidasperuanas.net", true }, { "comiteaintriathlon.fr", true }, { "comm.cx", true }, + { "commania.co.kr", true }, { "commco.nl", true }, { "commechezvous.ch", true }, { "commerce.gov", true }, @@ -7524,6 +7888,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "commoncore4kids.com", true }, { "communityblog.fedoraproject.org", true }, { "communitycodeofconduct.com", true }, + { "communityflow.info", true }, { "communote.net", true }, { "como-se-escribe.com", true }, { "comocurarlagastritistratamientonatural.com", true }, @@ -7535,15 +7900,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "comogene.com", true }, { "comohacerelamoraunhombrenet.com", true }, { "comohacerpara.com", true }, - { "comoimportar.net", true }, { "comopuededejardefumar.net", true }, { "comoquitarlacaspa24.com", true }, { "comoquitarlasestriasrapidamente.com", true }, - { "comorecuperaratumujerpdf.com", true }, { "comosatisfaceraunhombreenlacamaydejarloloco.com", true }, - { "comosecarabarriga.net", true }, - { "comoseduzir.net", true }, + { "comosefazisto.com.br", true }, { "comp2go.com.au", true }, + { "compactchess.cc", true }, { "compagnia-buffo.de", true }, { "compagniemartin.com", true }, { "comparatif-moto.fr", true }, @@ -7568,6 +7931,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "complexart.ro", true }, { "complexsystems.fail", true }, { "compliance-management.ch", true }, + { "compliance-systeme.de", true }, { "compliancedictionary.com", true }, { "compliancerisksoftware.co.uk", true }, { "compostatebien.com.ar", true }, @@ -7575,6 +7939,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "compraneta.com", false }, { "compreautomacao.com.br", true }, { "compree.com", true }, + { "compros.me", true }, + { "compservice.in.ua", true }, + { "comptu.com", true }, { "compubench.com", true }, { "compucastell.ch", true }, { "compucorner.mx", true }, @@ -7586,6 +7953,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "computerassistance.co.uk", true }, { "computerbas.nl", true }, { "computerbase.de", true }, + { "computercraft.net", true }, { "computerhilfe-feucht.de", true }, { "computernetwerkwestland.nl", true }, { "computerslotopschool.nl", true }, @@ -7594,6 +7962,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "comunidadmontepinar.es", true }, { "comw.cc", true }, { "conalcorp.com", true }, + { "conatus.ai", true }, { "conaudisa.com", false }, { "concept-web.ch", true }, { "concertengine.com", true }, @@ -7601,6 +7970,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "concertsenboite.fr", true }, { "concertsto.com", true }, { "conciliumnotaire.ca", true }, + { "concordsoftwareleasing.com", true }, + { "concretelevelingsystems.com", true }, { "concreterepairatlanta.com", true }, { "concursopublico.com.br", true }, { "concursos.com.br", true }, @@ -7622,24 +7993,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "conejovalleylandscapelighting.com", true }, { "conejovalleylighting.com", true }, { "conejovalleyoutdoorlighting.com", true }, + { "conexiontransporte.com", true }, { "confiancefoundation.org", true }, { "confidential.network", true }, { "config.schokokeks.org", false }, { "confiwall.de", true }, - { "conflux.tw", true }, { "conformax.com.br", true }, { "conformist.jp", true }, + { "confucio.cl", true }, { "confuddledpenguin.com", true }, { "cong5.net", true }, { "congineer.com", true }, { "congobunkering.com", true }, { "conju.cat", true }, { "conjugacao.com.br", true }, - { "conkret.ch", true }, { "conkret.de", true }, - { "conkret.mobi", true }, { "conmedapps.com", true }, + { "conn.cx", true }, { "connect-ed.network", true }, + { "connect-me.com", true }, { "connect.dating", true }, { "connect.facebook.net", true }, { "connecta.store", true }, @@ -7649,21 +8021,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "connectmy.car", true }, { "connecto-data.com", true }, { "connectum.eu", true }, + { "conner.work", true }, { "connexas.eu", true }, { "connext.de", true }, { "connictro.de", true }, - { "conniesacademy.com", true }, - { "connorsmith.co", true }, + { "connorhatch.com", true }, { "connyduck.at", true }, + { "conociendosalama.com", true }, { "conocimientosdigitales.com", true }, { "conory.com", true }, + { "conpins.nl", true }, { "conrad-kostecki.de", true }, { "conradkostecki.de", true }, { "conrail.blue", true }, + { "consagracionamariasantisima.org", true }, { "consciousbrand.co", true }, { "consciouschoices.net", true }, { "consec-systems.de", true }, - { "conseil-gli.fr", true }, { "consejosdenutricion.com", true }, { "consensoprivacy.it", true }, { "conservados.com.br", true }, @@ -7679,14 +8053,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "constancechen.me", true }, { "constant-rough.de", true }, { "constares.de", true }, - { "construct-trust.com", true }, { "constructexpres.ro", true }, + { "constructieve.nl", true }, { "construction-student.co.uk", true }, { "constructionjobs.com", true }, { "consul.io", true }, { "consulenza.pro", true }, + { "consultation.biz.tr", true }, { "consultimator.com", true }, { "consultimedia.de", true }, + { "consultoriosodontologicos.com.br", true }, { "consultpetkov.com", true }, { "consulvation.com", true }, { "consumeractionlawgroup.com", true }, @@ -7695,6 +8071,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "consuwijzer.nl", true }, { "contactsingapore.sg", true }, { "contaquanto.com.br", true }, + { "contemplativeeducation.org", true }, { "content-api-dev.azurewebsites.net", false }, { "content-design.de", true }, { "contentcoms.co.uk", true }, @@ -7705,6 +8082,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "conti-profitlink.co.uk", true }, { "continuum.memorial", true }, { "contrabass.net", true }, + { "contractdigital.co.uk", true }, { "contractormountain.com", true }, { "contractwriters.com", true }, { "contraspin.co.nz", true }, @@ -7714,6 +8092,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "controlautocom.com.br", true }, { "controlbooth.com", true }, { "controle.net", true }, + { "controleer-maar-een-ander.nl", true }, { "controltickets.com.br", true }, { "contxt-agentur.de", true }, { "conv2pdf.com", true }, @@ -7737,7 +8116,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cookiecrook.com", true }, { "cookielab.io", true }, { "cookiesoft.de", true }, - { "cookingbazart.com", true }, { "cookingcrusade.com", true }, { "cookinglife.nl", false }, { "cookingreporter.com", true }, @@ -7747,15 +8125,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cookwithmanali.com", true }, { "cool-parties.co.uk", true }, { "cool-wallpapers.jp", true }, + { "cool110.tk", true }, + { "cool110.xyz", true }, { "coolattractions.co.uk", true }, + { "coolbitx.com", true }, { "cooldan.com", true }, { "coole-fete.de", true }, - { "coolerssr.space", true }, { "coolgifs.de", true }, { "coolprylar.se", true }, { "coolrc.me", true }, { "coolviewthermostat.com", true }, { "coolwallet.io", true }, + { "coonawarrawines.com.au", true }, { "coopens.com", true }, { "coor.fun", true }, { "coore.jp", true }, @@ -7764,7 +8145,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "copinstant.com", true }, { "copperhead.co", true }, { "copperheados.com", true }, + { "coppermein.co.za", true }, { "copplaw.com", true }, + { "copta-imagefilme-und-drohnenvideos.de", true }, { "coptkm.cz", true }, { "copycaught.co", true }, { "copycaught.net", true }, @@ -7773,7 +8156,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "copycrafter.net", true }, { "copypoison.com", true }, { "copyright-watch.org", true }, - { "copytrack.com", true }, + { "coquibus.net", true }, { "corbi.net.au", true }, { "cordep.biz", true }, { "corder.tech", true }, @@ -7784,7 +8167,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "core-concepts.de", false }, { "core-networks.de", true }, { "core.mx", true }, - { "core.org.pt", false }, + { "core.org.pt", true }, { "coreapm.org", true }, { "corecodec.com", true }, { "coredump.gr", true }, @@ -7792,11 +8175,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "corelia.net", true }, { "corepartners.com.ua", true }, { "coresolutions.ca", true }, - { "coresos.com", true }, { "coreum.ca", true }, { "coreyjmahler.com", true }, { "corgi.party", true }, { "coribi.com", true }, + { "corinastefan.ro", true }, { "corintech.net", true }, { "corisu.co", true }, { "corkedwinebar.com", true }, @@ -7808,6 +8191,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cornerstonecmc.org", true }, { "corniche.com", true }, { "corningcu.org", true }, + { "cornodo.com", true }, { "corona-academy.com", true }, { "corona-renderer.cloud", true }, { "corona-renderer.com", true }, @@ -7820,6 +8204,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "corporateclash.net", true }, { "corporatecomputingsolutions.com", true }, { "corporateinfluencers.com", true }, + { "corporativoarval.info", true }, { "corpsepaint.life", true }, { "corpulant.coffee", true }, { "corpulantcoffee.com", true }, @@ -7828,6 +8213,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "corpusslayer.com", true }, { "corrbee.com", true }, { "correctiv.org", true }, + { "corrick.io", true }, { "corrupted.io", true }, { "corsa-b.uk", true }, { "corsectra.com", true }, @@ -7858,6 +8244,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cospol.ch", true }, { "costa-rica-reisen.ch", true }, { "costa-rica-reisen.de", true }, + { "costablanca.villas", true }, { "costablancavoorjou.com", true }, { "costcofinance.com", true }, { "costinstefan.eu", true }, @@ -7872,24 +8259,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "counter-team.ch", true }, { "counterglobal.com", true }, { "countermail.com", true }, + { "countermats.net", true }, + { "countersolutions.co.uk", true }, { "countingto.one", true }, { "countryattire.com", true }, { "countrybrewer.com.au", true }, { "countryfrog.uk", true }, { "countryhouseresort.com", true }, - { "countryoutlaws.ca", true }, { "countybankdel.com", true }, { "countyjailinmatesearch.com", true }, { "coupe-bordure.com", true }, { "couponcodesme.com", true }, - { "cour4g3.me", true }, { "couragefound.org", true }, { "coursables.com", true }, { "coursera.org", true }, { "courtlistener.com", true }, { "couscous.recipes", true }, + { "cousincouples.com", true }, { "coussinsky.net", true }, + { "couvreur-hinault.fr", true }, { "covbounce.co.uk", true }, + { "covenantmatrix.com", true }, { "covenantoftheriver.org", true }, { "covermytrip.com.au", true }, { "covershousing.nl", true }, @@ -7918,10 +8308,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cpqcol.gov.co", true }, { "cprheartcenter.com", true }, { "cprnearme.com", true }, - { "cptoon.com", true }, + { "cpu.biz.tr", true }, { "cpvmatch.eu", true }, { "cpy.pt", true }, - { "cqchome.com", true }, { "cqn.ch", true }, { "cr.search.yahoo.com", false }, { "cr0nus.net", true }, @@ -7938,7 +8327,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "craftinginredlipstick.com", true }, { "craftist.de", true }, { "craftsmandruggets.com", true }, - { "craftwmcp.xyz", true }, { "craftyguy.net", true }, { "craftyphotons.net", true }, { "crag.com.tw", true }, @@ -7952,8 +8340,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cranforddental.com", true }, { "crapouill.es", true }, { "crawcial.de", true }, + { "crawford.cloud", true }, { "crawfordcountytcc.org", true }, { "crawl.report", true }, + { "crawler.ninja", true }, { "crawleybouncycastles.co.uk", true }, { "crawlspaceandbasementsolutions.com", true }, { "crazy-coders.com", true }, @@ -7976,14 +8366,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "crealogix-online.com", true }, { "creamcastles.co.uk", true }, { "creared.edu.co", true }, - { "create-ls.jp", true }, { "create-together.nl", true }, { "createme.com.pl", true }, { "createursdefilms.com", true }, { "creatieven.com", true }, { "creation-contemporaine.com", true }, { "creations-edita.com", true }, - { "creative-coder.de", false }, { "creative-wave.fr", true }, { "creativebites.de", true }, { "creativecaptiv.es", true }, @@ -7992,8 +8380,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "creativecommons.org", true }, { "creativeconceptsvernon.com", true }, { "creativedigital.co.nz", true }, - { "creativefolks.co.uk", true }, { "creativefreedom.ca", true }, + { "creativeglassgifts.com.au", true }, { "creativeink.de", true }, { "creativekkids.com", true }, { "creativelaw.eu", true }, @@ -8008,7 +8396,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "creators.co", true }, { "creators.direct", true }, { "creatujoya.com", true }, - { "crecips.com", true }, { "credential.eu", true }, { "credex.bg", true }, { "credigo.se", true }, @@ -8026,7 +8413,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "crem.in", false }, { "cremepassion.de", true }, { "crena.ch", true }, - { "creorin.com", true }, { "crepa.ch", true }, { "crepererum.net", true }, { "crescent.gr.jp", true }, @@ -8036,7 +8422,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cretica.no", true }, { "creusalp.ch", true }, { "crew505.org", true }, - { "crge.eu", true }, + { "crgalvin.com", true }, { "crgm.net", true }, { "criadorespet.com.br", true }, { "cribcore.com", true }, @@ -8048,6 +8434,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "criminal-attorney.ru", true }, { "criminal.enterprises", true }, { "crimson.no", true }, + { "crinesdanzantes.be", true }, { "crip-usk.ba", true }, { "crisisactual.com", true }, { "crisisnextdoor.gov", true }, @@ -8059,7 +8446,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cristarta.com", true }, { "cristau.org", true }, { "cristiandeluxe.com", false }, - { "critcola.com", true }, { "critical.today", false }, { "criticalsurveys.co.uk", true }, { "crizin.io", true }, @@ -8067,7 +8453,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "croceverdevb.it", true }, { "crochetnerd.com", true }, { "croisedanslemetro.com", true }, - { "croisieres.discount", true }, { "croixblanche-haguenau.fr", true }, { "cromefire.myds.me", true }, { "cronberg.ch", true }, @@ -8093,11 +8478,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "crossorig.in", true }, { "crossoverit.com", true }, { "crosssellguide.com", true }, + { "crow.tw", true }, { "crowdbox.net", true }, { "crowdcloud.be", true }, { "crowdliminal.com", true }, + { "crowdsim3d.com", true }, { "crowdsupply.com", true }, - { "crowdwis.com", true }, { "crowncastles.co.uk", true }, { "crownchessclub.com", true }, { "crownmarqueehire.co.uk", true }, @@ -8107,12 +8493,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "croydonbouncycastles.co.uk", true }, { "crrev.com", true }, { "crstat.ru", true }, + { "crt.sh", true }, { "crt2014-2024review.gov", true }, { "crumbcontrol.com", true }, { "crunchrapps.com", true }, { "crunchy.rocks", true }, { "crustytoothpaste.net", true }, { "crute.me", true }, + { "cruzadobalcazarabogados.com", true }, { "crvv.me", true }, { "cry.nu", false }, { "cryoit.com", true }, @@ -8123,20 +8511,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "crypted.chat", true }, { "crypteianetworks.com", true }, { "crypticshell.co.uk", true }, - { "crypto-armory.com", true }, { "crypto-navi.org", true }, { "crypto.cat", false }, { "crypto.graphics", true }, { "crypto.is", false }, + { "crypto.tube", true }, { "cryptobin.co", true }, { "cryptocon.org", true }, + { "cryptodyno.ninja", true }, + { "cryptoegg.ca", true }, { "cryptofan.org", true }, + { "cryptofrog.co", true }, { "cryptography.ch", true }, { "cryptography.io", true }, { "cryptoguidemap.com", true }, { "cryptojourney.com", true }, { "cryptolinc.com", true }, { "cryptology.ch", true }, + { "cryptolosophy.io", true }, { "cryptolosophy.org", true }, { "cryptonom.org", true }, { "cryptonym.com", true }, @@ -8155,6 +8547,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "crystalapp.ca", true }, { "crystalchandelierservices.com", true }, { "crystalgrid.net", true }, + { "crystallizedcouture.com", true }, { "crystone.me", true }, { "cryz.ru", true }, { "cs2016.ch", true }, @@ -8170,16 +8563,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "csfloors.co.uk", true }, { "csfm.com", true }, { "csgo.su", true }, - { "csgohandouts.com", true }, { "csgoswap.com", true }, { "csgotwister.com", true }, { "csharpmarc.net", true }, { "cshopify.com", true }, { "csi.lk", true }, + { "csinterstargeneve.ch", true }, + { "cskdoc.com", true }, { "cskentertainment.co.uk", true }, { "csmainframe.com", true }, { "csokolade.hu", true }, { "csp.ch", true }, + { "cspeti.hu", true }, { "cspvalidator.org", true }, { "csrichter.com", true }, { "csru.net", true }, @@ -8192,7 +8587,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "csu.st", true }, { "csuw.net", true }, { "csvalpha.nl", true }, - { "cswarzone.com", true }, { "ct.search.yahoo.com", false }, { "ctc-transportation.com", true }, { "ctcue.com", true }, @@ -8200,15 +8594,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cthomas.work", true }, { "cthulhuden.com", true }, { "ctj.im", true }, - { "ctliu.com", true }, + { "ctl.email", true }, { "ctnguyen.de", true }, { "ctnguyen.net", true }, { "ctns.de", true }, { "ctoforhire.com.au", true }, { "ctomp.io", true }, + { "ctoresms.com", true }, { "ctpe.net", true }, { "ctrld.me", true }, - { "ctyi.me", true }, { "cu247secure.ie", true }, { "cub-bouncingcastles.co.uk", true }, { "cube-cloud.com", true }, @@ -8216,9 +8610,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cubecart-demo.co.uk", true }, { "cubecart-hosting.co.uk", true }, { "cubecraft.net", true }, - { "cubecraftstore.com", true }, - { "cubecraftstore.net", true }, { "cubekrowd.net", true }, + { "cubetech.co.jp", true }, { "cubia.de", true }, { "cubia3.com", true }, { "cubia4.com", true }, @@ -8242,36 +8635,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cultofd50.org", true }, { "cultofperf.org.uk", true }, { "culturedcode.com", true }, - { "cultureelbeleggen.nl", true }, { "culturerain.com", true }, { "cultureroll.com", true }, + { "culturesouthwest.org.uk", true }, + { "cumberlandrivertales.com", true }, { "cumplegenial.com", true }, - { "cunha.be", true }, { "cuoc.org.uk", true }, { "cup.al", true }, { "cupcakesandcrinoline.com", true }, { "cupcao.gov", true }, { "cupi.co", true }, - { "cupofarchitects.net", true }, { "cupom.net", true }, { "cuppycakes.fi", true }, { "cur.by", true }, { "curacao-firma.com", true }, { "curamail.co.uk", true }, { "curareldolordeespalda.com", true }, + { "curatedgeek.com", true }, { "curbside.com", true }, { "curia.fi", true }, { "curieux.digital", true }, { "curio-shiki.com", true }, { "curiosity-driven.org", true }, + { "curiouspeddler.com", true }, { "curlybracket.co.uk", true }, { "currency-strength.com", true }, { "currentlystreaming.com", true }, + { "currentlyusa.com", true }, { "currentobserver.com", true }, { "currynissanmaparts.com", true }, { "cursos.com", true }, + { "cursosforex.com", true }, { "cursosgratuitos.com.br", true }, { "cursosingles.com", true }, + { "cursossena.co", true }, { "cursuri-de-actorie.ro", true }, { "curtacircuitos.com.br", false }, { "curtis-smith.me.uk", true }, @@ -8279,6 +8676,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "curtislinville.net", true }, { "curtissmith.me.uk", true }, { "curtissmith.uk", true }, + { "curva.co", true }, { "curveprotect.com", true }, { "curveprotect.cz", true }, { "curveprotect.net", true }, @@ -8287,14 +8685,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "curvissa.co.uk", true }, { "custerweb.com", true }, { "custodyxchange.com", true }, + { "custombikes.cl", true }, { "customdissertation.com", true }, { "customerbox.ir", true }, { "customfitbymj.net", true }, { "customfitmarketing.com", true }, { "customgear.com.au", true }, - { "customizeyourshower.com", true }, { "customizeyoursink.com", true }, - { "customromlist.com", true }, { "customshort.link", true }, { "customwritingservice.com", true }, { "customwritten.com", true }, @@ -8335,7 +8732,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cwgaming.co.uk", true }, { "cwinfo.fi", true }, { "cwmart.in", true }, - { "cwningen.cymru", false }, + { "cwrau.com", true }, + { "cwrau.de", true }, + { "cwrau.info", true }, + { "cwrau.io", true }, + { "cwrau.me", true }, + { "cwrau.name", true }, + { "cwrau.rocks", true }, + { "cwrau.tech", true }, { "cwrcoding.com", true }, { "cy.ax", true }, { "cyber.cafe", true }, @@ -8345,8 +8749,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cybercocoon.com", true }, { "cybercrew.cc", true }, { "cybercrime-forschung.de", true }, + { "cybercrime.gov", true }, + { "cybercymru.co.uk", true }, { "cyberduck.io", true }, - { "cyberdyne-industries.net", true }, { "cyberexplained.info", true }, { "cyberfrancais.ro", true }, { "cybergrx.com", true }, @@ -8362,12 +8767,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cyberpubonline.com", true }, { "cyberregister.nl", true }, { "cyberregister.org", true }, - { "cybersantri.com", true }, + { "cybersafesolutions.com", true }, + { "cyberscan.io", true }, { "cybersecurity.nz", true }, + { "cybersecurity.run", true }, { "cybersecuritychallenge.be", true }, { "cybersecurityketen.nl", true }, { "cyberseguranca.com.br", true }, - { "cyberserver.org", true }, { "cybersins.com", true }, { "cybersmart.co.uk", true }, { "cybersmartdefence.com", true }, @@ -8380,10 +8786,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cyberwars.dk", true }, { "cyberwire.nl", true }, { "cyberxpert.nl", true }, + { "cybit.io", true }, { "cybozu.cn", true }, { "cybozu.com", true }, { "cybozulive-dev.com", true }, { "cybozulive.com", true }, + { "cybrary.it", true }, { "cyclebeads.com", true }, { "cycleluxembourg.lu", true }, { "cyclisjumper.gallery", true }, @@ -8398,6 +8806,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cykelbanor.se", true }, { "cylindricity.com", true }, { "cyon.ch", true }, + { "cypad.cn", true }, { "cype.dedyn.io", true }, { "cyph.audio", true }, { "cyph.com", true }, @@ -8408,8 +8817,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cyph.video", true }, { "cyph.ws", true }, { "cypherpunk.at", true }, - { "cypherpunk.com", true }, - { "cypressinheritancesaga.com", true }, + { "cypherpunk.observer", true }, { "cypresslegacy.com", true }, { "cyprus-company-service.com", true }, { "cyrating.com", true }, @@ -8419,20 +8827,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cytegic-update-packages.com", true }, { "cyumus.com", true }, { "cyyzaid.cn", true }, + { "czakey.net", true }, { "czbix.com", true }, + { "czbtm.com", true }, { "czc.cz", true }, { "czechamlp.com", true }, { "czechvirus.cz", true }, { "czerno.com", true }, { "czfa.pl", true }, + { "czk.mk", true }, { "d-20.fr", true }, { "d-designerin.de", true }, { "d-eisenbahn.com", true }, { "d-loop.de", true }, { "d-msg.com", true }, + { "d-parts.de", true }, { "d-parts24.de", true }, { "d-quantum.com", true }, - { "d-toys.com.ua", true }, { "d-training.de", true }, { "d.nf", true }, { "d.nr", true }, @@ -8442,6 +8853,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "d0m41n.name", true }, { "d0xq.com", true }, { "d2s.uk", true }, + { "d3lab.net", true }, { "d3njjcbhbojbot.cloudfront.net", true }, { "d3xt3r01.tk", true }, { "d3xx3r.de", true }, @@ -8453,6 +8865,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "da.hn", true }, { "da42foripad.com", true }, { "daallexx.eu", true }, + { "dabasstacija.lv", true }, + { "dabneydriveanimalhospital.com", true }, { "dabuttonfactory.com", true }, { "dachb0den.net", true }, { "dachdecker-ranzenberger.de", true }, @@ -8468,6 +8882,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dadrian.io", true }, { "daduke.org", true }, { "daemen.org", true }, + { "daemon.xin", true }, { "daemonslayer.net", true }, { "daemwool.ch", true }, { "daevel.fr", true }, @@ -8480,6 +8895,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dagmar2018.cz", true }, { "dahlberg.cologne", true }, { "dai.top", true }, + { "daigakujuken-plus.com", true }, { "daikoz.com", true }, { "dailybits.be", true }, { "dailyblogged.com", true }, @@ -8489,6 +8905,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dailyxenang.com", true }, { "daintymeal.com", true }, { "dairyshrine.org", true }, + { "daisakuikeda.org", true }, { "daisidaniels.co.uk", true }, { "daisy-peanut.com", true }, { "daisypeanut.com", true }, @@ -8511,6 +8928,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dalmatiersheusden.be", true }, { "damaged.org", true }, { "damasexpress.com", true }, + { "damedrogy.cz", true }, { "damghaem.ir", true }, { "damicris.ro", true }, { "damienoreilly.org", true }, @@ -8521,9 +8939,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "damngoodpepper.com", false }, { "damongant.de", true }, { "damonline.dk", true }, + { "dampedia.com", true }, { "dan-informacijske-varnosti.si", true }, { "dan.me.uk", true }, - { "dan.org.nz", true }, { "danaketh.com", true }, { "danamica.dk", true }, { "danandrum.com", true }, @@ -8535,40 +8953,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dandenongroadapartments.com.au", true }, { "daneandthepain.com", true }, { "danhalliday.com", true }, + { "danholloway.online", true }, { "daniel-baumann.ch", true }, { "daniel-cholewa.de", true }, { "daniel-du.com", true }, { "daniel-kulbe.de", true }, { "daniel-milnes.uk", true }, { "daniel-ruf.de", true }, + { "daniel-wildhaber.ch", true }, { "danielalvarez.net", true }, { "danielas.boutique", true }, { "danielehniss.de", true }, { "danielepestilli.com", true }, { "danielgorr.de", true }, - { "danielheal.net", true }, { "danielhinterlechner.eu", true }, { "danielhochleitner.de", true }, { "danieljamesscott.org", true }, { "danieljireh.com", true }, { "danielkoster.nl", true }, { "daniellockyer.com", true }, - { "danielmarquard.com", true }, { "danielmartin.de", true }, { "danielmoch.com", true }, - { "danielmostertman.com", false }, - { "danielmostertman.nl", false }, + { "danielmorell.com", true }, + { "danielmostertman.com", true }, + { "danielmostertman.nl", true }, { "danielpeukert.cz", true }, + { "danielran.com", true }, { "danielrozenberg.com", true }, { "danielsblog.org", true }, { "danielschreurs.com", true }, + { "danielsfirm.com", true }, { "danielstach.cz", true }, { "danielsteiner.net", true }, { "danielstiner.me", true }, - { "danielt.co.uk", true }, - { "danielthompson.info", true }, { "danieltollot.de", true }, { "danielvoogsgerd.nl", true }, + { "danielwildhaber.ch", true }, { "danifabi.eu", true }, { "danilapisarev.com", true }, { "danjesensky.com", true }, @@ -8586,13 +9006,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "danny.fm", true }, { "dannycairns.com", true }, { "dannyrohde.de", true }, + { "dannystevens.co.uk", true }, { "danonsecurity.com", true }, { "danotage.tv", true }, - { "danova.de", true }, { "danoz.net", true }, { "danpiel.net", true }, - { "dansage.co", true }, + { "dansa.com.co", true }, { "danscomp.com", true }, + { "dansdiscounttools.com", true }, { "danselibre.net", true }, { "danselibre.org", true }, { "danseressen.nl", true }, @@ -8609,8 +9030,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "danyabanya.com", true }, { "dao.spb.su", true }, { "daoro.net", true }, + { "daphne.informatik.uni-freiburg.de", true }, { "dapim.co.il", true }, { "daplie.com", true }, + { "dappworld.com", true }, { "daracokorilo.com", true }, { "daravk.ch", true }, { "darbi.org", true }, @@ -8621,9 +9044,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "daren.com.br", true }, { "dareyou.be", true }, { "dariaburger.de", true }, - { "darinjohnson.ca", true }, { "darinkotter.com", true }, { "darioackermann.ch", true }, + { "darioclip.com", true }, { "darioturchetti.me", true }, { "darisni.me", true }, { "dark-infection.de", true }, @@ -8632,10 +9055,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "darkcores.net", true }, { "darkengine.io", true }, { "darkengine.net", true }, + { "darkerlystormy.com", true }, + { "darkerstormy.com", true }, { "darkeststar.org", true }, { "darkfire.ch", true }, + { "darknessflickers.com", true }, { "darknetlive.com", true }, { "darknight.blog", true }, + { "darkrisks.com", true }, { "darkroomsaredead.com", true }, { "darkserver.fedoraproject.org", true }, { "darkserver.stg.fedoraproject.org", true }, @@ -8644,10 +9071,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "darkspacelab.com", true }, { "darktime.ru", true }, { "darkwater.info", true }, - { "darkwebkittens.xyz", true }, { "darkx.me", true }, { "darom.jp", true }, { "darookee.net", false }, + { "daropia.org", true }, { "darshnam.com", true }, { "dart-tanke.com", true }, { "dart-tanke.de", true }, @@ -8666,29 +9093,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dashboard.run", true }, { "dashlane.com", true }, { "dashnearby.com", true }, + { "dashwebconsulting.com", true }, + { "dasignsource.com", true }, { "dasinternetluegt.at", true }, + { "dasteichwerk.at", true }, { "dasug.de", true }, { "data-detox.de", true }, { "data.gov", true }, { "data.govt.nz", true }, { "data.world", true }, - { "databeam.de", true }, { "databionix.com", true }, { "databutlr.com", true }, { "databutlr.net", true }, { "datacalle.com", true }, { "datacandy.com", true }, - { "datacenternews.asia", true }, - { "datacenternews.co.nz", true }, - { "datacentrenews.eu", true }, + { "datacool.tk", true }, { "datadit.hu", true }, { "datadyne.technology", true }, - { "datafd.com", true }, - { "datafd.net", true }, { "dataformers.at", true }, + { "datagrail.io", true }, { "dataharvest.at", true }, { "datahoarder.xyz", true }, - { "datahoarderschool.club", true }, { "datakick.org", true }, { "datalife.gr", true }, { "datalysis.ch", true }, @@ -8724,7 +9149,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "datingticino.ch", true }, { "datmancrm.com", true }, { "datovyaudit.cz", true }, - { "datsound.ru", true }, { "datumou-osusume.com", true }, { "datumou-recipe.com", true }, { "datumstudio.jp", true }, @@ -8738,6 +9162,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "davepage.me.uk", true }, { "davepearce.com", true }, { "davescomputertips.com", true }, + { "davesharpe.com", true }, { "davesinclair.com.au", true }, { "davetempleton.com", true }, { "davevelopment.net", true }, @@ -8756,6 +9181,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "davidbuckell.com", true }, { "davidcrx.net", true }, { "daviddever.net", true }, + { "davidforward.com", true }, + { "davidforward.net", true }, { "davidfrancoeur.com", true }, { "davidgouveia.net", true }, { "davidgow.net", true }, @@ -8763,9 +9190,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "davidking.xyz", true }, { "davidlamprea.com", true }, { "davidlane.io", true }, - { "davidlillo.com", true }, { "davidlyness.com", true }, + { "davidmcevoy.org.uk", true }, { "davidmessenger.co.uk", true }, + { "davidmn.org", true }, { "davidnadaski.com", true }, { "davidpearce.com", true }, { "davidpearce.org", true }, @@ -8774,13 +9202,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "davidschlachter.com", true }, { "davidsimner.me.uk", true }, { "davidsopas.com", true }, + { "davidtiffany.com", true }, { "davidundetiwan.com", true }, { "davie3.com", true }, - { "davimun.org", true }, { "davisroi.com", true }, { "davo-usedcars.be", true }, { "davy-server.com", true }, { "dawena.de", true }, + { "dawgs.ga", true }, { "dawnbringer.eu", true }, { "dawnbringer.net", true }, { "dawnofeden.net", true }, @@ -8790,7 +9219,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "daycontactlens.com", true }, { "daylight-dream.ee", true }, { "daylightpirates.org", true }, - { "dayman.net", true }, + { "dayman.net", false }, { "daymprove.life", true }, { "dayofdays.be", true }, { "daysoftheyear.com", true }, @@ -8803,6 +9232,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dbdc.us", true }, { "dbentertainment.co.uk", true }, { "dbgamestudio.com", true }, + { "dbjc.tk", true }, { "dblcastles.co.uk", true }, { "dbldub.net", true }, { "dbmiller.org", true }, @@ -8845,6 +9275,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ddproxy.cf", true }, { "ddracepro.net", true }, { "dds.mil", true }, + { "ddy.tw", true }, { "de-gucci.com", true }, { "de-mail.info", true }, { "de-medici.nl", true }, @@ -8853,6 +9284,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "de.search.yahoo.com", false }, { "deadbeef.ninja", true }, { "deadc0de.re", true }, + { "deadinsi.de", true }, { "deaf.dating", true }, { "deaf.eu.org", true }, { "deai-life.biz", true }, @@ -8868,6 +9300,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dealbanana.it", true }, { "dealbanana.se", true }, { "dealcruiser.nl", true }, + { "dealerselectric.com", true }, { "dealinflatables.co.uk", true }, { "dealpass.no", true }, { "deamuseum.org", true }, @@ -8883,10 +9316,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dearfcc.org", true }, { "dearktiel.nl", true }, { "dearnevalleybouncycastles.co.uk", true }, + { "deathofspring.com", true }, { "deathy.ro", true }, + { "debarrasantony.com", true }, + { "debarrasasnieressurseine.com", true }, + { "debarrasboulognebillancourt.com", true }, + { "debarrasclichy.com", true }, + { "debarrascolombes.com", true }, + { "debarrasnanterre.com", true }, { "debbyefurd.com", true }, { "debie-usedcars.be", true }, { "debigare.com", true }, + { "debkleinteam.com", true }, { "debron-ot.nl", true }, { "debrusoft.ch", true }, { "debt.com", true }, @@ -8900,12 +9341,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "decis.fr", true }, { "decisivetactics.com", true }, { "deckbuilderamerica.com", true }, + { "decoating.pl", true }, { "decock-usedcars.be", true }, { "decodeanddestroy.com", true }, { "decoder.link", true }, { "decompiled.de", true }, { "decor-d.com", true }, { "decoratingadvice.co.uk", true }, + { "decoratore.roma.it", true }, { "decoratrix.com", true }, { "decorauvent.ca", true }, { "decorestilo.com.br", true }, @@ -8925,10 +9368,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "deechtebakkers.nl", true }, { "deegeeinflatables.co.uk", true }, { "deelmijnreis.nl", true }, - { "deep.club", true }, - { "deep.social", true }, { "deepaero.com", true }, - { "deeparamaraj.com", true }, { "deepbluecrafting.co.uk", true }, { "deepcode.io", true }, { "deeperxh.com", true }, @@ -8940,7 +9380,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "deepwealth.institute", true }, { "deepz.pt", true }, { "deepzz.com", true }, - { "deer.team", true }, { "deezeno.com", true }, { "def-pos.ru", true }, { "defcon.org", true }, @@ -8960,6 +9399,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "defrax.com", true }, { "defrax.de", true }, { "deftek.com", true }, + { "deftig-und-fein.de", true }, { "deftnerd.com", true }, { "defuse.ca", true }, { "defxing.net", true }, @@ -9020,17 +9460,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "deltafinanceiro.com.br", true }, { "deltaonlineguards.com", true }, { "deltaservers.com.br", true }, + { "deltasigmachi.org", true }, { "deltasmart.ch", true }, { "deltava.org", true }, - { "demarle.ch", true }, { "dementiapraecox.de", true }, { "demeyere-usedcars.be", true }, { "demfloro.ru", true }, { "demijn.nl", true }, { "demilletech.net", true }, { "demmer.one", true }, - { "demo.swedbank.se", true }, - { "demo9.ovh", true }, { "democracychronicles.com", true }, { "democracyineurope.eu", true }, { "democraziaineuropa.eu", true }, @@ -9049,6 +9487,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "denaehula.com", true }, { "denardbrewing.com", true }, { "denbkh.ru", true }, + { "dengchangdong.com", true }, { "dengode.eu", true }, { "denimio.com", true }, { "denimtoday.com", true }, @@ -9067,14 +9506,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dent.uy", true }, { "dentallaborgeraeteservice.de", true }, { "dentfix.ro", true }, + { "dentistesdarveauetrioux.com", true }, { "dentistglasgow.com", true }, { "dentrassi.de", true }, { "dentystabirmingham.co.uk", true }, + { "denwauranailab.com", true }, { "deontology.com", true }, { "depaddestoeltjes.be", true }, { "deparis.me", true }, { "depechemode-live.com", true }, - { "depedshs.com", true }, { "depedtayo.com", true }, { "depicus.com", true }, { "depone.net", true }, @@ -9082,10 +9522,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "depotsquarekerrville.com", true }, { "depotter-usedcars.be", true }, { "deprecate.de", true }, - { "deprobe.pro", true }, - { "depth-co.jp", true }, { "depthe.gr", true }, { "der-bank-blog.de", true }, + { "der-fliesenzauberer.de", true }, { "der-gardinenmann.de", true }, { "der-lan.de", true }, { "der-rudi.eu", true }, @@ -9098,6 +9537,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "derbybouncycastles.com", true }, { "derdewereldrommelmarkt.nl", true }, { "derechosdigitales.org", true }, + { "dereddingsklos.nl", true }, { "dereferenced.net", true }, { "derehamcastles.co.uk", true }, { "derekheld.com", true }, @@ -9127,9 +9567,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "desertsounds.org", true }, { "desgenst.ch", true }, { "design-fu.com", false }, + { "design-in-bad.eu", true }, { "design-tooning.de", true }, { "designdevs.eu", true }, { "designed-cybersecurity.com", true }, + { "designedbygeniuses.com", true }, { "designedcybersecurity.com", true }, { "designer-drug.com", true }, { "designera.se", true }, @@ -9146,6 +9588,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "deskvip.com", true }, { "desmaakvanplanten.be", true }, { "desmo.gg", true }, + { "desormiers.com", true }, { "despachomartinyasociados.com", true }, { "despertadoronline.com.es", true }, { "desplats.com.ar", true }, @@ -9155,15 +9598,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "destileria.net.br", true }, { "destinationsofnewyorkstate.com", true }, { "destinattorneyjohngreene.com", true }, + { "destinopiriapolis.com", true }, { "desu.ne.jp", true }, - { "desveja.com.br", true }, + { "desuperheroes.co", true }, { "det-te.ch", true }, { "detalika.ru", true }, { "detalyedesigngroup.com", true }, { "detectify.com", false }, + { "detectivedesk.com.au", true }, { "detekenmuze.nl", true }, { "dethemium.com", true }, + { "detodojuegos.com", true }, { "detoxetmoi.com", true }, + { "detoxic.vn", true }, { "detoxsinutritie.ro", true }, { "detroit-english.de", true }, { "detroitstylepizza.com", true }, @@ -9172,6 +9619,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "detskysad.com", true }, { "detuinmuze.nl", true }, { "detype.nl", true }, + { "deuchnord.fr", true }, { "deude.de", true }, { "deukie.nl", true }, { "deurenfabriek.nl", true }, @@ -9183,11 +9631,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "deutscher-rollenspielpreis.de", true }, { "deutscheshoponline.com", true }, { "deutschland-dsl.de", true }, - { "deux.solutions", true }, { "deuxmetrescubes.fr", true }, - { "deuxsol.co", true }, - { "deuxsol.com", true }, - { "deuxsolutions.com", true }, { "dev-brandywineglobal.com", true }, { "dev-pulse-mtn.pantheonsite.io", true }, { "dev-tek.de", true }, @@ -9199,9 +9643,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "devct.cz", false }, { "devcu.com", true }, { "devcu.net", true }, + { "devdoodle.net", true }, { "devel.cz", true }, - { "develerik.com", true }, - { "develop.cool", true }, + { "develerik.com", false }, { "developer.android.com", true }, { "developer.mydigipass.com", false }, { "developerdan.com", true }, @@ -9210,6 +9654,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "developfx.com", true }, { "developmentaid.org", true }, { "developmentsites.melbourne", true }, + { "develops.co.il", true }, { "develux.com", true }, { "develux.net", true }, { "devenney.io", true }, @@ -9218,31 +9663,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "devillers-occasions.be", true }, { "devilshakerz.com", true }, { "deviltracks.net", true }, + { "deviltraxxx.de", true }, { "devinfo.net", false }, { "devirc.net", true }, { "devisnow.fr", true }, { "devjack.de", true }, { "devkid.net", true }, + { "devkit.cc", false }, { "devklog.net", true }, { "devlamvzw.org", false }, { "devlatron.net", true }, { "devlogr.com", true }, + { "devnull.zone", true }, { "devolution.ws", true }, { "devonsawatzky.ca", true }, { "devopers.com.br", true }, { "devops-survey.com", true }, { "devpgsv.com", true }, + { "devpsy.info", true }, + { "devragu.com", true }, { "devrandom.net", true }, + { "devsjournal.com", true }, + { "devsrvr.ru", true }, { "devstaff.gr", true }, { "devyn.ca", true }, { "devzero.io", true }, { "dewaard.de", true }, { "dewalch.net", true }, { "dewapress.com", true }, + { "dewebwerf.nl", true }, { "dewinter.com", true }, + { "dex.top", true }, { "dexalo.de", true }, + { "dexigner.com", true }, { "deyute.com", true }, { "dezeregio.nl", true }, + { "dezet-ev.de", true }, { "dezintranet.com", true }, { "dezmembrariromania.ro", true }, { "dezshop24.de", true }, @@ -9255,9 +9711,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dfmn.berlin", true }, { "dfranke.com", true }, { "dg7.in", true }, - { "dgblaw.com.au", true }, + { "dgblaw.com.au", false }, { "dgbouncycastlehire.com", true }, - { "dgby.org", true }, { "dgeex.eu", true }, { "dggm.ru", true }, { "dgitup.com", true }, @@ -9278,11 +9733,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dhuy.net", true }, { "di2pra.com", true }, { "di2pra.fr", true }, + { "diablovalleytech.com", true }, { "diadorafitness.es", true }, { "diadorafitness.it", true }, { "diagnocentro.cl", true }, { "diagnostix.org", true }, - { "dialoegue.com", true }, + { "diagrammingoutloud.co.uk", true }, + { "dialapicnic.co.za", true }, + { "dialectic-og.com", true }, { "diamante.ro", true }, { "diamantovaburza.cz", true }, { "diamondsleepsolutions.com", true }, @@ -9296,6 +9754,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "diario-egipto.com", true }, { "diasdasemana.com", true }, { "diasp.org", true }, + { "diatrofi-ygeia.gr", true }, { "dibiphp.com", true }, { "diccionarioabierto.com", true }, { "diccionariodedudas.com", true }, @@ -9308,6 +9767,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dicionariodesimbolos.com.br", true }, { "dicionarioetimologico.com.br", true }, { "dickieslife.com", true }, + { "dickpics.ru", true }, { "dicoding.com", true }, { "dictionaryofnumbers.com", true }, { "dictzone.com", true }, @@ -9341,7 +9801,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dienstplan.one", true }, { "dierabenmutti.de", true }, { "dierenartsdeconinck.be", true }, - { "dierencompleet.nl", true }, { "dieselanimals.lt", true }, { "dieselgalleri.com", true }, { "diesteppenreiter.de", true }, @@ -9370,21 +9829,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "digibull.link", true }, { "digicert-support.com", true }, { "digicert.nl", true }, + { "digicy.cloud", true }, { "digideli.ee", true }, { "digidroom.be", true }, { "digilicious.com", true }, { "digimagical.com", true }, { "digimedia.cd", false }, - { "diginota.com", true }, { "digioccumss.ddns.net", true }, + { "digipitch.com", true }, { "digired.ro", true }, { "digital-compounds.com", true }, { "digital-eastside.de", true }, { "digital-liberal.ch", true }, + { "digital-muscle.com.au", true }, { "digital.gov", false }, { "digital.govt.nz", true }, { "digital1st.co.uk", true }, - { "digital1world.com", true }, { "digital2web.com", false }, { "digitalarchitecture.com", true }, { "digitalbitbox.com", true }, @@ -9403,10 +9863,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "digitaldem.it", true }, { "digitalehandtekeningen.nl", true }, { "digitaleoverheid.nl", true }, - { "digitalewelten.de", true }, + { "digitaletanker.com", true }, { "digitalezukunft-hagen.de", true }, { "digitalezukunft.nrw", true }, { "digitalfishfun.com", true }, + { "digitalfury.co.uk", true }, { "digitalfuturenow.com", true }, { "digitalgov.gov", false }, { "digitalhabit.at", true }, @@ -9418,6 +9879,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "digitalrights.fund", true }, { "digitalskillswap.com", true }, { "digitalsurge.io", true }, + { "digitaltcertifikat.dk", true }, { "digitaltechnologies.ltd.uk", true }, { "digitkon.com", true }, { "digminecraft.com", true }, @@ -9454,11 +9916,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "din-hkd.jp", true }, { "dineachook.com.au", true }, { "dinepont.fr", true }, - { "dingcc.com", true }, - { "dinge.xyz", true }, - { "dingelbob-schuhcreme.gq", true }, + { "dingcc.me", true }, { "dingsbums.shop", true }, - { "dinheirolucrar.com", true }, { "dinkommunikasjon.no", true }, { "dinmtb.dk", true }, { "dinocarrozzeria.com", true }, @@ -9467,6 +9926,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "diodeled.com", true }, { "diodo.me", true }, { "dionysos-ios.gr", true }, + { "diozoid.com", true }, { "dipalma.me", true }, { "dipling.de", true }, { "diplona.de", true }, @@ -9477,7 +9937,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "direct-sel.com", true }, { "directebanking.com", true }, { "directelectricalltd.co.uk", true }, - { "directinsure.in", true }, { "directlinkfunding.co.uk", true }, { "directme.ga", true }, { "directnews.be", true }, @@ -9487,9 +9946,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "direktvermarktung-schmitzberger.at", true }, { "dirips.com", true }, { "dirk-scheele.de", true }, + { "dirkdoering.de", true }, + { "dirkjonker.nl", true }, { "dirko.net", true }, - { "dirkwolf.de", true }, { "dirtcraft.ca", true }, + { "dirtygeek.ovh", true }, { "disability.gov", true }, { "disabled.dating", true }, { "disanteimpianti.com", true }, @@ -9514,6 +9975,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "discountplush.com", true }, { "discover-shaken.com", true }, { "discoverthreejs.com", true }, + { "discoverucluelet.com", true }, { "discoveryaima.com", true }, { "discoveryottawa.ca", true }, { "discoveryrom.org", true }, @@ -9584,11 +10046,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "diversityflags.nz", true }, { "divertiagua.com.br", true }, { "divi-experte.de", true }, + { "divinasaiamodas.com.br", true }, { "divinegames.studio", true }, { "diving.photo", true }, { "divorciosmurcia.com", true }, { "divvymonkey.com", true }, + { "diwei.vip", true }, { "dixi.fi", true }, + { "dixibox.com", true }, { "diybook.at", true }, { "diycc.org", true }, { "diygod.me", true }, @@ -9608,7 +10073,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "djc.me", true }, { "djcursuszwolle.nl", true }, { "djdavid98.hu", true }, + { "djieno.com", true }, { "djipanov.com", true }, + { "djleon.net", true }, { "djlive.pl", true }, { "djlnetworks.co.uk", true }, { "djsbouncycastlehire.com", true }, @@ -9616,6 +10083,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "djt-vom-chausseehaus.de", true }, { "djursland-psykologen.dk", true }, { "djwaynepryke.com", true }, + { "djz4music.com", false }, { "dk-kromeriz.cz", true }, { "dk.com", true }, { "dk.search.yahoo.com", false }, @@ -9632,9 +10100,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dlitz.net", true }, { "dll4free.com", true }, { "dlld.com", true }, + { "dlouwrink.nl", true }, { "dlrsp.org", true }, { "dlscomputers.com.au", true }, + { "dlui.xyz", true }, { "dlunch.net", true }, + { "dlyanxs.com", true }, { "dlz149.me", true }, { "dlzz.net", true }, { "dm.lookout.com", false }, @@ -9644,7 +10115,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dmailshop.ro", true }, { "dmarc.dk", true }, { "dmatrix.xyz", true }, - { "dmcastles.com", true }, { "dmd.lv", true }, { "dmdd.org.uk", true }, { "dmeevalumate.com", true }, @@ -9660,6 +10130,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dn42.us", true }, { "dna.li", true }, { "dnacloud.pl", true }, + { "dnakids.co.uk", true }, { "dnc.org.nz", true }, { "dndtools.net", true }, { "dne.lu", true }, @@ -9679,11 +10150,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dnshallinta.fi", true }, { "dnsinfo.ml", true }, { "dnsman.se", true }, + { "dnspod.ml", true }, { "dnstwister.report", true }, + { "dnzz123.com", true }, { "do-prod.com", true }, { "do.gd", true }, { "do.search.yahoo.com", false }, { "do13.net", true }, + { "do67.de", true }, + { "do67.net", true }, + { "dobraprace.cz", true }, { "dobrev.family", true }, { "dobrisan.ro", true }, { "dobsnet.net", true }, @@ -9699,7 +10175,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dockerbook.com", false }, { "dockerm.com", true }, { "dockerup.net", true }, - { "doclassworks.com", true }, { "docline.gov", true }, { "docloh.de", true }, { "docloudu.info", true }, @@ -9712,6 +10187,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "doctafit.com", true }, { "doctor-locks.co.uk", true }, { "doctor.dating", true }, + { "doctorbini.com", true }, { "doctorfox.co.uk", true }, { "doctorsonmaps.com", true }, { "doctorwho.cz", true }, @@ -9731,16 +10207,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dogear.ch", true }, { "dogfi.sh", true }, { "dogft.com", true }, + { "doggedbyirs.com", true }, { "doggroomingcourse.com", true }, { "dogmap.jp", true }, { "dogoo.com", true }, { "dogpawstudio.com", true }, - { "dogprograms.net", true }, { "dogrescuegreece.nl", true }, { "dogworld.com.br", true }, { "dohanews.co", true }, { "doihavetoputonpants.com", true }, - { "dokan-e.com", false }, { "dokelio-idf.fr", true }, { "dokipy.no", true }, { "dokspot.cf", true }, @@ -9792,6 +10267,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dominomatrix.com", true }, { "domix.fun", true }, { "dommascate.com.br", true }, + { "domob.eu", true }, { "domodeco.fr", true }, { "domodedovo.travel", true }, { "domprojects.com", true }, @@ -9822,20 +10298,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dongxuwang.com", true }, { "donkennedyandsons.com", true }, { "donkeytrekkingkefalonia.com", true }, + { "donlydental.ca", true }, { "donmaldeamores.com", true }, + { "donna-bellini-business-fotografie-muenchen.de", true }, + { "donna-bellini-fotografie-berlin.de", true }, + { "donna-bellini-fotografie-erfurt.de", true }, + { "donna-bellini-fotografie-frankfurt.de", true }, + { "donna-bellini-fotografie-hamburg.de", true }, + { "donna-bellini-fotografie-koeln.de", true }, + { "donna-bellini-fotografie-muenchen.de", true }, + { "donna-bellini-fotografie-nuernberg.de", true }, + { "donna-bellini-fotografie-stuttgart.de", true }, + { "donna-bellini-fotografie-wien.de", true }, + { "donna-bellini-hochzeitsfotograf-frankfurt.de", true }, + { "donna-bellini-hochzeitsfotograf-muenchen.de", true }, { "donnacha.blog", true }, { "donnachie.net", true }, - { "donner-reuschel.de", true }, { "donnons.org", false }, { "donnoval.ru", true }, { "donotlink.it", true }, { "donovand.info", true }, - { "donpaginasweb.com", true }, { "donpomodoro.com.co", true }, + { "donsbach-edv.de", true }, { "dont.re", true }, { "dont.watch", true }, { "dontbubble.me", true }, { "dontcageus.org", true }, + { "dontpayfull.com", true }, { "donttrust.me", true }, { "donutcompany.co.jp", true }, { "donzool.es", true }, @@ -9849,7 +10338,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "doooooops.com", true }, { "doop.im", true }, { "doopdidoop.com", true }, - { "door.cards", true }, { "doordecor.bg", true }, { "doorflow.com", true }, { "dopesoft.de", true }, @@ -9860,23 +10348,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dopsi.ch", true }, { "dora.moe", true }, { "dorde.eu", true }, + { "dorfbaeck.at", true }, { "dorfbrunnen.eu", true }, { "dorfzittig.de", true }, { "doriangirod.ch", true }, { "dorianharmans.nl", true }, { "dorianmuthig.com", true }, + { "doridian.com", true }, + { "doridian.de", true }, { "doridian.net", true }, + { "doridian.org", true }, + { "dormirmucho.com", true }, { "dormiu.com", true }, { "dormiu.com.br", true }, + { "dornhecker.me", true }, + { "dorpshuiskesteren.nl", true }, { "dorquelle.com", true }, { "dorsetentertainments.co.uk", true }, { "dorth.nl", true }, + { "dosdediez.com", true }, { "dosenbierrepublik.com", true }, { "dosenkiwi.at", true }, { "doska.by", true }, { "doska.ru", true }, { "dosomeworks.biz", true }, { "dossplumbing.co.za", true }, + { "dostlar.fr", true }, { "dosvientoselectric.com", true }, { "dosvientoselectrical.com", true }, { "dosvientoselectrician.com", true }, @@ -9887,13 +10384,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "doswap.com", true }, { "dosyauzantisi.com", true }, { "dot.ro", true }, + { "dot42.no", true }, + { "dota2huds.com", true }, { "dotacni-parazit.cz", true }, { "dotbigbang.com", true }, { "dotbox.org", true }, { "dotcircle.co", true }, + { "dotconnor.com", true }, { "dotgov.gov", true }, { "dothebangthingsalon.com", true }, { "dothydesign.com", true }, + { "dotjesper.com", true }, + { "dotjesper.dk", true }, + { "dotjesper.net", true }, { "dotjs.party", true }, { "dotkniseandroida.cz", true }, { "dotkod.pl", true }, @@ -9901,12 +10404,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dotphoto.com", true }, { "dotplex.com", true }, { "dotplex.de", true }, - { "dotrox.net", true }, { "dotshule.ug", true }, { "dotsiam.co.th", true }, { "dotsiam.com", true }, + { "dotsiam.in.th", true }, { "douai.me", true }, - { "doubleaste.com", true }, { "doubleavineyards.com", true }, { "doublefun.net", true }, { "doublestat.me", true }, @@ -9918,6 +10420,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "douzer.de", true }, { "dovenzorgmalawi.nl", true }, { "dovro.de", true }, + { "dowell.media", true }, { "dowellconsulting.com", true }, { "dowhatmakegood.de", true }, { "dowling.nz", true }, @@ -9941,6 +10444,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dpd.com.pl", true }, { "dperson.net", true }, { "dpfsolutionsfl.com", true }, + { "dpg.no", true }, { "dpi-design.de", true }, { "dpisecuretests.com", true }, { "dprb.biz", true }, @@ -9951,7 +10455,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dr-bodendorf.de", true }, { "dr-jakob-zahnaerzte.de", true }, { "dr-klotz.info", true }, - { "dr-knirr.de", true }, { "dr-krebs.net", true }, { "dr-marlen-nystroem.de", true }, { "dr-moldovan.de", true }, @@ -9963,7 +10466,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dr-www.de", true }, { "drabadir.com", true }, { "drabben.be", true }, - { "drabbin.com", true }, + { "drabim.org", true }, { "drach.xyz", true }, { "drachenleder.de", true }, { "dracisvet.cz", true }, @@ -9973,6 +10476,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "drafton.com", true }, { "drageeparadise.fr", true }, { "dragfiles.com", true }, + { "draghetti.it", true }, { "draghive.asia", true }, { "draghive.ca", true }, { "draghive.co", true }, @@ -9997,6 +10501,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dragonsunited.net", true }, { "dragonsunited.org", true }, { "dragonwork.me", true }, + { "drahcro.uk", true }, { "drakeluce.com", true }, { "drakenson.de", true }, { "dramaticpeople.com", true }, @@ -10007,6 +10512,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "draw.uy", true }, { "drawesome.uy", true }, { "drawingcode.net", true }, + { "drawxp.com", true }, + { "drbarnabus.com", true }, { "drbethanybarnes.com", true }, { "drbriones.com", true }, { "drchrislivingston.com", true }, @@ -10017,6 +10524,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "drdipilla.com", true }, { "dreamcreator108.com", true }, { "dreamday-with-dreamcar.de", true }, + { "dreamersgiftshopec.com", true }, { "dreamhack.com", true }, { "dreamhostremixer.com", true }, { "dreamithost.com.au", true }, @@ -10027,20 +10535,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dreamonkey.com", true }, { "dreamrae.net", true }, { "dreamtechie.com", true }, - { "dreax.win", true }, { "drei01.com", true }, { "drei01.de", true }, { "dreid.org", true }, { "dreiweiden.de", true }, { "dress-cons.com", true }, + { "dressify.co", true }, + { "dressify.in", true }, + { "drevanbeale.com", true }, { "drevo-door.cz", true }, { "drew.beer", true }, { "drew.red", true }, + { "drewapianostudio.com", true }, { "dreweryinc.com", true }, { "drewsilcock.co.uk", true }, { "dreyfussplasticsurgery.com", true }, { "drezzy.it", true }, + { "drfranciscofonseca.com.br", true }, { "drfrey.ch", true }, + { "drgdrp.com", true }, { "drgn.no", true }, { "drhathazi.hu", true }, { "drheibel.com", true }, @@ -10051,7 +10564,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "drillingsupplystore.com", true }, { "drillion.net", true }, { "drillshackresort.com", true }, + { "drinkcontrolapp.com", true }, { "drinkplanet.eu", true }, + { "dripdoctors.com", true }, { "drive.google.com", false }, { "driven2shine.eu", true }, { "drivenes.net", true }, @@ -10064,7 +10579,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "drivinghorror.com", true }, { "drivingtestpro.com", true }, { "drivya.com", true }, - { "drixn.com", true }, { "drjacquesmalan.com", true }, { "drjenafernandez.com", true }, { "drjoe.ca", true }, @@ -10072,11 +10586,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "drjulianneil.com", true }, { "drkhsh.at", false }, { "drkmtrx.xyz", true }, + { "drlandis.com", true }, { "drlangsdon.com", true }, { "drmayakato.com", true }, { "drmcdaniel.com", true }, { "drms.us", true }, { "drmtransit.com", true }, + { "drnow.ru", true }, { "drogueriaelbarco.com", true }, { "droidapp.nl", true }, { "droidgyan.com", true }, @@ -10102,12 +10618,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "drown.photography", true }, { "drpetervoigt.de", true }, { "drpico.com.au", true }, + { "drrodina.com", true }, { "drrr.chat", true }, { "drrr.wiki", true }, { "drsajjadian.com", true }, { "drschruefer.de", true }, { "drsturgeonfreitas.com", true }, + { "drtimmarch.com", true }, { "drubn.de", false }, + { "druckerei-huesgen.de", true }, { "drugs.com", true }, { "drumbe.at", true }, { "drummondframing.com", true }, @@ -10115,15 +10634,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "drupal-expert.it", true }, { "drupal.org", true }, { "drupalspb.org", true }, + { "drusantia.net", true }, { "drusillas.co.uk", true }, { "druwe.net", true }, { "druznek.me", true }, { "drvr.xyz", true }, { "drweissbrot.net", true }, + { "drwxr.org", true }, + { "dryan.com", false }, { "drybjed.net", true }, { "drycleancoalition.org", true }, { "drycreekphoto.com", true }, { "drydrydry.com", true }, + { "dryerventcleaningarlington.com", true }, + { "dryerventcleaningcarrollton.com", true }, + { "ds67.de", true }, { "dsancomics.com", true }, { "dsanraffleshangbai.xyz", true }, { "dsayce.com", true }, @@ -10131,31 +10656,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dsdalismerkezi.com", true }, { "dsebastien.net", true }, { "dsektionen.se", false }, + { "dsgarms.com", true }, + { "dsgholsters.com", true }, + { "dsgvo.name", true }, { "dshield.org", true }, { "dsm5.com", true }, { "dsmjs.com", true }, { "dso-imaging.co.uk", true }, + { "dso-izlake.si", true }, { "dsol.hu", true }, - { "dsouzamusic.com", true }, { "dsrw.org", true }, { "dssale.com", true }, { "dstamou.de", true }, { "dsteiner.at", true }, - { "dstvinstallrandburg.co.za", true }, - { "dsuinnovation.com", true }, { "dt27.org", true }, { "dtbouncycastles.co.uk", true }, { "dtdsh.com", true }, { "dte.co.uk", true }, { "dtechstore.com.br", true }, + { "dtg-fonds.com", true }, + { "dtg-fonds.de", true }, + { "dtg-fonds.net", true }, { "dtk-vom-chausseehaus.de", true }, { "dtnx.eu", true }, { "dtnx.net", true }, { "dtnx.org", true }, - { "dtp-mstdn.jp", true }, { "dtuaarsfest.dk", true }, { "dtx.sk", true }, - { "dualascent.com", true }, { "dualias.xyz", false }, { "dub.cz", true }, { "dubai-company.ae", true }, @@ -10166,32 +10693,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dubrovnik-dental.clinic", true }, { "dubrovskiy.net", true }, { "dubrovskiy.pro", true }, + { "dubtrack.fm", true }, { "ducalendars.com", true }, { "duch.cloud", true }, { "duchyoffeann.com", true }, - { "duckasylum.com", true }, + { "duckasylum.com", false }, { "duckbase.com", true }, { "duckduck.horse", true }, { "duckduckstart.com", true }, { "duckinc.net", true }, { "duct.me", true }, + { "due-diligence-security.com", true }, + { "duerlund-falkenberg.dk", true }, { "duernberg.at", true }, { "duesee.org", true }, { "duesterhus.eu", true }, { "dufrei.com", true }, + { "dugnet.com", false }, + { "dugnet.io", false }, + { "dugnet.net", false }, + { "dugnet.org", false }, { "dugunedavet.com", true }, { "duh.se", true }, { "duijf.info", true }, { "duijfathome.nl", true }, { "duitang.com", true }, { "dukan-recepty.ru", true }, + { "dukatek.cz", true }, { "dukegat.de", false }, { "dukesatqueens.com", true }, { "dukun.de", true }, + { "dulcinela.es", true }, { "dulei.si", true }, { "dullapp.com", true }, { "dumax.xyz", true }, - { "dumbdemo.com", true }, { "dumbeartech.com", true }, { "dumberger-bau.de", true }, { "dumbfunded.co.uk", true }, @@ -10199,24 +10734,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dumino.bg", true }, { "dumont.ovh", true }, { "dumpsters.com", true }, - { "dunamiscommunity.com", true }, { "duncancmt.com", true }, { "duncanfamilytrust.org", true }, + { "duncanmoffat.com", true }, { "duncanwinfrey.com", true }, + { "duncm.com", true }, { "dundalkdonnie.com", true }, + { "dunesadventure.net", true }, { "dungeon-bbs.de", true }, { "dunklau.fr", true }, { "dunkle-seite.org", true }, { "dunloptrade.com", true }, { "dunmanelectric.com", true }, { "duobus.nl", true }, - { "duocircle.com", true }, + { "duoluodeyu.com", true }, { "duonganhtuan.com", true }, { "duoquadragintien.fr", true }, { "dupisces.com.tw", true }, { "dupree.co", true }, { "dupree.pe", true }, { "durand.tf", true }, + { "durbanlocksmiths.co.za", true }, { "durchblick-shop.de", true }, { "durdle.com", true }, { "dureuil.info", true }, @@ -10247,14 +10785,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dvorupotocnych.sk", true }, { "dvwc.org", true }, { "dvx.cloud", true }, + { "dw-loewe.de", true }, { "dwbtoftshit.com", true }, { "dwgf.xyz", true }, { "dwi-sued.de", true }, + { "dwienzek.de", true }, { "dworzak.ch", true }, { "dwscdv3.com", true }, { "dwtm.ch", true }, { "dwworld.co.uk", true }, { "dxgl.info", true }, + { "dxgl.org", true }, { "dxm.no-ip.biz", true }, { "dybuster.at", true }, { "dybuster.ch", true }, @@ -10263,17 +10804,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dybuster.es", true }, { "dybuster.it", true }, { "dybuster.se", true }, + { "dycoa.com", true }, { "dyeager.org", true }, { "dyktig.as", true }, { "dyktig.no", true }, { "dylanboudro.com", true }, + { "dylancl.cf", true }, { "dylankatz.com", true }, { "dylanknoll.ca", true }, { "dylanspcrepairs.com", true }, { "dylanwise.net", true }, { "dylmye.me", true }, + { "dym.asia", true }, + { "dym.bz", true }, + { "dym2012.com", true }, + { "dym2013.com", true }, + { "dym2014.com", true }, + { "dym2017.com", true }, { "dymersion.com", true }, { "dymfbbs.com", true }, + { "dymmovie.com", true }, { "dymowski.de", false }, { "dyn-dnhensel.de", true }, { "dyn-nserve.net", true }, @@ -10289,7 +10839,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dynamo.city", true }, { "dynapptic.com", true }, { "dynastic.co", true }, - { "dyncdn.me", true }, { "dynn.be", true }, { "dynorphin.com", true }, { "dynorphins.com", true }, @@ -10300,8 +10849,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dyscalculia-blog.com", true }, { "dysthymia.com", true }, { "dyyn.de", true }, - { "dyz.pw", true }, { "dzeina.ch", true }, + { "dzet.de", true }, { "dziary.com", true }, { "dziurdzia.pl", true }, { "dzndk.com", true }, @@ -10311,9 +10860,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dzomo.org", true }, { "dzsula.hu", true }, { "dzyabchenko.com", true }, + { "dzyszla.pl", true }, { "e-apack.com.br", true }, { "e-bikesdirect.co.uk", true }, { "e-biografias.net", true }, + { "e-borneoshop.com", true }, { "e-briancon.com", true }, { "e-colle.info", true }, { "e-cottage.com.br", true }, @@ -10324,10 +10875,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "e-lambre.com", true }, { "e-learningbs.com", true }, { "e-lifetechnology.com", true }, - { "e-migration.ch", true }, { "e-planetelec.fr", false }, + { "e-ptn.com", true }, { "e-standardstore.org", true }, { "e-surveillant.nl", true }, + { "e-sw.co.jp", true }, { "e-teacher.pl", true }, { "e-tech-solution.com", true }, { "e-tech-solution.net", true }, @@ -10361,12 +10913,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "e965.ru", true }, { "e9a.at", true }, { "ea2drocks.com", true }, + { "eacero.com", true }, { "ead-italia.it", true }, { "eagle.net", true }, { "eagleindustriesltd.com", true }, { "eaglemessaging.com", true }, { "eaglesecurity.com", true }, { "eagletechz.com.br", true }, + { "eaglewreck.info", true }, + { "eaglexiang.org", true }, { "eagleyecs.com", true }, { "eaimty.com", true }, { "ealev.de", true }, @@ -10377,24 +10932,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "earn.com", true }, { "earthsystemprediction.gov", true }, { "earticleblog.com", true }, + { "earvinkayonga.com", false }, + { "easelforart.com", true }, { "easez.net", true }, { "eashwar.com", true }, { "eason-yang.com", true }, { "east-line.su", true }, { "eastarm.net", true }, + { "eastblue.org", true }, { "eastcoastbubbleandbounce.co.uk", true }, { "easterncapebirding.co.za", true }, { "eastlothianbouncycastles.co.uk", true }, { "eastmanbusinessinstitute.com", true }, { "eastsidecottages.co.uk", true }, { "easy-rpg.org", false }, + { "easy2bathe.co.uk", true }, { "easyadsnbanners.tk", false }, { "easycoding.org", true }, { "easyconstat.com", true }, { "easycontentplan.com", true }, { "easycosmetic.ch", true }, { "easycup.com", false }, - { "easydumpsterrental.com", true }, + { "easydumpsterrental.com", false }, { "easyfiles.ch", true }, { "easyhaul.com", true }, { "easykraamzorg.nl", false }, @@ -10403,16 +10962,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "easypay.bg", true }, { "easyproperty.com", true }, { "easypv.ch", true }, - { "easyreal.ru", true }, + { "easyqr.codes", true }, { "easyroad.fr", true }, { "easyschools.org", true }, { "easyslide.be", true }, + { "easyssl.com.cn", true }, { "easystore.co", true }, { "easytechguides.com", true }, { "easytechsecurity.com", true }, { "easyweenies.com", true }, + { "eat-mine.ml", true }, { "eat-sleep-code.com", true }, - { "eat4happiness.com", true }, { "eatery.co.il", true }, { "eatmebudapest.hu", true }, { "eaton-works.com", true }, @@ -10443,13 +11003,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eboek.info", true }, { "ebonyriddle.com", true }, { "ebooki.eu.org", true }, - { "ebop.ch", true }, + { "ebooklaunchers.com", true }, + { "eboutic.ch", true }, { "eboyer.com", true }, { "ebrnd.de", true }, { "ec-baran.de", true }, { "ec-current.com", true }, + { "ec.mine.nu", true }, + { "eca.edu.au", true }, { "ecacollege.nsw.edu.au", true }, { "ecardoo.com", true }, + { "ecardoo.de", true }, + { "ecardoo.net", true }, + { "ecardoo.org", true }, { "ecchidreams.com", true }, { "ecclesia-koeln.de", true }, { "ecco-verde.com", false }, @@ -10460,7 +11026,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "echatta.org", true }, { "echidna-rocktools.eu", true }, { "echo-security.co", true }, - { "echoactive.com", true }, { "echoanalytics.com", true }, { "echodio.com", true }, { "echofoxtrot.co", true }, @@ -10468,7 +11033,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "echosim.io", true }, { "echosixmonkey.com", true }, { "echosystem.fr", true }, - { "echoteam.gq", false }, + { "echoteam.gq", true }, + { "echoteen.com", true }, { "echoworld.ch", true }, { "ecir.pro", true }, { "ecir.ru", true }, @@ -10503,12 +11069,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ecombustibil.ro", true }, { "ecommercestore.net.br", true }, { "ecompen.co.za", true }, + { "ecomycie.com", true }, { "economias.pt", true }, { "economic-sanctions.com", true }, { "economicinclusion.gov", true }, { "economiefidu.ch", true }, { "economies.ch", true }, - { "economycarrentalscyprus.com", true }, { "econsumer.gov", true }, { "econverter.cloud", true }, { "ecorp.cc", true }, @@ -10516,7 +11082,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ecos.srl", true }, { "ecoshare.info", true }, { "ecoskif.ru", true }, - { "ecosoftconsult.com", true }, { "ecosound.ch", true }, { "ecostruxureit.com", true }, { "ecosystem.atlassian.net", true }, @@ -10544,14 +11109,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "edgeservices.co.uk", true }, { "edgetalk.net", true }, { "edgevelder.com", true }, - { "edh.email", true }, { "edhesive.com", true }, { "edholm.pub", true }, { "edibarcode.com", true }, { "edicct.com", true }, { "edinburghsportsandoutdoorlearning.com", true }, { "edincmovie.com", true }, - { "edisonchee.com", true }, + { "ediscomp.sk", true }, { "edisonlee55.com", true }, { "edisonluiz.com", true }, { "edisonnissanparts.com", true }, @@ -10579,14 +11143,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "edu-kingdom.com", true }, { "edu6.cloud", true }, { "eduard-dopler.de", true }, - { "eduardnikolenko.com", true }, - { "eduardnikolenko.ru", true }, { "edubras.com.br", true }, { "educationevolving.org", true }, { "educationfutures.com", true }, { "educationunlimited.com", true }, { "educator-one.com", true }, - { "educators.co.nz", true }, { "eductf.org", true }, { "eduid.se", false }, { "edumundo.nl", true }, @@ -10595,10 +11156,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "edusanjal.com", true }, { "edusantorini.com", true }, { "eduvpn.no", true }, + { "eduxpert.in", true }, { "edv-bv.de", true }, { "edv-kohls.de", true }, { "edv-lehrgang.de", true }, - { "edvgarbe.de", true }, { "edvmesstec.de", true }, { "edwar.do", true }, { "edwards.me.uk", true }, @@ -10611,22 +11172,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "edxn.de", true }, { "edyou.eu", true }, { "edzilla.info", true }, + { "eelcapone.nl", true }, { "eellak.gr", true }, { "eelsden.net", true }, { "eelzak.nl", true }, { "eemcevn.com", true }, { "eengoedenotaris.nl", true }, - { "eeqj.com", true }, + { "eentweevijf.be", true }, { "eer.io", true }, { "eerlijktransport.nl", true }, { "eerstejaarsweekend.nl", true }, { "eery.de", true }, + { "eesti.xyz", true }, { "eewna.org", true }, { "ef-georgia.org", true }, { "ef.gy", true }, { "efa-football.com", true }, { "efaas.nl", true }, { "efag.com", true }, + { "efcross.com", true }, { "efeen.nl", true }, { "eff-bee-eye.de", true }, { "eff.org", true }, @@ -10639,20 +11203,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "effizienta.ch", true }, { "efflam.net", true }, { "efg-darmstadt.de", false }, - { "efinity.io", true }, { "efmcredentialing.org", true }, { "eft.boutique", true }, { "egablo.black", true }, { "egamespw.com", true }, { "egami.ch", true }, { "eganassociates.com.au", true }, - { "egarden.it", true }, { "egb.at", false }, { "egbert.net", true }, { "egeozcan.com", true }, - { "egfl.org.uk", true }, { "egg-ortho.ch", true }, { "eggblast.com", true }, + { "eggert.org", false }, { "eggplant.today", true }, { "egiftcards.be", true }, { "eglek.com", true }, @@ -10662,6 +11224,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "egoroof.ru", true }, { "egov4.ch", true }, { "egovernment-podcast.com", true }, + { "egres.xyz", true }, { "egrojsoft.info", true }, { "egrp365.ru", true }, { "egumenita.ro", true }, @@ -10670,6 +11233,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ehaccp.it", true }, { "ehandel.com", true }, { "ehazi.hu", true }, + { "ehbssl.com", true }, { "eheliche-disziplin.schule", true }, { "ehertz.uk", true }, { "ehipaa.com", true }, @@ -10678,37 +11242,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ehmtheblueline.com", true }, { "ehne.de", true }, { "ehomusicgear.com", true }, + { "ehub.cz", true }, + { "ehub.hu", true }, + { "ehub.pl", true }, + { "ehub.sk", true }, { "eichel.eu", true }, { "eichornenterprises.com", true }, { "eickemeyer.nl", true }, { "eickhof.co", true }, { "eickhof.us", true }, { "eickhofcolumbaria.com", true }, + { "eidolons.org", true }, { "eifel.website", true }, { "eigenpul.se", true }, { "eigenpulse.com", true }, { "eighty-aid.com", true }, - { "eightyfour.ca", true }, { "eigpropertyauctions.co.uk", true }, { "eihaikyo.com", true }, { "eilhan.com", true }, { "eimacs.com", true }, - { "einar.io", true }, { "einaros.is", true }, { "einfachbahn.de", true }, { "einheft.info", true }, { "einheizpreis.de", true }, - { "einmonolog.de", true }, { "einrichtwerk.de", true }, { "einrichtwerk.shop", true }, { "einsatzstellenverwaltung.de", true }, { "einser.com", true }, - { "einsit.com", true }, { "einsteinathome.org", true }, { "eintageinzug.de", true }, { "eintragsservice24.de", true }, { "eipione.com", true }, { "eirastudios.co.uk", false }, + { "eirb.fr", true }, { "eisaev.ru", true }, { "eiskratzer-bedrucken.de", true }, { "eit-web.de", false }, @@ -10716,9 +11282,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eiyoushi-shigoto.com", true }, { "ejdv-anmeldung.de", true }, { "ejeff.org", true }, + { "ejkmedia.nl", true }, + { "ejkmuseum.nl", true }, + { "ejknet.nl", true }, + { "ejkwebdesign.nl", true }, { "ejuicelab.co.uk", true }, { "ek-networks.de", true }, - { "ek.network", true }, { "ekaigotenshoku.com", true }, { "ekati.ru", true }, { "ekb-avia.ru", true }, @@ -10731,6 +11300,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ekokontakt.cz", true }, { "ekonbenefits.com", true }, { "ekostecki.de", true }, + { "ekpyroticfrood.net", true }, { "ekrana.info", true }, { "eksisozluk.com", true }, { "ekuatorial.com", true }, @@ -10745,22 +11315,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "elaon.de", true }, { "elars.de", true }, { "elarvee.xyz", true }, - { "elastic7.uk", true }, { "elb500ttl.nl", true }, { "elbetech.net", true }, { "elbohlyart.com", true }, { "elcambiador.es", true }, + { "elcontadorsac.com", true }, { "eldapoint.co.uk", true }, - { "elderoost.com", true }, { "eldertons.co.uk", true }, + { "eldevo.com", true }, { "eldietista.es", true }, { "eldinhadzic.com", true }, { "eldisagjapi.com", true }, { "eldisagjapi.de", true }, { "eldrid.ge", true }, { "eldritchfiction.net", true }, + { "eleaut.com.br", true }, { "electionsbycounty.com", true }, { "electionsdatabase.com", true }, + { "electmikewaters.com", true }, { "electr0sheep.com", true }, { "electragirl.com", true }, { "electric-vault.co.uk", true }, @@ -10779,6 +11351,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "electricalmoorpark.com", true }, { "electricalnewburypark.com", true }, { "electricaloakpark.com", true }, + { "electricalpacificpalisades.com", true }, { "electricalsimivalley.com", true }, { "electricalthousandoaks.com", true }, { "electricalwestlakevillage.com", true }, @@ -10788,6 +11361,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "electricdosvientos.com", true }, { "electricfencealberton.co.za", true }, { "electricfencebenoni.co.za", true }, + { "electricfencingballito.co.za", true }, { "electricgatemotorgermiston.co.za", true }, { "electricgatemotorrandburg.co.za", true }, { "electricgatemotorskemptonpark.co.za", true }, @@ -10811,6 +11385,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "electriciansimivalley.com", true }, { "electricianthousandoaks.com", true }, { "electricianwestlakevillage.com", true }, + { "electricienasnieres.fr", true }, { "electricimagination.co.uk", true }, { "electriclakesherwood.com", true }, { "electricmalibu.com", true }, @@ -10830,9 +11405,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eleicoes2014.com.br", true }, { "eleicoes2016.com.br", true }, { "eleicoes2018.com", true }, + { "elekharris.com", true }, { "elektro-adam.de", true }, { "elektro-collee.de", true }, { "elektro-diehm.de", true }, + { "elektro-doerr.com", true }, { "elektro-hammes.net", true }, { "elektro-hofmann-gmbh.de", true }, { "elektro-hornetz.de", true }, @@ -10874,6 +11451,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "elexprimidor.com", true }, { "elfe.de", true }, { "elfnon.com", true }, + { "elfring.eu", true }, { "elgalponazo.com.ar", true }, { "elglobo.com.mx", false }, { "elgosblanc.com", false }, @@ -10901,8 +11479,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "elisabethkostecki.de", true }, { "elisabethrene.com", true }, { "elisechristie.com", true }, - { "elistor6100.xyz", true }, - { "elite-porno.ru", true }, { "elite12.de", true }, { "elitebouncingfun.com", true }, { "elitegameservers.net", true }, @@ -10912,19 +11488,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eliyah.co.il", true }, { "elizabethbuitrago.com", true }, { "elizabethgreenfield.com", true }, - { "elizeugomes.com.br", true }, + { "elizabethrominski.com", true }, { "eljef.me", true }, { "elkoy.org", true }, { "ell-net.tokyo", true }, { "ella-kwikmed.com", false }, { "ellak.gr", true }, + { "ellegaard.dk", true }, { "ellemental.me", true }, { "ellencorddry.com", true }, { "ellevit.ch", true }, { "elliesbouncers.co.uk", true }, - { "elliff.net", true }, { "elliot.cat", true }, - { "elliquiy.com", true }, { "elliriehl.at", true }, { "ellisamusements.co.uk", true }, { "ellisleisure.co.uk", true }, @@ -10932,15 +11507,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "elmermx.ch", true }, { "elnan.do", true }, { "elnoorandelmohanad.com", true }, - { "elo.fyi", true }, { "elodieclerc.ch", true }, { "elohellp.com", false }, { "elonaspitze.de", true }, + { "elonm.ru", true }, { "elosrah.com", true }, { "elosuite.com", true }, { "eloxt.com", true }, - { "elpado.de", true }, - { "elpo.net", true }, { "elpoderdelespiritu.org", true }, { "elrinconderovica.com", true }, { "elsagradocoran.org", true }, @@ -10954,13 +11527,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "elternbeiratswahl.online", true }, { "elternforum-birmensdorf.ch", true }, { "elternverein-utzenstorf.ch", true }, - { "eltrox.me", true }, { "elucron.com", true }, + { "eluft.de", true }, { "eluhome.de", true }, + { "eluvio.com", true }, { "elvidence.com.au", true }, { "elviraszabo.com", true }, { "elvispresley.net", true }, { "elvisripley.com", true }, + { "elvn.tokyo", true }, { "elwave.org", true }, { "elwix.com", true }, { "elxsi.de", true }, @@ -10971,7 +11546,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "emaging-productions.fr", true }, { "emailalaperformance.fr", true }, { "emailconfiguration.com", true }, - { "emailcontrol.nl", true }, { "emailfuermich.de", true }, { "emailhunter.co", true }, { "emailing.alsace", true }, @@ -10989,12 +11563,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "embroideryexpress.co.uk", true }, { "emby.cloud", true }, { "emcspotlight.com", true }, - { "emedworld.com", true }, + { "emecew.com", true }, { "emeliefalk.se", true }, + { "ememsei.com", true }, + { "emeraldcbdshop.com", true }, { "emeraldcityswagger.com", true }, { "emeraldcoastrideshare.com", true }, { "emeraldonion.org", true }, - { "emergencyessay.com", true }, { "emergenzalavoro.com", true }, { "emero.de", true }, { "emex.ro", true }, @@ -11007,7 +11582,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "emilong.com", true }, { "emilstahl.dk", true }, { "emilvarga.com", true }, - { "emilyjohnson.ga", true }, + { "emily.moe", true }, { "emirabiz.com", false }, { "emirichardson.com", true }, { "emivauthey.com", true }, @@ -11018,7 +11593,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "emma.ca", true }, { "emmababy420.com", true }, { "emmagraystore.com", true }, - { "emmaliddell.com", true }, { "emobilityforum.org", true }, { "emoji.bzh", false }, { "emolafarm.com", true }, @@ -11031,6 +11605,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "emperor-penguins.com", true }, { "empese.com", true }, { "empherino.net", true }, + { "emploi-collectivites.fr", true }, { "employeeexpress.gov", true }, { "employer.gov", true }, { "employer.guru", true }, @@ -11048,6 +11623,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "emtradingacademy.com", true }, { "emultiagent.pl", true }, { "emupedia.net", true }, + { "emvoice.net", true }, { "emvoiceapp.com", true }, { "emw3.com", true }, { "emyr.net", true }, @@ -11057,13 +11633,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "en4rab.co.uk", true }, { "enaah.de", true }, { "enaim.de", true }, + { "enalean.com", true }, { "enamae.net", true }, { "enbecom.net", true }, { "encfs.win", true }, { "encircleapp.com", true }, { "encnet.de", true }, { "encode.host", true }, - { "encoderx.uk", true }, + { "encore.io", true }, { "encouragemarketing.com", true }, { "encredible.de", false }, { "encredible.org", false }, @@ -11072,6 +11649,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "encryptallthethings.net", true }, { "encrypted.google.com", true }, { "encuentraprecios.es", true }, + { "encycarpedia.com", true }, { "ende-x.com", true }, { "endeal.nl", true }, { "ender.co.at", true }, @@ -11082,10 +11660,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "endlessvideo.com", true }, { "endoftenancycleaninglondon.co.uk", true }, { "endoftennancycleaning.co.uk", true }, + { "endpointsystems.com", true }, { "enduranceday.be", true }, { "endzeit-architekten.com", false }, { "enemiesoflight.de", true }, - { "energethik-tulln.at", true }, { "energie-sante.ch", true }, { "energiekeurplus.nl", true }, { "energisammenslutningen.dk", true }, @@ -11100,13 +11678,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "energyelephant.com", true }, { "energyled.com.br", true }, { "energystar.gov", true }, - { "enersaveapp.org", true }, - { "enersec.co.uk", true }, { "enet-navigator.de", true }, { "enfantsdelarue.ch", true }, { "enfield-kitchens.co.uk", true }, { "enflow.nl", true }, - { "enfoqueseguro.com", true }, { "enfu.se", true }, { "engarde.net", true }, { "engaugetools.com", true }, @@ -11117,11 +11692,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "engiedev.net", true }, { "engineowning.com", true }, { "enginepit.com", true }, - { "enginx.cn", true }, + { "enginsight.com", true }, { "enginx.net", true }, { "englishbulgaria.net", true }, { "englishcast.com.br", true }, - { "englishclub.com", true }, { "englishforums.com", true }, { "englishlol.com", true }, { "englishphonopass.com", true }, @@ -11130,13 +11704,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "enigma.swiss", true }, { "enijew.com", true }, { "enitso.de", true }, + { "enixgaming.com", true }, { "enjincoin.io", true }, { "enjinwallet.io", true }, { "enjinx.io", true }, + { "enjoy-drive.com", true }, { "enjoyphoneblog.it", true }, - { "enlatte.com", true }, { "enlazaresbueno.cl", true }, - { "enlightened.si", true }, + { "enlighten10x.ga", true }, { "enlightenedhr.com", true }, { "enlightenment.org", true }, { "enlnf.link", true }, @@ -11145,17 +11720,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "enness.co.uk", true }, { "ennori.jp", true }, { "enomada.net", true }, + { "enord.fr", true }, { "enorekcah.com", true }, { "enot32.ru", true }, { "enotecastore.it", true }, + { "enpasenerji.com.tr", true }, { "enquos.com", true }, { "enriquepiraces.com", true }, { "enrollapp.com", true }, { "ensage.io", true }, { "enscosupply.com", true }, { "ensemble-rubato.de", true }, - { "enskat.de", true }, - { "enskatson-sippe.de", true }, + { "ensembling.com", true }, { "ensley.tech", true }, { "ensons.de", true }, { "ensured.com", true }, @@ -11165,10 +11741,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "entabe.jp", true }, { "entactogen.com", true }, { "entactogens.com", true }, - { "enterprisechannel.asia", true }, + { "entercenter.ru", true }, { "enterprisey.enterprises", true }, + { "entersoftsecurity.com", true }, { "entheogens.com", true }, - { "entheorie.net", true }, { "enthusiaformazione.com", true }, { "entradaweb.cl", true }, { "entrainr.com", true }, @@ -11187,9 +11763,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "enviroprobasements.com", true }, { "envirotech.com.au", true }, { "envoie.moi", true }, + { "envoutement-desenvoutement.com", true }, { "envoyez.moi", true }, - { "envoyglobal.com", true }, - { "envoyworld.com", true }, { "envygeeks.io", true }, { "eocservices.co.uk", true }, { "eoitek.com", true }, @@ -11220,7 +11795,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "epicvistas.com", true }, { "epicvistas.de", true }, { "epicwalnutcreek.com", true }, + { "epidauros.be", true }, + { "epigrafes-led-farmakeia.gr", true }, { "epilis.gr", true }, + { "epiphanyofourlordchurch.com", true }, { "epiphyte.network", true }, { "episkevh-plaketas.gr", true }, { "epistas.com", true }, @@ -11238,28 +11816,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eposbrighton.co.uk", true }, { "eposbristol.co.uk", true }, { "eposcardiff.co.uk", true }, + { "eposig.net", true }, { "eposkent.co.uk", true }, { "eposleeds.co.uk", true }, { "eposleicester.co.uk", true }, { "eposliverpool.co.uk", true }, { "eposlondon.co.uk", true }, - { "eposmidlands.co.uk", true }, - { "eposnewport.co.uk", true }, - { "eposnottingham.co.uk", true }, - { "eposreading.co.uk", true }, - { "eposreview.co.uk", true }, { "epossheffield.co.uk", true }, - { "epossurrey.co.uk", true }, - { "epossussex.co.uk", true }, { "eposswansea.co.uk", true }, { "epossystems.co.uk", true }, { "epostplus.li", true }, - { "eposwales.co.uk", true }, { "eposyork.co.uk", true }, { "eppelblei.lu", true }, { "eppelduerferjugend.lu", true }, { "eppelpress.lu", true }, { "epreskripce.cz", true }, + { "epsilon.dk", true }, { "epsorting.cz", true }, { "epublibre.org", true }, { "epulsar.ru", true }, @@ -11267,6 +11839,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "epyonsuniverse.net", true }, { "eq-serve.com", true }, { "equalcloud.com", true }, + { "equallyy.com", true }, + { "equeim.ru", true }, { "equidam.com", true }, { "equinecoaching.ca", true }, { "equinetherapy.ca", true }, @@ -11282,6 +11856,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "erasmusplusrooms.com", true }, { "erate.fi", true }, { "erath.fr", true }, + { "erawanarifnugroho.com", false }, { "erdethamburgeronsdag.no", true }, { "ereader.uno", true }, { "erecciontotalal100.com", true }, @@ -11298,6 +11873,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ericabrahamsen.net", true }, { "ericairwin.com", true }, { "ericdiao.com", true }, + { "erichogue.ca", true }, { "erichorstmanshof.nl", true }, { "ericisaweso.me", true }, { "ericjohnltd.com", true }, @@ -11305,15 +11881,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ericleuthardt.com", true }, { "erico.jp", true }, { "ericoc.com", true }, + { "erics.site", true }, + { "ericvaughn-flam.com", true }, { "ericwie.se", true }, { "eridanus.uk", true }, { "erigrid.eu", true }, { "eriix.org", true }, { "erikheemskerk.nl", true }, { "erikhubers.nl", true }, + { "erikkruithof.nl", true }, { "erikserver2.tk", true }, { "erikseth.de", true }, - { "erikwagner.de", true }, { "erikwalther.eu", true }, { "erinaceinae.com", true }, { "eriner.me", true }, @@ -11321,10 +11899,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "erisrenee.com", true }, { "erixschueler.de", true }, { "erkaelderbarenaaben.dk", true }, + { "ernaehrungsberatung-rapperswil.ch", true }, { "ernest.ly", true }, { "eroma.com.au", true }, { "eron.info", true }, - { "erotpo.cz", false }, + { "eroskines.com", true }, + { "eroticforce.com", true }, { "erp-band.ru", true }, { "erp.band", true }, { "erpax.com", true }, @@ -11353,7 +11933,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "erudicia.uk", true }, { "erudikum.cz", true }, { "ervaarjapan.nl", true }, - { "erverydown.ml", true }, { "erwanlepape.com", true }, { "erwin.saarland", true }, { "erwinpaal.nl", true }, @@ -11365,6 +11944,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "es888.net", true }, { "es999.net", true }, { "es9999.net", true }, + { "esaborit.ddns.net", true }, { "esagente.com", true }, { "esailinggear.com", true }, { "esalesdata.com", true }, @@ -11374,8 +11954,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "esb-top.com", true }, { "esb-top.net", true }, { "esb116.com", true }, - { "esb1314.net", true }, - { "esb1668.com", true }, { "esb168168.com", true }, { "esb168168.info", true }, { "esb168168.net", true }, @@ -11406,7 +11984,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "esb553.com", true }, { "esb555.biz", true }, { "esb555.cc", true }, - { "esb556.com", true }, { "esb5889.com", true }, { "esb5889.net", true }, { "esb6.net", true }, @@ -11471,14 +12048,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eservices-greece.com", true }, { "esg-abi2001.de", true }, { "esgr.in", true }, - { "eshepperd.com", true }, { "eshobe.com", true }, { "eshop-prices.com", true }, - { "eshtapay.com", true }, + { "esibun.net", true }, { "esigmbh.de", true }, { "esipublications.com", true }, { "esite.ch", true }, { "eskdale.net", true }, + { "eskriett.com", true }, { "esmoney.cc", true }, { "esmoney.me", true }, { "esoa.net", true }, @@ -11506,13 +12083,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "espritrait.com", true }, { "esquirou-trieves.fr", true }, { "esquisse.fr", true }, + { "esrhd.com", true }, + { "esrinfo.com", true }, { "ess-cert.ru", true }, { "essayads.com", true }, { "essaybrand.com", true }, { "essaychecker.com", true }, { "essaydirectory.com", true }, { "essayforsale.net", true }, - { "essayhave.com", true }, { "essaynews.com", true }, { "essaypro.net", true }, { "essaytalk.com", true }, @@ -11520,13 +12098,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "essaywriting.biz", true }, { "essenalablog.de", true }, { "essencesdeprana.org", true }, + { "essex.cc", true }, { "essite.net", true }, { "esslm.sk", true }, { "essoduke.org", true }, + { "essteebee.ch", true }, + { "establo.pro", true }, { "estafallando.es", true }, { "estafallando.mx", true }, - { "estaleiro.org", true }, - { "estan.cn", true }, { "estate360.co.tz", true }, { "estateczech-eu.ru", true }, { "estcequejailaflemme.fr", true }, @@ -11541,8 +12120,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "estoic.net", true }, { "estoniantrade.ee", true }, { "estonoentraenelexamen.com", true }, - { "estudioamazonico.com", true }, + { "estudiarparaser.com", true }, { "estudiserradal.com", true }, + { "esurety.net", true }, { "esw00.com", true }, { "esw06.com", true }, { "esw07.com", true }, @@ -11556,6 +12136,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "etaoinwu.win", true }, { "etasigmaphi.org", true }, { "etath.com", true }, + { "etax.com.au", true }, { "etaxi.tn", true }, { "etccooperative.org", true }, { "etch.co", true }, @@ -11572,19 +12153,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "etfacta.com", true }, { "eth-faucet.net", true }, { "eth0.nl", true }, - { "etha.nz", true }, { "ethack.org", true }, { "ethaligan.fr", true }, { "ethan.pm", true }, { "ethandelany.me", true }, { "ethercalc.com", true }, { "ethercalc.org", true }, + { "etherderbies.com", true }, { "ethergeist.de", true }, { "etherpad.fr", true }, { "etherpad.nl", true }, { "ethicaldata.co.uk", true }, { "ethicalpolitics.org", true }, - { "ethicaltek.com", true }, { "ethicsburg.gov", true }, { "ethika.com", true }, { "ethiopian.dating", true }, @@ -11613,8 +12193,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eu-gamers.com", true }, { "eu-stellenangebot.de", true }, { "euaggelion.blog.br", true }, - { "euanbarrett.com", true }, { "euchre.us", true }, + { "eucl3d.com", true }, + { "eugenechae.com", true }, { "eugenekay.com", true }, { "eugenetech.org", true }, { "eujuicers.bg", true }, @@ -11657,6 +12238,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "europapier.si", true }, { "europapier.sk", true }, { "europapier.ua", true }, + { "europarts-sd.com", true }, { "europastudien.de", true }, { "european-agency.org", true }, { "europeancupinline.eu", true }, @@ -11671,13 +12253,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "euroscot.de", true }, { "euroservice.com.gr", true }, { "euroshop.or.at", true }, - { "euroskano.nl", true }, { "eurotime.ua", true }, { "eurotramp.com", true }, { "eurotravelstar.eu", true }, { "eurousa.us", true }, { "eurovision.ie", true }, - { "euteamo.cn", true }, { "eutotal.com", true }, { "eutram.com", true }, { "euvo.tk", false }, @@ -11698,10 +12278,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "evanfiddes.com", true }, { "evangelicalmagazine.com", true }, { "evangelosm.com", true }, + { "evanreev.es", true }, { "evantage.org", true }, { "evantageglobal.com", true }, + { "evanwang0.com", true }, { "evapp.org", true }, { "evasovova.cz", true }, + { "evavolfova.cz", true }, { "eve.ac", true }, { "eve0s.com", true }, { "evelienzorgt.nl", true }, @@ -11709,10 +12292,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "evemarketer.com", true }, { "evemodx.com", true }, { "evenementenhoekvanholland.nl", true }, - { "evenstar-gaming.com", true }, + { "evenstargames.com", true }, { "event4fun.no", true }, { "eventaro.com", true }, { "eventive.org", true }, + { "eventnexus.co.uk", true }, { "eventosenmendoza.com.ar", true }, { "events-hire.co.uk", true }, { "eventtech.com", false }, @@ -11721,19 +12305,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "everfine.com.tw", true }, { "evergladesrestoration.gov", true }, { "everhome.de", true }, + { "everitoken.io", true }, { "everling.lu", true }, { "everlong.org", true }, + { "evermarkstudios.com", true }, { "everpcpc.com", true }, { "evertonarentwe.com", true }, { "everwaking.com", false }, { "everybodyhertz.co.uk", true }, { "everyday.eu.org", true }, { "everydaygary.com", true }, - { "everydaywot.com", true }, { "everydaywp.com", true }, { "everyex.com", true }, { "everyfad.com", true }, + { "everygayporn.com", false }, + { "everything-everywhere.com", true }, { "everythingaccess.com", true }, + { "everythingstech.com", true }, { "everytrycounts.gov", false }, { "everywhere.cloud", true }, { "eveshamglass.co.uk", true }, @@ -11742,12 +12330,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "evidence-based.review", true }, { "evidencebased.net", true }, { "evidenceusa.com.br", true }, + { "evidencija.ba", true }, { "evidentiasoftware.com", true }, { "evilarmy.com", true }, + { "evilbeasts.ru", true }, + { "evilbunnyfufu.com", true }, { "evilcult.me", true }, - { "evileden.com", true }, { "evilized.de", true }, { "evilmartians.com", true }, + { "evilness.nl", true }, { "evilsite.cf", true }, { "evilvolcanolairs.com", true }, { "evion.nl", true }, @@ -11771,6 +12362,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "evoting.ch", true }, { "evrial.com", true }, { "evrica.me", true }, + { "evromandie.ch", true }, { "evstatus.com", true }, { "evtripping.com", true }, { "ewaipiotr.pl", true }, @@ -11795,6 +12387,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "example.wf", true }, { "examsmate.in", true }, { "exaplac.com", true }, + { "exarpy.com", true }, { "exatmiseis.net", false }, { "exceed.global", true }, { "exceedagency.com", true }, @@ -11802,15 +12395,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "exceltechoman.com", true }, { "exceltobarcode.com", true }, { "excentos.com", true }, - { "excessamerica.com", true }, + { "exceptionalservers.com", true }, { "excesssecurity.com", true }, - { "exchangeworks.co", true }, { "exchaser.com", true }, { "exclusivebouncycastles.co.uk", true }, { "exclusivedesignz.com", true }, { "exdamo.de", false }, { "exe-boss.tech", true }, { "exebouncycastles.co.uk", true }, + { "execution.biz.tr", true }, { "exehack.net", true }, { "exeintel.com", true }, { "exekutori.com", true }, @@ -11819,26 +12412,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "exerforge.net", true }, { "exeria.de", true }, { "exexcarriers.com", true }, - { "exgaywatch.com", true }, { "exgen.io", true }, { "exhaledayspa.com.au", true }, { "exhalespa.com", true }, { "exhibityour.com", true }, { "exiahost.com", true }, { "exit9wineandliquor.com", true }, + { "exitooutdoor.com", true }, { "exmoe.com", true }, { "exocen.com", true }, { "exon.io", true }, + { "exoplatform.com", true }, { "exoscale.ch", true }, { "exoscale.com", true }, { "exoten-spezialist.de", true }, - { "exoticads.com", true }, { "exousiakaidunamis.pw", true }, { "exp.de", true }, { "expancio.com", true }, { "expandeco.com", true }, { "expatmortgage.uk", true }, - { "expecting.com.br", true }, { "experienceoutdoors.org.uk", true }, { "experienceoz.com.au", true }, { "expert-korovin.ru", true }, @@ -11847,7 +12439,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "expertohomestaging.com", true }, { "experts-en-gestion.fr", true }, { "expertsverts.com", true }, + { "expertviolinteacher.com", true }, { "expiscor.solutions", true }, + { "explodie.org", true }, { "exploflex.com.br", true }, { "exploit.party", true }, { "exploit.ph", true }, @@ -11855,12 +12449,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "exploitit.com.au", true }, { "exploodo.rocks", true }, { "exploravacations.in", true }, + { "exploremonero.com", true }, { "exploringenderby.com", true }, { "expo-america.ru", true }, { "expo-asia.ru", true }, { "expo-europe.ru", true }, { "expo-larionov.org", true }, - { "expokohler.com", true }, { "exponentialnews.net", true }, { "expoort.co.uk", true }, { "expoort.com", true }, @@ -11872,7 +12466,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "exporta.cz", true }, { "express-shina.ru", true }, { "express-vpn.com", true }, - { "expressemotion.net", true }, { "expresshosting.org", true }, { "expressmarket.ru", true }, { "expresstinte.de", true }, @@ -11885,6 +12478,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "extasic.com", true }, { "extendwings.com", true }, { "extensia.it", true }, + { "extensibility.biz.tr", true }, { "extensiblewebmanifesto.org", true }, { "extensiblewebreportcard.org", true }, { "extensiblewebsummit.org", true }, @@ -11938,10 +12532,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ezakazivanje.rs", true }, { "ezdog.press", true }, { "ezequiel-garzon.net", true }, - { "ezgamble.com", true }, { "ezgif.com", true }, { "ezhik-din.ru", true }, - { "eznfe.com", true }, { "eztvtorrent.com", true }, { "ezwritingservice.com", true }, { "ezzhole.net", true }, @@ -11957,11 +12549,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "f1fever.co.uk", true }, { "f1fever.net", true }, { "f1minute.com", true }, - { "f2e.io", true }, { "f2h.io", true }, { "f3nws.com", true }, { "f43.me", true }, - { "f5movies.top", true }, { "f5nu.com", true }, { "f5w.de", true }, { "fa-works.com", true }, @@ -11978,12 +12568,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fabiobier.com", true }, { "fabjansisters.eu", true }, { "fableforge.nl", true }, + { "fabmart.com", true }, { "fabrica360.com", true }, { "fabriceleroux.com", true }, { "fabriziocavaliere.it", true }, { "fabriziorocca.com", true }, { "fabriziorocca.it", true }, - { "fabrysociety.org", true }, { "fabse.net", true }, { "facanabota.com", true }, { "facanabota.com.br", true }, @@ -11991,13 +12581,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "facciadastile.it", true }, { "face-mania.com", true }, { "facealacrise.fr", true }, - { "facebattle.com", true }, { "facebook-atom.appspot.com", true }, - { "facebook.com", true }, + { "facebook.com", false }, { "facebydrh.com", true }, { "facebylouise.co.uk", true }, { "facekungfu.com", true }, - { "facepalmsecurity.com", true }, + { "facepainting.gr", true }, { "facepunch.org", true }, { "facerepo.com", true }, { "fach-journalist.de", true }, @@ -12017,7 +12606,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fackovec.sk", true }, { "factbytefactbox.com", true }, { "factcool.com", true }, - { "factor.cc", false }, + { "factureenlinea.com", true }, { "factuur.pro", true }, { "factuursturen.be", true }, { "factuursturen.nl", true }, @@ -12027,21 +12616,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "facucosta.com.ar", true }, { "faderweb.de", true }, { "faehler.de", true }, + { "faelix.net", true }, { "faerb.it", true }, { "faerie-art.com", true }, - { "faeriecakes.be", true }, + { "fahnen-fanwelt.de", true }, { "fahrenwal.de", true }, { "fahrenwalde.de", true }, { "fahrschule-laux.de", true }, { "fahrwerk.io", true }, { "fai.gov", true }, { "fail.coach", true }, + { "fail4free.de", true }, { "failover.de", true }, { "failover.eu", true }, { "failoverplan.it", true }, { "fairbill.com", true }, { "fairedeseconomies.info", true }, { "fairgolfteams.com", true }, + { "fairmarketing.com", true }, { "fairplay.im", true }, { "fairssl.dk", true }, { "fairssl.se", true }, @@ -12054,7 +12646,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "faithwatch.org", true }, { "faixaazul.com", true }, { "fakeapple.nl", true }, - { "fakerli.com", true }, { "fakti.bg", true }, { "fakturi.com", true }, { "fakturoid.cz", true }, @@ -12064,9 +12655,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "falconfrag.com", true }, { "falconvintners.com", true }, { "falcoz.co", true }, - { "faldoria.de", false }, + { "faldoria.de", true }, { "falegname-roma.it", true }, - { "falldennismarketing.com", true }, + { "falkhusemann.de", true }, { "fallenangeldrinks.co.uk", true }, { "fallenangeldrinks.com", true }, { "fallenangelspirits.co.uk", true }, @@ -12074,17 +12665,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fallenmystic.com", true }, { "fallenspirits.co.uk", true }, { "falling.se", true }, - { "fallofthecitadel.com", true }, - { "false.in.net", true }, { "falsum.net", true }, { "fam-kreibich.de", true }, { "fam-stemmer.de", false }, - { "fam-weyer.de", false }, + { "fam-weyer.de", true }, { "famcloud.de", true }, { "famdouma.nl", true }, { "fameng.nl", true }, + { "fameus.fr", true }, { "famfi.co", true }, { "familiaperez.net", true }, + { "familie-kruithof.nl", true }, { "familie-kupschke.de", true }, { "familie-leu.ch", true }, { "familie-monka.de", true }, @@ -12106,8 +12697,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "famvangelder.nl", true }, { "famvsomeren.nl", true }, { "fanactu.com", true }, + { "fanatical.com", true }, { "fanboi.ch", true }, - { "fancy-bridge.com", true }, { "fancy.org.uk", true }, { "fander.it", true }, { "fandler.cz", true }, @@ -12121,18 +12712,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fantasticcleaners.com.au", true }, { "fantastichandymanmelbourne.com.au", true }, { "fantastici.de", true }, + { "fantasticservices.com", true }, { "fantasycastles.co.uk", true }, { "fantasyescortsbirmingham.co.uk", true }, { "fantasypartyhire.com.au", true }, + { "fantasyprojections.com", true }, { "fantasyspectrum.com", true }, { "fantopia.club", true }, { "fanvoice.com", true }, + { "fanyina.cn", true }, + { "fanyina.com", true }, { "fanyue123.tk", true }, { "fanz.pro", true }, { "fanzlive.com", true }, { "fap.no", true }, { "faq.ie", true }, { "fara.gov", true }, + { "faradji.nu", true }, { "faradome.ws", true }, { "faraslot8.com", true }, { "farcecrew.de", true }, @@ -12142,6 +12738,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "farhadexchange.com", true }, { "farhood.org", true }, { "farid.is", true }, + { "farmacia-discreto.com", true }, { "farmacialaboratorio.it", true }, { "farmer.dating", true }, { "farmers.gov", false }, @@ -12156,6 +12753,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "farsil.eu", true }, { "fart.wtf", true }, { "farwat.ru", true }, + { "faschingmd.com", true }, { "fashion-stoff.de", true }, { "fashion24.de", true }, { "fashion4ever.pl", true }, @@ -12176,6 +12774,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fashionunited.pl", true }, { "fashionunited.se", true }, { "fashionweekweb.com", true }, + { "fashtic.nl", true }, { "faspirits.co.uk", true }, { "faspirits.com", true }, { "fassaden-selleng.de", true }, @@ -12185,6 +12784,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fastcash.com.br", true }, { "fastcommerce.org", true }, { "fastconfirm.com", true }, + { "fastcp.top", true }, + { "fastest-hosting.co.uk", true }, { "fastforwardsociety.nl", true }, { "fastforwardthemes.com", true }, { "fastlike.co", true }, @@ -12195,12 +12796,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fastvistorias.com.br", true }, { "fastwebsites.com.br", true }, { "faszienrollen-info.de", false }, + { "fateandirony.com", true }, + { "fatecdevday.com.br", true }, { "fatedata.com", true }, { "fathers4equalrights.org", true }, { "fatidique.com", true }, { "fatimamoldes.com.br", true }, - { "fator25.com.br", true }, + { "fatmixx.com", true }, { "fatowltees.com", true }, + { "fattorino.it", true }, { "faucetbox.com", false }, { "faui2k17.de", true }, { "faulty.equipment", true }, @@ -12213,7 +12817,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fb.me", true }, { "fbcdn.net", true }, { "fbcopy.com", true }, - { "fbi.pw", true }, { "fbigame.com", true }, { "fbiic.gov", true }, { "fbijobs.gov", true }, @@ -12225,6 +12828,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fca-tools.com", true }, { "fcburk.de", true }, { "fcforum.net", true }, + { "fcingolstadt.de", true }, { "fcitasc.com", true }, { "fckd.net", true }, { "fcosinus.com", true }, @@ -12242,6 +12846,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fdsys.gov", false }, { "feac.us", true }, { "feaden.me", true }, + { "fearby.com", true }, { "fearghus.org", true }, { "fearsomegaming.com", true }, { "feastr-dev.de", true }, @@ -12275,10 +12880,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "feedkovacs.hu", true }, { "feedough.com", true }, { "feedthefuture.gov", true }, - { "feegg.com.br", true }, { "feel-events.com", true }, { "feel.aero", true }, - { "feelgood-workouts.de", true }, + { "feelmom.com", true }, { "feeltennis.net", true }, { "feen.us", true }, { "feepod.com", true }, @@ -12294,8 +12898,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fehngarten.de", true }, { "fehnladen.de", true }, { "feigling.net", false }, + { "feildel.fr", true }, { "feilen.de", true }, - { "feisbed.com", true }, { "feisim.com", true }, { "feisim.org", true }, { "feistyduck.com", true }, @@ -12306,13 +12910,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "feldhousen.com", true }, { "felett.es", true }, { "felgitscher.xyz", true }, + { "felicifia.org", true }, { "felinepc.com", true }, { "felisslovakia.sk", true }, { "felistirnavia.sk", true }, { "felixbarta.de", true }, { "felixcrux.com", true }, { "felixgenicio.com", true }, - { "felixhefner.de", true }, { "felixkauer.de", true }, { "felixqu.com", true }, { "felixsanz.com", true }, @@ -12321,7 +12925,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "felsmalerei.net", true }, { "femanca.com", true }, { "femastudios.com", true }, - { "femdombbw.com", true }, + { "femiluna.com", true }, { "feminina.pt", true }, { "femradio.es", true }, { "femtomind.com", true }, @@ -12329,8 +12933,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "feng-in.com", true }, { "feng-in.net", true }, { "feng.si", true }, + { "fengyi.tel", true }, { "fenster-bank.at", true }, { "fenster-bank.de", true }, + { "feragon.net", true }, { "ferdies.co.za", true }, { "fergtm.com", true }, { "fergusoncastle.com", true }, @@ -12347,6 +12953,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fernandobarata.pt", true }, { "fernandobarillas.com", true }, { "fernandomiguel.net", true }, + { "feross.org", true }, { "ferrariadvisor.it", true }, { "ferret.zone", true }, { "ferreteriaxerez.com", true }, @@ -12358,7 +12965,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "festaprylar.se", true }, { "festival-tipps.com", true }, { "festivaljapon.com", true }, - { "festivalxdentro.com", true }, { "fettlaus.de", true }, { "feudalisten.de", true }, { "feuerhuhn.de", true }, @@ -12374,9 +12980,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "feuetgloire.com", true }, { "fewo-thueringer-wald.de", true }, { "fexco.com", true }, + { "feybiblia.com", true }, { "feyermedia.de", true }, { "ff-bad-hoehenstadt.de", true }, - { "ff-bg.xyz", true }, { "ff-getzersdorf.at", true }, { "ff-obersunzing-niedersunzing.de", true }, { "ff14-mstdn.xyz", true }, @@ -12427,6 +13033,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fiery.me", true }, { "fifei.de", true }, { "fifichachnil.paris", true }, + { "fifieldtech.com", true }, { "fifr.nl", true }, { "fiftynorth.eu", true }, { "fiftyonetielt.be", true }, @@ -12435,8 +13042,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fight215.org", true }, { "figinstitute.org", true }, { "figshare.com", true }, - { "figura.cz", true }, { "figurasdelinguagem.com.br", true }, + { "figure.nz", true }, { "fiilr.com", true }, { "fiissh.tech", true }, { "fiix.io", true }, @@ -12444,13 +13051,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fijnewoensdag.nl", true }, { "fiken.no", true }, { "fil.fi", true }, + { "filamentia.nl", true }, { "filanthropystar.org", true }, { "file-cloud.eu", true }, { "file-pdf.it", true }, - { "filebox.moe", false }, { "filecopa.com", true }, { "files.from-me.org", true }, { "filestar.io", true }, + { "filestartest.io", true }, { "filetransfer.one", true }, { "filezilla-project.org", true }, { "filezilla.cn", true }, @@ -12460,21 +13068,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "filidorwiese.nl", true }, { "filiio.com", true }, { "filingsmadeeasy.com", true }, + { "filiosoft.cloud", true }, { "filip-prochazka.com", true }, { "filippo.io", true }, { "filipsebesta.com", true }, { "filleritemsindia.com", true }, { "fillo.sk", true }, + { "film-storyboards.com", true }, + { "film-storyboards.fr", true }, { "film-tutorial.com", true }, - { "film.photography", true }, - { "film.photos", true }, - { "filmatiporno.xxx", true }, { "filme-onlines.com", true }, + { "filmers.net", true }, { "filmesonline.online", true }, { "filmitis.com", true }, { "filmreviewonline.com", true }, { "filmserver.de", true }, { "filmsite-studio.com", true }, + { "filmsphoto.com", true }, { "filoo.de", true }, { "filstop.com", true }, { "filterflasche-kaufen.de", true }, @@ -12483,11 +13093,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fimsquad.com", true }, { "final-expense-quotes.com", true }, { "finalrewind.org", true }, - { "finalx.nl", false }, + { "finalx.nl", true }, { "financejobs.ch", true }, { "financepark.ch", true }, { "financniexperti.sk", true }, { "finansa.no", true }, + { "finanstilsynet.dk", true }, { "finch.am", true }, { "finchi.de", true }, { "finchnest.co.uk", true }, @@ -12495,6 +13106,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "find-mba.com", true }, { "find-your-happy-place.de", true }, { "findapinball.com", true }, + { "findcarspecs.com", true }, { "findhoustonseniorcare.com", true }, { "findingkorea.com", true }, { "finditez.com", true }, @@ -12522,7 +13134,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "finnwea.com", true }, { "finpt.com", false }, { "finsprings.org", true }, - { "fintandunleavy.com", true }, { "fintechnics.com", false }, { "fintry.ca", true }, { "finvantage.com", true }, @@ -12541,12 +13152,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "firefighters.dating", true }, { "firefly-iii.org", true }, { "firegoby.jp", true }, + { "firegore.com", true }, { "fireleadership.gov", true }, { "firemudfm.com", true }, + { "fireplex.co.uk", true }, { "fireportal.cz", true }, { "fireportal.sk", true }, { "fireshellsecurity.team", true }, { "firesofheaven.org", true }, + { "firesuite.net", true }, { "firetotheprisons.org", true }, { "firevap.org", true }, { "firewallconsultants.com", true }, @@ -12554,7 +13168,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "firma-cerny.cz", true }, { "firma-offshore.com", true }, { "firmale.com", true }, - { "firmament.space", true }, { "firmapi.com", true }, { "firmen-assekuranz.de", true }, { "firmenwerbung-vermarktung.de", true }, @@ -12567,6 +13180,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "firstclasscastles.com", true }, { "firstclassleisure.co.uk", true }, { "firstderm.com", true }, + { "firstdry.com.br", true }, { "firstfinca.de", true }, { "firstinnovation.co.jp", true }, { "firstinnovationltd.com", true }, @@ -12574,7 +13188,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "firstq.xyz", true }, { "fischer-its.com", false }, { "fischer-kundendienst.de", true }, - { "fischers.cc", true }, + { "fischers.it", true }, + { "fischers.srv.br", true }, { "fise.cz", true }, { "fish-hook.ru", true }, { "fishbattle.io", true }, @@ -12594,7 +13209,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fit365.jp", true }, { "fitchannel.com", true }, { "fitfitup.com", true }, + { "fitinclass.com", true }, { "fitkram.cz", true }, + { "fitmeat.at", true }, { "fitness-challenge.co.uk", true }, { "fitness.gov", true }, { "fitseven.ru", true }, @@ -12603,7 +13220,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fiuxy.bz", true }, { "fiuxy.co", true }, { "fiuxy.me", true }, - { "fiuxy.org", true }, { "fiveboosts.xyz", true }, { "fivethirtyeight.com", true }, { "fixatom.com", true }, @@ -12623,6 +13239,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fkcdn.de", true }, { "fkfev.de", true }, { "fktpm.ru", true }, + { "flacandmp3.ml", true }, { "flaemig42.de", false }, { "flagburningworld.com", true }, { "flagfox.net", true }, @@ -12635,6 +13252,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "flamme-von-anor.de", true }, { "flana.com", true }, { "flanga.io", true }, + { "flanga.org", true }, { "flangaapis.com", true }, { "flapoverspeed.com", true }, { "flashback.org", true }, @@ -12648,19 +13266,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "flatpackmates.co.uk", true }, { "flauschig.net", true }, { "flaviu.co.uk", true }, + { "flavo.io", true }, { "flavr.be", true }, { "flawlesscowboy.xyz", true }, { "fleamarketgoods.com", true }, { "fleep.io", true }, - { "fleetcor.at", true }, { "fleetcor.ch", true }, { "fleetcor.cz", true }, - { "fleetcor.de", true }, - { "fleetcor.fr", true }, - { "fleetcor.hu", true }, { "fleetcor.lu", true }, - { "fleetcor.nl", true }, - { "fleetcor.pl", true }, { "fleetcor.sk", true }, { "fleetcorcards.be", true }, { "fleetsmith.com", true }, @@ -12670,11 +13283,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "flers-agglo.fr", true }, { "flerstourisme.fr", true }, { "fletchto99.com", true }, + { "fletemaritimo.online", true }, { "flets-ms.com", true }, { "fleurenplume.fr", true }, - { "fleurette.me", true }, { "fleuryfleury.com", true }, { "flexapplications.se", true }, + { "flexfunding.com", true }, { "fleximaal.com", true }, { "fleximal.com", true }, { "fleximus.org", false }, @@ -12683,6 +13297,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "flextrack.dk", true }, { "flextribly.xyz", true }, { "fliacuello.com.ar", true }, + { "flickcritter.com", true }, { "flight.school", true }, { "flightdeckfriend.com", true }, { "flightmedx.com", true }, @@ -12697,7 +13312,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fliio.com", true }, { "flikmsg.co", true }, { "flinch.io", true }, - { "fling.dating", true }, + { "flip.kim", true }, { "flipneus.net", true }, { "fliptable.org", true }, { "flirt-norden.de", true }, @@ -12715,10 +13330,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "floffi.media", true }, { "floj.tech", true }, { "flokinet.is", true }, + { "flomeyer.de", true }, { "floobits.com", true }, { "flood.io", true }, + { "floorballpoint.cz", true }, { "flooringnightmares.com", true }, { "flooringsourcetx.com", true }, + { "floors4lessbay.com", true }, { "floort.net", false }, { "florence.uk.net", true }, { "florenceapp.co.uk", true }, @@ -12726,6 +13344,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "florentynadawn.co.uk", true }, { "florian-bachelet.fr", true }, { "florian-thie.de", true }, + { "florian2833z.de", true }, { "floriankarmen.com", true }, { "floriankeller.de", true }, { "florianmitrea.uk", true }, @@ -12742,7 +13361,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "flosch.at", false }, { "floseed.fr", true }, { "floskelwolke.de", true }, - { "flosserver.de", true }, { "flow.su", true }, { "flowair24.ru", true }, { "flowcom.de", true }, @@ -12750,15 +13368,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "flowersbylegacy.com", true }, { "flowinvoice.com", true }, { "flowreader.com", true }, - { "flox.io", true }, { "flra.gov", true }, - { "flucky.xyz", false }, + { "flucky.xyz", true }, { "flucto.com", true }, { "flue-ducting.co.uk", true }, { "fluffycloud.de", true }, - { "flugsportvereinigungcelle.de", true }, { "fluhrers.de", true }, { "fluidmeterusa.com", true }, + { "fluids.ac.uk", true }, { "flumble.nl", true }, { "flunschi.goip.de", true }, { "fluoxetine.net", true }, @@ -12779,10 +13396,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "flydrivesicilie.nl", true }, { "flyer.tools", true }, { "flygon.pink", true }, - { "flyinglocksmiths.com", false }, + { "flyinglocksmiths.com", true }, { "flyingpackets.net", true }, { "flyingrub.me", true }, - { "flyingspaghettimonsterdonationsfund.nl", true }, { "flymns.fr", true }, { "flynn.io", true }, { "flyserver.co.il", true }, @@ -12803,6 +13419,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fmodoux.biz", true }, { "fmovies.fyi", true }, { "fmussatmd.com", true }, + { "fnanen.net", true }, { "fnb-griffinonline.com", true }, { "fnbnokomis.com", true }, { "fnkr.net", true }, @@ -12818,6 +13435,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "foej-aktiv.de", true }, { "foej.net", true }, { "fogpublishingph.com", true }, + { "fogway.net", true }, { "foia.gov", true }, { "foiaonline.gov", true }, { "fojing.com", true }, @@ -12834,6 +13452,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "folkfests.org", true }, { "follandviolins.com", true }, { "followback.net", true }, + { "follower98.ir", true }, { "followerrocket.com", true }, { "followersya.com", true }, { "followings-live.com", true }, @@ -12847,10 +13466,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fondationwiggli.ch", true }, { "fondsdiscountbroker.de", true }, { "fondy.eu", true }, - { "fondy.ru", true }, { "fondy.ua", true }, { "fonga.ch", true }, { "fonolo.com", true }, + { "fonseguin.ca", true }, { "font-converter.net", true }, { "fonte-trading.com", true }, { "fontein.de", true }, @@ -12858,10 +13477,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fonts4free.net", true }, { "foo.fo", true }, { "foo.hamburg", true }, - { "foodacademy.capetown", true }, { "foodattitude.ch", true }, { "foodblogger.club", true }, { "foodcowgirls.com", true }, + { "foodev.de", true }, { "foodsafety.gov", true }, { "foodsafetyjobs.gov", true }, { "foodsouvenirs.it", true }, @@ -12901,6 +13520,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "forexchef.de", true }, { "forexee.com", true }, { "forexsignals7.com", true }, + { "forextickler.com", true }, { "forextimes.ru", false }, { "forfunssake.co.uk", true }, { "forge-goerger.eu", true }, @@ -12919,16 +13539,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "formula-ot.ru", true }, { "formulacionquimica.com", true }, { "fornoreason.net.au", true }, + { "fornwall.net", true }, { "foro.io", false }, { "forodeespanol.com", true }, { "forodieta.com", true }, { "forologikidilosi.com.gr", true }, { "forourselves.com", true }, { "forpc.us", true }, - { "forplayers.pl", true }, + { "forquilhinhanoticias.com.br", true }, { "forrestheller.com", true }, { "forro.info", true }, { "forsakringsarkivet.se", true }, + { "forschbach-janssen.de", true }, { "forsec.nl", true }, { "forstbetrieb-hennecke.de", true }, { "forstprodukte.de", true }, @@ -12940,6 +13562,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fortran.io", true }, { "fortress.no", true }, { "fortress.sk", true }, + { "forty-two.nl", true }, { "forty8creates.com", true }, { "fortytwo.cloud", true }, { "forum-bonn.de", true }, @@ -12956,6 +13579,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fosaudit.com", true }, { "foscamcanada.com", true }, { "fosdem.org", true }, + { "foshanshequ.com", false }, { "fossguard.com", true }, { "fossilfreeyale.org", true }, { "fotella.com", true }, @@ -12968,14 +13592,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "foto-robitsch.at", true }, { "foto-roma.ru", true }, { "foto.by", true }, - { "fotofaerie.net", true }, { "fotoflits.net", true }, + { "fotografechristha.nl", true }, { "fotografiadellalucerossa.com", true }, { "fotohome.dk", true }, + { "fotokomorkomania.pl", true }, { "fotoleitner.com", true }, { "fotoleitner.de", true }, - { "fotonjan.com", true }, - { "fotostravestisbr.com", true }, { "fotostudio-leitner.com", true }, { "fotostudio-leitner.de", true }, { "fotostudio-schweiz.ch", true }, @@ -12983,6 +13606,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fotowolfy.com", true }, { "fougner.co", true }, { "found.website", true }, + { "foundationspecialisteast.com", true }, + { "foundationspecialistmi.com", true }, { "foundchurch.co.uk", true }, { "foundsounds.me", true }, { "fourashesgolfcentre.co.uk", true }, @@ -12992,24 +13617,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "foutrelis.com", true }, { "fowlervwparts.com", true }, { "fowlsmurf.net", true }, + { "fox.my", true }, { "foxbnc.co.uk", true }, { "foxdev.co", true }, + { "foxesare.sexy", true }, { "foxhound.com.br", true }, { "foxing.club", true }, + { "foxo.blue", true }, { "foxontheinter.net", true }, { "foxphotography.ch", true }, { "foxquill.com", true }, { "foxterrier.com.br", true }, - { "foyale.io", true }, { "fpc.gov", true }, { "fpersona.com", true }, - { "fpki.sh", true }, - { "fptravelling.com", false }, + { "fpgradosuperior.com", true }, { "fpvr.org", true }, { "fpy.cz", true }, { "fr.search.yahoo.com", false }, { "fr33tux.org", true }, { "frack.nl", true }, + { "fracreazioni.it", true }, { "fraesentest.de", true }, { "fragmentspuren.de", true }, { "fragstore.net", true }, @@ -13020,10 +13647,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "framezdakkapellen.nl", true }, { "fran.cr", true }, { "francescopalazzo.com", true }, - { "francescoservida.ch", true }, { "francetraceur.fr", true }, { "franchini.email", true }, { "franchini.engineer", true }, + { "francis.tokyo", true }, { "francisli.net", false }, { "franckgirard.net", true }, { "franckyz.com", true }, @@ -13035,8 +13662,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "francoz.me", true }, { "frandor.co.uk", true }, { "frank.fyi", true }, + { "frankbellamy.co.uk", true }, { "franke-chemie.de", true }, - { "frankedier.com", true }, { "franken-lehrmittel.de", true }, { "frankenhost.de", true }, { "frankenlehrmittel.de", true }, @@ -13045,8 +13672,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "frankierprofi.de", true }, { "frankierstar.de", true }, { "frankinteriordesign.co.uk", true }, - { "frankl.in", true }, { "frankmorrow.com", true }, + { "frankopol-sklep.pl", true }, { "franksiler.com", true }, { "frankslaughterinsurance.com", true }, { "frankwei.xyz", true }, @@ -13057,7 +13684,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "franz-vatter.de", true }, { "franz.beer", true }, { "franziska-pascal.de", true }, - { "frappant.cc", false }, + { "franzknoll.de", true }, + { "frappant.cc", true }, { "fraselab.ru", true }, { "frasesdodia.com", true }, { "frasesparaface.com.br", true }, @@ -13076,6 +13704,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "frdl.ch", true }, { "freaksites.dk", true }, { "freaksports.com.au", true }, + { "freakyawesome.com", true }, { "frebi.org", true }, { "frebib.co.uk", true }, { "frebib.com", true }, @@ -13084,7 +13713,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "freddieonfire.tk", false }, { "freddyfazbearspizzeria.com", true }, { "freddysfuncastles.co.uk", true }, - { "fredericcote.com", true }, { "frederickalcantara.com", true }, { "frederik-braun.com", false }, { "frederikvig.com", true }, @@ -13092,19 +13720,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fredriksslekt.se", true }, { "fredvoyage.fr", true }, { "free-your-pc.com", true }, + { "free.ac.cn", true }, { "free.com.tw", true }, { "freeasyshop.com", true }, { "freebarrettbrown.org", true }, { "freebcard.com", true }, { "freebetoffers.co.uk", true }, - { "freeblog.me", true }, { "freebookmakersbetsandbonuses.com.au", true }, { "freeboson.org", true }, - { "freecam2cam.site", true }, { "freecloud.at", true }, - { "freecookies.nl", true }, { "freedev.cz", true }, + { "freedom.nl", true }, { "freedom.press", true }, + { "freedom35.org", true }, { "freedomfinance.se", true }, { "freedomflotilla.org", true }, { "freedomfrontier.tk", true }, @@ -13155,6 +13783,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "freeyourmusic.com", true }, { "freezion.com", true }, { "frei.social", true }, + { "freie-software.net", true }, { "freifahrt.de", true }, { "freifamily.ch", true }, { "freifunk-burgaltendorf.de", true }, @@ -13172,7 +13801,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "freizeitplaza.de", true }, { "frejasdal.dk", true }, { "frenchcreekcog.org", true }, - { "frenzel.dk", true }, + { "frenchmusic.fr", true }, { "frequencebanane.ch", true }, { "frequentflyerapp.com", true }, { "fresh-hotel.org", true }, @@ -13194,6 +13823,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fribourgviking.net", true }, { "frickelmeister.de", true }, { "fridayfoucoud.ma", true }, + { "fridolinka.cz", true }, { "friederes.lu", true }, { "friederloch.de", true }, { "friedrich-foto-art.de", true }, @@ -13228,21 +13858,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "frogsonamission.de", true }, { "froh.co.jp", true }, { "frolova.org", true }, - { "from-the-net.com", true }, { "fromscratch.rocks", true }, { "fromthesoutherncross.com", true }, { "fronteers.nl", false }, + { "frontier-ad.co.jp", true }, + { "frontierdiscount.com", true }, + { "frontiers.nl", true }, { "fropky.com", true }, - { "frosthall.com", true }, { "frostprotection.co.uk", true }, { "frostwarning.com", true }, + { "frostysummers.com", true }, { "frothy.coffee", true }, { "froufe.com", true }, { "frozen-geek.net", true }, { "frozen-solid.net", true }, - { "frprn.com", true }, { "frprn.es", true }, - { "frprn.xxx", true }, { "frtn.com", true }, { "frtr.gov", true }, { "frtrains.com", true }, @@ -13254,7 +13884,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "frugalmechanic.com", true }, { "frugro.be", true }, { "fruition.co.jp", true }, - { "fruitscale.com", true }, { "frusky.de", true }, { "fruttini.de", true }, { "frydrychit.cz", true }, @@ -13274,15 +13903,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fsdress.com", true }, { "fsfxpackages.com", true }, { "fsj4u.ch", true }, - { "fsk.fo", true }, { "fsky.info", true }, { "fsm2016.org", true }, { "fsps.ch", true }, { "fsstyle.com", true }, - { "fsvoboda.cz", true }, { "fsvt.ch", true }, { "ft.com", false }, - { "ftang.de", true }, + { "ftc.gov", false }, { "ftccomplaintassistant.gov", true }, { "ftcefile.gov", true }, { "ftf.agency", true }, @@ -13312,7 +13939,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fuglede.dk", true }, { "fuite.ch", true }, { "fuites.ch", true }, - { "fujianshipbuilding.com", true }, { "fujiorganics.com", false }, { "fujiwaraqol.com", true }, { "fukakukeiba.com", true }, @@ -13326,12 +13952,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "full-stack.ninja", true }, { "fullautomotivo.com.br", true }, { "fullbundle.com", true }, + { "fullereno.com", true }, + { "fullerlife.org.uk", true }, { "fullhost.com", true }, { "fullhub.ru", true }, { "fullmatch.net", true }, - { "fullpackage.co.uk", true }, { "fullstacknotes.com", true }, - { "fulltxt.ml", true }, { "fumblers.ca", true }, { "fumerolles.ch", true }, { "fumo.se", false }, @@ -13347,7 +13973,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "funchestra.at", false }, { "functional.cc", true }, { "functions-online.com", true }, - { "fundayltd.com", true }, { "fundays.nl", true }, { "fundchan.com", true }, { "fundeego.com", true }, @@ -13356,15 +13981,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "funds.ddns.net", true }, { "funerariahogardecristo.cl", true }, { "funfactorleeds.co.uk", true }, + { "funfair.io", true }, { "funfoodco.co.uk", true }, { "funfunmstdn.tokyo", true }, + { "fungames.com", true }, { "funhouse-inflatables.co.uk", true }, { "funinbeds.org.uk", true }, { "funken-networks.de", true }, + { "funkner.ru", true }, { "funktionel.co", true }, { "funktionsverket.se", true }, { "funkygamer1.de", true }, - { "funnelweb.xyz", true }, { "funniestclip.com", true }, { "funnybikini.com", true }, { "funoverip.net", true }, @@ -13373,13 +14000,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "funtime-inflatables.co.uk", true }, { "funtime.com.ua", true }, { "funtime.kiev.ua", true }, - { "funtimebourne.co.uk", true }, { "funtimeentertainment.co.uk", true }, { "funtimesbouncycastles.co.uk", true }, { "fur.red", true }, + { "furcity.me", true }, { "furgo.love", true }, { "furigana.info", true }, - { "furikake.xyz", true }, { "furkancaliskan.com", true }, { "furkot.com", true }, { "furkot.de", true }, @@ -13391,27 +14017,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "furlog.it", true }, { "furnfurs.com", true }, { "furnitureconcept.co.uk", true }, - { "furry.agency", true }, + { "furry.cat", true }, { "furry.dk", true }, { "furry.zone", false }, { "furrybot.me", true }, { "furrytech.network", true }, + { "furrytf.club", true }, { "furryyiff.site", true }, { "fursuitbutts.com", true }, { "furtherfood.com", true }, - { "fusa-miyamoto.jp", true }, { "fuselight.nl", true }, { "fuseos.net", true }, { "fushee.com", true }, { "fusiongaming.de", true }, - { "fuskator.com", true }, { "fussball-xxl.de", true }, - { "fussell.io", true }, + { "futa.agency", true }, { "futagro.com", true }, + { "futbomb.com", true }, + { "futcre.com", true }, { "futrou.com", true }, { "future-moves.com", true }, { "futurefund.com", true }, { "futurefundapp.com", true }, + { "futuregrowthva.com", true }, { "futurehack.io", true }, { "futurenda.com", true }, { "futureoceans.org", true }, @@ -13420,14 +14048,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "futurope.com", true }, { "fuwafuwa.moe", true }, { "fuyu.moe", true }, - { "fuzoku.jp", true }, { "fuzzing-project.org", true }, { "fveevaete.com", true }, { "fwdx.net", true }, { "fwest.ovh", true }, { "fwest98.nl", true }, { "fwest98.ovh", true }, - { "fwww7.com", true }, { "fx-rk.com", true }, { "fx24.uk", true }, { "fx5.de", true }, @@ -13450,8 +14076,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fxwebsites.com.au", true }, { "fxwebsites.net.au", true }, { "fxwebstudio.net.au", true }, + { "fyfywka.com", true }, { "fyksen.me", true }, { "fyn.nl", true }, + { "fyol.xyz", false }, { "fyretrine.com", true }, { "fysesbjerg.dk", true }, { "fysio123.nl", true }, @@ -13462,16 +14090,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fysiovdberg.nl", true }, { "fysuite.com", true }, { "fzbrweb.cz", true }, + { "fzhyzamt.com", true }, { "fzx750.ru", true }, { "g-m-w.eu", true }, { "g-marketing.ro", true }, { "g-o.pl", true }, + { "g-p-design.com", true }, { "g-rom.net", true }, { "g0881.com", true }, + { "g0man.com", true }, { "g1.ie", true }, { "g10e.ch", true }, { "g2links.com", true }, { "g2pla.net", true }, + { "g2ship.com", true }, { "g2soft.net", true }, { "g3d.ro", true }, { "g3dev.ch", true }, @@ -13479,15 +14111,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "g4w.co", true }, { "g5.gov", true }, { "g8energysolutions.co.uk", true }, - { "gaanbaksho.com.au", true }, { "gaaz.fr", true }, { "gabe565.com", true }, + { "gabeb1920.com", true }, { "gabecook.com", true }, { "gabemack.com", true }, { "gabinetpsychoterapii.krakow.pl", true }, { "gabriel.to", true }, { "gabrielsimonet.ch", true }, { "gabrielsteens.nl", true }, + { "gachimuchi.ru", true }, + { "gachiyase.com", true }, { "gachter.name", true }, { "gadabit.pl", true }, { "gadgethacks.com", true }, @@ -13498,21 +14132,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gaff-rig.co.uk", true }, { "gaflooring.com", true }, { "gafunds.com", true }, + { "gagliarducci.it", true }, { "gagne-enterprises.com", true }, { "gagne.tk", true }, { "gagnerplusdargent.info", true }, { "gagniard.org", true }, - { "gagor.pl", true }, { "gagygnole.ch", true }, + { "gaiavanderzeyp.com", true }, { "gaichon.com", true }, - { "gailfellowsphotography.com", true }, { "gaines-sodiamex.fr", true }, { "gaio-automobiles.fr", true }, { "gaireg.de", true }, { "gaitandmobility.com", true }, { "gaitrehabilitation.com", true }, { "gaitresearch.com", true }, - { "gajas18.com", true }, { "gakkainavi-epsilon.jp", true }, { "gakkainavi-epsilon.net", true }, { "gakkainavi.jp", true }, @@ -13521,11 +14154,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gakkainavi4.net", true }, { "gaku-architect.com", true }, { "gala.kiev.ua", false }, + { "galabau-maurmann.de", true }, + { "galacg.me", true }, { "galactic-crew.org", true }, { "galak.ch", true }, + { "galanight.cz", true }, + { "galecia.com", true }, + { "galeria42.com", true }, { "galerieautodirect.com", true }, { "galeries.photo", true }, { "galgopersa.com.br", true }, + { "galilahiskye.com", true }, { "galileanhome.org", true }, { "galinas-blog.de", true }, { "galinos.gr", true }, @@ -13547,10 +14186,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gambitnash.com", true }, { "gambitprint.com", true }, { "gamblersgaming.eu", true }, + { "game4less.com", true }, { "game7.de", true }, { "gameblabla.nl", true }, { "gamebrott.com", true }, { "gamecard-shop.nl", true }, + { "gameclue.jp", true }, { "gamecollector.be", true }, { "gameconservation.org.uk", true }, { "gamedevelopers.pl", true }, @@ -13562,7 +14203,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gamenerd.net", true }, { "gameofpwnz.com", true }, { "gamepad.com.br", true }, + { "gameplaysforkids.com", true }, + { "gamepreorders.com", true }, + { "gamequest.info", true }, { "gamercredo.com", true }, + { "gamereader.de", true }, { "gamerezo.com", true }, { "gamerzdot.com", true }, { "games4theworld.org", true }, @@ -13573,6 +14218,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gamesplanet.com", true }, { "gamesputnik.ru", true }, { "gamestats.gg", true }, + { "gametube.website", true }, { "gamilab.com", true }, { "gamilab.no", true }, { "gamingexodus.com", true }, @@ -13581,6 +14227,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gamingwithcromulent.com", true }, { "gamingzoneservers.com", true }, { "gamishou.fr", true }, + { "gamivo.com", true }, { "gamoloco.com", true }, { "gan.wtf", true }, { "ganado.org", true }, @@ -13593,11 +14240,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gandgliquors.com", true }, { "ganggalbichler.at", true }, { "gansleit.com", false }, - { "ganzgraph.de", true }, + { "ganyouxuan.com", true }, { "ganztagplus.de", true }, { "gao.rocks", true }, { "gaojianli.tk", true }, - { "gaon.network", true }, { "gaos.org", true }, { "gapdirect.com", true }, { "gapfa.org", true }, @@ -13611,6 +14257,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "garanteasy.com", true }, { "garbage-juice.com", true }, { "garbomuffin.com", true }, + { "garciagerman.com", true }, { "garda-see.mobi", true }, { "gardedenfantspourtous.fr", true }, { "garden-life.org", true }, @@ -13620,12 +14267,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gardinte.com", true }, { "garedtech.com", false }, { "garethbowker.com", true }, + { "garethkirk.com", true }, { "garethkirkreviews.com", true }, { "garethrhugh.es", true }, { "garforthgolfclub.co.uk", true }, { "gargazon.net", true }, { "garron.net", true }, { "garrowmediallc.com", true }, + { "gartenhauszentrum.de", true }, { "gartenplanung-brendes.de", true }, { "garycarmell.com", true }, { "garycwaite.com", true }, @@ -13636,43 +14285,48 @@ static const nsSTSPreload kSTSPreloadList[] = { { "garywhittington.com", true }, { "gashalot.com", true }, { "gastoudererenda.nl", true }, - { "gastritisolucion.com", true }, + { "gastromedicalcenter.com.br", true }, { "gastrotiger.at", true }, { "gastrotiger.de", true }, { "gate2home.com", true }, { "gateaucreation.fr", true }, { "gatewaybridal.com", true }, { "gatewaybronco.com", true }, - { "gatilagata.com.br", true }, { "gauche.com", true }, { "gaudeamus-folklor.cz", true }, { "gaudere.co.jp", true }, + { "gaurl.ga", true }, { "gaussianwaves.com", true }, - { "gautham.it", false }, + { "gautham.it", true }, { "gauthier.dk", true }, { "gautvedt.no", true }, { "gavins.stream", true }, { "gavinsblog.com", true }, + { "gawrimanecuta.com", true }, { "gay-jays.com", true }, - { "gay-sissies.com", true }, + { "gaya-sa.org", true }, { "gayforgenji.com", true }, { "gayjays.com", true }, + { "gaymerconnect.net", true }, + { "gaymerx.com", true }, + { "gaymerx.net", true }, + { "gaymerx.org", true }, { "gaysexpositions.guide", true }, - { "gaysfisting.com", true }, - { "gaytorrent.ru", true }, { "gayukai.net", true }, - { "gayxsite.com", true }, { "gazachallenge.org", true }, { "gazee.net", true }, { "gazellegames.net", false }, + { "gazete.org", true }, { "gazette.govt.nz", true }, { "gbc-radio.nl", true }, { "gbcsummercamps.com", true }, - { "gbit.xyz", true }, { "gbl.selfip.net", true }, { "gboys.net", true }, + { "gc-mc.de", true }, { "gc.gy", true }, + { "gc.ru.net", true }, { "gcbit.dk", true }, + { "gccm-events.com", true }, { "gcfadvisors.com", true }, { "gcgeeks.com.au", true }, { "gcguild.net", true }, @@ -13685,8 +14339,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gdgrzeszow.pl", true }, { "gdhzcgs.com", true }, { "gdiary.net", true }, + { "gdngs.de", true }, { "gdpr-pohotovost.cz", true }, - { "gdutnic.com", true }, { "gdv.me", true }, { "gdz-spishy.com", true }, { "ge3k.net", false }, @@ -13696,7 +14350,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gearfinder.nl", true }, { "gearseo.com.br", true }, { "gearset.com", true }, - { "geaskb.nl", true }, { "geass.xyz", true }, { "geba-online.de", true }, { "gebn.co.uk", true }, @@ -13718,29 +14371,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "geekabit.nl", true }, { "geekandi.com", true }, { "geekariom.com", true }, - { "geekchimp.com", true }, { "geekclubbooks.com", true }, { "geeklair.net", true }, { "geeklan.co.uk", true }, { "geekles.net", true }, { "geeknik.com", true }, { "geekpad.com", true }, - { "geekseries.fr", true }, + { "geeks.one", true }, { "geekshirts.cz", true }, { "geektopia.es", true }, { "geekwhack.org", true }, { "geekwithabudget.com", true }, { "geekwu.org", true }, - { "geeky.software", true }, { "geekystudios.us", true }, { "geekz.sk", true }, { "geekzone.co.nz", true }, { "geekzone.fr", true }, { "geeq.ch", true }, { "geerdsen.net", true }, + { "geertdegraaf.nl", true }, { "geertswei.nl", true }, { "gegeco.ch", true }, { "geh.li", true }, + { "gehaowu.com", true }, + { "gehas-wein-shop.de", true }, + { "gehirn.co.jp", true }, + { "gehirn.jp", true }, { "gehopft.de", true }, { "gehreslaw.com", true }, { "gehrke.in", true }, @@ -13763,6 +14419,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gem-info.fr", true }, { "gemeentemolenwaard.nl", true }, { "gemeinsam-ideen-verwirklichen.de", true }, + { "gemgroups.in", true }, { "gemini.com", true }, { "gemquery.com", true }, { "genchev.io", true }, @@ -13776,10 +14433,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "geneau.net", true }, { "genehightower.com", true }, { "genehome.com.au", true }, + { "generace-id.org", true }, { "generador-electrico.com", true }, { "general-anaesthesia.com", true }, { "general-anaesthetics.com", true }, { "general-anesthesia.com", true }, + { "general-insurance.tk", true }, { "generali-worldwide.com", true }, { "generalinsuranceservices.com", true }, { "generationgoat.com", true }, @@ -13795,6 +14454,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "geneve-naturisme.ch", true }, { "genevoise-entretien.ch", true }, { "genfaerd.dk", true }, + { "geniush.ovh", true }, + { "geniushost.in", true }, { "geniusteacher.in", true }, { "geniuszone.biz", true }, { "genocidediary.org", true }, @@ -13809,6 +14470,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gensicke.de", true }, { "genslerapps.com", true }, { "genslerwisp.com", true }, + { "gensokyo.chat", true }, + { "gensokyo.re", true }, { "gensonline.eu", true }, { "gentianes.ch", true }, { "gentoo-blog.de", true }, @@ -13826,6 +14489,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "geomex.be", true }, { "geoponika.gr", true }, { "geoport.al", true }, + { "georadar-algerie.com", true }, { "george-brighton.co.uk", true }, { "george-orwell.com", true }, { "georgebrighton.co.uk", true }, @@ -13835,6 +14499,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "georgemaschke.net", true }, { "georgescarryout.com", true }, { "georgewbushlibrary.gov", true }, + { "georgiaautoglass.net", true }, { "georgiaglassrepair.com", true }, { "georgiastuartyoga.co.uk", true }, { "georgioskontaxis.com", true }, @@ -13846,29 +14511,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "geosphereservices.com", true }, { "geotab.com", true }, { "gepe.ch", true }, + { "gepgroup.gr", true }, { "gepps.de", true }, { "geraintwhite.co.uk", true }, { "gerald-zojer.com", true }, { "geraldsonrealty.com", true }, + { "gerardinden.nl", true }, { "gerardozamudio.mx", true }, + { "gerbyte.co.uk", true }, + { "gerbyte.com", true }, + { "gerbyte.uk", true }, + { "germancraft.net", true }, { "germandarknes.net", true }, { "germansoldiers.net", true }, { "germanssky.de", true }, { "gernert-server.de", true }, { "gero.io", true }, { "gerritcodereview.com", true }, - { "gerum.dynv6.net", true }, { "gerwinvanderkamp.nl", true }, { "ges-bo.de", true }, { "geschichtscheck.de", true }, { "geschmacksache.online", true }, { "geschwinder.net", true }, + { "gesica.cloud", true }, { "gestorehotel.com", true }, { "gestormensajeria.com", true }, { "gesundheitmassage.com", true }, { "gesundheitswelt24.de", true }, { "get-erp.ru", true }, { "get-it-live.com", true }, + { "get-it-live.de", true }, { "get-link.info", true }, { "get-on.bid", true }, { "get-refer.com", true }, @@ -13883,6 +14555,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "getbutterfly.com", true }, { "getcloak.com", false }, { "getcolq.com", true }, + { "getcommande.com", true }, { "getdash.io", true }, { "getdeveloper.de", true }, { "geteckeld.nl", true }, @@ -13891,12 +14564,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "getfirstalert.com", true }, { "getfittedstore.com", true }, { "getflorence.co.uk", true }, + { "getfoundquick.com", true }, { "getgeek.es", true }, { "gethow.org", true }, { "gethttpsforfree.com", true }, { "geti2p.com", true }, { "getidmcc.com", true }, { "getimgs.com", true }, + { "getinphase.com", true }, + { "getitlive.de", true }, { "getitpeople.com", true }, { "getmango.com", true }, { "getmdl.io", true }, @@ -13916,11 +14592,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "getsecure.nl", true }, { "getsensibill.com", true }, { "getsetbounce.co.uk", true }, - { "getsetupfile.com", true }, { "getsilknow.com", true }, { "getsmartaboutdrugs.gov", true }, { "getsport.mobi", true }, { "getsubs.net", true }, + { "getswadeshi.com", true }, { "getteamninja.com", true }, { "getthefriendsyouwant.com", true }, { "getticker.com", true }, @@ -13928,11 +14604,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "getupandbounce.co.uk", true }, { "getvdownloader.com", true }, { "getweloop.io", true }, + { "getwemap.com", true }, { "getwisdom.io", true }, + { "getyeflask.com", true }, { "getyou.onl", true }, { "getyourlifestraight.com", true }, { "geyduschek.be", true }, { "gf-franken.de", true }, + { "gf5fcalc.com", true }, { "gfahnen.de", true }, { "gfast.ru", true }, { "gfcleisure.co.uk", true }, @@ -13948,30 +14627,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gforce.ninja", true }, { "gfoss.eu", true }, { "gfournier.ca", true }, + { "gfwno.win", true }, { "gfxbench.com", true }, { "ggdcpt.com", true }, { "gginin.today", true }, { "ggl-luzern.ch", true }, { "ggma.co.uk", true }, { "ggmmontascale.it", true }, - { "ggobbo.com", true }, { "ggp2.com", true }, { "ggs-marschallstrasse.de", true }, { "ggs.jp", true }, { "ggservers.com", true }, { "ggx.us", true }, { "gha.st", true }, + { "ghaglund.se", true }, + { "ghid-pitesti.ro", true }, { "ghini.com", true }, { "ghislainphu.fr", true }, { "ghostblog.info", false }, { "ghostcir.com", true }, + { "ghou.me", true }, + { "ghowell.io", true }, { "ghrelinblocker.info", true }, { "ghrelinblocker.org", true }, - { "ghuntley.com", false }, { "giac.org", true }, { "giacomodrago.com", true }, { "giacomodrago.it", true }, { "giacomopelagatti.it", true }, + { "giaithich.net", true }, { "gianproperties.com", true }, { "giant-panda.com", true }, { "giant-tortoise.com", true }, @@ -13983,7 +14666,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gibraltar.at", true }, { "gichigamigames.com", true }, { "gicl.dk", true }, - { "giddyaunt.net", true }, { "giduv.com", true }, { "giebel.it", true }, { "gierds.de", true }, @@ -13993,8 +14675,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "giftedconsortium.com", true }, { "giftking.nl", false }, { "giftmaniabrilhos.com.br", true }, + { "gifts.best", true }, { "gifts365.co.uk", true }, - { "giftservices.nl", true }, { "gig-raiffeisen.de", true }, { "giga.nl", true }, { "gigabitz.pw", true }, @@ -14008,7 +14690,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gigis-pizzeria.de", true }, { "gigis.cloud", true }, { "giglink.club", true }, - { "gigolodavid.be", true }, { "gigseekr.com", true }, { "gigtroll.eu", true }, { "gijsbertus.com", true }, @@ -14024,14 +14705,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gillyscastles.co.uk", true }, { "gilmoreid.com.au", true }, { "gilnet.be", true }, + { "gimme.money", true }, { "gina-architektur.design", true }, - { "ginie.de", true }, + { "gingersutton.com", true }, { "ginionusedcars.be", true }, { "ginja.co.th", true }, { "ginnegappen.nl", true }, { "ginniemae.gov", true }, + { "gino-gelati.de", true }, { "ginza-luce.net", true }, { "ginzadelunch.jp", true }, + { "ginzaj.com", true }, { "giochi-online.ws", true }, { "giochiecodici.it", true }, { "gioielleriamolena.com", true }, @@ -14045,19 +14729,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "girlsforum.com", true }, { "girlsgenerationgoods.com", true }, { "girlsgonesporty.com", true }, + { "girlsnet.work", true }, { "girlz.jp", true }, { "girsa.org", true }, { "girvas.ru", true }, + { "gisch.tk", true }, { "gisgov.be", true }, + { "gisher.news", true }, { "gisher.org", true }, + { "gisher.video", true }, { "gistr.io", true }, { "git.ac.cn", true }, { "git.market", true }, + { "git.sb", true }, { "git.tt", true }, { "gitep.org.uk", true }, { "gites-alizea.com", true }, { "gitesdeshautescourennes.com", true }, { "github.com", true }, + { "githubber.com", true }, + { "githubber.tv", true }, { "gitla.in", true }, { "gitstuff.tk", true }, { "gittigidiyor.com", true }, @@ -14088,9 +14779,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gl.search.yahoo.com", false }, { "glaciernursery.com", true }, { "gladwellentertainments.co.uk", true }, + { "glahcks.com", true }, { "glamguru.co.il", true }, { "glamguru.world", true }, { "glamour4you.de", true }, + { "glamourdaze.com", true }, { "glasdon.com", true }, { "glasen-hardt.de", true }, { "glasfaser-im-hanseviertel.de", true }, @@ -14098,12 +14791,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "glasner.photo", true }, { "glass.google.com", true }, { "glasschmuck-millefiori.de", true }, + { "glasweld.com", true }, { "glavsudexpertiza.ru", true }, { "glazedmag.fr", true }, { "glcastlekings.co.uk", true }, { "gleanview.com", true }, { "gleich-aluminium-shop.de", true }, { "glenberviegolfclub.com", true }, + { "glencambria.com", true }, { "glencarbide.com", true }, { "glendarraghbouncycastles.co.uk", true }, { "glenhuntlyapartments.com.au", true }, @@ -14112,6 +14807,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "glidingshop.cz", true }, { "glidingshop.de", true }, { "glidingshop.eu", true }, + { "glitzerstuecke.de", true }, { "glloq.org", true }, { "glob-coin.com", true }, { "global-adult-webcams.com", true }, @@ -14141,10 +14837,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "glocalworks.jp", true }, { "glofox.com", true }, { "gloneta.com", false }, + { "glosiko.com", true }, { "glossopnorthendafc.co.uk", true }, { "glotech.co.uk", true }, { "glotechkitchens.co.uk", true }, { "glotechrepairs.co.uk", true }, + { "glu3cifer.rocks", true }, { "glueck-im-norden.de", true }, { "gluecksgriff-taschen.de", true }, { "glueckskindter.de", true }, @@ -14154,8 +14852,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "glutenfreevr.com", true }, { "glykofridis.nl", true }, { "glyxins.com", true }, + { "gm-net.jp", true }, { "gm.search.yahoo.com", false }, { "gmail.com", false }, + { "gmantra.org", true }, { "gmbh-kiekin.de", true }, { "gmc.uy", true }, { "gmccar.it", true }, @@ -14165,7 +14865,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gmod.de", true }, { "gmpark.dk", true }, { "gmpartsdb.com", true }, + { "gmplab.com", true }, { "gmta.nl", true }, + { "gmtplus.co.za", true }, { "gmw-hannover.de", true }, { "gmw-ingenieurbuero.de", true }, { "gmx.at", true }, @@ -14178,10 +14880,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gmx.net", true }, { "gn00.com", true }, { "gnax.jp", false }, + { "gndh.net", true }, { "gnetion.com", true }, { "gnetwork.eu", true }, + { "gnfrazier.me", true }, { "gnhub.org", true }, { "gnilebein.de", true }, + { "gnk.io", true }, { "gnuand.me", true }, { "gnucashtoqif.us", true }, { "gnunet.org", true }, @@ -14206,7 +14911,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gobouncy.co.uk", true }, { "gobouncy.com", true }, { "gobranding.com.vn", true }, - { "gocardless.com", true }, + { "gocher.me", true }, { "gochu.se", true }, { "gocleanerslondon.co.uk", true }, { "god-clan.hu", true }, @@ -14228,11 +14933,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "goedverzekerd.net", true }, { "goemail.me", true }, { "goerlitz-zgorzelec.org", true }, + { "goerres2014.de", true }, + { "goesta-hallenbau.de", true }, { "goetemp.de", true }, { "goetic.space", true }, { "goettinger-biergarten.de", true }, { "goffrie.com", true }, { "gofigure.fr", false }, + { "goflipr.com", true }, { "goflo.net", true }, { "gofoiayourself.org", true }, { "gogle-analytics.com", true }, @@ -14248,8 +14956,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "goingreen.com.au", true }, { "gokhankesici.com", true }, { "gokmenguresci.com", true }, + { "golang.zone", true }, { "gold24.ru", true }, + { "goldcoastasian.com", true }, { "goldcoasthypnotherapyhypnosis.com.au", true }, + { "goldcoastphotographycourses.com", true }, { "goldcoaststumpbusters.com", true }, { "goldegg-training.com", false }, { "goldenbadger.de", true }, @@ -14257,10 +14968,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "goldenhillsoftware.com", true }, { "goldenhost.ca", true }, { "goldenplate.com.sg", true }, + { "goldfmromania.ro", true }, { "goldmark.com.au", true }, { "goldpreisfinder.at", true }, { "goldsecurity.com", true }, - { "goldsky.com.au", true }, { "goldstein.tel", true }, { "golf18network.com", true }, { "golf18staging.com", true }, @@ -14273,11 +14984,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "golser.info", true }, { "gomasy.jp", true }, { "gomelchat.com", true }, + { "gomena.io", true }, + { "gomiblog.com", true }, { "gommista.roma.it", true }, { "gondawa.com", true }, - { "gongjianwei.com", true }, { "gongjuhao.com", true }, - { "gonkar.com", true }, { "gonx.dk", true }, { "goo.gl", true }, { "gooby.co", false }, @@ -14285,7 +14996,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gooday.life", true }, { "gooddomainna.me", true }, { "goodenough.nz", false }, - { "goodvibesblog.com", true }, + { "goodfeels.net", true }, + { "goodhealthtv.com", true }, + { "goodshepherdmv.com", true }, { "google", true }, { "google-analytics.com", true }, { "googleandroid.cz", true }, @@ -14294,12 +15007,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "googlesource.com", true }, { "goombi.fr", true }, { "goonersworld.co.uk", true }, + { "goooo.info", true }, { "gootlijsten.nl", true }, { "goozp.com", true }, { "gopher.tk", true }, { "goproallaccess.com", true }, { "goquiq.com", true }, - { "gorakukai.jp", true }, + { "gordonobrecht.com", true }, { "gordonscouts.com.au", true }, { "gorf.chat", true }, { "gorf.club", true }, @@ -14312,12 +15026,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gosforthdentalsurgery.co.uk", true }, { "goshawkdb.io", true }, { "goshin-group.co.jp", true }, - { "goshow.tv", true }, { "gospelfollower.com", true }, { "gospelofmark.ch", true }, { "gospelvestcination.de", true }, { "gostaffer.com", true }, - { "gostest.org", true }, + { "gostest.org", false }, + { "gosu.pro", true }, { "gosuland.org", true }, { "got-tty.de", true }, { "goteborgsklassikern.se", true }, @@ -14331,7 +15045,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "goto.world", true }, { "goto10.se", true }, { "gotomi.info", true }, - { "gotowned.org", false }, { "gotoxy.at", true }, { "gotrail.fr", true }, { "gottcode.org", false }, @@ -14350,6 +15063,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "govtjobs.blog", true }, { "govtrack.us", true }, { "govype.com", true }, + { "gowe.wang", false }, { "gowildrodeo.co.uk", true }, { "gowin9.com", true }, { "gowin9.net", true }, @@ -14373,16 +15087,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gra2.com", true }, { "graasp.net", false }, { "grabacabpa.com", true }, - { "grabi.ga", true }, { "grace-wan.com", true }, { "gracebaking.com", false }, { "gracedays.org", true }, { "gracethrufaith.com", true }, { "gracetini.com", true }, { "graciousmay.com", true }, - { "gradenotify.com", true }, + { "gradecam.com", true }, { "gradienthosting.co.uk", true }, { "gradients.com", true }, + { "gradingcontractornc.com", true }, { "gradualgram.com", true }, { "graeber.com", true }, { "graecum.org", true }, @@ -14396,6 +15110,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "grafoteka.pl", true }, { "graft.community", true }, { "graft.observer", true }, + { "grahamcarruthers.co.za", true }, { "grahamcluley.com", true }, { "grahamofthewheels.com", true }, { "grailians.com", true }, @@ -14405,21 +15120,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gram.tips", true }, { "gramati.com.br", true }, { "grammysgrid.com", true }, + { "grana.com", true }, { "granary-demo.appspot.com", false }, { "grancellconsulting.com", true }, + { "grandcafecineac.nl", true }, { "grandcafetwist.nl", true }, { "grandcapital.cn", true }, { "grandcapital.id", true }, + { "grandcapital.net", true }, { "grandcapital.ru", true }, { "grandcastles.co.uk", true }, { "grandchene.ch", true }, { "grandefratellonews.com", true }, { "grandeto.com", true }, { "grandjunctionbrewing.com", true }, - { "grandmasfridge.org", true }, { "grandmusiccentral.com.au", true }, { "grandpadusercontent.com", true }, - { "grandwailea.com", true }, { "granfort.es", false }, { "granian.pro", true }, { "granishe.com", true }, @@ -14436,11 +15152,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "graphcommons.com", true }, { "graphene.software", true }, { "graphic-shot.com", true }, + { "graphified.nl", false }, { "graphire.io", true }, { "grapholio.net", true }, { "grasmark.com", true }, { "grassenberg.de", true }, { "grasshoppervape.com", true }, + { "grasso.io", true }, { "grassreinforcement.com.au", true }, { "gratis-lovecheck.de", true }, { "gratisgamecards.nl", true }, @@ -14465,7 +15183,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "grazieitalian.com", true }, { "grc.com", false }, { "greatagain.gov", true }, - { "greatergoodoffers.com", true }, { "greatestwebsiteonearth.com", true }, { "greatfire.org", true }, { "greatislandarts.ca", true }, @@ -14479,18 +15196,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "greek.dating", true }, { "green-attitude.be", true }, { "green-care.nl", true }, + { "green-light.cf", true }, { "green-light.co.nz", true }, + { "green-light.ga", true }, + { "green-light.gq", true }, + { "green-light.ml", true }, { "greenaddress.it", true }, { "greenapproach.ca", true }, + { "greenbaysecuritysolutions.com", true }, { "greencircleplantnursery.com.au", true }, { "greencircleplantnursery.net.au", true }, - { "greenenergysolution.uk", true }, { "greener.pl", true }, { "greenglam.biz", true }, { "greengoblindev.com", true }, { "greenhats.de", true }, { "greenliquidsystem.com", true }, + { "greenliv.pl", true }, { "greenlungs.net", true }, + { "greenmachines.com", true }, { "greenoutdoor.dk", false }, { "greenpanda.de", true }, { "greenpartyofnewmilford.org", true }, @@ -14498,16 +15221,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "greenpeace.berlin", true }, { "greenroach.ru", true }, { "greenrushdaily.com", true }, + { "greensborosecuritycameras.com", true }, { "greensdictofslang.com", true }, { "greensquare.tk", true }, { "greenteamtwente.nl", true }, - { "greenville.ag", true }, { "greenwithdecor.com", true }, { "greer.ru", true }, { "greg.red", true }, + { "gregbrimble.com", true }, { "greger.me", true }, + { "gregmarziomedia.co.za", true }, + { "gregmarziomedia.com", true }, { "gregmilton.com", true }, { "gregmilton.org", true }, + { "gregmote.com", true }, + { "grego.pt", true }, { "gregoirow.be", true }, { "gregorians.org", true }, { "gregorkofler.com", true }, @@ -14531,6 +15259,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "greybeards.ca", true }, { "greyhash.se", true }, { "greymattertechs.com", true }, + { "greysky.me", true }, { "greyskymedia.com", true }, { "greysolutions.it", true }, { "greywizard.com", true }, @@ -14548,6 +15277,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "griegshipbrokers.com", true }, { "griegshipbrokers.no", true }, { "griesser2.de", true }, + { "grillen-darf-nicht-gesund-sein.de", true }, { "grillteller42.de", true }, { "grimcalc.com", true }, { "grimm-gastrobedarf.de", true }, @@ -14555,9 +15285,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "grimstveit.no", true }, { "grinnellplans.com", true }, { "gripnijmegen.rip", true }, + { "grippe-impftermin.de", true }, { "gritte.ch", true }, { "grizzlys.com", true }, { "grmp.fr", true }, + { "grocerybuild.com", true }, { "grocock.me.uk", true }, { "groenaquasolutions.nl", true }, { "groenewoud.me", true }, @@ -14575,11 +15307,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "groovygoldfish.org", true }, { "gropp.org", true }, { "gross.business", true }, - { "grossell.ru", true }, + { "grossberger-ge.org", true }, { "groszek.pl", true }, { "groth.im", true }, { "groth.xyz", true }, { "grothoff.org", true }, + { "grottenthaler.eu", true }, { "grouchysysadmin.com", true }, { "group4layers.net", true }, { "groupe-neurologique-nord.lu", true }, @@ -14591,11 +15324,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "growingallthings.co.uk", true }, { "growit.events", true }, { "growy.ch", true }, - { "grozter.se", true }, + { "grrmmll.com", true }, { "grsecurity.net", true }, { "gruble.de", true }, { "gruebebraeu.ch", true }, - { "gruelang.org", true }, { "gruenderlehrstuhl.de", true }, { "gruene-im-rvr.de", true }, { "gruene-wattenscheid.de", true }, @@ -14617,9 +15349,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gs93.de", true }, { "gsaj114.net", true }, { "gscloud.xyz", true }, + { "gsdb.net", true }, { "gsi-network.com", true }, { "gsimagebank.co.uk", true }, { "gslink.me", true }, + { "gsmbrick.com", true }, { "gsmsecurity.net", true }, { "gsrc.io", true }, { "gst.name", true }, @@ -14637,10 +15371,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gtmasterclub.it", false }, { "gtmetrix.com", true }, { "gtopala.com", true }, + { "gtopala.net", true }, { "gtour.info", false }, { "gtravers-basketmaker.co.uk", true }, { "gts-dp.de", true }, { "gtts.space", true }, + { "guajars.cl", true }, { "guanyembadalona.org", true }, { "guanzhong.ca", true }, { "guardian360.nl", true }, @@ -14649,11 +15385,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gubagoo.com", true }, { "gubagoo.io", true }, { "gudini.net", true }, - { "gudrun.ml", true }, { "guegan.de", true }, { "guelo.ch", true }, - { "guendra.dedyn.io", true }, { "guenthereder.at", true }, + { "guerard.info", true }, { "guerrilla.technology", true }, { "guesthouse-namaste.com", true }, { "guevener.de", true }, @@ -14678,13 +15413,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "guideo.ch", true }, { "guidepointsecurity.com", true }, { "guides-peche64.com", true }, - { "guidesetc.com", true }, { "guidetoiceland.is", false }, { "guildbase.de", true }, { "guildofmusicsupervisors.co.uk", true }, { "guillaume-briand.fr", true }, { "guillaumecote.me", true }, - { "guillaumeperrin.io", true }, { "guillemaud.me", true }, { "guim.co.uk", true }, { "guineapigmustach.es", true }, @@ -14696,6 +15429,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gumballs.com", true }, { "gume4you.com", true }, { "gumi.ca", true }, + { "gunauc.net", true }, { "gunceloyunhileleri.com", true }, { "gunwatch.co.uk", true }, { "gunworld.com.au", true }, @@ -14707,7 +15441,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "guphi.net", false }, { "gurkan.in", true }, { "gurmel.ru", true }, - { "gurochan.ch", true }, { "gurpusmaximus.com", true }, { "guru-naradi.cz", true }, { "gurucomi.com", true }, @@ -14723,13 +15456,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "guus-thijssen.nl", true }, { "guusvandewal.nl", true }, { "guvernalternativa.ro", true }, + { "guyeskens.be", true }, { "gv-neumann.de", true }, + { "gv-salto.nl", true }, { "gvatas.in", true }, { "gveh.de", true }, { "gvi-timing.ch", true }, { "gviedu.com", true }, { "gvitiming.ch", true }, - { "gvm.io", true }, { "gvobgyn.ca", true }, { "gvt2.com", true }, { "gvt3.com", true }, @@ -14737,12 +15471,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gw2efficiency.com", true }, { "gw2treasures.com", true }, { "gw2zone.net", true }, - { "gwa-verwaltung.de", true }, { "gwerder.net", true }, { "gwhois.org", true }, { "gwrtech.com", true }, { "gwsec.co.uk", true }, { "gxmyqy.net", true }, + { "gyara.moe", true }, { "gyas.nl", true }, { "gycis.me", false }, { "gymagine.ch", true }, @@ -14753,6 +15487,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gymnasium-hittfeld.de", true }, { "gympap.de", true }, { "gynaecology.co", true }, + { "gynoguide.com", true }, { "gypsyreel.com", true }, { "gyre.ch", true }, { "gyrenens.ch", true }, @@ -14763,12 +15498,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gz-bmw.com", true }, { "gza.jp", true }, { "gzitech.com", true }, + { "gzitech.net", true }, + { "gzitech.org", true }, { "gzom.ru", true }, { "h-jo.net", true }, { "h-suppo.com", true }, { "h001.ru", true }, { "h09.eu", true }, { "h0r.st", true }, + { "h10l.com", true }, { "h11.io", true }, { "h11.moe", true }, { "h1ctf.com", true }, @@ -14777,11 +15515,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "h2s-design.de", true }, { "h2u.tv", true }, { "h3artbl33d.nl", true }, - { "h3z.jp", false }, + { "h3b.nl", true }, + { "h3z.jp", true }, { "h404bi.com", true }, { "ha-kunamatata.de", true }, { "ha3.eu", true }, - { "ha6.ru", true }, { "haarlemsesaxofoonschool.nl", true }, { "haavard.me", true }, { "haazen.xyz", true }, @@ -14797,18 +15535,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "haccp.bergamo.it", true }, { "haccp.milano.it", true }, { "haccp.roma.it", true }, + { "hacertest.com", true }, { "hacettepeteknokent.com.tr", true }, { "hachre.de", false }, - { "hack.club", true }, + { "hack.cz", true }, { "hackademix.net", true }, { "hackanders.com", true }, { "hackattack.com", true }, { "hackbarth.guru", true }, { "hackbeil.name", true }, { "hackcraft.net", true }, + { "hackdown.me", true }, { "hackenkunjeleren.nl", true }, { "hackenturet.dk", true }, - { "hacker.club", true }, + { "hacker.holiday", true }, { "hacker.im", true }, { "hacker.one", true }, { "hacker.parts", true }, @@ -14818,13 +15558,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hackerco.com", true }, { "hackereyes.com", true }, { "hackergateway.com", true }, - { "hackerlite.xyz", true }, { "hackernet.se", true }, { "hackerone-ext-content.com", true }, { "hackerone-user-content.com", true }, { "hackerone.at", true }, { "hackerone.com", true }, { "hackerone.net", true }, + { "hackerone.org", true }, { "hackerpoints.com", true }, { "hackerschat.net", true }, { "hackerstxt.org", true }, @@ -14837,13 +15577,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hackreone.com", true }, { "hacksecu.re", true }, { "hacksoc.co.uk", true }, - { "hackthissite.org", true }, { "hacktic.info", true }, { "hacktivis.me", true }, - { "hackzogtum-coburg.de", true }, + { "hackworx.com", false }, { "hadaly.fr", true }, { "hadleighswimmingclub.co.uk", true }, { "hadouk.in", true }, + { "hadret.com", true }, + { "hadret.sh", true }, { "hadrons.org", true }, { "haefligermedia.ch", true }, { "haens.li", true }, @@ -14851,12 +15592,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "haferman.net", true }, { "haferman.org", true }, { "hafniatimes.com", true }, - { "haggeluring.su", true }, + { "hagiati.gr", true }, { "hagueaustralia.com.au", true }, { "haha-raku.com", true }, { "hahay.es", true }, { "haiboxu.com", true }, + { "haidihai.ro", true }, { "hailer.com", true }, + { "haim.bio", true }, + { "haimablog.ooo", true }, { "hairbeautyartists.it", true }, { "haircrazy.com", true }, { "hairplaybychenellekay.com", false }, @@ -14864,10 +15608,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hairtonic-lab.com", true }, { "haixihui.cn", true }, { "haizum.pro", true }, + { "hajekdavid.cz", true }, { "hajekj.net", true }, + { "hajnzic.at", true }, { "hak5.org", true }, { "hakaru.org", true }, { "hakase.io", true }, + { "hakase.pw", true }, { "hakatabijin-mind.com", true }, { "hake.me", true }, { "hal-9th.space", true }, @@ -14893,6 +15640,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "halongbaybackpackertour.com", true }, { "haloobaloo.com", true }, { "haloria.com", true }, + { "haltegame.com", true }, { "hamacho-kyudo.com", true }, { "hamali.bg", true }, { "hamburgerbesteld.nl", true }, @@ -14907,16 +15655,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hampshiretechservices.co.uk", true }, { "hamsters-uk.org", true }, { "hana.ondemand.com", true }, - { "hanakaraku.com", true }, { "hanashi.eu", true }, { "hanbing.it", true }, { "handbrake.fr", true }, { "handcraft.eu.org", true }, { "handgelenkbandage-test.de", true }, + { "handknit.com.np", true }, { "handlecoin.com", true }, { "handleidingkwijt.com", true }, { "handmade-workshop.de", true }, - { "handmadeshoes.pe", true }, + { "handmadehechoamano.com", true }, + { "handy-center.net", true }, { "handyglas.com", true }, { "handymanlondonplease.co.uk", true }, { "handynummer.online", true }, @@ -14924,15 +15673,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "handyticket.de", true }, { "hanfox.co.uk", false }, { "hanfverband-erfurt.de", true }, + { "hang333.moe", true }, { "hangar.hosting", true }, { "hangcapnach.com", true }, { "hangouts.google.com", true }, { "hangtenseo.com", true }, + { "hankr.com", true }, + { "hanksacservice.com", true }, { "hannah.link", true }, + { "hannahi.com", true }, { "hannoluteijn.nl", true }, + { "hannover.de", true }, { "hanoibuffet.com", true }, + { "hanpenblog.com", true }, + { "hansahome.ddns.net", true }, { "hansbijster.nl", true }, - { "hansch.ventures", true }, { "hanschventures.com", true }, { "hansen-kronshagen.de", true }, { "hansen.hn", true }, @@ -14945,7 +15700,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hanu.la", true }, { "hanxv.pw", true }, { "hanyibo.com", true }, - { "hanys.xyz", true }, { "hanzubon.jp", true }, { "hao-zhang.com", true }, { "haogoodair.ca", true }, @@ -14980,8 +15734,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "harald-pfeiffer.de", true }, { "harapecorita.com", true }, { "harbor-light.net", true }, - { "hardeman.nu", true }, { "hardenize.com", true }, + { "hardergayporn.com", true }, { "hardertimes.com", true }, { "hardesec.com", true }, { "hardez.de", true }, @@ -14991,14 +15745,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hardloopfysio.nl", true }, { "hardrain980.com", true }, { "hardtfrieden.de", true }, - { "hardtime.ru", true }, - { "harekaze.info", true }, + { "hardwareschotte.de", true }, { "haribilalic.com", true }, { "harilova.fr", true }, + { "harion.fr", true }, { "harisht.me", false }, { "haritsa.co.id", true }, { "harjitbhogal.com", true }, { "harlor.de", true }, + { "harmfarm.nl", true }, { "harmoney.co.nz", true }, { "harmoney.com", true }, { "harmoney.com.au", true }, @@ -15021,22 +15776,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hartzer.com", true }, { "harukakikuchi.com", true }, { "haruue.moe", true }, + { "harvarddharma.org", true }, { "harvestapp.com", true }, { "harvester.fr", true }, { "harveyauzorst.com", true }, - { "harveymilton.com", true }, { "has-no-email-set.de", false }, + { "has.work", true }, { "hasdf.de", true }, { "hasecuritysolutions.com", true }, { "haselsteiner.me", true }, { "hash-archive.org", true }, + { "hash.army", true }, { "hash.works", true }, { "hashcat.net", true }, { "hashes.org", true }, { "hashi.dk", true }, { "hashiconf.eu", true }, { "hashicorp.com", true }, - { "hashimah.ca", true }, { "hashimoto-jimusho.com", true }, { "hashinteractive.com", true }, { "hashish.net", true }, @@ -15047,7 +15803,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hasilocke.de", true }, { "haskovec.com", true }, { "hasselbach-dellwig.de", true }, - { "hatcherlawgroupnm.com", true }, + { "hatarisecurity.co.ke", true }, + { "hatpakha.com", true }, { "hatul.info", true }, { "haucke.xyz", true }, { "hauntedfishtank.com", false }, @@ -15057,10 +15814,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "haus-zeitlos.de", true }, { "hausarztpraxis-linn.de", true }, { "haushenne.de", true }, + { "hausjugo.de", true }, { "haustechnik-breu.de", true }, { "hausundhof.com", true }, { "hausverbrauch.de", true }, - { "hauswarteam.com", true }, { "hautaka.com", true }, { "hautarztzentrum.ch", true }, { "hauteslatitudes.com", true }, @@ -15073,7 +15830,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "haveibeenpwned.com", true }, { "havellab.de", true }, { "havelland-obstler.de", true }, - { "haven-moon.com", true }, { "havenstrategies.com", true }, { "haverstack.com", true }, { "havetherelationshipyouwant.com", true }, @@ -15089,6 +15845,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hayashi-rin.net", true }, { "hayden.one", false }, { "haydenjames.io", true }, + { "haydentomas.com", true }, { "hayfordoleary.com", true }, { "haynes-davis.com", true }, { "hayvid.com", true }, @@ -15103,13 +15860,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hbpowell.com", true }, { "hcaz.io", true }, { "hcbj.io", true }, - { "hcoe.fi", true }, { "hd-gaming.com", true }, { "hd-offensive.at", false }, { "hd-only.org", true }, { "hd-outillage.com", true }, - { "hda.me", true }, { "hdc.cz", true }, + { "hdcamvids.com", true }, { "hdcenter.cc", true }, { "hdeaves.uk", true }, { "hdf.world", true }, @@ -15120,7 +15876,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hdrsource.com", true }, { "hdrtranscon.com", true }, { "hds-lan.de", true }, - { "hdwallpapers.net", true }, { "heaaart.com", true }, { "head.org", true }, { "head.ru", true }, @@ -15129,11 +15884,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "headshopinternational.com", true }, { "headshotharp.de", true }, { "healey.io", true }, + { "health-booster.com", true }, { "health-match.com.au", true }, { "health-plan-news.com", true }, { "health.gov", true }, { "health.graphics", true }, { "healthcare.gov", false }, + { "healthcultureexpo.com", true }, { "healtheals.com", true }, { "healtheffectsofasbestos.com", true }, { "healthery.com", true }, @@ -15141,6 +15898,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "healthfoam.com", true }, { "healthgames.co.uk", true }, { "healthiercompany.com", true }, + { "healthiergenerations.co.uk", true }, { "healthit.gov", true }, { "healthlabs.com", true }, { "healthmatchapp.com", true }, @@ -15152,7 +15910,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "healthybeterlife.click", true }, { "healthyfitfood.com", true }, { "healthypeople.gov", true }, + { "healthyteame.com", true }, { "heap.zone", true }, + { "heapkeeper.org", true }, { "hearmeraw.uk", true }, { "heart.taxi", true }, { "heartbeat24.de", true }, @@ -15173,15 +15933,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hearty.org.tw", true }, { "hearty.taipei", true }, { "hearty.us", true }, - { "heartyapp.com", true }, { "heartycraft.com", true }, { "heatershop.co.uk", true }, { "heatingandairconditioningdallastx.com", true }, { "heavensattic.co.uk", true }, { "heavensinferno.net", true }, { "heavyequipments.org", true }, - { "heayao.com", true }, { "hebergeurssd.com", true }, + { "hebikhiv.nl", true }, { "hebingying.cn", true }, { "hebocon.nl", true }, { "hebriff.com", true }, @@ -15191,7 +15950,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "heckelektro.de", true }, { "heckerundknopp.de", true }, { "heckticmedia.com", true }, - { "hectorj.net", true }, { "hedgeschool.ie", true }, { "hedonism.org", true }, { "hedonistic-imperative.com", true }, @@ -15257,6 +16015,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hellersgas.com", true }, { "helles-koepfchen.de", true }, { "helloacm.com", true }, + { "hellomouse.net", true }, { "hellsgamers.pw", true }, { "hellsh.com", true }, { "helmut-a-binser.de", true }, @@ -15280,7 +16039,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hendyisaac.com", true }, { "hengelsportdeal.com", true }, { "hengstumone.com", true }, - { "henhenlu.com", true }, { "henkboelman.com", true }, { "henkbrink.com", true }, { "henker.net", true }, @@ -15299,10 +16057,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "henrock.net", true }, { "henry.gg", true }, { "henryphan.com", false }, - { "hentaiz.net", true }, + { "hentaiworld.cc", true }, { "hentschke-bau.de", true }, { "hentschke-betonfertigteilwerk.de", true }, { "hentschke-invest.de", true }, + { "henzenhoning.nl", true }, { "heppler.net", true }, { "heptafrogs.de", true }, { "herbal-id.com", true }, @@ -15317,6 +16076,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "herdserv.de", true }, { "herebedragons.io", true }, { "herecsrymy.cz", true }, + { "heren.fashion", true }, { "heritagebaptistchurch.com.ph", true }, { "herkam.pl", true }, { "hermanbrouwer.nl", true }, @@ -15347,7 +16107,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "herzbotschaft.de", true }, { "herzfuersoziales.at", true }, { "herzig.cc", true }, - { "hesa.com", true }, { "hesaplama.net", true }, { "hessen-liebe.de", true }, { "hestervanderheijden.nl", true }, @@ -15358,10 +16117,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hesyifei.com", true }, { "hetene.nl", true }, { "hethely.ch", true }, - { "hetmer.cz", true }, { "heute-kaufen.de", true }, { "heute.training", true }, - { "heverhagen.rocks", true }, { "hevertonfreitas.com.br", true }, { "hex.bz", true }, { "hex.nl", true }, @@ -15370,12 +16127,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hexclock.io", true }, { "hexcode.in", true }, { "hexed.it", true }, + { "hexiaohu.cn", true }, { "hexicurity.com", true }, { "hexid.me", true }, { "hexieshe.com", true }, { "hexony.com", true }, { "hexr.org", true }, - { "hexstream.net", true }, { "hexstream.xyz", true }, { "hexstreamsoft.com", true }, { "hexxagon.com", true }, @@ -15384,15 +16141,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "heywood.cloud", true }, { "hf-tekst.nl", true }, { "hf51.nl", true }, - { "hflsdev.org", false }, { "hfox.org", true }, { "hg.gg", true }, { "hg.python.org", true }, - { "hg525.com", true }, { "hgbet.com", true }, - { "hgfa.fi", true }, + { "hgvnet.de", true }, { "hgw168.com", true }, { "hh-medic.com", true }, + { "hh-wolke.dedyn.io", true }, { "hhgdo.de", true }, { "hhhdb.com", true }, { "hhidr.org", true }, @@ -15404,6 +16160,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hicl.org", true }, { "hicoria.com", true }, { "hidbo.de", true }, + { "hiddendepth.ie", false }, { "hiddenhillselectric.com", true }, { "hiddenhillselectrical.com", true }, { "hiddenhillselectrician.com", true }, @@ -15425,7 +16182,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "highlevelwoodlands.com", true }, { "highlightsfootball.com", true }, { "highlnk.com", true }, - { "highperformancehvac.com", true }, { "highspeed-arnsberg.de", true }, { "highspeedinternet.my", true }, { "highspeedinternetservices.ca", true }, @@ -15437,7 +16193,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hikingguy.com", true }, { "hilahdih.cz", true }, { "hilaolu.studio", true }, - { "hilariousbeer.com.mx", true }, { "hilaryhutler.com", true }, { "hilchenba.ch", true }, { "hilde.link", true }, @@ -15459,6 +16214,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hintergrundbewegung.de", true }, { "hinterhofbu.de", true }, { "hinterposemuckel.de", true }, + { "hiojbk.com", true }, { "hipi.jp", true }, { "hippies.com.br", true }, { "hippo.ge", true }, @@ -15468,16 +16224,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hipstercat.fr", true }, { "hiqfleet.co.uk", true }, { "hiqfranchise.co.uk", true }, + { "hiqhub.co.uk", false }, { "hiqonline.co.uk", true }, + { "hirakatakoyou.org", true }, { "hirake55.com", true }, { "hiratake.xyz", true }, { "hire-a-coder.de", true }, { "hireabouncycastle.net", true }, { "hirefitness.co.uk", true }, - { "hireprofs.com", true }, { "hiresteve.ca", true }, - { "hiretech.com", true }, - { "hirevets.gov", true }, + { "hirevo.eu", true }, { "hirezzportal.com", true }, { "hiring-process.com", true }, { "hiromuogawa.com", true }, @@ -15485,6 +16241,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hirte-digital.de", true }, { "hirzaconsult.ro", true }, { "hisbrucker.net", true }, + { "hisgifts.com.au", true }, { "hisingensck.se", true }, { "hisnet.de", true }, { "hispanic.dating", true }, @@ -15496,6 +16253,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hiteco.com", true }, { "hititgunesi-tr.com", true }, { "hitmanstat.us", true }, + { "hitn.at", true }, { "hitoapi.cc", true }, { "hitocom.net.br", true }, { "hitokoto-mania.com", true }, @@ -15508,28 +16266,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hiv-symptome.de", true }, { "hiv.com.tw", true }, { "hiv.gov", true }, - { "hivatal-info.hu", true }, { "hivatalinfo.hu", true }, { "hiverlune.net", true }, { "hiwiki.tk", true }, { "hiyacar.co.uk", true }, { "hiyobi.me", true }, - { "hiyuki2578.net", true }, { "hizzacked.xxx", true }, { "hj-mosaiques.be", true }, { "hj.rs", true }, + { "hj2999.com", true }, + { "hj3455.com", true }, { "hjartasmarta.se", true }, - { "hjf-immobilien.de", true }, { "hjkbm.cn", true }, - { "hjkhs.cn", true }, { "hjort.land", true }, { "hjortland.org", true }, { "hjphoto.co.uk", true }, { "hjtky.cn", true }, { "hjw-kunstwerk.de", true }, { "hk.search.yahoo.com", false }, + { "hkbsurgery.com", true }, { "hkdobrev.com", true }, + { "hkr.at", true }, { "hks.pw", true }, + { "hktkl.com", true }, { "hkustmbajp.com", true }, { "hl7999.com", true }, { "hl8999.com", true }, @@ -15539,7 +16298,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hledejpravnika.cz", true }, { "hlfh.space", true }, { "hlidacnajemneho.cz", true }, + { "hlin.cloud", true }, { "hlinformatics.nl", true }, + { "hloe0xff.ru", true }, { "hlsmandarincentre.com", true }, { "hlucas.de", true }, { "hm773.net", true }, @@ -15558,9 +16319,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hoarding.me", true }, { "hobby-drechselei.de", true }, { "hobbyspeed.com", true }, - { "hocassian.cn", true }, { "hochhaus.us", true }, { "hochoukikikiraku.com", true }, + { "hochyi.com", true }, { "hochzeit-dana-laurens.de", true }, { "hochzeitsfotograf-deinfoto.ch", true }, { "hochzeitsgezwitscher.de", true }, @@ -15573,6 +16334,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hoe.re", true }, { "hoeft-autolackierung.de", true }, { "hoekvanholland.eu", true }, + { "hoepli.it", true }, { "hoeren.club", true }, { "hoesnelwasik.nl", true }, { "hoevenstein.nl", true }, @@ -15582,9 +16344,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hofapp.de", true }, { "hofauer.de", true }, { "hoflerlawfirm.com", true }, + { "hogepad.com", true }, { "hogl.dk", true }, { "hogrebe.de", true }, { "hogwarts.io", true }, + { "hohenleimbach.de", true }, { "hohm.in", true }, { "hoiquanadida.com", true }, { "hoken-wakaru.jp", true }, @@ -15614,11 +16378,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "holoxplor.space", true }, { "holstphoto.com", true }, { "holvonix.com", true }, - { "holy-hi.com", true }, { "holydragoon.jp", true }, { "holygrail.games", true }, { "holyhiphopdatabase.com", true }, - { "holymolycasinos.com", true }, + { "holytransaction.com", true }, { "holywhite.com", true }, { "holz.nu", true }, { "holzheizer-forum.de", true }, @@ -15629,18 +16392,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "holzundgarten.de", true }, { "holzvergaser-forum.de", true }, { "homatism.com", true }, - { "home-work-jobs.com", true }, + { "home-insurance-quotes.tk", true }, { "homeautomated.com", true }, { "homebasedsalons.com.au", true }, { "homebodyalberta.com", true }, { "homecareassociatespa.com", true }, { "homecarpetcleaning.co.uk", true }, { "homecheck.gr", true }, - { "homecoming.city", true }, + { "homefacialpro.com", false }, { "homegardeningforum.com", true }, { "homegardenresort.nl", true }, + { "homegreenmark.com", true }, { "homehuntertoronto.com", true }, { "homehunting.pt", true }, + { "homeimagician.com.au", true }, + { "homem-viril.com", true }, { "homeodynamics.com", true }, { "homeoesp.org", true }, { "homeofjones.net", true }, @@ -15651,7 +16417,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "homeprivate.de", true }, { "homeseller.com", true }, { "homeserver-kp.de", true }, + { "homesteadandprepper.com", true }, { "homesteadfarm.org", true }, + { "homewatt.co.uk", true }, { "homeyou.com", true }, { "hommeatoutfaire.be", true }, { "homophoni.com", true }, @@ -15663,13 +16431,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hondenoppasfraneker.nl", true }, { "honey.is", true }, { "honeybadger.io", false }, - { "honeybeard.co.uk", true }, { "honeycome.net", true }, { "honeycreeper.com", true }, { "honeyhaw.com", true }, { "honeypot.net", true }, + { "hong.io", true }, { "hongoi.com", true }, - { "honkion.net", true }, { "honovere.de", true }, { "hontoir.eu", true }, { "hoodtrader.com", true }, @@ -15685,12 +16452,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hopconseils.ch", true }, { "hopconseils.com", true }, { "hope-line-earth.jp", true }, + { "hopesanddreams.org.uk", true }, { "hopla.sg", true }, { "hoplongtech.com", true }, - { "hoponmedia.de", true }, { "hopps.me", true }, { "hoppyx.com", true }, - { "hopzone.net", true }, { "hor.website", true }, { "horaceli.com", true }, { "horackova.info", true }, @@ -15707,9 +16473,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hornyforhanzo.com", true }, { "horodance.dk", true }, { "horrell.ca", true }, - { "horrendous-servers.com", true }, + { "horrormovies.gr", true }, { "horsehunter.co.uk", true }, { "horstmanshof.eu", true }, + { "horton-brasses.com", true }, { "hory.me", true }, { "horza.org", true }, { "hoshimaq.com.br", true }, @@ -15742,20 +16509,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hostmodern.com.au", true }, { "hosts.cf", true }, { "hostserv.org", true }, - { "hostworkz.com", true }, - { "hosyaku.gr.jp", true }, { "hotcandlestick.com", true }, { "hotchillibox.com", true }, + { "hotcoin.io", true }, + { "hotdoc.com.au", true }, { "hotel-kronjuwel.de", true }, { "hotel-le-vaisseau.ch", true }, { "hotel-pension-sonnalp.eu", true }, + { "hotel-rosner.at", true }, { "hotelamgarnmarkt.at", false }, + { "hotelarevalo.com", true }, { "hotelcoliber.pl", true }, { "hotelflow.com.br", true }, { "hotelident.de", true }, { "hotello.io", true }, { "hotelmap.com", true }, + { "hotelpostaorvieto.it", true }, { "hotels-insolites.com", true }, + { "hotels3d.com", true }, { "hotels4teams.com", true }, { "hotelsinbuxton.com", true }, { "hotelsinformer.com", true }, @@ -15765,7 +16536,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hotesb.com", true }, { "hotesb.net", true }, { "hothbricks.com", true }, - { "hotjuice.com", true }, { "hotnewhiphop.com", true }, { "hoto.us", true }, { "hoton.in", true }, @@ -15784,43 +16554,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "housekeeperlondon.co.uk", true }, { "houseofherbs.gr", true }, { "houseofhouston.com", true }, + { "houseofyee.com", true }, { "houser.lu", true }, { "housese.at", true }, { "housetalk.ru", true }, { "houstonapartmentinsiders.com", true }, { "houstonauthorizedrepair.com", true }, { "houstoncreditlaw.com", true }, + { "houstontxlocksmiths.com", true }, { "houtinee.com", true }, { "how2play.pl", true }, { "howa-n.net", true }, { "howardtyson.com", true }, { "howbehealthy.com", true }, { "howbigismybuilding.com", true }, + { "howellaccounts.co.uk", true }, { "howgoodwasmysex.com", true }, + { "howieisawesome.com", true }, { "howlongtobeatsteam.com", true }, { "howmanymilesfrom.com", true }, { "howsecureismypassword.net", true }, { "howsmyssl.com", true }, { "howsmytls.com", true }, { "howsyourhealth.org", true }, + { "howtocommunicate.com.au", true }, { "howtogeek.com", true }, { "howtogeekpro.com", true }, { "howtogosolar.org", true }, { "howtoinstall.co", true }, { "howtolaser.com", true }, + { "howtoteachviolin.com", true }, { "howtotech.de", true }, { "hozana.si", false }, { "hp-work.net", true }, { "hp42.de", true }, { "hpac-portal.com", true }, { "hpbn.co", true }, - { "hpeditor.tk", true }, - { "hpepub.com", false }, + { "hpepub.com", true }, { "hpisavageforum.com", true }, { "hpkp-faq.de", true }, { "hpnow.com.br", true }, { "hps.hu", true }, - { "hqq.tv", true }, { "hquest.pro.br", true }, { "hqwebhosting.tk", false }, { "hr-tech.shop", true }, @@ -15835,6 +16609,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hreflang.info", true }, { "hrjfeedstock.com", true }, { "hrjfeedstock.org", true }, + { "hrk.io", true }, { "hrobert.hu", true }, { "hroling.nl", true }, { "hroschyk.cz", true }, @@ -15846,13 +16621,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hs-arbeitsschutz.de", true }, { "hs-group.net", true }, { "hs-umformtechnik.de", true }, + { "hsappstatic.net", true }, { "hscorp.de", true }, + { "hsex.tv", true }, { "hsivonen.com", true }, { "hsivonen.fi", true }, { "hsivonen.iki.fi", true }, { "hsmr.cc", true }, { "hsn.com", true }, { "hsr.gov", false }, + { "hsts.eu", true }, { "hsts.me", true }, { "hstsfail.appspot.com", true }, { "hstspreload.appspot.com", true }, @@ -15864,6 +16642,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "htaccessbook.com", true }, { "htaps.com", true }, { "hte.ovh", true }, + { "hti.digital", true }, { "html.moe", true }, { "html5.org", true }, { "html5media.info", true }, @@ -15875,9 +16654,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "htsure.ma", true }, { "http2.eu", true }, { "http2.pro", true }, + { "https-rulesets.org", true }, { "https.dk", true }, { "https.jetzt", true }, - { "https.ren", true }, { "https4all.org", true }, { "httpsecured.net", true }, { "httpsecurityreport.com", true }, @@ -15894,25 +16673,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hu8588.com", true }, { "hu8777.com", true }, { "hu8bet.com", true }, - { "hu8hu8.com", true }, { "hua-in.com", true }, { "hua-in.net", true }, { "hua-li88.com", true }, { "hua-li88.net", true }, { "huagati.com", true }, { "huahinpropertylisting.com", true }, - { "huang-haitao.com", true }, + { "huangjiaint.com", true }, { "huangjingjing.com", true }, { "huangliangbo.com", true }, { "huangting.me", true }, { "huangzenghao.cn", false }, + { "huaqian.art", true }, { "huashan.co.uk", true }, { "huaxueba.com", true }, { "hub.org.ua", true }, { "hub385.com", true }, + { "hubapi.com", true }, + { "huber-informatik.de", true }, { "hubok.net", true }, { "hubrecht.at", true }, - { "hubrick.com", true }, + { "hubspot.com", true }, { "huchet.me", true }, { "hudebnibazarmixer.cz", true }, { "hudrydum.cz", true }, @@ -15920,15 +16701,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "huduser.gov", true }, { "huendeleskopfhuette.de", true }, { "huersch.com", true }, + { "hues-in-lee.de", true }, { "huffduffer.com", true }, + { "huffsinsurance.com", true }, { "hughtodd.ink", true }, { "hugi.is", true }, { "hugizrecords.com", true }, { "huglen.info", true }, + { "hugo6.com", true }, { "hugofs.com", true }, { "hugolynx.fr", true }, { "huguesblanchard.paris", true }, { "huguesditciles.com", true }, + { "huh.gdn", true }, { "huh.today", true }, { "hui-in.com", true }, { "hui-in.net", true }, @@ -15951,8 +16736,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "human-clone.com", true }, { "humanenrich.com", true }, { "humanesources.com", true }, - { "humanexperiments.com", true }, { "humanity.com", true }, + { "humankode.com", true }, { "humans.io", true }, { "humanzee.com", true }, { "humblebee.at", true }, @@ -15982,9 +16767,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "humblebeeshop.com.au", true }, { "humbledot.com", true }, { "humboldtmfg.com", true }, + { "humeur.de", true }, { "hummy.tv", true }, { "humorcaliente.com", true }, - { "humorce.com", true }, { "humpchies.com", true }, { "humpen.se", true }, { "humppakone.com", true }, @@ -15993,14 +16778,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hundesport-psvhalle.de", true }, { "hundeverwaltung.de", true }, { "hundter.com", true }, - { "hunqz.com", true }, { "hunstoncanoeclub.co.uk", true }, + { "hunter-read.com", true }, { "hunter.io", true }, { "hunterkehoe.com", true }, { "huntexpired.com", true }, { "huntingdonbouncers.co.uk", true }, { "huntingdonlifesciences.com", true }, - { "huoduan.com", true }, + { "huntsmansecurity.com", true }, + { "huntsvillecottage.ca", true }, + { "huonit.com.au", true }, { "hup.hu", true }, { "hupp.se", true }, { "hurd.is", true }, @@ -16012,10 +16799,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "husakbau.at", true }, { "hushfile.it", true }, { "husic.net", false }, + { "huskyeye.de", true }, { "huskyinc.us", true }, { "hussam.eu.org", true }, - { "hustle.com", true }, - { "hustle.life", true }, { "hustlehope.com", true }, { "hustunique.com", true }, { "huto.ml", true }, @@ -16023,7 +16809,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "huutonauru.net", true }, { "huwcbjones.co.uk", true }, { "huwcbjones.uk", true }, + { "huxcoconstruction.com", true }, { "huxley.net", true }, + { "huynhviet.com", true }, { "huyvu.nl", true }, { "hvdbox.de", true }, { "hveradistributions.com", true }, @@ -16039,8 +16827,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hxp.io", true }, { "hxsf.me", true }, { "hxying.com", true }, - { "hybridiyhdistys.fi", true }, - { "hybridklubben.fi", true }, + { "hybridragon.net", true }, { "hybridworx.com", true }, { "hybridworx.de", true }, { "hybridworx.eu", true }, @@ -16050,7 +16837,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hycken.com", true }, { "hyckenberg.com", true }, { "hyderabadonlinegifts.com", true }, - { "hydrabit.nl", true }, { "hydrasolutions.de", true }, { "hydrazin.pw", true }, { "hydro17.com", true }, @@ -16060,12 +16846,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hydroturbine.info", true }, { "hydrozone.fr", true }, { "hyec.jp", true }, - { "hyeok.org", true }, { "hygo.com", true }, { "hyk.me", true }, { "hylemorphica.org", true }, { "hylians.com", true }, { "hynek.me", true }, + { "hyparia.fr", true }, { "hype.ru", true }, { "hypemgmt.com", true }, { "hyper-text.org", true }, @@ -16075,6 +16861,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hyperion.io", true }, { "hyperreal.biz", true }, { "hypersomnia.com", true }, + { "hyperstack.org", true }, { "hyperthymia.com", true }, { "hyphen.co.za", true }, { "hyphenpda.co.za", true }, @@ -16084,7 +16871,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hypothes.is", true }, { "hypothyroidmom.com", true }, { "hyundai.no", true }, + { "hyvanilmankampaamo.fi", true }, { "hyvinvointineuvoja.fi", true }, + { "i-aloks.ru", true }, { "i-geld.de", true }, { "i-hakul.net", true }, { "i-logic.co.jp", false }, @@ -16098,32 +16887,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "i-telligence.de", true }, { "i-verbi.it", true }, { "i00.eu", true }, - { "i1314.gdn", true }, + { "i1314.gdn", false }, { "i1place.com", true }, - { "i28s.com", true }, { "i2b.ro", true }, { "i5y.co.uk", true }, { "i5y.org", true }, { "i66.me", true }, { "i879.com", true }, { "ia.net", true }, - { "ia1000.com", true }, { "iaco.li", true }, { "iactu.info", true }, { "iaeste.no", true }, { "iaeste.or.jp", true }, - { "iahemobile.net", true }, + { "iaf.gov", true }, + { "iahemobile.net", false }, { "iainsimms.co.uk", true }, { "iainsimms.com", true }, { "iainsimms.me", true }, { "ialis.me", true }, + { "iam.lc", true }, { "iam.soy", true }, { "iambozboz.co.uk", true }, { "iamcarrico.com", true }, { "iamhansen.xyz", true }, { "iamjoshellis.com", true }, { "iamlbk.com", true }, - { "iamle.com", true }, + { "iamlzh.com", true }, { "iamtheib.me", true }, { "iamtonyarthur.com", true }, { "iamusingtheinter.net", true }, @@ -16133,12 +16922,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "iane-ccs.com", true }, { "ianix.com", true }, { "ianjmoriarty.com", true }, + { "ianklug.com", true }, { "iankmusic.com", true }, { "ianmooreis.me", true }, { "ianmoriarty.com.au", true }, - { "ianwalsh.org", true }, + { "ianwalsh.org", false }, { "iap.network", true }, { "ias-gruppe.net", true }, + { "iassess.eu", true }, { "iatfei.com", true }, { "iavian.com", true }, { "iba.community", true }, @@ -16149,21 +16940,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "iberiaversicherungen.com", true }, { "ibericaderedes.es", true }, { "ibexcore.com", true }, + { "ibigawamizueco.com", true }, { "ibin.co", true }, { "ibiz.mk", true }, - { "ibnw.de", true }, + { "ibodyiq.com", true }, { "ibpegasus.tk", true }, - { "ibpsrecruitment.co.in", true }, { "ibrainmedicine.org", true }, { "ibrom.eu", true }, + { "ibstyle.tk", true }, + { "ibuki.run", true }, { "ibwc.gov", true }, { "ic-lighting.com.au", true }, + { "ic-spares.com", true }, { "ic3.gov", true }, + { "icabanken.se", true }, { "icafecash.com", true }, { "icake.life", true }, { "icanhasht.ml", true }, { "icarlos.net", true }, + { "icasture.top", true }, { "icbemp.gov", true }, + { "iccpublisher.com", true }, { "ice.xyz", true }, { "iceberg.academy", true }, { "icebook.co.uk", true }, @@ -16181,14 +16978,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "icloudlogin.com", true }, { "icmhd.ch", true }, { "icmp2018.org", true }, - { "icmshoptrend.com", true }, + { "icnsoft.me", true }, { "icnsoft.org", true }, - { "ico500.com", true }, + { "icobench.com", true }, { "icodeconnect.com", true }, { "icoh.it", true }, - { "icondoom.nl", true }, { "iconomi.net", true }, - { "icowhitepapers.co", true }, + { "icpc.pp.ua", true }, { "icq-project.net", true }, { "icsadviseurs.nl", true }, { "icsfinomornasco.gov.it", true }, @@ -16198,7 +16994,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ict-radar.com", true }, { "ict-radar.nl", true }, { "ictcareer.ch", true }, - { "ictinforensics.org", true }, { "ictl.eu", true }, { "ictradar.com", true }, { "icyapril.com", true }, @@ -16212,58 +17007,68 @@ static const nsSTSPreload kSTSPreloadList[] = { { "id0-rsa.pub", true }, { "id7.fr", true }, { "idaeus.eu", true }, - { "idafauziyah.com", true }, { "idahoansforliberty.net", true }, { "idarv.com", true }, { "idaspis.com", true }, { "idatha.de", true }, + { "idblab.tk", true }, { "idc-business.be", true }, - { "idc.yn.cn", true }, { "idconsult.nl", true }, + { "idealimplant.com", true }, { "idealinflatablehire.co.uk", true }, { "idealninajemce.cz", false }, + { "idealsegurancaeletronica.com.br", true }, { "idealtruss.com", true }, { "idealtruss.com.tw", true }, { "idealwhite.space", true }, { "ideaman924.com", true }, { "ideashop.com", true }, { "ideaweb.de", true }, + { "ideiasefinancas.com.br", true }, + { "idenamaislami.com", true }, { "idensys.nl", false }, { "ident-clinic.be", true }, + { "identassist.com", true }, { "identifyme.net", true }, + { "identigraf.center", true }, { "identity.plus", true }, - { "identitytheft.gov", true }, { "idered.net", true }, { "idesignstudio.de", true }, { "idexxpublicationportal.com", true }, + { "idfy.io", true }, { "idgard.de", false }, { "idgateway.co.uk", true }, { "idhosts.co.id", true }, - { "idid.tk", true }, { "idiotentruppe.de", true }, + { "idisposable.co.uk", true }, { "idlethoughtsandramblings.com", true }, { "idmanagement.gov", true }, { "idmobile.co.uk", true }, { "idndx.com", true }, { "idoc24.com", true }, + { "idodiandina.com", true }, { "idolf.dk", true }, { "idolish7.fun", true }, + { "idolknow.com", true }, { "idolshop.dk", true }, { "idolshop.me", true }, { "idontplaydarts.com", true }, { "idranktoomuch.coffee", true }, + { "idratherbequilting.com", true }, { "idraulico-roma.it", true }, { "idraulico-roma.org", true }, { "idraulico.roma.it", true }, { "idrinktoomuch.coffee", true }, { "idrissi.eu", true }, { "idrycleaningi.com", true }, + { "idtheft.gov", true }, { "idubaj.cz", true }, { "idunno.org", true }, { "idvl.de", true }, { "ie.search.yahoo.com", false }, { "iea-annex61.org", true }, { "ieedes.com", true }, + { "ieeedeis.org", true }, { "ieeesb.nl", true }, { "ieeesbe.nl", true }, { "ieeespmb.org", true }, @@ -16272,13 +17077,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "iemb.tk", true }, { "ienakanote.com", false }, { "ies-italia.it", true }, - { "ietsdoenofferte.nl", true }, { "ieval.ro", true }, { "iewar.com", true }, { "ifamily.top", false }, { "ifangpei.cn", true }, { "ifangpei.com.cn", true }, - { "ifconfig.co", true }, + { "ifcfg.jp", true }, { "ifelse.io", true }, { "ifengge.cn", true }, { "ifengge.me", true }, @@ -16297,6 +17101,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "iftarsaati.org", true }, { "iftrue.de", true }, { "ifttl.com", false }, + { "ifxd.bid", true }, { "ifyou.live", true }, { "ig.com", true }, { "igaryhe.io", true }, @@ -16313,7 +17118,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "igmus.org", true }, { "ignace72.eu", true }, { "ignacjanskiednimlodziezy.pl", true }, + { "ignat-mag.com", true }, { "ignat.by", true }, + { "ignatovich.by", true }, { "ignatovich.me", true }, { "ignet.gov", true }, { "ignitedlocal.com", true }, @@ -16324,17 +17131,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "igsmgmt.com", true }, { "iguana.com.ec", false }, { "ih8sn0w.com", true }, - { "iha6.com", true }, { "ihacklabs.com", true }, + { "ihakkitekin.com", true }, { "ihatethissh.it", true }, { "ihc.im", true }, { "ihkk.net", true }, + { "ihls.stream", true }, + { "ihls.world", true }, + { "ihls.xyz", true }, + { "ihoey.com", true }, { "ihollaback.org", true }, { "ihopeit.works", true }, { "ihostup.net", true }, { "ihrhost.com", true }, + { "ihtdenisjaccard.com", true }, { "ii74.com", true }, { "iiit.pl", true }, + { "iiong.com", false }, { "iirii.com", true }, { "iix.se", true }, { "ijm.io", true }, @@ -16344,7 +17157,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ijunohana.jp", true }, { "ikachalife.com", true }, { "ikarate.ru", true }, + { "ikarr.com", true }, { "ikeacareers.co.uk", true }, + { "ikebukuro-shame.com", true }, + { "ikedaquotes.org", true }, { "ikespta.com", true }, { "ikeyless.com", true }, { "ikigaiweb.com", true }, @@ -16374,6 +17190,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ilektronika-farmakeia-online.gr", true }, { "ilemonrain.com", false }, { "ilhan.name", true }, + { "ilhansubasi.com", true }, { "iliastsi.net", true }, { "iligang.cn", true }, { "iligang.com", true }, @@ -16398,10 +17215,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ilmiobusinessonline.it", true }, { "ilmiogiardiniere.it", true }, { "ilmuk.org", false }, + { "ilookz.nl", true }, { "ilove.fish", true }, { "ilrg.com", true }, - { "iltec-prom.ru", true }, - { "iltec.ru", true }, { "iltisim.ch", true }, { "ilweb.es", true }, { "ilya.pp.ua", true }, @@ -16413,8 +17229,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "imadalin.ro", true }, { "image-drive.de", true }, { "imagebin.ca", true }, - { "imagecurl.com", true }, - { "imagecurl.org", true }, { "imagefu.com", true }, { "imageination.co", true }, { "imagenesdedibujosalapizfacilesdehacer.com", true }, @@ -16429,6 +17243,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "imanageproducts.co.uk", true }, { "imanageproducts.uk", true }, { "imanesdeviaje.com", true }, + { "imaple.org", true }, { "imarkethost.co.uk", true }, { "imask.ml", true }, { "imawhale.com", true }, @@ -16448,9 +17263,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "imgaa.com", true }, { "imgbb.com", true }, { "imgg.es", true }, - { "imguoguo.com", true }, + { "imgup.co", true }, { "imguploaden.nl", true }, + { "imhua.com", true }, { "imi-rhapsody.eu", true }, + { "iminshell.com", true }, { "imirhil.fr", true }, { "imitza.com", true }, { "imjad.cn", true }, @@ -16459,15 +17276,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "imkerei-freilinger.de", false }, { "imkerverein-moenchswald.de", true }, { "imlinan.com", true }, - { "imlonghao.com", true }, { "immaterium.de", true }, - { "immaternity.com", true }, { "immatix.xyz", true }, { "immersion-pictures.com", true }, { "immersivewebportal.com", true }, + { "immigrationdirect.com.au", true }, { "immo-agentur.com", true }, { "immo-passion.net", true }, - { "immo-vk.de", true }, { "immobiliarecapitani.com", true }, { "immobilien-badlippspringe.de", true }, { "immobilien-in-istanbul.de", true }, @@ -16478,7 +17293,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "immortal.run", true }, { "imobile3.com", true }, { "imokuri123.com", true }, - { "imoner.com", true }, { "imouto.my", false }, { "imouyang.com", true }, { "impact.health.nz", true }, @@ -16504,12 +17318,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "imppac.de", true }, { "imprendo.co", true }, { "imprendo.pro", true }, - { "imprenta-es.com", false }, { "impresa-di-pulizie.org", true }, { "impresa-pulizie.it", true }, { "impresadipulizie.roma.it", true }, { "impresaedile.roma.it", true }, { "imprimante-3d-store.fr", true }, + { "improfestival.ee", true }, { "improklinikken.dk", true }, { "improved-madness.de", true }, { "impulsionsa.com", true }, @@ -16520,9 +17334,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "imrunner.ru", true }, { "ims-sargans.ch", true }, { "imscompany.com", true }, - { "imwnk.cn", false }, + { "imwalking.de", true }, + { "imwnk.cn", true }, { "imydl.com", true }, { "imydl.tech", true }, + { "imyjy.cn", true }, + { "imyrs.cn", true }, { "imyunya.com", true }, { "imyvm.com", true }, { "imyz.tw", true }, @@ -16541,10 +17358,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "inbox.google.com", true }, { "inbulgaria.info", true }, { "incarna.co", true }, + { "incert.cn", true }, { "incertint.com", true }, { "inchcape-fleet-autobid.co.uk", true }, { "inche-ali.com", true }, { "inchenaim.com", true }, + { "inchidi.id", true }, { "incigma.com", true }, { "includesubdomains.preloaded.test", true }, { "includesubdomains2.preloaded.test", true }, @@ -16556,6 +17375,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "incowrimo.org", true }, { "incparadise.net", true }, { "incubos.org", true }, + { "incy.io", true }, { "ind.ie", true }, { "indarceky.sk", false }, { "indecipherable.info", true }, @@ -16568,15 +17388,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "indian-elephant.com", true }, { "indianaantlersupply.com", true }, { "indianaberry.com", true }, + { "indianapolislocksmithinc.com", true }, + { "indiatrademarkwatch.com", true }, { "indiawise.co.uk", true }, { "indiayogastudio.net", true }, { "indicateurs-flash.fr", true }, { "indiegame.space", true }, { "indievelopment.nl", true }, + { "indigitalagency.com", true }, { "indigoinflatables.com", true }, { "indigosakura.com", true }, { "indiraactive.com", true }, - { "indiroyunu.com", true }, { "inditip.com", true }, { "indochina.io", true }, { "indogerman.de", true }, @@ -16584,12 +17406,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "indogermantrade.de", true }, { "indoorcomfortteam.com", true }, { "indoorplantsexpert.com", true }, - { "indostar303.com", true }, { "indovinabank.com.vn", true }, { "indusap.com", true }, { "indusfastremit-us.com", true }, { "indusfastremit.com", true }, { "indust.me", true }, + { "industriafranchini.com", true }, { "industrialstarter.com", true }, { "indybay.org", true }, { "ineardisplay.com", true }, @@ -16604,15 +17426,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "inetsoftware.de", true }, { "inevitavelbrasil.com.br", true }, { "inf-fusion.ca", true }, + { "inference.biz.tr", true }, { "infermiere.roma.it", true }, + { "inff.info", true }, { "inficom.org", true }, { "infinite.hosting", true }, { "infinitegroup.info", true }, { "infinitiofallentownparts.com", true }, { "infinitiofaugustaparts.com", true }, { "infinitioflynnwoodparts.com", true }, + { "infinitomaisum.com", true }, { "infinity.to", true }, { "infinitybas.com", true }, + { "infinitybc.se", true }, { "infinityengine.org", true }, { "infinityepos.co.uk", true }, { "infirmiere-canadienne.com", true }, @@ -16621,6 +17447,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "inflatablesny.com", true }, { "inflatadays.co.uk", true }, { "inflatamania.com", true }, + { "inflationstation.net", true }, { "inflexsys.com", true }, { "influencerchampions.com", true }, { "influo.com", true }, @@ -16629,7 +17456,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "info-d-74.com", true }, { "info-screen.me", true }, { "info-screw.com", true }, - { "infoamin.com", true }, { "infobae.com", true }, { "infocity-tech.fr", true }, { "infocommsociety.com", true }, @@ -16637,17 +17463,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "infocusvr.net", true }, { "infogrfx.com", true }, { "infomegastore.com", true }, + { "infomir.eu", true }, { "infomisto.com", true }, + { "infopagina.es", true }, { "infopier.sg", true }, { "infopulsa.com", true }, + { "infopuntzorg.nl", true }, { "infor-allaitement.be", true }, { "informaciondeciclismo.com", true }, { "informatiebeveiliging.nl", true }, { "informatik-handwerk.de", true }, { "informationrx.org", true }, + { "informhealth.com", true }, { "informnapalm.org", true }, { "infosec-handbook.eu", true }, - { "infosec.exchange", true }, + { "infosec.exchange", false }, { "infosec.pizza", true }, { "infosec.wiki", true }, { "infosenior.ch", true }, @@ -16657,6 +17487,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "infotune.nl", true }, { "infovision-france.com", true }, { "infoweb.ee", true }, + { "infr.red", true }, { "infra.land", true }, { "infra.press", true }, { "infrafire.com", true }, @@ -16669,9 +17500,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "infranium.net", true }, { "infranium.org", true }, { "infranotes.com", true }, + { "infrapass.com", true }, { "infrapirtis.lt", true }, - { "infrarank.com", true }, { "infrarank.net", true }, + { "infrathink.com", true }, + { "infuzeit.com.au", true }, { "ing-buero-junk.de", true }, { "ing89.cc", true }, { "ing89.com", true }, @@ -16685,6 +17518,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ingerhy.com", true }, { "ingi.ga", true }, { "ingjobs.ch", true }, + { "inglebycakes.co.uk", true }, { "inglesnarede.com.br", true }, { "ingo-schlueter.de", true }, { "ingoschlueter.de", true }, @@ -16692,16 +17526,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "inhaltsangabe.de", true }, { "inheritestate.com", true }, { "inhouseents.co.uk", true }, + { "iniiter.com", true }, { "inima.org", true }, { "inios.fr", true }, { "inishbofin.ie", true }, { "initq.net", true }, + { "initramfs.io", true }, { "initrd.net", true }, { "inixal.com", true }, { "ink.horse", true }, { "inkable.com.au", true }, - { "inkbunny.net", false }, - { "inkhor.se", true }, + { "inkeliz.com", true }, { "inkontriamoci.com", true }, { "inksay.com", true }, { "inkspire.co.uk", true }, @@ -16717,8 +17552,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "inmoodforsex.com", true }, { "inmusrv.de", true }, { "innerfence.com", true }, + { "innerlightcrystals.co.uk", true }, { "innermostparts.org", true }, { "innersafe.com", true }, + { "innocenceseekers.net", true }, { "innohb.com", true }, { "innolabfribourg.ch", true }, { "innoloop.com", true }, @@ -16730,12 +17567,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "innovate-indonesia.com", true }, { "innovation-workshop.ro", true }, { "innovation.gov", false }, - { "innoventure.de", true }, - { "innovum.cz", true }, + { "innovum.cz", false }, { "innsalzachsingles.de", true }, { "innwan.com", true }, { "inoa8.com", true }, - { "inorder.website", true }, { "inovat.ma", true }, { "inovatec.com", true }, { "inovatecsystems.com", true }, @@ -16746,11 +17581,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ins1gn1a.com", true }, { "insblauehinein.nl", true }, { "inscomers.net", true }, + { "inscripcionessena.com", true }, { "insecure.org.je", true }, { "insertcoins.net", true }, { "insgesamt.net", true }, { "inshapenutrition.com.br", true }, - { "insho.fashion", true }, { "inside19.com", true }, { "insideaudit.com", true }, { "insidethefirewall.tk", true }, @@ -16759,6 +17594,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "insighti.eu", true }, { "insighti.org", true }, { "insighti.sk", true }, + { "insignificant.space", true }, { "insinuator.net", true }, { "insistel.com", true }, { "insolent.ch", true }, @@ -16778,9 +17614,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "instant-thinking.de", true }, { "instant.io", true }, { "instantkhabar.com", true }, - { "instantsubs.de", true }, { "instava.cz", true }, { "instawi.com", true }, + { "instead.com.au", true }, { "instela.com", true }, { "instelikes.com.br", true }, { "instics.com", true }, @@ -16793,7 +17629,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "insult.es", true }, { "insurance321.com", true }, { "insureon.com", true }, - { "insurethebox.tk", true }, { "insurgentsmustdie.com", true }, { "int-ma.in", true }, { "intae.it", true }, @@ -16805,9 +17640,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "integraelchen.de", true }, { "integralblue.com", true }, { "integralkk.com", true }, + { "integratedintegrations.xyz", true }, { "integratedmedicalonline.com", true }, + { "integrateur-web-paris.com", true }, { "integraxor.com.tw", true }, { "integrity.gov", true }, + { "integrityokc.com", true }, { "integrityoklahoma.com", true }, { "integrogroup.com", true }, { "integromat.com", true }, @@ -16820,12 +17658,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "intelhost.net", true }, { "intellar.com", true }, { "intellectdynamics.com", true }, + { "intelliance.eu", true }, { "intelligence-explosion.com", true }, { "intellinetixvibration.com", true }, { "intelly.nl", true }, { "intelly365.nl", true }, { "intencje.pl", true }, - { "intensifyrsvp.com.au", true }, { "inter-corporate.com", true }, { "inter-culinarium.com", true }, { "interaffairs.com", true }, @@ -16839,29 +17677,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "interfesse.net", true }, { "interfloraservices.co.uk", true }, { "interflores.com.br", true }, - { "interfug.de", true }, { "intergozd.si", true }, { "interiery-waters.cz", true }, { "interimages.fr", true }, - { "interiorcheapo.com", true }, { "interiordesignsconcept.com", true }, - { "interiortradingco.com.au", true }, { "interisaudit.com", true }, { "interlingvo.biz", true }, { "intermax.nl", true }, { "intermedinet.nl", true }, - { "internacao.com", true }, { "internalkmc.com", true }, { "internaluse.net", true }, { "international-arbitration-attorney.com", true }, + { "international-books.org", true }, { "international-nash-day.com", true }, { "internationalfashionjobs.com", true }, + { "internationalschoolnewyork.com", true }, { "internationaltalento.it", true }, { "internect.co.za", true }, + { "internet-aukcion.info", true }, { "internet-software.eu", true }, { "internetaanbieders.eu", true }, { "internetbank.swedbank.se", true }, { "internetbugbounty.com", true }, + { "internetbusiness-howto.com", true }, { "internetcom.jp", true }, { "internetfonden.se", true }, { "internethealthreport.org", true }, @@ -16874,11 +17712,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "internetofinsecurethings.com", true }, { "internetovehazardnihry.cz", true }, { "internetpro.me", true }, + { "internetstaff.com", true }, { "internetzentrale.net", true }, { "interracial.dating", true }, { "interseller.io", true }, { "interserved.com", false }, - { "interstellarhyperdrive.com", true }, { "intertime.services", true }, { "interview-suite.com", true }, { "interways.de", true }, @@ -16903,6 +17741,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "intraxia.com", true }, { "intune.life", true }, { "intvonline.com", true }, + { "intxt.net", true }, + { "inumcoeli.com.br", true }, { "inup.jp", true }, { "inusasha.de", true }, { "inuyasha-petition.tk", true }, @@ -16923,20 +17763,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "investigatore.it", true }, { "investigazionimoretti.it", true }, { "investir.ch", true }, + { "investor-academy.jp", true }, { "investor.gov", true }, { "investoren-beteiligung.de", true }, { "investorforms.com", true }, - { "investorloanshub.com", true }, { "investosure.com", true }, { "investpay.ru", true }, { "invioinc.com", true }, { "inviosolutions.com", true }, - { "invis.net", true }, { "invisible-college.com", true }, { "invisibles.ch", true }, { "invisionita.com", true }, { "invisiverse.com", true }, { "invitacionesytarjetas.gratis", true }, + { "invitation-factory.tk", true }, { "invitescene.com", true }, { "invitethemhome.com", true }, { "invkao.com", true }, @@ -16947,6 +17787,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "inwestcorp.se", true }, { "inzdr.com", true }, { "inzelabs.com", true }, + { "inzestfreunde.de", true }, + { "ioactive.com", true }, { "iobint.com", true }, { "iocheck.com", false }, { "iochen.com", true }, @@ -16970,7 +17812,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "iosnoops.com", true }, { "iossifovlab.com", true }, { "iostream.by", true }, - { "iotfen.com", true }, { "iowaschoolofbeauty.com", true }, { "ip-blacklist.net", true }, { "ip-hahn.de", true }, @@ -16978,7 +17819,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ip.sb", true }, { "ip2country.info", true }, { "ip3office.com", true }, - { "ip6.li", true }, + { "ip6.li", false }, { "ipad.li", true }, { "ipadkaitori.jp", true }, { "ipadportfolioapp.com", true }, @@ -16999,7 +17840,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "iphonote.com", true }, { "ipintel.io", true }, { "iplabs.de", true }, - { "iplantom.com", true }, { "iplayradio.net", false }, { "ipleak.net", true }, { "ipledgeonline.org", false }, @@ -17007,12 +17847,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ipo-times.jp", true }, { "ipokabu.net", true }, { "ipomue.com", false }, + { "iposm.net", true }, { "ipresent.com", true }, { "iprim.ru", true }, { "iproducemusic.com", true }, - { "iprody.com", true }, { "ipsec.pl", true }, { "ipssl.li", true }, + { "ipstoragesolutions.com", true }, { "ipstream.it", true }, { "ipswitch.com.tw", true }, { "iptvzoom.xyz", true }, @@ -17032,6 +17873,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ir1s.com", true }, { "iramellor.com", true }, { "iran-geo.com", true }, + { "irandp.net", true }, { "iranian.lgbt", true }, { "iranianholiday.com", true }, { "iranjeunesse.com", true }, @@ -17039,6 +17881,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "irayo.net", true }, { "irc-results.com", true }, { "ircmett.de", true }, + { "irdvb.com", true }, { "iready.ro", true }, { "ireef.tv", true }, { "iren.ch", true }, @@ -17065,12 +17908,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ironfistdesign.com", true }, { "ironhide.de", true }, { "ironpeak.be", true }, + { "irrewilse.se", true }, { "irritant.net", true }, { "iruarts.ch", true }, { "iruca.co", true }, { "is-going-to-rickroll.me", true }, { "is-sw.net", true }, { "isaacdgoodman.com", true }, + { "isaackabel.cf", true }, + { "isaackabel.ga", true }, + { "isaackabel.gq", true }, + { "isaackabel.ml", true }, + { "isaackabel.tk", true }, { "isaackhor.com", true }, { "isaacman.tech", true }, { "isaacmorneau.com", true }, @@ -17095,7 +17944,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "isecrets.se", true }, { "iservicio.mx", true }, { "isfff.com", true }, - { "isfriday.com", true }, { "isgp-studies.com", true }, { "ishamf.com", true }, { "ishangirdhar.com", true }, @@ -17110,24 +17958,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "isitchristmas.com", true }, { "isitcoffeetime.com", true }, { "isitdoneyet.gov", true }, + { "isitpatchtuesday.com", true }, + { "isitrest.info", true }, { "isitup.org", true }, { "iskaron.de", true }, { "iskaz.rs", true }, { "iskkk.com", true }, { "iskkk.net", true }, { "iskogen.nu", true }, - { "islam.si", true }, { "islamonline.net", true }, { "islandhosting.com", true }, - { "islazia.fr", true }, { "isletech.net", true }, { "isliada.org", true }, + { "islief.com", true }, + { "islykaithecutest.cf", true }, + { "islykaithecutest.ml", true }, + { "ismailkarsli.com", true }, { "ismat.com", true }, { "ismena.bg", true }, { "ismetroonfiretoday.com", true }, { "ismywebsitepenalized.com", true }, { "isn.cz", true }, - { "isntall.us", true }, + { "iso27032.com", true }, { "isognattori.com", true }, { "isolta.com", true }, { "isolta.de", true }, @@ -17178,7 +18030,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "istschonsolangeinrente.de", true }, { "istsi.org", true }, { "isuzupartscenter.com", true }, - { "isv.online", true }, { "isvbscriptdead.com", true }, { "isvsecwatch.org", true }, { "isyu.xyz", true }, @@ -17193,12 +18044,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "it-maker.eu", true }, { "it-rotter.de", true }, { "it-schamans.de", true }, + { "it-seems-to.work", true }, { "it-service24.at", true }, { "it-service24.ch", true }, { "it-service24.com", true }, { "it-shamans.de", true }, { "it-shamans.eu", true }, - { "it-sysoft.com", true }, { "it-ti.me", true }, { "it-world.eu", true }, { "it.search.yahoo.com", false }, @@ -17210,6 +18061,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "italia-store.com", true }, { "italiachegioca.com", true }, { "italian.dating", true }, + { "italianjourneys.com.au", true }, { "italianshoemanufacturers.com", true }, { "italieflydrive.nl", true }, { "italserrande.it", true }, @@ -17217,10 +18069,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "itamservices.nl", true }, { "itb-online.co.uk", true }, { "itblog.pp.ua", true }, - { "itbrief.co.nz", true }, - { "itbrief.com.au", true }, { "itchy.nl", true }, - { "itchybrainscentral.com", true }, { "itcko.sk", true }, { "itdashboard.gov", true }, { "itds-consulting.com", true }, @@ -17244,8 +18093,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ithakama.cz", true }, { "ithenrik.com", true }, { "ithinc.net", true }, - { "itilo.de", true }, - { "itiomassagem.com.br", true }, + { "itikon.com", true }, { "itis.gov", true }, { "itis4u.ch", true }, { "itkaufmann.at", true }, @@ -17254,17 +18102,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "itmindscape.com", true }, { "itn.co.uk", true }, { "itneeds.tech", true }, - { "itnews-bg.com", true }, { "itnota.com", true }, { "itochan.jp", true }, { "itogoyomi.com", true }, { "itooky.com", true }, { "itpro.ua", true }, - { "itproject.guru", false }, - { "itrack.in.th", true }, { "itraveille.fr", true }, + { "itreallyaddsup.com", true }, { "itring.pl", false }, { "itruss.com.tw", true }, + { "itruth.tk", true }, { "its-future.com", true }, { "its-gutachten.de", true }, { "its4living.com", true }, @@ -17290,8 +18137,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "itsstefan.eu", true }, { "itstatic.tech", true }, { "itswincer.com", true }, - { "ittop-gabon.com", true }, { "itzap.com.au", true }, + { "iusedtosmoke.com", true }, + { "iuyos.com", true }, + { "ivact.co.jp", true }, { "ivanbenito.com", true }, { "ivancacic.com", false }, { "ivanmeade.com", true }, @@ -17305,6 +18154,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ivi.mx", true }, { "ivi.net.br", true }, { "ivi.pt", true }, + { "ivig.com.br", true }, { "ivinet.cl", true }, { "ivitalia.it", true }, { "ivo.co.za", true }, @@ -17337,6 +18187,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ixquick.info", true }, { "ixquick.nl", true }, { "iyassu.com", true }, + { "iyouewo.com", true }, { "iyuanbao.net", true }, { "iz8mbw.net", true }, { "izaakbeekman.com", true }, @@ -17359,7 +18210,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "j2ee.cz", true }, { "j2h.de", true }, { "j3e.de", true }, - { "j8y.de", true }, { "ja-dyck.de", true }, { "ja-gps.com.au", true }, { "ja-publications.agency", false }, @@ -17381,30 +18231,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jabjab.de", true }, { "jaccblog.com", true }, { "jacekowski.org", true }, + { "jacik.cz", true }, { "jackdawphoto.co.uk", true }, { "jackdelik.de", true }, { "jackf.me", true }, + { "jackhoodtransportation.com", true }, { "jackingramnissanparts.com", true }, { "jackpothappy.com", true }, { "jackrusselterrier.com.br", true }, { "jackson-quon.com", true }, { "jackson.jp", true }, { "jacksonvillestation.com", true }, + { "jacksutton.info", true }, { "jackyliao123.tk", true }, + { "jackyyf.com", false }, { "jaco.by", true }, { "jacobamunch.com", true }, { "jacobdevans.com", true }, { "jacobhaug.com", false }, { "jacobi-server.de", true }, { "jacobian.org", true }, + { "jacobjangles.com", true }, { "jacobphono.com", true }, { "jacuzziprozone.com", true }, + { "jadara.info", true }, { "jadchaar.me", true }, { "jaegerlacke.de", true }, + { "jaetech.org", true }, { "jagbouncycastles.co.uk", true }, { "jagerman.com", true }, { "jaguarlandrover-asse.be", true }, { "jaguarlandrover-occasions.be", true }, + { "jaguarwong.xyz", true }, { "jahanaisamu.com", true }, { "jahmusic.net", true }, { "jahner.xyz", true }, @@ -17413,18 +18271,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jaion.tech", true }, { "jaispirit.com", false }, { "jaitnetworking.com", false }, - { "jak-na-les.cz", true }, { "jakarta.dating", true }, { "jakdelatseo.cz", true }, { "jake.eu.org", true }, { "jake.ml", true }, { "jake.nom.za", true }, + { "jakebeardsley.com", true }, { "jakecurtis.de", true }, - { "jakenbake.com", true }, { "jakereynolds.co", true }, { "jakerullman.com", true }, { "jakeslab.tech", true }, { "jaketremper.com", true }, + { "jakewestrip.com", true }, { "jakob-server.tk", true }, { "jakobejitblokaci.cz", true }, { "jakobkrigovsky.com", true }, @@ -17434,7 +18292,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jakub-boucek.cz", true }, { "jakubarbet.eu", true }, { "jakubboucek.cz", true }, - { "jakubtopic.cz", true }, + { "jakubklimek.com", true }, { "jakubvrba.cz", true }, { "jala.co.jp", true }, { "jaleo.cn", true }, @@ -17442,7 +18300,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jamaat.hk", true }, { "jamacha.org", true }, { "jamalfi.bio", true }, - { "jamaware.org", true }, { "jamberry.com.mx", true }, { "jamberrynails.co.uk", true }, { "james-bell.co.uk", true }, @@ -17451,7 +18308,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jamesachambers.com", true }, { "jamesaimonetti.com", true }, { "jamesbillingham.com", true }, - { "jamesbradach.com", false }, { "jameschorlton.co.uk", true }, { "jamesdorf.com", true }, { "jamesgreenfield.com", true }, @@ -17459,14 +18315,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jameshost.net", true }, { "jameshunt.us", false }, { "jamesj.me", false }, + { "jamesjboyer.com", true }, { "jamesmarsh.net", true }, { "jamesmilazzo.com", true }, { "jamesmorrison.me", true }, + { "jamesmurphy.com.au", true }, { "jamesrobertson.io", true }, { "jamesrobertson.net", true }, + { "jamesross.name", true }, { "jamesrussellward.co.uk", true }, { "jamessmith.me.uk", true }, + { "jamesturnerstickley.com", true }, { "jamhost.org", true }, + { "jamie-read-photography.com", true }, { "jamie.ie", true }, { "jamielarter.ca", true }, { "jamielinux.com", true }, @@ -17480,7 +18341,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jammysplodgers.co.uk", true }, { "jamon.ca", true }, { "jamonsilva.com", true }, - { "jamstatic.fr", false }, + { "jamstatic.fr", true }, { "jan-and-maaret.de", true }, { "jan-bucher.ch", true }, { "jan-hill.com", true }, @@ -17500,19 +18361,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "janikrabe.com", true }, { "janjoris.nl", true }, { "jankoepsel.com", true }, + { "janmg.com", true }, { "jann.is", true }, + { "jannekekaasjager.nl", true }, { "jannisfink.de", true }, { "jannyrijneveld.nl", true }, { "janoberst.com", true }, { "janokacer.sk", true }, { "janschaumann.de", true }, { "janssenwigman.nl", true }, + { "janterpstra.eu", true }, + { "jantinaboelens.nl", true }, { "jaot.info", true }, { "japaniac.de", false }, - { "japanphilosophy.com", true }, - { "japansm.com", true }, { "japanwatches.xyz", true }, - { "jape.today", true }, + { "japon-japan.com", true }, { "jardin-exotique-rennes.fr", true }, { "jardinderline.ch", true }, { "jardiniersduminotaure.fr", true }, @@ -17520,19 +18383,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jaredfernandez.com", true }, { "jaredfraser.com", true }, { "jarivisual.com", true }, - { "jarl.ninja", true }, { "jarniashop.se", true }, { "jaroku.com", true }, { "jarondl.net", true }, + { "jaroslavc.eu", true }, { "jarrettgraham.com", true }, { "jarroba.com", true }, { "jas-team.net", true }, { "jasl.works", true }, { "jasmijnwagenaar.nl", true }, { "jasminefields.net", true }, + { "jason.re", true }, { "jasonamorrow.com", true }, { "jasongerber.ch", true }, - { "jasonian-photo.com", true }, + { "jasonian-photo.com", false }, { "jasonmili.online", true }, { "jasonsansone.com", true }, { "jasper.link", true }, @@ -17543,8 +18407,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jaszbereny-vechta.eu", true }, { "javalestari.com", true }, { "javamilk.com", true }, - { "javfree.me", true }, { "javierburgos.net", true }, + { "jaxxnet.co.uk", true }, + { "jaxxnet.org", true }, { "jaycouture.com", true }, { "jayfreestone.com", true }, { "jaymecd.rocks", true }, @@ -17569,23 +18434,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jcadg.com", true }, { "jcai.dk", true }, { "jcaicedo.com", true }, - { "jcaicedo.tk", true }, + { "jcb.com", true }, + { "jcbgolfandcountryclub.com", true }, { "jci.cc", true }, - { "jcolideles.com", true }, { "jcra.net", true }, { "jctf.team", true }, { "jcwodan.nl", true }, - { "jcyz.cf", true }, { "jd-group.co.uk", true }, { "jd1.de", true }, { "jdassets.com", true }, { "jdc.io", true }, { "jdcdirectsales.com", true }, - { "jdcdirectsales.com.ph", true }, { "jdcgroup.com.ph", true }, { "jdegbau.com", true }, { "jdheysupplies.co.uk", true }, { "jdjohnsonmedia.com", true }, + { "jdjohnsonwaterproofing.com", true }, { "jdm.elk.pl", true }, { "jdncr.com", true }, { "jdoi.pw", true }, @@ -17614,7 +18478,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jedwarddurrett.com", true }, { "jeec.ist", true }, { "jeepmafia.com", true }, - { "jeff.forsale", true }, { "jeffanderson.me", true }, { "jeffcasavant.com", false }, { "jeffcloninger.net", true }, @@ -17629,6 +18492,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jefftickle.com", true }, { "jeffwebb.com", true }, { "jefrydco.id", true }, + { "jej.cz", true }, + { "jej.sk", true }, { "jekhar.com", true }, { "jelena-adeli.com", true }, { "jelewa.de", true }, @@ -17641,42 +18506,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jelleluteijn.nl", true }, { "jelleluteijn.pro", true }, { "jelleraaijmakers.nl", true }, + { "jelleschneiders.com", true }, { "jelly.cz", true }, { "jellybeanbooks.com.au", true }, { "jelmer.co.uk", true }, { "jelmer.uk", true }, + { "jelmoli-shop.ch", true }, { "jem.gov", true }, { "jemangeducheval.com", true }, { "jembatankarir.com", true }, + { "jemefaisdesamis.com", true }, { "jena.space", true }, { "jennedebleser.com", false }, - { "jenniferchan.id.au", true }, { "jenniferengerwingaantrouwen.nl", true }, { "jennifermason.eu", true }, { "jennifersauer.nl", true }, - { "jennybeaned.com", true }, { "jennythebaker.com", true }, { "jenolson.net", true }, { "jenprace.cz", true }, { "jensrex.dk", true }, + { "jeparamedia.com", true }, { "jepertinger-itconsulting.de", true }, { "jeproteste.info", true }, { "jeremiahbenes.com", true }, { "jeremy-chen.org", true }, { "jeremy.hu", true }, { "jeremybentham.com", true }, - { "jeremyc.ca", true }, { "jeremycantu.com", true }, { "jeremycrews.com", true }, { "jeremynally.com", true }, - { "jeremyness.com", true }, { "jeremypaul.me", true }, { "jeremytcd.com", true }, { "jericamacmillan.com", true }, { "jeroendeneef.com", true }, { "jeroenensanne.wedding", true }, - { "jeroenvanderwal.nl", true }, + { "jeroensangers.com", true }, { "jerret.de", true }, + { "jerryweb.org", true }, { "jerryyu.ca", true }, { "jerseybikehire.co.uk", true }, { "jerseyjumpingbeans.co.uk", true }, @@ -17687,8 +18553,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jesseerbach.com", true }, { "jessekaufman.com", true }, { "jessesjumpingcastles.co.uk", true }, - { "jessevictors.com", true }, - { "jessgranger.com", true }, + { "jessgranger.com", false }, { "jessicabenedictus.nl", false }, { "jessicahrehor.com", true }, { "jesters-court.net", true }, @@ -17702,11 +18567,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jetmirshatri.com", true }, { "jetsetboyz.net", true }, { "jetsieswerda.nl", true }, + { "jettlarue.com", true }, { "jetwhiz.com", true }, { "jeuxetcodes.fr", true }, { "jeweet.net", true }, { "jewishboyscouts.com", true }, { "jexler.net", true }, + { "jf-fotos.de", true }, { "jfbst.net", true }, { "jfr.im", true }, { "jfreitag.de", true }, @@ -17726,10 +18593,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jhwestover.com", true }, { "jiacl.com", true }, { "jiahao.codes", true }, + { "jiangzm.com", false }, + { "jianji.de", true }, { "jianshu.com", true }, { "jianyuan.pro", true }, { "jiazhao.ga", true }, + { "jicaivvip.com", true }, { "jichi.io", true }, + { "jichi000.win", true }, { "jimbiproducts.com", true }, { "jimbraaten.com", true }, { "jimbutlerkiaparts.com", true }, @@ -17737,9 +18608,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jimfranke.com", true }, { "jimfranke.nl", true }, { "jimmycai.com", false }, - { "jimmycai.org", true }, { "jimmycn.com", false }, - { "jimmynelson.com", true }, { "jimmyroura.ch", true }, { "jimshaver.net", true }, { "jimslop.nl", true }, @@ -17766,9 +18635,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jixun.moe", true }, { "jiyusu.com", true }, { "jjj.blog", true }, + { "jjjconnection.com", true }, { "jjlvk.nl", true }, + { "jjmarketing.co.uk", true }, { "jjspartyhire.co.uk", true }, { "jjspartytime.co.uk", true }, + { "jjsummerboatparty.co.uk", true }, { "jjvanoorschot.nl", true }, { "jk-entertainment.biz", true }, { "jkchocolate.com", true }, @@ -17776,14 +18648,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jkinteriorspa.com", true }, { "jkirsche.com", true }, { "jkrippen.com", true }, - { "jkuvw.xyz", true }, { "jkyuan.tk", true }, { "jl-dns.eu", true }, { "jl-dns.nl", true }, { "jl-exchange.nl", true }, { "jl-mail.nl", true }, { "jldp.org", true }, + { "jlink.nl", true }, { "jlkhosting.com", true }, + { "jloh.codes", true }, { "jlot.org", true }, { "jlponsetto.com", true }, { "jlr-luxembourg.com", true }, @@ -17795,26 +18668,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jmbelloteau.com", true }, { "jmcashngold.com.au", true }, { "jmcataffo.com", true }, + { "jmce.eu", true }, { "jmcleaning.services", true }, { "jmedved.com", true }, { "jmentertainment.co.uk", true }, { "jmfjltd.com", true }, { "jmk.hu", true }, + { "jmoreau.ddns.net", true }, { "jmotion.co.uk", true }, { "jmpb.hu", true }, { "jmpmotorsport.co.uk", true }, { "jmsolodesigns.com", true }, - { "jmssg.jp", true }, { "jmvdigital.com", true }, - { "jncie.de", true }, - { "jncie.eu", true }, - { "jncip.de", true }, { "jnjdj.com", true }, { "jnm-art.com", true }, { "joa-ebert.com", true }, + { "joacimeldre.com", true }, { "joaoaugusto.net", true }, { "joaosampaio.com.br", true }, - { "job-offer.de", true }, + { "job.biz.tr", true }, + { "jobatus.com.br", true }, + { "jobatus.es", true }, + { "jobatus.it", true }, + { "jobatus.mx", true }, + { "jobatus.pt", true }, { "jobbkk.com", true }, { "jobbsafari.no", true }, { "jobbsafari.se", true }, @@ -17832,7 +18709,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jobs4sales.ch", true }, { "jobseekeritalia.it", true }, { "jobsisbrown.com", true }, - { "jobss.co.uk", true }, { "jobsuchmaschine.ch", true }, { "jobwinner.ch", true }, { "jobzninja.com", true }, @@ -17848,6 +18724,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "joedinardo.com", true }, { "joedoyle.us", true }, { "joefixit.co", true }, + { "joefixit.co.uk", true }, { "joehenry.co.uk", true }, { "joejohnson.name", true }, { "joel.coffee", true }, @@ -17858,11 +18735,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "joelle.me", true }, { "joelleandpeter.co.uk", true }, { "joellimberg.com", true }, + { "joellombardo.com", false }, { "joelmarkhamphotography.com.au", true }, { "joelmunch.com", true }, { "joelnichols.uk", true }, { "joemotherfuckingjohnson.com", true }, - { "joepitt.co.uk", false }, + { "joerosca.com", true }, { "joerss.at", true }, { "joeskup.com", true }, { "joespaintingpgh.com", true }, @@ -17884,6 +18762,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "johannes.io", true }, { "johannes.wtf", true }, { "johannesburg-escorts.co.za", true }, + { "johannesen.tv", true }, { "johanneskonrad.de", true }, { "johannespichler.com", false }, { "johansf.tech", true }, @@ -17891,12 +18770,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "johnbeil.com", true }, { "johnblackbourn.com", true }, { "johnbpodcast.com", true }, + { "johncook.ltd.uk", true }, { "johndball.com", true }, { "johnfulgenzi.com", true }, { "johngallias.com", true }, - { "johngo.tk", true }, + { "johngo.tk", false }, { "johnguant.com", true }, { "johnkastler.net", true }, + { "johnmcc.net", true }, { "johnmcintosh.pro", true }, { "johnmh.me", true }, { "johnmichel.org", true }, @@ -17908,10 +18789,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "johnroberts.me", true }, { "johnrockefeller.net", true }, { "johnsegovia.com", true }, + { "johnsiu.com", true }, { "johnsonho.net", true }, { "johnvanhese.nl", true }, { "johnyytb.be", true }, { "joi-dhl.ch", true }, + { "jointotem.com", true }, { "jojosplaycentreandcafeteria.co.uk", true }, { "jokedalderup.nl", true }, { "joker.menu", true }, @@ -17919,13 +18802,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jokewignand.nl", true }, { "joliettech.com", true }, { "jollausers.de", true }, + { "jolle.io", true }, { "jollygoodspudz.ca", true }, { "jollykidswobbleworld.co.uk", true }, { "jolokia.ch", true }, { "jomo.tv", true }, { "jomofojo.co", true }, { "jomofojo.com", true }, + { "jonahperez.com", true }, { "jonandnoraswedding.com", true }, + { "jonarcher.info", true }, { "jonas-thelemann.de", true }, { "jonas-wenk.de", false }, { "jonaskjodt.com", true }, @@ -17936,7 +18822,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jonathanha.as", true }, { "jonathanj.nl", true }, { "jonathanschle.de", true }, - { "jonathanselea.se", false }, { "jonblankenship.com", true }, { "jondarby.com", true }, { "jondevin.com", true }, @@ -17958,7 +18843,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jonoalderson.com", true }, { "jonpads.com", true }, { "jonpavelich.com", true }, - { "jons.org", true }, { "jonscaife.com", true }, { "jooksms.com", true }, { "jooksuratas.ee", true }, @@ -17968,14 +18852,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "joostvanderlaan.nl", true }, { "jopsens.de", true }, { "joran.org", true }, + { "jorcus.com", true }, { "jordan-jungk.de", true }, { "jordanhamilton.me", true }, - { "jordankirby.co.uk", true }, { "jordankmportal.com", true }, { "jordans.co.uk", true }, - { "jordanscorporatelaw.com", true }, { "jordanstrustcompany.com", true }, { "jordhy.com", true }, + { "jorgerosales.org", true }, { "jorisdalderup.nl", true }, { "jornalalerta.com.br", true }, { "joscares.com", true }, @@ -17985,7 +18869,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "joseetesser.nl", true }, { "josef-lotz.de", true }, { "josefjanosec.com", true }, + { "josefottosson.se", true }, { "josegerber.ch", true }, + { "joseitoda.org", true }, { "josemikkola.fi", true }, { "josepbel.com", true }, { "josephbleroy.com", true }, @@ -17994,15 +18880,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "josephsniderman.org", true }, { "josephv.website", true }, { "josericaurte.com", true }, + { "joshgilson.com", true }, { "joshgrancell.com", true }, { "joshharkema.com", true }, { "joshharmon.me", true }, { "joshlovephotography.co.uk", true }, { "joshpanter.com", true }, { "joshrickert.com", true }, + { "joshruppe.com", true }, { "joshschmelzle.com", true }, { "joshtriplett.org", true }, { "joshua-kuepper.de", true }, + { "joshua.bio", true }, { "joshuadmiller.info", true }, { "joshuajohnson.ca", true }, { "joshuarogers.net", true }, @@ -18012,18 +18901,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "journeytomastery.net", true }, { "jovani.com", false }, { "jovic.hamburg", true }, - { "joworld.net", true }, { "joyceseamone.com", true }, { "joyful.house", true }, { "joyfulexpressions.gallery", true }, { "joyofcookingandbaking.com", true }, { "jpdeharenne.be", true }, { "jpeg.io", true }, - { "jpgangbang.com", true }, { "jphandjob.com", true }, { "jplesbian.com", true }, { "jpmelos.com", true }, { "jpmelos.com.br", true }, + { "jpod.cc", true }, { "jps-selection.co.uk", true }, { "jps-selection.com", true }, { "jps-selection.eu", true }, @@ -18038,12 +18926,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jrc9.ca", true }, { "jreb.nl", true }, { "jreinert.com", true }, + { "jrflorian.com", true }, { "jross.me", true }, { "jrtapsell.co.uk", true }, { "jrxpress.com", true }, + { "js93029.com", true }, { "jschoi.org", true }, { "jschumacher.info", true }, { "jsd-cog.org", true }, + { "jsdelivr.com", true }, { "jselby.net", true }, { "jsent.co.uk", true }, { "jsevilleja.org", true }, @@ -18051,6 +18942,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jskoelliken.ch", true }, { "jslidong.top", true }, { "jsmetallerie.fr", true }, + { "jsnfwlr.com", true }, { "jsnfwlr.io", true }, { "jsteward.moe", true }, { "jstore.ch", true }, @@ -18063,9 +18955,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jtp.id", true }, { "jts3servermod.com", true }, { "jtslay.com", true }, + { "ju.io", true }, { "juan23.edu.uy", true }, { "juanfrancisco.tech", true }, - { "juanhub.com", true }, { "juanmaguitar.com", true }, { "juanxt.ddns.net", true }, { "jubileum.online", true }, @@ -18074,7 +18966,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "juchit.at", true }, { "jucktehkeinen.de", true }, { "judc-ge.ch", true }, - { "judge2020.com", true }, { "judge2020.me", true }, { "judoprodeti.cz", true }, { "judosaintdenis.fr", true }, @@ -18094,14 +18985,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "juhakoho.com", true }, { "juice.codes", true }, { "juk.life", true }, - { "juku-wing.jp", true }, { "jule-spil.dk", true }, - { "julenlanda.com", true }, { "julian-uphoff.de", true }, { "julian-weigle.de", true }, { "juliangonggrijp.com", true }, { "julianickel.de", true }, { "julianmeyer.de", true }, + { "julianmp.info", true }, { "juliansimioni.com", true }, { "julianskitchen.ch", true }, { "julianvmodesto.com", true }, @@ -18119,8 +19009,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "julienc.io", true }, { "julienpaterne.com", true }, { "julientartarin.com", true }, - { "julio.jamil.nom.br", true }, - { "juliohernandezgt.com", true }, { "julius-zoellner.de", true }, { "jullensgroningen.com", true }, { "juls.cloud", true }, @@ -18149,6 +19037,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "junethack.net", true }, { "jungaa.fr", true }, { "jungesforumkonstanz.de", true }, + { "junggesellmuc.de", true }, { "jungleducks.ca", true }, { "junglejackscastles.co.uk", true }, { "junglememories.co.uk", true }, @@ -18168,6 +19057,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "juridoc.com.br", true }, { "jurijbuga.de", true }, { "jurisprudent.by", true }, + { "juristas.com.br", true }, { "jurriaan.ninja", true }, { "just-a-clanpage.de", true }, { "just-vet-and-drive.fr", true }, @@ -18184,24 +19074,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "justgalak.org", true }, { "justice.gov", true }, { "justice4assange.com", true }, + { "justin-tech.com", false }, { "justinellingwood.com", true }, { "justinharrison.ca", true }, { "justinho.com", true }, { "justinstandring.com", true }, + { "justmensgloves.com", true }, { "justpaste.it", true }, - { "justsome.info", true }, { "justthinktwice.gov", true }, { "justupdate.me", true }, { "justyy.com", true }, { "juszkiewicz.com.pl", true }, { "jutlander-netbank.dk", true }, { "jutlander.dk", true }, + { "juttaheitland.com", true }, { "juusujanar.eu", true }, { "juvenex.co", true }, - { "juventusclublugano.ch", true }, { "juwelierstoopman.nl", true }, { "juzgalo.com", true }, { "jva-wuerzburg.de", true }, + { "jvandenbroeck.com", true }, { "jvanerp.nl", true }, { "jvbouncycastlehire.co.uk", true }, { "jvega.me", true }, @@ -18217,13 +19109,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jwnotifier.org", true }, { "jwschuepfheim.ch", true }, { "jwsoft.nl", true }, - { "jxir.de", true }, { "jydemarked.dk", true }, { "jyggen.com", true }, { "jym.fit", true }, { "jyoti-fairworks.org", true }, { "jzachpearson.com", true }, { "jzbk.org", true }, + { "jzcapital.co", true }, { "k-homes.net", true }, { "k-netz.de", true }, { "k-pan.com", true }, @@ -18233,11 +19125,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "k-tube.com", true }, { "k258059.net", true }, { "k2mts.org", true }, - { "k33k00.com", true }, + { "k3508.com", true }, { "k3nny.fr", true }, + { "k4law.com", true }, { "k4r.ru", true }, { "k7azx.com", true }, { "k82.org", true }, + { "k8n.de", true }, { "k8r.eu", true }, { "k9swx.com", true }, { "kaamoscreations.com", true }, @@ -18247,14 +19141,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kaashosting.nl", true }, { "kaatha-kamrater.se", true }, { "kab-s.de", true }, - { "kabarlinux.id", true }, + { "kabaca.design", true }, { "kabashop.com.br", true }, - { "kabat-fans.cz", false }, { "kabeltv.co.nz", true }, { "kabeuchi.com", true }, { "kaboom.pw", true }, { "kabu-abc.com", true }, - { "kabus.org", true }, { "kachelfm.nl", true }, { "kachlikova2.cz", true }, { "kack.website", true }, @@ -18270,25 +19162,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kaigojj.com", true }, { "kaikei7.com", true }, { "kaileymslusser.com", true }, - { "kainetsoft.com", true }, { "kairion.de", false }, { "kaisakura.net", true }, { "kaisev.net", true }, { "kaitol.click", true }, { "kaiusaltd.com", true }, + { "kaivac-emea.com", true }, { "kaizenreporting.com", true }, { "kaizeronion.com", true }, { "kajak.land", true }, { "kaka.farm", true }, { "kakao-karten.de", true }, { "kakaravaara.fi", true }, - { "kakie-gobocha.jp", true }, { "kakie-kolesa.ru", true }, { "kakolightingmuseum.or.jp", true }, { "kakoo-media.nl", true }, { "kakoo.nl", true }, { "kakoomedia.nl", true }, { "kakuto.me", true }, + { "kalakarclub.com", true }, { "kalamos-psychiatrie.be", true }, { "kalastus.com", true }, { "kaleidoscope.co.uk", true }, @@ -18300,25 +19192,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kall.is", true }, { "kallies-net.de", true }, { "kalmar.com", true }, + { "kalolina.com", true }, + { "kalombo.ru", true }, { "kalsbouncies.com", true }, { "kaltenbrunner.it", true }, { "kalterersee.ch", true }, { "kalwestelectric.com", true }, + { "kam-serwis.pl", true }, { "kamatajisyaku.tokyo.jp", true }, { "kamikaichimaru.com", false }, { "kaminbau-laub.de", true }, { "kamixa.se", true }, { "kamppailusali.fi", true }, { "kamui.co.uk", true }, + { "kan3.de", true }, { "kana-mono.biz", true }, { "kana.me", true }, { "kanaete-uranai.com", true }, { "kanag.pl", true }, { "kanal-schaefer.de", true }, { "kanal-tv-haensch.de", true }, + { "kandalife.com", true }, { "kandianshang.com", true }, { "kanecastles.com", true }, { "kanehusky.com", true }, + { "kaneisdi.com", true }, { "kanetix.ca", true }, { "kangaroo-bouncycastle.co.uk", true }, { "kangarooislandholidayaccommodation.com.au", true }, @@ -18336,20 +19234,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kanna.cf", true }, { "kannchen.de", true }, { "kanobu.ru", true }, - { "kanotijd.nl", true }, { "kansaiyamamoto.jp", true }, { "kantankye.nl", true }, { "kantanmt.com", true }, { "kantorkita.net", true }, { "kantorosobisty.pl", true }, { "kany.me", false }, + { "kanzakiranko.jp", true }, { "kanzashi.com", true }, { "kanzlei-myca.de", true }, { "kanzlei-oehler.com", true }, { "kanzlei-sixt.de", true }, { "kanzshop.com", true }, { "kap-genial.de", true }, + { "kapgy-moto.com", true }, { "kapiorr.duckdns.org", true }, + { "kappenstein.org", true }, { "kapseli.net", true }, { "kaptadata.com", true }, { "kaptamedia.com", true }, @@ -18359,13 +19259,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "karachi.dating", true }, { "karaface.com", true }, { "karalane.com", true }, - { "karamomo.net", true }, - { "karanastic.com", true }, + { "karanjthakkar.com", true }, { "karanlyons.com", true }, { "karasik.by", true }, { "karateka.org", true }, { "karateka.ru", true }, { "kardize24.pl", true }, + { "karenledger.ca", true }, { "kargl.net", true }, { "karguine.in", true }, { "karhm.com", true }, @@ -18383,7 +19283,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "karmainsurance.ca", true }, { "karmaplatform.com", true }, { "karmaspa.se", true }, - { "karmic.com", true }, { "karn.nu", true }, { "karneid.info", true }, { "karsofsystems.com", true }, @@ -18399,6 +19298,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "karupp-did.net", true }, { "kasadara.com", true }, { "kasei.im", true }, + { "kashinavi.com", true }, { "kashmirobserver.net", true }, { "kasko.io", true }, { "kasnoffskinclinic.com", true }, @@ -18407,14 +19307,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kastelruth.biz", true }, { "kastemperaturen.ga", true }, { "kastorsky.ru", true }, + { "kat.marketing", true }, { "katagena.com", true }, { "katalogbutikker.dk", true }, - { "katata-kango.ac.jp", true }, + { "katcleaning.com.au", true }, { "katedra.de", true }, { "kateduggan.net", true }, { "katekligys.com", true }, { "katemihalikova.cz", true }, { "katericke.com", true }, + { "katex.org", true }, { "kathardt.de", true }, { "kathegiraldo.com", true }, { "kathrinbaumannphotography.com", true }, @@ -18422,20 +19324,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "katiechai.xyz", true }, { "katieskandy.co.uk", true }, { "katieskastles.co.uk", true }, + { "katja-und-ronny.de", true }, { "katka.info", true }, { "katnunn.co.uk", true }, { "kato-yane.com", true }, { "katscastles.co.uk", true }, { "kattelans.eu", true }, - { "katthewaffle.fr", true }, { "katyl.info", false }, { "katyusha.net", false }, { "katzenbrunnen-test.de", true }, + { "katzensklave.me", true }, { "katzspeech.com", true }, { "kau-boys.com", true }, { "kau-boys.de", true }, { "kaufberatung.community", true }, - { "kausta.me", true }, + { "kaverti.com", true }, { "kavik.no", true }, { "kavovary-kava.cz", true }, { "kawaii.io", true }, @@ -18443,15 +19346,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kay.la", true }, { "kayakabovegroundswimmingpools.com", true }, { "kayleen.net", true }, + { "kayscs.com", true }, { "kaysis.gov.tr", true }, { "kazakov.lt", true }, - { "kazamasion.com", true }, { "kazand.lt", true }, { "kazandaemon.ru", true }, + { "kazek.com.pl", true }, + { "kazekprzewozy.pl", true }, { "kazu.click", true }, { "kazuhirohigashi.com", true }, + { "kazumi.ooo", true }, { "kazumi.ro", true }, { "kazy111.info", true }, + { "kb3.net", true }, { "kba-online.de", true }, { "kbb-ev.de", true }, { "kbbouncycastlehire.co.uk", true }, @@ -18467,23 +19374,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kcliner.com", true }, { "kcmicapital.com", true }, { "kcolford.com", false }, - { "kcore.org", true }, { "kcptun.com", true }, { "kcshipping.co.uk", true }, { "kcsordparticipation.org", true }, { "kd.net.nz", true }, { "kdex.de", true }, + { "kdfans.com", true }, { "kdw.cloud", true }, { "kdyby.org", true }, { "ke7tlf.us", true }, { "keakon.net", true }, + { "keane.space", true }, + { "keaneokelley.com", true }, { "keaysmillwork.com", true }, { "keb.com.au", true }, { "keb.net.au", true }, { "kebabbesteld.nl", true }, { "kebabbruce.com", true }, + { "kecht.at", true }, { "kedarastudios.com", true }, { "kedibizworx.com", true }, + { "keditor.biz", true }, { "kedv.es", true }, { "keeleysam.com", true }, { "keelove.net", true }, @@ -18506,6 +19417,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "keisaku.org", true }, { "keishiando.com", true }, { "keithlomax.com", true }, + { "keithws.net", true }, { "kejar.id", true }, { "keke-shop.ch", true }, { "kekgame.com", true }, @@ -18518,6 +19430,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kelheor.space", true }, { "kellerlan.org", true }, { "kelleymcchesney.us", true }, + { "kellimacconnell.com", true }, { "kellygrenard.com", true }, { "kellyskastles.co.uk", true }, { "kellyssportsbarandgrill.com", true }, @@ -18551,7 +19464,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kensbouncycastles.co.uk", true }, { "kentec.net", true }, { "kenterlis.gr", true }, - { "kenvix.com", false }, + { "kenvix.com", true }, { "kenx5.eu.org", true }, { "kenyons.info", true }, { "keops-spine.fr", true }, @@ -18566,9 +19479,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kernelpanics.nl", true }, { "kerrfrequencycombs.org", true }, { "kersbergen.nl", true }, + { "kersmexico.com", true }, { "kerstkaart.nl", true }, { "kersvers.agency", true }, - { "kerus.net", false }, + { "kerus.net", true }, { "kerzyte.net", true }, { "kescher.site", true }, { "kessawear.com", true }, @@ -18577,6 +19491,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kesteren.org", true }, { "ketamine.co.uk", true }, { "ketosecology.co.uk", true }, + { "ketotadka.com", true }, + { "kettlebellkrusher.com", true }, { "kettner.com", true }, { "ketty-voyance.com", true }, { "keutel.net", true }, @@ -18584,12 +19500,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kevinbowers.me", true }, { "kevinbusse.de", true }, { "kevincox.ca", false }, - { "kevinfoley.cc", true }, - { "kevinfoley.org", true }, { "kevinhill.nl", true }, { "kevinhq.com", true }, { "kevinkla.es", true }, { "kevinlocke.name", true }, + { "kevinmeijer.nl", true }, + { "kevinmorssink.nl", true }, { "kevinpirnie.com", true }, { "kevinrandles.com", true }, { "kevinratcliff.com", true }, @@ -18601,7 +19517,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "keycenter.com.br", true }, { "keycontainers.co.za", true }, { "keyerror.com", true }, + { "keygen.sh", true }, { "keyholdingservices.co.uk", true }, + { "keyhomechecker.com", true }, { "keyihao.cn", true }, { "keyinfo.io", true }, { "keylaserinstitute.com", true }, @@ -18612,14 +19530,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "keysupport.org", true }, { "keywebdesign.nl", true }, { "kf7joz.com", true }, + { "kfassessment.com", true }, { "kffs.ru", true }, { "kfirba.me", true }, + { "kfm.ink", true }, { "kforesund.se", true }, { "kfv-kiel.de", false }, { "kfz-hantschel.de", true }, { "kgm-irm.be", true }, { "kgnk.ru", true }, - { "khaledgarbaya.net", true }, + { "khaledgarbaya.net", false }, { "khanovaskola.cz", true }, { "khas.co.uk", true }, { "khasiatmanfaat.com", true }, @@ -18627,7 +19547,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "khetzal.info", true }, { "khipu.com", true }, { "khlee.net", true }, - { "khmath.com", true }, { "khmb.ru", true }, { "khoury-dulla.ch", true }, { "khs1994.com", true }, @@ -18637,6 +19556,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kiano.net", true }, { "kiapartscenter.net", true }, { "kiapartsdepartment.com", true }, + { "kiapps.ovh", true }, { "kibea.net", true }, { "kibibit.net", true }, { "kibriscicek.net", true }, @@ -18654,6 +19574,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kids-ok.com", true }, { "kids2day.in", true }, { "kidsareatrip.com", true }, + { "kidsclub.photos", true }, { "kidsforsavingearth.org", true }, { "kidsinwoods-interfacesouth.org", true }, { "kidsmark.net", true }, @@ -18666,12 +19587,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kidzsmile.co.uk", true }, { "kiebel.de", true }, { "kiedys.net", true }, - { "kiehls.pt", true }, { "kiekin.org", true }, { "kiekko.pro", true }, + { "kiel-kind.de", true }, { "kieran.ie", true }, { "kieranjones.uk", true }, - { "kiesuwcursus.nl", true }, { "kiesuwkerstkaart.nl", true }, { "kiffmarks.com", true }, { "kigmbh.com", true }, @@ -18682,6 +19602,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kilerd.me", true }, { "kilianvalkhof.com", true }, { "killaraapartments.com.au", true }, + { "killdeer.com", true }, { "killerit.in", true }, { "killerrobots.com", true }, { "killymoonbouncycastles.com", true }, @@ -18699,11 +19620,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kimotodental.com", true }, { "kimsufi-jordi.tk", true }, { "kimtran.kim", true }, + { "kin.life", true }, { "kin.pet", true }, { "kinautas.com", true }, { "kinderbasar-luhe.de", true }, { "kinderchor-bayreuth.de", true }, - { "kinderopvangzevenbergen.nl", true }, + { "kinderkleding.news", true }, { "kindertagespflege-rasselbande-halle.de", true }, { "kinderzahn-bogenhausen.de", true }, { "kindleworth.com", true }, @@ -18716,7 +19638,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kingant.net", true }, { "kinganywhere.eu", true }, { "kingbird.me", true }, - { "kingdomcrc.org", true }, { "kingdoms.gg", true }, { "kingiescastles.co.uk", true }, { "kingofshooting.com", true }, @@ -18728,19 +19649,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kingtecservices.com", true }, { "kini24.ru", true }, { "kinkenonline.com", true }, + { "kinnettmemorial.org", true }, { "kinnikinnick.com", true }, { "kinniyaonlus.com", true }, { "kinocheck.de", true }, { "kinohled.cz", true }, + { "kinomoto.me", true }, { "kinomoto.ovh", false }, { "kinos.nl", true }, { "kinozal-tv.appspot.com", true }, { "kinsights.com", false }, + { "kintawifi.com", false }, { "kintone.com", true }, { "kintore.tv", true }, { "kiocloud.com", true }, { "kionetworks.es", true }, { "kipa.at", true }, + { "kipiradio.com", true }, { "kippenbart.gq", true }, { "kipriakipita.gr", true }, { "kiragameforum.net", true }, @@ -18756,6 +19681,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kirillaristov.com", true }, { "kirillpokrovsky.de", true }, { "kirinas.com", true }, + { "kirinuki.jp", true }, { "kirkforcongress.com", true }, { "kirkforillinois.com", true }, { "kirkify.com", true }, @@ -18765,7 +19691,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kirschbaum.me", true }, { "kirslis.com", true }, { "kirstenbos.ca", true }, - { "kirstin-peters.de", true }, { "kirwandigital.com", true }, { "kis-toitoidixi.de", true }, { "kisallatorvos.hu", true }, @@ -18775,7 +19700,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kissesb.net", true }, { "kissflow.com", true }, { "kissgyms.com", true }, - { "kisskiss.ch", true }, { "kissmycreative.com", true }, { "kisstube.tv", true }, { "kitabnamabayi.com", true }, @@ -18800,16 +19724,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kittpress.com", true }, { "kittyhacker101.tk", true }, { "kivitelezesbiztositas.hu", true }, + { "kiwi.com", true }, { "kiwi.digital", true }, - { "kiwi.global", true }, { "kiwi.wiki", true }, { "kiwico.com", true }, - { "kiwipayment.com", true }, - { "kiwipayments.com", true }, - { "kiwiplace.com", true }, { "kiyotatsu.com", true }, { "kj-prince.com", true }, - { "kj1391.com", true }, + { "kj1396.net", true }, { "kj1397.com", true }, { "kjaer.io", true }, { "kjarni.cc", true }, @@ -18825,12 +19746,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kkr-bridal.net", true }, { "kks-karlstadt.de", true }, { "kksg.com", true }, + { "kkws.co", true }, { "kkyy.me", true }, + { "kkzxak47.com", true }, { "kl-diaetist.dk", true }, { "klaim.us", true }, { "klamathrestoration.gov", true }, { "klanggut.at", true }, - { "klantenadvies.nl", true }, { "klares-licht.de", true }, { "klarika.com", true }, { "klarmobil-empfehlen.de", true }, @@ -18842,7 +19764,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "klaxon.me", true }, { "klcreations.co.uk", true }, { "kle.cz", true }, - { "klean-ritekc.com", true }, { "kleaning.by", true }, { "klebeband.eu", true }, { "klebetape.de", true }, @@ -18854,7 +19775,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kleineanfragen.de", true }, { "kleinfein.co", true }, { "kleinreich.de", true }, - { "kleinserienproduktion.com", true }, { "kleinsys.com", true }, { "kleteckova.cz", true }, { "klicke-gemeinsames.de", true }, @@ -18876,6 +19796,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kloia.com", true }, { "klosko.net", true }, { "klotz-labs.com", true }, + { "kloudboy.com", true }, { "kls-agency.com.ua", false }, { "klseet.com", true }, { "klssn.com", true }, @@ -18883,9 +19804,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "klugemedia.de", true }, { "klustekeningen.nl", true }, { "klustermedia.com", true }, + { "klva.cz", true }, + { "klzwzhi.com", true }, { "km-net.pl", true }, { "kmashworth.co.uk", true }, - { "kmdev.me", true }, { "kmkz.jp", true }, { "kmsci.com.ph", true }, { "kn007.net", true }, @@ -18897,6 +19819,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kncg.pw", true }, { "kndkv.com", true }, { "kneblinghausen.de", true }, + { "knechtology.com", true }, { "knegten-agilis.com", true }, { "knep.me", true }, { "knetterbak.nl", true }, @@ -18905,8 +19828,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kngk.org", true }, { "kniga.market", false }, { "knight-industries.org", true }, + { "knightsblog.de", true }, { "knightsbridge.net", true }, - { "knightsbridgegroup.org", true }, { "knightsbridgewine.com", true }, { "knip.ch", true }, { "knispel-online.de", true }, @@ -18918,7 +19841,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "knot-store.com", true }, { "knowarth.com", true }, { "knowledgeforce.com", true }, - { "knowledgehook.com", true }, { "knowlevillagecc.co.uk", true }, { "knthost.com", true }, { "knuckles.tk", true }, @@ -18933,7 +19855,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kobezda.net", true }, { "kobofarm.com", true }, { "koboldcraft.ch", true }, - { "kobolya.hu", true }, { "kocherev.org", true }, { "kochereva.com", true }, { "kochhar.net", true }, @@ -18951,6 +19872,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "koelnmafia.de", true }, { "koenen-bau.de", true }, { "koenigsbrunner-tafel.de", true }, + { "koenleemans.nl", false }, { "koerper-wie-seele.de", false }, { "koerperkult.ch", true }, { "koertner-muth.com", true }, @@ -18977,8 +19899,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kokensupport.com", true }, { "koketteriet.se", true }, { "kokoiroworks.com", true }, + { "kokona.ch", true }, { "kokumoto.com", true }, - { "kolbeck.tk", true }, + { "kolania.com", true }, + { "kolania.de", true }, + { "kolania.net", true }, { "kolbeinsson.se", true }, { "kolcsey.eu", true }, { "koldanews.com", true }, @@ -18991,11 +19916,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kolmann.at", true }, { "kolmann.eu", true }, { "kolonie-am-stadtpark.de", true }, + { "kolorbon.com", true }, { "kolpingsfamilie-vechta-maria-frieden.de", true }, { "koluke.co", true }, { "koluke.com", true }, { "komandakovalchuk.com", false }, + { "kombidorango.com.br", true }, { "komelin.com", true }, + { "komenamanda.de", true }, { "komicloud.com", true }, { "komidoc.com", true }, { "komiksbaza.pl", true }, @@ -19016,7 +19944,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "koniecfica.sk", true }, { "konijntjes.nl", true }, { "konings.it", true }, - { "koningskwartiertje.nl", true }, { "koninkrijk.net", true }, { "konklone.com", true }, { "konoe.studio", true }, @@ -19050,7 +19977,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "korea.dating", true }, { "koreaboo.com", true }, { "koretech.nl", true }, - { "korinar.com", true }, { "korobi.io", true }, { "korobkovsky.ru", true }, { "korono.de", true }, @@ -19076,16 +20002,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kotilinkki.fi", true }, { "kotitesti.fi", true }, { "kotly-marten.com.ua", true }, + { "kotobox.net", true }, { "kotois.com", true }, - { "kotomei.moe", true }, { "kotonoha.cafe", true }, { "kotori.love", true }, + { "kottur.is", true }, { "kouki-food.com", true }, { "koumuwin.com", true }, { "koushinjo.org", true }, { "kov.space", true }, { "koval.io", true }, { "kovaldo.ru", true }, + { "kovals.sk", true }, { "kovehitus.ee", true }, { "kovnsk.net", true }, { "kovspace.com", true }, @@ -19134,6 +20062,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "krausoft.hu", true }, { "krautomat.com", true }, { "kraynik.com", true }, + { "krazyboi.com", true }, { "krazykastles.co.uk", true }, { "krazykoolkastles.com", true }, { "krazyphotobooths.co.uk", true }, @@ -19143,34 +20072,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kreativstrecke.de", true }, { "kredigram.com", true }, { "kredit-abzocke.com", true }, + { "kredita.dk", true }, { "kreditkacs.cz", true }, { "kreen.org", true }, { "krehl.io", true }, { "kremalicious.com", true }, { "kretschmann.consulting", true }, { "kreuzpfadfinder.de", true }, + { "krey.is", true }, { "krfuli.com", true }, { "kriechel.de", true }, { "krinetzki.de", true }, { "kriptosec.com", true }, { "kris.click", true }, { "krise-chance.ch", true }, + { "krishnenduayur.org", true }, { "krishofer.com", true }, { "krislamoureux.com", true }, { "krismurray.co.uk", true }, { "krisstarkey.co.uk", true }, + { "kristenpaigejohnson.com", true }, { "kristiehill.com", true }, { "kristikala.nl", true }, - { "kristinbailey.com", true }, + { "kristinbailey.com", false }, + { "kristofba.ch", true }, { "kristofdv.be", true }, { "krizevci.info", true }, - { "krmeni.cz", true }, + { "krmeni.cz", false }, { "krokedil.se", true }, { "krokodent.de", true }, { "kromamoveis.com.br", true }, { "kromonos.net", true }, { "kronaw.it", true }, { "krony.de", true }, + { "kronych.cz", true }, { "kroon.email", true }, { "kropkait.pl", true }, { "kroy.io", true }, @@ -19188,11 +20123,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kry.no", true }, { "kry.se", true }, { "kryglik.com", true }, - { "kryha.io", true }, { "krypsys.com", true }, { "krypt.com", true }, { "kryptera.se", true }, { "kryptomodkingz.com", true }, + { "krytykawszystkiego.com", true }, + { "krytykawszystkiego.pl", true }, { "kryx.de", true }, { "ks-watch.de", true }, { "kschv-rdeck.de", true }, @@ -19201,6 +20137,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ksero.wroclaw.pl", true }, { "kshlm.in", true }, { "kspg.tv", true }, + { "kssk.de", true }, { "ksukelife.com", true }, { "kt-zoe.com", true }, { "ktbnetbank.com", true }, @@ -19218,11 +20155,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kubica.ch", true }, { "kubierecki.pl", true }, { "kubik-rubik.de", false }, - { "kubiwa.net", true }, { "kubkprf.ru", true }, { "kublis.ch", true }, { "kuchentraum.eu", true }, { "kucnibudzet.com", true }, + { "kucukayvaz.com", true }, { "kudo.co.id", true }, { "kueche-co.de", true }, { "kuechenprofi-group.de", false }, @@ -19241,7 +20178,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kulde.net", true }, { "kulickovy-pojezd.cz", true }, { "kulivps.com", true }, - { "kum.com", true }, { "kuma.es", true }, { "kumachan.biz", true }, { "kumalog.com", true }, @@ -19250,7 +20186,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kungerkueken.de", true }, { "kunstdrucke-textildruck.de", true }, { "kunstfehler.at", true }, - { "kunstschule-krabax.de", true }, { "kunstundunrat.de", true }, { "kuoruan.com", true }, { "kupferstichshop.com", true }, @@ -19262,11 +20197,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kuponydoher.cz", true }, { "kupschke.net", true }, { "kurashino-mall.com", true }, + { "kuro.link", true }, { "kurofuku.me", true }, + { "kuroha.co.uk", true }, { "kuroinu.jp", true }, { "kurona.ga", true }, { "kuronekogaro.com", true }, { "kurrende.nrw", true }, + { "kurrietv.nl", true }, { "kurschies.de", true }, { "kurserne.dk", true }, { "kurswahl-online.de", true }, @@ -19283,9 +20221,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kutukupret.com", true }, { "kutus.ee", true }, { "kuzbass-pwl.ru", true }, + { "kuzdrowiu24.pl", true }, { "kvadratnimeter.si", true }, { "kvalita-1a.cz", true }, { "kvalitnitesneni.cz", true }, + { "kvantel.no", true }, { "kvcc.com.au", true }, { "kvetinymilt.cz", true }, { "kvhile.com", true }, @@ -19298,7 +20238,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kwcolville.com", true }, { "kwedo.com", true }, { "kwench.com", true }, - { "kwidz.fr", true }, + { "kwiknews.com", true }, { "kwmr.me", true }, { "kwok.cc", true }, { "kwyxz.org", true }, @@ -19319,11 +20259,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kyobostory-events.com", true }, { "kyoko.org", true }, { "kyosaku.org", true }, - { "kyoto-k9.com", true }, { "kyoto-mic.com", true }, { "kyoto-sake.net", true }, { "kyoto-tomikawa.jp", true }, - { "kyoto-tomoshibi.jp", true }, { "kyprexxo.com", true }, { "kyras-castles.co.uk", true }, { "kyunyuki.com", true }, @@ -19352,9 +20290,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "laassari.me", false }, { "laatikko.io", true }, { "laatjeniethackmaken.nl", true }, + { "laballoons.com", true }, { "labande-annonce.fr", true }, { "labcoat.jp", true }, - { "labms.com.au", true }, { "labobooks.com", true }, { "laboitebio-logique.ca", true }, { "labortogether.com", true }, @@ -19363,7 +20301,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "laboutiquedejuliette.com", true }, { "laboxfaitsoncinema.com", true }, { "labradorpuppiesforsalebyregisteredlabradorbreeders.com", false }, - { "labrat.mobi", true }, + { "labrat.mobi", false }, + { "labspack.com", true }, { "labtest.ltd", true }, { "lacantine.xyz", true }, { "lacaserita.org", true }, @@ -19384,6 +20323,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "laclefdor.ch", true }, { "lacliniquefinanciere.com", true }, { "lacoast.gov", true }, + { "lacocinadelila.com", true }, { "lacoquette.gr", true }, { "lacyc3.eu", true }, { "ladbroke.net", true }, @@ -19393,10 +20333,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lady-2.jp", true }, { "ladyanna.de", true }, { "ladybugjam.com", true }, + { "laeso.es", true }, { "laextra.mx", true }, { "lafayette-rushford.com", true }, { "lafcheta.info", true }, { "lafeemam.fr", true }, + { "lafema.de", true }, { "lafillepolyvalente.ca", true }, { "lafillepolyvalente.com", true }, { "lafka.org", true }, @@ -19409,7 +20351,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lagerauftrag.info", true }, { "lagit.in", true }, { "laglab.org", false }, - { "lagodny.eu", false }, + { "lagodny.eu", true }, { "lagout.org", true }, { "lagriffeduservice.fr", true }, { "laguiadelvaron.com", true }, @@ -19422,7 +20364,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "laindonleisure.co.uk", true }, { "lak-berlin.de", true }, { "lakarwebb.se", true }, - { "lakatrop.com", true }, { "lakedavid.com.au", true }, { "lakehavasucityhomebuyerscredit.com", true }, { "lakehavasucitynews.com", true }, @@ -19440,7 +20381,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lakesherwoodlighting.com", true }, { "lakesherwoodoutdoorlighting.com", true }, { "lakeshowlife.com", true }, - { "lakewoodcomputerservices.com", true }, + { "lakhesis.net", true }, { "lakonia.com.br", true }, { "lalalab.com", true }, { "lalaya.fr", true }, @@ -19450,6 +20391,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lalyre-corcelles.ch", true }, { "lamaisondelatransformationculturelle.com", true }, { "lamakat.de", true }, + { "lamanwebinfo.com", true }, { "lamapoll.de", true }, { "lamarieealhonneur.com", false }, { "lambauer.com", true }, @@ -19461,25 +20403,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lamikvah.org", true }, { "laminine.info", true }, { "lamp.re", false }, + { "lamp24.se", true }, + { "lampade.it", true }, + { "lampara.es", true }, { "lampegiganten.dk", true }, { "lampegiganten.no", true }, { "lampen24.be", true }, + { "lampen24.nl", true }, { "lampenwelt.at", true }, { "lampenwelt.ch", true }, + { "lampenwelt.de", true }, { "lampposthomeschool.com", true }, - { "lana.swedbank.se", true }, + { "lampy.pl", true }, + { "lan.biz.tr", true }, + { "lanahallen.com", true }, { "lanbroa.eu", true }, { "lancashirecca.org.uk", true }, { "lancejames.com", true }, { "lancelafontaine.com", true }, { "lanceyip.com", true }, + { "lancork.net", true }, { "lancyvbc.ch", true }, { "land.nrw", false }, { "landchecker.com.au", true }, { "landflair-magazin.de", true }, { "landhaus-christmann.de", true }, + { "landinfo.no", true }, + { "landlordy.com", true }, { "landofelves.net", true }, { "landrovermerriamparts.com", true }, + { "landscape-photography.org", true }, { "landscapelightingagoura.com", true }, { "landscapelightingagourahills.com", true }, { "landscapelightingcalabasas.com", true }, @@ -19496,16 +20449,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "landscapelightingsimivalley.com", true }, { "landscapelightingthousandoaks.com", true }, { "landscapelightingwestlakevillage.com", true }, + { "landscapephotography.org.au", true }, { "landyparts.nl", true }, { "lanetix.com", true }, { "lanforalla.se", true }, { "lang-php.com", true }, - { "langatang.com", true }, { "langbein.org", true }, { "langguth.io", true }, { "langkahteduh.com", true }, { "langkawitrip.com", true }, + { "langotie.com.br", true }, { "langstreckensaufen.de", true }, + { "languagecourse.net", true }, { "languageterminal.com", true }, { "langworth.com", true }, { "langzijn.nl", true }, @@ -19530,7 +20485,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "laparoscopia.com.mx", true }, { "lapassiondutrading.com", true }, { "laperfumista.es", true }, - { "lapetition.be", true }, { "lapidge.net", true }, { "lapix.com.co", true }, { "laplacesicherheit.de", true }, @@ -19538,12 +20492,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lapolla.com", true }, { "lapotagere.ch", true }, { "lapparente-aise.ch", true }, + { "lappari.com", true }, + { "lara.photography", true }, { "laracode.eu", true }, { "laraeph.com", true }, { "laraigneedusoir.com", true }, { "laranara.se", true }, { "laranjada.org", true }, { "laraveldirectory.com", true }, + { "laravelsaas.com", true }, { "larbertbaptist.org", true }, { "lareclame.fr", true }, { "larepublicacultural.es", true }, @@ -19551,9 +20508,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "largeviewer.com", true }, { "lariposte.org", true }, { "lariscus.eu", true }, + { "larky.top", true }, { "larondinedisinfestazione.com", true }, { "larptreff.de", true }, { "larraz.es", true }, + { "larryli.cn", true }, { "larrysalibra.com", true }, { "lars-ewald.com", true }, { "lars-mense.de", true }, @@ -19562,7 +20521,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "larsbauer.xyz", true }, { "larsklene.nl", true }, { "larsklint.com", true }, - { "larsmerke.de", true }, { "laruga.co.uk", true }, { "lasalle.wa.edu.au", true }, { "lasarmas.com", true }, @@ -19591,14 +20549,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lastweekinaws.com", true }, { "lasuzefc.fr", true }, { "lat.sk", true }, - { "latabledebry.be", true }, { "latabledemontebello.com", true }, { "late.am", true }, { "latecnosfera.com", true }, + { "latedeals.co.uk", true }, { "latemodern.com", true }, { "latenitefilms.com", false }, { "lateral.dog", true }, { "lateralsecurity.com", true }, + { "latestbuy.com.au", true }, { "latestdeals.co.uk", true }, { "latiendadelbebefeliz.com", true }, { "latiendauno.com", true }, @@ -19607,7 +20566,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "latinphone.com", true }, { "latintoy.com", true }, { "latitudesign.com", true }, - { "latour-managedcare.ch", true }, { "latremebunda.com", true }, { "latrine.cz", true }, { "latterdaybride.com", true }, @@ -19631,6 +20589,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lauraofrank.com", true }, { "laurasplacefamilysupport.org.au", true }, { "laurelblack.com", true }, + { "laurenceplouffe.com", true }, { "laurenlobue.com", true }, { "lauriemilne.com", true }, { "lauriuc.sk", true }, @@ -19640,7 +20599,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "laut.digital", true }, { "lauxzahnheilkunde.de", true }, { "lauzon-hitter.com", true }, - { "lavabit.no", true }, { "lavalite.de", true }, { "lavamob.com", true }, { "lavanderia.roma.it", true }, @@ -19649,6 +20607,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lavenderx.org", true }, { "laviedalex.ovh", true }, { "lavinya.net", true }, + { "lavishlooksstudio.com.au", true }, { "lavita.de", true }, { "lavitrine-une-collection.be", true }, { "lavoieducoeur.be", true }, @@ -19660,7 +20619,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lawformt.com", true }, { "lawn-seeds.com", true }, { "lawnuk.com", true }, - { "lawrence-institute.com", true }, { "lawrenceberg.nl", true }, { "lawrencemurgatroyd.com", true }, { "lawyerkf.com", true }, @@ -19668,7 +20626,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "laylo.io", true }, { "laylo.nl", true }, { "layoutsatzunddruck.de", true }, - { "lazapateriahandmade.pe", true }, { "lazowik.pl", true }, { "lazurit.com", true }, { "lazyboston.com", true }, @@ -19683,8 +20640,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lbls.me", true }, { "lbphacker.pw", true }, { "lbs-logics.com", true }, + { "lbsi-nordwest.de", true }, { "lbux.org", true }, - { "lc-cs.com", true }, + { "lc-cs.com", false }, + { "lc-promiss.de", true }, { "lca-pv.de", true }, { "lca.gov", true }, { "lcars-sv.info", true }, @@ -19699,8 +20658,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lcybox.com", true }, { "ld-begunjscica.si", true }, { "ldc.com.br", false }, - { "ldcraft.pw", true }, { "ldjb.jp", true }, + { "ldsun.com", true }, { "le-bar.org", true }, { "le-blog.ch", true }, { "le-controle-parental.fr", true }, @@ -19719,14 +20678,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "leadbox.cz", true }, { "leaderoftheresistance.com", false }, { "leaderoftheresistance.net", false }, - { "leadgenie.me", true }, { "leadinfo.com", true }, { "leadingsalons.com", true }, { "leadquest.nl", true }, + { "leadstart.org", true }, { "leafandseed.co.uk", true }, { "leafans.tk", true }, { "leafinote.com", true }, { "leakforums.net", true }, + { "leamsigc.com", true }, { "leandre.cn", true }, { "leanplando.com", true }, { "leap-it.be", true }, @@ -19736,14 +20696,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "learning-id.com", true }, { "learningis1.st", true }, { "learninglaw.com", true }, + { "learningman.top", true }, { "learnpianogreece.com", true }, { "learnplayground.com", true }, + { "learntale.com", true }, { "learntube.cz", true }, { "leaseit24.com", true }, { "leaseit24.de", true }, { "leasit.at", true }, { "leasit.de", true }, { "leastsignificantbit.de", true }, + { "leatam.fr", true }, { "leatherfurnitureexpo.com", true }, { "leatherwood.nl", true }, { "leavesofchangeweekly.org", true }, @@ -19756,7 +20719,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lebensraum-im-garten.de", true }, { "lebihan.pl", true }, { "leblanc.io", true }, - { "lebosse.me", true }, { "lebourgeo.is", true }, { "lechaudrondupertuis.ch", true }, { "leclaire.com.br", true }, @@ -19766,6 +20728,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ledecologie.com.br", true }, { "ledeguisement.com", true }, { "lederer-it.com", true }, + { "ledlight.com", true }, { "ledscontato.com.br", true }, { "ledzom.ru", false }, { "lee-fuller.co.uk", true }, @@ -19773,8 +20736,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "leebiblestudycenter.com", true }, { "leebiblestudycentre.co.uk", true }, { "leebiblestudycentre.com", true }, - { "leech360.com", true }, - { "leeclemens.net", true }, + { "leech360.com", false }, + { "leeclemens.net", false }, { "leedev.org", true }, { "leelaylay.com", true }, { "leere.me", true }, @@ -19786,6 +20749,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "leetcode.net", true }, { "leetgamers.asia", true }, { "leevealdc.com", true }, + { "lefcoaching.nl", true }, { "lefebvristes.com", true }, { "lefebvristes.fr", true }, { "leflibustier.ru", true }, @@ -19796,7 +20760,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "legacy.bank", true }, { "legadental.com", true }, { "legaillart.fr", true }, - { "legalcontrol.info", true }, { "legalinmotion.es", true }, { "legalrobot.com", true }, { "legatofmrc.fr", true }, @@ -19812,6 +20775,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "legjobblogo.hu", true }, { "legland.fr", true }, { "legoutdesplantes.be", true }, + { "legrandvtc.fr", true }, { "legumefederation.org", true }, { "legumeinfo.org", true }, { "lehighmathcircle.org", true }, @@ -19819,6 +20783,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "leibniz-remscheid.de", false }, { "leideninternationalreview.com", true }, { "leigh.life", true }, + { "leilautourdumon.de", true }, { "leilonorte.com", true }, { "leiming.co", true }, { "leinfelder.in", true }, @@ -19839,11 +20804,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lemondrops.xyz", true }, { "lemonop.com", true }, { "lemonparty.co", true }, + { "lemonthy.ca", true }, + { "lemonthy.com", true }, { "lemouillour.fr", true }, { "lemuslimpost.com", true }, { "lenagroben.de", true }, { "lenaneva.ru", true }, { "lence.net", true }, + { "lendingclub.com", true }, + { "lenget.com", true }, { "lenguajedeprogramacion.com", true }, { "lengzzz.com", true }, { "lenidh.de", true }, @@ -19869,12 +20838,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "leon.net", true }, { "leonauto.de", true }, { "leonax.net", true }, + { "leonbuitendam.nl", true }, { "leondenard.com", true }, { "leonhooijer.nl", false }, { "leonklingele.de", true }, { "leowkahman.com", true }, { "lep.gov", true }, { "lepenetapeti.com", true }, + { "lepidum.jp", true }, { "leponton-lorient.fr", true }, { "leppis-it.de", true }, { "leprado.com", true }, @@ -19896,14 +20867,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lesancheslibres.fr", true }, { "lesarts.com", true }, { "lesberger.ch", true }, - { "lesbiansslaves.com", true }, - { "lesbofight.com", true }, + { "lesconteursavis.org", true }, { "leseditionsbraquage.com", true }, + { "lesfilmsavivre.com", true }, { "lesgoodnews.fr", true }, { "lesharris.com", true }, { "leshervelines.com", true }, { "lesjardinsdemathieu.net", true }, - { "lesjardinsdubanchet.fr", true }, { "lesmamy.ch", true }, { "lesmontagne.net", true }, { "lesnet.co.uk", true }, @@ -19917,8 +20887,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lesterchan.net", true }, { "lesterrassesdusoleil.ch", true }, { "lesyndicat.info", true }, - { "let-go.cc", true }, { "letemps.ch", true }, + { "letraba.com", true }, { "lets-bounce.com", true }, { "lets-go-acoustic.de", true }, { "lets-ktai.jp", true }, @@ -19971,20 +20941,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lezard-com.fr", true }, { "lfashion.eu", true }, { "lfgss.com", true }, + { "lfklzw.com", true }, { "lfrconseil.com", true }, { "lgbt.io", true }, { "lgbt.ventures", true }, - { "lgbtqventures.com", true }, { "lgbtventures.com", true }, { "lghfinancialstrategy.ch", true }, { "lgpecasoriginais.com.br", true }, { "lhajn.cz", true }, { "lhakustik.se", true }, + { "lhalbert.xyz", true }, { "lhconsult.tk", false }, { "lhost.su", true }, { "li-ke.co.jp", true }, { "li.search.yahoo.com", false }, { "liam-w.io", true }, + { "liamelliott.me", true }, + { "liamlin.me", true }, { "lian-in.com", true }, { "lian-in.net", true }, { "liang-li88.com", true }, @@ -19995,7 +20968,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lianye4.cc", true }, { "lianye5.cc", true }, { "lianye6.cc", true }, - { "liautard.fr", true }, { "lib64.net", true }, { "libbitcoin.org", true }, { "libble.eu", true }, @@ -20004,6 +20976,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "libgame.com", true }, { "libmpq.org", true }, { "libnull.com", true }, + { "libra.com", true }, { "library-quest.com", true }, { "libraryextension.com", true }, { "libraryfreedomproject.org", false }, @@ -20029,7 +21002,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lichtspot.de", true }, { "lichttechnik-tumler.com", true }, { "lichttraeumer.de", true }, - { "lickmypussy.us", true }, { "lickthesalt.com", true }, { "lidavidm.me", true }, { "lidel.org", true }, @@ -20052,16 +21024,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lieuu.com", true }, { "lifanov.com", true }, { "life-emotions.pt", true }, + { "lifeartstudios.net", true }, { "lifebetweenlives.com.au", true }, { "lifecism.com", true }, - { "lifecoach.tw", false }, { "lifegrip.com.au", true }, { "lifeinhex.com", true }, { "lifeinsurancepro.org", true }, { "lifekiss.ru", true }, { "lifematenutrition.com", true }, { "lifemstyle.com", true }, - { "lifenexto.com", true }, { "lifeqa.net", true }, { "lifequotes-uk.co.uk", true }, { "lifesafety.com.br", true }, @@ -20073,6 +21044,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "light-up.xyz", true }, { "light.mail.ru", true }, { "lightbox.co", true }, + { "lightdark.xyz", true }, + { "lightdream.tech", true }, { "lighthouseinstruments.com", true }, { "lighting-centres.co.uk", true }, { "lightingagoura.com", true }, @@ -20095,10 +21068,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lightning.engineering", true }, { "lightpics.net", true }, { "lights.co.uk", true }, + { "lights.ie", true }, + { "lightscale.com", true }, + { "lightsheep.no", true }, { "lightspeed.com", false }, { "lightspeedta.co", true }, { "lighttp.com", true }, { "lightupcollective.co.uk", true }, + { "lignite.com", true }, { "lignoma.com", true }, { "ligonier.com", true }, { "lihaul.dnsalias.net", true }, @@ -20107,13 +21084,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "likc.me", true }, { "likeablehub.com", true }, { "likeabox.de", true }, + { "likebee.gr", true }, { "likegeeks.com", true }, { "likehifi.de", true }, { "likemovies.de", true }, { "likenewhearing.com.au", true }, { "likere.com", true }, + { "likesforinsta.com", true }, + { "likui.me", true }, { "lilaccakeboutique.com", true }, - { "liliang13.com", true }, { "lillepuu.com", true }, { "lily-bearing.com", true }, { "lily-inn.com", true }, @@ -20125,6 +21104,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "limberg.me", true }, { "limbo.services", true }, { "limeburst.net", true }, + { "limelabs.de", true }, + { "limelabs.io", true }, { "limeres.com", true }, { "limereslaw.com", true }, { "limitededitioncomputers.com", true }, @@ -20143,15 +21124,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lincolnfinewines.com", true }, { "lincolnsfh.com", true }, { "lincolnwayflorist.com", true }, - { "lincsbouncycastlehire.co.uk", true }, { "lindalap.fi", true }, { "lindemann.space", true }, { "linden.me", true }, { "lindeskar.se", true }, + { "lindholmen.club", true }, { "lindnerhof-taktik.de", true }, { "lindo.ru", true }, { "lindon.pw", true }, { "lindsayanderson.com", true }, + { "lindsaygorski.com", true }, { "lindskogen.se", true }, { "lindy.co", false }, { "line.biz", true }, @@ -20166,6 +21148,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lingeriesilhouette.com", true }, { "lingotaxi.com", true }, { "linguamilla.com", true }, + { "linguatrip.com", false }, { "lingvo-svoboda.ru", true }, { "linherest.tk", true }, { "link-sanitizer.com", true }, @@ -20173,6 +21156,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "linkat4.cz", true }, { "linkdr.uk", true }, { "linkedinbackground.com", true }, + { "linkedpipes.com", true }, { "linkenheil.org", true }, { "linklocker.co", true }, { "linkmaker.co.uk", true }, @@ -20186,19 +21170,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "linkycat.com", true }, { "linode.com", false }, { "linost.com", true }, - { "linostassi.net", true }, { "linqhost.nl", true }, { "linss.com", true }, { "lintmx.com", true }, { "linusdrop.tips", true }, + { "linux-audit.com", true }, { "linux-florida.com", true }, { "linux-mint-czech.cz", true }, { "linux-vme.org", true }, - { "linux.army", true }, { "linux.cn", true }, { "linux.conf.au", true }, { "linux.fi", true }, { "linux.im", true }, + { "linux.pizza", true }, { "linux3.org", true }, { "linuxbabe.com", true }, { "linuxbierwanderung.com", true }, @@ -20212,22 +21196,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "linuxlounge.net", true }, { "linuxos.org", true }, { "linuxproperties.com", true }, + { "linuxsecurity.expert", true }, { "linx.li", true }, { "linx.net", true }, { "linzgau.de", true }, { "linzyjx.com", true }, { "lionhosting.nl", true }, + { "lionlyrics.com", true }, { "lionsdeal.com", true }, { "lipartydepot.com", true }, { "lipex.com", true }, - { "lipo.lol", true }, { "lipoabaltimore.org", true }, { "liqd.net", true }, { "liquid.cz", true }, { "liquidhost.co", true }, { "liquidinternet.co", true }, { "liquidradio.pro", true }, - { "liquidwarp.net", true }, + { "liquipedia.net", true }, { "lirion.de", true }, { "liris-beautywelt.de", true }, { "lirlandais.ch", true }, @@ -20237,8 +21222,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lisburnhottubnbounce.co.uk", true }, { "lisieuxarquitetura.com.br", true }, { "liskgdt.net", true }, + { "lisky.ru", true }, { "lislan.org.uk", true }, - { "lisowski-development.com", true }, + { "lisowski-development.com", false }, { "listahu.org", true }, { "listekdo.fr", true }, { "listen.dk", true }, @@ -20258,6 +21244,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "litsovet.com", true }, { "little-cake.com", true }, { "littlebestfriend.de", true }, + { "littleboutiqueshop.co.uk", true }, + { "littleboutiqueshop.com", true }, + { "littleboutiqueshop.uk", true }, { "littlefairy.no", true }, { "littlefamilyadventure.com", true }, { "littlegreece.ae", true }, @@ -20266,10 +21255,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "littlepigcreek.com.au", true }, { "littlepincha.fr", true }, { "littleprincessandmascotparties.co.uk", true }, + { "littleqiu.net", true }, { "littleredsbakeshop.com", true }, - { "littlericket.me", true }, + { "littlericket.me", false }, { "littlescallywagsplay.co.uk", true }, - { "littleskin.cn", true }, { "littleswitch.co.jp", true }, { "littlewatcher.com", true }, { "litvideoserver.de", true }, @@ -20280,8 +21269,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "liufengyu.cn", true }, { "liul.in", true }, { "liupeicheng.top", true }, + { "liushuyu.tk", true }, { "liv3d.stream", true }, { "live4k.media", false }, + { "livebandphotos.com", true }, { "livebetterwith.com", true }, { "livebythesun.de", true }, { "livecards.co.uk", true }, @@ -20292,7 +21283,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "livedesign24.de", true }, { "liveflightapp.com", true }, { "liveforspeed.se", true }, - { "livejasmin.dk", true }, { "livekaarten.be", true }, { "livekaarten.nl", true }, { "livekarten.at", true }, @@ -20310,9 +21300,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "livepath.ch", true }, { "liveperformersmeeting.net", true }, { "liveregistratie.nl", true }, - { "livesearch-fukuoka.com", true }, + { "liverider.co.jp", true }, { "livesheep.com", true }, { "livesure.com", true }, + { "livetoride.co.za", true }, { "livetube.tv", true }, { "livi.co", true }, { "living-space.co.nz", true }, @@ -20325,7 +21316,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "livolett.de", true }, { "livrariacoad.com.br", true }, { "livroseuniformes.com.br", true }, - { "lixiaojiang.ga", true }, { "lixtick.com", true }, { "liyin.date", true }, { "liyinjia.com", true }, @@ -20340,10 +21330,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lknw.de", true }, { "lkp111138.me", true }, { "llamacuba.com", true }, + { "ller.xyz", true }, { "llm-guide.com", true }, { "lloyd-day.me", true }, { "lm-pumpen.de", false }, - { "lmcm.io", true }, { "lmddgtfy.net", true }, { "lmerza.com", true }, { "lmintlcx.com", true }, @@ -20354,10 +21344,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lnhequipmentltd.com", true }, { "lntu.org", true }, { "lnx.li", true }, + { "lnyltx.cn", true }, { "load-ev.de", true }, { "loadlow.me", true }, + { "loadtraining.com", true }, { "loadwallet.com", true }, - { "loafhead.me", true }, { "loanaway.ca", true }, { "loancompare.co.za", true }, { "loandolphin.com.au", true }, @@ -20365,6 +21356,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lob-staging.com", true }, { "lob.com", true }, { "lobivia.de", true }, + { "lobosdomain.hopto.org", true }, { "lobsangstudio.com", true }, { "lobstr.co", true }, { "local360.net", true }, @@ -20373,38 +21365,58 @@ static const nsSTSPreload kSTSPreloadList[] = { { "localblitz.com", true }, { "localblock.co.za", true }, { "localbouncycastle.com", true }, - { "localdata.us", true }, { "localdecor.com.br", true }, { "localethereum.com", true }, { "localhorst.duckdns.org", true }, - { "localhorst.xyz", false }, + { "localhorst.xyz", true }, { "localhost.ee", true }, + { "localprideart.com", true }, { "localspot.pl", true }, { "locapos.com", true }, { "locationvoitureallemagne.com", true }, { "locationvoitureangleterre.com", true }, { "locationvoitureaustralie.com", true }, { "locationvoiturebelgique.com", true }, - { "locationvoiturecorse.net", true }, { "locationvoitureespagne.com", true }, { "locationvoitureitalie.com", true }, { "locationvoitureportugal.com", true }, { "locatorplus.gov", true }, { "locauxrama.fr", true }, - { "locker.email", true }, + { "locker.email", false }, { "locker.plus", true }, { "lockify.com", true }, { "lockpick.nl", true }, { "lockpicks.se", true }, { "lockr.io", true }, + { "locksmith-durbannorth.co.za", true }, + { "locksmith-sanantonio-tx.com", true }, { "locksmithbalchsprings.com", true }, + { "locksmithballito.com", true }, + { "locksmithbluff.co.za", true }, + { "locksmithdearborn.com", true }, + { "locksmithedmonds.com", true }, { "locksmithgarland-tx.com", true }, { "locksmithgrapevinetx.com", true }, + { "locksmithhillcrest.co.za", true }, + { "locksmithindurban.co.za", true }, + { "locksmithlivoniami.com", true }, + { "locksmithmadisonheights.com", true }, { "locksmithmesquitetx.com", true }, + { "locksmithmissouricity.com", true }, + { "locksmithopen.com", true }, + { "locksmithsammamishwa.com", true }, + { "locksmithsanantoniotexas.com", true }, + { "locksmithsbluff.com", true }, + { "locksmithscottsdaleaz.com", true }, + { "locksmithseattleco.com", true }, + { "locksmithservice-houston.com", true }, { "locksmithspring.com", true }, + { "locksmithspringtx.com", true }, + { "locksmithswestville.com", true }, { "locksmiththewoodlands.com", true }, { "locomore.com", true }, { "locomotionds.com", true }, + { "locurimunca.co", true }, { "lodash.com", false }, { "loddeke.eu", true }, { "lodewijkict.nl", true }, @@ -20421,12 +21433,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "logement.com", true }, { "logentries.com", false }, { "logexplorer.net", true }, + { "logfile.at", true }, + { "logfro.de", true }, { "logicchen.com", true }, { "logiciel-entreprise-seurann.fr", true }, { "logicio.ch", false }, { "logicio.de", false }, { "logicio.net", false }, { "logicne-hise.si", true }, + { "logicz.top", true }, { "login.corp.google.com", true }, { "login.gov", false }, { "login.launchpad.net", true }, @@ -20450,17 +21465,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "logue.be", true }, { "logze.nl", true }, { "lohanaflores.com.br", true }, + { "lohmeier.it", true }, { "loichot.ch", true }, + { "loigiai.net", true }, + { "loihay.net", true }, { "lojadamimo.com.br", true }, { "lojadanidrea.com.br", true }, { "lojadarenda.com.br", true }, { "lojadewhisky.com.br", true }, { "lojadoarcomprimido.com.br", true }, - { "lojadoprazer.com.br", true }, { "lojadosomautomotivo.com.br", true }, { "lojafazendoarte.com.br", true }, { "lojafilipaper.com.br", true }, - { "lojahunamarcenaria.com.br", true }, { "lojamagicalx.com", true }, { "lojamascate.com.br", true }, { "lojamoleco.com.br", true }, @@ -20484,10 +21500,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "loli.net", true }, { "loli.pet", true }, { "loli.ski", true }, + { "loli.tube", true }, { "loli.world", true }, { "lolibrary.org", true }, { "lolicon.eu", true }, - { "lolis.stream", true }, { "lolkot.ru", true }, { "lolnames.gg", true }, { "lolpatrol.de", true }, @@ -20497,22 +21513,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lommyfleet.com", true }, { "lon-so.com", true }, { "lona.io", true }, - { "lonal.com", true }, - { "lonasdigital.com", true }, { "london-transfers.com", true }, { "london.dating", true }, { "londongallery.net", true }, { "londongynaecologist.co", true }, - { "londonkan.jp", true }, { "londonkeyholdingcompany.co.uk", true }, { "lonelytweets.com", true }, { "lonesomecosmonaut.com", true }, + { "long-journey.com", true }, { "longhaircareforum.com", true }, { "longhorn-imports.com", true }, { "longhorn.id.au", true }, { "longma.pw", true }, { "longstride.net", true }, - { "longtaitouwang.com", true }, { "lonniec.com", true }, { "lonniemason.net", true }, { "look.co.il", true }, @@ -20545,16 +21558,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lorenadumitrascu.ro", true }, { "loreofthenorth.com", true }, { "loreofthenorth.nl", true }, + { "lorientlejour.com", true }, { "loritaboegl.de", true }, + { "lormansas.com", true }, { "losangelestown.com", true }, { "losless.fr", true }, + { "losrascadoresparagatos.com", true }, { "losreyesdeldescanso.com.ar", true }, { "lost.host", true }, { "lost.report", true }, { "lostkeys.co.uk", true }, { "lostserver.com", true }, - { "lostwithdan.com", true }, { "lothlorien.ca", false }, + { "lotl.ru", true }, { "lotn.mobi", true }, { "lotn.nl", true }, { "lotnonline.com", true }, @@ -20570,10 +21586,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "louisvillecarguys.com", true }, { "louisvillevmug.info", true }, { "loune.net", true }, + { "loungecafe.net", true }, + { "loungecafe.org", true }, { "love4taylor.me", true }, { "loveandadoreboutique.com", true }, + { "lovebigisland.com", true }, { "lovebo9.com", true }, { "lovebo9.net", true }, + { "lovecrystal.co.uk", true }, { "loveislandgames.com", true }, { "loveisourweapon.com", true }, { "lovelens.ch", false }, @@ -20585,7 +21605,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lovenwishes.com", true }, { "loveph.one", true }, { "lover-bg.com", true }, - { "loveread-ec.appspot.com", true }, { "loverepublic.ru", true }, { "lovesmagical.com", true }, { "lovesupremefestival.com", true }, @@ -20604,17 +21623,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lowson.ca", true }, { "loxal.net", true }, { "loxal.org", true }, + { "loyaltyondemand.club", true }, + { "loyaltyondemand.eu", true }, { "lp-support.nl", true }, - { "lpacademy.com.br", true }, { "lpt-nebreziny.eu", true }, { "lra-cloud.de", true }, - { "lrhstsa.com", true }, { "lrssystems.com", true }, { "ls-alarm.de", true }, { "lsal.me", true }, { "lsc-dillingen.de", true }, { "lsc.gov", true }, { "lshiy.com", true }, + { "lsmpx.com", true }, { "lsquo.com", true }, { "lsws.de", true }, { "lsys.ac", true }, @@ -20632,14 +21652,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lubomirkazakov.com", true }, { "luc-oberson.ch", true }, { "luca.swiss", true }, - { "lucacastelnuovo.nl", true }, + { "lucacastelnuovo.nl", false }, + { "lucafontana.net", true }, { "lucafrancesca.me", true }, { "lucakrebs.de", true }, { "lucasantarella.com", true }, + { "lucasbergen.ca", true }, + { "lucascobb.com", true }, { "lucasem.com", true }, + { "lucasgaland.com", true }, { "lucasgymnastics.com", true }, { "lucaslarson.net", true }, - { "lucassoler.com.ar", true }, { "luce.life", true }, { "luchscheider.de", false }, { "lucid-light.de", true }, @@ -20648,17 +21671,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lucidoccult.com", true }, { "lucielavickova.com", true }, { "luckycastles.co.uk", true }, - { "luckydog.pw", true }, { "luckyfrog.hk", true }, { "luckyxf.com", true }, { "lucy.science", true }, { "lucyparsonslabs.com", true }, - { "lucysan.net", true }, + { "lucz.co", true }, { "ludek.biz", true }, { "ludikovsky.name", true }, { "ludogue.net", true }, { "ludovic-muller.fr", true }, - { "ludum.pl", true }, { "ludwig.im", true }, { "ludwiggrill.de", true }, { "ludwigjohnson.se", true }, @@ -20679,11 +21700,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lugui.in", true }, { "lui.pink", true }, { "luiscapelo.info", true }, + { "luisgf.es", true }, { "luismaier.de", true }, { "luisyr.com", true }, { "luizkowalski.net", true }, { "luk.earth", true }, { "lukas-gorr.de", true }, + { "lukas-meixner.com", true }, { "lukas-oppermann.de", true }, { "lukas-schauer.de", true }, { "lukas.im", true }, @@ -20699,18 +21722,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lukaszwojcik.net", true }, { "lukatz.de", true }, { "luke.ch", true }, + { "luke6887.me", true }, { "lukeistschuld.de", true }, - { "lukem.eu", true }, { "lukem.net", true }, { "lukeng.net", true }, { "lukesbouncycastlehire.com", true }, { "lukestebbing.com", true }, + { "lukesutton.info", true }, { "lukmanulhakim.id", true }, { "lukull-pizza.de", true }, + { "lumen.sh", true }, { "lumi.pw", true }, { "lumiere.com", true }, + { "luminaire.fr", true }, { "luminaires-online.fr", true }, { "lumitop.com", true }, + { "lumminary.com", true }, { "lunafag.ru", true }, { "lunakit.org", true }, { "lunanova.moe", true }, @@ -20720,6 +21747,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lunarshark.com", true }, { "lunartail.nl", true }, { "lunasqu.ee", true }, + { "lunastrail.com", true }, { "lunchbunch.me", true }, { "lune-indigo.ch", true }, { "lungta.pro", true }, @@ -20727,13 +21755,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lunidea.com", true }, { "lunis.net", true }, { "lunix.io", true }, - { "lunorian.is", false }, + { "lunorian.is", true }, { "luoe.me", true }, { "luoh.cc", true }, { "luoh.me", true }, { "luohua.im", true }, { "luongvu.com", true }, + { "lupecode.com", true }, { "lupinencyclopedia.com", true }, + { "lupinenorthamerica.com", true }, + { "luqsus.pl", true }, { "luso-livros.net", true }, { "lusteniny.cz", false }, { "lustige-zitate.com", true }, @@ -20751,7 +21782,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "luuppi.fi", true }, { "luvare.com", true }, { "luvbridal.com.au", true }, + { "luxcraft.eng.br", true }, { "luxescreenprotector.nl", true }, + { "luxofit.de", true }, { "luxsci.com", true }, { "luxurynsight.net", true }, { "luxurytimepieces.net", true }, @@ -20762,14 +21795,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "luxwatch.com", true }, { "luyckx.net", true }, { "luzat.com", true }, - { "luzfaltex.com", true }, { "lv.search.yahoo.com", false }, { "lv0.it", true }, { "lv5.top", true }, { "lvmoo.com", true }, { "lvrsystems.com", true }, { "lw-addons.net", true }, - { "lwhate.com", true }, { "lwl.moe", true }, { "lwl12.com", true }, { "lxd.cc", true }, @@ -20784,7 +21815,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lynero.dk", true }, { "lyness.io", true }, { "lyngvaer.no", true }, - { "lynkos.com", true }, { "lynnlaytonnissanparts.com", true }, { "lynnmosher.com", true }, { "lynthium.com", true }, @@ -20798,14 +21828,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lyricfm.ie", true }, { "lys.ch", true }, { "lyst.co.uk", true }, + { "lyukaacom.ru", true }, { "lyuly.com", true }, { "lyx.dk", true }, - { "lz.sb", true }, { "lzh.one", true }, + { "lzwc.nl", true }, { "m-22.com", true }, { "m-chemical.com.hk", true }, { "m-edmondson.co.uk", true }, - { "m-idea.jp", true }, + { "m-gh.info", true }, { "m-kleinert.de", true }, { "m-mail.fr", true }, { "m-orthodontic.com", true }, @@ -20815,6 +21846,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "m.me", true }, { "m0t0k1ch1.com", true }, { "m132.eu", true }, + { "m134.eu", true }, { "m2epro.com", true }, { "m2os.com", true }, { "m4rcus.de", true }, @@ -20830,6 +21862,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mabankonline.com", true }, { "mabulledu.net", true }, { "mac-i-tea.ch", true }, + { "mac.biz.tr", true }, { "mac1.net", true }, { "macaw.nl", true }, { "macaws.org", true }, @@ -20864,8 +21897,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "macosxfilerecovery.com", true }, { "macoun.de", true }, { "macros.co.jp", true }, - { "macstore.pe", true }, { "mactools.com.co", true }, + { "mad.ninja", true }, { "madae.nl", true }, { "madars.org", false }, { "madbin.com", true }, @@ -20878,7 +21911,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "made-in-earth.co.jp", true }, { "madebydusk.com", true }, { "madebyshore.com", true }, - { "madeglobal.com", true }, { "madeinchezmoi.net", true }, { "madeinstudio3.com", true }, { "madeitwor.se", true }, @@ -20890,7 +21922,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "madirc.net", true }, { "madmar.ee", true }, { "madoka.nu", true }, - { "madokami.net", true }, { "madreacqua.org", true }, { "madridartcollection.com", true }, { "madtec.de", true }, @@ -20898,6 +21929,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mae-berlinistanbul.com", true }, { "maedchenflohmarkt.at", true }, { "maedchenflohmarkt.de", true }, + { "maeln.com", true }, { "maelstrom-fury.eu", true }, { "maelstrom.ninja", true }, { "maeplasticsurgery.com", true }, @@ -20918,6 +21950,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "magazin3513.com", true }, { "magazinedotreino.com.br", true }, { "magdic.eu", true }, + { "magebit.com", true }, { "magenda.sk", true }, { "magentaize.net", true }, { "magentapinkinteriors.co.uk", true }, @@ -20925,17 +21958,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "magewell.nl", true }, { "maggie.com", true }, { "magi-cake.com", true }, - { "magi.systems", true }, + { "magic-cards.info", true }, { "magical-secrets.com", true }, + { "magical.rocks", true }, { "magicalcircuslv.com", true }, { "magicbroccoli.de", true }, + { "magiccards.info", true }, { "magicdaysomagh.co.uk", true }, { "magickmoments.co.uk", true }, { "magiclen.org", true }, { "magicspaceninjapirates.de", true }, { "magictable.com", true }, { "magicvodi.at", true }, + { "magieamour.com", true }, { "magilio.com", true }, + { "magnacarebroker.com", true }, { "magnatronic.com.br", true }, { "magneticattraction.com.au", true }, { "magnetpass.uk", true }, @@ -20944,19 +21981,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "magnificentdata.com", true }, { "magnoliadoulas.com", true }, { "magnoliastrong.com", true }, + { "magnunbaterias.com.br", true }, { "magonote-nk.com", true }, + { "magosmedellin.com", true }, + { "magu.kz", true }, { "maguire.email", true }, { "magwin.co.uk", true }, { "mahai.me", true }, { "mahatmayoga.org", true }, { "mahefa.co.uk", true }, + { "mahjong-navi.com", true }, { "mahjong.org", true }, + { "mahjongrush.com", true }, { "mahrer.net", true }, { "maiaimobiliare.ro", true }, { "maidoty.net", true }, { "maiebanatulfruncea.com", true }, { "maijia800.com", true }, { "maikolfish.it", true }, + { "mail-de.jp", true }, { "mail-rotter.de", true }, { "mail-settings.google.com", true }, { "mail.com", true }, @@ -20974,9 +22017,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mailjet.tech", true }, { "maillady-susume.com", true }, { "mailmag.net", false }, - { "mailpenny.com", true }, { "mailto.space", true }, - { "mailum.org", true }, + { "mailum.org", false }, { "mainechiro.com", true }, { "mainframeserver.space", true }, { "mainlined.org", true }, @@ -20985,6 +22027,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mainzelmaennchen.net", true }, { "maioresemelhores.com", true }, { "maisgasolina.com", true }, + { "maison-haimard.fr", true }, { "maisondoree.be", true }, { "maisonpaulmier.fr", true }, { "maispa.com", true }, @@ -21002,19 +22045,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "majkassab.org", true }, { "majkl.me", true }, { "majkyto.cz", true }, + { "majolka.com", true }, { "makaleci.com", true }, + { "makalu.me", true }, { "make-your-own-song.com", true }, { "makeaboldmove.com", true }, { "makedin.net", true }, { "makem-bounce.co.uk", true }, - { "makemejob.com", true }, { "makenaiyo-fx.com", true }, { "makera.ga", true }, { "makersatwork.com", true }, { "maketheneighborsjealous.com", true }, { "makeurbiz.com", true }, - { "makeyourlaws.org", true }, - { "makinen.ru", true }, + { "maki-chan.de", true }, { "makino.games", true }, { "makkusu.photo", true }, { "makowitz.cz", true }, @@ -21027,6 +22070,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "malaysian.dating", true }, { "maldives.cx", true }, { "malenyflorist.com.au", true }, + { "maler-marschalleck.de", true }, { "malermeister-haussmann.de", true }, { "malesoowki.blog", true }, { "malezan.com", true }, @@ -21041,7 +22085,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "malinator.net", false }, { "malinheadview.ie", true }, { "maljaars-fotografie.nl", true }, - { "malkaso.com.ua", true }, { "mall.cz", true }, { "mall.hr", true }, { "mall.hu", true }, @@ -21049,49 +22092,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mall.sk", true }, { "mallach.net", true }, { "mallhonda.com", true }, - { "mallner.me", true }, { "mallonline.com.br", true }, { "malmoesport.se", true }, { "malnex.de", true }, { "malscan.com", true }, { "malscan.org", true }, { "malta-firma.com", true }, - { "malte-kiefer.de", true }, { "malufs.com.br", true }, + { "malware.watch", true }, { "malwareinvestigator.gov", true }, { "malwarekillers.com", true }, + { "malwaretips.com", false }, { "malwareverse.us", true }, { "maly.cz", true }, { "malyshata.com", true }, { "malysvet.net", true }, { "mamaasia.info", true }, { "mamadea.be", true }, - { "mamadoma.com.ua", true }, { "mamafit.club", true }, { "mamamoet.ru", true }, { "mamanecesitaungintonic.com", true }, { "mamiecouscous.com", true }, { "mammals.net", true }, { "mammaw.com", true }, - { "mammeitalianeavienna.com", true }, { "mammooc.org", true }, { "mamospienas.lt", true }, { "mamot.fr", false }, - { "mamout.xyz", true }, { "mamuko.nl", true }, - { "man3s.jp", true }, - { "manaboutahor.se", false }, + { "man3s.jp", false }, + { "mana.ee", true }, { "manach.net", true }, { "manage.cm", true }, { "manage4all.de", true }, { "manageathome.co.uk", true }, { "management-companie.ro", true }, - { "management-ethics.com", true }, { "managementboek.nl", true }, { "managementfeedback.com", true }, + { "managementforstartups.com", true }, { "manageprojects.com", false }, { "manager-efficacement.com", true }, { "manager.linode.com", false }, + { "managewp.org", true }, { "manatees.net", true }, { "manavgabhawala.com", true }, { "manawill.jp", true }, @@ -21103,6 +22144,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "manfredi.io", true }, { "manfredimatteo.com", true }, { "manfredschafer.ch", true }, + { "mangahigh.com", true }, { "mangapoi.com", true }, { "mangaristica.com", true }, { "manhattanchoralensemble.org", true }, @@ -21113,9 +22155,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "maniorpedi.com", true }, { "maniosglass.gr", true }, { "manipil.ch", true }, + { "maniw.com", true }, { "manja-und-martin.de", true }, { "manjaro.ru", true }, { "mankans.com", true }, + { "manmeetgill.com", true }, { "manneguiden.no", true }, { "mannheimbloggt.tk", true }, { "manns-solutions.co.uk", true }, @@ -21126,33 +22170,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "manowarus.com", true }, { "mansdell.net", true }, { "mansfeld.pl", true }, - { "mansiontech.cn", true }, + { "manski.net", true }, { "mantabiofuel.com", true }, { "mantor.org", false }, + { "mantra.pictures", true }, + { "manuall.co.uk", true }, { "manuall.de", true }, + { "manuall.fr", true }, { "manuall.info.tr", true }, + { "manuall.it", true }, { "manuall.ro", true }, + { "manuall.se", true }, { "manualscollection.com", true }, { "manuel-herrmann.de", true }, + { "manuel-schefczyk.de", true }, { "manuel7espejo.com", true }, { "manuelahidalgo.org", true }, { "manueldopheide.com", true }, { "manueli.de", true }, { "manuelpinto.in", false }, - { "manuelrueger.de", true }, { "manufacturing.gov", true }, { "manufacturingusa.com", true }, { "manuscript.com", true }, { "manuscriptlink.com", true }, { "manutd.org.np", true }, { "manuth.life", true }, - { "manutrol.com.br", true }, { "manwithavan.co.uk", true }, { "manyetikboya.com", true }, { "manyiu.com", true }, + { "manylots.ru", true }, { "manyue.org", true }, { "maoi.re", true }, - { "maomaobt.com", true }, { "maomihz.com", true }, { "maone.net", true }, { "maorseo.com", true }, @@ -21161,13 +22209,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "maozedong.red", true }, { "map4erfurt.de", true }, { "map4jena.de", true }, + { "mapasmundi.com.br", true }, { "mapblender.com", true }, { "mapeo.io", true }, { "maplanetebeaute.fr", true }, { "mapletime.com", true }, + { "maps.net", true }, { "mapservices.nl", true }, + { "mapstack.org", true }, { "maquettage.com", true }, - { "maquillage-permanent-tatoo.com", true }, { "maquinariaspesadas.org", true }, { "mar-eco.no", true }, { "marabumadrid.com", false }, @@ -21175,9 +22225,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "marble.com", true }, { "marbogardenlidkoping.se", true }, { "marc-hammer.de", true }, - { "marc-schlagenhauf.de", true }, - { "marcaixala.me", true }, { "marcaudefroy.com", true }, + { "marcbeije.com", true }, + { "marcberndtgen.de", true }, + { "marcceleiro.com", true }, { "marceau.ovh", true }, { "marcel-preuss.de", true }, { "marcel-veronetzki.de", true }, @@ -21187,28 +22238,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "marcelinofranchini.info", true }, { "marcelinofranchini.net", true }, { "marcelinofranchini.org", true }, + { "marcelkooiman.com", true }, { "marcelpreuss.de", true }, + { "marcelsiegert.com", true }, { "marcelwaldvogel.ch", true }, - { "marcelwiedemeier.com", true }, { "marcelwolf.coach", true }, { "marcgoertz.de", true }, { "marche-contre-monsanto.ch", true }, + { "marchukov.com", true }, + { "marchwj.pl", true }, { "marciaimportados.com.br", true }, - { "marcianoandtopazio.com", true }, { "marclay.co.uk", true }, { "marco-goltz.de", true }, { "marco-hegenberg.net", true }, - { "marco-kretz.de", true }, { "marco-polo-reisen.com", true }, { "marcocasoni.com", true }, { "marcohager.de", true }, { "marcoherten.com", true }, { "marcuskoh.com", true }, - { "marcusserver.synology.me", true }, { "marcusstafford.com", true }, { "marechal-company.com", true }, { "marek.su", true }, - { "mareklecian.cz", true }, { "marelijah.org", true }, { "margagriesser.de", true }, { "margan.ch", true }, @@ -21216,22 +22266,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "margo-co.ch", true }, { "margo.ml", true }, { "margotlondon.co.uk", true }, + { "marguerite-maison.fr", true }, + { "mariacorzo.com", true }, { "mariage-photo.ch", true }, { "marianatherapy.com", true }, { "marianelaisashi.com", true }, { "marianhoenscheid.de", true }, { "mariannenan.nl", true }, { "mariannethijssen.nl", true }, - { "mariaolesen.dk", true }, { "mariapietropola.com", true }, { "mariehane.com", true }, { "mariemiramont.fr", true }, { "mariereichl.cz", true }, + { "marijnfidder.nl", true }, { "marikafranke.de", true }, { "marilsnijders.nl", true }, { "marilynmartin.com.au", true }, { "marilynstreats.com", true }, { "marin-business-center.ch", true }, + { "marin-dom.ru", true }, { "marin-tullet.com", true }, { "marinazarza.es", true }, { "marinbusinesscenter.ch", true }, @@ -21249,14 +22302,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mariushubatschek.de", true }, { "mariviolin.com", true }, { "marix.ro", true }, + { "marjeta-gurtner.ch", true }, { "marjoleindens.be", true }, { "marjoriecarvalho.com.br", true }, + { "mark-dietzer.de", true }, { "mark-semmler.de", true }, + { "mark1998.com", true }, { "markaconnor.com", true }, + { "markandrosalind.co.uk", true }, { "markantoffice.com", true }, { "markbiesheuvel.nl", true }, { "markdain.net", true }, { "markdescande.com", true }, + { "markel.com.es", true }, { "markepps.com", true }, { "market.android.com", true }, { "marketespace.fr", false }, @@ -21266,15 +22324,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "marketing91.com", true }, { "marketingco.nl", true }, { "marketingconverts.com", true }, + { "marketingforfood.com", true }, { "marketinggenerators.nl", true }, { "marketingvirtuales.com", true }, - { "marketio.co", true }, { "marketizare.ro", true }, { "marketlinks.org", true }, { "marketnsight.com", true }, { "markhaehnel.de", true }, { "markhenrick.site", true }, { "markholden.guru", true }, + { "markhoodphoto.com", true }, { "markido.com", true }, { "markitzeroday.com", true }, { "markkirkforillinois.com", true }, @@ -21283,7 +22342,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "markoh.co.uk", true }, { "markom.rs", true }, { "markprof.ru", true }, - { "markri.nl", false }, + { "markri.nl", true }, + { "markridgwell.co.uk", true }, { "markridgwell.com", true }, { "markridgwellcom.appspot.com", true }, { "markscastles.co.uk", true }, @@ -21302,6 +22362,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "markus.design", true }, { "markusehrlicher.de", true }, { "markusgran.de", true }, + { "markuskeppeler.no-ip.biz", true }, { "marl.fr", true }, { "marloncommunications.com", true }, { "marlonlosurdopictures.com", true }, @@ -21321,7 +22382,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "marriage-shrine.jp", true }, { "marrickvilleapartments.com.au", true }, { "marsanvet.com", true }, - { "marsatapp.com", true }, { "marsble.com", true }, { "marseillekiteclub.com", true }, { "marshallscastles.com", true }, @@ -21339,6 +22399,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "martiestrimsalon.nl", true }, { "martijn.site", true }, { "martijnhielema.nl", true }, + { "martijnvanderzande.nl", true }, + { "martin-loewer.de", true }, { "martin-smith.info", true }, { "martin.vet", true }, { "martindimitrov.cz", true }, @@ -21366,14 +22428,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "maryeileen90.party", true }, { "maryjruggles.com", true }, { "marykatrinaphotography.com", true }, - { "masa-hou.com", true }, + { "marylandbasementandcrawlspacewaterproofing.com", true }, { "masarik.sh", true }, { "masatotaniguchi.jp", true }, { "masayahost.com", true }, - { "masaze-hanka.cz", true }, { "mascosolutions.com", true }, { "masdillah.com", true }, - { "maservant.net", true }, { "mashandco.it", true }, { "mashandco.tv", true }, { "masiniunelte.store.ro", true }, @@ -21391,6 +22451,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "massdrop.com", true }, { "masse.org", true }, { "massflix.com", true }, + { "massfone.com", true }, { "masshiro.blog", true }, { "massive.tk", true }, { "massoni.pl", true }, @@ -21401,7 +22462,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mastellone.us", true }, { "mastepinnelaand.nl", true }, { "master-net.org", true }, - { "masteragenasia.net", true }, { "mastercardpac.com", true }, { "masterdemolitioninc.com", true }, { "masterdigitale.com", true }, @@ -21417,7 +22477,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mastodon.at", true }, { "mastodon.host", true }, { "mastodon.rocks", true }, - { "mastodon.top", true }, { "mat.tt", true }, { "matanz.de", true }, { "matatabimix.com", true }, @@ -21426,6 +22485,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "matchatea24.com", true }, { "matchboxdesigngroup.com", true }, { "matchneedle.com", true }, + { "matdogs.com", true }, + { "matejgroma.com", true }, { "matel.org", true }, { "materiaischiquinho.com.br", true }, { "material-ui.com", true }, @@ -21433,17 +22494,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "materialism.com", true }, { "materialyinzynierskie.pl", true }, { "maternum.com", true }, + { "mateuszchyla.pl", true }, { "math.hamburg", true }, { "mathalexservice.info", true }, { "mathematik.rocks", true }, + { "mathematris.com", true }, { "mathembedded.com", true }, + { "matheo-schefczyk.de", true }, + { "mathfinder.org", true }, { "mathhire.org", true }, { "mathias.is", true }, { "mathiasbynens.be", true }, { "mathiasgarbe.de", true }, + { "mathiaswagner.org", true }, { "mathieuguimond.com", true }, - { "mathieui.net", true }, - { "mathis.com.tr", true }, { "maths.network", true }, { "mathsource.ga", true }, { "mathspace.co", true }, @@ -21451,9 +22515,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mathsweek.org.nz", true }, { "mathsweek.school.nz", true }, { "mathys.io", true }, + { "matildajaneclothing.com", true }, { "matjaz.it", true }, { "matlss.com", true }, { "matmessages.com", true }, + { "matok.me.uk", true }, + { "matome-surume.com", true }, { "matomeathena.com", true }, { "matoutepetiteboutique.com", true }, { "matridiana.com", true }, @@ -21463,7 +22530,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "matrixmedia.ro", true }, { "matrixreq.com", true }, { "matsu-semi.com", true }, - { "matt-brooks.com", true }, + { "matsu-walk.com", true }, { "matt-royal.gr", true }, { "matt.re", true }, { "mattandyana.com", true }, @@ -21480,8 +22547,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mattfin.ch", true }, { "mattforster.ca", true }, { "matthecat.com", true }, + { "matthewchapman.co.uk", true }, { "matthewfells.com", true }, { "matthewgallagher.co.uk", true }, + { "matthewj.ca", true }, { "matthewkenny.co.uk", true }, { "matthewohare.com", true }, { "matthewsetter.com", true }, @@ -21495,8 +22564,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "matthiasschwab.de", true }, { "matthieuschlosser.fr", true }, { "matthijssen.info", true }, - { "mattia98.org", true }, { "mattiascibien.net", true }, + { "mattlaks.com", true }, { "mattli.us", true }, { "mattmccutchen.net", true }, { "mattmcshane.com", true }, @@ -21509,8 +22578,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mauerwerkstag.info", true }, { "mauldincookfence.com", true }, { "mauran.me", true }, - { "maurice-walker.com", true }, + { "maurice-walker.com", false }, { "mauricedb.nl", true }, + { "maurovacca.com", true }, { "maury-moteurs.com", true }, { "mavenclinic.com", true }, { "mavensecurity.com", true }, @@ -21537,7 +22607,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "maxdev72.freeboxos.fr", true }, { "maxfox.me", true }, { "maxhamon.ovh", true }, - { "maxhoechtl.at", true }, { "maximdeboiserie.be", true }, { "maximdens.be", true }, { "maximeferon.fr", true }, @@ -21573,11 +22642,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mazda-mps.de", true }, { "mazda-thermote.com", true }, { "mazda626.net", true }, - { "maze.design", true }, { "maze.fr", true }, { "mazternet.ru", true }, { "mazzotta.me", true }, { "mb-is.info", true }, + { "mb300sd.com", true }, + { "mb300sd.net", true }, { "mbaasy.com", true }, { "mbaestlein.de", true }, { "mbainflatables.co.uk", true }, @@ -21595,14 +22665,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mbr-net.de", true }, { "mbrooks.info", true }, { "mbs-journey.com", true }, + { "mbsec.net", true }, { "mburns.duckdns.org", true }, { "mbweir.com", true }, + { "mbwis.net", true }, { "mc-jobs.net", true }, { "mc-venture.net", false }, { "mc4free.cc", true }, { "mcatnnlo.org", true }, { "mccoolesredlioninn.com", true }, + { "mccordsvillelocksmith.com", true }, { "mccrackon.com", true }, + { "mcculloughjchris.com", true }, { "mcdermottautomotive.com", true }, { "mcdona1d.me", true }, { "mcdonalds.be", true }, @@ -21613,11 +22687,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mcea-hld.jp", true }, { "mceconferencecentre.eu", true }, { "mcfedries.com", true }, + { "mcfipvt.com", true }, { "mcfx.us", true }, { "mcgaccountancy.co.uk", true }, { "mcgarderen.nl", true }, { "mcgovernance.com", true }, - { "mchan.us", true }, + { "mchel.net", true }, + { "mchopkins.net", true }, { "mchristopher.com", true }, { "mcinterface.de", true }, { "mcivor.me", true }, @@ -21629,26 +22705,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mclinflatables.co.uk", true }, { "mclmotors.co.uk", true }, { "mclyr.com", true }, + { "mcmillansedationdentistry.com", false }, { "mcmillanskiclub.com.au", true }, { "mcneill.io", true }, { "mcnext.net", true }, + { "mcon.se", true }, { "mcpaoffice.com", true }, { "mcpart.land", true }, { "mcplayman.de", true }, { "mcpro.games", true }, { "mcprocdn.com", true }, - { "mcqyy.com", true }, { "mcrn.jp", true }, { "mcsinflatables.co.uk", true }, - { "mcsniper.co", true }, { "mcsrvstat.us", true }, - { "mctherealm.net", true }, { "mctools.org", true }, + { "mcuuid.net", true }, + { "mcversions.net", true }, { "mcynews.com", true }, { "mcyukon.com", true }, { "md-clinica.com.ua", true }, { "md5file.com", true }, { "md5hashing.net", true }, + { "mdazo.net", true }, { "mdbouncycastlehirelondon.co.uk", true }, { "mdcloudpracticesolutions.com", true }, { "mdcloudps.com", true }, @@ -21664,6 +22742,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mdoering.de", true }, { "mdosch.de", true }, { "mdpraha.cz", true }, + { "mds-paris.com", true }, { "mdsave.com", true }, { "mdx.no", true }, { "mdxdave.de", true }, @@ -21675,11 +22754,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "meadowfen.farm", true }, { "mealgoo.com", true }, { "meamod.com", false }, - { "meanevo.com", true }, { "meany.xyz", true }, { "meap.xyz", true }, { "measureyourpenis.today", true }, { "meat.org.uk", true }, + { "mebaneattorney.com", true }, + { "mebanesteakhouse.com", true }, { "mecanicoautomotriz.org", true }, { "mechanus.io", true }, { "mechmk1.me", true }, @@ -21697,16 +22777,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "medhy.fr", true }, { "medi-link.co.il", true }, { "medi.com.br", true }, - { "media-courses.com", false }, { "media-credit.eu", true }, { "media-instance.ru", true }, { "media-library.co.uk", true }, { "media-pi.com", true }, { "media-serwis.com", true }, { "mediaarea.net", true }, + { "mediabackoffice.co.jp", true }, { "mediablaster.com", true }, + { "mediabm.jp", true }, { "mediaburst.co.uk", true }, { "mediadex.be", true }, + { "mediaexpert.fr", true }, { "mediafly.com", true }, { "mediafocus.biz", true }, { "mediagenic.ch", true }, @@ -21716,11 +22798,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "medialab.nrw", true }, { "mediamarkt.pl", true }, { "mediapart.fr", true }, + { "mediarithmics.com", true }, { "mediarocks.de", true }, { "mediaselection.eu", true }, { "mediationculturelleclp.ch", true }, { "mediatorzy.waw.pl", true }, + { "mediaukkies.nl", true }, { "mediavault.tech", true }, + { "mediawijsheid.nl", true }, + { "mediawijzer.net", true }, { "mediawiki.org", true }, { "mediawin.pl", true }, { "medic-world.com", true }, @@ -21737,13 +22823,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "medifi.com", true }, { "medigap-quote.net", true }, { "medikuma.com", true }, + { "medino.com", true }, { "medinside.ch", true }, { "medinside.li", true }, { "medinsider.ch", true }, { "medinsider.li", true }, { "medireport.fr", true }, + { "meditel.nl", true }, { "medium.com", true }, + { "medja.net", true }, { "medlineplus.gov", true }, + { "medmarkt24.com", true }, { "medo64.com", true }, { "medovea.ru", true }, { "medpeer.jp", true }, @@ -21754,6 +22844,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "medtehnika.ua", true }, { "medusa.wtf", true }, { "meduza.io", true }, + { "medvedikorenka.cz", true }, { "medvet.com.es", true }, { "medwaybouncycastlehire.co.uk", true }, { "medyotan.ga", true }, @@ -21776,6 +22867,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "meeusen-usedcars.be", true }, { "meeztertom.nl", true }, { "meg-a-bounce.co.uk", true }, + { "mega-aukcion.ru", true }, { "mega-byte.nl", true }, { "mega-feeling.de", true }, { "mega.co.nz", true }, @@ -21788,16 +22880,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "megaflowers.ru", true }, { "megagifs.de", true }, { "megainflatables.co.uk", true }, + { "megamarkey.de", true }, { "megamisja.pl", true }, { "meganandmarc.us", true }, - { "meganreel.com", true }, + { "meganreel.com", false }, { "megapixel.cz", true }, { "megaplan.cz", true }, { "megaplan.ru", true }, { "megaplonk.com", true }, { "megarex.jp", true }, { "megasslstore.com", true }, - { "megasystem.cl", true }, + { "megauction.tk", true }, { "megaxchange.com", true }, { "megumico.net", true }, { "megustariasaber.com", true }, @@ -21838,7 +22931,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mekesh.net", true }, { "mekesh.ru", true }, { "meklon.net", true }, - { "mekongeye.com", true }, { "melaniebernhardt.com", true }, { "melaniegruber.de", true }, { "melbourne.dating", true }, @@ -21850,12 +22942,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "melhoresdominios.com", true }, { "melhoresmarcasdenotebook.com.br", true }, { "melillaorienta.es", true }, + { "melina-schefczyk.de", true }, { "melissaadkins.com", true }, { "melissaauclaire.com", true }, { "melissameuwszen.nl", true }, { "melitopol.co.ua", true }, { "melnessgroup.com", true }, { "melnikov.ch", true }, + { "melodicprogressivehouse.com", true }, { "melodiouscode.co.uk", true }, { "melodiouscode.com", true }, { "melodiouscode.net", true }, @@ -21874,7 +22968,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "meme.institute", true }, { "memememememememe.me", true }, { "memepasmal.net", true }, - { "memes.nz", true }, + { "memesbee.com", true }, { "memfrob.org", true }, { "memind.net", true }, { "memiux.com", true }, @@ -21892,7 +22986,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "menhera.org", true }, { "menielias.com", true }, { "menkyo-blog.com", true }, - { "mennace.com", true }, { "menntagatt.is", true }, { "menole.com", true }, { "menole.de", true }, @@ -21916,7 +23009,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "menuonlineordering.com", true }, { "menzel-motors.com", true }, { "menzietti.it", true }, - { "meo.de", true }, { "mephedrone.org", true }, { "mer.gd", true }, { "meransuedtirol.com", true }, @@ -21929,23 +23021,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mercedes-benz.io", true }, { "mercedes-ig.de", true }, { "mercedespartscenter.com", true }, + { "merchant-automotive.com", true }, { "mercier-auto.com", true }, { "mercier-cars.co.uk", true }, { "mercury.photo", true }, { "mercuryamericas.com", false }, { "meremeti-online.gr", true }, - { "meremobil.dk", true }, + { "merenbach.com", true }, { "merenita.com", true }, { "merenita.eu", true }, { "merenita.net", true }, { "merenita.nl", true }, + { "meric-graphisme.info", true }, + { "meridianmetals.com", true }, { "meridianstore.com.br", true }, { "merkel.me", true }, { "merlet.eu", true }, + { "merlinsoap.com", true }, { "merloat.club", true }, + { "merloat.com", true }, { "merojob.com", true }, { "meronberry.jp", true }, - { "mertak.cz", true }, + { "merson.org", true }, + { "merson.tv", true }, { "mertarauh.com", true }, { "mertcangokgoz.com", true }, { "meruri.com", true }, @@ -21956,13 +23054,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mescaline.com", true }, { "mescaline.org", true }, { "mesh.gov", true }, + { "meshok.info", true }, { "mesicka.com", true }, { "messagescelestes-archives.ca", true }, { "messagevortex.com", true }, { "messagevortex.net", true }, { "messdorferfeld.de", true }, { "messenger.co.tz", true }, - { "messenger.com", true }, + { "messenger.com", false }, { "messengerwebbrands.com", true }, { "messer24.ch", true }, { "messymom.com", true }, @@ -21970,24 +23069,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mestr.es", true }, { "mesvt.com", true }, { "meta-db.com", true }, - { "meta-word.com", true }, { "meta.sc", true }, { "metachris.com", true }, { "metacoda.com", true }, { "metacode.biz", true }, { "metadatawiki.com", true }, - { "metaether.net", true }, { "metafurquest.net", true }, { "metalu.ch", true }, { "metanic.org", true }, { "metanic.services", true }, { "metanodo.com", true }, { "metapeen.nl", true }, + { "metaregistrar.com", true }, { "metasquare.com.au", true }, { "metasquare.nyc", true }, - { "metaword.com", true }, - { "metaword.net", true }, - { "metaword.org", true }, { "meteenonline.nl", true }, { "meteo-parc.com", true }, { "meteo-r.ovh", true }, @@ -22000,12 +23095,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "meteobox.pl", true }, { "meteobox.sk", true }, { "meteorapp.space", true }, + { "meteosherbrooke.com", true }, { "meteosmit.it", true }, { "meterhost.com", true }, { "methamphetamine.co.uk", true }, { "methylone.com", true }, - { "metikam.pl", true }, - { "metin2sepeti.com", true }, { "metro-lawn-care.com", true }, { "metro-web.net", true }, { "metroairvirtual.com", true }, @@ -22016,7 +23110,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "metsasta.com", true }, { "mettekopp.dk", true }, { "meu-solutions.com", true }, - { "meujeitodigital.com.br", true }, + { "meujeitodigital.com.br", false }, + { "meupainel.me", true }, + { "meurisse.org", true }, { "mevo.xyz", true }, { "mevs.cz", true }, { "mexican.dating", true }, @@ -22030,13 +23126,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mfits.co.uk", true }, { "mflodin.se", true }, { "mfxbe.de", true }, + { "mfz.mk", true }, + { "mgcraft.net", true }, { "mgi.gov", true }, { "mgknet.com", true }, { "mgrossklaus.de", true }, { "mgrt.net", true }, { "mgsisk.com", true }, { "mgtbaas.eu", true }, + { "mhadot.com", true }, { "mhalfter.de", true }, + { "mhand.org", true }, + { "mhatero.com", true }, { "mhatlaw.com", true }, { "mheistermann.de", true }, { "mhermans.nl", true }, @@ -22047,25 +23148,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mi-so-ji.com", true }, { "mi80.com", true }, { "miagexport.com", true }, - { "miamicityballet.org", true }, { "miaonagemi.com", true }, { "miaoubox.com", true }, { "miaowo.org", true }, { "miasarafina.de", true }, - { "miboulot.com", true }, + { "mibuiin.com", true }, { "micado-software.com", true }, { "micaiahparker.com", true }, { "micalodeal.ch", true }, { "micasamgmt.com", false }, { "micbase.com", true }, + { "michadenheijer.com", true }, + { "michael-schefczyk.de", true }, { "michael-steinhauer.eu", true }, { "michael.band", true }, { "michaelasawyer.com", true }, { "michaelband.co", true }, { "michaelband.com", true }, + { "michaelcullen.name", true }, { "michaeleichorn.com", true }, { "michaelhrehor.com", true }, { "michaeliscorp.com", true }, + { "michaelismold.com", true }, { "michaelizquierdo.com", true }, { "michaeljdennis.com", true }, { "michaelkuchta.me", true }, @@ -22101,7 +23205,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "miconcinemas.com", true }, { "micr.io", true }, { "micr0lab.org", true }, - { "microbiote-insectes-vecteurs.group", true }, { "microco.sm", true }, { "microcomploja.com.br", true }, { "microdots.de", true }, @@ -22120,12 +23223,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "midlandsphotobooths.co.uk", true }, { "midlgx.com", true }, { "midnight-visions.de", true }, + { "midnightmango.co.uk", true }, + { "midnightmango.de", true }, { "midnightmechanism.com", true }, { "midstatebasement.com", true }, { "midtowndentistry.com", true }, { "midwestbloggers.org", true }, { "midweststructuralrepair.com", true }, { "miegl.com", true }, + { "miembarcacion.com", true }, { "miemus.eu", true }, { "mietwohnungen-vermietung.com", true }, { "mieuxgrandir.ch", true }, @@ -22136,7 +23242,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "miguel.pw", true }, { "migueldemoura.com", true }, { "migueldominguez.ch", true }, - { "miguelgfierro.com", true }, { "miguelmartinez.ch", true }, { "miguelmenendez.pro", true }, { "miguelmoura.com", true }, @@ -22149,6 +23254,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mijnetickets.nl", false }, { "mijnetz.nl", true }, { "mijnkerstkaarten.be", true }, + { "mijnkinderkleding.com", true }, + { "mijnpartijhandel.nl", true }, { "mijnreisoverzicht.nl", true }, { "mijnsite.ovh", true }, { "mijnstembureau.nl", true }, @@ -22164,11 +23271,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mikeblog.site", true }, { "mikebutcher.ca", true }, { "mikecb.org", true }, + { "mikegarnett.co.uk", true }, { "mikegerwitz.com", true }, { "mikeguy.co.uk", true }, { "mikehamburg.com", true }, { "mikehilldesign.co.uk", true }, - { "mikerichards.photography", true }, + { "mikerichards.photography", false }, { "miketabor.com", true }, { "miketheuer.com", true }, { "mikevesch.com", true }, @@ -22176,11 +23284,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mikewillia.ms", true }, { "mikewritesstuff.com", true }, { "mikeybailey.org", true }, + { "mikhirev.ru", true }, { "mikhlevich.ru", true }, { "miki-boras.de", true }, { "miki.it", true }, - { "mikkelscheike.com", true }, - { "mikkelvej.dk", true }, + { "mikkonen.bio", true }, { "miklcct.com", true }, { "miknight.com", true }, { "mikonmaa.fi", true }, @@ -22203,6 +23311,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "milesapart.dating", true }, { "milhoazul.com.br", true }, { "milionshop.sk", true }, + { "milkandcookies.ca", true }, { "milkingit.co.uk", true }, { "milktea.info", true }, { "millanova.wedding", false }, @@ -22211,17 +23320,79 @@ static const nsSTSPreload kSTSPreloadList[] = { { "millefleurs.eu", true }, { "millennium-thisiswhoweare.net", true }, { "millenniumweb.com", false }, + { "millersminibarns.com", true }, + { "millettable.com", true }, { "millhousenchurch.com", true }, + { "million5.com", true }, + { "million6.com", true }, + { "million8.com", true }, { "millionairegames.com", true }, + { "millions1.com", true }, + { "millions11.com", true }, + { "millions13.com", true }, + { "millions14.com", true }, + { "millions15.com", true }, + { "millions16.com", true }, + { "millions17.com", true }, + { "millions19.com", true }, + { "millions20.com", true }, + { "millions22.com", true }, + { "millions25.com", true }, + { "millions26.com", true }, + { "millions27.com", true }, + { "millions28.com", true }, + { "millions29.com", true }, + { "millions31.com", true }, + { "millions32.com", true }, + { "millions33.com", true }, + { "millions35.com", true }, + { "millions36.com", true }, + { "millions37.com", true }, + { "millions38.com", true }, + { "millions39.com", true }, + { "millions40.com", true }, + { "millions41.com", true }, + { "millions42.com", true }, + { "millions43.com", true }, + { "millions5.com", true }, + { "millions50.com", true }, + { "millions51.com", true }, + { "millions52.com", true }, + { "millions53.com", true }, + { "millions55.com", true }, + { "millions56.com", true }, + { "millions57.com", true }, + { "millions58.com", true }, + { "millions59.com", true }, + { "millions6.com", true }, + { "millions60.com", true }, + { "millions61.com", true }, + { "millions62.com", true }, + { "millions63.com", true }, + { "millions66.com", true }, + { "millions7.com", true }, + { "millions70.com", true }, + { "millions71.com", true }, + { "millions72.com", true }, + { "millions77.com", true }, + { "millions8.com", true }, + { "millions80.com", true }, + { "millions81.com", true }, + { "millions82.com", true }, + { "millions88.com", true }, + { "millions9.com", true }, + { "millions99.com", true }, { "millistream.com", true }, - { "mim.properties", true }, + { "milsonhypnotherapyservices.com", true }, + { "mim.am", true }, { "mimemo.io", true }, + { "mimemoriadepez.com", true }, { "mimeo.digital", true }, + { "mimithedog.com", true }, { "mimobile.website", true }, { "mimocad.io", true }, { "mimovrste.com", true }, { "min-sky.no", true }, - { "minacssas.com", true }, { "minakov.pro", true }, { "minakova.pro", true }, { "minami.xyz", true }, @@ -22230,9 +23401,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mind-box.ch", true }, { "mind-hochschul-netzwerk.de", true }, { "mind-moves.es", true }, - { "mindbodycontinuum.com", true }, { "mindbodytherapymn.com", true }, - { "mindcell.no", true }, { "mindcoding.ro", true }, { "mindercasso.nl", true }, { "mindfactory.de", true }, @@ -22240,7 +23409,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mindoktor.se", false }, { "mindorbs.com", true }, { "mindstretchers.co.uk", true }, - { "mindturbo.com", true }, { "mindwork.space", true }, { "mine-craftlife.com", true }, { "mine260309.me", true }, @@ -22260,10 +23428,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "minerstat.com", true }, { "minerva2015.it", true }, { "minesouls.fr", true }, + { "minetracker.dk", true }, { "minez-nightswatch.com", false }, { "minf3-games.de", true }, { "mingky.net", true }, - { "mingkyaa.com", true }, { "mingming.info", true }, { "mingram.net", true }, { "mingwah.ch", true }, @@ -22293,20 +23461,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "minpingvin.dk", true }, { "minschuns.ch", true }, { "mintclass.com", true }, - { "mintea-noua.ro", true }, { "mintosherbs.com", true }, { "mintrak2.com", true }, - { "minu.link", true }, + { "mintse.com", true }, { "minube.co.cr", true }, { "minux.info", true }, { "mipapo.de", true }, { "mipla.ch", true }, { "miproximopaso.org", true }, + { "mipueblohoy.com", true }, { "mipymesenlinea.com", true }, { "mir.pe", true }, { "mirabalphoto.es", true }, { "miraheze.org", true }, { "miraidenshi.com", true }, + { "miraiex.com", true }, { "mirch.com", true }, { "mirco-grams.de", true }, { "mireiaseuba.com", true }, @@ -22315,8 +23484,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mirfire.com", true }, { "mirjamderijk.nl", true }, { "mirkofranz.de", true }, - { "mirodasilva.be", true }, { "mironet.cz", true }, + { "mirrorbot.ga", true }, { "mirrorsedgearchive.de", true }, { "mirshak.com", true }, { "mirtes.cz", true }, @@ -22325,6 +23494,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "misanci.cz", true }, { "misclick.nl", true }, { "mishkovskyi.net", true }, + { "misinstrumentos.com", true }, { "miskatonic.org", true }, { "misoji-resist.com", true }, { "misol.kr", true }, @@ -22334,12 +23504,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "miss.com.tw", true }, { "missdream.org", true }, { "misseguf.dk", true }, - { "missguidedus.com", true }, + { "missevent.pl", true }, { "mission-orange.de", true }, { "missionsgemeinde.de", true }, { "missip.nl", true }, { "missjoias.com.br", true }, - { "misskey.xyz", false }, + { "misskey.jp", true }, + { "misskey.site", true }, + { "misskey.xyz", true }, { "missoy.me", true }, { "misssex.de", true }, { "missualready.com", true }, @@ -22350,17 +23522,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mistybox.com", true }, { "misupport.dk", true }, { "misura.re", true }, + { "mit-dem-rad-zur-arbeit.de", true }, + { "mit-dem-rad-zur-uni.de", true }, { "mit-uns.org", true }, { "mita.me", true }, { "mitabu.net", true }, { "mitaines.ch", true }, { "mitarbeitermotivation-anleitungen.de", true }, { "mitchellhandymanservices.co.uk", true }, + { "mitchelmore.ca", true }, { "miticobikes.com", true }, { "mitigationcommission.gov", true }, { "mitnetz-gas.de", true }, { "mitnetz-strom.de", true }, { "mitrax.com.br", true }, + { "mitre10.com.au", true }, { "mitrecaasd.org", true }, { "mitremai.org", true }, { "mitrostudios.com", true }, @@ -22371,6 +23547,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mittagonghomestead.com.au", true }, { "mittelunsachlich.de", true }, { "mittenofficesystems.com", true }, + { "mityinc.com", true }, + { "mitylite.com", true }, { "mitzpettel.com", true }, { "miui-germany.de", true }, { "mivestuariolaboral.com", true }, @@ -22381,17 +23559,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mivzakim.net", true }, { "mivzakim.org", true }, { "mivzakim.tv", true }, + { "mivzaklive.co.il", true }, { "miweb.cr", false }, { "mixinglight.com", true }, { "mixnshake.com", true }, { "mixposure.com", true }, + { "mixrepairs.co.uk", true }, { "mixtafrica.com", true }, { "mixtape.moe", true }, + { "mixx.com.hk", true }, { "miyatore.com", true }, { "miyoshi-kikaku.com", true }, { "miyugirls.com", true }, { "mizipack.com", true }, { "mizque.ch", true }, + { "mizu.coffee", true }, { "mizuho-trade.net", true }, { "mizumax.me", true }, { "mj420.com", true }, @@ -22407,6 +23589,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mk89.de", true }, { "mkaciuba.com", true }, { "mkakh.com", true }, + { "mkasu.org", false }, { "mkbouncycastles.co.uk", true }, { "mkbouncyhire.co.uk", true }, { "mkcert.org", true }, @@ -22415,7 +23598,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mkes.com", true }, { "mkg-chirurgie-bruchsal.de", true }, { "mkg-scherer.de", true }, - { "mkg-wiebelskirchen.de", true }, { "mkhsoft.eu", true }, { "mkimage.com", true }, { "mkk.de", true }, @@ -22431,14 +23613,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mktemp.org", true }, { "mkuznets.com", true }, { "mlarte.com", true }, - { "mlcambiental.com.br", true }, { "mlcnfriends.com", true }, { "mlemay.com", true }, - { "mlm-worldwide.de", true }, + { "mlfaw.com", true }, { "mlmjam.com", true }, { "mlp.ee", true }, { "mlpvector.club", true }, - { "mlsrv.de", true }, { "mlundberg.se", true }, { "mlvbphotography.com", true }, { "mlytics.com", true }, @@ -22447,9 +23627,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mma-acareporting.com", true }, { "mmalisz.com", true }, { "mmaps.ddns.net", true }, - { "mmarnitz.de", true }, { "mmbb.org", true }, - { "mmcc.pe", true }, { "mmin.us", false }, { "mmmarco.com", true }, { "mmogah.com", true }, @@ -22457,14 +23635,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mms.is", true }, { "mmt.my", true }, { "mmucha.de", true }, + { "mna7e.com", true }, { "mncloud.de", true }, { "mncr.nl", true }, + { "mnd.sc", true }, { "mne.moe", true }, { "mnedc.org", true }, { "mnemonic.ninja", true }, { "mnguyen.io", true }, { "mnitro.com", true }, { "mnium.de", true }, + { "mnml.art", true }, + { "mnml.jp", true }, { "mnnknz.de", true }, { "mnsure.org", true }, { "mnt-tech.fr", true }, @@ -22474,9 +23656,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mo2021.de", true }, { "mo3.club", true }, { "moa.moe", true }, - { "moas.design", true }, { "mobag.ru", true }, { "mobal.com", true }, + { "mobi4.tk", true }, { "mobidea.com", true }, { "mobifinans.ru", true }, { "mobil-bei-uns.de", true }, @@ -22489,6 +23671,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mobile360.ph", true }, { "mobilebingoclub.co.uk", true }, { "mobilecasinoclub.co.uk", true }, + { "mobilecontractcomparison.com", true }, { "mobilelooper.com", true }, { "mobilemedics.com", true }, { "mobileread.com", true }, @@ -22518,15 +23701,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "modafinil.wiki", true }, { "modafo.com", true }, { "modalogi.com", true }, - { "modalrakyat.com", true }, - { "modalrakyat.id", true }, { "modcasts.video", true }, - { "modcentral.pw", true }, { "modding-forum.com", true }, { "modding-welt.com", true }, { "mode-hautnah.de", true }, { "mode-individuell.de", true }, - { "modehaus-marionk.de", true }, { "modelcase.co.jp", false }, { "modelclub-draveil.eu", true }, { "modelcube.com", true }, @@ -22540,19 +23719,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "moderatorenpool.org", true }, { "modernapprenticeships.org", true }, { "moderncoinmart.com", true }, - { "moderntld.net", true }, { "modifiedmind.com", true }, { "modistry.com", true }, { "modistryusercontent.com", true }, { "modmountain.com", true }, { "modosaude.com.br", true }, + { "modul21.com", true }, + { "modul21.eu", true }, { "module.market", true }, + { "modulex-gmbh.de", true }, { "moechel.com", true }, { "moefactory.com", true }, - { "moehrke.cc", true }, { "moeking.me", true }, { "moellers.systems", true }, { "moetrack.com", true }, + { "moeyoo.net", true }, { "mofohome.dyndns.org", true }, { "moha-swiss.com", true }, { "mohanmekap.com", true }, @@ -22568,9 +23749,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mojeco2.cz", true }, { "mojefedora.cz", true }, { "mojilitygroup.com", true }, - { "mojnet.eu", true }, - { "mojnet.net", true }, - { "mojoco.co.za", true }, + { "mojizuri.com", true }, { "mojzis.com", true }, { "mojzis.cz", true }, { "mojzisova.com", true }, @@ -22582,15 +23761,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "molecularbiosystems.org", true }, { "molinero.xyz", true }, { "mollaretsmeningitis.org", true }, - { "molokai.org", true }, { "molti.hu", true }, { "molun.net", false }, { "molunerfinn.com", true }, { "molwick.com", true }, - { "momento.co.id", true }, + { "momentum.photos", true }, { "momentumdash.com", true }, { "momirfarooq.com", true }, { "momjoyas.com", true }, + { "momo0v0.club", true }, { "momozeit.de", true }, { "momstableonline.com", true }, { "momut.org", true }, @@ -22598,7 +23777,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mon-partage.fr", true }, { "mon-trafic.com", true }, { "mon22.ch", true }, - { "mona-antenna.com", true }, { "mona-dress.com", true }, { "monachatdeco.com", true }, { "monaco-automaten.de", true }, @@ -22609,11 +23787,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "monbudget.org", true }, { "moncoach.ch", true }, { "mondedesnovels.com", true }, - { "mondedie.fr", true }, { "mondial-movers.nl", true }, { "mondo-it.ch", true }, { "moneni.com", true }, { "moneybird.com", true }, + { "moneybird.nl", true }, { "moneychangersoftware.com", true }, { "moneycredit.eu", true }, { "moneygo.se", true }, @@ -22624,8 +23802,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "monique.io", true }, { "moniquedekermadec.com", true }, { "moniquemunhoz.com.br", true }, - { "monitman.com", true }, - { "monitorchain.com", true }, { "monitoring.kalisz.pl", true }, { "monitzer.com", true }, { "monix.io", true }, @@ -22642,11 +23818,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mono0x.net", true }, { "monobank.no", true }, { "monodukuri.com", true }, - { "monokoo.com", true }, { "monolithapps.com", true }, { "monolithindustries.com", true }, { "monolithinteractive.com", true }, { "monothesis.com", true }, + { "monotributo.online", true }, { "monoworks.co.jp", true }, { "monpc-pro.fr", true }, { "monpermismoto.com", true }, @@ -22658,7 +23834,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "montage-kaika.de", true }, { "montagne-tendance.ch", true }, { "montanasky.tv", true }, - { "montand.com", true }, { "montanwerk.de", true }, { "montarfotoaki.com", true }, { "montas.io", true }, @@ -22682,6 +23857,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "moolah.rocks", true }, { "moon.fish", true }, { "moonagic.com", true }, + { "moonagic.io", true }, + { "moonbench.xyz", true }, { "moonbot.io", true }, { "moondrop.org", true }, { "moonkin.eu", true }, @@ -22689,8 +23866,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "moonmelo.com", true }, { "moonraptor.co.uk", true }, { "moonraptor.com", true }, - { "moonrhythm.info", true }, - { "moonrhythm.io", true }, + { "moonrhythm.info", false }, { "moonshyne.org", true }, { "moontaj.com", true }, { "moonvpn.org", true }, @@ -22736,6 +23912,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "morganino.it", true }, { "morgansleisure.co.uk", true }, { "morgner.com", true }, + { "morhys.com", true }, { "moritz-baestlein.de", true }, { "moritztremmel.de", true }, { "moriz.de", true }, @@ -22745,6 +23922,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "morningstar.moe", true }, { "morphy2k.io", true }, { "morrisby.com", true }, + { "morrodafumacanoticias.com.br", true }, { "morteruelo.net", true }, { "mortgagecalculator.biz", true }, { "mortgagecentersmo.com", true }, @@ -22758,6 +23936,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mosin.org", true }, { "moskeedieren.nl", true }, { "mosos.de", true }, + { "mosquitojoe.com", true }, { "mosscade.com", true }, { "mosshi.be", true }, { "mosstier.com", true }, @@ -22782,11 +23961,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "motojato.com.br", true }, { "motonauticaibiza.com", true }, { "motoreflex.com", true }, - { "motornomaslo.bg", true }, { "motorpointarenacardiff.co.uk", true }, { "motorring.ru", true }, { "motorsplus.com", false }, - { "motorsportdiesel.com", false }, { "motoryachtclub-radolfzell.de", true }, { "motosikletevi.com", true }, { "motostorie.blog", false }, @@ -22798,19 +23975,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "moulinaparoles.ca", true }, { "mountain-rock.ru", true }, { "mountainactivitysection.org.uk", true }, + { "mountainchalet.blue", true }, { "mountainroseherbs.com", true }, + { "mountainspringsrentals.ca", true }, { "mountfarmer.de", true }, { "mousemessages.com", true }, { "moutiezhaller.com", true }, + { "move.mil", true }, { "moveek.com", true }, { "moveisfit.com.br", true }, - { "moveltix.net", true }, { "movember.com", false }, { "movewellnesslab.com", true }, { "movie-cross.net", true }, { "movie-infos.net", true }, { "movie1000.com", true }, - { "movie4kto.site", true }, { "movie4kto.stream", true }, { "movieboost.nl", true }, { "moviedeposit.com", true }, @@ -22821,9 +23999,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "moviesetc.net", true }, { "moviko.nz", true }, { "movil.uno", true }, + { "moviltronix.com", true }, { "movimento-terra.it", true }, { "movinglogistics.nl", false }, { "movingtohttps.com", true }, + { "movingtojapan.life", true }, { "movlib.org", true }, { "moy.cat", true }, { "moyer.pub", true }, @@ -22834,7 +24014,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mozektevidi.net", true }, { "mozilla.cz", true }, { "mozzez.de", true }, - { "mp3gratuiti.com", true }, { "mpa-pro.fr", true }, { "mpac.ca", false }, { "mpc-hc.org", true }, @@ -22844,6 +24023,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mpg-universal.com", true }, { "mpg.ovh", true }, { "mpgaming.pro", true }, + { "mphoto.at", true }, { "mpintaamalabanna.it", true }, { "mpkrachtig.nl", true }, { "mplanetphl.fr", true }, @@ -22852,15 +24032,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mplusm.eu", true }, { "mpnpokertour.com", true }, { "mpodraza.pl", true }, - { "mpreserver.com", true }, + { "mpreserver.com", false }, { "mprsco.eu", true }, { "mpsgarage.com.au", true }, { "mpsoundcraft.com", true }, + { "mpu-giessen.com", true }, + { "mpu-vorbereitung.com", true }, { "mpy.ovh", true }, { "mqas.net", true }, { "mr-anderson.org", true }, { "mr-designer-oman.com", true }, { "mr-labo.jp", true }, + { "mr-nachhilfe.de", true }, { "mr-wolf.nl", false }, { "mr3.io", true }, { "mrazek.biz", true }, @@ -22875,7 +24058,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mrdayman.com", true }, { "mremallin.ca", true }, { "mrevolution.eu", true }, + { "mrgasfires.co.uk", true }, + { "mrgiveaways.com", true }, { "mrinalpurohit.in", true }, + { "mrjhnsn.com", true }, + { "mrjooz.com", true }, { "mrkapowski.com", true }, { "mrketolocksmith.com", true }, { "mrknee.gr", true }, @@ -22883,11 +24070,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mrmoregame.de", true }, { "mrnh.de", true }, { "mrning.com", true }, + { "mrprintables.com", true }, { "mrs-labo.jp", true }, { "mrsbairds.com", false }, { "mrserge.lv", true }, { "mrsk.me", true }, { "mrstat.co.uk", true }, + { "mrtunnel.club", true }, { "mrv.li", true }, { "mrx.one", true }, { "mrxn.net", true }, @@ -22906,6 +24095,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "msi-zlin.cz", true }, { "msiegmund.com", true }, { "msmails.de", true }, + { "msno.no", true }, { "msnr.net", true }, { "msopopop.cn", true }, { "mspsocial.net", true }, @@ -22915,6 +24105,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mstdn.blue", true }, { "mstdn.club", true }, { "mstdn.fr", true }, + { "mstdn.io", true }, { "mstdn.onl", false }, { "msuna.net", true }, { "msv-limpezas.pt", true }, @@ -22927,6 +24118,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mtasa.hu", true }, { "mtb.wtf", true }, { "mtcq.jp", true }, + { "mtd.org", true }, + { "mtg-tutor.de", true }, { "mtgeni.us", true }, { "mtgenius.com", true }, { "mtgsuomi.fi", true }, @@ -22935,6 +24128,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mthrbrd.net", true }, { "mths.be", false }, { "mticareportal.com", true }, + { "mtiryaki.com", true }, { "mtlconcerts.com", true }, { "mtltransport.com", true }, { "mtnz.co.za", true }, @@ -22949,27 +24143,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "muabannhanh.com", false }, { "muahahahaha.co.uk", true }, { "mubiflex.nl", true }, - { "muchohentai.com", true }, { "muckingabout.eu", true }, { "muckrack.com", true }, { "mucmail.de", true }, { "muctool.de", true }, { "mud-status.de", true }, + { "mudbenesov.cz", true }, { "mudcrab.us", false }, { "mudgezero.one", true }, { "muehlemann.net", true }, { "muel.io", true }, { "muell-weg.de", true }, { "muellapp.com", true }, + { "muenchberger.com", true }, { "muenzubi.de", true }, { "mufibot.net", true }, { "muguayuan.com", true }, { "muh.io", true }, + { "mui.jp", true }, + { "muitadica.com", true }, { "muk-kobetsu.com", true }, { "mulaccosmetics.com", true }, { "mulaisehat.com", true }, { "mulej.net", true }, - { "mulheres18.com", true }, { "muling.lu", true }, { "mullens-usedcars.be", true }, { "multi-vpn.biz", true }, @@ -22993,28 +24189,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "multitek.no", true }, { "multitenantlaravel.com", true }, { "multitheftauto.com", true }, - { "multiworldsoftware.com", true }, { "multizone.games", true }, { "multrier.fr", true }, + { "mum.ceo", true }, + { "muma.ml", true }, { "mumakil.fi", true }, { "mumbaionlinegifts.com", true }, { "muminkoykiran.com", true }, { "mumolabs.com", true }, { "munch.me", true }, { "munchcorp.com", true }, - { "mundoadulto.com.br", true }, { "mundoarabe.com.br", true }, { "mundodasmensagens.com", true }, { "mundokinderland.com.br", true }, { "mundolarraz.es", true }, + { "mundomagicotv.com", true }, { "mundschenk.at", true }, { "mundtec.com.br", true }, { "munduch.cz", true }, { "munduch.eu", true }, - { "munirajiwa.com", true }, { "munki.org", true }, { "munkibuilds.org", true }, - { "munwr.com", true }, + { "munwr.com", false }, { "muqu.co", true }, { "mur-vegetal-interieur.fr", true }, { "murakami-sah.com", true }, @@ -23024,9 +24220,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "murgi.de", true }, { "murmel.it", false }, { "murof.com.br", true }, - { "murzik.space", true }, + { "murray.xyz", true }, + { "murraya.cn", true }, + { "musaccostore.com", true }, { "muscle-tg.com", true }, - { "muscleangels.com", true }, { "musclecarresearch.com", true }, { "muscolinomusic.com", true }, { "musearchengine.com", true }, @@ -23038,6 +24235,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mushikabu.net", true }, { "music-is-my-life.de", true }, { "music-project.eu", true }, + { "music-world.pl", true }, { "music.amazon.com", true }, { "musicaconleali.it", true }, { "musicalive.nl", true }, @@ -23083,11 +24281,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "muwatenraqamy.org", true }, { "muzeumkomiksu.eu", true }, { "muzhijy.com", true }, - { "muzi.cz", true }, { "muzikantine.nl", true }, { "mv-wohnen.de", true }, { "mvandek.nl", true }, { "mvbits.com", true }, + { "mvisioncorp.com", true }, { "mvno.io", true }, { "mvp-stars.com", true }, { "mw.search.yahoo.com", false }, @@ -23096,9 +24294,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mwavuli.co.ke", true }, { "mwba.org", true }, { "mwe.st", true }, + { "mwezi-foundation.org", true }, + { "mwezi.org", true }, { "mwohlfarth.de", true }, { "mwtdev.se", true }, { "mww.moe", true }, + { "mx-quad.fr", true }, { "mx.org.ua", true }, { "mx.search.yahoo.com", false }, { "mx5international.com", true }, @@ -23106,6 +24307,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mxn8.com", true }, { "mxp.tw", true }, { "my-aftershave-store.co.uk", true }, + { "my-best-wishes.com", true }, { "my-cdn.de", true }, { "my-contract.ch", true }, { "my-contract.info", true }, @@ -23136,16 +24338,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "myaggic.com", true }, { "myalliancechurch.com", true }, { "myamend.com", true }, + { "myamihealth.com", true }, { "myamity.info", true }, { "myammo.ru", true }, { "myanimelist.net", true }, { "myapexcard.com", true }, - { "myappliancerepairhouston.com", true }, - { "myartsway.com", true }, + { "myaspenheights.com", true }, { "mybagofcoffee.com", true }, + { "mybasementdoctor.com", true }, { "mybb.com", true }, { "mybb.de", true }, - { "mybboard.pl", true }, { "mybeautyjobs.de", true }, { "mybicc.org", true }, { "myblockchain.cloud", true }, @@ -23153,11 +24355,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mybodylife.com", true }, { "mybon.at", false }, { "mybonfire.com", true }, + { "mybusiness.wien", true }, { "mycard.moe", true }, { "mycareersfuture.sg", true }, { "mycieokien.info", false }, { "mycinema.pro", true }, { "mycircleworks.com", true }, + { "myclasscam.com", true }, + { "myclasscam.org", true }, { "myclinicalstudybuddy.com", true }, { "mycloud-system.com", true }, { "mycofairtrade.com", true }, @@ -23206,12 +24411,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "myfrenchtattoo.fr", true }, { "myg21.com", true }, { "mygadgetguardian.lookout.com", false }, - { "mygalgame.com", true }, { "mygallery.homelinux.net", true }, { "mygeneral.org", true }, { "mygeotrip.com", true }, { "mygigabitnation.com", true }, { "mygignation.com", true }, + { "mygirlfriendshouse.com", true }, { "mygoldennetwork.com", true }, { "mygreatjobs.de", true }, { "mygreatlakes.org", true }, @@ -23222,10 +24427,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "myhatsuden.jp", true }, { "myhealthreviews.com", true }, { "myhollywoodnews.com", true }, - { "myhostname.net", true }, + { "myhome-24.pl", true }, { "myimds.com", true }, { "myimmitracker.com", true }, - { "myipaddr.de", true }, + { "myinvite.nl", true }, { "myipv4.de", true }, { "myjudo.net", true }, { "myjumparoo.co.uk", true }, @@ -23236,29 +24441,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mylawyer.be", true }, { "myleanfactory.de", true }, { "mylifeabundant.com", true }, + { "mylittlechat.ru", true }, { "myliveupdates.com", true }, { "mylookout.com", false }, { "mylstrom.com", true }, - { "mymadina.com", true }, { "mymall.co.jp", true }, { "mymarketingcourses.com", true }, { "mymb.pm", true }, { "mymed.de", true }, { "mymed.eu", true }, { "mymedz.nl", true }, + { "mymixtapez.com", true }, { "mymommyworld.com", true }, { "mymotor.nl", true }, { "myms.eu", true }, + { "mymun.com", true }, { "mymun.net", true }, { "mymusiclist.alwaysdata.net", true }, { "mymx.lu", true }, { "myna.go.jp", true }, { "mynameistavis.com", true }, - { "mynetworkingbuddy.com", true }, { "mynext.events", true }, { "mynextmove.org", true }, { "mynn.io", true }, - { "mynook.info", true }, + { "mynook.info", false }, { "mynortherngarden.com", true }, { "myonline.hu", true }, { "myoptumhealthcomplexmedical.com", true }, @@ -23266,6 +24472,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "myotopie.de", true }, { "myoueb.fr", true }, { "myoukochou.com", true }, + { "myownconference.cloud", true }, { "myownconference.com", true }, { "myownconference.com.ua", true }, { "myownconference.es", true }, @@ -23276,11 +24483,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "myowndisk.net", true }, { "myownwebinar.com", true }, { "mypaperdone.com", true }, - { "mypaperwriter.com", true }, { "mypayoffloan.com", true }, { "mypcqq.cc", true }, { "myperfecthome.ca", true }, { "myperfumecollection.com", true }, + { "myperks.in", true }, { "myphotoshopbrushes.com", true }, { "mypillcard.com", true }, { "myplaceonline.com", true }, @@ -23326,6 +24533,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "myrepublic.nz", true }, { "myrepublic.ph", true }, { "myrepublic.rocks", true }, + { "myrepublic.run", true }, { "myrepublic.tk", true }, { "myrepublic.tv", true }, { "myrepublic.tw", true }, @@ -23344,12 +24552,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "myrepublictelecom.com", true }, { "myrepubllc.net", true }, { "myresearchapp.com", true }, + { "myrevery.com", true }, { "myrewardspoints.com", true }, { "myriadof.com", true }, { "myrig.com", true }, - { "myrig.com.ua", true }, - { "myrig.ru", true }, + { "myrig.net", true }, { "myrotvorets.center", true }, + { "myrotvorets.news", true }, { "myrp.co", true }, { "mysber.ru", true }, { "myschoolphoto.org", true }, @@ -23358,6 +24567,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mysectools.org", true }, { "myself5.de", true }, { "myseo.ga", true }, + { "myserv.one", true }, { "myseu.cn", true }, { "mysexydate24.com", true }, { "myshirtsize.com", true }, @@ -23375,6 +24585,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "myssl.com", true }, { "mystatus24.com", false }, { "mysteriouscode.io", true }, + { "mysterydata.com", true }, { "mysterymind.ch", true }, { "mysterysear.ch", true }, { "mystic-welten.de", true }, @@ -23385,7 +24596,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mysupboard.de", true }, { "myswissmailaddress.com", true }, { "mytfg.de", true }, - { "mythemeshop.com", true }, { "mythengay.ch", true }, { "mythicdelirium.com", true }, { "myting.net", true }, @@ -23397,7 +24607,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mytripcar.fr", true }, { "mytruecare.org", true }, { "mytty.net", true }, - { "mytuleap.com", true }, + { "mytuleap.com", false }, { "mytun.com", true }, { "mytweeps.com", true }, { "myulog.net", true }, @@ -23412,54 +24622,60 @@ static const nsSTSPreload kSTSPreloadList[] = { { "myvitalhealthsolutions.com.au", true }, { "myvoipnews.com", true }, { "myvpl.com", true }, - { "mywallets.io", true }, { "mywari.com", true }, { "mywebinar.io", true }, + { "mywebmanager.co.uk", true }, { "mywebpanel.eu", true }, { "mywebpanel.nl", true }, + { "myweddingreceptionideas.com", true }, { "myworkinfo.com", false }, { "myworth.com.au", true }, + { "myxnr.com", true }, { "myyubikey.net", true }, { "myyubikey.org", true }, { "myzina.cz", false }, { "mz-mz.net", true }, + { "mza.com", true }, { "mzh.io", true }, { "mziulu.me", false }, { "mznet.de", true }, { "mzzj.de", true }, { "n-a.date", true }, { "n-design.de", true }, - { "n-kanazawa.jp", true }, { "n-m.lu", true }, { "n-man.info", true }, { "n-pix.com", false }, { "n-soft.info", true }, { "n-un.de", false }, - { "n-x.info", true }, { "n0paste.tk", false }, { "n0psled.nl", true }, { "n26.com", true }, { "n2servers.com", true }, - { "n3twork.net", true }, { "n4v.eu", true }, { "n5118.com", true }, { "n6a.net", true }, { "n7.education", true }, + { "n8mgt.com", true }, + { "n8nvi.com", true }, + { "n8solutions.net", true }, { "na-school.nl", true }, { "naam.me", true }, { "nabaleka.com", true }, { "nabankco.com", true }, { "nabidkamajetku.cz", true }, { "nabytek-valmo.cz", true }, + { "nacfit.com", true }, { "nachsendeauftrag.net", true }, { "nachsenden.info", true }, { "nachtmuziek.info", true }, { "nacin.com", true }, { "nacktwanderfreunde.de", true }, { "nacyklo.cz", true }, + { "nadaquenosepas.com", true }, { "nadejeproninu.cz", true }, { "nadelholzkulturen.de", true }, { "nadine-chaudier.net", true }, + { "nadsandgams.com", true }, { "nadyaolcer.fr", true }, { "nafod.net", true }, { "naga-semi.com", true }, @@ -23475,20 +24691,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nahura.com", true }, { "nailattitude.ch", true }, { "nailchiodo.com", true }, - { "nailedithomebuilders.com", true }, { "nailsalon-aztplus.com", true }, { "nairobibusinessreview.com", true }, + { "naive.network", true }, { "najany.de", true }, { "najany.dk", true }, { "najany.fr", true }, { "najany.nl", true }, { "najany.se", true }, - { "nakada4610.com", true }, + { "nakalabo.jp", true }, { "nakama.tv", true }, { "nakandya.com", true }, - { "nakanishi-paint.com", true }, + { "nakayama.systems", true }, { "nakedalarmclock.me", true }, { "nakedtruthbeauty.com", true }, + { "nakene.com", true }, { "nakliyatsirketi.biz.tr", true }, { "nako.no", true }, { "nalepky-na-zed.cz", true }, @@ -23502,7 +24719,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nameid.org", true }, { "namepros.com", true }, { "namereel.com", true }, - { "namethatporn.com", true }, + { "namethissymbol.com", true }, { "nametiles.co", true }, { "nami.bo", true }, { "nami.exchange", true }, @@ -23519,9 +24736,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nandex.org", true }, { "nange.co", true }, { "nankiseamansclub.com", true }, + { "nannytax.ca", true }, { "nanofy.org", true }, { "nanogi.ga", true }, - { "nanosingularity.com", true }, { "nanotechnologist.com", true }, { "nanotechtorsion.com", true }, { "nanovolt.nl", true }, @@ -23537,6 +24754,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "naphogar.com", true }, { "napisdata.us", true }, { "napolinissanctparts.com", true }, + { "nappynko.com", true }, { "narada.com.ua", true }, { "narakenkoland.net", true }, { "naralogics.com", true }, @@ -23545,7 +24763,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "narduin.xyz", true }, { "narenderchopra.com", true }, { "narfation.org", true }, - { "nargele.eu", true }, { "nargileh.nl", true }, { "narindal.ch", true }, { "narmos.ch", true }, @@ -23561,6 +24778,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nasbnation.com", false }, { "nascio.org", true }, { "naseco.se", true }, + { "nashdistribution.com", true }, + { "nashikmatka.com", true }, { "nashira.cz", true }, { "nashvillelidsurgery.com", true }, { "nashzhou.me", true }, @@ -23575,6 +24794,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "natatorium.org", true }, { "natchmatch.com", true }, { "natecraun.net", true }, + { "natgeofreshwater.com", true }, { "nathaliebaron.ch", true }, { "nathaliebaroncoaching.ch", true }, { "nathaliedijkxhoorn.com", true }, @@ -23582,6 +24802,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nathan.io", true }, { "nathanaeldawe.com", true }, { "nathancheek.com", false }, + { "nathankonopinski.com", true }, { "nathansmetana.com", true }, { "nathumarket.com.br", true }, { "nationalbank.gov", true }, @@ -23596,10 +24817,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nationaltrails.ru", true }, { "nationwiderealtyinvestors.com", true }, { "natives-team.ch", true }, + { "nativitynj.org", true }, { "nativs.ch", true }, { "natlec.com", true }, { "natropie.pl", true }, { "natsumihoshino.com", true }, + { "natur.com", true }, + { "natura-sense.com", true }, + { "naturalfit.co.uk", true }, + { "naturalhealthcures.net", true }, { "naturalkitchen.co.uk", true }, { "naturalspacesdomes.com", true }, { "naturaum.de", true }, @@ -23619,20 +24845,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nausicaahotel.it", true }, { "nautiljon.com", true }, { "nautsch.de", true }, + { "navarralanparty.org", true }, + { "navdeep.ca", true }, { "navenlle.com", true }, { "navienna.com", true }, { "navient.com", true }, - { "navigate-it-services.de", false }, { "navitime.me", true }, { "navstevnik.sk", true }, { "navycs.com", true }, { "nawir.de", true }, { "nayahe.ru", true }, + { "nayami64.xyz", true }, { "nayanaas.com", true }, { "nazevfirmy.cz", true }, { "nazigol.com", true }, + { "nazukebanashi.com", true }, { "nazuna.blue", true }, { "nb.zone", true }, + { "nb01.com", true }, { "nb6.de", true }, { "nba-2k.com", true }, { "nba.christmas", true }, @@ -23691,12 +24921,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nbgrooves.de", true }, { "nbhorsetraining.com", true }, { "nbib.gov", true }, - { "nbl.org.tw", true }, { "nbp.com.pk", true }, { "nbrain.de", true }, { "nbrii.com", true }, { "nbriresearch.com", true }, - { "nbtparse.org", true }, { "nbur.co.uk", true }, { "nc-beautypro.fr", true }, { "nc-formation.fr", true }, @@ -23709,6 +24937,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ncc-qualityandsafety.org", true }, { "nccemail.net", true }, { "ncdc.pt", true }, + { "ncea.net.au", true }, { "nchangfong.com", true }, { "nchponline.org", true }, { "ncic.gg", true }, @@ -23722,6 +24951,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ndcpolipak.com", true }, { "ndeoffshore.com", true }, { "nder.be", true }, + { "ndfa.net", true }, { "ndhlink.com", true }, { "ndpbrn-research.org", true }, { "nds-helicopter.de", true }, @@ -23744,6 +24974,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nebuluxcapital.com", true }, { "necessaryandproportionate.net", true }, { "necessaryandproportionate.org", true }, + { "nechiactua.com", true }, { "necormansir.com", true }, { "nectarleaf.com", true }, { "nedcdata.org", true }, @@ -23751,6 +24982,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nedlinin.com", true }, { "nedraconsult.ru", true }, { "nedys.top", true }, + { "neecist.org", true }, { "needemand.com", true }, { "needle.net.nz", true }, { "needle.nz", true }, @@ -23760,6 +24992,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "neemzy.org", true }, { "neet-investor.biz", true }, { "nefertitis.cz", true }, + { "neffat.si", true }, { "neflabs.com", true }, { "neftis.es", true }, { "neg9.org", false }, @@ -23781,7 +25014,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nejlevnejsi-parapety.cz", true }, { "neko-nyan-nuko.com", true }, { "neko-nyan.org", true }, - { "neko.ml", true }, { "nekodex.net", true }, { "nekolove.jp", true }, { "nekomimi.pl", true }, @@ -23795,15 +25027,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nellacms.com", true }, { "nellacms.org", true }, { "nellafw.org", true }, - { "nemanja.top", true }, { "nemcd.com", true }, { "nemecl.eu", true }, { "nemez.net", true }, { "nemo.run", true }, { "nemopan.com", true }, - { "nemplex.win", true }, + { "nemopret.dk", true }, { "nems.no", true }, { "nemumu.com", true }, + { "nemunai.re", true }, { "neo2shyalien.eu", false }, { "neobits.nl", true }, { "neocities.org", true }, @@ -23821,8 +25053,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "neonknight.ch", true }, { "neons.org", true }, { "neophilus.net", true }, + { "neos.co.jp", true }, { "neosdesignstudio.co.uk", true }, { "neostralis.com", true }, + { "neotist.com", true }, + { "neowa.tk", true }, { "neowlan.net", true }, { "neoxcrf.com", true }, { "neoz.com.br", true }, @@ -23830,7 +25065,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nepal-evolution.org", true }, { "nephelion.org", true }, { "nephos.xyz", true }, - { "nephy.jp", true }, { "nepovolenainternetovahazardnihra.cz", true }, { "nepremicninar.com", true }, { "nepremicnine.click", true }, @@ -23845,10 +25079,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nerdwallet.com", true }, { "nerdydev.net", true }, { "nerot.eu", true }, + { "nerpa-club.ru", true }, + { "nerull7.info", true }, { "nerven.se", false }, { "nesbase.com", true }, { "nesolabs.com", true }, { "nesolabs.de", true }, + { "nestedquotes.ca", true }, { "nesterov.pw", true }, { "nestor.nu", true }, { "neswec.org.uk", true }, @@ -23874,14 +25111,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "netducks.com", true }, { "netducks.space", true }, { "netera.se", true }, + { "neteraser.de", true }, + { "netexem.com", true }, { "netfabb.com", true }, { "netflixlife.com", true }, { "netfog.de", true }, { "netfuture.ch", true }, { "netfxharmonics.com", true }, - { "netguide.co.nz", true }, { "nethackwiki.com", true }, { "nethask.ru", true }, + { "nethostingtalk.com", true }, { "nethruster.com", true }, { "nethunter.top", true }, { "netki.com", true }, @@ -23897,6 +25136,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "netrider.net.au", false }, { "netrogue.ninja", true }, { "netronix.be", true }, + { "netsec.cloud", true }, { "netsigna.de", true }, { "netsite.dk", true }, { "netsoins.org", true }, @@ -23904,11 +25144,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "netsparker.com.tr", true }, { "netspeedia.net", true }, { "netsphere.cz", true }, - { "nettacompany.com.tr", true }, { "nettamente.com", true }, { "nette.org", true }, { "nettegeschenke.de", true }, { "nettia.fi", true }, + { "nettilamppu.fi", true }, { "netto-service.ch", true }, { "nettools.link", true }, { "nettopower.dk", true }, @@ -23921,14 +25161,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "netwarc.eu", true }, { "netwarc.nl", true }, { "netweaver.uk", true }, + { "network-midlands.co.uk", true }, + { "network-midlands.uk", true }, { "network-notes.com", true }, { "network23.nl", true }, { "networkersdiary.com", true }, + { "networking-groups.co.uk", true }, { "networking4all.com", true }, { "networkingnexus.net", true }, { "networkingphoenix.com", true }, + { "networkmidlands.co.uk", true }, + { "networkmidlands.uk", true }, + { "networkmon.net", true }, { "networkposting.com", true }, { "networth.at", true }, + { "netz-yokohama.co.jp", true }, { "netzfabrik.com", true }, { "netzfrauen.org", true }, { "netzwerkwerk.de", true }, @@ -23944,10 +25191,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "neurolab.no", true }, { "neuronasdigitales.com", true }, { "neuropharmacology.com", true }, + { "neurotransmitter.net", true }, { "neurozentrum-zentralschweiz.ch", true }, { "neutralox.com", false }, { "neuwal.com", true }, - { "neva.li", true }, { "never.pet", true }, { "nevergreen.io", true }, { "nevermore.fi", true }, @@ -23964,6 +25211,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "new-process.eu", true }, { "new.travel.pl", true }, { "newaccess.ch", true }, + { "newbasemedia.us", true }, { "newbietech.cn", false }, { "newborncryptocoin.com", false }, { "newburybouncycastles.co.uk", true }, @@ -23979,8 +25227,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "newcloudwhodis.com", true }, { "newcreamforface.com", true }, { "newday.host", true }, - { "newdeveloper.download", true }, { "newearth.press", true }, + { "newfangledscoop.com", true }, { "newfiepedia.ca", true }, { "newgrowbook.com", true }, { "newguidance.ch", true }, @@ -23989,12 +25237,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "newjianzhi.com", true }, { "newkaliningrad.ru", true }, { "newknd.com", true }, + { "newlifeband.de", true }, { "newmarketbouncycastlehire.co.uk", true }, { "newmed.com.br", true }, { "newmediaone.net", true }, { "newmovements.net", true }, + { "newmusicjackson.org", true }, { "newodesign.com", true }, { "newpathintegratedtherapy.com", true }, + { "newposts.ru", true }, { "newreleases.io", true }, { "news47ell.com", true }, { "newsa2.com", true }, @@ -24007,8 +25258,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "newtonproject.org", true }, { "newtrackon.com", true }, { "newvehicle.com", true }, + { "nex.li", true }, { "nex.sx", true }, - { "nexgeneration-solutions.com", true }, { "nexicafiles.com", true }, { "nexril.net", true }, { "next-web.ad.jp", true }, @@ -24019,13 +25270,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nextcasino.com", true }, { "nextcloud.co.za", true }, { "nextcloud.com", true }, + { "nextcloud.nerdpol.ovh", true }, { "nextend.net", true }, - { "nextend.org", true }, { "nextevolution.co.uk", true }, { "nextgen.sk", true }, { "nextgencel.com", true }, + { "nextgenthemes.com", true }, { "nextgreatmess.com", true }, { "nexthop.jp", true }, + { "nextiot.de", true }, + { "nextlevel-it.co.uk", true }, { "nextmbta.com", true }, { "nextme.se", true }, { "nextnely.com", true }, @@ -24034,6 +25288,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nextstep-labs.gr", true }, { "nexttv.co.il", true }, { "nexus-exit.de", true }, + { "nexus-vienna.at", true }, { "nexusconnectinternational.eu", true }, { "nexwebsites.com", true }, { "nexxus-sistemas.net.br", true }, @@ -24048,7 +25303,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nfl.duckdns.org", true }, { "nflmocks.com", true }, { "nfls.io", true }, - { "nfluence.org", true }, + { "nflsic.org", true }, { "nframe.io", true }, { "nfrost.me", true }, { "nfsec.pl", true }, @@ -24089,7 +25344,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nicesco.re", true }, { "nicestudio.co.il", false }, { "nichijou.com", true }, - { "nicholasperkins.io", true }, { "nicholaspruss.com", true }, { "nicholasquigley.com", true }, { "nicholaswilliams.net", true }, @@ -24100,14 +25354,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nickcraver.com", true }, { "nickdekruijk.nl", true }, { "nickguyver.com", true }, + { "nickhitch.co.uk", true }, { "nickloose.de", true }, { "nicklord.com", true }, + { "nickmertin.ca", true }, { "nickmorri.com", true }, { "nickplotnek.co.uk", true }, { "nickrickard.co.uk", true }, + { "nicks-autos.com", true }, { "nickscomputers.nl", true }, { "nickserve.com", true }, { "nickstories.de", true }, + { "nicktheitguy.com", true }, { "niclasreich.de", true }, { "nicn.me", true }, { "nico.st", true }, @@ -24122,7 +25380,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nicolasiung.me", true }, { "nicolaszambetti.ch", true }, { "nicolaw.uk", true }, - { "nicoleoquendo.com", true }, + { "nicolemathew.com", true }, { "niconico.ooo", true }, { "niconode.com", false }, { "nicoobook.com", true }, @@ -24131,7 +25389,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nidro.de", true }, { "nidsuber.ch", true }, { "niederohmig.de", true }, - { "niedersetz.de", true }, { "niehage.name", true }, { "nielshoogenhout.be", true }, { "nielshoogenhout.eu", true }, @@ -24153,13 +25410,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "niesstar.com", true }, { "nietzsche.com", true }, { "nieuwslagmaat.nl", true }, - { "niffler.software", true }, { "niftiestsoftware.com", true }, { "nigelwakefield.com", true }, { "nigensha.co.jp", true }, { "niggemeier.cc", true }, { "nigger.racing", true }, - { "niggo.eu", true }, { "night2stay.cn", true }, { "night2stay.com", true }, { "night2stay.de", true }, @@ -24172,6 +25427,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nightsi.de", true }, { "nightstand.io", true }, { "nightwinds.tk", true }, + { "nigt.cf", true }, { "nihon-no-sake.net", true }, { "nijiero-ch.com", false }, { "nijikata.com", true }, @@ -24190,6 +25446,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nikolasgrottendieck.com", true }, { "nikomo.fi", false }, { "nikoninframe.co.uk", true }, + { "nikonlibrary.co.uk", true }, { "nikonnps.co.uk", true }, { "nikonpromotions.co.uk", true }, { "nikonschool.co.uk", true }, @@ -24199,7 +25456,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "niles.xyz", true }, { "nilrem.org", true }, { "nimeshjm.com", true }, - { "nimidam.com", true }, { "nina-laaf.de", true }, { "ninaforever.com", true }, { "ninarinaldi.com.br", true }, @@ -24213,9 +25469,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ninetaillabs.xyz", true }, { "ninfora.com", true }, { "ninja-galerie.de", true }, + { "ninja-skillz.com", true }, { "ninjaworld.co.uk", true }, { "ninjio.com", true }, { "ninov.de", true }, + { "ninreiei.jp", true }, { "nintendoforum.no", true }, { "ninth.cat", true }, { "ninthfloor.org", true }, @@ -24223,14 +25481,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nipax.cz", true }, { "nipe-systems.de", true }, { "nippon-oku.com", true }, - { "nippon.fr", true }, { "niqex.com", true }, - { "nirjharstudio.com", true }, { "nirjonmela.com", true }, { "nirjonmela.net", true }, { "nirudo.me", true }, { "nissanofbismarckparts.com", true }, { "nitifilter.com", true }, + { "nitix.games", true }, { "nitrix.me", true }, { "nitrohorse.com", false }, { "nitrokey.com", true }, @@ -24238,13 +25495,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nitropur.com", true }, { "nitropur.de", true }, { "nitrous-networks.com", true }, + { "nitschinger.at", true }, { "niu.moe", true }, { "niva.synology.me", true }, { "nivi.ca", true }, { "nix.black", true }, - { "nixne.st", true }, { "nixonlibrary.gov", true }, + { "nixx-gel.cz", true }, { "niyawe.de", true }, + { "niyazpoyilan.com", false }, { "nja.id.au", true }, { "njast.net", true }, { "njguardtraining.com", true }, @@ -24255,6 +25514,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nkp-media.de", true }, { "nl-ix.net", true }, { "nl.search.yahoo.com", false }, + { "nl3ehv.nl", true }, { "nlap.ca", false }, { "nlbewustgezond.nl", true }, { "nlfant.eu", true }, @@ -24264,17 +25524,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nlrb.gov", true }, { "nlt.by", false }, { "nmd.so", true }, - { "nmgb.ga", true }, - { "nmgb.ml", true }, { "nmnd.de", true }, { "nmontag.com", true }, { "nn.cz", true }, + { "nn78.com", true }, { "nna774.net", true }, { "nnqc.nl", true }, { "no-ip.cz", true }, { "no-xice.com", true }, { "no.search.yahoo.com", false }, { "noagendahr.org", true }, + { "noahjacobson.com", true }, { "noahmodas.com.br", true }, { "noahsaso.com", true }, { "nobitakun.com", true }, @@ -24282,22 +25542,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nobleparkapartments.com.au", true }, { "nobly.de", true }, { "noc.org", true }, - { "noc.wang", true }, + { "nocit.dk", true }, { "nocks.com", true }, { "nocmd.com", true }, { "nocs.cn", true }, { "nodalr.com", true }, + { "nodari.com.ar", true }, { "nodariweb.com.ar", true }, - { "nodecompat.com", true }, { "nodecraft.com", true }, - { "nodefoo.com", true }, { "nodejs.de", true }, { "nodelab-it.de", true }, { "nodelia.com", true }, - { "nodepositcasinouk.com", true }, { "nodesec.cc", true }, { "nodesturut.cl", true }, - { "nodum.io", true }, + { "nodevops.com", true }, { "noeatnosleep.me", true }, { "noedidacticos.com", true }, { "noelclaremont.com", true }, @@ -24315,6 +25573,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nohttps.org", true }, { "nohup.se", true }, { "nohup.xyz", true }, + { "noima.com", true }, { "noincludesubdomains.preloaded.test", false }, { "noise.agency", true }, { "noisetor.net", true }, @@ -24322,7 +25581,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "noisky.cn", true }, { "noisyfox.cn", true }, { "nojestorget.se", true }, - { "nojok.es", true }, + { "nokia.la", true }, { "nokono.com", true }, { "nolaviz.org", true }, { "noleggio-bagni-chimici.it", true }, @@ -24332,7 +25591,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nomesbiblicos.com", true }, { "nomial.co.uk", true }, { "nomifensine.com", true }, + { "nomoondev.azurewebsites.net", true }, { "nomsy.net", true }, + { "nonabytes.xyz", true }, { "noname-ev.de", true }, { "nonametheme.com", true }, { "noncombatant.org", true }, @@ -24340,7 +25601,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "noobswhatelse.net", true }, { "noobunbox.net", true }, { "noodles.net.nz", true }, - { "noodleyum.com", true }, { "noodplan.co.za", true }, { "noodweer.be", true }, { "noofficewalls.com", true }, @@ -24348,9 +25608,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "noop.ch", true }, { "noordsee.de", true }, { "noorsolidarity.com", true }, + { "noortronic.com", true }, { "nootronerd.com", true }, { "nootropic.com", true }, - { "nootropicpedia.com", true }, { "noovell.com", true }, { "nopaste.xyz", true }, { "nopaynocure.com", true }, @@ -24362,20 +25622,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nordlichter-brv.de", true }, { "nordmoregatebilklubb.com", true }, { "nordnetz-hamburg.de", true }, - { "nordseeblicke.de", true }, + { "nordwal.de", true }, { "nordwaldzendo.de", true }, - { "noref.tk", true }, { "noreply.mx", true }, + { "norestfortheweekend.com", true }, + { "noret.com", true }, { "norichanmama.com", true }, { "noriel.ro", true }, { "normaculta.com.br", true }, - { "normalady.com", true }, { "norman-preusser-gmbh.de", true }, { "normanbauer.com", true }, { "normandgascon.com", true }, { "normankranich.de", true }, { "norrkemi.se", true }, { "norrliden.de", true }, + { "norsewars.com", true }, { "norskpensjon.no", true }, { "northatlantalaw.net", true }, { "northbrisbaneapartments.com.au", true }, @@ -24387,7 +25648,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "northern-lakes.com", true }, { "northerngate.net", true }, { "northernhamsterclub.com", true }, - { "northernmuscle.ca", true }, { "northernpage.com", true }, { "northernselfstorage.co.za", true }, { "northfieldyarn.com", true }, @@ -24413,23 +25673,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nosyu.pe.kr", true }, { "nota.moe", true }, { "notabug.org", true }, + { "notacooldomain.com", true }, { "notadd.com", true }, - { "notadd.store", true }, { "notallmine.net", true }, { "notalone.gov", true }, { "notar-glagowski.com", true }, { "notar-glagowski.de", true }, { "notar-peikert.com", true }, { "notare-marktplatz24.info", true }, + { "notarkrauss.de", true }, { "notarvysocina.cz", true }, { "notcompletelycorrect.com", true }, { "notepad.nz", true }, { "noteskeeper.ru", true }, { "noticiasdehumor.com", true }, - { "notificami.com", true }, { "notify.moe", true }, { "notinglife.com", true }, { "notjustvacs.com", true }, + { "notmybox.com", true }, { "notnize.net", true }, { "notnl.com", true }, { "notofilia.com", true }, @@ -24437,11 +25698,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "notoriousdev.com", true }, { "notrecourrier.net", true }, { "notsafefor.work", true }, - { "nottori.com", true }, { "nottres.com", true }, { "noudjalink.nl", true }, { "noustique.com", true }, { "nova-dess.ch", true }, + { "nova-kultura.org", true }, { "nova-wd.org.uk", true }, { "nova.live", true }, { "novabench.com", true }, @@ -24468,30 +25729,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "novoresume.com", false }, { "novosibavia.ru", true }, { "novurania.com", true }, - { "nowcost.com", true }, { "nowhere.dk", true }, { "nowitzki.me", true }, { "nowlas.org", true }, { "nowloading.co", true }, - { "nowremindme.com", true }, { "noxi.ga", true }, { "noxlogic.nl", true }, + { "noydeen.com", true }, { "noyocenter.org", true }, { "np-edv.at", true }, { "np.search.yahoo.com", false }, { "npath.de", true }, { "npcrcss.org", true }, { "npmcdn.com", true }, + { "npsas.org", true }, { "npw.net", true }, { "nqesh.com", true }, { "nqeshreviewer.com", true }, - { "nrc-gateway.gov", true }, { "nrd.li", true }, { "nrdstd.io", true }, { "nrev.ch", true }, { "nrkn.fr", true }, { "nrsweb.org", true }, - { "nrvn.cc", false }, { "ns-frontier.com", true }, { "ns2servers.pw", true }, { "nsa.lol", true }, @@ -24510,6 +25769,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nsp.ua", true }, { "nst-maroc.com", true }, { "nstd.net", true }, + { "nstremsdoerfer.ovh", true }, + { "nstrust.co.uk", true }, { "nsworks.com", true }, { "ntags.org", true }, { "ntcoss.org.au", true }, @@ -24522,6 +25783,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ntx360grad-fallakte.de", true }, { "ntzwrk.org", true }, { "nu-pogodi.net", true }, + { "nu3.com", true }, { "nu3.dk", true }, { "nu3.fi", true }, { "nu3.no", true }, @@ -24532,15 +25794,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nuamooreaindonesia.com", true }, { "nubella.com.au", true }, { "nubu.at", true }, + { "nuclea.site", true }, { "nuclearcat.com", true }, { "nucleuscore.org", true }, - { "nudestpics.com", true }, + { "nudevotion.com", true }, { "nuel.cl", true }, { "nuevaimagenpublicidad.es", true }, { "nuffield.nl", true }, { "nugdev.co", true }, { "null-life.com", true }, { "nullday.de", true }, + { "nulle-part.org", true }, { "nullonerror.org", true }, { "nullpointer.io", true }, { "nullroute.com", true }, @@ -24574,7 +25838,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nurses.dating", true }, { "nursingschool.network", true }, { "nuryahan.com.br", true }, - { "nusku.biz", true }, { "nussadoclub.org", true }, { "nutikell.com", true }, { "nutleyeducationalfoundation.org", true }, @@ -24584,7 +25847,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nutri-spec.me", true }, { "nutricaovegana.com", true }, { "nutriciametabolics-shop.de", true }, - { "nutrifyyourself.com", true }, { "nutripedia.gr", true }, { "nutrishop.com", true }, { "nutrivisa.com.br", true }, @@ -24599,41 +25861,48 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nwbc.gov", true }, { "nwerc.party", true }, { "nwgh.org", false }, + { "nwk1.com", true }, { "nwr-waffenbuch.de", true }, { "nwra.com", true }, { "nwuss.okinawa", true }, { "nwwc.dk", true }, { "nwwnetwork.net", true }, { "nxinfo.ch", true }, + { "nxit.ca", true }, + { "nxth.io", true }, { "nya.as", true }, + { "nyadora.com", true }, + { "nyadora.moe", true }, { "nyan.it", true }, { "nyan.stream", true }, { "nyanco.space", true }, + { "nyansparkle.com", true }, { "nyantec.com", true }, { "nybiz.nyc", true }, { "nycoyote.org", true }, - { "nyffo.com", true }, + { "nydig.com", true }, + { "nydnxs.com", true }, { "nyhaoyuan.net", true }, { "nyiad.edu", true }, { "nyip.co.uk", true }, { "nyip.edu", true }, { "nylevemusic.com", true }, { "nyloc.de", true }, - { "nylonfeetporn.com", true }, { "nymphetomania.net", true }, { "nynex.net", true }, { "nyoronfansubs.org", true }, { "nyphox.ovh", true }, - { "nystudio107.com", true }, + { "nys-hk.com", false }, { "nytrafficticket.com", true }, - { "nyuusannkinn.com", true }, { "nyxi.eu", true }, { "nyyu.tk", true }, { "nzb.cat", false }, + { "nzbr.de", true }, { "nzdmo.govt.nz", true }, { "nzstudy.ac.nz", true }, { "nzws.me", true }, { "o-loska.cz", true }, + { "o-results.ch", true }, { "o-sp.com", true }, { "o2careers.co.uk", true }, { "o3.wf", true }, @@ -24641,6 +25910,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "o6asan.com", true }, { "o8b.club", true }, { "oaic.gov.au", true }, + { "oakandresin.co", true }, { "oakesfam.net", true }, { "oakington.info", true }, { "oaklands.co.za", true }, @@ -24655,8 +25925,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oatmealdome.me", true }, { "oauth-dropins.appspot.com", false }, { "obamalibrary.gov", true }, + { "obamawhitehouse.gov", true }, { "oberhofdrinks.com", true }, { "obermeiers.eu", true }, + { "obesidadlavega.com", true }, { "obfuscate.xyz", true }, { "obg-global.com", true }, { "obitech.de", true }, @@ -24666,14 +25938,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oblast45.ru", false }, { "oboeta.com", true }, { "obono.at", true }, + { "obs.group", true }, { "obscur.us", true }, + { "obsessharness.com", true }, { "obsidianirc.net", true }, { "obsproject.com", true }, { "obtima.org", true }, { "obud.cz", true }, { "obyvateleceska.cz", true }, { "oc-sa.ch", true }, - { "ocad.com.au", true }, + { "ocarupo.com", true }, { "occenterprises.org", true }, { "occentus.net", true }, { "occmon.net", true }, @@ -24683,6 +25957,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oceandns.eu", true }, { "oceandns.net", true }, { "oceandns.nl", true }, + { "oceanlord.me", true }, { "oceanvisuals.com", true }, { "ocelot.help", true }, { "ocenovani-inspekce.cz", true }, @@ -24701,7 +25976,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ocrn.nl", true }, { "ocsigroup.fr", true }, { "ocsr.nl", true }, - { "octal.es", true }, { "octarineparrot.com", true }, { "octav.name", false }, { "octohedralpvp.tk", true }, @@ -24722,6 +25996,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oddtime.net", true }, { "odensc.me", true }, { "odifi.com", true }, + { "odinseye.net", true }, { "odoo.co.th", true }, { "odpikedoslike.com", true }, { "odtu.lu", true }, @@ -24739,15 +26014,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oemspace.net", true }, { "oemspace.nl", true }, { "oemwolf.com", true }, + { "oenings.eu", true }, { "ofcampuslausanne.ch", true }, { "ofda.gov", true }, { "offandonagain.org", true }, { "offbyinfinity.com", true }, { "offenekommune.de", true }, { "offenes-deutschland.de", true }, - { "offerstone.cl", true }, + { "offertegiuste.com", true }, { "offfbynight.be", true }, { "offgames.io", true }, + { "offgridhub.com", true }, { "office-discount.at", true }, { "office-discount.de", true }, { "office-furniture-direct.co.uk", true }, @@ -24761,12 +26038,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "offroadeq.com", true }, { "offshoot.rentals", true }, { "offshore.digital", true }, - { "ofggolf.com", true }, { "oflow.me", true }, { "oftamedic.com", true }, { "oftn.org", true }, { "oge.ch", true }, { "ogis.gov", true }, + { "oglen.ca", true }, { "ogocare.com", true }, { "oguya.ch", true }, { "ogyaa.jp", true }, @@ -24780,10 +26057,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ohhere.xyz", true }, { "ohiohealthfortune100.com", true }, { "ohling.org", true }, + { "ohmayonnaise.com", true }, { "ohne-name.de", true }, + { "ohnonotme.com", true }, + { "ohol.se", true }, { "ohsohairy.co.uk", true }, { "ohyooo.com", true }, + { "oi-wiki.org", true }, { "oiaio.cn", true }, + { "oilfieldinjury.attorney", true }, { "oilpaintingsonly.com", true }, { "oirealtor.com", true }, { "oisd.nl", true }, @@ -24793,14 +26075,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ojdip.net", true }, { "ojomovies.com", true }, { "ojp.gov", true }, - { "okad-center.de", true }, - { "okad.de", true }, - { "okad.eu", true }, { "okakuro.org", true }, { "okanaganrailtrail.ca", true }, { "okay.cf", true }, { "okay.coffee", true }, - { "okaz.de", true }, { "okburrito.com", true }, { "okchicas.com", true }, { "okchousebuyer.com", true }, @@ -24809,6 +26087,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "okib.ca", true }, { "okin-jp.net", true }, { "okinawa-mag.net", true }, + { "okmx.cloud", true }, { "okmx.de", true }, { "okna-tm.kz", true }, { "okonetwork.org.uk", true }, @@ -24822,23 +26101,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "olanderflorist.com", true }, { "olasouris.com", true }, { "olback.net", true }, + { "olbat.net", true }, { "olcayanar.com", true }, { "oldbrookinflatables.co.uk", true }, { "oldbrookmarqueehire.co.uk", true }, { "oldchaphome.nl", true }, { "oldenglishsheepdog.com.br", true }, + { "oldita.ru", true }, { "oldking.net", true }, { "oldnews.news", true }, + { "oldno07.com", true }, { "oldoakflorist.com", true }, { "oldprop.com", true }, + { "oldroutetwo.com", true }, { "oldtimerreifen-moeller.de", true }, { "olegon.ru", true }, { "olegs.be", true }, { "oleksii.name", true }, { "oleodecopayba.com.br", true }, + { "oles-hundehaus.de", true }, + { "olfnewcastle.com", true }, { "olgiati.org", true }, { "olgui.net", true }, { "olgun.eu", true }, + { "olifant.fr", true }, { "olightstore.com", true }, { "olightstore.ro", true }, { "oliode.tk", true }, @@ -24848,6 +26134,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oliveoiltimes.com", true }, { "oliveraiedelabastideblanche.fr", true }, { "oliverclausen.com", true }, + { "oliverfaircliff.com", true }, { "olivernaraki.com", true }, { "oliverniebuhr.de", true }, { "oliverspringer.eu", true }, @@ -24868,27 +26155,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "olltechjob.com", true }, { "olmari.fi", true }, { "olmsted.io", true }, - { "ols.io", true }, { "olygazoo.com", true }, { "olymp-arts.world", true }, { "olympiads.ca", true }, { "olympic-research.com", true }, { "om1.com", true }, { "omanko.porn", true }, - { "omar.yt", true }, + { "omarsuniagamusic.ga", true }, { "omdesign.cz", true }, { "omegahosting.net", true }, { "omegathermoproducts.nl", true }, { "omertabeyond.com", true }, { "omertabeyond.net", true }, { "ometepeislandinfo.com", true }, - { "omeuanimal.com", true }, { "omf.link", true }, { "omfg.exposed", true }, { "omgbouncycastlehire.co.uk", true }, { "omi-news.fr", true }, { "omifind.com", true }, - { "omise.co", true }, { "omitech.co.uk", true }, { "omlmetal.co.jp", true }, { "omniasig.ro", true }, @@ -24901,7 +26185,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "omnisky.dk", true }, { "omnitrack.org", true }, { "omniverse.ru", true }, - { "omorashi.org", true }, + { "omoide-hitokoto.com", true }, { "omori.ch", true }, { "omoteura.com", true }, { "omranic.com", true }, @@ -24918,6 +26202,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oncf.asso.fr", true }, { "oncodedesign.com", true }, { "ond-inc.com", true }, + { "ond-inc.jp", true }, { "ondcp.gov", true }, { "onderwijstransparant.nl", true }, { "ondrej.org", true }, @@ -24931,6 +26216,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "onebigcow.com", true }, { "oneclic.ch", true }, { "oneclickonejob.com", true }, + { "onedegreehealth.com", true }, + { "onedot.nl", true }, { "onedottwelve.co.jp", true }, { "onedottwelve.com", true }, { "onedrive.com", true }, @@ -24940,7 +26227,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oneheartbali.church", true }, { "oneidentity.me", true }, { "oneiroi.co.uk", true }, - { "oneiros.cc", true }, { "onemid.net", true }, { "oneminute.io", false }, { "onemoonmedia.de", true }, @@ -24950,6 +26236,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "onepointsafeband.com", true }, { "onepointzero.com", true }, { "oneprediction.com", true }, + { "onesnzeroes.com", false }, { "onesports.cz", true }, { "onestepfootcare.com", true }, { "onestopcastles.co.uk", true }, @@ -24966,6 +26253,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "onhub1.com", true }, { "oni.nl", true }, { "onice.ch", true }, + { "onionbot.me", true }, { "onionplay.live", true }, { "onionplay.org", true }, { "onionscan.org", true }, @@ -24986,12 +26274,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "online-stopwatch.com", true }, { "online.marketing", true }, { "online.net.gr", true }, - { "online.swedbank.se", true }, { "online24.pt", true }, { "onlinebizdirect.com", false }, { "onlinecasino.vlaanderen", true }, { "onlinecensorship.org", true }, { "onlinecollegeessay.com", true }, + { "onlinecorners.com", true }, { "onlinefashion.it", true }, { "onlineinfographic.com", true }, { "onlinekmc.com", true }, @@ -25000,7 +26288,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "onlinelighting.com.au", true }, { "onlinemarketingtraining.co.uk", true }, { "onlinepokerspelen.be", true }, - { "onlineporno.tv", true }, + { "onlineporno.xyz", true }, { "onlinerollout.de", true }, { "onlinestoreninjas.com", true }, { "onlineth.com", false }, @@ -25011,9 +26299,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "onlylebanon.net", true }, { "onmaps.de", true }, { "onmarketbookbuilds.com", true }, - { "onnee.ch", true }, + { "onnaguse.com", true }, { "onnext.cc", true }, - { "ono.es", true }, { "onoranze-funebri.biz", true }, { "onpay.io", true }, { "onpermit.net", true }, @@ -25026,6 +26313,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ontdekhetzelf.nu", true }, { "onthebriteside.com", true }, { "ontras.com", false }, + { "ontsnappingskamer.nl", true }, { "onurer.net", true }, { "onvey.io", true }, { "onvirt.de", true }, @@ -25045,6 +26333,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oosoo.org", true }, { "ooyo.be", true }, { "op11.co.uk", false }, + { "opadaily.com", true }, { "opalesurfcasting.net", true }, { "oparl.org", true }, { "opcenter.de", true }, @@ -25053,8 +26342,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "open-bs.com", true }, { "open-bs.ru", true }, { "open-desk.org", true }, - { "open-domotics.info", true }, { "open-freax.fr", true }, + { "open-gaming.net", true }, { "open-infrastructure.net", true }, { "open-letters.de", true }, { "open-mesh.org", true }, @@ -25065,13 +26354,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "openacte.ch", true }, { "openas.org", true }, { "openbankproject.com", true }, + { "openbayes.com", true }, { "openbeecloud.com", true }, { "openblox.org", true }, { "openbsd.id", true }, + { "opencad.io", true }, { "opencircuit.nl", true }, { "openclima.com", true }, { "opencluster.at", true }, { "opencrm.co.uk", true }, + { "opendata.cz", true }, { "opendataincubator.eu", true }, { "opendecide.com", true }, { "openfir.st", true }, @@ -25114,9 +26406,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "openwaveguide.de", true }, { "openwifi.gr", true }, { "openwireless.org", true }, - { "operad.fr", true }, { "operationforever.com", true }, { "opfin.com", true }, + { "ophis-phosphoros.com", true }, { "opiates.ca", true }, { "opin.me", true }, { "opioids.co.uk", true }, @@ -25125,26 +26417,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oplop.appspot.com", true }, { "opoleo.com", false }, { "oportho.com.br", true }, + { "oportunidadesemfoco.com.br", true }, { "opp.ag", true }, - { "oppag.com.br", true }, { "oppaiti.me", true }, { "oppejoud.ee", true }, { "opportunis.me", true }, - { "opposer.me", true }, + { "opportunity.de", true }, + { "oppwa.com", true }, { "opq.pw", true }, { "oprbox.com", true }, { "oprechtgezegd.nl", true }, { "oprueba.com", true }, { "opryshok.com", true }, + { "ops-com.com", true }, { "opsmate.com", false }, - { "opsnotepad.com", true }, { "opti-net.at", true }, { "opticaltest.com", true }, - { "optiekzien.nl", true }, { "optik-trosdorff.de", true }, { "optimalsetup.com", true }, + { "optimised.cloud", true }, + { "optimised.io", true }, + { "optimisedlabs.co.uk", true }, { "optimisedlabs.com", true }, - { "optimize-jpg.com", true }, + { "optimisedlabs.info", true }, + { "optimisedlabs.net", true }, + { "optimisedlabs.uk", true }, + { "optimist.bg", true }, + { "optimizedlabs.co.uk", true }, + { "optimizedlabs.info", true }, + { "optimizedlabs.net", true }, + { "optimizedlabs.uk", true }, { "optimumwebdesigns.com", true }, { "optimus.io", true }, { "optimuscrime.net", true }, @@ -25153,6 +26455,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "optmos.at", true }, { "optometryscotland.org.uk", true }, { "optoutday.de", true }, + { "opure.ru", true }, { "opus-codium.fr", true }, { "oraculum.cz", true }, { "orang-utans.com", true }, @@ -25161,12 +26464,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "orangefinanse.com.pl", true }, { "orangejetpack.com", true }, { "orangenbaum.at", true }, - { "orangenuts.in", true }, - { "oranges.tokyo", true }, - { "orangetravel.eu", true }, { "orangutan-appeal.org.uk", true }, { "orbu.net", true }, - { "orcahq.com", true }, + { "orca.pet", true }, { "orcamoney.com", true }, { "orchideenettoyage.com", true }, { "orchidlive.com", true }, @@ -25177,13 +26477,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ordernow.at", true }, { "orderswift.com", true }, { "ordr.mobi", true }, + { "oreka.online", true }, { "oreshinya.xyz", true }, { "oreskylaw.com", true }, { "oreto.de", true }, { "orf-digitalsatkarte.at", false }, { "orf-kartentausch.at", false }, { "organica.co.za", true }, - { "organicae.com", true }, { "organisatieteam.nl", true }, { "organisationsberatung-jacobi.de", true }, { "organix.ma", true }, @@ -25200,11 +26500,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "originalniknihy.cz", true }, { "origincoffee.com", true }, { "origincoffee.nz", true }, + { "originpc.com", false }, { "orikadabra.nl", true }, { "orikum.org", true }, { "orimex-mebel.ru", true }, { "orion-universe.com", true }, { "orioncokolada.cz", true }, + { "orionfinancialservices.com", true }, { "oriongames.eu", true }, { "orkestar-krizevci.hr", true }, { "orkiv.com", true }, @@ -25221,7 +26523,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "orthotictransfers.com", true }, { "ortlepp.eu", true }, { "ortodonciaian.com", true }, - { "orui.com.br", true }, { "orwell1984.today", true }, { "oryva.com", true }, { "orz.uno", true }, @@ -25230,8 +26531,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "os-t.de", true }, { "os24.cz", true }, { "osacrypt.studio", true }, - { "osaka-fukushi.jp", true }, - { "osaka-jusan.jp", true }, { "osaka-onakura.com", true }, { "osakeannit.fi", true }, { "osao.org", true }, @@ -25241,6 +26540,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "osburn.com", true }, { "oscamp.eu", true }, { "oscarvk.ch", true }, + { "oscloud.com", true }, { "osepideasthatwork.org", true }, { "osereso.tn", true }, { "oses.mobi", true }, @@ -25254,8 +26554,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oslinux.net", true }, { "osm.is", true }, { "osmanlitorunu.com", true }, + { "osmestres.com", true }, { "osmosis.org", true }, { "osmre.gov", true }, + { "osnova.cz", true }, + { "osobliwydom.pl", true }, + { "osomjournal.org", true }, + { "ospf.sk", true }, { "ospree.me", true }, { "osquery.io", true }, { "ostan-collections.net", true }, @@ -25274,14 +26579,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "otakubox.de", true }, { "otakurepublic.com", true }, { "otakurumi.de", true }, + { "otakuyun.com", true }, { "otchecker.com", true }, { "otellio.com", true }, { "otellio.de", true }, { "otellio.it", true }, - { "otherkinforum.com", true }, { "oticasaopaulo.com.br", true }, { "oticasvisao.net.br", true }, - { "otmns.net", true }, { "otorrino.pt", true }, { "otoy.com", true }, { "otoya.space", true }, @@ -25291,19 +26595,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "otsfreestyle.jp", true }, { "otsu.beer", true }, { "ottoproject.io", true }, + { "ottoversand.at", true }, { "otus-magnum.com", true }, { "otvaracie-hodiny.sk", true }, { "otya.me", true }, + { "ouaibe.qc.ca", true }, { "ouattara.ch", true }, { "ouestsolutions.com", true }, { "ouglor.com", true }, { "ouimoove.com", true }, + { "ouin.land", true }, { "oulunjujutsu.com", true }, { "ouowo.gq", true }, + { "our-box.net", true }, { "ourai.ws", true }, { "ourcloud.at", true }, + { "ourdocuments.gov", true }, { "ourevents.net", true }, - { "ourls.win", true }, { "ouruglyfood.com", true }, { "ourwedding.xyz", true }, { "ourworldindata.org", true }, @@ -25332,9 +26640,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "outlookonthedesktop.com", true }, { "outpostinfo.com", true }, { "outsideconnections.com", true }, + { "outsiders.paris", true }, { "ovelhaostra.com", true }, { "overalglas.nl", true }, { "overamsteluitgevers.nl", true }, + { "overclockers.ge", true }, { "overdrive-usedcars.be", true }, { "overkillshop.com", true }, { "overseamusic.de", true }, @@ -25343,6 +26653,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "overstap.deals", true }, { "overstappen.nl", true }, { "overstemmen.nl", true }, + { "overstockpromote.com", true }, { "overthecloud.it", true }, { "overthinkingit.com", true }, { "overtrolls.de", true }, @@ -25362,14 +26673,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "owl-square.com", true }, { "owl-stat.ch", true }, { "owl.net", true }, + { "owlandrabbitgallery.com", true }, { "owlishmedia.com", true }, { "own3d.ch", true }, { "ownc.at", true }, { "ownmay.com", true }, - { "oxanababy.com", true }, { "oxborrow.ca", true }, { "oxelie.com", true }, { "oxo.cloud", true }, + { "oxygaming.com", true }, { "oxygin.net", true }, { "oxytocin.org", true }, { "oyosoft.fr", true }, @@ -25388,8 +26700,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "p-t.io", true }, { "p.ki", true }, { "p1984.nl", false }, + { "p1cn.com", true }, { "p1ratrulezzz.me", true }, { "p4chivtac.com", true }, + { "p5118.com", true }, { "p5r.uk", true }, { "pa-w.de", true }, { "pa.search.yahoo.com", false }, @@ -25398,30 +26712,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "paas-inf.net", true }, { "paass.net", true }, { "paazmaya.fi", true }, - { "pablo.im", true }, - { "pablo.scot", true }, - { "pablo.sh", true }, - { "pabloarteaga.co.uk", true }, - { "pabloarteaga.com", true }, - { "pabloarteaga.com.es", true }, - { "pabloarteaga.es", true }, - { "pabloarteaga.eu", true }, - { "pabloarteaga.info", true }, - { "pabloarteaga.me", true }, - { "pabloarteaga.name", true }, - { "pabloarteaga.net", true }, - { "pabloarteaga.nom.es", true }, - { "pabloarteaga.org", true }, - { "pabloarteaga.science", true }, - { "pabloarteaga.tech", true }, - { "pabloarteaga.uk", true }, - { "pabloarteaga.xyz", true }, { "pabuzo.vn", true }, { "pacatlantic.com", true }, { "pacco.com.br", true }, { "pace.car", true }, { "paceda.nl", true }, { "pacelink.de", true }, + { "pacifco.com", true }, + { "pacificcashforcars.com.au", true }, { "pacificpalisadeselectric.com", true }, { "pacificpalisadeselectrical.com", true }, { "pacificpalisadeselectrician.com", true }, @@ -25437,13 +26735,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "packer.io", true }, { "packetdigital.com", true }, { "packetlinux.com", true }, + { "packshot-creator.com", true }, + { "pact2017.nl", true }, { "pactf.com", true }, { "padam-group.com", true }, { "padberx-marketing-consultants.de", true }, { "paddy.rocks", true }, - { "padeoe.com", true }, { "padianda.com", true }, - { "padovani.de", true }, { "padpilot.co", true }, { "padrepio.in", true }, { "padron.com.es", true }, @@ -25456,6 +26754,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pagalworld.info", true }, { "pagalworld.la", true }, { "pagalworld.me", true }, + { "pagalworld.org", true }, { "page-builders.com", true }, { "pageantsnews.com", false }, { "pagedesignhub.com", true }, @@ -25463,12 +26762,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pagedesignshop.com", true }, { "pagedesignweb.com", true }, { "pagefulloflies.io", true }, + { "pageperform.com", true }, { "pagewizz.com", true }, { "pagiamtzis.com", true }, { "pagina.com.mx", true }, { "pagure.io", true }, { "pahae.de", true }, { "pahealthbilling.com", true }, + { "pahlawanpulsa.com", true }, { "paichai.space", false }, { "paincareehr.com", true }, { "paindata.dk", true }, @@ -25479,11 +26780,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "paintcolorsbysue.com", true }, { "paintingindurban.co.za", true }, { "paipuman.jp", true }, - { "paizinhovirgula.com", true }, { "pajadam.me", true }, { "pajuvuo.fi", true }, - { "paketkreditsuzuki.com", true }, { "paketo.cz", true }, + { "paketo.sk", true }, { "paketwatch.de", false }, { "pakho.xyz", true }, { "pakistani.dating", true }, @@ -25495,9 +26795,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "palatin.at", true }, { "palava.tv", true }, { "palavatv.com", true }, - { "palawan.jp", false }, { "palazzo.link", true }, { "palazzo.work", true }, + { "paleolowcarb.de", true }, { "paleotraining.com", true }, { "palladium46.com", true }, { "pallas.in", true }, @@ -25532,8 +26832,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pandymic.com", true }, { "paneldewelopera.pl", true }, { "paneu.de", true }, + { "panic.tk", true }, { "panier-legumes.bio", true }, { "panj.ws", true }, + { "panjee.fr", true }, { "panlex.org", true }, { "panmetro.com", true }, { "panoma.de", true }, @@ -25552,8 +26854,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "panthur.com.au", false }, { "pantographe.info", true }, { "pantou.org", false }, + { "pants-off.xyz", true }, { "panzer72.ru", true }, - { "paolo565.org", true }, { "pap.la", false }, { "papa-webzeit.de", true }, { "papadopoulos.me", true }, @@ -25565,11 +26867,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "papelcraft.co.uk", true }, { "paper-driver.biz", true }, { "paper-republic.org", true }, + { "paper.sc", true }, { "paperhoney.by", true }, + { "paperlesssolutionsltd.com.ng", true }, { "papertracker.net", true }, { "paperturn.com", true }, { "paperwallets.io", true }, - { "paperwork.co.za", true }, { "paperwritinghelp.net", true }, { "papiermakerijdehoop.nl", true }, { "papiermeteenverhaal.nl", true }, @@ -25587,23 +26890,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "paradiselost.com", true }, { "paradoxdesigns.org", true }, { "paragonie.com", false }, + { "paragonremodeling.com", true }, { "paragreen.net", true }, + { "paranoidcrypto.com", true }, { "paranoidmode.com", true }, { "paranoidpenguin.net", true }, { "paranoxer.hu", true }, { "parasitologyclub.org", true }, { "paratlan.hu", true }, { "paratxt.org", true }, - { "parav.xyz", true }, { "parcelbroker.co.uk", true }, { "parchcraftaustralia.com", true }, { "parckwart.de", true }, { "parcon.it", true }, + { "parentelement.com", true }, { "parentheseardenne.be", true }, { "parentinterview.com", true }, { "parentsintouch.co.uk", true }, { "pariga.co.uk", true }, { "paris-store.com", true }, + { "parisbloom.com", true }, { "parisderriere.fr", true }, { "parisescortgirls.com", true }, { "parisfranceparking.com", true }, @@ -25612,6 +26918,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "parisfranceparking.nl", true }, { "parisprovincedemenagements.fr", true }, { "parkeren.in", true }, + { "parkfans.net", true }, + { "parkhost.eu", true }, { "parkinginparis.fr", true }, { "parkingpoint.co.uk", true }, { "parkrunstats.servehttp.com", true }, @@ -25626,21 +26934,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "parolu.io", true }, { "parquettista.milano.it", true }, { "parquettista.roma.it", true }, + { "parroquiasanrafaeldegramalote.com", true }, { "parry.org", true }, { "parsemail.org", true }, { "parser.nu", true }, { "parsonsfamilyhomes.com", true }, { "partage.ovh", true }, - { "parteaga.com", true }, - { "parteaga.net", true }, { "partecipa.tn.it", true }, { "parthkolekar.me", true }, { "participatorybudgeting.de", true }, { "participatorybudgeting.info", true }, + { "partijhandel.website", true }, { "partijtjevoordevrijheid.nl", false }, + { "partiono.com", true }, { "partiwatch.com", true }, { "partner.sh", true }, { "partnerbeam.com", true }, + { "partnermobil.de", true }, { "partnersfcu.org", true }, { "partou.de", true }, { "partridge.tech", true }, @@ -25664,9 +26974,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "partytownireland.co.uk", true }, { "partytownmarquees.co.uk", true }, { "partyvan.io", true }, + { "partyyy.io", true }, { "partyzone.ie", true }, + { "parvaneh.fr", true }, { "pasadenapooch.org", true }, { "pasadenasandwich.co", true }, + { "pasadenasandwich.com", true }, { "pasadenasandwichcompany.com", true }, { "pasalt.com", true }, { "pasarella.eu", true }, @@ -25690,8 +27003,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "passfilesafe.com", true }, { "passfoto-deinfoto.ch", true }, { "passieposse.nl", true }, + { "passionandbalance.com", true }, { "passionatefoodie.co.uk", true }, { "passionatehorsemanship.com", true }, + { "passionatelife.com.au", true }, + { "passionebenessere.com", true }, { "passionpictures.eu", true }, { "passions-art.com", true }, { "passphrase.today", true }, @@ -25719,7 +27035,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "passwordsecurity.info", true }, { "passworks.io", true }, { "passy.pw", true }, - { "pasta-factory.co.il", true }, { "pastaenprosecco.nl", true }, { "paste.fedoraproject.org", true }, { "paste.gg", true }, @@ -25734,8 +27049,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pastormaremanoabruzes.com.br", true }, { "pastorsuico.com.br", true }, { "pasztor.at", true }, + { "patapwn.com", true }, { "patatbesteld.nl", true }, { "pataterosviajeros.com", true }, + { "patbatesremodeling.com", false }, { "patdorf.com", true }, { "patechmasters.com", true }, { "patentados.com", true }, @@ -25754,12 +27071,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "patrickbrosi.de", true }, { "patricklynch.xyz", true }, { "patrickmcnamara.xyz", true }, - { "patrickschneider.me", true }, { "patrikgarten.de", true }, { "patriksima.cz", true }, { "patriksimek.cz", true }, { "patriotstationatchalfont.com", true }, { "patrz.eu", true }, + { "patsch-photography.de", true }, { "patsyforyou.ch", true }, { "patsytoforyou.ch", true }, { "pattonfanatic.com", true }, @@ -25774,6 +27091,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "paulbakaus.com", true }, { "paulbdelaat.nl", true }, { "paulbramhall.uk", true }, + { "paulcooper.me.uk", true }, + { "pauldev.co", true }, + { "paulerhof.com", true }, { "paulewen.ca", true }, { "paulinewesterman.nl", true }, { "paulmeier.com", false }, @@ -25787,11 +27107,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "paulschreiber.com", true }, { "paulscustomauto.com", true }, { "paulswartz.net", true }, - { "paultibbetts.uk", false }, { "paulus-foto.pl", true }, { "paulward.net", true }, { "paulwatabe.com", true }, { "paulwendelboe.com", true }, + { "pauly-stahlhandel.com", true }, + { "pauly-stahlhandel.de", true }, { "pauspam.net", true }, { "pautadiaria.com", true }, { "pavando.com", true }, @@ -25803,9 +27124,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pawel-international.com", true }, { "pawelnazaruk.com", true }, { "pawelurbanek.com", true }, + { "pawfriends.org.za", true }, { "pawsomebox.co.uk", true }, { "pawsr.us", true }, - { "pawsru.org", true }, { "paxerahealth.com", true }, { "pay.gov", true }, { "pay8522.com", true }, @@ -25814,7 +27135,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "payboy.rocks", true }, { "paybro.eu", true }, { "payfazz.com", true }, - { "paykings.com", true }, { "paylike.io", true }, { "payloc.io", true }, { "payme.uz", true }, @@ -25824,6 +27144,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "paymerang.com", true }, { "paymill.com", true }, { "paymill.de", true }, + { "paynet.com.co", true }, { "payoff.com", true }, { "paypal.com", false }, { "paypaq.com", true }, @@ -25843,11 +27164,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pback.se", true }, { "pbosquet.com", true }, { "pbourhis.me", true }, + { "pbqs.site", true }, { "pbr.so", true }, { "pbraunschdash.com", true }, + { "pbreen.co.uk", true }, { "pbrumby.com", true }, { "pbz.im", true }, { "pc-rescue.me", false }, + { "pc-servis-brno.com", true }, { "pcbricole.fr", true }, { "pccentral.nl", true }, { "pcdocjim.com", true }, @@ -25873,17 +27197,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pcsetting.com", true }, { "pctonic.net", true }, { "pctrouble.net", true }, + { "pculiar.com", true }, { "pdf-archive.com", true }, { "pdfconvert.me", true }, { "pdfmint.com", true }, { "pdfpassword.org", true }, { "pdfpasswort.de", true }, { "pdfresizer.com", true }, + { "pdfsearch.org", true }, + { "pdfsearches.com", true }, { "pdox.net", true }, { "pdragt.com", true }, { "pdthings.net", true }, { "pdxtowncar.net", true }, { "pe.search.yahoo.com", false }, + { "peacedivorce.com", true }, { "peaceispossible.cc", true }, { "peaceloveandlabor.com", true }, { "peak-careers.com", true }, @@ -25946,26 +27274,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pehapkari.cz", true }, { "peifi.de", false }, { "peippo.at", true }, + { "peka.pw", true }, { "pekkapleppanen.fi", true }, { "pekoe.se", true }, { "pelanucto.cz", true }, { "pelican.ie", true }, - { "peliseries24.com", true }, { "pelletizermill.com", true }, { "pelletsprice.com", true }, { "pelopogrund.com", true }, { "pelopoplot.com", true }, { "pelotonimports.com", true }, + { "pems.gov.au", true }, { "penaugustin.com", true }, { "pencepay.com", true }, { "pencillab.cn", true }, { "pendriveapps.com", true }, { "penetrationstest.se", true }, + { "penfold.fr", true }, { "pengi.me", true }, { "penguindrum.moe", true }, { "penguinprotocols.com", true }, { "penispumpen.se", true }, { "pennergold.net", true }, + { "pennington.io", true }, { "pennyparkerpaper.com", true }, { "penrithapartments.com.au", true }, { "pens.com", true }, @@ -25973,7 +27304,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pensador.com", true }, { "pensador.info", true }, { "pensioenfonds-ey.nl", true }, - { "pension-veldzigt.nl", true }, { "pensionpilot.ca", true }, { "penslabyrinth.com", true }, { "pentandra.com", true }, @@ -25986,10 +27316,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "penz.media", true }, { "peoplelikemeapp.com", true }, { "peoplesbankal.com", true }, + { "peoplesdecade.org", true }, { "peoplesguardian.org", true }, { "pepemodelismo.com.br", true }, { "peplog.nl", true }, { "pepwaterproofing.com", true }, + { "pequenosfavoritos.com.br", true }, + { "per-olsson.se", true }, { "pera.gs", true }, { "perala.me", true }, { "peraparker.cz", true }, @@ -25998,7 +27331,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "percy.io", true }, { "perd.re", true }, { "perecraft.com", true }, - { "perez-marrero.com", true }, { "perezdecastro.org", true }, { "perfect.in.th", true }, { "perfectbalance.tech", true }, @@ -26009,7 +27341,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "perfektesgewicht.de", true }, { "performancehealth.com", true }, { "performancesantafe.org", true }, - { "performaride.com.au", true }, { "perfumeaz.com", true }, { "perfumes.com.br", true }, { "periscope.tv", true }, @@ -26033,8 +27364,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "perroquet-passion.ch", true }, { "persephone.gr", true }, { "personal-genome.com", true }, + { "personal-injury-attorney.co", true }, { "personaltrainer-senti.de", true }, - { "personcar.com.br", true }, { "perspectivum.com", true }, { "perspektivwechsel-coaching.de", true }, { "persson.me", true }, @@ -26051,7 +27382,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pesyun.cn", true }, { "pet-hotel-mura.net", true }, { "petabits.de", true }, - { "petangen.se", true }, + { "petalkr.com", true }, + { "petbooking.it", true }, { "petcarvers.com", true }, { "petdesign.pet", true }, { "peteboc.com", true }, @@ -26064,13 +27396,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "peterbruceharvey.com", true }, { "peterdavehello.org", true }, { "peterfiorella.com", true }, - { "peterfolta.net", true }, { "peterhuetz.at", true }, { "peterhuetz.com", true }, + { "peterjin.org", true }, { "peterjohnson.io", true }, + { "peterkshultz.com", false }, { "peterlew.is", true }, - { "petermazur.com", true }, - { "peters.consulting", true }, { "petersontoscano.com", true }, { "petervanleeuwentweewielers.nl", true }, { "petfa.ga", true }, @@ -26081,13 +27412,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "petko.me", true }, { "petlife.vet", true }, { "petmall.bg", true }, + { "peto.nl", true }, { "petofiprogram.hu", true }, { "petplus.com", true }, { "petpost.co.nz", false }, { "petpower.eu", true }, - { "petrachuk.ru", true }, + { "petr.as", true }, { "petrasestakova.cz", true }, - { "petravdbos.nl", true }, + { "petresort.pt", true }, { "petroscand.eu", true }, { "petrostathis.com", true }, { "petrpikora.com", true }, @@ -26097,6 +27429,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pettitcoat.com", true }, { "petwall.info", true }, { "pew.ninja", true }, + { "pewnews.org", true }, { "pex.digital", true }, { "peyote.com", true }, { "pf.dk", true }, @@ -26104,6 +27437,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pfadfinder-aurich.de", true }, { "pfadfinder-grossauheim.de", true }, { "pfarchimedes-pensioen123.nl", true }, + { "pfarre-kremsmuenster.at", true }, { "pfcafeen.dk", true }, { "pfd-nz.com", false }, { "pferdekauf.de", true }, @@ -26117,9 +27451,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pfmeasure.com", true }, { "pfo.io", true }, { "pfotentour-berlin.de", true }, + { "pfrost.me", true }, { "pfudor.tk", true }, { "pg-forum.de", true }, { "pg-mana.net", true }, + { "pgh-art.com", true }, + { "pglandscapingpaving.com", true }, { "pgmann.cf", true }, { "pgnetwork.net", true }, { "pgp.guru", true }, @@ -26142,20 +27479,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pharmasana.de", true }, { "pharmica.co.uk", true }, { "pharmica.uk", true }, + { "pharside.dyndns.org", true }, { "pharynks.com", true }, { "pharynx.nl", true }, { "phasersec.com", false }, { "phasme-2016.com", true }, + { "phattea.tk", true }, { "phaux.uno", true }, { "phcimages.com", true }, { "phcorner.net", true }, { "phdhub.it", true }, - { "phelx.de", true }, { "phenixairsoft.com", true }, { "phget.com", true }, { "phi-works.com", true }, { "phialo.de", true }, + { "phil-dirt.com", true }, { "phil-phillies.com", true }, + { "phil.tw", true }, { "philadelphia.com.mx", true }, { "phileas-psychiatrie.be", true }, { "philia-sa.com", true }, @@ -26173,7 +27513,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "philippinedroneassociation.org", true }, { "philippkeschl.at", true }, { "phillipgoldfarb.com", true }, - { "phillipsuk.com", true }, { "phillyinjurylawyer.com", true }, { "philna.sh", true }, { "philosoftware.com.br", true }, @@ -26184,14 +27523,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "philsown.de", true }, { "philsturgeon.uk", true }, { "philux.ch", true }, - { "phippsreporting.com", true }, { "phishing-studie.org", true }, - { "phishing.rs", true }, { "phishingusertraining.com", true }, { "phligence.com", true }, { "phocean.net", true }, { "phoenixlogan.com", true }, { "phone-service-center.de", true }, + { "phonix-company.fr", true }, { "phormance.com", true }, { "phosagro.biz", false }, { "phosagro.com", false }, @@ -26207,6 +27545,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "photodeal.fr", true }, { "photographe-reims.com", true }, { "photographersdaydream.com", true }, + { "photography-workshops.net", true }, { "photolium.net", true }, { "photomodelcasting.com", true }, { "photon.sh", true }, @@ -26220,7 +27559,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "phpbbchinese.com", true }, { "phpdistribution.com", true }, { "phpdorset.co.uk", true }, - { "phpinfo.in.th", true }, { "phpkari.cz", true }, { "phpliteadmin.org", true }, { "phpmyadmin.net", true }, @@ -26239,9 +27577,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "phus.lu", true }, { "physicalism.com", true }, { "physicalist.com", true }, + { "physicaltherapist.com", false }, { "physicpezeshki.com", true }, { "physiotherapie-seiwald.de", true }, { "physiovesenaz.ch", true }, + { "pi-box.ml", true }, { "pi-control.de", true }, { "pi-dash.com", true }, { "pi-net.dedyn.io", true }, @@ -26249,9 +27589,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pianetaottica.com", true }, { "pianetaottica.it", true }, { "pianetatatuaggi.it", true }, + { "pianomover.co.uk", true }, { "pianyigou.com", true }, { "piatabrasil.com.br", true }, - { "piatanoua.md", true }, { "piboubes.me", true }, { "pic.gov", true }, { "pic.sr", true }, @@ -26281,8 +27621,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "picturingjordan.com", true }, { "pidginhost.com", true }, { "pidjipi.com", true }, + { "pie-express.xxx", true }, { "pieces-or.com", true }, - { "piedfeed.com", true }, { "pieinsurance.com", true }, { "piekacz.eu.org", true }, { "piekacz.net", true }, @@ -26305,35 +27645,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pieterhordijk.com", true }, { "pietermaene.be", false }, { "pietz.uk", true }, - { "pigritia.de", true }, - { "piils.fr", true }, + { "pigs.pictures", true }, { "pijuice.com", true }, { "pik.bzh", true }, { "pikeitservices.com.au", true }, { "pikimusic.moe", true }, { "pilani.ch", true }, { "pilarguineagil.com", true }, + { "pilatescenteraz.com", true }, { "pildat.org", true }, { "pileofgarbage.net", true }, { "piliszek.net", true }, { "pill.id", true }, { "pilot.co", true }, - { "pilotandy.com", true }, { "pilotgrowth.com", true }, { "pilsoncontracting.com", true }, { "pilvin.pl", true }, { "pimhaarsma.nl", true }, { "pimhaarsmamedia.nl", true }, - { "pimpmypaper.com", true }, { "pimpmyperf.fr", true }, { "pinceaux.org", true }, { "pincha.com.tw", false }, { "pincodeit.com", true }, { "pindanutjes.be", false }, - { "pineapplesapp.com", true }, { "pinemountainnursery.com.au", true }, { "pinemountbaptistchurch.org", true }, - { "pinesandneedles.com", true }, { "pingworks.com", true }, { "pingworks.de", true }, { "pingworks.eu", true }, @@ -26350,13 +27686,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pinklecfest.org", true }, { "pinklittlenotebook.com", true }, { "pinkwalk.co.nz", true }, - { "pinkyf.com", true }, + { "pinkylam.me", true }, + { "pinnacleallergy.net", true }, { "pinnaclelife.co.nz", true }, { "pinnaclelife.nz", true }, { "pinnacles.com", true }, { "pinner.io", true }, { "pinoydailytvshow.net", true }, - { "pinoylinux.org", true }, + { "pinoyonlinetv.com", true }, { "pinoytech.ph", true }, { "pinpayments.com", true }, { "pinpointengineer.co.uk", true }, @@ -26370,9 +27707,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pinterest.ie", true }, { "pinterest.info", true }, { "pinterest.jp", true }, - { "pintoselectrician.co.za", true }, + { "pintosplumbing.co.za", true }, { "pioneer-car.eu", true }, { "pioneer-rus.ru", true }, + { "pipenny.net", true }, { "pipocao.com", true }, { "piranil.com", true }, { "pirate.trade", true }, @@ -26382,6 +27720,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pirateproxy.cam", true }, { "pirateproxy.cat", true }, { "pirateproxy.cc", true }, + { "pirateproxy.gdn", true }, { "pirateproxy.ist", true }, { "pirateproxy.la", true }, { "pirateproxy.one", true }, @@ -26396,6 +27735,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pircher.co.uk", true }, { "pires.ovh", true }, { "pirman.es", true }, + { "piroleikki.co.jp", true }, { "piruchita.com", true }, { "pirxpilot.me", true }, { "piscine.roma.it", true }, @@ -26411,26 +27751,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pittmantraffic.co.uk", true }, { "pivotaltracker.com", true }, { "pivotanimation.org", true }, + { "piwko.co", true }, { "pix5.de", true }, { "pixabay.com", true }, + { "pixe2019.org", true }, { "pixel.facebook.com", false }, { "pixel.google.com", true }, { "pixelbash.de", true }, { "pixelcubed.com", true }, - { "pixelesque.uk", true }, { "pixelfou.com", true }, { "pixelminers.net", true }, { "pixelpirat.ch", true }, - { "pixelpoint.io", true }, { "pixelrain.info", true }, { "pixelsquared.us", true }, { "pixelurbia.com", true }, { "pixelution.at", true }, + { "pixelz.cc", true }, { "pixiv.cat", true }, { "pixiv.moe", true }, { "pixivimg.me", true }, { "pixloc.fr", true }, { "pizala.de", true }, + { "pizza-show.fr", true }, { "pizzabesteld.nl", true }, { "pizzabottle.com", false }, { "pizzacook.ch", true }, @@ -26439,28 +27781,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pizzagigant.hu", true }, { "pizzahut.ru", true }, { "pizzalongaway.it", true }, + { "pizzamc.eu", true }, { "pizzeria-mehrhoog.de", true }, { "pizzeriaamadeus.hr", true }, { "pizzeriacolore.com", true }, - { "pj00100.com", true }, - { "pj00200.com", true }, - { "pj00300.com", true }, - { "pj00400.com", true }, - { "pj00600.com", true }, - { "pj00700.com", true }, - { "pj00800.com", true }, - { "pj00900.com", true }, + { "pj009.com", true }, { "pj539999.com", true }, { "pjentertainments.co.uk", true }, + { "pjili.com", true }, { "pjleisure.co.uk", true }, { "pjo.no", true }, { "pjuu.com", false }, { "pk.search.yahoo.com", false }, { "pkbjateng.com", true }, - { "pkbjateng.or.id", true }, { "pkgt.de", false }, { "pkirwan.com", true }, - { "pko.ch", true }, + { "pkisolutions.com", true }, { "pkov.cz", true }, { "pkphotobooths.co.uk", true }, { "pksps.com", true }, @@ -26481,11 +27817,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "plainmark.com", true }, { "plaintech.net.au", true }, { "plaintray.com", true }, + { "plaisirdumouvement.com", true }, { "plan-immobilier.fr", true }, { "planboardapp.com", true }, { "planecon.nz", true }, - { "planeexplanation.com", true }, { "planer.me", true }, + { "planespotterblog.de", true }, { "planet-laas.de", true }, { "planet-work.com", true }, { "planetanim.fr", true }, @@ -26500,6 +27837,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "planetknauer.net", true }, { "planetofthegames.tv", true }, { "planetromeofoundation.org", true }, + { "planetsoftware.com.au", true }, { "planformation.com", true }, { "planify.io", true }, { "planitz.com", true }, @@ -26510,6 +27848,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "planmemberpartners.com", true }, { "plannedlink.com", true }, { "planningexcellence.com.au", true }, + { "planolowcarb.com", true }, { "plant-gift.jp", true }, { "plantarum.com.br", true }, { "plantastique.ch", true }, @@ -26519,6 +27858,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "plantezcheznous.com", true }, { "plantrustler.com", true }, { "planujemywesele.pl", true }, + { "planup.fr", true }, { "plaque-funeraire.fr", true }, { "plassmann.ws", true }, { "plasti-pac.ch", true }, @@ -26541,23 +27881,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "playanka.com", true }, { "playawaycastles.co.uk", true }, { "playdaysparties.co.uk", true }, + { "playerdb.co", true }, { "playerscout.net", true }, { "playform.cloud", true }, { "playhappywheelsunblocked.com", true }, - { "playkh.com", true }, { "playkinder.com", true }, + { "playnation.io", true }, { "playocean.net", true }, { "playpirates.com", true }, { "playreal.city", true }, { "playsharp.com", true }, { "playsnake.org", true }, - { "playsoundevents.be", true }, { "playtictactoe.org", true }, { "playtimebouncycastles.co.uk", true }, - { "playyou.be", true }, + { "playupnow.com", true }, + { "playviolinmusic.com", true }, { "playzonecastles.co.uk", true }, + { "plazasummerlin.com", true }, { "pld-entertainment.co.uk", true }, { "pldx.org", true }, + { "pleaseuseansnisupportedbrowser.ml", true }, { "plegro.com", true }, { "pleiades.com.tr", true }, { "pleier-it.de", false }, @@ -26567,13 +27910,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "plesse.pl", true }, { "plexa.de", true }, { "plexhome13.ddns.net", true }, + { "plexi.dyndns.tv", true }, + { "plexmark.tk", true }, { "plextv.de", true }, { "pliosoft.com", true }, { "plissee-experte.de", true }, { "plitu.de", true }, { "plixer.com", true }, + { "plny.eu", true }, { "plob.org", true }, { "plochka.bg", true }, + { "plokko.com", true }, { "plongee-phuket.fr", true }, { "ploofer.com", true }, { "plot.ly", true }, @@ -26593,22 +27940,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "plumbingbenoni.co.za", true }, { "plumbingcentral.com.au", true }, { "plumbingglenvista.co.za", true }, - { "plumbingman.com.au", true }, { "plumlocosoft.com", true }, { "plumnet.ch", true }, { "plumpie.net", false }, { "plumplat.com", true }, { "plur.com.au", true }, { "plural.cafe", true }, + { "plurr.me", true }, { "plus-5.com", true }, { "plus.google.com", false }, { "plus.sandbox.google.com", true }, - { "pluscbdoil.com", false }, - { "plushev.com", true }, + { "plus1s.site", true }, + { "pluscbdoil.com", true }, { "pluslink.co.jp", true }, { "plusstreamfeed.appspot.com", true }, { "plustech.id", true }, { "pluta.net", true }, + { "plutiedev.com", true }, { "pluto.life", true }, { "plutokorea.com", true }, { "plutopia.ch", true }, @@ -26630,6 +27978,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pmarques.info", true }, { "pmartin.tech", true }, { "pmbc.org", true }, + { "pmbtf.com", true }, { "pmconference.ch", true }, { "pmf.gov", true }, { "pmg-offshore-company.com", true }, @@ -26637,6 +27986,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pmg-purchase.net", true }, { "pmgnet.de", true }, { "pmklaassen.com", true }, + { "pmnaish.co.uk", true }, { "pmoreau.org", true }, { "pmp-art.com", true }, { "pmponline.de", true }, @@ -26663,7 +28013,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pochaneko.com", true }, { "pocitacezababku.cz", true }, { "pocketfruity.com", true }, - { "pocketfullofapps.com", true }, + { "pocketinsure.com", true }, { "podemos.info", true }, { "podia.com.gr", false }, { "podroof.com", true }, @@ -26677,12 +28027,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "poezja.com.pl", true }, { "poezjagala.pl", true }, { "poffenhouse.ddns.net", true }, + { "pogera.com", true }, { "pogrebisky.net", true }, + { "pohlednice-tap.cz", true }, { "pohlmann.io", true }, { "poinsot.info", true }, { "pointaction.com", true }, { "pointhost.de", true }, - { "points4unitedway.com", true }, { "pointsgame.net", true }, { "pointsixtyfive.com", true }, { "pointum.com", true }, @@ -26690,15 +28041,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "poitiers-ttacc-86.eu.org", true }, { "pojer.me", true }, { "pokalsocial.de", true }, + { "pokazy-iluzji.pl", true }, { "pokefarm.com", true }, { "pokeinthe.io", true }, { "pokemondb.net", true }, + { "pokemonlab.com", true }, + { "pokemonsimulator.com", true }, { "pokemontabletopadventures.com", true }, { "pokemori.jp", true }, { "pokepon.center", true }, { "pokl.cz", true }, { "polaire.org", true }, { "polanda.com", true }, + { "polar-baer.com", true }, { "polar.uk.com", true }, { "pole-emotion.ch", true }, { "poleacademie.com", true }, @@ -26708,8 +28063,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "policesromandesrecrutement.ch", true }, { "policyreporter.com", true }, { "policyreporter.us", true }, + { "polinet.de", true }, { "polis.or.at", true }, { "polis.to", false }, + { "polis812.ru", true }, { "polish-dictionary.com", true }, { "polish-flag.com", true }, { "polish-translations.com", true }, @@ -26722,6 +28079,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "polishwomen.com", true }, { "polit.im", true }, { "politic.org.ua", true }, + { "politicachubut.com.ar", true }, { "politiezoneriho.be", true }, { "politik-bei-uns.de", true }, { "polizeiwallis.ch", true }, @@ -26735,21 +28093,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "polly.spdns.org", true }, { "poloniainfo.com", true }, { "poloniex.co.za", true }, + { "polska-robota.com.ua", true }, { "polskiemalzenstwo.org", true }, { "poly-fast.com", true }, { "polycraftual.co.uk", true }, { "polyfill.io", true }, - { "polyfluoroltd.com", true }, + { "polyfluoroltd.com", false }, { "polygamer.net", true }, { "polymake.org", true }, { "polymathematician.com", true }, + { "polymorph.rs", true }, { "polynomapp.com", true }, { "polypane.rocks", true }, { "polypet.com.sg", true }, + { "polyr.xyz", true }, { "polytarian.com", true }, { "polytekniskforening.dk", true }, { "pomar.club", false }, - { "pomardaserra.com", true }, { "pomelo-paradigm.com", true }, { "pomfeed.fr", true }, { "pommedepain.fr", true }, @@ -26769,6 +28129,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ponydesignclub.nl", true }, { "ponyfoo.com", true }, { "ponzi.life", true }, + { "poodlefan.net", true }, { "pookl.com", true }, { "poolspondsandwaterscapes.com", true }, { "poolvilla-margarita.net", false }, @@ -26779,7 +28140,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pop3.jp", true }, { "popcat.ru", true }, { "popcornpalacefundraising.com", true }, - { "popcultureshack.com", true }, { "popeyes.com", true }, { "popinga.it", true }, { "popmagz.com", true }, @@ -26793,18 +28153,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "porg.es", true }, { "pork.org.uk", true }, { "porkel.de", true }, - { "porn77.info", true }, - { "pornbay.org", true }, - { "porncandi.com", true }, - { "pornfacefinder.com", true }, + { "pornfacefinder.com", false }, { "pornhubhd.biz", true }, { "porniwi.com", true }, { "pornloupe.com", true }, - { "porno-gif.ru", true }, - { "pornohub.su", true }, - { "pornolab-net.appspot.com", false }, + { "pornofilmovi.us", true }, { "pornomens.be", true }, - { "pornoserver.eu", true }, { "pornspider.to", true }, { "porpcr.com", true }, { "pors-sw.cz", true }, @@ -26819,7 +28173,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "portal.tirol.gv.at", true }, { "portalcarriers.com", true }, { "portalcentric.net", true }, - { "portalhubnuti.cz", false }, { "portalkla.com.br", true }, { "portalzine.de", true }, { "portamiinpista.it", true }, @@ -26836,6 +28189,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "portsmoutheic.com", true }, { "portugal-a-programar.pt", true }, { "portugalsko.net", true }, + { "portvincentcaravanpark.com.au", true }, { "porybox.com", true }, { "pos.co.tz", true }, { "posalji.me", true }, @@ -26855,6 +28209,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "post-darwinism.com", true }, { "post.com.ar", true }, { "post.io", true }, + { "post.we.bs", true }, { "postal.dk", true }, { "postal3.es", true }, { "postblue.info", true }, @@ -26880,20 +28235,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "potature.rimini.it", true }, { "potature.roma.it", true }, { "potentialproject.com", false }, + { "potenzprobleme-info.net", true }, { "pothe.com", true }, { "pothe.de", true }, { "potolok.am", true }, { "potrillionaires.com", true }, { "potterscraftcider.com", true }, { "pottersheartministry.org", true }, + { "pottreid.com", true }, { "pottshome.co.uk", true }, { "potworowski.de", true }, + { "potzwonen.nl", true }, { "poudlard.fr", true }, + { "poundwholesale.co.uk", true }, { "pour-la-culture-aulnay.fr", true }, { "pourlesenfants.info", true }, { "pouwels-oss.nl", true }, { "povareschka.ru", true }, { "povesham.tk", true }, + { "pow-s.com", true }, + { "pow.jp", true }, { "powelljones.co.uk", true }, { "power-coonies.de", true }, { "power-fit.org", true }, @@ -26905,13 +28266,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "powerdent.net.br", true }, { "poweredbyiris.nl", true }, { "poweredbypurdy.com", true }, + { "powerfortunes.com", true }, { "powermatic7.com", true }, { "powermeter.at", true }, { "powermint.de", true }, + { "powerplaywashers.com", true }, { "powerpointschool.com", true }, { "powerserg.org", true }, { "powersergdatasystems.com", true }, { "powersergholdings.com", true }, + { "powersergthisisthetunnelfuckyouscott.com", true }, { "powersergthisisthewebsitefuckyouscott.com", true }, { "powersergusercontent.com", true }, { "powertothebuilder.com", true }, @@ -26919,14 +28283,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pozemedicale.org", true }, { "pozlife.net", true }, { "pozzitiv.ro", true }, + { "pp-server.com", true }, { "pp3345.net", true }, { "ppcrestaurants.com", true }, - { "ppembed.com", true }, { "ppipe.net", true }, + { "pplsoft.nl", true }, { "pplsvc.com", true }, { "ppmathis.ch", true }, { "ppmathis.com", true }, { "ppmoon.com", true }, + { "ppoou.co.uk", true }, + { "ppoozl.com", true }, { "ppro.com", true }, { "pptavmdata.org", true }, { "ppy.la", true }, @@ -26936,7 +28303,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pr2studio.com", true }, { "prac.to", true }, { "pracowniatkanin.com", true }, - { "practicalprogrammer.tech", true }, { "practiceflow.nl", true }, { "practicepanther.com", true }, { "practo.com", true }, @@ -26951,9 +28317,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "prakhar.uk", true }, { "prakharprasad.com", true }, { "praktijkdevecht.nl", true }, + { "praktijkpassepartout.nl", true }, { "praxino.de", true }, { "praxis-dingeldey.de", true }, { "praxis-familienglueck.de", true }, + { "praxis-odermath.de", true }, { "prayerrequest.com", true }, { "prazeresdavida.com.br", true }, { "prazynka.pl", true }, @@ -26964,9 +28332,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "preciscx.com", true }, { "preciseassemblies.com", true }, { "precision.st", true }, + { "precisiondigital-llc.com", true }, { "precode.eu", true }, { "predoiu.ro", true }, - { "preexport.com", true }, { "prefix.eu", true }, { "pregono.com", true }, { "pregunteleakaren.gov", true }, @@ -26984,7 +28352,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "prelved.nl", true }, { "prelved.pl", true }, { "prelved.se", true }, - { "premaritalsex.info", true }, { "prematureacceleration.club", true }, { "premierbouncycastles.co.uk", true }, { "premieresloges.ca", false }, @@ -26992,23 +28359,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "premierheart.com", true }, { "premierjewelersjax.com", true }, { "premiership-predictors.co.uk", true }, + { "premiumcredit.am", true }, { "premiumweb.co.id", true }, { "premiumwebdesign.it", true }, { "prenatalgeboortekaartjes.nl", true }, { "prepaid-cards.xyz", true }, { "prepaid-voip.nl", true }, - { "prepaidgirl.com", true }, { "prepaidkredietkaart.be", true }, { "prepare-job-hunting.com", true }, + { "preposted.com", true }, { "presbee.com", true }, + { "presbvm.org", true }, { "prescotonline.co.uk", true }, { "present-m.com", true }, { "presentesdegrife.com.br", true }, { "president.bg", true }, { "prespanok.sk", true }, + { "pressakey.com", true }, + { "pressakey.de", true }, { "presscenter.jp", true }, { "pressertech.com", true }, { "presses.ch", true }, + { "presskr.com", true }, { "pressography.org", true }, { "pressrush.com", true }, { "pressup.it", true }, @@ -27020,7 +28392,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "prestigerepairs.com.au", true }, { "prestigesigns.net", true }, { "prestonandsons.com.au", true }, - { "prestonapp.com", true }, { "prestonbrant.com", true }, { "pretachique.com.br", true }, { "pretix.eu", true }, @@ -27034,17 +28405,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "priceremoval.net", true }, { "pricesniffer.co", true }, { "prideindomination.com", true }, - { "pridetechdesign.com", true }, { "prielwurmjaeger.de", true }, + { "primaconsulting.net", true }, { "primalbase.com", true }, { "primalinea.pro", true }, { "primates.com", true }, { "primewho.org", true }, - { "primordialsnooze.com", true }, + { "primoloyalty.com", true }, { "primorus.lt", true }, { "primotilesandbathrooms.co.uk", false }, { "princeagency.com", true }, - { "princesparktouch.com", true }, { "princessefoulard.com", true }, { "principalsexam.com", true }, { "principalship.net", true }, @@ -27059,9 +28429,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "prinice.org", true }, { "printeknologies.com", true }, { "printerleasing.be", true }, - { "printexpress.cloud", true }, { "printf.de", true }, - { "printler.com", true }, { "printmet.com", true }, { "printus.de", true }, { "prior-it.be", true }, @@ -27096,6 +28464,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "privacy-week.at", true }, { "privacy.com", true }, { "privacybadger.org", true }, + { "privacychick.com", true }, + { "privacychick.io", true }, + { "privacyforjournalists.org.au", true }, { "privacyinternational.org", true }, { "privacyscore.org", true }, { "privacyweek.at", true }, @@ -27115,6 +28486,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "privatewolke.com", true }, { "privatfrei.de", true }, { "privatpatient-krankenhaus.de", true }, + { "privcloud.cc", true }, { "privea.fr", true }, { "privelust.nl", true }, { "priverify.com", true }, @@ -27132,12 +28504,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pro-link.eu", true }, { "pro-mile.pl", true }, { "pro-netz.de", false }, + { "pro-taucher.com", true }, + { "pro-taucher.de", true }, { "pro-wiert.pl", true }, + { "proadvanced.com", true }, { "proautorepairs.com.au", true }, { "probase.ph", true }, { "probely.com", true }, { "probiv.biz", true }, { "probiv.cc", true }, + { "procarservices.com", true }, { "procens.us", true }, { "procensus.com", true }, { "procert.ch", true }, @@ -27145,7 +28521,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "procharter.com", true }, { "procinorte.net", true }, { "proclib.org", true }, + { "procrastinatingengineer.co.uk", true }, { "procrastinationland.com", true }, + { "procreditbank-kos.com", true }, { "procreditbank.com.al", true }, { "proctorio.com", true }, { "prodct.info", true }, @@ -27153,6 +28531,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "prodietix.cz", true }, { "prodigia.com", false }, { "prodinger.com", true }, + { "prodottogiusto.com", true }, { "prodsim.ninja", true }, { "producepromotions.com", true }, { "producertools.io", true }, @@ -27196,20 +28575,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "progiscad.com", true }, { "programistka.com", true }, { "programlama.tk", true }, - { "programmaticmagic.com", true }, + { "programsareproofs.com", true }, { "programsupport300procent.com", true }, { "progreso.pl", true }, { "progress-linux.org", true }, { "progress.photos", true }, { "progressive.work", true }, { "progressiveplanning.com", true }, + { "progressnet.nl", true }, { "prohrcloud.com", true }, { "proimpact.it", true }, { "project.supply", true }, + { "project86fashion.com", true }, { "projectarmy.net", false }, { "projectblackbook.us", true }, + { "projectborealisgitlab.site", false }, { "projectcastle.tech", true }, { "projectforge.org", true }, + { "projectlinuseasttn.org", true }, { "projectnom.com", true }, { "projectsecretidentity.com", true }, { "projectsecretidentity.org", true }, @@ -27218,22 +28601,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "projest.ch", true }, { "projet-fly.ch", true }, { "prok.pw", true }, + { "prolan.pw", true }, { "prolearningcentre.com", true }, + { "prolinos.de", true }, { "prometheanfire.net", true }, { "prometheanfire.org", true }, { "promisesaplus.com", true }, + { "promo-brille.at", true }, + { "promo-brille.ch", true }, + { "promo-brille.de", true }, { "promo-computers.nl", true }, { "promo-matelas.com", true }, { "promods.net", true }, { "promohulp.nl", true }, { "promolover.com", true }, { "promopony.com", true }, + { "promorder.ru", true }, { "promoscuola.net", true }, + { "promoteiq.com", true }, { "promoterms.com.au", true }, { "promotioncentre.co.uk", true }, { "promozione.info", true }, - { "pronostic-king.fr", true }, { "pronto-intervento.net", true }, + { "prontointerventoimmediato.it", true }, { "prontossl.com", true }, { "proobec.cz", true }, { "proofwiki.org", true }, @@ -27246,6 +28636,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "properticons.com", true }, { "property-catalogue.eu", true }, { "propertygroup.pl", true }, + { "propertyinside.id", true }, { "propertyone.mk", true }, { "prophiler.de", true }, { "propipesystem.com", true }, @@ -27254,17 +28645,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "proprietairesmaisons.fr", true }, { "propseller.com", true }, { "proseandleprechauns.com", true }, + { "prosharp.com.au", true }, { "prospanek.cz", true }, + { "prosperfit.com", true }, { "prosperontheweb.com", true }, { "prospo.co", true }, - { "prostohobby.ru", true }, - { "prostoporno.net", true }, { "prostoporno.sexy", true }, { "prostye-recepty.com", true }, { "prosurveillancegear.com", true }, - { "prot.ch", true }, + { "prot.ch", false }, + { "protech.ge", true }, + { "protectedreport.com", true }, { "protectem.de", true }, { "protectoraanimalesalicante.org", true }, + { "protectr.de", true }, { "protege.moi", true }, { "protegetudescanso.com", true }, { "protein-riegel-test.de", true }, @@ -27284,16 +28678,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "proust.media", false }, { "proustmedia.de", false }, { "provectus.de", true }, + { "proveits.me", false }, { "provence-appartements.com", true }, + { "providencecmc.com", true }, { "providerlijst.com", true }, { "providerlijst.nl", true }, { "provision-isr.nl", true }, - { "provisionircd.tk", true }, { "provitec.com", true }, { "provitec.de", true }, { "provokator.co.il", true }, { "prowebcenter.com", true }, { "prowise.com", true }, + { "prowise.me", true }, { "proximityradio.fr", true }, { "proxybay.bz", true }, { "proxybay.co", true }, @@ -27303,9 +28699,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "proxybay.tv", true }, { "proxyportal.eu", true }, { "proxyportal.net", true }, - { "proymaganadera.com", true }, { "prpferrara.it", true }, { "prplz.io", true }, + { "prpr.cloud", true }, { "prt.in.th", true }, { "prtimes.com", true }, { "prtpe.com", true }, @@ -27314,6 +28710,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pruma.com.br", true }, { "prvikvadrat.hr", true }, { "prylarprylar.se", true }, + { "prynhawn.com", true }, + { "prynhawn.net", true }, + { "prynhawn.org", true }, { "pryspry.com", true }, { "prytkov.com", true }, { "przemas.pl", true }, @@ -27329,6 +28728,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "psbarrett.com", true }, { "psc.gov", true }, { "pschierl.com", true }, + { "pscp.tv", true }, { "pscr.gov", true }, { "psdreams.com", true }, { "psdsfn.com", true }, @@ -27336,7 +28736,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pself.net", true }, { "pseta.ru", true }, { "psg.bg", true }, + { "pshostpk.com", true }, + { "psici.eu", true }, { "psicoexpansao.com.br", true }, + { "psicologajanainapresotto.com.br", true }, { "psicologasandrabernal.es", true }, { "psicologoforensemadrid.com", true }, { "psm.org.ph", true }, @@ -27362,18 +28765,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "psycho-lobby.com", true }, { "psycho.space", true }, { "psychoactive.com", true }, + { "psychoco.net", false }, { "psychologie-hofner.at", true }, { "psychotherapie-kp.de", true }, { "psydix.org", true }, { "psylab.cc", true }, - { "psylab.re", true }, - { "psylab.vip", true }, { "psytrance-pro.com", true }, + { "pt-d.ru", true }, { "pt-server.de", true }, { "ptal.eu", true }, { "ptbi.org.pl", true }, { "ptbx.co", true }, { "pterodactylus.cz", true }, + { "ptfiber.com", true }, + { "ptfiber.ru", true }, + { "ptfiber.spb.ru", true }, { "ptgoldensun.com", true }, { "pthsec.com", true }, { "ptm.ro", false }, @@ -27381,6 +28787,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ptrbrs.nl", true }, { "ptrl.ws", true }, { "ptron.org", true }, + { "pty.gg", true }, { "puac.de", true }, { "pubean.com", true }, { "pubi.me", true }, @@ -27397,11 +28804,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "publicrea.com", true }, { "publicsuffix.org", true }, { "publiq.space", true }, + { "pubmire.com", true }, { "pubreview.com.au", true }, { "pubreviews.com", true }, { "pucchi.net", true }, { "pucssa.org", true }, { "puddis.de", true }, + { "puggan.se", true }, { "pugovka72.ru", true }, { "puhka.me", true }, { "puissancemac.ch", true }, @@ -27421,11 +28830,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pupboss.com", true }, { "puppet.pl", true }, { "puq.moe", true }, + { "puralps.ch", true }, { "puravida-estate.com", true }, { "pure-gmbh.com", true }, { "purecabo.com", true }, - { "pureessentialoil.biz", true }, - { "pureholisticliving.me", true }, + { "purefkh.xyz", true }, { "pureitsolutionsllp.com", true }, { "purelunch.co.uk", true }, { "purevapeofficial.com", true }, @@ -27435,6 +28844,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "purplebricks.com", true }, { "purplebricks.com.au", true }, { "purplebricksplc.com", true }, + { "purplegrapegames.com", true }, { "purplemet.com", true }, { "purplemoon.ch", true }, { "purplemoon.mobi", true }, @@ -27447,16 +28857,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "purrfect-box.co.uk", true }, { "purrfectboudoir.com", true }, { "purrfectmembersclub.com", true }, + { "pursuedtirol.com", true }, { "puryearlaw.com", true }, { "pusatinkubatorbayi.com", true }, { "pushers.com.mx", true }, + { "pushphp.com", true }, { "pushrax.com", true }, + { "pusichatka.ddns.net", true }, { "put.moe", true }, { "put.re", true }, { "putatara.net", true }, { "putman-it.nl", true }, { "putney.io", true }, { "putomani.rs", true }, + { "putrock.be", true }, { "puurwonengeldrop.nl", false }, { "puxlit.net", true }, { "puyallupnissanparts.com", true }, @@ -27472,10 +28886,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pvpcraft.ca", true }, { "pvpctutorials.de", true }, { "pvtschlag.com", true }, + { "pwaresume.com", true }, { "pwdsafe.com", true }, { "pwe.vision", true }, + { "pwnedpass.tk", true }, { "pwnies.dk", true }, { "pwolk.com", true }, + { "pxl.cl", true }, { "pxx.io", true }, { "py-amf.org", true }, { "py.search.yahoo.com", false }, @@ -27488,12 +28905,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pypi.io", true }, { "pypi.org", true }, { "pypi.python.org", true }, + { "pyramidsofchi.com", true }, + { "pyrios.pro", true }, { "pyrotechnologie.de", true }, { "pysays.net", true }, { "pyspace.org", true }, { "python-hyper.org", true }, { "python.org", false }, + { "pyxo.net", true }, { "pyzlnar.com", true }, + { "pzpittsburgh.com", true }, { "pzsearch.nl", true }, { "q-inn.com", true }, { "q-inn.nl", true }, @@ -27508,7 +28929,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "qaconstrucciones.com", true }, { "qadmium.com", true }, { "qambarraza.com", true }, - { "qamrulhaque.com", true }, { "qapital.com", true }, { "qaz.cloud", true }, { "qbeing.info", true }, @@ -27532,29 +28952,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "qetesh.de", true }, { "qetic.co.jp", true }, { "qewc.com", true }, + { "qgblog.org", true }, { "qgustavor.tk", true }, { "qhse-professionals.nl", true }, { "qianalysis.com", true }, { "qianqiao.me", true }, + { "qiaohong.org", true }, { "qicomidadeverdade.com.br", true }, { "qifu.me", true }, - { "qifu.org.cn", true }, { "qiliang.wang", true }, + { "qingcao.org", true }, { "qingpat.com", true }, { "qingpei.me", true }, { "qionouu.cn", true }, { "qis.fr", true }, { "qitarabutrans.com", true }, { "qiuri.org", true }, - { "qiuxian.ddns.net", true }, { "qivonline.pt", true }, { "qiwi.be", true }, { "qixi.biz", true }, { "qkka.org", true }, + { "qkmortgage.com", true }, { "qldconservation.org.au", true }, { "qldformulaford.org", true }, + { "qledtech.com", false }, + { "qlix.pl", true }, { "qlrace.com", false }, { "qm-marzahnnordwest.de", true }, + { "qnq.moe", true }, { "qochealth.com", true }, { "qoml.net", true }, { "qonto.eu", true }, @@ -27565,8 +28990,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "qq52o.me", true }, { "qqrss.com", true }, { "qqvips.com", true }, - { "qqvrsmart.cn", true }, { "qr-city.org", true }, + { "qr.cl", true }, + { "qrbird.com", true }, { "qrcontagion.com", true }, { "qrpth.eu", true }, { "qruiser.com", true }, @@ -27574,13 +29000,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "qtacairsoft.com", true }, { "qtl.me", true }, { "qtn.net", true }, + { "qto.com", true }, { "qto.net", true }, + { "qto.org", true }, { "qtpass.org", true }, { "qtpower.co.uk", true }, { "qtpower.net", true }, { "qtpower.org", true }, { "qtvr.com", true }, - { "qtxh.net", false }, + { "qtxh.net", true }, { "quackerswaterproofing.com", true }, { "quaedam.org", true }, { "quaggan.co", true }, @@ -27589,8 +29017,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "quality-life.gr", true }, { "qualityedgarsolutions.com", true }, { "qualityhomesystems.com", true }, + { "qualityhvacservices.com", true }, { "qualityofcourse.com", true }, { "qualitypropertycare.co.uk", true }, + { "qualpay.biz", true }, { "qualtrics.com", true }, { "quant-labs.de", true }, { "quantaloupe.tech", true }, @@ -27602,13 +29032,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "quantumfurball.net", true }, { "quantumpair.net", true }, { "quantumwebs.co", true }, - { "quanwuji.com", true }, { "quanyin.eu.org", true }, { "quareal.ru", true }, { "quarkdose.de", true }, { "quarterfull.com", true }, { "quartix.com", true }, { "quartzclinical.com", true }, + { "quarus.net", true }, { "quasarelectronics.co.uk", true }, { "quasiproxy.com", true }, { "quasseldroid.info", true }, @@ -27617,17 +29047,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "qubes-os.org", true }, { "qubyte.codes", true }, { "quchao.com", true }, + { "queene.eu", true }, + { "queens.lgbt", true }, { "queensrdapartments.com.au", true }, { "queer.party", true }, { "queercinema.ch", true }, { "queercoders.com", false }, + { "queextensiones.com", true }, { "quehacerencusco.com", true }, + { "quelle.at", true }, + { "quelle.ch", true }, + { "quelle.de", true }, { "quelleformation.net", true }, { "quemeloquitan.com", true }, { "queminventou.com.br", true }, { "quemmeliga.com", true }, { "quenotejodan.cl", true }, { "quentinchevre.ch", true }, + { "queo.com.co", true }, { "quera.ir", true }, { "querkommentar.de", true }, { "query-massage.com", true }, @@ -27652,32 +29089,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "quire.io", true }, { "quisido.com", true }, { "quitarlasmanchasde.com", true }, + { "quitimes.com", true }, { "quizogames.com", true }, { "qul.link", true }, { "quli.nl", false }, { "qunzi.la", true }, { "quocdesign.ch", true }, + { "quoteidiot.com", true }, { "quotev.com", true }, + { "quovadisaustria.com", true }, { "quppa.net", true }, { "quuz.org", true }, + { "qvg.company", true }, { "qvggroup.com", true }, { "qvi.st", true }, { "qvitoo.com", true }, { "qwans.nl", true }, { "qwant.com", true }, { "qwant.fr", true }, - { "qwaser.fr", true }, { "qwdqwd.de", true }, { "qwe7002.com", true }, { "qweepi.de", false }, { "qwertee.com", true }, { "qwerty.work", true }, - { "qwertyatom100.me", true }, { "qwikdash.com", true }, { "qwq.moe", true }, { "qx.fi", true }, { "qx.se", true }, { "qxy.ch", true }, + { "r-ay.cn", true }, { "r-rwebdesign.com", true }, { "r-t-b.fr", true }, { "r0t.co", true }, @@ -27685,11 +29125,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "r1ch.net", true }, { "r2d2pc.com", true }, { "r33.space", true }, + { "r3bl.blog", true }, + { "r3bl.me", true }, { "r3nt3r.com", true }, { "r3s1stanc3.me", true }, + { "r40.us", true }, { "r6-team.ru", true }, + { "r7.com.au", true }, { "r7h.at", true }, { "r811.de", true }, + { "ra-joergensen.de", true }, { "ra-micro-koeln.de", true }, { "ra-schaal.de", false }, { "ra.co.ke", true }, @@ -27699,8 +29144,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rabbit.wales", false }, { "rabbitfinance.com", true }, { "rabica.de", true }, + { "rabotaescort.com", true }, { "rabynska.eu", true }, { "raccoltarifiuti.com", true }, + { "racdek.com", true }, + { "racdek.nl", true }, { "racermaster.xyz", true }, { "racesport.nl", false }, { "raceviewcycles.com", true }, @@ -27716,9 +29164,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rackerlab.com", false }, { "raclet.co.uk", true }, { "raconconsulting.co.uk", true }, + { "racoo.net", true }, + { "racozo.com", true }, { "racunovodstvo-prina.si", true }, { "radar.sx", true }, { "radaravia.ru", true }, + { "radarnext.com", true }, { "radartatska.se", true }, { "radartek.com", true }, { "radcube.hu", true }, @@ -27728,6 +29179,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "radicaloptimism.org", true }, { "radicalsub.com.br", true }, { "radins.com", true }, + { "radio-pulsar.eu", true }, { "radio-utopie.de", true }, { "radio1.ie", true }, { "radioafibra.com.br", true }, @@ -27739,12 +29191,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "radionicabg.com", true }, { "radiopolarniki.spb.ru", true }, { "radiormi.com", true }, + { "radiorsvp.com", false }, { "radiosendungen.com", true }, { "radis-adopt.com", true }, { "radiumtree.com", true }, + { "radom-pack.pl", true }, { "radondetectionandcontrol.com", true }, { "radreisetraumtreibstoff.de", true }, - { "radtke.bayern", true }, { "radyabkhodro.net", true }, { "radyn.com", true }, { "raeu.me", true }, @@ -27752,6 +29205,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rafaelmagalhaesweb.com", true }, { "rafey.xyz", true }, { "raffaellaosti.com", true }, + { "raft.pub", true }, { "rafting-japan.com", true }, { "ragasto.nl", true }, { "rage-overload.ch", true }, @@ -27759,17 +29213,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rage4.com", true }, { "raghavdua.in", true }, { "rahulpnath.com", true }, - { "rai-co.net", true }, - { "raidensnakesden.co.uk", true }, - { "raidensnakesden.com", true }, - { "raidensnakesden.net", true }, { "raidstone.net", true }, - { "raiffeisen-kosovo.com", true }, + { "rail-o-rama.nl", true }, + { "rail24.nl", true }, + { "rail360.nl", true }, + { "railbird.nl", true }, { "railgun.ac", true }, { "railjob.cn", true }, + { "railorama.nl", true }, + { "railpassie.nl", true }, { "railtoo.com", true }, + { "railvideo.co.uk", true }, + { "railvideo.net", true }, + { "railvideo.nl", true }, { "railwaytech.net", true }, - { "railyardurgentcare.com", true }, { "raimixmotoparts.com.br", true }, { "rainbowbay.org", true }, { "rainbowinflatables.co.uk", true }, @@ -27787,10 +29244,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rajivshah.co.uk", true }, { "rajyogarishikesh.com", true }, { "rak-business-service.com", true }, - { "rakugaki.cn", true }, { "rakugokai.net", true }, { "ralf-huebscher.de", true }, { "ralfs-zusizone.de", true }, + { "ralimtek.com", false }, { "rally-base.com", true }, { "rally-base.cz", true }, { "rally-base.eu", true }, @@ -27804,12 +29261,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "raltha.com", true }, { "ram-it.nl", true }, { "ram.nl", true }, - { "ramatola.uk", true }, - { "rambii.de", true }, - { "ramblingrf.tech", true }, { "rambo.codes", true }, + { "ramitmittal.com", true }, { "rammstein-portugal.com", true }, { "ramrecha.com", true }, + { "ramsor-gaming.de", true }, { "randc.org", true }, { "random-samplings.org", true }, { "randomadversary.com", true }, @@ -27818,7 +29274,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "randomdysfunctions.com", true }, { "randomkoalafacts.com", true }, { "randomprecision.co.uk", true }, - { "randomquotesapp.com", true }, + { "ranfurlychambers.co.nz", true }, { "rangde.org", true }, { "rangercollege.edu", true }, { "rangsmo.se", true }, @@ -27826,7 +29282,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ranking-deli.jp", true }, { "ranktopay.com", true }, { "ranson.com.au", true }, - { "rantanda.com", true }, { "rante.com", true }, { "ranyeh.co", true }, { "ranyeh.com", true }, @@ -27838,6 +29293,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "raphael.li", true }, { "raphaeladdile.com", true }, { "raphaelcasazza.ch", true }, + { "raphaelmoura.ddns.net", true }, { "raphrfg.com", true }, { "rapidapp.io", true }, { "rapidhubs.com", true }, @@ -27854,18 +29310,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rascalscastles.co.uk", true }, { "rascalscastlesdoncaster.co.uk", true }, { "rasebo.ro", true }, + { "raspberryultradrops.com", true }, { "raspii.tech", true }, - { "rastreie.net", true }, { "rasty.cz", true }, { "ratd.net", true }, { "ratebridge.com", true }, { "rathbonesonline.com", true }, { "rathgeb.org", true }, + { "ratinq.co", true }, { "rationalcreation.com", true }, { "rationalism.com", true }, { "rationalops.com", true }, { "rattenkot.io", true }, { "raulrivero.es", true }, + { "rault.io", true }, { "raum4224.de", true }, { "rauros.net", true }, { "rautelow.de", true }, @@ -27879,6 +29337,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "raviparekh.co.uk", true }, { "ravis.org", true }, { "rawdutch.nl", true }, + { "rawinfosec.com", true }, { "rawsec.net", true }, { "raxion.cf", true }, { "raxion.tk", true }, @@ -27899,6 +29358,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "razeen.me", true }, { "razeencheng.com", true }, { "raziskovalec-resnice.com", true }, + { "rbcservicehub-uat.azurewebsites.net", true }, { "rbensch.com", true }, { "rbflote.lv", true }, { "rbltracker.com", true }, @@ -27914,7 +29374,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rcd.cz", true }, { "rcdocuments.com", true }, { "rchrdsn.uk", true }, + { "rcifsgapinsurance.co.uk", true }, { "rclsm.net", true }, + { "rcmlinx.com", true }, + { "rcmpsplib.com", true }, { "rcmurphy.com", true }, { "rcnitrotalk.com", true }, { "rcorporation.be", true }, @@ -27924,10 +29387,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rct.sk", true }, { "rctalk.com", true }, { "rdfproject.it", true }, + { "rdjb2b.com", true }, { "rdl.at", false }, { "rdmrotterdam.nl", true }, { "rdmtaxservice.com", true }, { "rdns.cc", true }, + { "rdplumbingsolutions.com.au", true }, { "rdv-prefecture.com", true }, { "rdwh.tech", true }, { "re-curi.com", true }, @@ -27938,6 +29403,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "react-db.com", true }, { "reactivarte.es", true }, { "reactive-press.com", true }, + { "reactpwa.com", true }, { "read.sc", true }, { "reades.co.uk", true }, { "readheadcopywriting.com", true }, @@ -27946,8 +29412,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "readingrats.de", true }, { "readonly.de", true }, { "readouble.com", false }, - { "readtldr.com", true }, { "readysell.net", true }, + { "readytobattle.net", true }, { "readytongue.com", true }, { "readytowear.es", true }, { "reaganlibrary.gov", true }, @@ -27956,7 +29422,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "realcapoeira.ru", true }, { "realestateonehowell.com", true }, { "realestateradioshow.com", true }, - { "realfamilyincest.com", true }, { "realfreedom.city", true }, { "realgarant-shop.de", false }, { "realhorsegirls.net", true }, @@ -27966,14 +29431,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "reality0ne.com", false }, { "realitycrazy.com", true }, { "reallifeforums.com", true }, - { "realloc.me", true }, { "really-simple-plugins.com", true }, { "really-simple-ssl.com", true }, { "really.ai", true }, + { "reallytrusted.com", true }, { "realme.govt.nz", true }, { "realmofespionage.xyz", true }, - { "realoteam.ddns.net", true }, - { "realraghavgupta.com", true }, + { "realum.com", true }, + { "realum.de", true }, + { "realum.eu", true }, + { "realum.net", true }, { "realvnc.help", true }, { "realwaycome.com", true }, { "realwildart.com", true }, @@ -27983,7 +29450,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "reath.me", true }, { "reaven.nl", true }, { "rebane2001.com", true }, + { "rebeagle.com", true }, { "rebelessex.com", true }, + { "rebelonline.nl", true }, { "rebelrebel.com.au", true }, { "rebelz.se", true }, { "rebirthia.me", true }, @@ -27993,13 +29462,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "recantoshop.com", true }, { "recantoshop.com.br", true }, { "recapp.ch", true }, + { "recaptcha-demo.appspot.com", true }, { "receiliart.com", true }, + { "receptionpoint.com", true }, { "receptionsbook.com", true }, { "recepty.eu", false }, { "recetasdecocinaideal.com", true }, { "rechenknaecht.de", true }, - { "recht-freundlich.de", true }, - { "rechtenliteratuurleiden.nl", false }, { "rechtsanwaeltin-vollmer.de", true }, { "rechtsanwalt-koeppen-feucht.de", true }, { "rechtschreibpruefung24.de", true }, @@ -28013,6 +29482,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "recmon.hu", true }, { "reco-studio.de", true }, { "recolic.net", true }, + { "recommended.reviews", true }, { "recon-networks.com", true }, { "recordeuropa.com", false }, { "recoveringspirit.com", true }, @@ -28076,10 +29546,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "redlinelap.com", true }, { "redlink.de", true }, { "redmore.me", true }, - { "redneck-gaming.de", true }, { "redneragenturen.org", true }, { "rednsx.org", true }, - { "redporno.cz", true }, { "redprice.by", true }, { "redshield.co", true }, { "redshiftlabs.com.au", true }, @@ -28089,12 +29557,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "redteam-pentesting.de", true }, { "redwaterhost.com", true }, { "redweek.com", true }, + { "redwoodpaddle.es", true }, + { "redwoodpaddle.pt", true }, { "redzurl.com", false }, { "reed-sensor.com", true }, { "reedloden.com", true }, { "reegle.com", true }, { "reepay.com", true }, { "rees-carter.net", true }, + { "reesmichael1.com", true }, { "reevaappliances.co.uk", true }, { "reevoo.com", true }, { "reevu.net", true }, @@ -28102,16 +29573,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "referdell.com", true }, { "refficience.com", true }, { "refill-roboter.de", true }, + { "refinansiering.no", true }, { "reflectivity.io", true }, { "reflectores.net", true }, + { "refletindosaude.com.br", true }, { "reflexions.co", true }, { "reflexive-engineering.com", true }, { "reflexive.xyz", true }, { "refood-cascaiscpr.eu", true }, - { "reforesttheplanet.com", true }, { "refresh-media.nl", true }, { "refreshliving.us", true }, { "refuelcollective.com", true }, + { "refuelcreative.com.au", true }, { "refundo.cz", true }, { "refundo.sk", true }, { "regain.us", true }, @@ -28130,12 +29603,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "regimecellulite.com", true }, { "regiobeveland.nl", true }, { "regionalbasementandcrawlspacerepair.com", true }, - { "regionalcoalition.org", true }, { "regiosalland.nl", true }, { "regiovertrieb.de", false }, { "regis.tech", true }, { "regisearch.co.uk", true }, - { "register.gov.uk", true }, { "registerex.me", true }, { "registerforevent.co.uk", true }, { "registerra.nl", true }, @@ -28149,6 +29620,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "regnr.info", true }, { "regolithmedia.com", true }, { "regraph.de", true }, + { "regresionavidaspasadas.com", true }, + { "regularflolloping.com", true }, { "regulations.gov", true }, { "reha-honpo.jp", true }, { "rehabili-shigoto.com", true }, @@ -28171,7 +29644,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "reimann.me", true }, { "reimers.de", true }, { "rein.kr", true }, - { "reinaertvandecruys.com", true }, { "reinaldudras.ee", true }, { "reinaldudrasfamily.ee", true }, { "reinencaressa.be", true }, @@ -28187,43 +29659,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "reisenbauer.ee", true }, { "reiseversicherung-werner-hahn.de", true }, { "reishunger.de", true }, + { "reisslittle.com", true }, { "rejahrehim.com", true }, { "rejects.email", true }, { "rejsehuskelisten.dk", true }, - { "rejushiiplotter.ru", true }, { "rekisuta.com", true }, { "reklamjog.hu", true }, { "rekorsanat.com.tr", true }, + { "rekyou.com", false }, { "relates.link", true }, { "relax.hn", true }, { "relaxdom.net", true }, + { "relaxhavefun.com", true }, { "relaxpointhyncice.cz", true }, { "relaybox.io", true }, { "release-monitoring.org", true }, { "releasetimes.io", true }, { "reliancebank.bank", true }, { "reliant3sixty.com", true }, - { "religiousforums.com", true }, { "relocatefeds.gov", false }, { "relojeriajoyeria.com", true }, + { "relojes-online.com", true }, + { "relojesseiko.es", true }, { "relvan.com", true }, { "rem0te.net", true }, + { "remaimodern.org", true }, { "remambo.jp", true }, + { "remax.at", true }, { "remedi.tokyo", true }, + { "remedionaturales.com", true }, { "remedioparaherpes.com", true }, { "remedios-caserospara.com", true }, { "remedioscaserosparalacistitis.com", true }, + { "remedioskaseros.com", false }, { "remejeanne.com", true }, { "rememberthemilk.com", false }, { "remi-saurel.com", true }, + { "remilner.co.uk", true }, + { "remini.cz", true }, + { "remirampin.com", true }, { "remissan.com", true }, { "remitatm.com", false }, { "remonti.info", true }, { "remote.so", true }, + { "remoteham.com", true }, { "remoteutilities.com", true }, { "removalcellulite.com", true }, { "removedrepo.com", true }, - { "remrol.ru", true }, { "remszeitung.de", true }, { "renaissanceplasticsurgery.net", true }, { "renascentia.asia", true }, @@ -28233,6 +29715,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rene-schwarz.com", true }, { "rene-stolp.de", true }, { "renearends.nl", true }, + { "reneclemens.nl", true }, + { "renedekoeijer.com", true }, + { "renedekoeijer.nl", true }, { "reneleu.ch", true }, { "renem.net", false }, { "renemayrhofer.com", true }, @@ -28263,12 +29748,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "repaik.com", true }, { "repair.by", true }, { "repaper.org", true }, - { "reparo.pe", true }, { "repaxan.com", true }, { "repkord.com", true }, { "replicaswiss.nl", true }, { "repology.org", true }, { "report-uri.com", true }, + { "report2psb.online", true }, { "reporting.gov", true }, { "reproduciblescience.org", true }, { "reproductive-revolution.com", true }, @@ -28277,14 +29762,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "reprogrammingpredators.com", true }, { "reprozip.org", true }, { "repsomelt.com", true }, - { "reptilauksjonen.no", true }, { "reptrax.com", true }, { "republic.gr", true }, { "republictelecom.net", true }, { "republique.org", true }, { "repugnant-conclusion.com", true }, { "repugnantconclusion.com", true }, - { "repustate.com", true }, + { "reputationweaver.com", true }, { "reqrut.net", true }, { "request-trent.com", true }, { "requestr.co.uk", true }, @@ -28302,12 +29786,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "resfriatech.com.br", true }, { "residence-simoncelli.com", true }, { "residentiallocksmithsanantoniotx.com", true }, + { "resine.roma.it", true }, { "resist.ca", true }, { "resistav.com", true }, { "resolvefa.co.uk", true }, { "resolvefa.com", true }, { "resolving.com", true }, { "resoplus.ch", true }, + { "resort-islands.net", true }, { "resortohshima.com", true }, { "resourceconnect.com", true }, { "resourceguruapp.com", true }, @@ -28321,7 +29807,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "responsive-shop.com", true }, { "responsivepaper.com", true }, { "respostas.com.br", true }, - { "ressl.ch", true }, { "restaurant-oregano.de", true }, { "restaurant-rosengarten.at", true }, { "restaurantguru.com", true }, @@ -28335,7 +29820,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "restoruns.xyz", true }, { "restrealitaet.de", true }, { "restrito.org", true }, + { "resultsatretail.com", true }, { "resursedigitale.ro", true }, + { "retcor.net", true }, { "retefarmaciecostadamalfi.it", true }, { "retetenoi.net", true }, { "retetop95.it", true }, @@ -28344,8 +29831,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "retmig.dk", true }, { "reto.ch", true }, { "reto.com", true }, - { "reto.io", true }, - { "retogroup.com", true }, { "retokromer.ch", true }, { "retractableawningssydney.com.au", true }, { "retro.rocks", true }, @@ -28355,6 +29840,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "retrocdn.net", true }, { "retrofitlab.com", true }, { "retroity.net", true }, + { "retrojar.top", true }, { "retronet.nl", true }, { "retroroundup.com", true }, { "retrotracks.net", true }, @@ -28363,12 +29849,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "reucon.com", true }, { "reulitz.de", true }, { "reuna.me", true }, - { "reussir-ma-fete.fr", true }, { "reussirsavie.info", true }, { "reuter-profishop.de", true }, { "reuter-shop.com", true }, { "reuter.de", true }, { "revamed.com", false }, + { "revapost.fr", true }, { "revayd.net", true }, { "revensoftware.com", true }, { "reverencestudios.com", true }, @@ -28380,6 +29866,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "review.jp", true }, { "reviewninja.net", true }, { "reviews.anime.my", false }, + { "reviewspedia.org", true }, { "revirt.global", true }, { "revision.co.zw", true }, { "revisionnotes.xyz", true }, @@ -28391,9 +29878,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "revthefox.co.uk", true }, { "rewardingexcellence.com", true }, { "rewrite3.com", true }, + { "rewtherealtor.com", true }, { "rex.tc", true }, { "rexdf.net", true }, { "rexskz.info", true }, + { "reyna.cc", true }, { "rezept-planer.de", true }, { "rezexpert.com", true }, { "rezosup.net", true }, @@ -28401,12 +29890,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rezultant.ru", true }, { "rfeif.org", true }, { "rftoon.com", true }, - { "rfxanalyst.com", true }, { "rga.sh", true }, { "rgavmf.ru", true }, { "rgbinnovation.com", true }, { "rgcomportement.fr", true }, - { "rgservers.com", true }, { "rhaegal.me", true }, { "rhd-instruments.com", true }, { "rhd-instruments.de", true }, @@ -28423,35 +29910,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rhinoceroses.org", true }, { "rhnet.at", true }, { "rhodenmanorcattery.co.uk", true }, - { "rhodes.ml", true }, { "rhodri.io", true }, { "rhowell.io", true }, { "rhymeswithmogul.com", true }, { "rhymix.org", true }, { "rhynl.io", true }, { "riajenaka.com", true }, + { "riaki.net", true }, { "rial.space", true }, { "ribs.com", true }, + { "ricardo.nu", true }, { "ricardobalk.nl", true }, { "ricaud.me", true }, { "riccardopiccioni.it", true }, { "riccy.org", true }, { "riceadvice.info", true }, + { "richadams.me", true }, + { "richardbloomfield.blog", true }, { "richardcrosby.co.uk", true }, + { "richardharpur.com", true }, { "richardhering.de", true }, - { "richardhicks.us", true }, { "richardjgreen.net", true }, { "richardlangworth.com", true }, { "richardlugten.nl", true }, + { "richardramos.me", true }, { "richardrblocker.net", true }, + { "richardson.cam", true }, { "richardson.engineering", true }, { "richardson.pictures", true }, { "richardson.software", true }, { "richardson.systems", true }, { "richardwarrender.com", true }, { "richie.fi", true }, - { "richie.link", true }, - { "richmtdriver.com", true }, { "richonrails.com", true }, { "ricketyspace.net", true }, { "ricki-z.com", true }, @@ -28464,16 +29954,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rico.ovh", true }, { "ricobaldegger.ch", true }, { "ricochet.im", true }, + { "ricoydesign.com", true }, { "ricozienke.de", true }, { "riddims.co", true }, { "ride-up.com", true }, { "rideyourdamn.bike", true }, + { "ridgelandchurch.org", true }, { "ridingboutique.de", true }, { "riederle.com", true }, { "riemer.ml", true }, { "riesenweber.id.au", true }, { "riesheating.com", true }, { "riffreporter.de", true }, + { "rifkivalkry.net", true }, { "rift.pictures", true }, { "rigabeerbike.com", true }, { "rigabeerbike.lv", true }, @@ -28495,18 +29988,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rileyevans.co.uk", true }, { "rimax.vn", true }, { "rimcountrymuseum.org", true }, + { "rimediogiusto.com", true }, { "rimeto.io", true }, { "rimo.site", true }, + { "rimorrecherche.nl", true }, { "ring.com", true }, { "ringingliberty.com", true }, { "ringjewellery.co.uk", true }, { "rinvex.com", true }, { "rio-weimar.de", true }, - { "rioshop.com.br", true }, + { "rioxmarketing.com", true }, { "rip-sport.cz", true }, { "ripaton.fr", true }, { "ripmixmake.org", true }, { "ripple.com", true }, + { "riqy86.nl", true }, + { "ris.fi", true }, { "risada.nl", true }, { "risaphuketproperty.com", true }, { "riscascape.net", true }, @@ -28514,7 +30011,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rise-technologies.com", true }, { "riseup.net", true }, { "rishikeshyoga.in", true }, - { "risi-china.com", true }, { "risiinfo.com", true }, { "riskmitigation.ch", true }, { "risparmiare.info", true }, @@ -28523,6 +30019,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ristorantefattoamano.it", true }, { "ristoviitanen.fi", true }, { "ristrutturazioneappartamento.roma.it", true }, + { "rit.space", true }, { "rittau.biz", true }, { "rittau.org", true }, { "ritzlux.com.tw", true }, @@ -28537,6 +30034,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "riverviewcourtapts.com", true }, { "riverweb.gr", true }, { "rivierasaints.ch", true }, + { "rivoflor.it", true }, { "rivus.net", true }, { "rivy.org", true }, { "rix.ninja", true }, @@ -28548,7 +30046,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rj-onderneemt.nl", true }, { "rkfp.cz", true }, { "rkkhok.hu", true }, - { "rkmedia.no", true }, + { "rkmns.edu.in", true }, { "rlalique.com", true }, { "rld.org", true }, { "rlds.ch", true }, @@ -28559,15 +30057,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rm-it.de", true }, { "rmb.li", true }, { "rmcbs.de", true }, + { "rmeuropean.com", true }, { "rmf.io", true }, - { "rmit.me", true }, - { "rmk.si", true }, { "rmm-i.com", true }, { "rmmanfredi.com", true }, { "rmpsolution.de", true }, { "rmrig.org", true }, { "rms.sexy", true }, - { "rmsides.com", true }, { "rmstudio.tw", true }, { "rmsupply.nl", true }, { "rn29.me", true }, @@ -28578,17 +30074,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rnt.cl", true }, { "ro.search.yahoo.com", false }, { "roaddoc.de", true }, - { "roadguard.nl", true }, + { "roadguard.nl", false }, { "roadtopgm.com", true }, { "roams.es", true }, { "roave.com", true }, - { "rob.uk.com", true }, { "rob006.net", true }, { "robandjanine.com", true }, { "robbertt.com", false }, { "robdavidson.network", true }, { "robert-flynn.de", true }, { "robertattfield.com", true }, + { "robertayamashita.com", true }, + { "robertayamashita.com.br", true }, + { "robertbln.com", true }, { "robertg.me", true }, { "robertglastra.com", true }, { "roberthurlbut.com", true }, @@ -28613,13 +30111,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "robinlinden.eu", true }, { "robinsonstrategy.com", true }, { "robinsonyu.com", true }, + { "robinwill.de", true }, { "robinwinslow.uk", true }, - { "robjager-fotografie.nl", true }, { "robocop.no", true }, { "robodeidentidad.gov", true }, { "robohash.org", true }, { "robokits.co.in", true }, { "robot.car", true }, + { "robot.works", true }, { "robotattack.org", true }, { "roboth.am", true }, { "robotham.org", true }, @@ -28634,6 +30133,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "robu.in", true }, { "robud.info", true }, { "robustac.com", true }, + { "roc.net.au", true }, + { "rochakhand-knitcraft.com.np", true }, { "rocka.me", true }, { "rockagogo.com", true }, { "rockbankland.com.au", true }, @@ -28644,6 +30145,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rocketevents.com.au", true }, { "rocketgnomes.com", true }, { "rocketr.net", true }, + { "rocketsandtutus.com", true }, { "rockfax.com", true }, { "rockhounds.co.za", true }, { "rockinronniescastles.co.uk", true }, @@ -28664,13 +30166,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rodinnebyvanie.eu", true }, { "rodinneodpoledne2018.cz", true }, { "rodolfo.gs", true }, - { "rodomonte.org", true }, { "rodrigocarvalho.blog.br", true }, { "rody-design.com", true }, { "rodzina-kupiec.eu.org", true }, { "roeckx.be", true }, - { "roeitijd.nl", true }, - { "roelbazuin.com", true }, + { "roeitijd.nl", false }, { "roeldevries.me", true }, { "roeleveld.nl", true }, { "roelhollander.eu", true }, @@ -28692,14 +30192,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rogoff.xyz", true }, { "rogue-e.xyz", true }, { "roguefinancial.com", true }, - { "roguefortgame.com", true }, { "roguenation.space", true }, { "roguenetworks.me", true }, { "roguesignal.net", true }, { "roguetechhub.org", true }, - { "rohanbassett.com", true }, { "rohedaten.de", true }, { "rohitagr.com", true }, + { "rohlik.cz", true }, { "rointe.online", true }, { "roiscroll.com", true }, { "roka9.de", true }, @@ -28708,8 +30207,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "roksolana.be", true }, { "rokudenashi.de", true }, { "roland.io", true }, - { "rolandreed.cn", true }, + { "rolandinsh.com", true }, { "rolandszabo.com", true }, + { "roleplayhome.com", true }, { "roligprylar.se", true }, { "rollatorweb.nl", true }, { "rollercoasteritalia.it", true }, @@ -28720,6 +30220,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "roma-servizi.it", true }, { "romab.com", true }, { "roman-pavlik.cz", true }, + { "romancloud.com", true }, { "romande-entretien.ch", true }, { "romanmichel.de", true }, { "romano.guru", true }, @@ -28732,23 +30233,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "romanticsexshopguatemala.com", true }, { "romanticvillas.com.au", false }, { "romapa.com", true }, - { "romar-bos.nl", true }, { "romarin.es", true }, { "romaservicegroup.it", true }, { "romatrip.it", true }, { "rome.dating", true }, { "rommelwood.de", true }, - { "roms.fun", true }, { "ronanrbr.com", true }, { "rondommen.nl", true }, { "rondouin.fr", true }, { "rondreis-amerika.be", true }, { "rondreis-schotland.nl", true }, { "roninf.ch", true }, + { "roninitconsulting.com", true }, { "ronniegane.kiwi", true }, { "ronnylindner.de", true }, { "ronomon.com", true }, + { "ronzertnert.xyz", true }, { "roodfruit.studio", true }, + { "roodhealth.co.uk", true }, { "roof.ai", false }, { "roofingomaha.com", true }, { "roofsandbasements.com", true }, @@ -28774,6 +30276,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rootedlifemontessori.com", true }, { "rootkea.me", true }, { "rootlair.com", true }, + { "rootonline.de", true }, { "roots-example-project.com", true }, { "roots.io", true }, { "rootsandrain.com", true }, @@ -28783,6 +30286,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rootswitch.com", true }, { "rootusers.com", true }, { "ropd.info", true }, + { "roromendut.online", true }, { "roryneville.com", true }, { "rosabellas.co.uk", true }, { "rosalindturner.co.uk", true }, @@ -28804,11 +30308,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rosetiger.life", true }, { "rosevillefacialplasticsurgery.com", true }, { "roslynpad.net", true }, + { "rosnertexte.at", true }, { "rosset.me", true }, { "rosset.net", true }, { "rossfrancis.co.uk", true }, - { "rosslug.org.uk", true }, { "rossmacphee.com", true }, + { "rostclub.ro", true }, { "rostov-avia.ru", true }, { "rot47.net", true }, { "rotek.at", true }, @@ -28828,6 +30333,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rounda.it", true }, { "roundcube.mayfirst.org", false }, { "roundrock-locksmith.com", true }, + { "roundtablekzn.co.za", true }, { "roussos.cc", true }, { "rout0r.org", true }, { "route-wird-berechnet.de", true }, @@ -28843,6 +30349,57 @@ static const nsSTSPreload kSTSPreloadList[] = { { "roxiesbouncycastlehire.co.uk", true }, { "roxtri.cz", true }, { "royal-rangers.de", true }, + { "royal806.com", true }, + { "royal810.com", true }, + { "royal811.com", true }, + { "royal812.com", true }, + { "royal813.com", true }, + { "royal816.com", true }, + { "royal817.com", true }, + { "royal818.com", true }, + { "royal830.com", true }, + { "royal833.com", true }, + { "royal850.com", true }, + { "royal851.com", true }, + { "royal852.com", true }, + { "royal853.com", true }, + { "royal855.com", true }, + { "royal856.com", true }, + { "royal857.com", true }, + { "royal859.com", true }, + { "royal86.com", true }, + { "royal861.com", true }, + { "royal862.com", true }, + { "royal863.com", true }, + { "royal865.com", true }, + { "royal867.com", true }, + { "royal868.com", true }, + { "royal869.com", true }, + { "royal871.com", true }, + { "royal872.com", true }, + { "royal873.com", true }, + { "royal875.com", true }, + { "royal877.com", true }, + { "royal879.com", true }, + { "royal88.com", true }, + { "royal88.tech", true }, + { "royal881.com", true }, + { "royal882.com", true }, + { "royal883.com", true }, + { "royal885.com", true }, + { "royal886.com", true }, + { "royal887.com", true }, + { "royal888888.com", true }, + { "royal889.com", true }, + { "royal890.com", true }, + { "royal891.com", true }, + { "royal892.com", true }, + { "royal893.com", true }, + { "royal894.com", true }, + { "royal895.com", true }, + { "royal896.com", true }, + { "royal898.com", true }, + { "royal899.com", true }, { "royalacademy.org.uk", true }, { "royalasianescorts.co.uk", true }, { "royalbluewa3.cc", true }, @@ -28853,11 +30410,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "royalpalacenogent.fr", true }, { "royalrangers.fi", true }, { "royalty-market.com", true }, + { "royalyule.com", true }, { "royceandsteph.com", true }, { "roycewilliams.net", true }, - { "rozalynne-dawn.ga", true }, { "rozhodce.cz", true }, { "rpadovani.com", true }, + { "rpauto.ru", true }, + { "rpgcampaign.website", true }, { "rpgmaker.es", true }, { "rpherbig.com", true }, { "rphl.net", true }, @@ -28875,19 +30434,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rro.rs", true }, { "rrudnik.com", true }, { "rrwolfe.com", true }, + { "rsanahuano.com", true }, { "rsap.ca", true }, { "rsauget.fr", true }, { "rsblake.net", true }, { "rsgcard.com", true }, { "rsingermd.com", true }, { "rsl.gd", true }, - { "rsldb.com", true }, { "rsm-intern.de", true }, { "rsm-liga.de", true }, + { "rsmith.io", true }, { "rsmmail.com", true }, { "rsp-blogs.de", true }, + { "rsridentassist.com", true }, { "rss.sh", false }, - { "rsships.com", true }, { "rssr.se", true }, { "rsttraining.co.uk", true }, { "rsync.eu", false }, @@ -28896,6 +30456,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rtate.se", true }, { "rtcx.net", true }, { "rtd.uk.com", true }, + { "rte.eu", true }, { "rte2fm.ie", true }, { "rteaertel.ie", true }, { "rtechservices.io", true }, @@ -28910,19 +30471,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rtrappman.com", true }, { "rtrinflatables.co.uk", true }, { "rtsr.ch", true }, + { "rttvvip.com", true }, { "rtwcourse.com", true }, { "rtzoeller.com", true }, - { "ru-music.com", true }, { "ru-sprachstudio.ch", true }, { "ru.search.yahoo.com", false }, + { "rua.cx", true }, { "ruaneattorneys.com", true }, { "ruanmi.de", true }, { "rubberfurs.org", true }, { "rubberlegscastles.co.uk", true }, { "rubbermaidoutlet.com", true }, + { "rubbleremovalsbenoni.co.za", true }, + { "ruben.am", false }, { "rubenbarbero.com", true }, { "rubenkruisselbrink.nl", true }, { "rublacklist.net", true }, + { "ruby-auf-schienen.de", true }, { "rubyist.today", true }, { "rubymartin.com.au", true }, { "rubyquincunx.com", true }, @@ -28930,12 +30495,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rubytune.com", true }, { "rucksack-rauf-und-weg.de", true }, { "ruckzuck-privatpatient.de", true }, + { "rucnerobene.eu", true }, { "ruconsole.com", true }, { "rud.is", true }, { "rudd-o.com", true }, { "rudelune.fr", true }, { "ruderverein-gelsenkirchen.de", true }, { "rudewiki.com", true }, + { "rudhaulidirectory.com", true }, { "rudloff.pro", true }, { "rudnikas.com", true }, { "rudolph.life", true }, @@ -28944,7 +30511,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ruediger-voigt.eu", true }, { "ruedigervoigt.de", true }, { "ruedirrenggli.ch", true }, - { "rueduparticulier.tk", true }, + { "rueduparticulier.tk", false }, + { "rueegger.me", true }, { "rueg.eu", true }, { "ruerte.net", true }, { "rufabula-com.appspot.com", true }, @@ -28960,11 +30528,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ruin.one", true }, { "ruiruigeblog.com", true }, { "ruk.ca", true }, - { "rullzer.com", true }, { "rulu.co", true }, { "rulu.tv", true }, { "rulutv.com", true }, - { "rumlager.de", true }, { "rummage4property.co.uk", true }, { "rumplesinflatables.co.uk", true }, { "rumtaste.com", true }, @@ -28973,27 +30539,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "runagain.ch", true }, { "runebet.com", true }, { "runefake.com", true }, + { "runementors.com", false }, { "runklesecurity.com", true }, { "runnergrapher.com", true }, { "runreport.fr", true }, { "runschrauger.com", true }, { "runvs.io", true }, + { "ruobiyi.com", true }, { "ruobr.ru", true }, { "ruquay.com", true }, + { "ruralink.com.ar", true }, { "ruralsuppliesdirect.co.uk", true }, { "ruri.io", false }, { "rusempire.ru", true }, - { "rushball.net", true }, { "rushiiworks.com", true }, { "rushpoppershop.co.uk", true }, + { "rushter.com", true }, { "rushyo.com", true }, { "rusi-ns.ca", true }, { "ruska-modra.cz", true }, { "ruskamodra.cz", true }, { "ruskod.net", true }, { "rusl.net", true }, + { "rusmolotok.ru", true }, { "russellupevents.co.uk", true }, { "russia.dating", true }, + { "russiaeconomy.org", true }, { "russianorthodoxchurch.co.uk", true }, { "russpuss.ru", true }, { "russt.me", true }, @@ -29004,16 +30575,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rustyrambles.com", true }, { "rusxakep.com", true }, { "rutgerschimmel.nl", true }, + { "ruthmontenegro.com", true }, { "rutiger.com", true }, { "ruudkoot.nl", true }, { "ruwhof.net", true }, + { "ruya.com", true }, { "ruyatabirleri.com", true }, { "rv-jpshop.com", true }, { "rva-asbestgroep.nl", true }, { "rvender.cz", true }, + { "rvfu98.com", true }, { "rvnoel.net", true }, { "rvoigt.eu", true }, - { "rvolve.net", true }, { "rvsa2bevestigingen.nl", true }, { "rvsa4bevestigingen.nl", true }, { "rvsbevestigingen.nl", true }, @@ -29026,9 +30599,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rxbn.de", true }, { "rxbusiness.com", true }, { "rxcheck.com", true }, - { "rxgroup.io", true }, { "rxight.com", true }, { "ryan-design.com", true }, + { "ryan-gehring.com", true }, { "ryan-goldstein.com", true }, { "ryanbritton.com", true }, { "ryancarter.co.uk", true }, @@ -29039,10 +30612,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ryansmithphotography.com", true }, { "ryazan-region.ru", true }, { "rychlikoderi.cz", true }, + { "rydermais.tk", true }, { "rynekpierwotny.pl", true }, { "ryois.me", true }, { "ryu22e.org", true }, { "ryuu.es", true }, + { "ryyule.com", true }, + { "ryzex.de", true }, { "ryzhov.me", true }, { "rzentarzewski.net", true }, { "s-a.xyz", true }, @@ -29066,9 +30642,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "s404.de", true }, { "s44.eu", true }, { "s4db.net", true }, + { "s4media.org", true }, + { "s4q.me", true }, { "s4tips.com", true }, { "s4ur0n.com", true }, { "s5118.com", true }, + { "s64.cz", true }, { "s8a.us", true }, { "s95.de", true }, { "sa-blog.net", true }, @@ -29077,14 +30656,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "saabpartsdistribution.com", true }, { "saamhorigheidsfonds.nl", false }, { "saastopankki.fi", true }, - { "saba-piserver.info", true }, { "sabahattin-gucukoglu.com", true }, { "sabe.cz", true }, + { "sabine-forschbach.de", true }, + { "sabineforschbach.de", true }, { "sabrinajoias.com.br", true }, { "sabrinajoiasprontaentrega.com.br", true }, + { "sabtunes.com", true }, { "sacaentradas.com", true }, { "saccani.net", true }, - { "sachk.com", true }, { "sackers.com", true }, { "sackmesser.ch", true }, { "saclier.at", true }, @@ -29105,15 +30685,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "safar.sk", true }, { "safaritenten.nl", true }, { "safcstore.com", true }, + { "safe.moe", true }, { "safe.space", true }, { "safebaseflorida.com", true }, { "safebasements.com", true }, { "safebasementsnorthdakota.com", true }, + { "safebasementsofindiana.com", true }, { "safebuyerscheme.co.uk", true }, { "safecar.gov", false }, { "safeex.com", true }, { "safegold.ca", true }, { "safegroup.pl", true }, + { "safeguardcommerce.com", true }, + { "safeguardhosting.ca", true }, { "safeinfra.nl", true }, { "safejourney.education", true }, { "safematix.com", true }, @@ -29133,6 +30717,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sagedocumentmanager.com", true }, { "sagemontchurch.org", true }, { "sagerus.com", true }, + { "saggiocc.com", true }, { "sagracefarms.com", true }, { "sagsmarseille.com", true }, { "sahajbooks.com", true }, @@ -29152,55 +30737,64 @@ static const nsSTSPreload kSTSPreloadList[] = { { "saikouji.tokushima.jp", true }, { "sailingonward.com", true }, { "sailormoonevents.org", true }, + { "sailormoonlibrary.org", true }, { "saimoe.moe", true }, { "saimoe.org", true }, { "sainetworks.net", true }, + { "saint-bernard-gouesch.fr", true }, { "saintaardvarkthecarpeted.com", true }, { "saintanthonyscorner.com", true }, { "sainth.de", true }, + { "saintmichelqud.com", true }, { "saintsrobotics.com", true }, { "saipariwar.com", true }, { "saiputra.com", true }, - { "saiyasu-search.com", true }, + { "saitrance.com", true }, + { "saitv.org", true }, { "sajamstudija.info", true }, { "sajdowski.de", true }, { "sakaki.anime.my", false }, { "sakostacloud.de", true }, { "sakura-paris.org", true }, + { "sakuracommunity.com", true }, { "sakuraflores.com.br", true }, { "sakuraplay.com", true }, { "salamon-it.de", false }, { "salde.net", true }, { "sale4ru.ru", true }, { "saleaks.org", true }, + { "saleduck.at", true }, + { "saleduck.ch", true }, { "saleduck.co.id", true }, { "saleduck.co.th", true }, { "saleduck.com.my", true }, { "saleduck.com.ph", true }, { "saleduck.com.sg", true }, { "saleduck.com.vn", true }, + { "saleduck.dk", true }, + { "saleduck.fi", true }, + { "saleduck.se", true }, + { "salemedia.pro", true }, { "salensmotors-usedcars.be", true }, { "salesflare.com", true }, { "salesmachine.io", true }, { "salexy.kz", true }, - { "salishseawhalewatching.ca", true }, { "salixcode.com", true }, { "salland1.nl", true }, { "salle-quali.fr", true }, { "sallydowns.name", true }, - { "salmo23.com.br", true }, { "salmododia.net", true }, { "salmonella.co.uk", true }, { "salmonrecovery.gov", true }, { "salmonvision.com.tw", true }, { "salmos91.com", true }, { "salmotierra-salvatierra.com", true }, - { "salon-claudia.ch", true }, { "salon-minipli.de", true }, { "salon.io", false }, { "salon1.ee", true }, + { "salonasymetria.com", true }, + { "salonasymetria.pl", true }, { "salonsantebienetre.ch", true }, - { "salrosadohimalaia.com", true }, { "salsa-straubing.de", true }, { "saltbythesea.com", true }, { "saltercane.com", false }, @@ -29210,7 +30804,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "salud.top", false }, { "saludsexualmasculina.org", true }, { "saludsis.mil.co", true }, + { "salutethefish.com", true }, + { "salutethegrains.com", true }, { "salutethepig.com", true }, + { "salva.re", true }, { "salvagedfurnitureparlour.com", true }, { "sam-football.fr", true }, { "samanthasgeckos.com", true }, @@ -29228,17 +30825,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "samegoal.org", true }, { "samel.de", true }, { "samenwerkingsportaal.nl", true }, - { "samenwerkingsportaal.tk", true }, { "sameworks.com", true }, { "samgrayson.me", true }, { "samhuri.net", true }, { "samifar.in", true }, + { "samin.tk", true }, { "samip.fi", true }, + { "samitechnic.com", true }, { "samizdat.cz", true }, + { "samkelleher.com", true }, { "saml-gateway.org", true }, + { "samlivogarv.dk", true }, + { "sammamish--locksmith.com", true }, { "sammenlignakasser.dk", true }, { "sammyservers.com", true }, + { "sammyservers.net", true }, { "samnya.cn", true }, + { "samrobertson.co.uk", true }, { "samsungmobile.it", true }, { "samsungphonegenerator.xyz", true }, { "samtalen.nl", true }, @@ -29249,15 +30852,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "samuirehabcenter.com", true }, { "samwilberforce.com", true }, { "samwrigley.co.uk", true }, - { "samwu.tw", false }, + { "samwu.tw", true }, { "samyerkes.com", true }, + { "san-mian-ka.ml", true }, { "san.ac.th", true }, { "sana-store.com", true }, { "sana-store.cz", true }, { "sana-store.sk", true }, { "sanalbayrak.com", true }, - { "sanandreasstories.com", true }, { "sanantoniolocksmithinc.com", true }, + { "sanantoniolocksmithtx.com", true }, { "sanasport.cz", true }, { "sanasport.sk", true }, { "sanatorii-sverdlovskoy-oblasti.ru", true }, @@ -29268,9 +30872,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sandbox.mydigipass.com", false }, { "sandburner.net", true }, { "sanderdorigo.nl", true }, - { "sanderknape.com", true }, { "sanderkoenders.eu", true }, { "sanderkoenders.nl", true }, + { "sandervanderstap.nl", true }, { "sandervankasteel.nl", false }, { "sandhaufen.tk", true }, { "sandiegotown.com", true }, @@ -29288,8 +30892,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sandtonplumber24-7.co.za", true }, { "sandtonvipcompanions.com", true }, { "sandyrobsonhypnotherapy.co.uk", true }, + { "sanemind.eu", true }, { "sanepsychologen.nl", true }, { "sanex.ca", false }, + { "sanglierhurlant.fr", true }, { "sangwon.io", true }, { "sanilodge.com", true }, { "sanipousse.com", true }, @@ -29304,10 +30910,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sanskritiyoga.com", true }, { "sansonehowell.com", true }, { "santafemacas.com.br", true }, + { "santamonicapost123.org", true }, + { "santanderideas.com", true }, { "santenatureetcie.com", true }, { "santensautomatics.be", true }, { "santevie.ch", true }, - { "santing.net", true }, { "santojuken.co.jp", true }, { "santoshpandit.com", true }, { "sanvitolocapobus.com", true }, @@ -29339,12 +30946,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sarariman.com", true }, { "sarasturdivant.com", true }, { "sardegnatirocini.it", true }, - { "sarkarikhoj.com", true }, + { "sarink.eu", true }, { "saronno5stelle.it", true }, { "sarpsb.org", true }, { "sarumtechnologies.com", true }, { "sas-snowboarding.sk", true }, { "sasanika.org", true }, + { "sascha.io", true }, + { "sascha.is", true }, + { "saschaeggenberger.ch", true }, + { "saschaeggenberger.com", true }, { "sash.pw", true }, { "sashaokun.com", true }, { "sashascollections.com", true }, @@ -29363,7 +30974,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "satmd.de", true }, { "satoshinumbers.com", true }, { "sattamatkachart.in", true }, - { "sattamatkadpboss.mobi", true }, { "sattamatkamobi.mobi", true }, { "saturn.pl", true }, { "satyanarayana.xyz", true }, @@ -29372,7 +30982,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "saudeintimadamulher.com.br", true }, { "saudenoclique.com.br", true }, { "sauer-systems.net", true }, - { "sauerbrey.eu", true }, { "sauerland-schnittgruen.de", true }, { "saulchristie.com", true }, { "saumon-de-france.com", true }, @@ -29391,7 +31000,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "savecrypto.org", true }, { "savenet.org", true }, { "saveora.com", true }, - { "saveora.shop", true }, { "savetheinternet.eu", true }, { "saveya.com", true }, { "savic.com", true }, @@ -29425,11 +31033,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sbf888.com", true }, { "sbiewald.de", true }, { "sbir.gov", true }, + { "sbirecruitment.co.in", true }, { "sbit.com.br", true }, { "sblum.de", true }, { "sbo-dresden.de", true }, { "sbr.red", true }, { "sbrouwer.org", true }, + { "sbrownbourne.com", true }, { "sbsavings.bank", true }, { "sbsbaits.com", true }, { "sbsnursery.co.uk", true }, @@ -29440,6 +31050,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "scaarus.com", true }, { "scaffalature.roma.it", true }, { "scaffoldhireeastrand.co.za", true }, + { "scaffoldhirefourways.co.za", true }, + { "scaffoldhirerandburg.co.za", true }, { "scaffoldhiresandton.co.za", true }, { "scalacollege.nl", true }, { "scalaire.com", true }, @@ -29449,6 +31061,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "scallywagsbouncycastles.co.uk", true }, { "scallywagskids.co.uk", true }, { "scamblockplus.org", true }, + { "scan.co.uk", true }, { "scandicom.fi", true }, { "scandinavia.dating", true }, { "scangeo.net", true }, @@ -29456,8 +31069,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "scanpay.dk", true }, { "scarafaggio.it", true }, { "scatsbouncingcastles.ie", true }, + { "scbdh.org", true }, { "scelec.com.au", true }, { "scenastu.pl", true }, + { "scene.mx", true }, { "scenester.tv", true }, { "scenicbyways.info", true }, { "scepticism.com", true }, @@ -29469,8 +31084,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "schatmeester.be", true }, { "schatzibaers.de", true }, { "schawe.me", true }, + { "schbebtv.fr", true }, { "scheduleme.io", true }, { "scheemadigital.com", true }, + { "schefczyk.com", true }, + { "schefczyk.de", true }, + { "schefczyk.eu", true }, { "schefczyk.net", true }, { "scheidtweiler.de", true }, { "scheinlichter.de", true }, @@ -29491,8 +31110,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "schlachter.ca", true }, { "schlaf.guru", true }, { "schlafguru.com", true }, - { "schlagenhauf.info", true }, - { "schlagma.de", false }, { "schlarp.com", true }, { "schlechtewitze.com", true }, { "schlick.wedding", true }, @@ -29508,7 +31125,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "schmidtplasticsurgery.com", true }, { "schmitt-max.com", true }, { "schmitz.link", true }, - { "schnapke.name", true }, { "schneeketten-ratgeber.de", true }, { "schnegg.name", true }, { "schneids.me", true }, @@ -29520,6 +31136,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "schoepski.de", true }, { "schoknecht.net", true }, { "schoknecht.one", true }, + { "schokofoto.de", true }, { "schokokeks.org", true }, { "scholarly.com.ph", true }, { "scholarly.ph", true }, @@ -29532,23 +31149,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "school-register.co.za", true }, { "school.in.th", true }, { "schoolbus.at", true }, + { "schoolcafe.com", true }, { "schoolotzyv.ru", true }, { "schoolsonice.nl", true }, { "schopenhauer-institut.de", true }, { "schorelweb.nl", true }, { "schorers.org", true }, { "schoring.com", true }, + { "schottenland.de", true }, { "schrauger.com", true }, { "schrauger.info", true }, { "schrauger.net", true }, { "schrauger.org", true }, { "schrauger.run", true }, { "schraugerrun.com", true }, - { "schreck-thomas.de", true }, { "schreibers.ca", true }, { "schreinerei-jahreis.de", true }, { "schrenkinzl.at", true }, - { "schritt4fit.de", true }, { "schrodingersscat.com", true }, { "schrodingersscat.org", true }, { "schroeder-immobilien-sundern.de", true }, @@ -29573,8 +31190,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "schummar.de", true }, { "schunako.ch", true }, { "schuppentier.org", true }, - { "schur-it.de", true }, { "schurkenstaat.net", true }, + { "schutterijschinveld.nl", true }, { "schutz-vor-schmutz.de", true }, { "schutznetze24.de", false }, { "schutzwerk.com", true }, @@ -29600,12 +31217,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "science360.gov", true }, { "sciencebase.gov", true }, { "scienceexploits.com", true }, + { "sciencehouse.jp", true }, { "scienceminnesota.com", true }, { "sciencesolutions.eu", true }, { "sciencex.com", true }, { "scientific.boston", true }, { "scifi.fyi", true }, + { "scigov.xyz", true }, { "scijinks.gov", true }, + { "scilifebiosciences.com", true }, { "scimage.com", true }, { "scintilla.nl", true }, { "scis.com.ua", true }, @@ -29614,6 +31234,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "scitopia.net", true }, { "sckc.stream", false }, { "sclns.co", true }, + { "scontogiusto.com", true }, { "scoolcode.com", true }, { "scoop6.co.uk", true }, { "scootaloo.co.uk", true }, @@ -29622,6 +31243,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "scorobudem.ru", true }, { "scorocode.ru", true }, { "scorp13.com", true }, + { "scottgalvin.com", true }, { "scottgruber.me", true }, { "scottgthomas.com", true }, { "scotthelme.co.uk", true }, @@ -29646,7 +31268,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "scratchandscuffs.com", true }, { "scratchandscuffs.uk", true }, { "scrayos.net", true }, - { "scredible.com", true }, + { "scredible.com", false }, { "screen64.tk", true }, { "screenlight.tv", true }, { "screenmachine.com", true }, @@ -29659,7 +31281,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "scrisulfacebine.ro", true }, { "scrod.me", true }, { "scroll.in", true }, - { "scrumplex.net", true }, + { "scrumbleship.com", true }, + { "scrumpus.com", true }, { "scrumstack.co.uk", true }, { "scryfall.com", true }, { "scs-simulatoren.de", true }, @@ -29667,8 +31290,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "scswam.com", true }, { "sctiger.me", true }, { "sctiger.ml", true }, + { "sctm.at", true }, { "sctrainingllc.com", true }, { "scubadiving-phuket.com", true }, + { "scubaland.hu", true }, { "scul.net", true }, { "sculpture.support", true }, { "scuolaguidalame.ch", true }, @@ -29678,6 +31303,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "scwilliams.co.uk", true }, { "scwilliams.uk", true }, { "sd.af", true }, + { "sdayman.com", true }, { "sdcardrecovery.de", true }, { "sdg-tracker.org", true }, { "sdho.org", true }, @@ -29693,7 +31319,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "se-theories.org", true }, { "se.com", true }, { "se.search.yahoo.com", false }, - { "sea-godzilla.com", false }, { "seac.me", true }, { "seacam-store.com", true }, { "seafood.co.nz", true }, @@ -29706,6 +31331,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sean-wright.com", true }, { "seanholcroft.co.uk", true }, { "seankilgarriff.com", true }, + { "seanrodda.com", true }, { "seaplayhomes.com", true }, { "search-job-in.com", true }, { "search-one.de", true }, @@ -29723,6 +31349,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "searchbrothers.nl", true }, { "searchbrothers.ru", true }, { "searchbrothers.uk", true }, + { "searchcandy.nl", true }, + { "searchcandy.uk", true }, { "searchdatalogy.com", true }, { "seareytraining.com", true }, { "searx.ru", true }, @@ -29731,6 +31359,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "season.moe", true }, { "seasons.nu", false }, { "seatbeltpledge.com", true }, + { "seatshare.co.uk", true }, { "seattle-life.net", true }, { "seattlefabrication.com", true }, { "seattlemesh.net", true }, @@ -29738,6 +31367,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "seattlewalkinbathtubs.com", true }, { "seavancouver.com", true }, { "seb-mgl.de", true }, + { "sebald.com", true }, + { "sebald.org", true }, { "sebascelis.com", true }, { "sebastiaandouma.co.uk", true }, { "sebastiaandouma.com", true }, @@ -29751,6 +31382,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sebastiaperis.com", true }, { "sebasveeke.nl", true }, { "sebi.org", true }, + { "seby.io", true }, { "sec-mails.de", true }, { "sec-research.com", true }, { "sec-wiki.com", true }, @@ -29759,13 +31391,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sec.gov", true }, { "sec.red", true }, { "sec3ure.co.uk", true }, - { "sec44.com", true }, - { "sec44.net", true }, - { "sec44.org", true }, { "sec455.com", true }, + { "sec4share.me", true }, { "sec530.com", true }, { "sec555.com", true }, - { "secanje.nl", true }, { "secbone.com", true }, { "secboom.com", true }, { "seccom.ch", true }, @@ -29773,14 +31402,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "secgui.de", true }, { "sech.me", true }, { "sechat.one", true }, - { "secitem.at", true }, - { "secitem.eu", true }, + { "secinto.at", true }, { "secnews.gr", true }, { "secomo.org", true }, + { "secondchancejobsforfelons.com", true }, { "seconfig.sytes.net", true }, { "secpatrol.de", true }, { "secretar.is", true }, - { "secretpanties.com", true }, + { "secretsanta.fr", true }, { "secretsdujeu.com", true }, { "secretserveronline.com", true }, { "secretum.tech", true }, @@ -29814,6 +31443,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "securethe.news", true }, { "securetheorem.com", true }, { "securetronic.ch", true }, + { "securetrustbank.com", true }, { "securi-tay.co.uk", true }, { "securify.nl", true }, { "securipy.com", true }, @@ -29825,14 +31455,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "security.love", true }, { "security201.co.uk", true }, { "security201.com", true }, - { "securitybrief.asia", true }, - { "securitybrief.co.nz", true }, - { "securitybrief.com.au", true }, - { "securitybrief.eu", true }, { "securitycamerasaustin.net", true }, + { "securitycamerascincinnati.com", true }, + { "securitycamerasjohnsoncity.com", true }, { "securityfest.com", true }, { "securityheaders.com", true }, { "securityheaders.io", true }, + { "securityheaders.nl", true }, { "securityinet.com", false }, { "securitykey.co", true }, { "securitypluspro.com", true }, @@ -29843,7 +31472,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "securitystrata.com", true }, { "securitystreak.com", true }, { "securitytrails.com", true }, - { "securitywatch.co.nz", true }, { "securitywithnick.com", true }, { "securitywithoutborders.org", true }, { "securocloud.com", true }, @@ -29881,8 +31509,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "seguroviagem.srv.br", false }, { "sehnenweh.org", true }, { "seibert.ninja", true }, + { "seibu-kikaku.co.jp", true }, { "seifried.org", true }, { "seikatu-navi.com", true }, + { "seiko-dojo.com", true }, { "seinfeldquote.com", true }, { "seirei.ne.jp", true }, { "seiryokuzai-ch.com", true }, @@ -29898,6 +31528,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "selectel.com", false }, { "selectel.ru", true }, { "selectorders.com", true }, + { "selectsplat.com", true }, { "selegiline.com", true }, { "selent.me", true }, { "self-evident.org", true }, @@ -29910,6 +31541,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "selfici.cz", true }, { "selfishness.com", true }, { "selfloath.in", true }, + { "selfmade4u.de", true }, { "selfoutlet.com", true }, { "selkiemckatrick.com", true }, { "sellajoch.com", true }, @@ -29917,16 +31549,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sellme.biz", true }, { "sellmoretires.com", true }, { "sello.com", true }, + { "sellorbuy.uk", true }, + { "sellorbuy.us", true }, { "seltendoof.de", true }, { "semacode.com", true }, { "semaf.at", true }, { "semaflex.it", true }, + { "semantica.cz", true }, { "semaphore-studios.com", true }, + { "semdynamics.com", true }, { "semenov.su", false }, { "semianalog.com", true }, { "seminariruum.ee", true }, { "semiocast.com", true }, - { "semjonov.de", true }, + { "semiread.com", true }, { "semmlers.com", true }, { "semox.de", true }, { "semps-2fa.de", true }, @@ -29938,6 +31574,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "semyonov.us", true }, { "senarius.de", true }, { "sendai-sisters.com", true }, + { "sendaiouji.com", true }, { "sendbox.cz", true }, { "sendc.at", true }, { "sendcat.com", true }, @@ -29951,13 +31588,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "seniorem.eu", true }, { "seniors.singles", true }, { "senmendai-reform.com", true }, + { "sennase.net", true }, { "senorcontento.com", true }, { "sensebridge.com", true }, { "sensebridge.net", true }, { "sensepixel.com", true }, { "senshudo.tv", true }, { "sensoft-int.net", true }, - { "sensualism.com", true }, { "sentandsecure.com", true }, { "sentic.info", true }, { "sentidosdelatierra.org", true }, @@ -29980,10 +31617,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "seoexperte.berlin", true }, { "seogeek.nl", true }, { "seohackers.fr", true }, + { "seohouston.com", true }, { "seoinc.com", true }, { "seoium.com", true }, { "seokay.com", true }, - { "seolaba.io", true }, { "seolib.org", true }, { "seomarketing.bg", true }, { "seon.me", true }, @@ -29995,7 +31632,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "seouniversity.org", true }, { "sepalandseed.com", true }, { "seppelec.com", true }, + { "seproco.com", true }, { "septakkordeon.de", true }, + { "septentrionalist.org", true }, { "septfinance.ch", true }, { "septicrepairspecialists.com", true }, { "septillion.cn", true }, @@ -30005,12 +31644,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sera.jp", true }, { "seraph.tokyo", true }, { "serbanpaun.ro", true }, + { "serbianclimbing.com", true }, { "sereema.com", true }, { "serenaden.at", true }, + { "serendeputy.com", true }, { "serf.io", true }, { "sergeemond.ca", true }, { "sergefonville.nl", true }, - { "sergeyreznikov.com", true }, { "sergije-stanic.me", true }, { "sergiosantoro.it", true }, { "sergiozygmunt.com", true }, @@ -30043,10 +31683,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "serverd.de", true }, { "serverexpose.com", true }, { "serverfrog.de", true }, - { "serverlog.net", true }, { "serveroffline.net", false }, { "serverpedia.de", true }, { "servers4all.co.uk", true }, + { "serversfrom.space", true }, { "serversftw.com", true }, { "serverstuff.info", true }, { "serversuit.com", true }, @@ -30054,7 +31694,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "servethecity-karlsruhe.de", true }, { "servettorna.com", true }, { "servgate.jp", true }, - { "service.gov.uk", true }, + { "service-wueste-vodafone.tk", true }, { "servicebeaute.fr", true }, { "serviceboss.de", true }, { "servida.ch", true }, @@ -30063,7 +31703,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "servious.org", true }, { "servitek.de", true }, { "serviziourgente.it", true }, - { "servpanel.de", true }, { "servx.org", true }, { "serw.org", true }, { "serwis-wroclaw.pl", true }, @@ -30075,6 +31714,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "setenforce.one", true }, { "setfix.de", true }, { "sethcaplan.com", true }, + { "sethjust.com", true }, { "sethvargo.com", true }, { "setphaserstostun.org", true }, { "setsailanddive.com", true }, @@ -30090,6 +31730,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sevenhillsapartments.com.au", true }, { "sevenicealimentos.com.br", true }, { "sevenmatches.com", true }, + { "seventwentynine.com", true }, { "severine-trousselard.com", true }, { "severntrentinsuranceportal.com", true }, { "sevinci.ch", true }, @@ -30098,22 +31739,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sewafineseam.com", true }, { "sewinginsight.com", true }, { "sewoo.co.uk", true }, - { "sex-education.com", true }, { "sexaki.com", true }, { "sexdocka.nu", true }, - { "sexgarage.de", true }, { "sexmobil.de", true }, - { "sexocomgravidas.com", true }, - { "sexoyrelax.com", true }, - { "sexpay.net", true }, - { "sexplicit.co.uk", true }, { "sexservice.io", true }, { "sexshopnet.com.br", true }, - { "sexwork.net", true }, { "sexy-store.nl", true }, { "seyfarth.de", true }, + { "seyr.me", true }, { "sfa.sk", true }, - { "sfaturiit.ro", true }, + { "sfaparish.org", true }, { "sfcomercio.com.br", true }, { "sfdev.ovh", true }, { "sfg-nordholz.de", true }, @@ -30126,9 +31761,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sg-elektro.de", true }, { "sg.search.yahoo.com", false }, { "sgb.co", true }, + { "sgcaccounts.co.uk", true }, + { "sgi.org", true }, { "sglibellen.de", true }, { "sgroup-hitoduma.com", true }, { "sgroup-rec.com", true }, + { "sgs-systems.de", true }, + { "sgs.camera", true }, { "sgsp.nl", true }, { "sgtcodfish.com", true }, { "sgtsnookums.net", true }, @@ -30146,6 +31785,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shadigee.org", true }, { "shadowict.net", true }, { "shadowict.tech", true }, + { "shadowkingdomrecords.com", true }, { "shadowkitsune.net", true }, { "shadowlurker.com.au", true }, { "shadowsing.com", true }, @@ -30164,23 +31804,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shaicoleman.com", true }, { "shainessim.com", true }, { "shakan.ch", true }, - { "shaken-kyoto.jp", true }, { "shaken110.com", true }, { "shakepeers.org", false }, { "shakerwebdesign.net", true }, { "shakes4u.com", true }, { "shakespearevet.com", true }, + { "shakingthehabitual.com", true }, { "shalazine.com", true }, { "shalott.org", true }, + { "shalyapin.by", true }, { "shamara.info", true }, { "shamariki.ru", true }, { "shan.io", false }, { "shan.si", true }, { "shanahanstrategy.com", true }, - { "shandonsg.co.uk", true }, - { "shanekoster.net", true }, { "shanetully.com", true }, { "shanewadleigh.com", true }, + { "shankangke.com", true }, { "shannoneichorn.com", true }, { "shansing.cn", true }, { "shansing.com", true }, @@ -30194,7 +31834,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shareeri.com", true }, { "sharekey.com", false }, { "sharelovenotsecrets.com", true }, - { "sharemessage.net", true }, { "shareoffice.ch", true }, { "sharepointdrive.com", true }, { "sharescope.co.uk", false }, @@ -30204,12 +31843,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shariahlawcenter.org", true }, { "sharialawcenter.com", true }, { "sharialawcenter.org", true }, + { "sharisharpe.com", true }, { "shark5060.net", true }, { "sharkie.org.za", true }, { "sharperedge.pw", true }, { "sharperedgecomputers.com", true }, { "sharu.me", true }, - { "sharvey.ca", true }, { "shasso.com", true }, { "shaun.net", true }, { "shaunandamyswedding.com", true }, @@ -30218,7 +31857,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shaunharker.com", true }, { "shav.it", true }, { "shavegazette.com", true }, + { "shawnalucey.com", true }, { "shawnhogan.com", true }, + { "shawnow.com", true }, { "shawnwilkerson.com", true }, { "shazbots.org", true }, { "shazzlemd.com", true }, @@ -30227,6 +31868,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shearcomfort.com", true }, { "sheaspire.com.tw", true }, { "sheehyinfinitioftysonsparts.com", true }, + { "sheekdeveloper.com", true }, + { "sheekmedia.com", true }, { "sheepfriends.com", true }, { "sheet.host", true }, { "shehaal.com", true }, @@ -30238,25 +31881,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shellfire.de", true }, { "shellgame.io", true }, { "shelljuggler.com", false }, + { "shellot.com", true }, { "shellshock.eu", true }, { "shellvatore.us", true }, - { "shemissed.me", true }, { "shemsconseils.ma", true }, { "shena.co.uk", true }, { "shenghaiautoparts.com", true }, { "shenghaiautoparts.net", true }, + { "shengrenyu.com", true }, { "shenyuqi.com", false }, { "sherbers.de", true }, { "sherrikehoetherapy.com", true }, { "shft.cl", true }, + { "shgroup.xyz", true }, { "shgt.jp", true }, { "shh-listen.com", true }, - { "shh.sh", true }, { "shiawasedo.co.jp", true }, { "shichibukai.net", true }, { "shico.org", true }, { "shieldcomputer.com", true }, { "shieldfe.com", true }, + { "shieldofachilles.in", true }, { "shift-record.com", true }, { "shift-to.co.jp", true }, { "shiftdevices.com", true }, @@ -30279,11 +31924,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shipard.com", true }, { "shipard.cz", true }, { "shipcloud.io", true }, + { "shiqi.ca", true }, + { "shiqisifu.cc", true }, { "shirakaba-cc.com", true }, + { "shirao.jp", true }, { "shirt2go.shop", true }, { "shirtsdelivered.com", true }, { "shirtsofholland.com", true }, { "shishamania.de", true }, + { "shishkabobnc.com", true }, { "shishkin.us", true }, { "shishlik.net", true }, { "shitagi-shop.com", true }, @@ -30294,6 +31943,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shitsta.in", true }, { "shivamber.com", true }, { "shivammaheshwari.com", true }, + { "shivatattvayoga.com", true }, { "shlmail.info", true }, { "shmibbles.me", true }, { "shmunky.co.uk", true }, @@ -30302,10 +31952,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shockercityservices.com", true }, { "shodan.io", true }, { "shoemuse.com", true }, + { "shoeracks.uk", true }, { "shoestringeventing.co.uk", true }, { "shokola.com", true }, { "shome.de", true }, { "shooter.dog", true }, + { "shop-hellsheadbangers.com", true }, { "shop-s.net", true }, { "shop.fr", true }, { "shopadvies.nl", true }, @@ -30321,18 +31973,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shopalike.se", true }, { "shopalike.sk", true }, { "shopapi.cz", true }, + { "shopatkei.com", true }, { "shopbakersnook.com", true }, { "shopcoupon.co.za", true }, { "shopcoupons.co.id", true }, { "shopcoupons.my", true }, { "shopcoupons.ph", true }, { "shopcoupons.sg", true }, + { "shophisway.com", true }, + { "shopify.com", true }, { "shopifycloud.com", true }, { "shopkini.com", true }, { "shoplandia.co", true }, { "shoppia.se", true }, { "shopping24.de", true }, { "shoppr.dk", true }, + { "shopregional.com.br", true }, { "shopsouthafrican.com", true }, { "shopstart.dk", true }, { "shoptec.sk", true }, @@ -30340,15 +31996,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shorehamfort.co.uk", true }, { "short-biography.com", true }, { "short-term-plans.com", true }, + { "shortcut.pw", true }, { "shortdiary.me", true }, + { "shorten.ninja", true }, { "shoshin-aikido.de", true }, + { "shoshin.technology", true }, { "shota.vip", true }, { "shotbow.net", true }, + { "shotonwhat.com", true }, { "shouldihookupwithmybarista.com", true }, { "shouttag.com", true }, + { "shovonhasan.com", true }, { "show-saratov.ru", false }, { "showbits.net", true }, - { "showdepiscinas.com.br", true }, { "showf.om", true }, { "showmax.com", true }, { "showmethemoney.ru", true }, @@ -30356,20 +32016,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "showroom.cam", true }, { "showroom.co.uk", true }, { "showroom.uk", true }, - { "showroom113.ru", true }, { "showsonar.com", true }, - { "shoxmusic.net", false }, { "shredriteservices.com", true }, { "shreyansh26.me", true }, { "shrike.me", false }, { "shrinidhiclinic.in", true }, { "shrinkhub.com", true }, { "shrub.ca", true }, - { "shrug.ml", true }, { "shteiman.net", true }, { "shu-fu.net", true }, { "shuffleradio.nl", true }, { "shugo.net", true }, + { "shukatsu-support.jp", true }, { "shulan.moe", true }, { "shuletime.ml", true }, { "shura.eu.org", true }, @@ -30377,6 +32035,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shuset.dk", true }, { "shushu.media", true }, { "shutter-shower.com", true }, + { "shuvo.rocks", true }, + { "shuvodeep.de", true }, { "shux.pro", true }, { "shwrm.ch", true }, { "shybynature.com", true }, @@ -30384,8 +32044,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "si-benelux.nl", true }, { "si.to", true }, { "si2b.fr", true }, + { "siaggiusta.com", true }, { "siamsnus.com", true }, { "sianbryn.co.uk", true }, + { "sianjhon.com", true }, { "sibfk.org", true }, { "sibiutourguide.com", true }, { "sibrenvasse.nl", true }, @@ -30395,29 +32057,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "siciliapulizie.it", true }, { "sicken.eu", true }, { "sickfile.com", true }, - { "sicklepod.com", true }, { "siconnect.us", true }, + { "sicurled.com", true }, { "sidelka-tver.ru", true }, { "sidema.be", true }, + { "sidemount-forum.com", true }, + { "sidemount-tauchen.com", true }, { "sidepodcast.com", true }, { "sidepodcastdaily.com", true }, { "sidepodcastextra.com", true }, + { "sideropolisnoticias.com.br", true }, { "sideshowbarker.net", true }, { "sidium.de", true }, { "sidnicio.us", true }, { "sidonge.com", true }, { "sidongkim.com", true }, - { "sidpod.ru", true }, { "siegemund-frankfurt.de", true }, - { "sieh.es", true }, { "siel.nl", true }, + { "sielsystems.nl", true }, { "sientemendoza.com.ar", true }, + { "sierpinska.co", true }, + { "sierpinska.eu", true }, { "sieulog.com", true }, { "siewert-kau.de", true }, { "sift-tool.org", true }, { "sig6.org", true }, { "sigabrt.org", true }, { "siggerudklatreklubb.no", true }, + { "sight-sound.com", true }, { "sightcure.jp", true }, { "sighup.nz", true }, { "sigismonda.ch", true }, @@ -30430,11 +32097,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "signal.org", true }, { "signalmaps.co.uk", true }, { "signaltransmitter.de", true }, + { "signdesk.com", true }, { "significados.com", true }, { "significados.com.br", true }, { "significantbanter.com", true }, { "signing-milter.org", true }, { "signix.net", true }, + { "signsdance.uk", true }, { "signtul.com", false }, { "sigsrv.net", true }, { "sigterm.no", true }, @@ -30448,13 +32117,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "silashes.ru", true }, { "silaslova-ekb.ru", true }, { "silent-clean.de", true }, + { "silent-yachts.com", true }, { "silentkernel.fr", false }, { "silentundo.org", true }, { "silerfamily.net", true }, + { "silicon-north.com", true }, + { "silicon-vision.com", true }, { "siliconchip.me", true }, - { "silke-hunde.de", true }, { "silkebaekken.no", true }, { "silkebeckmann.de", true }, + { "silkon.net", true }, { "sillisalaatti.fi", true }, { "sillysnapz.co.uk", true }, { "silo.org.br", true }, @@ -30521,7 +32193,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "silvergoldbull.mw", true }, { "silvergoldbull.my", true }, { "silvergoldbull.nz", true }, - { "silvergoldbull.ph", true }, { "silvergoldbull.pl", true }, { "silvergoldbull.pt", true }, { "silvergoldbull.qa", true }, @@ -30539,13 +32210,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "silvergoldbull.uy", true }, { "silvergoldbull.uz", true }, { "silvergoldbull.ws", true }, + { "silverkingalaska.com", true }, { "silverlinkz.net", true }, { "silverseen.com", true }, { "silverwind.io", true }, { "silvine.xyz", true }, + { "silvobeat.blog", true }, { "silvobeat.com", true }, { "sim-karten.net", true }, { "sim-minaoshi.jp", true }, + { "sim-sim.appspot.com", true }, { "sim4seed.org", true }, { "simam.de", true }, { "simark.ca", true }, @@ -30579,11 +32253,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "simonmaddox.com", true }, { "simonpaarlberg.com", true }, { "simonreich.de", true }, - { "simonschmitt.ch", true }, { "simonshine.dk", true }, { "simonspeich.ch", true }, { "simonsreich.de", true }, { "simontaite.com", true }, + { "simonweil.com", true }, { "simonwessel.net", true }, { "simonwoodside.com", true }, { "simpbx.net", true }, @@ -30592,7 +32266,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "simpip.com", true }, { "simple.com", false }, { "simpleclassiclife.com", true }, - { "simplecoding.click", true }, { "simplecontacts.com", true }, { "simplednscrypt.org", true }, { "simpleindianrecipes.com", true }, @@ -30620,6 +32293,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "simplystudio.com", true }, { "simpte.com", true }, { "simpul.nl", true }, + { "simrail.nl", true }, { "simsnieuws.nl", true }, { "simukti.net", true }, { "sin-nombre-alleria.de", true }, @@ -30629,33 +32303,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sinceschool.com", true }, { "sinclairinat0r.com", true }, { "sinde.ru", true }, + { "sinefili.com", true }, { "sinergy.ch", true }, { "sinfulforums.net", true }, { "singaporemint.com", true }, { "singapurfirma.com", true }, { "singel.ch", true }, - { "singerwang.com", true }, { "single-in-stuttgart.de", true }, { "singles-aus-hamburg.de", true }, - { "singles-berlin.de", true }, { "singleuse.link", true }, { "singlu10.org", false }, { "sinktank.de", true }, { "sinn.io", true }, { "sinnersprojects.ro", true }, { "sinomod.com", true }, - { "sinon.org", true }, { "sinonimos.com.br", true }, { "sinonimosonline.com", true }, { "sinonimosonline.com.br", true }, { "sinquin.eu", true }, - { "sinsojb.me", true }, + { "sinronet.com", true }, { "sint-joris.nl", true }, { "sintaxis.org", true }, { "sinterama.biz", true }, { "sinuelovirtual.com.br", true }, { "sioeckes.hu", true }, - { "sipc.org", true }, + { "siratalmustaqim.com", true }, { "siraweb.org", true }, { "sirbouncealotcastles.co.uk", true }, { "sirbouncelot.co.uk", true }, @@ -30668,12 +32340,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sirtaptap.com", true }, { "sirtuins.com", true }, { "sirvoy.com", true }, - { "sisgopro.com", true }, { "sisseastumine.ee", true }, { "sistel.es", true }, { "sistem-maklumat.com", true }, { "sistem-maklumat.com.my", true }, - { "sistemos.net", true }, { "sistemy48.ru", false }, { "sistimiki-anaparastasi.gr", true }, { "sistov.it", true }, @@ -30685,10 +32355,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sitc.sk", true }, { "sitebuilderreport.com", true }, { "sitedrive.fi", true }, + { "sitefactory.com.br", true }, { "sitehoster.org", true }, { "sitenv.org", true }, { "siterencontre.me", true }, { "sites.google.com", true }, + { "sitesko.de", true }, { "sitesuccessful.com", true }, { "sitevandaag.nl", true }, { "sitischu.com", true }, @@ -30696,19 +32368,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sivale.mx", true }, { "sivyerge.com", true }, { "siw64.com", true }, + { "sixcorners.info", true }, + { "sixcorners.net", true }, { "sixpackholubice.cz", true }, { "sixtwentyten.com", true }, { "sj-leisure.com", true }, - { "sja-se-training.com", true }, { "sjaakgilsingfashion.nl", true }, { "sjatsh.com", true }, { "sjd.is", true }, - { "sjdtaxi.com", true }, { "sjis.me", true }, { "sjleisure.co.uk", true }, { "sjoorm.com", true }, { "sjsmith.id.au", true }, { "sjv4u.ch", true }, + { "sjzebs.com", true }, + { "sjzget.com", true }, + { "sjzybs.com", true }, { "sk-net.cz", true }, { "skala.io", true }, { "skalarwelle.eu", true }, @@ -30719,7 +32394,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "skatingchina.com", true }, { "skatn.de", true }, { "skazka.ru", true }, - { "skday.com", true }, { "skedda.com", true }, { "skedr.io", false }, { "skeeley.com", true }, @@ -30727,7 +32401,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "skepneklaw.com", true }, { "skepticalsports.com", true }, { "sketchmyroom.com", true }, - { "sketchywebsite.net", true }, { "skhaz.io", true }, { "skhire.co.uk", true }, { "skhoop.cz", true }, @@ -30738,13 +32411,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "skifttiljutlanderbank.dk", true }, { "skigebied.nl", true }, { "skigebiete-test.de", true }, + { "skill.moe", true }, { "skilletfood.com", true }, { "skillled.com", true }, + { "skillmoe.at", true }, + { "skillout.org", true }, { "skills2serve.org", true }, { "skills2services.com", true }, { "skillseo.com", true }, { "skimming.net", true }, { "skin-cosmetic.eu", true }, + { "skincare-note.com", true }, { "skincases.co", true }, { "skincontracts.co", true }, { "sking.io", true }, @@ -30759,6 +32436,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "skizzen-zeichnungen.de", true }, { "skks.cz", true }, { "sklepsamsung.pl", true }, + { "sklepwielobranzowymd.com", true }, { "sklotechnik.cz", true }, { "sknclinics.co.uk", true }, { "skogsbruket.fi", true }, @@ -30768,35 +32446,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "skolem.de", true }, { "skoleniphp.cz", true }, { "skommettiamo.it", true }, - { "skomski.org", true }, { "skontakt.cz", true }, { "skontorp-enterprise.no", true }, { "skortekaas.nl", false }, { "skory.us", true }, { "skou.dk", false }, { "skram.de", true }, - { "skrimix.tk", true }, { "skryptersi.pl", true }, { "sksdrivingschool.com.au", true }, { "sktan.com", true }, { "skuldwyrm.no", true }, + { "skutry-levne.cz", true }, + { "skutry.cz", true }, { "skwile-cafe.com", true }, { "skwitko.com", true }, + { "sky-coach.com", true }, + { "sky-coach.nl", true }, { "sky-live.fr", true }, + { "sky-universe.net", true }, { "skyanchor.com", true }, - { "skybloom.com", true }, - { "skybloom.io", false }, - { "skybound.link", true }, + { "skybloom.io", true }, + { "skycmd.net", true }, { "skyderby.ru", true }, { "skydragoness.com", true }, { "skydrive.live.com", false }, + { "skyem.co.uk", true }, { "skylgenet.nl", true }, { "skylightcreative.com.au", true }, { "skylinertech.com", true }, { "skylineservers.com", true }, - { "skylocker.nl", true }, { "skyloisirs.ch", true }, { "skyminds.net", true }, + { "skyn3t.in", true }, { "skynet233.ch", true }, { "skynethk.com", true }, { "skynetnetwork.eu.org", true }, @@ -30806,12 +32487,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "skyris.co", true }, { "skys-entertainment.com", true }, { "skysuite.nl", true }, - { "skytec.host", true }, + { "skyynet.de", true }, { "skyzimba.com.br", true }, { "sl-bildermacher.de", true }, { "sl0.us", true }, { "sl899.com", true }, { "sl998.com", true }, + { "slab.com", false }, { "slack-files.com", true }, { "slack.com", true }, { "sladic.si", false }, @@ -30821,7 +32503,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "slane.cn", false }, { "slangbellor.com", true }, { "slanterns.net", true }, - { "slapen17.nl", true }, { "slash32.co.uk", true }, { "slashcrypto.org", true }, { "slate.to", true }, @@ -30831,15 +32512,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "slaughterhouse.fr", true }, { "slavasveta.info", true }, { "slaws.io", true }, - { "sld08.com", true }, { "sleeping.town", true }, { "sleeplessbeastie.eu", true }, { "sleepmap.de", true }, + { "sleeps.jp", true }, { "sleepstar.co.uk", true }, { "sleepstar.de", true }, { "sleepstar.fr", true }, { "sleestak.net", true }, { "sleio.com", true }, + { "sletat.ru", true }, { "slever.cz", true }, { "slevermann.de", true }, { "slevomat.cz", true }, @@ -30848,16 +32530,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "slidebatch.com", true }, { "slides.zone", true }, { "slik.ai", true }, + { "slim-slender.com", true }, { "slimk1nd.nl", true }, { "slimspots.com", true }, { "slingo-sta.com", true }, - { "slingo.com", true }, { "slingooriginals.com", true }, { "slingoweb.com", true }, { "slink.hr", true }, { "slip-gaming.tk", true }, { "slneighbors.org", true }, - { "slo-net.net", true }, { "slo-tech.com", true }, { "sloancom.com", true }, { "slonep.net", true }, @@ -30869,14 +32550,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "slotfara.net", true }, { "sloths.org", true }, { "slotlist.info", true }, - { "slovenskycestovatel.sk", true }, { "slow.zone", true }, { "slowb.ro", true }, { "slowgames.xyz", true }, { "slpower.com", true }, { "slrd-isperih.com", true }, { "sluciaconstruccion.com", true }, - { "sluimann.de", true }, { "sluitkampzeist.nl", false }, { "slusham.com", true }, { "slvh.fr", true }, @@ -30890,11 +32569,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "smablo.com", true }, { "smackhappy.com", true }, { "smadav.ml", true }, + { "smakassen.no", true }, { "smallcloudsolutions.co.za", true }, { "smalldogbreeds.net", true }, { "smalle-voet.de", true }, { "smallhadroncollider.com", true }, - { "smallpath.me", true }, { "smalltalkconsulting.com", true }, { "smaltimento-rifiuti.org", true }, { "smaltimento.caserta.it", true }, @@ -30911,6 +32590,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "smart-shapes.co.uk", true }, { "smart-wohnen.net", true }, { "smart.gov", true }, + { "smartacademy.ge", true }, { "smartairkey.com", true }, { "smartandcom.ch", true }, { "smartandhappychild.ro", true }, @@ -30929,6 +32609,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "smartlogreturns.com", true }, { "smartlogstock.com", true }, { "smartlogtower.com", true }, + { "smartmarketingcoaching.com", true }, { "smartmeal.ru", true }, { "smartmessages.net", true }, { "smartmomsmartideas.com", true }, @@ -30936,16 +32617,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "smartphonechecker.co.uk", true }, { "smartpolicingplatform.com", true }, { "smartrade.tech", true }, + { "smartrecruit.ro", true }, { "smartservices.nl", true }, { "smartshiftme.com", true }, { "smartship.co.jp", true }, - { "smartshoppers.es", true }, { "smartsparrow.com", true }, { "smartvideo.io", true }, { "smartviewing.com", true }, + { "smartwank.com", true }, { "smartwelve.com", true }, { "smartwoodczech.cz", true }, - { "smartwritingservice.com", true }, { "smartwurk.nl", false }, { "smash-gg.club", true }, { "smatch.com", true }, @@ -30955,7 +32636,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sme-gmbh.net", true }, { "smeetsengraas.com", true }, { "smeso.it", true }, - { "smiatek.name", true }, { "smileandpay.com", true }, { "smiledirectsales.com", true }, { "smilessoftplay.co.uk", true }, @@ -30971,11 +32651,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "smithandcanova.co.uk", false }, { "smithchow.com", true }, { "smithfieldbaptist.org", true }, + { "smkw.com", false }, { "smm.im", true }, - { "smmcab.website", true }, { "smmlaba.io", true }, { "smokeandmirrors.agency", true }, - { "smokinghunks.com", true }, { "smol.cat", true }, { "smoo.st", true }, { "smoothcomp.com", true }, @@ -31000,26 +32679,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "smskeywords.co.uk", true }, { "smskmail.com", true }, { "smsprivacy.org", true }, + { "smtpdev.com", true }, { "smuncensored.com", true }, { "smutba.se", true }, { "smutek.net", true }, + { "smx.net.br", true }, { "snackbesteld.nl", true }, { "snafu.cz", true }, { "snakafya.com", true }, - { "snake.dog", true }, { "snap.com", true }, { "snapappointments.com", true }, { "snapchat.com", true }, { "snapfinance.com", true }, { "snapserv.ch", true }, { "snapserv.net", true }, - { "snaptools.io", true }, + { "snaptier.co", true }, { "snatch.com.ua", true }, { "snazel.co.uk", true }, { "snazzie.nl", true }, { "sncdn.com", true }, { "sndbouncycastles.co.uk", true }, - { "sneak.berlin", true }, { "sneakpod.de", true }, { "sneakynote.com", true }, { "sneakypaw.com", true }, @@ -31036,8 +32715,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "snelxboxlivegold.nl", true }, { "snerith.com", true }, { "snfdata.com", false }, + { "sngallery.co.uk", true }, + { "sngeo.com", true }, { "sniderman.eu.org", true }, - { "sniderman.pro", true }, { "sniderman.us", true }, { "sniep.net", true }, { "snight.co", true }, @@ -31047,6 +32727,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "snl.no", true }, { "snoerendevelopment.nl", true }, { "snopyta.com", true }, + { "snoringhq.com", true }, { "snote.io", true }, { "snoupon.com", true }, { "snow-online.com", true }, @@ -31060,10 +32741,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "snowhaze.ch", true }, { "snowhaze.com", true }, { "snowpak.com", true }, - { "snowplane.net", true }, - { "snowraven.de", true }, + { "snowpaws.de", true }, + { "snowy.land", true }, { "snowyluma.me", true }, - { "snrat.com", true }, { "snrub.co", true }, { "snuff.porn", true }, { "snughealth.org.uk", true }, @@ -31074,22 +32754,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "soapitup.com.au", true }, { "soaringtoglory.com", true }, { "sobaya-gohei.com", true }, + { "sobeau.com", true }, { "sobelift.com", true }, { "sobersys.com", true }, { "sobie.ch", true }, { "sobieray.dyndns.org", true }, { "sobotkama.eu", true }, - { "sobreporcentagem.com", true }, { "soc.net", true }, - { "socal-babes.com", true }, - { "soccersavings.com", true }, { "soccorso-stradale.org", true }, { "sochi-sochno.ru", true }, { "sociability.dk", true }, { "social-events.net", false }, { "social-media-strategies.it", true }, + { "social-media-strategy.org.uk", true }, { "socialhams.net", true }, { "socializam.com", true }, + { "socialmarketingday.nl", true }, { "socialmedia.ro", true }, { "socialnitro.com", true }, { "socialnous.co", true }, @@ -31122,9 +32802,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "softanka.com", true }, { "softart.club", true }, { "softballrampage.com", true }, + { "softbebe.com", true }, { "softcreatr.de", false }, + { "softonic.com", true }, { "softplay4hire.co.uk", true }, - { "softplaynation.co.uk", true }, { "softprayog.in", true }, { "softrobot.se", true }, { "softtennis-zenei.com", true }, @@ -31133,13 +32814,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "softwarebetrieb.de", true }, { "softwaredesign.foundation", false }, { "softwarevoortherapeuten.nl", true }, + { "softwaylancing.com", true }, { "softwerk-edv.de", true }, { "sogola.com", true }, { "sogravatas.com.br", true }, { "sogutma.com.tr", true }, { "sohamroy.me", true }, + { "soia.ca", true }, { "soinvett.com", true }, - { "soju.fi", true }, + { "sokaissues.info", true }, { "sokche.com", true }, { "sokietech.com", true }, { "sokkenhoek.nl", true }, @@ -31157,6 +32840,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "solarplan-berlin.de", true }, { "solarstrom.net", true }, { "soldecom.com", true }, + { "solden.be", true }, + { "soldesduck.be", true }, + { "soldesduck.ch", true }, { "soldout-app.com", true }, { "sole-erdwaermetauscher.de", true }, { "sole-software.de", true }, @@ -31164,29 +32850,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "soledadpenades.com", true }, { "solentbasketball.co.uk", true }, { "solentbubblesandbounce.co.uk", true }, + { "solepurposetest.com", true }, { "soleria.eu", true }, { "solesoftware.de", true }, { "soleus.nu", false }, { "solfegiator.ch", true }, { "soli.cafe", true }, { "solicafe.at", true }, + { "solidarita-kosovo.net", true }, { "solidshield.com", true }, - { "solidtuesday.com", true }, { "solihullcarnival.co.uk", true }, { "solihullinflatables.com", true }, { "solihulllionsclub.org.uk", true }, { "solipym.net", true }, { "solit.systems", true }, + { "solitairenetwork.com", true }, { "solmek.co.uk", true }, { "solmek.com", true }, { "solomisael.com", true }, { "solomo.pt", true }, { "solonotizie24.it", true }, + { "solos.im", true }, { "solsocog.de", true }, { "soluphant.de", true }, { "solus-project.com", true }, { "solutionhoisthire.com.au", true }, { "solvation.de", true }, + { "solve-it.se", true }, { "solved.tips", true }, { "solvemethod.com", true }, { "solvingproblems.com.au", true }, @@ -31198,9 +32888,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "somanao.com", true }, { "somcase.com.br", true }, { "somecrazy.com", true }, + { "somepills.com", true }, { "somersetscr.nhs.uk", true }, { "somersetwellbeing.nhs.uk", true }, - { "somewherein.jp", true }, { "sommefeldt.com", true }, { "somosnoticia.com.br", true }, { "sompani.com", true }, @@ -31217,11 +32907,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "songsmp3.com", true }, { "songsmp3.info", true }, { "songsmp3.io", true }, + { "songsmp3.live", true }, { "songsmp3.me", true }, { "songsmp3.net", true }, { "songsthatsavedyourlife.com", true }, { "songtianyi.com", true }, { "songzhuolun.com", true }, + { "sonia.com.au", true }, { "soniafauville.com", true }, { "sonic.studio", true }, { "sonicdoe.com", true }, @@ -31249,7 +32941,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sorellecollection.com.au", true }, { "sorenstudios.com", true }, { "sorever.online", true }, - { "sorex.photo", true }, { "sorrowfulunfounded.com", true }, { "sortesim.com.br", true }, { "soruly.com", true }, @@ -31273,37 +32964,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "soukodou.jp", true }, { "soul-source.co.uk", true }, { "soulcrazy.org", true }, + { "soulike.tech", true }, { "soulmate.dating", true }, { "soulmating.de", true }, { "soulogic.com", true }, + { "souly.cc", true }, { "soumikghosh.com", true }, { "soumya92.me", true }, { "soundabout.nl", true }, - { "soundbytemedia.com", true }, { "soundedj.com.br", true }, { "soundeo.com", true }, { "soundeo.net", true }, - { "soundgasm.net", true }, { "soundhunter.xyz", false }, + { "soundonsound.com", true }, + { "soundprotectionllc.com", true }, { "soundscrate.com", true }, { "sour.is", true }, { "souravsaha.com", true }, - { "sourcebox.be", true }, + { "sourcebox.be", false }, { "sourcely.net", true }, { "sourceway.de", true }, { "souris.ch", true }, - { "sous-surveillance.net", false }, { "southafrican.dating", true }, { "southambouncycastle.co.uk", true }, { "southamerican.dating", true }, { "southbankregister.com.au", true }, + { "southernlights.xyz", true }, { "southernmost.us", true }, + { "southernstructuralsolutions.com", true }, { "southernutahinfluencers.com", true }, { "southlakenissanparts.com", true }, { "southmelbourne.apartments", true }, { "southmorangtownhouses.com.au", true }, { "southside-crew.com", true }, { "southside-tuning-day.de", true }, + { "southsidebargaincenter.com", true }, { "southwaymotors.com", true }, { "southwestrda.org.uk", true }, { "souyidai.com", true }, @@ -31315,10 +33010,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sozai-good.com", true }, { "sozialy.com", true }, { "sozon.ca", true }, - { "sp-sephiroth.jp", true }, + { "sp-sites.com.au", true }, { "sp.com.pl", true }, { "sp8ce.co", true }, { "space-it.de", true }, + { "space-y.cf", true }, { "spacebaseapp.com", true }, { "spacedirectory.org", true }, { "spacedots.net", true }, @@ -31332,6 +33028,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "spahireleeds.co.uk", true }, { "spaid.xyz", false }, { "spakurort.eu", true }, + { "spaldingwall.com", true }, { "spamdrain.com", true }, { "spamwc.de", true }, { "spanda.io", true }, @@ -31346,6 +33043,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sparklebastard.com", true }, { "sparkresearch.net", true }, { "sparkreviewcenter.com", true }, + { "sparkz.no", true }, { "sparprofi.at", true }, { "sparta-en.org", true }, { "sparta-solutions.de", true }, @@ -31367,9 +33065,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "speargames.net", true }, { "specialtyalloys.ca", true }, { "speciesism.com", true }, - { "spectreattack.com", true }, { "spectrosoftware.de", true }, - { "spedition-transport-umzug.de", true }, { "speech-balloon.com", true }, { "speechdrop.net", true }, { "speechmate.com", true }, @@ -31381,7 +33077,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "speedsportofhull.co.uk", true }, { "speedtailors.com", true }, { "speedtest-russia.com", true }, - { "speedychat.it", true }, { "speeltoneel.nl", true }, { "speerpunt.info", true }, { "speets.ca", true }, @@ -31392,29 +33087,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "spellcheckci.com", true }, { "spellchecker.net", true }, { "spenglerei-shop.de", true }, + { "sperec.fr", true }, { "sperohub.com", true }, { "sperrstun.de", true }, { "spesys-services.fr", true }, { "spha.info", true }, { "sphereblur.com", true }, + { "spherenix.org", true }, { "sphido.org", true }, { "spicydog.org", true }, { "spicymatch.com", true }, + { "spidermail.tk", true }, + { "spidernet.tk", true }, { "spideroak.com", true }, { "spiders.org.ua", true }, + { "spiel-teppich.de", true }, { "spielezar.ch", true }, { "spielland.ch", true }, { "spiellawine.de", true }, + { "spiet.nl", true }, { "spiff.eu", true }, { "spiga.ch", true }, { "spillersfamily.net", true }, { "spillmaker.no", false }, { "spilogkoder.dk", true }, - { "spinalien.net", true }, + { "spinalien.net", false }, + { "spinalo.se", true }, { "spindle.com.ph", true }, { "spindrift.com", true }, { "spingenie.com", true }, - { "spinner.dnshome.de", true }, + { "spinor.im", true }, { "spins.fedoraproject.org", true }, { "spinspin.wtf", true }, { "spiralschneiderkaufen.de", true }, @@ -31435,7 +33137,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "splintermail.com", true }, { "splitdna.com", true }, { "splitreflection.com", true }, + { "splopp.com", true }, { "splunk.net", true }, + { "splunk.zone", true }, { "spodelime.com", true }, { "spoketwist.com", true }, { "spoluck.ca", true }, @@ -31445,31 +33149,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "spongepowered.org", true }, { "sponsor.network", true }, { "sponsormatch.eu", true }, - { "sponsorowani.pl", true }, { "spoofhaus.com", true }, { "spookbook.net", true }, { "spookquest.com", true }, - { "spookyinternet.com", true }, { "spoopy.link", true }, + { "spoorcam.nl", true }, { "sporcard.com", true }, { "spornkuller.de", true }, { "sport-in-sundern.de", true }, { "sport-potreby.cz", true }, { "sport-potreby.sk", true }, { "sport-socken.net", true }, - { "sport247.bet", true }, + { "sportakrobatik.at", true }, { "sportbetuwe.nl", true }, { "sporter.com", true }, - { "sportflash.info", true }, { "sportnesia.com", true }, { "sportovnidum.cz", true }, { "sportparks.com", true }, { "sportparks.org", true }, - { "sportressofblogitude.com", true }, { "sports.dating", true }, { "sportsjaw.com", true }, { "sportsmansblog.com", true }, { "sportstraineradvisor.com", true }, + { "sportstreetstyle.com", true }, { "sporttown.it", true }, { "sportugalia.ru", true }, { "sportvereine.online", true }, @@ -31495,9 +33197,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sprinklermanohio.com", true }, { "spritmonitor.de", true }, { "spritsail.io", true }, + { "sproktz.com", true }, { "sprucecreekclubs.com", true }, { "sprucecreekgcc.com", true }, { "sps-lehrgang.de", true }, + { "spslawoffice.com", true }, + { "spsnewengland.org", true }, { "sptk.org", true }, { "spuffin.com", true }, { "spufpowered.com", true }, @@ -31507,7 +33212,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "spydar007.com", true }, { "spydar007.net", true }, { "spydersec.com", true }, - { "spykedigital.com", true }, { "spyprofit.ru", true }, { "spyroszarzonis.com", true }, { "sqkaccountancy.co.uk", true }, @@ -31515,6 +33219,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sqlapius.net", true }, { "sqlfeatures.com", true }, { "sqr-training.com", true }, + { "sqroot.eu", true }, { "squadlinx.com", true }, { "square-gaming.org", true }, { "square-src.de", false }, @@ -31533,6 +33238,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "srbija-nekretnine.org", true }, { "src.fedoraproject.org", true }, { "srchub.org", true }, + { "srife.net", true }, + { "srigc.com", true }, { "srihash.org", true }, { "srinivasan.io", true }, { "sro.center", true }, @@ -31558,7 +33265,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ssc8689.com", true }, { "ssc8689.net", true }, { "sscd.no", true }, - { "ssdax.com", true }, + { "ssdax.com", false }, { "ssdservers.co.uk", true }, { "ssenberg.nl", true }, { "ssh-keys.online", true }, @@ -31583,12 +33290,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sslmate.com", true }, { "sslok.com", true }, { "sslping.com", true }, - { "sslpoint.com", true }, { "ssls.cz", true }, { "sslsurvey.de", true }, { "ssmato.me", true }, { "ssmca.com", true }, { "ssnet.vip", true }, + { "sso.to", false }, { "ssready.io", true }, { "ssready.org", true }, { "sstaging.com", true }, @@ -31597,6 +33304,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ssuiteoffice.com", true }, { "ssuitesoft.com", true }, { "st-antonius-kuenzell.de", true }, + { "st-innovationcup.com", true }, { "st-kilian-markt-erlbach.de", true }, { "st-news.de", true }, { "st-shakyo.jp", true }, @@ -31616,40 +33324,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stadterneuerung-hwb.de", true }, { "stadtpapa.de", true }, { "stadtplan-ilmenau.de", true }, + { "staer.ro", true }, { "staff.direct", true }, + { "staffordlabour.org.uk", true }, { "stage.wepay.com", false }, { "stage4.ch", true }, { "stageirites.com", true }, { "stageirites.fr", true }, { "stageirites.org", true }, - { "stahlfors.com", false }, + { "stahlfors.com", true }, { "stainedglass.net.au", true }, { "stair.ch", true }, { "stairfallgames.com", true }, { "stairlin.com", true }, + { "stakestrategy.com", true }, { "staklim-malang.info", true }, { "stako.jp", true }, { "staktrace.com", true }, - { "stalder.work", true }, + { "staljedevledder.nl", true }, { "stalker-shop.com", true }, { "stalkr.net", true }, - { "stall-zur-linde.de", true }, - { "stamboommuller.nl", true }, - { "stamboomvanderwal.nl", true }, { "stameystreet.com", true }, { "stamkassa.nl", true }, { "stammtisch.domains", true }, { "stamonicatourandtravel.com", true }, { "stamparmakarije.me", true }, { "stampederadon.com", true }, + { "stampsbar.co.uk", true }, { "standagainstspying.org", true }, { "standard.co.uk", true }, { "standardequipment.com", true }, { "standards.gov", true }, + { "stanron.com", true }, { "stanthonymaryclaret.org", true }, { "star-citizen.wiki", true }, { "star-clean.it", true }, - { "star-killer.net", true }, { "starcoachservices.ca", true }, { "starcomproj.com", true }, { "stardanceacademy.net", true }, @@ -31660,6 +33369,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stargarder-jungs.de", true }, { "stargatelrp.co.uk", true }, { "stargazer.de", true }, + { "starina.ru", true }, { "starinvestors.in", true }, { "starka.st", true }, { "starkbim.com", true }, @@ -31670,8 +33380,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "starmtech.fr", true }, { "starpeak.org", true }, { "starphotoboothsni.co.uk", true }, + { "starsam80.net", true }, + { "starsing.bid", true }, { "starskim.cn", true }, - { "starstreak.net", true }, + { "starstreak.net", false }, { "startaninflatablebusiness.com", true }, { "startergen.com", true }, { "startlab.sk", true }, @@ -31679,6 +33391,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "startpage.com", true }, { "startpage.info", true }, { "startrek.in", true }, + { "startsamenvitaal.nu", true }, { "starttraffic.com", true }, { "starttraffic.uk", true }, { "startupgenius.org", true }, @@ -31700,22 +33413,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stationatlyndhurst.com", true }, { "stationatwillowgrove.com", true }, { "stationcharlie.co.za", true }, + { "statistik-seminare.de", true }, { "statistikian.com", true }, { "statofus.com", true }, { "stats.g.doubleclick.net", true }, - { "status.coffee", true }, { "statuscode.ch", true }, { "stav.io", true }, { "stavros.ovh", true }, { "stay.black", true }, { "stayme.cz", true }, { "stayschemingco.com", true }, + { "stb-schefczyk.de", true }, { "stb-strzyzewski.de", true }, { "stbennett.org", true }, + { "stclementmatawan.org", true }, + { "stclementreligioused.org", true }, + { "stcplasticsurgery.com", true }, { "stcu.org", false }, { "std-home-test.com", true }, { "stderr.cc", true }, - { "stdev.org", true }, + { "stdrc.cc", false }, { "steakhaus-zumdorfbrunnen.de", true }, { "steakovercooked.com", true }, { "stealingheather.com", true }, @@ -31732,7 +33449,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "steborio.pw", true }, { "steckel.cc", true }, { "stedb.eu", true }, - { "stedbg.net", true }, { "steef389.eu", true }, { "steel-roses.de", true }, { "steelephys.com.au", true }, @@ -31748,7 +33464,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stefanorossi.it", true }, { "stefanovski.io", true }, { "stefanvanburen.xyz", true }, - { "stefany.eu", true }, { "steffentreeservice.com", true }, { "stegmaier-immobilien.de", true }, { "steidlewirt.de", true }, @@ -31775,6 +33490,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stephane-huc.net", false }, { "stephaniedeady.ie", true }, { "stephanieschreiber.com", true }, + { "stephansurgicalarts.com", true }, + { "stephencreilly.com", true }, { "stephenhaunts.com", true }, { "stephenhorler.com.au", true }, { "stephenj.co.uk", true }, @@ -31813,6 +33530,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "steuertipps-sonderausgaben.de", true }, { "steve.kiwi", true }, { "steveborba.com", true }, + { "stevecostar.com", true }, { "stevedesmond.ca", true }, { "stevedoggett.com", true }, { "stevegrav.es", true }, @@ -31831,11 +33549,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stevenz.xyz", true }, { "stevesdrivingschooltyneside.com", true }, { "stewartswines.com", true }, - { "stewonet.nl", true }, + { "stewpolley.com", true }, { "steyaert.be", false }, - { "stforex.com", true }, + { "stforex.com", false }, { "stfw.info", true }, - { "stge.uk", true }, + { "stian.net", true }, { "stichtingliab.nl", true }, { "stichtingscholierenvervoerzeeland.nl", true }, { "stichtingsticky.nl", true }, @@ -31851,7 +33569,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stift-kremsmuenster.at", true }, { "stiftemaskinen.no", true }, { "stigharder.com", true }, - { "stigviewer.com", true }, { "stijncrevits.be", true }, { "stijnodink.nl", true }, { "stikic.me", true }, @@ -31860,6 +33577,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stilecop.com", true }, { "stillnessproject.com", true }, { "stilmobil.se", true }, + { "stiltmedia.com", true }, { "stimmgabel.lu", true }, { "stin.hr", true }, { "stinaspiegelberg.com", true }, @@ -31867,16 +33585,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stintup.com", true }, { "stipsan.me", true }, { "stirblaut.de", true }, - { "stirling.co", true }, { "stirlingpoon.com", true }, { "stitchfiddle.com", true }, + { "stitchinprogress.com", true }, { "stivesbouncycastlehire.co.uk", true }, { "stjohnin.com", true }, + { "stjohnsottsville.org", true }, + { "stjoseph-stcatherine.org", true }, + { "stjscatholicchurch.org", true }, + { "stjustin.org", true }, { "stln.ml", true }, { "stlu.de", true }, + { "stlukenh.org", true }, { "stlukesbrandon.org", true }, { "stm-net.de", true }, + { "stma.is", true }, + { "stmarthachurch.com", true }, { "stmaryextra.uk", true }, + { "stmichaellvt.com", true }, + { "stmkza.net", true }, { "stmlearning.com", true }, { "stmsolutions.pl", true }, { "stneotsbouncycastlehire.co.uk", true }, @@ -31888,7 +33615,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stoebermehl.at", true }, { "stoffelnet.de", true }, { "stogiesandmash.com", true }, - { "stoinov.com", true }, { "stokvistrading.nl", true }, { "stolin.info", true }, { "stolina.de", false }, @@ -31896,19 +33622,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stolkschepen.nl", true }, { "stolpi.is", true }, { "stomt.com", true }, + { "stoneagehealth.com.au", true }, { "stonedworms.de", true }, { "stonefusion.org.uk", true }, { "stonehammerhead.org", true }, - { "stonemain.eu", true }, { "stonewuu.com", true }, { "stony.com", true }, { "stonystratford.org", true }, + { "stopbreakupnow.org", true }, { "stopbullying.gov", true }, { "stopfraud.gov", false }, { "stopthethyroidmadness.com", true }, { "storageideas.uk", true }, + { "storageshedsnc.com", true }, { "stordbatlag.no", true }, { "storedsafe.com", true }, + { "storeit.co.uk", true }, { "storillo.com", true }, { "storm-family.com", true }, { "stormi.io", true }, @@ -31936,6 +33665,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "strategiccapital.com", true }, { "strategiclivingblog.com", true }, { "strategie-zone.de", true }, + { "strathewerd.de", true }, { "stratmann-b.de", true }, { "stratuscloud.co.za", true }, { "stratuscloudconsulting.cn", true }, @@ -31949,18 +33679,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "straubis.org", true }, { "strauser.com", true }, { "stravers.shoes", true }, + { "strawberry-laser.gr", true }, { "streamchan.org", true }, + { "streamelements.com", true }, + { "streamkit.gg", true }, { "streamlineautogroup.com", true }, { "streampleasure.xyz", true }, - { "streams.dyndns.org", true }, + { "street-medics.fr", true }, { "street-smart-home.de", true }, { "street-tek.com", true }, { "streetdancecenter.com", true }, + { "streetmarket.ru", true }, { "streets.mn", true }, { "streetshirts.co.uk", true }, { "streetspotr.com", true }, { "streetview.wien", true }, { "strefapi.com", true }, + { "streklhof.at", true }, + { "stremio.com", true }, { "strengthroots.com", true }, { "stretchmyan.us", true }, { "stretchpc.com", true }, @@ -31973,38 +33709,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stringtoolbox.com", true }, { "stringvox.com", true }, { "stripe.com", true }, + { "striped.horse", true }, { "strivephysmed.com", false }, { "strm.hu", true }, { "strming.com", true }, { "strobeltobias.de", true }, - { "strobeto.de", true }, { "strobotti.com", true }, { "stroeerdigital.de", true }, { "stroginohelp.ru", true }, { "strom.family", true }, + { "stromaci.sk", true }, { "stromberger.org", true }, { "strommenhome.com", true }, + { "stromzivota.sk", true }, { "strongpassword.club", true }, { "strongrandom.com", false }, { "strongsalpinesucculents.com", true }, { "strongtowerpc.com", true }, { "stroomacties.nl", true }, + { "stroseoflima.com", true }, { "strozik.de", true }, { "structurally.net", true }, { "structure.systems", true }, { "strugee.net", true }, { "strutta.me", true }, - { "struxureon.com", true }, { "strydom.me.uk", true }, { "stsolarenerji.com", true }, { "stt.wiki", true }, { "stuartbell.co.uk", true }, + { "stuarteggerton.com", true }, { "stuartmorris.id.au", true }, { "stuartmorris.me", true }, { "stuartmorris.name", true }, { "stuartmorris.tel", true }, { "stuarts.xyz", false }, { "stuco.co", true }, + { "stucorweb.com", true }, { "stucydee.nl", true }, { "studenckiemetody.pl", true }, { "student-eshop.cz", true }, @@ -32024,6 +33764,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "studio-architetto.com", true }, { "studio-fotografico.ru", true }, { "studio-webdigi.com", true }, + { "studiobergaminloja.com.br", true }, { "studiodentisticosanmarco.it", true }, { "studiodewit.nl", true }, { "studiogavioli.com", true }, @@ -32033,6 +33774,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "studiolegalepaternostro.it", true }, { "studiomarcella.com", true }, { "studionowystyl.pl", true }, + { "studiopirrate.com", true }, { "studiopop.com.br", true }, { "studioproapp.com", true }, { "studioriehl.com", true }, @@ -32046,10 +33788,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "studium.cz", true }, { "studlan.no", true }, { "studyin.jp", true }, + { "studyspy.ac.nz", true }, { "studytactics.com", true }, + { "studytale.com", true }, { "stuermer.me", true }, { "stuetzredli.ch", true }, - { "stuff-fibre.co.nz", true }, { "stuffi.fr", true }, { "stuffie.org", true }, { "stuka-art.de", true }, @@ -32078,12 +33821,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "styles.pm", true }, { "stylett.ru", true }, { "stylewish.me", true }, - { "styloeart.com", true }, { "stypr.com", true }, { "su1ph3r.io", true }, { "suaudeau.fr", true }, { "suaudeau.org", true }, - { "suave.io", true }, { "sub-net.at", true }, { "sub.media", true }, { "subastasdecarros.net", true }, @@ -32105,7 +33846,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "subversive-tech.com", true }, { "succ.in", true }, { "succesprojekter.dk", true }, - { "succubus.xxx", true }, { "suchmaschinen-werkstatt.de", true }, { "suckmyan.us", false }, { "sucretown.net", true }, @@ -32115,6 +33855,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sudo-i.net", true }, { "sudo.org.au", true }, { "sudo.ws", true }, + { "sudokian.io", true }, { "sudoschool.com", true }, { "suelyonjones.com", true }, { "suessdeko.de", true }, @@ -32125,15 +33866,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sugarandcloth.com", true }, { "sugarbrother.com", true }, { "sugarfactory.cz", true }, + { "sugarlandkarate.net", true }, + { "sugarmillmanagement.com", true }, { "sugarshin.net", true }, { "suggea.com", true }, { "suggestim.ch", true }, { "suisui.stream", true }, + { "suited21.com", true }, { "suitesapp.com", true }, + { "sujal.com", true }, { "sujatadev.in", true }, { "sujoydhar.in", true }, + { "suka.moe", true }, + { "suke3.jp", true }, { "suki.moe", true }, { "suko.pe", true }, + { "sukoyakapp.com", true }, { "sukrie.net", true }, { "suksit.com", true }, { "sulek.eu", true }, @@ -32153,7 +33901,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sunchasercats.com", true }, { "sundanceusa.com", true }, { "sundayfundayjapan.com", true }, - { "sunfeathers.net", true }, + { "sundayrest.com", true }, + { "sundragon.se", true }, + { "sunfiregold.com", true }, { "sunflyer.cn", false }, { "sunfox.cz", true }, { "sunfulong.blog", true }, @@ -32163,22 +33913,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sunlit.cloud", true }, { "sunn.ie", true }, { "sunoikisis.org", true }, + { "sunset.im", true }, { "sunsetwx.com", true }, { "sunshinesf.org", true }, { "sunsmartresorts.com", true }, + { "sunsong.org", true }, { "sunstar.bg", true }, { "sunwolf.studio", true }, - { "sunyataherb.com", true }, { "suool.net", true }, { "supa.sexy", true }, { "supastuds.com", true }, - { "super-erotica.ru", true }, { "superaficionados.com", true }, { "superbart.nl", true }, { "superbdistribute.com", true }, { "superbouncebouncycastles.com", true }, { "superbowlkneel.com", true }, - { "superbshare.com", true }, { "supercalorias.com", true }, { "supercastlesadelaide.com.au", true }, { "supercastlesbrisbane.com.au", true }, @@ -32187,19 +33936,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "supercastlessydney.com.au", true }, { "supercentenarian.com", true }, { "supercinebattle.fr", true }, + { "superdaddy.club", true }, { "supereight.net", true }, { "superguide.com.au", true }, { "superhappiness.com", true }, { "superhome.com.au", true }, + { "supermae.pt", true }, { "supermarx.nl", true }, { "supermercadosdia.com.ar", true }, { "supermercato24.it", true }, { "supermil.ch", true }, { "supern0va.net", true }, { "supernaut.info", true }, - { "supernt.lt", true }, - { "supersahnetorten.de", true }, - { "supersec.es", true }, { "supersole.net", true }, { "supersonnig-festival.de", true }, { "supersonnigfestival.de", true }, @@ -32211,11 +33959,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "supertechcrew.com", true }, { "supertutorial.com.br", true }, { "supervisionassist.com", true }, + { "superway.es", true }, { "supeuro.com", true }, - { "supperclub.es", false }, { "supplementler.com", true }, { "supplies24.at", true }, { "supplies24.es", true }, + { "supplynation.org.au", true }, { "support.mayfirst.org", false }, { "supportdesk.nu", true }, { "supportericking.org", true }, @@ -32226,41 +33975,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sur-v.com", true }, { "surao.cz", true }, { "surasak.io", true }, + { "surasak.net", true }, + { "surasak.org", true }, { "surdam.casa", false }, { "sure-it.de", true }, + { "surefit-oms.com", true }, { "suretone.co.za", true }, + { "surfnetkids.com", true }, { "surfocal.com", true }, { "surgenet.nl", true }, { "surgeongeneral.gov", true }, { "surgicalassociateswny.com", true }, { "suroil.com", true }, { "surpreem.com", true }, + { "surreyheathyc.org.uk", true }, + { "suruifu.com", true }, + { "suruifu.tk", true }, { "survature.com", true }, { "surveyhealthcare.com", true }, { "surveyinstrumentsales.com", true }, { "surveymill.co.uk", true }, + { "survivalistplanet.com", true }, { "survivalmonkey.com", true }, - { "survivebox.fr", true }, { "susanbpilates.co", true }, { "susanbpilates.com", true }, { "susann-kerk.de", true }, { "susanna-komischke.de", true }, + { "susanvelez.com", true }, { "susc.org.uk", true }, { "sush.us", true }, { "sushi.roma.it", true }, { "sushibesteld.nl", true }, - { "sushifrick.de", true }, { "sushikatze.de", true }, + { "susoccm.org", true }, { "susosudon.com", true }, { "suspension-shop.com", true }, { "sustainabilityknowledgegroup.com", true }, { "sustainoss.org", true }, { "sustsol.com", true }, { "sutas.market", true }, + { "suttacentral.net", true }, { "suurhelsinki.cf", true }, { "suuria.de", true }, + { "suv4.net", true }, { "suwalls.com", true }, { "suzi3d.com", true }, + { "suziekovner.com", true }, { "suzukimarinepress.com", true }, { "sv-1966-medenbach.de", true }, { "sv-turm-hohenlimburg.de", true }, @@ -32275,7 +34035,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "svc-sitec.org", true }, { "svdb.co", false }, { "svdreamcatcher.com", true }, - { "sve-hosting.nl", true }, { "sveinerik.org", true }, { "svenbacia.me", true }, { "svendubbeld.nl", true }, @@ -32286,10 +34045,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "svetandroida.cz", true }, { "svetlilo.com", true }, { "svetzitrka.cz", false }, + { "svht.nl", true }, { "svijet-medija.hr", true }, { "svinformatica.es", true }, { "svm-basketball.de", true }, { "svm-it.eu", true }, + { "svobodnyblog.cz", true }, { "sw-servers.net", true }, { "sw33tp34.com", true }, { "swagsocial.net", true }, @@ -32302,8 +34063,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "swat4stats.com", true }, { "swattransport.ae", true }, { "sway-cdn.com", true }, - { "sway.com", true }, { "swd.agency", true }, + { "sweak.net", true }, { "swedishhost.com", true }, { "swedishhost.se", true }, { "sweep-me.net", true }, @@ -32314,12 +34075,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sweetgood.de", true }, { "sweets-mimatsu.com", true }, { "swehack.org", true }, + { "sweharris.org", true }, + { "swerve-media-testbed-03.co.uk", true }, { "swetrust.com", true }, { "swfmax.com", true }, - { "swiftpk.net", true }, + { "swiftpcbassembly.com", true }, { "swiftqueue.com", true }, { "swilly.org", true }, { "swimbee.nl", true }, + { "swimmingpoolaccidentattorney.net", true }, { "swimready.net", true }, { "swimwear365.co.uk", true }, { "swineson.me", true }, @@ -32344,21 +34108,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "switcheo.rocks", true }, { "switzerland-family-office.com", true }, { "swordfeng.xyz", true }, + { "swqa.hu", true }, + { "swuosa.org", false }, { "swvaux.com", true }, + { "swxtd.com", true }, { "swyn.net", true }, { "sx8.ovh", true }, { "sxistolithos.gr", true }, - { "sy-anduril.de", true }, { "sy24.ru", true }, { "syajvo.if.ua", true }, + { "syamutodon.xyz", true }, + { "syamuwatching.xyz", true }, { "sycamorememphis.org", true }, - { "sychov.pro", true }, { "sydney-sehen.com", true }, { "sydney.dating", true }, { "sydneyhelicopters.com.au", true }, { "sydneylawnandturf.com.au", true }, { "syenar.net", true }, { "syezd.com.au", true }, + { "syha.org.uk", true }, { "syhost.at", true }, { "syhost.ch", true }, { "syhost.de", true }, @@ -32367,7 +34135,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "syleam.in", true }, { "sylfie.net", true }, { "syllogi.xyz", true }, - { "sylvaincombe.net", true }, { "sylvaindurand.fr", true }, { "sylvaindurand.org", true }, { "sylvaloir.fr", true }, @@ -32382,10 +34149,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "symbiose.com", true }, { "symbiosecom.ch", true }, { "symeda.de", true }, - { "symetria.io", true }, { "symfora-meander.nl", true }, { "symlnk.de", true }, { "symphonos.it", true }, + { "sympmarc.com", true }, + { "sympraxisconsulting.com", true }, { "symptome-erklaert.de", true }, { "synabi.com", true }, { "synaptickz.me", true }, @@ -32393,10 +34161,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sync-it.no", true }, { "synccentre.com", true }, { "syncflare.com", true }, - { "synchrocube.com", true }, { "synchrolarity.com", true }, { "synchronyse.com", true }, - { "synchtu.be", true }, { "syncrise.co.jp", true }, { "syneart.com", true }, { "synecek11.cz", true }, @@ -32408,6 +34174,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "synony.me", true }, { "synotna.eu", true }, { "syntaxnightmare.com", true }, + { "syntheticgrassliving.com.au", true }, { "syntheticurinereview.com", true }, { "synthetik.com", true }, { "syoier.com", true }, @@ -32423,7 +34190,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sysmike.de", true }, { "systea.fr", true }, { "system-m.de", true }, - { "system-online.cz", true }, { "system.cf", true }, { "system.is", true }, { "system12.pl", true }, @@ -32431,11 +34197,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "systemadmin.uk", true }, { "systematic-momo.com", true }, { "systematic-momo.dk", true }, + { "systemchile.com", true }, { "systemd.ch", true }, { "systemd.eu.org", true }, { "systemeprod.fr", true }, { "systemintegra.ru", true }, { "systemli.org", true }, + { "systemonthego.com", true }, { "systemreboot.net", true }, { "systemspace.link", true }, { "systemweb.no", true }, @@ -32444,19 +34212,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sysystems.cz", true }, { "syt3.net", true }, { "sytk.me", true }, + { "syukatsu-net.jp", true }, { "syy.im", true }, { "syzygy-tables.info", true }, { "szafkirtv.pl", true }, { "szagun.net", true }, + { "szaloneigly.com", true }, { "szamitogepdepo.com", true }, { "szaydon.me", false }, + { "szclsya.me", true }, { "szczot3k.pl", true }, { "szechenyi2020.hu", true }, { "szentistvanpt.sk", true }, { "szerelem.love", true }, + { "szetowah.org.hk", true }, { "szunia.com", true }, { "szybkiebieganie.pl", true }, { "szyndler.ch", true }, + { "szzsivf.com", true }, { "t-hawk.com", true }, { "t-net.org.hu", true }, { "t-shirts4less.nl", true }, @@ -32480,6 +34253,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tabarnak.ga", true }, { "tabernadovinho.com.br", true }, { "tabhui.com", true }, + { "tabi-news.com", true }, + { "tabi-runrun.com", true }, { "tabithawebb.co.uk", true }, { "tabledusud.be", true }, { "tabledusud.nl", true }, @@ -32492,29 +34267,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tachi.uk", true }, { "tacklinglife.com", true }, { "tacklog.com", true }, - { "tacomafia.net", false }, + { "tacomafia.net", true }, { "tacostea.net", true }, { "tacticalsquare.com", true }, - { "tadata.me", true }, { "taddiestales.com", true }, { "tadeo.ca", true }, + { "tadiranbatteries.de", true }, { "tadluedtke.com", true }, { "tadtadya.com", true }, { "tadu.de", true }, { "tagabrand.co.uk", true }, { "tagdocumentary.com", true }, + { "tagesmutter-zwitscherlinge.de", true }, { "taggedpdf.com", false }, { "taglioepiega.com", true }, { "taglioepiega.eu", true }, { "taglioepiega.it", true }, { "tagpay.com", true }, + { "tahavu.com", true }, { "tahosa.co", true }, { "tahosalodge.org", true }, { "tai-in.com", true }, { "tai-in.net", true }, - { "tailandfur.com", true }, { "tails.boum.org", true }, { "taimane.com", true }, + { "taiphanmem.net", true }, { "taishon.nagoya", true }, { "taitmacleod.com", true }, { "taiwan.dating", true }, @@ -32524,7 +34301,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tajper.pl", true }, { "take1give1.com", false }, { "takeitoffline.co.uk", true }, - { "takemoto-ped.com", true }, { "taken.pl", true }, { "takeshifujimoto.com", true }, { "takk.pl", true }, @@ -32538,6 +34314,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "talentcast.org", true }, { "talenthub.co.nz", true }, { "talentos.pt", true }, + { "talentwall.io", true }, { "taler.net", true }, { "talideon.com", false }, { "talk.google.com", true }, @@ -32548,7 +34325,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "talktech.com", true }, { "talktobot.com", true }, { "talktodarcy.com", true }, - { "talktwincities.com", true }, { "talkwithyourbaby.org", true }, { "tallcraft.com", true }, { "talldude.net", true }, @@ -32556,9 +34332,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tallyfy.com", true }, { "talon.rip", true }, { "talroo.com", true }, - { "talsi.eu", true }, { "talun.de", true }, + { "tam-moon.com", true }, { "tamashimx.net", true }, + { "tamasszabo.net", true }, { "tambre.ee", true }, { "tamchunho.com", true }, { "tamindir.com", true }, @@ -32566,10 +34343,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tampabaybusinesslistings.com", true }, { "tamposign.fr", true }, { "tamriel-rebuilt.org", true }, - { "tanak3n.xyz", true }, + { "tanak3n.xyz", false }, { "tancredi.nl", true }, { "tandem-trade.ru", false }, { "tandempartnerships.com", true }, + { "tandilmap.com.ar", true }, + { "tandk.com.vn", true }, { "tandzorg.link", true }, { "tangel.me", true }, { "tangemann.org", true }, @@ -32585,22 +34364,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tankski.co.uk", true }, { "tannenhof-moelln.de", true }, { "tannerryan.ca", true }, + { "tannerwilliamson.com", true }, + { "tannerwj.com", true }, { "tantalos.nl", true }, { "tantei100.net", true }, { "tanto259.name", false }, { "tanyanama.com", true }, + { "tanz-kreativ.de", true }, { "tanz.info", true }, { "tanzhijun.com", true }, { "tanzo.io", true }, { "taoburee.com", true }, { "taoways.com", true }, { "tapakgram.com", true }, + { "taplamvan.net", true }, { "taplemon.at", true }, { "taplemon.com", true }, { "taprix.org", true }, - { "taqsim.jp", true }, + { "tapsnapp.co", true }, { "taquilla.com", true }, { "taqun.club", true }, + { "tar-mag.com", true }, { "tarantul.org.ua", true }, { "tarasecurity.co.uk", true }, { "tarasecurity.com", true }, @@ -32612,6 +34396,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tariff.cc", true }, { "tarik.io", true }, { "tarmexico.com", true }, + { "tarots-et-oracles.com", true }, { "tarsan.cz", true }, { "tartaneagle.org.uk", true }, { "tartanhamedshop.com.br", true }, @@ -32627,6 +34412,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "taskutark.ee", true }, { "tasogarenoinori.net", true }, { "tass.nu", true }, + { "tastenewwines.com", true }, { "tastic.com", true }, { "tastycake.net", false }, { "tastystakes.com", true }, @@ -32643,13 +34429,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tavsys.net", true }, { "tax-guard.com", true }, { "taxaroo.com", true }, + { "taxaudit.com", true }, { "taxi-24std.de", false }, { "taxi-chamonix.fr", true }, { "taxi-collectif.ch", true }, { "taxi-puck.pl", true }, { "taxi-waregem.be", true }, { "taxicollectif.ch", true }, - { "taxiindenbosch.nl", true }, + { "taxid-k.be", true }, { "taxis-collectifs.ch", true }, { "taxisafmatosinhos.pt", true }, { "taxiscollectifs.ch", true }, @@ -32662,24 +34449,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tb-devel.de", true }, { "tb-itf.de", true }, { "tba.bm", true }, + { "tbejos.com", true }, { "tbfocus.com", true }, { "tbitc.ch", true }, { "tbonejs.org", true }, - { "tbpixel.com", true }, { "tbrindus.ca", true }, { "tbs-certificates.co.uk", true }, { "tbspace.de", true }, - { "tbtech.cz", true }, { "tbuchloh.de", true }, { "tc-st-leonard.ch", true }, { "tc.nz", true }, { "tcacademy.co.uk", true }, { "tcb-a.org", true }, { "tcb-b.org", true }, + { "tccmb.com", true }, { "tcdw.net", true }, { "tcf.org", true }, { "tcgforum.pl", true }, { "tcgrepublic.com", true }, + { "tchaka.top", true }, { "tchannels.tv", true }, { "tchebb.me", true }, { "tchebotarev.com", true }, @@ -32689,7 +34477,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tcnapplications.com", true }, { "tcptun.com", true }, { "tcpweb.net", true }, - { "tcspartner.net", true }, + { "tcvvip.com", true }, + { "tcwis.com", true }, { "tdchrom.com", true }, { "tdfbfoundation.org", true }, { "tdrcartuchos.com.br", true }, @@ -32712,6 +34501,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "teahut.net", true }, { "team-azerty.com", true }, { "team-bbd.com", true }, + { "team-pancake.eu", true }, { "team.house", true }, { "team3482.com", true }, { "teambeam.at", true }, @@ -32722,6 +34512,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "teambodyproject.com", true }, { "teamcombat.com", true }, { "teamliquidpro.com", true }, + { "teammateworld.com", true }, { "teammathics.com", true }, { "teamnetsol.com", true }, { "teamninjaapp.com", true }, @@ -32736,7 +34527,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "teamupturn.org", true }, { "teamusec.de", true }, { "tearoomlints.be", true }, - { "teasenetwork.com", true }, { "teaser-trailer.com", true }, { "teatrarium.com", true }, { "teb-akademia.pl", true }, @@ -32753,8 +34543,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tech-seminar.jp", true }, { "tech-value.eu", true }, { "tech-zealots.com", true }, + { "techableme.com", true }, { "techace.jp", true }, { "techademy.nl", true }, + { "techamigo.in", true }, { "techarea.fr", true }, { "techbelife.com", true }, { "techbrown.com", true }, @@ -32763,10 +34555,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "techcultivation.de", false }, { "techcultivation.net", false }, { "techcultivation.org", false }, - { "techday.co.nz", true }, - { "techday.com", true }, - { "techday.com.au", true }, - { "techday.eu", true }, { "techdirt.com", true }, { "techdroid.eu", true }, { "techendeavors.com", true }, @@ -32778,16 +34566,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "techmajesty.com", true }, { "techmasters.io", true }, { "techmunchies.net", false }, + { "technic3000.com", true }, { "technicabv.nl", true }, { "technicalbrothers.cf", true }, { "technicallyeasy.net", true }, { "technicalsystemsprocessing.com", true }, { "techniclab.net", true }, - { "techniclab.org", true }, - { "techniclab.ru", true }, { "technifocal.com", true }, { "technik-boeckmann.de", true }, { "technikblase.fm", true }, + { "technikman.de", true }, { "technoinfogroup.it", true }, { "technologie-innovation.fr", true }, { "technologyand.me", true }, @@ -32802,12 +34590,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "techosmarcelo.com.ar", true }, { "techpit.us", true }, { "techpivot.net", true }, + { "techpoint.org", true }, { "techshift.eu", true }, { "techshift.nl", true }, { "techshift.se", true }, { "techsolvency.com", true }, { "techsys.cz", true }, { "techtalks.no", true }, + { "techtrader.ai", true }, + { "techtrader.io", true }, { "techtuts.info", true }, { "techvalue.gr", true }, { "techview.link", true }, @@ -32816,6 +34607,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "techwithcromulent.com", true }, { "techwords.io", true }, { "teckids.org", true }, + { "tecma.com", true }, { "tecmarkdig.com", true }, { "tecne.ws", true }, { "tecnicoelettrodomestici.roma.it", true }, @@ -32839,7 +34631,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "teemperor.de", true }, { "teemulintula.fi", true }, { "teencounseling.com", true }, - { "teenerotic.net", true }, { "teengirl.pub", true }, { "teensexgo.com", true }, { "teesypeesy.com", true }, @@ -32859,9 +34650,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "teknoforums.com", true }, { "teknolit.com", true }, { "tekstschrijvers.net", true }, - { "teksuperior.com", true }, { "tektuts.com", true }, - { "tekuteku.jp", true }, { "telamon.eu", true }, { "telamon.fr", true }, { "tele-alarme.ch", true }, @@ -32889,17 +34678,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "telephonedirectories.us", true }, { "telepons.com", true }, { "telework.gov", true }, + { "tellcorpassessoria.com.br", true }, { "telling.xyz", true }, { "tellusaboutus.com", true }, { "telly.site", true }, { "tellygames.com", true }, + { "tellyourtale.com", true }, { "teloo.pl", true }, { "telos-analytics.com", true }, - { "teltonica.com", true }, { "teltru.com", true }, - { "telugu4u.net", true }, { "tem.li", true }, { "tematicas.org", true }, + { "temdu.com", true }, { "temizmama.com", true }, { "temnacepel.cz", true }, { "temp.pm", true }, @@ -32908,7 +34698,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "template-parks.com", true }, { "templateinvaders.com", true }, { "templum.com.br", true }, - { "tempus-aquilae.de", true }, { "tenable.com.au", true }, { "tenbos.ch", true }, { "tendance-et-accessoires.com", true }, @@ -32934,6 +34723,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tenthpin.com", true }, { "tenyx.de", true }, { "tenzer.dk", true }, + { "tepid.org", true }, { "tepitus.de", true }, { "teplofom.ru", true }, { "teplomash24.ru", true }, @@ -32943,14 +34733,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "terabyteit.co.uk", true }, { "teracloud.at", true }, { "teranacreative.com", true }, - { "tercerapuertoaysen.cl", true }, { "teriiphotography.com", true }, + { "teriyakisecret.com", true }, { "terlindung.com", true }, { "termax.me", true }, - { "termino.eu", true }, + { "terminalvelocity.co.nz", true }, + { "terminsrakning.se", true }, { "termitemounds.org", true }, { "termitinitus.org", true }, { "termografiranje.si", true }, + { "termux.com", true }, { "terra.fitness", true }, { "terrab.de", false }, { "terracloud.de", false }, @@ -32963,6 +34755,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "terralimno.eu", true }, { "terraluna.space", true }, { "terranova-nutrition.dk", true }, + { "terrapay.com", true }, { "terrastaffinggroup.com", false }, { "terraweb.net", true }, { "terresmagiques.com", true }, @@ -32975,11 +34768,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tescolide.cz", true }, { "tescoludia.sk", true }, { "teskalabs.com", true }, + { "teslamagician.com", true }, { "tesoro.pr", true }, { "tessai.ga", true }, { "test-textbooks.com", true }, { "test.de", true }, + { "test.support", true }, { "testadren.com", true }, + { "testeveonline.com", true }, { "testgeomed.ro", true }, { "testi.info", true }, { "testomato.com", true }, @@ -32990,6 +34786,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "testuje.net", true }, { "tetedelacourse.ch", true }, { "teto.nu", true }, + { "tetraetc.com", true }, { "tetraktus.org", true }, { "tetsugakunomichi.jp", true }, { "tetsumaki.net", true }, @@ -33040,6 +34837,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tgbyte.de", true }, { "tgexport.eu", true }, { "tgmkanis.com", true }, + { "tgtv.tn", true }, { "tgui.eu", true }, { "tgui.net", true }, { "tgw.com", true }, @@ -33059,6 +34857,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thalgott.net", true }, { "thalhammer.it", true }, { "thalia.nu", true }, + { "thaliagetaway.com.au", true }, { "thallinger.me", true }, { "thamesfamilydentistry.com", true }, { "thanabh.at", true }, @@ -33066,8 +34865,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thanhthinhbui.com", true }, { "thatdarkplace.com", true }, { "thatquiz.org", true }, + { "thatsme.io", true }, { "thca.ca", true }, { "thcpbees.co.uk", true }, + { "the-bermanns.com", true }, { "the-body-shop.hu", false }, { "the-fermenter.com", true }, { "the-gdn.net", true }, @@ -33076,32 +34877,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "the-nash-education-program.com", true }, { "the-pcca.org", true }, { "the-webmaster.com", true }, + { "the-woods.org.uk", true }, { "the-zenti.de", true }, { "the2f.de", true }, { "the3musketeers.biz", true }, { "theactuary.ninja", true }, + { "theadelaideshow.com.au", true }, { "theadultswiki.com", true }, { "thealexandertechnique.co.uk", true }, { "theankhlife.com", true }, { "theanticellulitediet.com", true }, + { "theaps.net", true }, { "theastrocoach.com", true }, { "thebakers.com.br", true }, { "thebakery2go.de", true }, { "thebannerstore.com", true }, + { "thebarrens.nu", true }, { "thebasebk.org", true }, { "thebcm.co.uk", true }, + { "thebeginningviolinist.com", true }, { "thebest.ch", true }, { "thebestfun.co.uk", true }, + { "thebestpersonin.ml", true }, { "thebestsavingsplan.com", true }, { "thebigbitch.nl", true }, { "thebigdatacompany.com", true }, { "thebigwave.de", true }, { "thebikeinsurer.co.uk", true }, { "thebimhub.com", true }, + { "thebinarys.com", true }, { "thebirthdaysite.co.uk", true }, { "thebit.link", true }, { "theblackknightsings.com", true }, { "theblondeabroad.com", true }, + { "theblueroofcottage.ca", true }, { "thebodyprinciple.com", true }, { "thebonerking.com", true }, { "thebouncedepartment.co.uk", true }, @@ -33110,16 +34919,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thebreakroom.org", true }, { "thebrightons.co.uk", true }, { "thebrightons.uk", true }, + { "thebulletin.io", true }, { "thebusinessofgoodfilm.com", true }, { "thecamels.org", true }, { "thecameradivision.com", true }, - { "thecandidforum.com", true }, { "thecarolingconnection.com", true }, { "thecellulitediet.com", true }, { "thecherryship.ch", true }, { "thechunk.net", true }, - { "theciderlink.com.au", true }, - { "thecitizens.com", true }, { "thecitywarehouse.clothing", true }, { "thecloudshelter.com", true }, { "thecoffeecamp.com", true }, @@ -33128,6 +34935,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thecompany.pl", true }, { "theconcordbridge.azurewebsites.net", true }, { "thecondobuyers.com", true }, + { "thecookiejar.me", true }, { "thecozycastle.com", true }, { "thecrazytravel.com", true }, { "thecrew-exchange.com", true }, @@ -33137,14 +34945,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thecuriousdev.com", true }, { "thecurvyfashionista.com", true }, { "thecustomdroid.com", true }, - { "thecustomizewindows.com", true }, { "thedark1337.com", true }, { "thedebug.life", true }, { "thederminstitute.com", true }, + { "thediamondcenter.com", true }, { "thediaryofadam.com", true }, { "thedisc.nl", true }, { "thediscovine.com", true }, { "thedocumentrefinery.com", true }, + { "thedom.site", true }, { "thedreamtravelgroup.co.uk", true }, { "thedronechart.com", true }, { "thedutchmarketers.com", true }, @@ -33152,32 +34961,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "theeducationchannel.info", true }, { "theeducationdirectory.org", true }, { "theeighthbit.com", true }, - { "theel0ja.info", true }, { "theel0ja.ovh", true }, { "theemasphere.com", true }, + { "thefairieswantmedead.com", true }, { "thefanimatrix.net", true }, + { "thefashionpolos.com", true }, { "thefasterweb.com", true }, { "thefbstalker.com", true }, { "thefengshuioffice.com", true }, { "theferrarista.com", true }, + { "thefilmphotography.com", true }, { "theflowerbasketonline.com", true }, + { "theflowershopdeddington.com", true }, { "theflyingbear.net", true }, { "thefnafarchive.org", true }, - { "thefox.com.fr", true }, + { "theforkedspoon.com", true }, + { "thefourthmoira.com", true }, { "thefrk.pw", true }, + { "thefuckingtide.com", true }, { "thefunfirm.co.uk", true }, { "thefurnitureco.uk", true }, { "thegarrowcompany.com", true }, - { "thegcccoin.com", true }, { "thegeekdiary.com", true }, { "thegioinano.com", true }, + { "thegospelforgeeks.org", true }, { "thegrape.ro", true }, { "thegreatpakistan.com", true }, { "thegreatplains.com", true }, { "thegreenfields.se", true }, { "thegreenmanpottery.com", true }, { "thegreenpark.co.uk", true }, - { "thegreens.us", true }, + { "thegrs.com", true }, { "theguitarcompany.nl", true }, { "thegvoffice.net", true }, { "thegym.org", true }, @@ -33191,6 +35005,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thehivedesign.org", true }, { "thehomeicreate.com", true }, { "thehookup.be", true }, + { "thehoryzon.com", true }, { "thehotfix.net", true }, { "thehotness.tech", true }, { "thehouseofgod.org.nz", true }, @@ -33203,15 +35018,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "theinitium.com", true }, { "theintercept.com", true }, { "theinternationalgeekconspiracy.eu", true }, - { "thej0lt.com", true }, { "thejacksoninstitute.com.au", true }, { "thekev.in", true }, { "thekeytobusiness.co.uk", true }, { "thekindplate.ca", true }, { "thekingofhate.com", true }, + { "thekovnerfoundation.org", true }, { "thelaimlife.com", true }, { "thelanscape.com", true }, { "thelastsurprise.com", true }, + { "thelatedcult.com", true }, + { "thelearningenterprise.co.uk", true }, { "thelegionshirley.co.uk", true }, { "thelinuxtree.net", true }, { "thelittlecraft.com", true }, @@ -33221,14 +35038,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "themacoaching.nl", true }, { "themallards.info", true }, { "themarshallproject.org", true }, - { "themeaudit.com", true }, + { "themaster.site", true }, { "themecraft.studio", true }, { "themefoxx.com", true }, { "themetacity.com", true }, - { "themilanlife.com", true }, + { "themigraineinstitute.com", true }, { "themillerslive.com", true }, { "themimitoof.fr", true }, { "themist.cz", true }, + { "themobilestuffs.com", true }, { "themoep.at", true }, { "themoneyconverter.com", true }, { "themonkeytrail.co.uk", true }, @@ -33238,9 +35056,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "themusicinnoise.net", true }, { "thenanfang.com", true }, { "thenarcissisticlife.com", true }, + { "theneatgadgets.com", true }, { "thenexwork.com", true }, { "thenib.com", true }, - { "thenichecast.com", true }, { "thenocman.com", true }, { "thenovaclinic.com", true }, { "thenowheremen.com", true }, @@ -33265,6 +35083,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thepaulagcompany.com", true }, { "thepaymentscompany.com", true }, { "thepb.in", true }, + { "thepeninsulaires.com", true }, { "thephonecaseplace.com", true }, { "thephp.cc", true }, { "thepiabo.ovh", true }, @@ -33275,9 +35094,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "theplaydaysbus.co.uk", true }, { "theplayspot.co.uk", true }, { "theploughharborne.co.uk", true }, + { "thepoplarswines.com.au", true }, { "thepostoffice.ro", true }, { "thepriorybandbsyresham.co.uk", true }, + { "theproductpoet.com", true }, { "thepromisemusic.com", true }, + { "thepurem.com", true }, + { "thepythianseed.com", true }, { "theragran.co.id", true }, { "theralino.de", true }, { "theramo.re", true }, @@ -33287,6 +35110,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "therapysxm.com", true }, { "therealcost.gov", true }, { "thereaper.net.au", true }, + { "theregoesbrian.com", true }, + { "thereisnocloud.fr", true }, + { "therepublicofliverpool.com", true }, { "theresa-mayer.eu", true }, { "therevenge.me", true }, { "therewill.be", true }, @@ -33294,17 +35120,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thermity.com", true }, { "thermolamina.nl", true }, { "theroks.com", true }, + { "theropes.nyc", true }, { "theroyalmarinescharity.org.uk", true }, + { "therugswarehouse.co.uk", true }, { "theruizes.com", true }, { "theruleslawyer.net", true }, { "therumfordcitizen.com", true }, { "thesalonthing.com", false }, - { "thesassynut.com", true }, + { "thesarogroup.com", true }, { "thesaturdaypaper.com.au", true }, { "thesaurus.net", true }, { "theschool.jp", true }, { "thescientists.nl", true }, - { "thesecondsposts.com", true }, + { "thesecondsposts.com", false }, { "theseed.io", true }, { "theseedbox.xyz", true }, { "theseletarmall.com", true }, @@ -33317,6 +35145,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thesharepointfarm.com", true }, { "theshield.in", true }, { "theshine.pl", true }, + { "theshopally.com", false }, { "thesignacademy.co.uk", true }, { "thesignalco.com.au", true }, { "thesimplifiers.com", true }, @@ -33327,10 +35156,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thesmokingcuban.com", true }, { "thesocialmediacentral.com", true }, { "thesplashlab.com", true }, + { "thesslstore.com", true }, { "thestationatwillowgrove.com", true }, { "thesteins.org", false }, { "thestoneage.de", true }, - { "thestoritplace.com", true }, { "thestory.ie", true }, { "thestoryshack.com", true }, { "thestral.pro", true }, @@ -33342,11 +35171,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "theswissbay.ch", true }, { "thetechnical.me", true }, { "thetenscrolls.com", true }, + { "thethreepercent.marketing", true }, { "thetomharling.com", true }, - { "thetradinghall.com", true }, { "thetree.ro", true }, { "thetrendspotter.net", true }, { "thetuxkeeper.de", false }, + { "thetvtraveler.com", true }, { "theunitedstates.io", true }, { "thevacweb.com", true }, { "thevalentineconstitution.com", true }, @@ -33355,7 +35185,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thewarrencenter.org", true }, { "thewaxhouse.academy", true }, { "thewaxhouse.de", true }, - { "thewaxhouse.shop", true }, { "thewebdexter.com", true }, { "thewebflash.com", true }, { "thewebsitedoctors.co.uk", true }, @@ -33366,10 +35195,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thewinstonatlyndhurst.com", true }, { "thewoodkid.com.au", true }, { "thewoolroom.com.au", true }, + { "theworldexchange.com", true }, + { "theworldexchange.net", true }, + { "theworldexchange.org", true }, { "theworldsend.eu", true }, { "thexfactorgames.com", true }, { "thexme.de", true }, { "theyachtteam.com", true }, + { "theyakshack.co.uk", true }, { "theyarnhookup.com", false }, { "theyear199x.org", true }, { "theyearinpictures.co.uk", true }, @@ -33378,12 +35211,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thezillersathenshotel.com", true }, { "thiagohersan.com", true }, { "thibaultwalle.com", true }, - { "thibautcharles.net", true }, - { "thienteakee.com", true }, { "thiepcuoidep.com", true }, { "thiepxinh.net", true }, { "thierry-daellenbach.com", true }, { "thierrybasset.ch", true }, + { "thierryhayoz.ch", true }, { "thijsalders.nl", false }, { "thijsbekke.nl", true }, { "thijsslop.nl", true }, @@ -33391,26 +35223,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thinegen.de", true }, { "thingies.site", true }, { "thingsimplied.com", true }, + { "thingsof.org", true }, { "think-asia.org", true }, { "think-positive-watches.de", true }, + { "thinkforwardmedia.com", true }, { "thinkheaddesign.com", true }, { "thinkindifferent.net", true }, { "thinkingandcomputing.com", true }, { "thinkingliberty.com", true }, { "thinkingplanet.net", true }, - { "thinklikeanentrepreneur.com", true }, { "thinkmarketing.ca", true }, { "thinkquality.nl", true }, { "thinkrealty.com", true }, { "thinktux.net", true }, { "thirdbearsolutions.com", true }, + { "thirdworld.moe", true }, { "thiry-automobiles.net", true }, { "thisbrownman.com", true }, { "thiscloudiscrap.com", false }, { "thiscode.works", true }, { "thisdot.site", true }, { "thisfreelife.gov", true }, + { "thisisgrey.com", true }, { "thisishugo.com", true }, + { "thisisthefinalact.com", true }, { "thisistheserver.com", true }, { "thisiswhywemom.com", true }, { "thismatter.com", true }, @@ -33423,38 +35259,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thomalaudan.de", true }, { "thomas-bertran.com", true }, { "thomas-fahle.de", true }, + { "thomas-prior.com", true }, { "thomas-sammut.com", true }, { "thomas-suchon.fr", true }, { "thomas.love", false }, { "thomasbeckers.be", true }, { "thomasbreads.com", false }, + { "thomasduerlund.com", true }, { "thomasduerlund.dk", true }, + { "thomasetsophie.fr", true }, { "thomaseyck.com", true }, { "thomasfoster.co", true }, - { "thomasgriffin.io", true }, { "thomashunter.name", false }, { "thomasmcfly.com", true }, + { "thomasmeester.nl", false }, + { "thomasmerritt.de", true }, { "thomassen.sh", false }, { "thomasstevensmusic.com", true }, { "thomastimepieces.com.au", true }, { "thomasverhelst.be", true }, { "thomasvochten.com", true }, { "thomaswoo.com", true }, - { "thompsonfamily.cloud", true }, { "thomsonscleaning.co.uk", true }, { "thomspooren.nl", true }, { "thomwiggers.nl", true }, { "thor.edu", true }, { "thor.re", true }, { "thoroquel.org", true }, + { "thoroughbreddiesel.com", true }, { "thorsten-schaefer.com", true }, { "thorstenschaefer.name", true }, { "thosci.com", true }, { "thotpublicidad.com", true }, { "thoughtlessleaders.online", true }, - { "thoughtsynth.com", true }, - { "thoughtsynth.net", true }, - { "thoughtsynth.org", true }, { "thouni.de", true }, { "thousandgreens.com", true }, { "thousandoakselectrical.com", true }, @@ -33463,7 +35300,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thousandoakslighting.com", true }, { "thousandoaksoutdoorlighting.com", true }, { "thpay.com", true }, + { "threatcon.io", true }, { "threatmarket.com", true }, + { "threatnix.io", true }, { "threatworking.com", true }, { "threecrownsllp.com", true }, { "threedpro.me", true }, @@ -33484,14 +35323,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thuisverpleging-meerdael.be", true }, { "thullbery.com", true }, { "thummer.net", true }, + { "thunderfield-boat.co.uk", true }, { "thunderkeys.net", true }, { "thundr.eu", true }, { "thunraz.com", true }, - { "thusoy.com", false }, + { "thusoy.com", true }, { "thuthuatios.com", true }, { "thuviensoft.com", true }, - { "thuviensoft.net", true }, - { "thuybich.com", true }, { "thw-bernburg.de", true }, { "thxandbye.de", true }, { "thycotic.ru", true }, @@ -33500,7 +35338,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thzone.net", true }, { "ti-pla.net", true }, { "ti-planet.org", true }, - { "tiacollection.com", true }, { "tiagonunes.pt", true }, { "tiaki.org", true }, { "tianeptine.com", true }, @@ -33509,14 +35346,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tibipg.com", true }, { "tibovanheule.space", true }, { "ticfleet.com", true }, + { "tichieru.pw", true }, { "ticketassist.nl", true }, { "ticketluck.com", true }, { "ticketmates.com.au", true }, - { "ticketpro.ca", true }, + { "ticketmaze.com", true }, + { "ticketpro.ca", false }, + { "ticketrunway.com", true }, { "ticketslover.com", true }, { "ticketsmate.com", true }, { "ticketsource.co.uk", true }, { "ticketsource.eu", true }, + { "ticketsource.io", true }, { "ticketsource.us", true }, { "ticketsourcebeta.co.uk", true }, { "ticketsvergleichen.de", true }, @@ -33524,13 +35365,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tid.jp", true }, { "tidycustoms.net", true }, { "tielectric.ch", true }, - { "tiendafetichista.com", true }, { "tiendavertigo.com", true }, { "tiens-ib.cz", true }, { "tier-1-entrepreneur.com", true }, { "tierarztpraxis-bogenhausen.de", true }, { "tierarztpraxis-weinert.de", true }, { "tiernanx.com", true }, + { "tierraprohibida.net", true }, { "ties.com", true }, { "tiew.pl", true }, { "tifan.net", true }, @@ -33548,7 +35389,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tijo.ch", true }, { "tik.edu.ee", true }, { "tik.help", true }, - { "tiki-god.co.uk", true }, { "tildes.net", true }, { "tildesnyder.com", true }, { "tiledailyshop.com", true }, @@ -33563,12 +35403,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tillberg.us", true }, { "tilleysbouncycastles.co.uk", true }, { "tillseasyscore.com", true }, + { "tilosp.de", true }, + { "tilta.com", true }, { "tiltedwindmillcrafts.com", true }, { "timbarlotta.com", true }, { "timberkel.com", true }, + { "timbers.space", true }, { "timbishopartist.com", true }, { "timbrust.de", true }, - { "timdebruijn.nl", true }, + { "timco.cloud", true }, { "timdeneau.com", true }, { "timdoug.com", true }, { "time.gov", true }, @@ -33585,6 +35428,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "timetotrade.com", true }, { "timewasters.nl", true }, { "timfiedler.net", true }, + { "timhieuthuoc.com", true }, { "timing.com.br", true }, { "timjk.de", true }, { "timmersgems.com", true }, @@ -33595,11 +35439,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "timoso.de", true }, { "timothybjacobs.com", true }, { "timoxbrow.com", true }, + { "timsayedmd.com", true }, { "timtaubert.de", true }, { "timtelfer.com", true }, - { "timtj.ca", true }, { "timvivian.ca", true }, - { "timweb.ca", true }, + { "timysewyn.be", true }, + { "tina.media", true }, { "tinastahlschmidt.de", true }, { "tindallriley.co.uk", true }, { "tinf15b4.de", true }, @@ -33627,6 +35472,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tioat.net", true }, { "tipaki.gr", true }, { "tipbox.is", true }, + { "tipe.io", true }, { "tiplanet.org", true }, { "tipoftheday.tips", true }, { "tippytoad.com", true }, @@ -33639,15 +35485,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tirlins.com", true }, { "tiroler-kupferschmiede.com", true }, { "tirs4ne.ch", true }, + { "tis.ph", true }, { "tischlerei-klettke.de", true }, { "tissot-mayenfisch.com", true }, { "tit-cdn.de", true }, + { "tit-dev.de", true }, { "tit-dns.de", true }, { "tit-mail.de", true }, { "tit.systems", true }, { "titandirect.co.uk", true }, { "titanous.com", true }, - { "titanpointe.org", true }, { "titansized.com", true }, { "titanwaterproofing.com.au", true }, { "titelseite.ch", true }, @@ -33658,8 +35505,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tivido.nl", true }, { "tiwag.at", true }, { "tixeconsulting.com", true }, + { "tixify.com", true }, { "tjampoer.com", true }, - { "tjandpals.com", true }, { "tjenestetorvet.dk", true }, { "tjkcastles.uk", true }, { "tjl.rocks", true }, @@ -33676,8 +35523,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tkn.tokyo", true }, { "tkusano.jp", true }, { "tkw01536.de", false }, + { "tl.gg", true }, { "tlca.org", true }, - { "tlcnet.info", true }, { "tlehseasyads.com", true }, { "tleng.de", true }, { "tlo.xyz", true }, @@ -33690,6 +35537,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tlthings.net", true }, { "tlumaczenie.com", true }, { "tlys.de", true }, + { "tmakiguchi.org", true }, { "tmberg.cf", true }, { "tmberg.ga", true }, { "tmberg.gq", true }, @@ -33700,6 +35548,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tmcpromotions.co.uk", true }, { "tmcreationweb.com", true }, { "tmdb.biz", true }, + { "tmdc.ddns.net", true }, { "tmf.ru", true }, { "tmhr.moe", true }, { "tmi-products.eu", true }, @@ -33709,6 +35558,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tmonitoring.com", true }, { "tmpraider.net", true }, { "tmpsantos.com.br", true }, + { "tmsdiesel.com", true }, { "tmtopup.com", true }, { "tn0.club", true }, { "tndentalwellness.com", true }, @@ -33717,11 +35567,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tnl.cloud", true }, { "tntmobi.com", true }, { "tny.link", true }, - { "to2mbn.org", true }, + { "toabsentfamily.com", true }, { "toad.ga", true }, { "toast.al", false }, { "tob-rulez.de", true }, { "tobacco.gov", true }, + { "tobaccolocker.com", true }, { "tobedo.net", true }, { "tober-cpag.de", true }, { "tobi-mayer.de", true }, @@ -33740,12 +35591,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tobiashorvath.de", true }, { "tobiaskorf.de", true }, { "tobiaspahlings.de", true }, + { "tobiassachs.de", true }, { "tobiassattler.com", true }, + { "tobiaswiese.com", true }, { "tobiemilford.com", true }, { "tobis-rundfluege.de", true }, - { "tobis-webservice.de", true }, { "tobischo.de", true }, - { "tobisworld.ch", true }, { "tobyalden.com", true }, { "tobyx.com", true }, { "tobyx.de", true }, @@ -33764,30 +35615,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "todocracy.com", true }, { "todoescine.com", true }, { "todoist.com", true }, - { "todokete.ga", true }, { "todon.fr", true }, + { "todoscheduler.de", true }, + { "todoscheduler.org", true }, { "toeglhofer.at", true }, { "toeightycountries.com", true }, { "toekomstperspectief.be", true }, { "toerclub-ing-arnhem.nl", true }, { "toetsplatform.be", true }, { "tofe.io", true }, - { "tofilmhub.com", true }, { "tofu.cf", true }, { "togech.jp", true }, { "togetter.com", true }, { "toheb.de", false }, { "tohokinemakan.tk", true }, - { "tohokufd.com", true }, { "tokaido-kun.jp", true }, { "tokaido.com", true }, { "tokainafb.net", true }, { "tokainakurasi.net", true }, { "tokbijouxs.com.br", true }, + { "tokenmarket.net", true }, { "tokens.net", true }, - { "tokfun.com", true }, { "tokic.hr", true }, { "tokinoha.net", true }, + { "tokintu.com", true }, { "tokio.fi", true }, { "tokka.com", true }, { "tokke.dk", true }, @@ -33811,10 +35662,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tom-kunze.de", true }, { "tom-maxwell.com", true }, { "tom.horse", true }, + { "tom.je", true }, { "tomabrafix.de", true }, + { "tomahawk.ca", true }, + { "tomandmara.com", true }, { "tomarns.nl", true }, { "tomasjacik.cz", true }, - { "tomaskavalek.cz", true }, + { "tomaskavalek.cz", false }, { "tomaspatera.cz", true }, { "tomaspialek.cz", true }, { "tomasvecera.cz", true }, @@ -33822,11 +35676,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tomatenaufdenaugen.de", true }, { "tomatis-nantes.com", true }, { "tomaw.net", true }, - { "tomaz.eu", true }, { "tombaker.me", true }, { "tomberek.info", true }, { "tombrossman.com", true }, - { "tomcort.com", true }, { "tomd.ai", true }, { "tomdudfield.com", true }, { "tomend.es", true }, @@ -33848,7 +35700,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tommic.eu", true }, { "tomnatt.com", true }, { "tomo.gr", false }, - { "tomochun.net", true }, { "tomosm.net", true }, { "tomoyaf.com", true }, { "tomravinmd.com", true }, @@ -33857,6 +35708,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "toms.ovh", true }, { "tomschlick.com", true }, { "tomsdevsn.me", true }, + { "tomspdblog.com", true }, { "tomssl.com", true }, { "tomticket.com", true }, { "tomudding.com", true }, @@ -33866,12 +35718,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tomwassenberg.nl", true }, { "tomwiggers.nl", false }, { "tomwilson.io", true }, - { "tomy.icu", true }, { "tomyork.net", true }, { "tonabor.ru", true }, { "tonage.de", true }, { "toncusters.nl", true }, { "tondles.com", true }, + { "tone.tw", true }, { "tonegidoarchief.nl", true }, { "toner24.at", true }, { "toner24.co.uk", true }, @@ -33895,7 +35747,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tonkinson.com", true }, { "tonkinwilsonvillenissanparts.com", true }, { "tonnycat.com", true }, - { "tono.us", true }, { "tonsit.com", true }, { "tonsit.org", true }, { "tontonnews.net", true }, @@ -33914,22 +35765,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tools.pro", true }, { "toolsense.io", true }, { "toom.io", true }, + { "toomy.ddns.net", true }, { "toonpool.com", true }, { "toonsburgh.com", true }, { "toool.nl", true }, { "toool.org", true }, + { "tooolroc.org", false }, + { "toot.center", true }, { "toothdoc.ca", true }, { "tooti.biz", true }, { "top-esb.com", true }, { "top-obaly.cz", true }, { "top-opakowania.pl", true }, - { "top-solar-info.de", true }, - { "top9.fr", true }, + { "top5hosting.co.uk", true }, { "topaxi.ch", true }, { "topaxi.codes", true }, + { "topbigdeals.com", true }, { "topbounce.com", true }, { "topbouncycastles.co.uk", true }, { "topbrakes.com", true }, + { "topciderska-crkva.rs", true }, { "topclassfun.ie", true }, { "topdesk.net", true }, { "topdogsinflatables.co.uk", true }, @@ -33942,27 +35797,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "topicit.net", true }, { "topirishcasinos.com", true }, { "topjobs.ch", true }, + { "topkek.ml", true }, + { "toplist.cz", true }, { "toplist.eu", true }, { "topnotepad.com", true }, { "topodin.com", true }, { "toponlinecasinosites.co.uk", true }, + { "toppointrea.com", true }, { "topprice.ua", true }, + { "topsailtechnologies.com", true }, { "topservercccam.tv", true }, { "topshelfcommercial.com", true }, - { "topshoptools.com", true }, { "topsteaks-daun.de", true }, { "toptec.net.br", true }, { "toptexture.com", true }, { "toptheto.com", true }, { "topvertimai.lt", true }, + { "topwin.la", true }, { "topwindowcleaners.co.uk", true }, { "topworktops.co.uk", true }, { "toracon.org", true }, { "torahanytime.com", true }, - { "torbe.es", true }, { "torchantifa.org", true }, { "toreni.us", true }, { "toretame.jp", true }, + { "torg-room.ru", true }, { "torkware.com", true }, { "tormakristof.eu", true }, { "tormentedradio.com", false }, @@ -33984,9 +35843,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "torsten-schmitz.net", true }, { "torstensenf.de", true }, { "torte.roma.it", true }, + { "tortocan.com", true }, { "tortoises-turtles.com", true }, { "tortugan.com.br", true }, { "tosainu.com.br", true }, + { "tosamja.net", true }, { "toscer.me", false }, { "toschool.com.br", true }, { "toshen.com", true }, @@ -33995,7 +35856,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tosostav.cz", true }, { "tosteberg.se", true }, { "tostu.de", true }, - { "totaku.ru", true }, { "totalbeauty.co.uk", true }, { "totalbike.com.br", true }, { "totalcarcheck.co.uk", true }, @@ -34021,6 +35881,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "touchwoodtrees.com.au", true }, { "tougetu.com", true }, { "touhou.ac.cn", true }, + { "touhou.cc", true }, { "touhou.fm", true }, { "touhouwiki.net", true }, { "toujours-actif.com", true }, @@ -34042,6 +35903,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "toutart.ch", true }, { "toutenmusic.fr", true }, { "toutmonexam.fr", true }, + { "toutvendre.be", true }, + { "toutvendre.ch", true }, + { "toutvendre.cm", true }, + { "toutvendre.es", true }, + { "toutvendre.fr", true }, + { "toutvendre.lu", true }, + { "toutvendre.pics", true }, + { "toutvendre.uk", true }, + { "toutvendre.us", true }, { "tovare.com", true }, { "toverland-tickets.nl", true }, { "tovp.org", true }, @@ -34049,7 +35919,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "townandcountryus.com", true }, { "townhousedevelopments.com.au", true }, { "townhouseregister.com.au", true }, - { "townofbridgewater.ca", true }, { "towsonroofers.com", true }, { "towywebdesigns.uk", true }, { "tox21.gov", false }, @@ -34060,7 +35929,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tp-kabushiki.com", true }, { "tp-kyouyufudousan.com", true }, { "tp-law.jp", true }, - { "tpansino.com", true }, { "tpbproxy.co", true }, { "tpci.biz", true }, { "tpidg.us", true }, @@ -34079,18 +35947,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "trace.moe", true }, { "traceheatinguk.co.uk", true }, { "tracelight.io", true }, + { "tracemyplace.com", true }, { "traceroute.guru", true }, { "traceroute.link", true }, { "traceroute.network", true }, { "traces.ml", true }, - { "tracewind.top", true }, { "tracfinancialservices.com", true }, { "tracinsurance.com", true }, { "trackchair.com", true }, { "trackdomains.com", true }, { "trackersimulator.org", true }, { "trackeye.dk", true }, - { "trackmeet.io", true }, + { "trackingstream.com", true }, { "trackrecordpro.co.uk", true }, { "tracksa.com.ar", true }, { "trackyourlogs.com", true }, @@ -34110,6 +35978,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "traditions.nl", true }, { "traditionskapperscollege.nl", true }, { "traditionsvivantesenimages.ch", true }, + { "tradiz.org", false }, { "trafarm.ro", true }, { "trafas.nl", true }, { "traffic.az", true }, @@ -34120,21 +35989,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "traffixdevices.com", true }, { "traficmusik.net", true }, { "tragmi.ch", true }, + { "trailcloud.ink", true }, { "trailerparty.com", true }, { "trailforks.com", true }, { "trainex.org", true }, { "trainhornforums.com", true }, { "trainiac.com.au", true }, { "trainings-handschuhe-test.de", true }, + { "trainline.at", true }, + { "trainline.cn", true }, + { "trainline.com.br", true }, + { "trainline.com.pt", true }, + { "trainline.cz", true }, { "trainline.de", true }, { "trainline.es", true }, { "trainline.eu", true }, { "trainline.fr", true }, { "trainline.it", true }, + { "trainline.nl", true }, + { "trainline.no", true }, + { "trainline.pl", true }, + { "trainmagazine.be", true }, + { "trainmagazine.de", true }, + { "trainmagazine.nl", true }, + { "trainplaza.be", true }, + { "trainplaza.net", true }, + { "trainplaza.nl", true }, { "trainsgoodplanesbad.com", true }, { "traista.ru", true }, { "traiteurpapillonevents.be", true }, { "trajano.net", true }, + { "trajectfoto.nl", true }, + { "trajectvideo.nl", true }, + { "tran.pw", true }, { "trance-heal.com", true }, { "trance-heal.de", true }, { "trance-heal.me", true }, @@ -34171,6 +36058,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "transhumanist.net", true }, { "transhumanist.org", true }, { "transhumanist.uk", true }, + { "transitmoe.io", true }, { "transitownplaza.com", true }, { "transitpoint.us", true }, { "translate-polish.com", true }, @@ -34182,18 +36070,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "transmarttouring.com", true }, { "transmisjeonline.pl", true }, { "transnexus.com", true }, + { "transoil.co.uk", true }, { "transparentcorp.com", true }, { "transport.eu", true }, { "transporta.it", true }, { "transporterlock.com", true }, { "transverify.com", true }, + { "trappednerve.org", true }, { "trashnothing.com", true }, { "trashwagon.club", true }, { "traslocare.roma.it", true }, { "traslochi-trasporti-facchinaggio.it", true }, { "trasloco.milano.it", true }, - { "tratamentoparacelulite.biz", true }, - { "tratamentoparacelulite.net", true }, { "trattamenti.biz", true }, { "trattamento-cotto.it", true }, { "trauer-beileid.de", true }, @@ -34205,13 +36093,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "travel.co.za", true }, { "travel365.it", true }, { "travelarmenia.org", true }, - { "traveling-thailand.info", true }, + { "traveleets.com", true }, + { "travelinsurance.co.nz", true }, { "travellers.dating", true }, { "travellovers.fr", true }, { "travelmyth.ie", true }, { "travelogue.jp", true }, { "travelphoto.cc", true }, { "travelpricecheck.com", true }, + { "travelrefund.com", true }, { "travelshack.com", true }, { "travi.org", true }, { "travis.nl", true }, @@ -34232,6 +36122,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "trefcon.cz", true }, { "trefpuntdemeent.nl", true }, { "treinaweb.com.br", false }, + { "treinmagazine.be", true }, + { "treinmagazine.nl", true }, { "treinonerd.com", true }, { "trek-planet.ru", true }, { "trekfriend.com", true }, @@ -34239,13 +36131,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tremlor.com", true }, { "tremolosoftware.com", true }, { "trendkraft.de", true }, + { "trendus.no", true }, { "trendykids.cz", true }, { "trenta.io", true }, { "trentmaydew.com", true }, + { "tresor.it", true }, { "tresorit.com", true }, { "tresorsecurity.com", true }, { "tretail.net", true }, { "tretkowski.de", true }, + { "trevsanders.co.uk", true }, { "trezy.me", true }, { "trezy.net", true }, { "trhastane.com", true }, @@ -34259,6 +36154,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "trianon.xyz", true }, { "tribac.de", true }, { "tribaldos.com", true }, + { "tribe.rs", true }, + { "tribetrails.com", true }, { "tribly.de", true }, { "tribut.de", true }, { "tributh.cf", true }, @@ -34274,6 +36171,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "trigardon-rg.de", true }, { "trik.es", false }, { "trillian.im", true }, + { "trilliumvacationrentals.ca", true }, { "triluxds.com", true }, { "trim-a-slab.com", true }, { "trimage.org", true }, @@ -34290,12 +36188,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "triple-mmm.de", true }, { "triplekeys.net", true }, { "tripolistars.com", true }, + { "tripp.xyz", true }, { "tripseats.com", true }, { "tripsinc.com", true }, { "trisect.eu", true }, { "trixexpressweb.nl", true }, { "triz.co.uk", true }, - { "trizone.com.au", true }, { "trkpuls.tk", true }, { "trockendock.ch", true }, { "troedel-trolle.de", true }, @@ -34314,16 +36212,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tropicalserver.com", true }, { "trotec.com", true }, { "trotina.cz", true }, + { "trouble-free-employees.com", true }, { "trouweninoverijssel.nl", true }, { "trovaprezzi.it", true }, { "troyfawkes.com", true }, + { "troyhunt.com", true }, { "troyhuntsucks.com", true }, { "troykelly.com", true }, - { "trpg.wiki", true }, { "trs.tn", true }, { "trtltravel.com", true }, { "trtruijens.com", true }, { "tru.ltd", true }, + { "trucchibellezza.com", true }, { "trucchibellezza.it", true }, { "truckersmp.com", true }, { "truckerswereld.nl", false }, @@ -34333,6 +36233,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "trueinstincts.ca", true }, { "truekey.com", true }, { "truentumvet.it", true }, + { "trueproxy.net", true }, { "truerizm.ru", true }, { "truessl.shop", true }, { "truestaradvisors.com", true }, @@ -34345,6 +36246,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "trulance.com", true }, { "truly-madly-happiness.de", true }, { "trumanlibrary.org", true }, + { "truncus-encephali.co.uk", true }, { "trunk-show.net", true }, { "truong.fi", true }, { "truqu.com", true }, @@ -34353,13 +36255,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "trustcase.com", true }, { "trustednetworks.nl", true }, { "trustfield.ch", true }, - { "trustocean.com", true }, { "trustserv.de", true }, { "truthmessages.pw", true }, { "truvisory.com", true }, { "trw-reseller.com", true }, { "try2admin.pw", true }, - { "try2services.cm", true }, { "trybabyschoice.com", true }, { "trybooking.com", true }, { "tryfabulousskincream.com", true }, @@ -34377,12 +36277,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ts-publishers.com", true }, { "ts3-dns.com", true }, { "ts3-dns.net", false }, + { "ts3-legenda.tech", true }, { "tsa-sucks.com", true }, { "tsab.moe", true }, + { "tsai.com.de", true }, { "tsatestprep.com", true }, { "tschuermans.be", true }, { "tscqmalawi.info", true }, { "tsedryk.ca", true }, + { "tsgkc1.com", true }, { "tsicons.com", true }, { "tsironis-olivenoel.de", true }, { "tslcontractors.co.uk", true }, @@ -34406,8 +36309,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ttcaarberg.ch", true }, { "ttcf.ca", true }, { "ttchan.org", true }, + { "ttclub.fr", true }, { "ttdsevaonline.com", true }, { "ttll.de", true }, + { "ttrade.ga", true }, { "ttsoft.pl", true }, { "ttspttsp.com", true }, { "ttsweb.org", true }, @@ -34420,6 +36325,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tu-immoprojekt.at", true }, { "tu6.pm", true }, { "tuang-tuang.com", true }, + { "tuasaude.com", true }, { "tubanten.nl", true }, { "tube.tools", true }, { "tubejack.nl", true }, @@ -34433,36 +36339,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tudiennhakhoa.com", true }, { "tudorproject.org", true }, { "tufashionista.com", true }, - { "tufilo.com", true }, - { "tugers.com", true }, + { "tuffclassified.com", true }, + { "tuffsruffs.se", true }, { "tuincentersnaet.be", true }, + { "tuingereedschappen.net", false }, { "tuitle.com", true }, - { "tulenceria.es", true }, { "tumagiri.net", true }, { "tumblenfun.com", true }, { "tumedico.es", true }, { "tumelum.de", true }, { "tumutanzi.com", true }, + { "tunai.id", true }, { "tunaut.com", true }, { "tune-web.de", true }, { "tunefish-entertainment.de", true }, { "tuner.cloud", true }, { "tuning-werkstatt-nuernberg.de", true }, { "tuningblog.eu", false }, - { "tunity.be", true }, { "tunnelbear.com", true }, { "tunnelblick.net", true }, { "tunnelventilation.pro", true }, { "tunnelwatch.com", true }, { "tuntitili.fi", true }, { "tuotteet.org", true }, + { "tuou.xyz", true }, { "tupa-germania.ru", true }, { "tupeuxpastest.ch", true }, { "tuppenceworth.ie", true }, { "turbobit.ch", true }, { "turdnagel.com", true }, + { "turf-experts.com", true }, { "turigum.com", true }, { "turkish.dating", true }, + { "turl.pl", true }, { "turnaroundforum.de", true }, { "turncircles.com", true }, { "turnoffthelights.com", true }, @@ -34474,10 +36383,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "turtlepwr.com", true }, { "turunculevye.com", true }, { "tuscanyleather.it", true }, + { "tusi.co", false }, { "tusksol.com", true }, { "tutanota.com", true }, - { "tutiendaroja.com", true }, - { "tutiendarosa.com", true }, { "tuto-craft.com", true }, { "tutoragency.org", true }, { "tutorat-tect.org", true }, @@ -34494,6 +36402,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tuxie.com", true }, { "tuxlife.net", true }, { "tuxpeliculas.com", true }, + { "tuxplace.nl", true }, { "tuxtimo.me", true }, { "tuxz.net", true }, { "tuza.com.au", true }, @@ -34523,19 +36432,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tweakers.net", true }, { "tweakersbadge.nl", true }, { "tweaktown.com", true }, - { "twelve.rocks", true }, - { "twem.ddns.net", true }, + { "tweetfinity.com", true }, + { "tweetfinityapp.com", true }, { "twenty71.com", true }, { "twentymilliseconds.com", true }, + { "twilightcookies.ca", true }, { "twilleys.com", true }, { "twincitynissantxparts.com", true }, + { "twinkseason.com", true }, { "twinztech.com", true }, { "twisata.com", true }, { "twistapp.com", true }, { "twistdevelopment.co.uk", true }, - { "twisted-brains.org", true }, { "twistedwave.com", true }, { "twisto.cz", true }, + { "twisto.pl", true }, + { "twistopay.com", true }, { "twit-guide.com", true }, { "twitchplaysleaderboard.info", true }, { "twittelzie.nl", true }, @@ -34548,38 +36460,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "twofactorauth.org", true }, { "twohuo.com", true }, { "twojfaktum.pl", true }, - { "twolanedesign.com", true }, { "twopif.net", true }, { "tworaz.net", true }, { "twun.io", true }, + { "twuni.org", true }, { "txcap.org", true }, { "txdivorce.org", true }, { "txi.su", true }, { "txlrs.org", true }, { "txm.pl", true }, + { "txtecho.com", true }, { "tyche.io", true }, { "tycho.org", true }, { "tycom.cz", true }, { "tyil.nl", true }, { "tyil.work", true }, { "tyl.io", true }, + { "tyler.rs", true }, { "tylerdavies.net", true }, { "tylerfreedman.com", true }, { "tylerharcourt.net", true }, + { "tyleromeara.com", true }, { "tylerschmidtke.com", true }, { "typcn.com", true }, - { "type1joe.com", true }, - { "type1joe.net", true }, - { "type1joe.org", true }, { "typeblog.net", true }, { "typecodes.com", true }, { "typehub.net", true }, { "typeof.pw", true }, { "typeonejoe.com", true }, - { "typeonejoe.net", true }, - { "typeonejoe.org", true }, { "typeria.net", true }, { "typewolf.com", true }, + { "typewritten.net", true }, { "typing.com", true }, { "typist.tech", true }, { "typo3.com", true }, @@ -34590,9 +36501,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tyroremotes.nl", true }, { "tyroremotes.no", true }, { "tysox.de", true }, - { "tysye.ca", true }, - { "tyuo-keibi.co.jp", true }, + { "tzermias.gr", true }, { "tzifas.com", true }, + { "u-martfoods.com", true }, { "u-metals.com", true }, { "u-tokyo.club", true }, { "u.nu", true }, @@ -34636,41 +36547,89 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ublaboo.org", true }, { "uborcare.com", true }, { "ubun.net", true }, - { "uc.ac.id", true }, { "ucac.nz", false }, { "ucangiller.com", true }, { "ucch.be", true }, { "ucfirst.nl", true }, { "uchargeapp.com", true }, - { "uclanmasterplan.co.uk", true }, + { "uclf.de", true }, { "uclip.club", true }, { "ucppe.org", true }, { "ucrdatatool.gov", true }, { "uctarna.online", true }, - { "udbhav.me", true }, + { "udancy.com", true }, { "uddi.ng", true }, { "udo-luetkemeier.de", true }, { "udomain.net", true }, { "udp.sh", false }, + { "udruga-point.hr", true }, { "udvoukocek.eu", true }, { "ueberdosis.io", true }, { "ueberwachungspaket.at", true }, { "uedaviolin.com", true }, { "uel-thompson-okanagan.ca", true }, { "ueni.com", true }, - { "uerdingen.info", true }, { "uevan.com", true }, { "uex.im", true }, { "ufanisi.mx", true }, { "ufindme.at", true }, - { "ufo.moe", true }, { "ufplanets.com", true }, { "uggedal.com", true }, { "ugx-mods.com", true }, + { "uhappy1.com", true }, + { "uhappy11.com", true }, + { "uhappy2.com", true }, + { "uhappy21.com", true }, + { "uhappy22.com", true }, + { "uhappy23.com", true }, + { "uhappy24.com", true }, + { "uhappy25.com", true }, + { "uhappy26.com", true }, + { "uhappy27.com", true }, + { "uhappy28.com", true }, + { "uhappy29.com", true }, + { "uhappy3.com", true }, { "uhappy30.com", true }, + { "uhappy31.com", true }, + { "uhappy33.com", true }, + { "uhappy50.com", true }, + { "uhappy55.com", true }, + { "uhappy56.com", true }, + { "uhappy57.com", true }, + { "uhappy58.com", true }, + { "uhappy59.com", true }, + { "uhappy6.com", true }, + { "uhappy60.com", true }, + { "uhappy61.com", true }, + { "uhappy62.com", true }, + { "uhappy66.com", true }, + { "uhappy67.com", true }, + { "uhappy69.com", true }, + { "uhappy70.com", true }, + { "uhappy71.com", true }, + { "uhappy72.com", true }, + { "uhappy73.com", true }, + { "uhappy74.com", true }, + { "uhappy75.com", true }, + { "uhappy76.com", true }, + { "uhappy77.com", true }, + { "uhappy78.com", true }, + { "uhappy79.com", true }, + { "uhappy8.com", true }, + { "uhappy80.com", true }, + { "uhappy81.com", true }, + { "uhappy82.com", true }, + { "uhappy83.com", true }, + { "uhappy85.com", true }, + { "uhappy86.com", true }, + { "uhappy88.com", true }, + { "uhappy9.com", true }, + { "uhappy90.com", true }, + { "uhappy99.com", true }, { "uhasseltodin.be", true }, { "uhc.gg", true }, { "uhrenlux.de", true }, + { "uhssl.com", true }, { "uhurl.net", true }, { "ui8.net", true }, { "uiberlay.cz", true }, @@ -34701,6 +36660,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ulabox.com", true }, { "uldsh.de", true }, { "ulen.me", true }, + { "ulgc.cz", true }, { "uli-eckhardt.de", true }, { "ullah.se", true }, { "ulmer-schneesport.de", true }, @@ -34713,16 +36673,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ultimatemafia.net", true }, { "ultraseopro.com", true }, { "ultrasite.tk", true }, - { "ultrasteam.net", true }, { "ultratech.software", true }, { "ultratechlp.com", true }, + { "ultrautoparts.com.au", true }, { "umanityracing.com", true }, - { "umassfive.coop", true }, { "umbricht.li", true }, - { "umbriel.fr", true }, { "umenlisam.com", true }, { "umisonoda.com", true }, { "umkmjogja.com", true }, + { "umsapi.com", true }, { "umsolugar.com.br", true }, { "umwandeln-online.de", true }, { "un-framed.co.za", true }, @@ -34738,6 +36697,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "unblocked.bet", true }, { "unblocked.bid", true }, { "unblocked.cam", true }, + { "unblocked.gdn", true }, { "unblocked.ink", true }, { "unblocked.lat", true }, { "unblocked.live", true }, @@ -34746,9 +36706,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "unblocked.pl", true }, { "unblocked.pro", true }, { "unblocked.pub", true }, - { "unblocked.sh", true }, { "unblocked.uno", true }, - { "unblocked.vc", true }, { "unblocked.vet", true }, { "unblocked.vip", true }, { "unblockweb.co", true }, @@ -34758,15 +36716,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "unccelearn.org", true }, { "uncensoreddns.dk", true }, { "uncensoreddns.org", true }, - { "undeadbrains.de", true }, { "undecidable.de", true }, { "undeductive.media", true }, + { "undef.in", true }, { "underbridgeleisure.co.uk", true }, { "undercovercondoms.co.uk", true }, - { "undercovercondoms.com", true }, { "underfloorheating-uk.co.uk", true }, { "underlined.fr", true }, { "undernet.uy", false }, + { "underskatten.tk", true }, { "underwearoffer.com", true }, { "undo.co.il", true }, { "undone.me", true }, @@ -34778,6 +36736,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "unfettered.net", false }, { "unfuddle.cn", true }, { "unga.dk", true }, + { "ungeek.eu", true }, + { "ungeek.fr", true }, { "ungegamere.dk", true }, { "unghie.com", true }, { "unicef-karten.at", true }, @@ -34794,6 +36754,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "unicefkepeslapok.hu", true }, { "unicefvoscilnice.si", true }, { "unicolabo.jp", true }, + { "unicorn-systems.net", true }, { "unicorn.melbourne", true }, { "unicorntooling.eu", true }, { "unicredit.ba", true }, @@ -34809,9 +36770,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "uniformebateriasheliar.com.br", true }, { "unikoingold.com", true }, { "unila.edu.br", true }, + { "unimbalr.com", true }, { "uninet.cf", true }, { "uniojeda.ml", true }, { "unionplat.ru", true }, + { "uniontestprep.com", true }, + { "unipig.de", true }, { "uniprimebr.com.br", false }, { "uniq.site", true }, { "unique-bouncy-castles.co.uk", true }, @@ -34821,6 +36785,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "unit7jazz.com", true }, { "unit7jazz.org", true }, { "unite-ka.de", true }, + { "uniteasia.org", true }, { "united-coders.com", true }, { "united-schools.net", true }, { "united.com", false }, @@ -34831,12 +36796,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "unitel2000.de", true }, { "unityconsciousnessbooks.com", true }, { "univercite.ch", true }, - { "univeril.com", true }, + { "univeril.com", false }, + { "univerpack.net", true }, { "universal-happiness.com", true }, + { "universal.at", true }, { "universalcarremote.com", true }, { "universalpaymentgateway.com", true }, { "universeinform.com", true }, - { "universogay.com", true }, { "univitale.fr", true }, { "unix.se", true }, { "unixadm.org", true }, @@ -34845,7 +36811,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "unixforum.org", true }, { "unixfox.eu", true }, { "unixtime.date", true }, - { "unknownbreakup.com", true }, { "unkrn.com", true }, { "unlax.com", true }, { "unleash.pw", true }, @@ -34862,13 +36827,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "unoccupyabq.org", true }, { "unp.me", true }, { "unpkg.com", true }, - { "unpossible.xyz", true }, { "unpr.dk", true }, { "unquote.li", true }, { "unrealircd.org", true }, { "unrelated.net.au", true }, { "unripple.com", true }, { "unruh.fr", true }, + { "uns.vn", true }, { "unsacsurledos.com", true }, { "unsee.cc", true }, { "unseen.is", true }, @@ -34890,14 +36855,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "unworthy.ml", true }, { "unx.dk", true }, { "unxicdellum.cat", true }, - { "upandclear.org", true }, { "upay.ru", true }, + { "upbad.com", true }, { "upbeatrobot.com", true }, { "upbeatrobot.eu", true }, { "upd.jp", true }, { "upgamerengine.com", true }, { "upgamerengine.com.br", true }, { "upgamerengine.net", true }, + { "upgauged.com", true }, + { "upholsterydesign.com.au", true }, { "upitnik.rs", true }, { "uplaqui.com.br", true }, { "uplinklabs.net", true }, @@ -34906,14 +36873,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "uploadbeta.com", true }, { "uplr.it", true }, { "upnext.io", true }, + { "upnorthproperty.com", true }, { "upperbeaconsfield.org.au", true }, { "upperroommission.ca", true }, { "upplevelse.com", true }, { "upr-info.org", true }, { "upr.com.ua", true }, + { "uprint.it", true }, { "uprouteyou.com", true }, { "upsettunnel.com", true }, { "upsiteseo.com", true }, + { "uptechbrasil.com.br", true }, { "uptimed.com", true }, { "uptimenotguaranteed.com", true }, { "uptodateinteriors.com", true }, @@ -34923,17 +36893,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "uptrends.com", true }, { "uptrends.de", true }, { "uptrex.co.uk", true }, + { "upturn.org", true }, { "upundit.com", true }, + { "upwardtraining.co.uk", true }, { "upwork.com", true }, + { "upyourfinances.com", true }, { "ur.nl", true }, { "ur2.pw", true }, { "uradisam.rs", true }, + { "uraimo.com", true }, { "urbackups.com", true }, { "urbalex.ch", true }, { "urban-culture.fr", true }, { "urban-karuizawa.co.jp", true }, { "urban.melbourne", true }, { "urbancreators.dk", true }, + { "urbandance.club", true }, { "urbanesecurity.com", true }, { "urbanfi.sh", true }, { "urbanguerillas.de", true }, @@ -34942,7 +36917,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "urbanmelbourne.info", true }, { "urbannewsservice.com", true }, { "urbansparrow.in", true }, - { "urbanstylestaging.com", true }, { "urbansurvival.com", true }, { "urbanwaters.gov", false }, { "urbanwildlifealliance.org", false }, @@ -34951,11 +36925,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "urcentral.net", true }, { "urcentral.nl", true }, { "ureka.org", true }, + { "urep.us", true }, { "urgences-valais.ch", true }, { "urinedrugtesthq.com", true }, { "uripura.de", true }, { "urist1011.ru", true }, - { "url.cab", true }, { "url.fi", true }, { "url.fm", true }, { "url.rw", true }, @@ -34967,6 +36941,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "urltodomain.com", true }, { "urown.net", true }, { "ursa-minor-beta.org", true }, + { "ursae.co", true }, { "urspringer.de", true }, { "ursuslibris.hu", true }, { "urth.org", true }, @@ -34979,6 +36954,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "usaestaonline.com", true }, { "usage.be", true }, { "usagexchange.com", true }, + { "usagm.gov", true }, { "usairlines.us", true }, { "usajobs.com", true }, { "usajobs.gov", true }, @@ -34992,7 +36968,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "usd.de", true }, { "usds.gov", true }, { "use.be", true }, - { "use.ci", true }, { "usebean.com", true }, { "usedoor.jp", true }, { "usedu.us", true }, @@ -35002,14 +36977,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "usgande.com", true }, { "ushandbookapp.com", true }, { "ushare.ch", true }, + { "usimmigration.us", true }, { "usipvd.ch", true }, { "usitcolours.bg", true }, + { "uskaria.com", true }, { "usleep.net", true }, { "usmint.gov", true }, { "usninosnikrcni.eu", true }, { "usnti.com", true }, { "uspsoig.gov", true }, - { "ussm.gov", true }, + { "ussm.gov", false }, { "ussuka.com", true }, { "ust.space", true }, { "ustensiles-cuisine.boutique", true }, @@ -35017,18 +36994,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "usualbeings.com", true }, { "usuan.net", true }, { "usuluddin.ga", true }, + { "usweme.info", true }, { "uswitch.com", true }, { "ut-addicted.com", true }, { "utahfireinfo.gov", true }, { "utahlocal.net", true }, + { "utahtravelcenter.com", true }, { "utazas-nyaralas.info", true }, { "utcast-mate.com", true }, - { "utdscanner.com", true }, { "utdsgda.com", true }, { "uteam.it", true }, { "utepils.de", true }, { "utgifter.no", true }, { "utilia.tools", true }, + { "utilio.nl", true }, { "utilitarian.com", true }, { "utilitarian.net", true }, { "utilitarian.org", true }, @@ -35040,37 +37019,46 @@ static const nsSTSPreload kSTSPreloadList[] = { { "utilityreport.eu", true }, { "utitreatment.com", true }, { "utonia.ch", true }, - { "utopialgb.org.uk", true }, { "utopicestudios.com", true }, { "utox.io", true }, + { "utterberry.io", true }, + { "utube.tw", true }, { "utugnn.ru", true }, { "utw.me", true }, { "utwente.io", true }, { "utzon.net", true }, + { "uuid.cf", true }, { "uuit.nl", true }, + { "uv.uy", true }, { "uvenuse.cz", true }, { "uvocorp.com", true }, { "uvolejniku.cz", true }, + { "uw1008.com", true }, { "uw2333.com", true }, { "uwac.co.uk", false }, { "uwekoetter.com", true }, { "uwelilienthal.de", true }, - { "uwimonacs.org.jm", true }, + { "uwsoftware.be", true }, { "uwvloereruit.nl", true }, + { "uxp-it.nl", true }, + { "uxteam.com", true }, { "uxtechnologist.com", true }, { "uy.search.yahoo.com", false }, { "uz.search.yahoo.com", false }, { "uzaymedya.com.tr", true }, + { "uziregister.nl", true }, { "uzsvm.cz", true }, { "v-d-p.net", true }, { "v-spin.cz", true }, { "v-tek.fi", true }, { "v-u-z.ru", true }, - { "v1sit0r.ru", true }, { "v2bv.net", true }, { "v2bv.win", true }, { "v2cn.win", true }, { "v2ex.com", true }, + { "v2ray6.com", true }, + { "v2ray66.com", true }, + { "v2ray666.com", true }, { "va-reitartikel.com", true }, { "va.gov", false }, { "vacationsbyvip.com", true }, @@ -35081,8 +37069,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vaew.com", true }, { "vagabond.fr", true }, { "vagabondgal.com", true }, - { "vagaerg.com", true }, - { "vagaerg.net", true }, { "vagmour.eu", true }, { "vagpartsdb.com", true }, { "vagrantbits.com", true }, @@ -35094,13 +37080,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vakantiedetective.nl", true }, { "vakantienet.nl", true }, { "vakuutuskanava.fi", true }, - { "val-sec.com", true }, + { "valasi.eu", true }, { "valbonne-consulting.com", true }, { "valcano-krd.ru", true }, { "valcano.ru", true }, + { "valcardiesel.com", true }, { "valenciadevops.me", true }, { "valentin-ochs.de", true }, { "valentin-sundermann.de", true }, + { "valentin.ml", true }, { "valentinberclaz.com", true }, { "valentineapparel.com", true }, { "valentineforpresident.com", true }, @@ -35122,6 +37110,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "valleyautofair.com", true }, { "valleyautoloan.com", true }, { "valleycode.net", true }, + { "valleydalecottage.com.au", true }, { "valleyshop.ca", true }, { "vallutaja.eu", true }, { "valokuva-albumi.fi", true }, @@ -35139,6 +37128,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "valueseed.net", true }, { "vampyrium.net", false }, { "van11y.net", true }, + { "vanagamsanthai.com", true }, + { "vanagamseeds.com", true }, { "vanbinnenuit.nl", true }, { "vancityconcerts.com", true }, { "vancouvercosmeticsurgery.ca", true }, @@ -35152,7 +37143,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vandermeer.frl", true }, { "vanderrijt.nl", false }, { "vanderziel.org", true }, + { "vandorenscholars.org", true }, + { "vandyhacks.org", true }, { "vaneigenkweek.be", true }, + { "vangoghcoaching.nl", true }, { "vanhaos.com", true }, { "vanhoudt-usedcars.be", true }, { "vanhoutte.be", false }, @@ -35163,7 +37157,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vanohaker.ru", true }, { "vanouwerkerk.net", true }, { "vantagepointpreneed.com", true }, + { "vantaio.com", true }, + { "vante.me", true }, { "vantien.com", true }, + { "vantru.is", true }, { "vanvoro.us", false }, { "vanwunnik.com", true }, { "vapecom-shop.com", true }, @@ -35172,9 +37169,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vapensiero.co.uk", true }, { "vaperolles.ch", true }, { "vapesense.co.uk", true }, + { "vapesupplies.com.au", true }, { "vaphone.co", true }, { "vapor.cloud", false }, { "vapordepot.jp", true }, + { "varalwamp.com", true }, { "varcare.jp", true }, { "varden.info", true }, { "vareillefoundation.fr", true }, @@ -35194,7 +37193,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "varztupasaulis.lt", true }, { "varztupasaulis.net", true }, { "vascomm.co.id", true }, - { "vase-eroticke-povidky.cz", true }, { "vasel.de", true }, { "vasel.eu", true }, { "vashel.us", true }, @@ -35202,7 +37200,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vasilikieleftheriou.com", true }, { "vaskulitis-info.de", true }, { "vasports.com.au", true }, - { "vastgoedcultuurfonds.nl", true }, { "vasyharan.com", true }, { "vat-eu.com", true }, { "vat.direct", true }, @@ -35216,10 +37213,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vaud-fleurs.ch", true }, { "vaughanrisher.com", true }, { "vault21.net", true }, + { "vault81.de", true }, { "vaultproject.io", true }, { "vaur.fr", true }, { "vavel.com", true }, - { "vavouchers.com", true }, { "vawebsite.co", true }, { "vawlt.io", true }, { "vawltstorage.com", true }, @@ -35231,11 +37228,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vbcdn.com", true }, { "vbestreviews.com", true }, { "vbh2o.com", true }, + { "vbql.me", true }, { "vbwinery.com", true }, { "vc.gg", true }, { "vcam.org", true }, { "vccmurah.net", true }, - { "vcdn.xyz", true }, { "vcelin-na-doliku.cz", true }, { "vcf.gov", true }, { "vcientertainment.com", false }, @@ -35254,7 +37251,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vdesc.com", true }, { "vdisk24.de", true }, { "vdmeij.com", true }, - { "vdownloader.com", true }, { "vdzwan.net", true }, { "ve.search.yahoo.com", false }, { "ve3oat.ca", true }, @@ -35270,10 +37266,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vegalitarian.org", true }, { "vegane-proteine.com", true }, { "veganforum.org", true }, - { "vegangaymer.blog", true }, { "veganism.co.uk", true }, { "veganism.com", true }, - { "vegasdocs.com", true }, + { "veganmasterrace.com", true }, { "vegepa.com", true }, { "vegetariantokyo.net", true }, { "veggie-treff.de", true }, @@ -35283,10 +37278,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "veit.zone", true }, { "veke.fi", true }, { "velen.io", true }, + { "veloroute.hamburg", true }, { "venalytics.com", true }, { "venclave.com", true }, + { "vendermicasarapido.com.mx", true }, { "vendigital.com", true }, { "vendorconnect.nyc", true }, + { "vendreacheter.be", true }, + { "vendreacheter.net", true }, { "vendserve.eu", true }, { "venenum.org", true }, { "venev.name", true }, @@ -35299,6 +37298,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "venturavwparts.com", true }, { "venturebanners.co.uk", true }, { "venturedisplay.co.uk", true }, + { "venturum.com", true }, + { "venturum.de", true }, + { "venturum.eu", true }, + { "venturum.net", true }, { "ventzke.com", true }, { "ver.ma", true }, { "vera.bg", true }, @@ -35307,26 +37310,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "verberne.nu", true }, { "verbier-lechable.com", true }, { "verbierfestival.com", true }, + { "verdict.gg", true }, { "verduccies.com", true }, { "verein-kiekin.de", true }, { "vereinlandwege.de", true }, { "vereinscheck.de", true }, { "verfassungsklage.at", true }, + { "verge.capital", true }, { "vergeaccessories.com", true }, { "vergelijksimonly.nl", true }, + { "vergessen.cn", true }, { "verhovs.ky", true }, { "verifalia.com", true }, + { "verifiedjoseph.com", true }, + { "verifiny.com", true }, { "verifyos.com", true }, { "verifyyourip.com", true }, - { "veriny.tf", true }, - { "veriomed.com", true }, { "veritafineviolins.com", true }, { "veritas-data.de", true }, { "verizonconnect.com", false }, { "verizonguidelines.com", true }, { "verliebt-in-bw.de", true }, { "verliebt-in-niedersachsen.de", true }, - { "verliefde-jongens.nl", true }, { "vermeerdealers.com", true }, { "vermiliontaxiservice.com", true }, { "vermogeninkaart.nl", true }, @@ -35347,7 +37352,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vers.one", true }, { "versagercloud.de", true }, { "versbesteld.nl", true }, - { "versbeton.nl", true }, { "versicherungen-werner-hahn.de", true }, { "versicherungskontor.net", true }, { "verspai.de", true }, @@ -35357,9 +37361,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vertigo.name", false }, { "vertner.net", true }, { "vertrieb-strategie.de", true }, + { "verustracking.com", true }, { "verwayen.com", true }, { "very-kids.fr", true }, { "veryapt.com", true }, + { "veryimportantusers.com", true }, { "verymelon.de", true }, { "verymetal.nl", true }, { "verzekeringsacties.nl", true }, @@ -35368,6 +37374,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "veslosada.com", true }, { "vespacascadia.com", true }, { "vestingbar.nl", true }, + { "vestum.ru", true }, + { "vetbits.com", true }, + { "veterinarian-hospital.com", true }, { "veterinario.roma.it", true }, { "veterinarioaltea.com", true }, { "vetforum.co", true }, @@ -35377,22 +37386,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "veverusak.cz", true }, { "vfdworld.com", true }, { "vfn-nrw.de", true }, - { "vforvendetta.science", true }, { "vgchat.us", true }, { "vgerak.com", true }, { "vgolos.zt.ua", true }, + { "vgorcum.com", true }, { "vgropp.de", true }, { "vh.net", true }, { "vhummel.nl", true }, { "vi.photo", true }, - { "via-shire-krug.ru", true }, { "viacdn.org", true }, { "viafinance.cz", false }, { "viaggio-in-cina.it", true }, { "viagraonlinebestellen.org", true }, + { "viagusto.pl", true }, { "viajandoporelmundo.com.ar", true }, { "viaje-a-china.com", true }, - { "vialibido.com.br", true }, { "vialorran.com", true }, { "viaprinto.de", true }, { "viato.fr", true }, @@ -35403,6 +37411,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vicicode.com", true }, { "viciousflora.com", true }, { "vicjuwelen-annelore.be", true }, + { "victora.com", true }, { "victorcanera.com", true }, { "victordiaz.me", true }, { "victoreriksson.ch", true }, @@ -35420,7 +37429,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "victorhawk.com", true }, { "victoriaartist.ru", true }, { "victoriastudio.ru", true }, - { "victoriaville.ca", true }, { "victorjacobs.com", true }, { "victornet.de", true }, { "victornilsson.pw", true }, @@ -35431,10 +37439,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vid-immobilien.de", true }, { "vida-it.com", true }, { "vida.es", true }, + { "vidadu.com", true }, { "vidbooster.com", true }, + { "vidcloud.xyz", true }, { "vide-greniers.org", false }, { "videogamesartwork.com", true }, { "videokaufmann.at", true }, + { "videoload.co", true }, { "videomail.io", true }, { "videosdiversosdatv.com", true }, { "videoseyredin.net", true }, @@ -35442,12 +37453,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "videosqr.com", true }, { "videov.tk", true }, { "vidister.de", true }, - { "vidkovaomara.si", true }, - { "vieaw.com", true }, + { "vidracariaespelhosbh.com.br", true }, { "vieclam24h.vn", false }, { "viekelis.lt", false }, { "viemeister.com", true }, { "viemontante.be", true }, + { "vientos.coop", false }, { "viepixel.at", true }, { "vierdaagsehotel.nl", true }, { "vierna.ga", true }, @@ -35459,11 +37470,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vietnamwomenveterans.org", true }, { "vieux.pro", true }, { "viewbook.com", true }, + { "viewey.com", true }, { "viewmyrecords.com", true }, { "viga.me", true }, { "vigenebio.com", true }, { "vigilantnow.com", true }, { "vigliano.ovh", true }, + { "vignoblesdeletat.ch", true }, { "vigo-krankenversicherung.de", true }, { "vigo-tarife.de", true }, { "vigour.us", true }, @@ -35477,6 +37490,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vijverbenodigdheden.nl", true }, { "vik.im", true }, { "vikalbino.com.br", true }, + { "vikalpgupta.com", true }, { "vikapaula.com", true }, { "vikashkumar.me", true }, { "viking-style.ru", true }, @@ -35486,19 +37500,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vilabiamodas.com.br", true }, { "viljatori.fi", true }, { "villa-anna-cilento.de", true }, - { "villa-bellarte.de", true }, { "villa-gockel.de", true }, { "villa-romantica-zillertal.at", true }, { "villafiore.com.br", true }, { "villageunique.com.br", true }, { "villagockel.de", true }, - { "villalaskowa.pl", true }, { "villamariaamalfi.it", true }, { "villasfinistere.fr", true }, { "villasforsale-bali.com", true }, { "villasoasissanur.com", true }, { "villehardouin.fr", true }, { "villek.fi", true }, + { "villekaaria.eu", true }, { "villenavedornon.fr", true }, { "villenvinkit.com", true }, { "villerez.fr", true }, @@ -35506,20 +37519,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "viltsu.net", true }, { "vima.ch", true }, { "vimeo.com", true }, + { "vinagro.sk", true }, { "vinarstvimodryhrozen.cz", true }, { "vincentcox.com", false }, { "vincentpancol.com", true }, + { "vincible.space", true }, + { "vinciconps4.it", true }, { "vincitraining.com", true }, { "vineright.com", true }, + { "vinetech.co.nz", true }, + { "vinihk.com", true }, { "vinilosdecorativos.net", true }, { "vinner.com.au", true }, { "vinnie.gq", true }, { "vinolli.de", true }, { "vinovum.net", true }, + { "vinsation.com", true }, { "vinsetchampagne.fr", true }, { "vintagebandfestival.org", true }, { "vintagecaskandbarrel.com", true }, { "vintagejeeps.net", true }, + { "vintagemakeupguide.com", true }, { "vintageportgifts.co.uk", true }, { "vintagesouthernpicks.com", true }, { "vintagetrailerbuyers.com", true }, @@ -35528,36 +37548,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vintock.com", true }, { "vinyculture.com", true }, { "vinzite.com", true }, - { "violetraven.co.uk", true }, { "violin4fun.nl", true }, { "vionicbeach.com", true }, { "vionicshoes.com", true }, + { "vip-9649.com", true }, { "vip4553.com", true }, { "vip8522.com", true }, + { "vip9649.com", true }, { "vipesball.cc", true }, { "vipesball.info", true }, { "vipesball.me", true }, { "vipi.es", true }, { "viptamin.eu", true }, { "viptamol.com", true }, + { "viqo.pl", true }, { "vir-tec.eu", true }, { "vir2.me", true }, { "viral32111.com", true }, { "viralboombox.xyz", true }, { "viralpop.it", true }, { "viralsouls.in", true }, + { "viralsv.com", true }, { "virgopolymer.com", true }, + { "virial.de", true }, { "viridis-milites.cz", true }, { "virtit.fr", true }, + { "virtualcloud.ddns.net", true }, + { "virtualcommodities.org", true }, { "virtuality4d.com", true }, { "virtuallifestyle.nl", true }, { "virtualmt2.pl", true }, { "virtualsanity.com", true }, { "virtualvaults.com", true }, { "virtubox.net", true }, - { "virtusaero.com", true }, { "virvum.ch", true }, { "visaexpert.co.za", true }, + { "visalist.io", true }, { "visalogy.com", true }, { "visaop.com", true }, { "visapourailleurs.fr", true }, @@ -35571,15 +37597,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "visioflux-premium.com", true }, { "visionarymedia.nl", true }, { "visiondigitalsog.com", true }, + { "visiondirectionaldrilling.com", true }, { "visionexpress.com", true }, { "visionexpress.ie", true }, { "visionexpresscareers.com", true }, { "visionless.me", false }, { "visionnissancanandaiguaparts.com", true }, - { "visistruct.com", true }, { "visit-montenegro.com", true }, { "visitcambridgeshirefens.org", true }, { "visitkangaroovalley.com.au", true }, + { "visitmaine.com", true }, { "visor.ph", true }, { "vistaalmar.es", true }, { "vistacampus.gov", true }, @@ -35603,7 +37630,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vitalthrills.com", true }, { "vitalware.com", true }, { "vitalyzhukphoto.com", true }, - { "vitamaxxi.com.br", true }, { "vitamineproteine.com", true }, { "vitaminler.com", true }, { "vitastic.nl", true }, @@ -35612,6 +37638,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vitkutny.cz", true }, { "vitoye.com", true }, { "vitpeyr.com", true }, + { "vitra-showrooms.co.uk", true }, { "vitra-vcare.co.uk", true }, { "vitrado.de", true }, { "vitsoft.by", true }, @@ -35631,7 +37658,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vivoitaliankitchen.com", true }, { "vixrapedia.org", true }, { "viyf.org", true }, - { "viza.io", true }, { "vizards.cc", true }, { "vize.ai", false }, { "vizija-nepremicnine.si", true }, @@ -35678,12 +37704,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vn.search.yahoo.com", false }, { "vncg.org", true }, { "vnd.cloud", true }, - { "vndb.org", true }, { "vnfs-team.com", true }, + { "vnpem.org", true }, { "vnvisa.center", true }, { "vnvisa.ru", true }, + { "vocalik.com", true }, { "vocaloid.my", true }, - { "vocalsynth.space", true }, { "vocalviews.com", true }, { "vocus.aero", true }, { "vocustest.aero", true }, @@ -35692,22 +37718,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vodpay.com", true }, { "vodpay.net", true }, { "vodpay.org", true }, + { "vogelbus.ch", true }, { "vogler.name", true }, + { "vogue.cz", true }, + { "voice-of-design.com", true }, { "voicu.ch", true }, { "void-zero.com", true }, + { "voidark.com", true }, { "voidcore.org", true }, + { "voidma.in", true }, { "voidpay.com", true }, { "voidpay.net", true }, { "voidpay.org", true }, { "voidptr.eu", true }, { "voids.org", true }, - { "voidshift.com", true }, + { "voidx.top", true }, { "voidzehn.com", true }, { "voipsun.com", true }, { "vojtechpavelka.cz", true }, { "vokalsystem.com", true }, { "vokativy.cz", false }, { "vokeapp.com", true }, + { "vokurka.net", true }, { "volcanconcretos.com", true }, { "volcano-kazan.ru", true }, { "volcano-spb.ru", true }, @@ -35727,7 +37759,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "volta.io", true }, { "volto.io", true }, { "volunteeringmatters.org.uk", true }, - { "volvipress.gr", true }, { "vomitb.in", true }, { "von-lien-aluprofile.de", true }, { "von-lien-dachrinnen.de", true }, @@ -35745,8 +37776,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vorlagen-geburtstagsgruesse.de", true }, { "vorlicek.de", true }, { "vorlif.org", true }, - { "vorm2.com", true }, { "vorodevops.com", true }, + { "vorte.ga", true }, { "vos-fleurs.ch", true }, { "vos-fleurs.com", true }, { "vosgym.jp", true }, @@ -35757,7 +37788,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vosser.de", true }, { "vostronet.com", true }, { "voter-info.uk", true }, - { "votercircle.com", true }, { "votesandymurman.com", true }, { "votocek.cz", true }, { "votockova.cz", true }, @@ -35773,13 +37803,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "voyagesaufildespages.be", true }, { "voyageschine.com", true }, { "voyagesdetective.fr", true }, - { "vozami.com", true }, { "vpc-display.com", true }, { "vpn.black", true }, { "vpn.ht", true }, + { "vpnpro.com", true }, { "vpnservice.nl", true }, { "vpsboard.com", true }, { "vpsdream.dk", true }, + { "vpsou.com", false }, { "vpsport.ch", true }, { "vpsvz.net", true }, { "vrandopulo.ru", true }, @@ -35787,21 +37818,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vrcholovka.cz", true }, { "vreaulafacultate.ro", true }, { "vreeman.com", true }, + { "vretmaskin.se", true }, { "vriesdonkow.be", true }, + { "vrij-links.nl", true }, { "vrijgezellen-feest.com", true }, { "vrijgezellenfeestzwolle.com", true }, - { "vrlaid.com", false }, + { "vrjetpackgame.com", true }, { "vroedvrouwella.be", true }, - { "vrsgames.com.mx", true }, { "vrsystem.com.br", true }, - { "vrtak-cz.net", true }, { "vrtouring.org", true }, - { "vsamsonov.com", true }, { "vscale.io", true }, { "vsean.net", true }, { "vserver-preis-vergleich.de", true }, { "vsesrazu-raiffeisen.ru", true }, - { "vsestiralnie.com", true }, + { "vsestoki.com", true }, { "vsl-defi.ch", true }, { "vssnederland.nl", true }, { "vstehn.ru", true }, @@ -35815,36 +37845,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vuilelakens.be", true }, { "vuljespaarpot.nl", true }, { "vullriede-multimedia.de", true }, - { "vulndetect.com", true }, - { "vulndetect.org", true }, + { "vulndetect.org", false }, { "vulnerability.ch", true }, { "vulners.com", true }, { "vulns.sexy", true }, { "vulnscan.org", true }, { "vulpine.club", true }, + { "vumetric.com", true }, + { "vuojolahti.com", true }, { "vuojolahti.fi", true }, { "vuotila.eu", true }, { "vuvanhon.com", true }, { "vux.li", true }, { "vuzi.fr", true }, + { "vv1234.cn", true }, { "vvactivia.nl", true }, { "vvdbronckhorst.nl", true }, { "vvoip.org.uk", true }, { "vvw-8522.com", true }, + { "vvzero.com", true }, { "vw-touranclub.cz", true }, { "vwbusje.com", true }, + { "vwfsrentacar.co.uk", true }, { "vwhcare.com", true }, { "vwittich.de", true }, + { "vwo.com", true }, { "vwsoft.de", true }, - { "vwt-event.nl", true }, { "vww-8522.com", true }, { "vx.hn", true }, { "vxst.org", true }, { "vxstream-sandbox.com", true }, + { "vxz.me", true }, { "vybeministry.org", true }, { "vyber-odhadce.cz", true }, { "vyberodhadce.cz", true }, - { "vykup-car.ru", true }, { "vyplnto.cz", true }, { "vysko.cz", true }, { "vyskocil.eu", true }, @@ -35857,17 +37891,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "w-spotlight.appspot.com", true }, { "w-w-auto.de", true }, { "w.wiki", true }, + { "w1221.com", true }, { "w2n.me", true }, { "w3ctag.org", true }, { "w3n.org", true }, - { "w4b.in", true }, { "w4eg.de", true }, { "w4nvu.org", true }, { "w50.co.uk", true }, { "w5gfe.org", true }, { "w7k.de", true }, { "w84.it", true }, + { "w95.pw", true }, { "wa-stromerzeuger.de", true }, + { "wa.me", true }, { "waaw.tv", true }, { "wabatam.com", true }, { "wachter.biz", true }, @@ -35876,7 +37912,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wadsworth.gallery", true }, { "wadvisor.com", true }, { "waelisch.de", true }, - { "waelti.xxx", true }, { "waf.ninja", true }, { "waf.sexy", true }, { "wafa4hw.com", true }, @@ -35884,6 +37919,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "waffle.at", false }, { "wafuton.com", true }, { "wagyu-bader.de", true }, + { "wahhoi.net", true }, { "wahidhasan.com", true }, { "wahlman.org", true }, { "wahrnehmungswelt.de", true }, @@ -35896,11 +37932,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "waigel.org", true }, { "waikatowebdesigners.com", true }, { "wail.net", true }, - { "wains.be", true }, + { "wains.be", false }, { "wait.jp", true }, { "waiterwheels.com", true }, { "waits.io", true }, - { "waixingrenfuli.vip", true }, + { "wajtc.com", true }, { "wak.io", true }, { "waka-mono.com", true }, { "waka168.com", true }, @@ -35915,11 +37951,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "waldvogel.family", true }, { "walent.in", true }, { "walentin.co", true }, + { "waligorska.pl", true }, { "walk.onl", true }, { "walkera-fans.de", true }, { "walkhighlandsandislands.com", true }, { "walkingrehabilitation.com", true }, { "walksedona.com", true }, + { "walksfourpaws.co.uk", true }, { "wallabet.fr", true }, { "wallabies.org", true }, { "wallace-group.net", true }, @@ -35945,18 +37983,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "walshbanks.com", true }, { "waltellis.com", true }, { "walter.lc", true }, + { "waltervictor.com", true }, { "waltzmanplasticsurgery.com", true }, { "walvi.nl", true }, + { "wan.pp.ua", false }, { "wanda.ch", true }, { "wandelreizen.eu", true }, { "wander.al", true }, { "wandercue.com", true }, { "wandervoll.ch", true }, { "wanderzoom.co", true }, + { "wandystan.eu", true }, { "wane.co", true }, + { "wangbangyu.cf", true }, + { "wangbangyu.ga", true }, + { "wangbangyu.gq", true }, + { "wangbangyu.ml", true }, + { "wangbangyu.tk", true }, { "wangjun.me", true }, - { "wangqiliang.cn", false }, - { "wangqiliang.com", false }, + { "wangqiliang.cn", true }, + { "wangqiliang.com", true }, { "wangqiliang.org", true }, { "wangql.net", true }, { "wangqr.tk", true }, @@ -35964,11 +38010,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wangyubao.cn", true }, { "wangyue.blog", true }, { "wangzuan168.cc", true }, + { "wanlieyan.com", true }, { "wannaridecostarica.com", true }, - { "wanybug.cn", true }, + { "wanybug.cf", true }, { "wanybug.com", true }, + { "wanybug.ga", true }, + { "wanybug.gq", true }, + { "wanybug.tk", true }, + { "wanzenbug.xyz", true }, { "waonui.io", true }, - { "wapgu.cc", true }, { "wardow.com", true }, { "warebouncycastles.co.uk", true }, { "warekit.io", true }, @@ -35978,7 +38028,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "warhaggis.com", true }, { "warmestwishes.ca", true }, { "warmservers.com", true }, - { "warnings.xyz", true }, { "warofelements.de", true }, { "warp-radio.com", true }, { "warp-radio.net", true }, @@ -35998,7 +38047,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wasielewski.com.de", true }, { "wasil.org", true }, { "waslh.com", true }, - { "wasserburg.dk", true }, { "wasserspucker.de", true }, { "wassibauer.com", true }, { "wastrel.ch", true }, @@ -36011,6 +38059,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "watchpci.com", true }, { "watchstyle.com", true }, { "water-addict.com", true }, + { "waterbrook.com.au", true }, + { "waterdogsmokedfish.com", true }, { "waterdrop.tk", true }, { "waterfedpole.com", true }, { "waterleeftinbeek.nl", true }, @@ -36029,17 +38079,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "waukeect.com", true }, { "wave-ola.es", true }, { "wave.is", true }, + { "waverlysecuritycameras.com", true }, { "wavesboardshop.com", true }, + { "wavesoftime.com", true }, { "waveum.com", true }, { "wawak.pl", true }, { "waxdramatic.com", true }, + { "waycraze.com", true }, { "wayfair.de", true }, { "wayohoo.com", true }, { "wayohoo.net", true }, { "waytt.cf", true }, { "waze.com", true }, + { "wb256.com", true }, { "wbci.us", false }, { "wbg-vs.de", true }, + { "wblinks.com", true }, { "wbt-solutions.ch", true }, { "wbt-solutions.net", true }, { "wbudd.com", true }, @@ -36047,8 +38102,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wbvb.nl", true }, { "wbx.support", true }, { "wby.gd", true }, + { "wby.tw", true }, { "wcbook.ru", false }, { "wcn.life", false }, + { "wcwcg.net", true }, { "wd627.com", true }, { "wd976.com", true }, { "wdbflowersevents.co.uk", true }, @@ -36069,29 +38126,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wearandcare.net", true }, { "weare1inspirit.com", true }, { "wearebfi.co.uk", true }, + { "wearedisneyland.com", true }, { "wearegenki.com", true }, { "wearehackerone.com", true }, { "wearepapermill.co", true }, { "wearesouthafricans.com", true }, { "wearvr.com", true }, + { "weaspireusa.com", true }, { "weather-and-climate.com", false }, { "weathermyway.rocks", true }, { "web-adminy.co.uk", true }, - { "web-advisor.co.uk", true }, { "web-art.cz", true }, { "web-design.co.il", true }, { "web-dl.cc", true }, { "web-hotel.gr", true }, + { "web-jive.com", true }, { "web-kouza.com", true }, + { "web-mail.info", true }, + { "web-odyssey.com", true }, { "web-redacteuren.nl", true }, + { "web-siena.it", true }, + { "web-smart.com", true }, { "web-wave.jp", true }, { "web.bzh", true }, { "web.cc", false }, { "web.de", true }, + { "web1n.com", true }, { "web2033.com", true }, { "web2ldap.de", true }, { "web2screen.tv", true }, { "web404.net", true }, + { "webadiccion.net", true }, + { "webadicta.net", true }, + { "webadicto.net", true }, { "webaeon.org", true }, { "webaholic.co.in", true }, { "webais.ru", true }, @@ -36100,9 +38167,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "webandmore.de", false }, { "webappky.cz", true }, { "webartex.ru", true }, + { "webauthority.co.uk", true }, { "webbiz.co.uk", true }, { "webbson.net", false }, - { "webbx.se", true }, { "webcamtoy.com", true }, { "webcatchers.nl", true }, { "webcatechism.com", false }, @@ -36111,16 +38178,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "webcontentspinning.com", true }, { "webcookies.org", true }, { "webcrm.com", true }, + { "webcurtaincall.com", true }, { "webdeflect.com", true }, + { "webdemaestrias.com", true }, { "webdesign-st.de", true }, { "webdesigneauclaire.com", true }, { "webdesignerinwarwickshire.co.uk", true }, { "webdesignlabor.ch", true }, { "webdesignplay.com", true }, { "webdesignplayground.io", true }, + { "webdesignsandiego.com", true }, { "webdevops.io", true }, - { "webdevxp.com", true }, { "webdl.org", true }, + { "webdollarvpn.io", true }, { "webduck.nl", false }, { "webeast.eu", true }, { "webeau.com", true }, @@ -36129,12 +38199,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "webev.ru", true }, { "webexample.win", true }, { "webexp.biz", true }, + { "webexpertsdirect.com.au", true }, { "webfilings-eu-mirror.appspot.com", true }, { "webfilings-eu.appspot.com", true }, { "webfilings-mirror-hrd.appspot.com", true }, { "webfilings.appspot.com", true }, { "webfixers.nl", true }, { "webfox.com.br", true }, + { "webgap.io", true }, { "webgarten.ch", true }, { "webgears.com", true }, { "webharvest.gov", true }, @@ -36160,11 +38232,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "webmandesign.eu", true }, { "webmax.com.tr", true }, { "webmedpharmacy.co.uk", true }, - { "webmel.com", true }, { "webmetering.at", true }, { "webministeriet.net", true }, { "webmotelli.fi", true }, { "webnames.ca", true }, + { "webnexty.com", true }, { "webogram.org", false }, { "webpinoytambayan.net", true }, { "webpinoytv.info", true }, @@ -36175,14 +38247,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "webproxy.pw", true }, { "webpubsub.com", true }, { "webqualitat.com.br", true }, - { "webqueens.com", true }, { "webrebels.org", false }, { "webrentcars.com", true }, { "webreport.fr", true }, - { "webreslist.com", true }, { "webscale.nl", false }, { "websec.nl", true }, - { "websectools.com", true }, { "websecurity.is", true }, { "webseitendesigner.com", false }, { "webseitenserver.com", true }, @@ -36198,6 +38267,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "websitesdallas.com", true }, { "websiteservice.pro", true }, { "webslake.com", true }, + { "websouthdesign.com", true }, { "webspiral.jp", true }, { "webspire.tech", true }, { "webstijlen.nl", true }, @@ -36209,7 +38279,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "webtalis.nl", true }, { "webtasarim.pw", true }, { "webtheapp.com", true }, - { "webtobesocial.de", true }, { "webtorrent.io", true }, { "webtrh.cz", true }, { "webtropia.com", false }, @@ -36221,31 +38290,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "webwolf.co.za", true }, { "webworkshop.ltd", true }, { "webyazilimankara.com", true }, - { "webz.one", true }, - { "wecanvisit.com", true }, { "wechatify.com", true }, { "wecleanbins.com", true }, { "wecobble.com", true }, { "weddingalbumsdesign.com", true }, { "weddingfantasy.ru", true }, + { "weddingofficiantwilmington.com", true }, { "weddingsbynoon.co.uk", true }, { "weddywood.ru", false }, { "wedos.com", true }, { "weeblr.com", true }, { "weeblrpress.com", true }, { "weedcircles.com", true }, - { "weedlandia.org", true }, { "weedlife.com", true }, { "weednews.co", true }, { "weedupdate.com", true }, { "weedworthy.com", true }, { "weedypedia.de", true }, + { "week.report", true }, { "weekdone.com", true }, { "weekendinitaly.com", true }, { "weekly-residence.com", true }, { "weeklycenter.co.jp", true }, { "weeknummers.be", true }, { "weeknummers.nl", true }, + { "weekvandemediawijsheid.nl", true }, { "weemake.fr", true }, { "weemakers.fr", true }, { "weepycat.com", true }, @@ -36271,17 +38340,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "weils.net", true }, { "weiltoast.de", true }, { "weimaraner.com.br", true }, + { "weiming.ddns.net", true }, { "weimz.com", true }, { "wein.cc", true }, { "wein.co.kr", true }, { "weinbergerlawgroup.com", true }, { "weinundsein.com", true }, { "weirdesigns.com", true }, - { "weirdserver.com", true }, { "weisse-liste.de", true }, { "weissman.agency", true }, { "weiterbildung-vdz.de", true }, { "weitergedacht.eu", true }, + { "weixiaojun.org", true }, { "weizenspr.eu", true }, { "welcome-tahiti.com", true }, { "welcome-werkstatt.com", true }, @@ -36295,15 +38365,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wellacapability.com", true }, { "wellbeing360.com.au", true }, { "wellcom.co.il", true }, - { "welldrake.com", true }, { "wellensteyn.ru", true }, { "weller.pm", true }, { "wellist.com", true }, - { "wellmarts.com", true }, { "wellness-gutschein.de", true }, { "wellnesscheck.net", true }, + { "wellsolveit.com", false }, { "welovecatsandkittens.com", true }, - { "welpo.me", true }, { "welsh.com.br", true }, { "welshccf.org.uk", true }, { "welteneroberer.de", true }, @@ -36321,7 +38389,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wendlberger.net", true }, { "wendu.me", true }, { "wener.me", false }, - { "wengebowuguan.com", true }, { "wenger-shop.ch", true }, { "wenjs.me", true }, { "wensing-und-koenig.de", true }, @@ -36341,6 +38408,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "werbik.at", true }, { "werehub.org", true }, { "wereldkoffie.eu", true }, + { "wereoutthere.nl", true }, { "werepairit.com.au", true }, { "werk-34.de", true }, { "werk32.net", false }, @@ -36363,7 +38431,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wertheimer-burgrock.de", true }, { "wertpapiertreuhand.de", true }, { "werwolf-live.de", true }, - { "wes-dev.com", true }, { "wesecom.com", true }, { "wesell.asia", true }, { "weserv.nl", true }, @@ -36376,6 +38443,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "west-contemporary.com", true }, { "west-trans.com.au", true }, { "west-wind.net", true }, + { "westcanal.net", true }, { "westcarrollton.org", true }, { "westcentenaryscouts.org.au", true }, { "westcentralaor.org", true }, @@ -36409,7 +38477,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wexfordbouncycastles.ie", true }, { "wexilapp.com", true }, { "weyland-yutani.org", true }, - { "weyland.tech", true }, + { "weynaphotography.com", true }, + { "wezartt.com", true }, { "wf-bigsky-master.appspot.com", true }, { "wf-demo-eu.appspot.com", true }, { "wf-demo-hrd.appspot.com", true }, @@ -36430,7 +38499,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wgraphics.ru", true }, { "wgsi-friesland.nl", true }, { "wh-guide.de", true }, - { "whanau.org", true }, { "what-wood.servehttp.com", true }, { "whatagreatwebsite.net", true }, { "whatanime.ga", true }, @@ -36443,7 +38511,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "whatclinic.ru", true }, { "whateveraspidercan.com", true }, { "whatismycountry.com", true }, - { "whatismyip.net", true }, + { "whatismyip.net", false }, { "whatismyipaddress.ca", true }, { "whatisthe.cloud", true }, { "whatnext.limited", true }, @@ -36454,6 +38522,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "whatsupgold.com.tw", true }, { "whatsupoutdoor.com", true }, { "whatthingsweigh.com", true }, + { "whatusb.com", true }, { "whatwebcando.today", true }, { "whatwg.org", true }, { "whd-guide.de", true }, @@ -36462,7 +38531,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wheeler.kiwi.nz", true }, { "wheelwide.co.uk", true }, { "wheelwork.org", true }, - { "wheelwright.org", true }, + { "wheezie.be", true }, { "when.fm", false }, { "where2trip.com", true }, { "whereiszakir.com", true }, @@ -36482,6 +38551,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "whistleb.com", true }, { "whistleblower.gov", true }, { "whitby-brewery.com", true }, + { "white-ibiza.com", true }, { "whitealps.at", true }, { "whitealps.be", true }, { "whitealps.ch", true }, @@ -36493,16 +38563,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "whitehathackers.com.br", true }, { "whitehouse.gov", true }, { "whitehousedrugpolicy.gov", true }, - { "whiteink.com", true }, + { "whiteink.com", false }, { "whitejaguars.com", true }, { "whitelabelcashback.nl", true }, { "whitelabeltickets.com", false }, { "whitepharmacy.co.uk", true }, { "whiteready.it", true }, { "whiterose.goip.de", true }, + { "whiteshadowimperium.com", true }, { "whitewebhosting.co.za", true }, { "whitewebhosting.com", true }, { "whitewinterwolf.com", true }, + { "whitkirk.com", true }, { "whitkirkartsguild.com", true }, { "whitkirkchurch.org.uk", true }, { "whittome.com", true }, @@ -36517,7 +38589,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "whocalled.us", true }, { "whocybered.me", true }, { "whoimg.com", true }, - { "whoisamitsingh.com", true }, + { "whoiscuter.ml", true }, + { "whoiscutest.ml", true }, { "whoisthenightking.com", true }, { "whoiswp.com", true }, { "wholelotofbounce.co.uk", false }, @@ -36532,6 +38605,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "whub.io", true }, { "why-brexit.uk", true }, { "whychoosebob.net.au", true }, + { "whynohttps.com", true }, { "whyopencomputing.ch", true }, { "whyopencomputing.com", true }, { "whytls.com", true }, @@ -36597,10 +38671,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wild-turtles.com", false }, { "wildboaratvparts.com", true }, { "wilddogdesign.co.uk", true }, + { "wildewood.ca", true }, { "wildlifeadaptationstrategy.gov", true }, { "wildnisfamilie.net", true }, { "wildtrip.blog", true }, { "wildwildtravel.com", true }, + { "wildwind.world", true }, { "wildzoopark.co.uk", true }, { "wildzoopark.com", true }, { "wili.li", true }, @@ -36618,12 +38694,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "williamboulton.co.uk", true }, { "williamfeely.info", true }, { "williamjohngauthier.net", true }, - { "williamsonshore.com", true }, + { "williamscomposer.com", true }, + { "williamsflintlocks.com", true }, { "williamsportmortgages.com", true }, { "williamsroom.com", true }, { "williamtm.com", true }, { "willnorris.com", true }, { "willow.technology", true }, + { "willowbrook.co.uk", true }, { "willowdalechurch.ca", true }, { "willowtree.school", true }, { "wills.co.tt", true }, @@ -36642,6 +38720,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "winbignow.click", true }, { "winbuzzer.com", true }, { "wincasinowin.click", true }, + { "winch-center.de", true }, { "wind.moe", true }, { "winddan.nz", true }, { "windelnkaufen24.de", true }, @@ -36676,20 +38755,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wintercam.nl", true }, { "winterfeldt.de", true }, { "winterhillbank.com", true }, + { "wintermeyer-consulting.de", true }, { "wintermeyer.de", true }, { "winterschoen.nl", true }, { "wintodoor.com", true }, + { "winwitharval.co.uk", true }, { "wipswiss.ch", true }, { "wir-bewegen.sh", true }, { "wircon-int.net", true }, { "wire.com", true }, - { "wiredcut.com", true }, { "wireframesoftware.com", true }, { "wireheading.com", true }, - { "wirelesswatch.com.au", true }, { "wireshark.org", true }, { "wiretime.de", true }, - { "wiretrip.io", false }, { "wirhabenspass.de", true }, { "wirkstoffreich.de", true }, { "wirralbouncycastles.co.uk", true }, @@ -36698,6 +38776,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wis.no", true }, { "wisak.me", true }, { "wisal.org", true }, + { "wischu.com", true }, + { "wisedog.eu", true }, { "wiseflat.com", true }, { "wispapp.com", false }, { "wisper.net.au", true }, @@ -36725,6 +38805,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wizzr.nl", true }, { "wj0666.com", true }, { "wjbolles.com", true }, + { "wjcainc.com", true }, { "wjci.com", true }, { "wje-online.de", true }, { "wjg.ca", true }, @@ -36751,11 +38832,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wmfusercontent.org", true }, { "wmkowa.de", true }, { "wmustore.com", true }, - { "wnmed.com.au", true }, { "wnu.com", true }, { "wo-ist-elvira.net", true }, { "wo2forum.nl", true }, { "woah.how", true }, + { "woaiuhd.com", true }, { "wobble.ninja", true }, { "wobblywotnotz.co.uk", true }, { "wochennummern.de", true }, @@ -36787,7 +38868,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wolfsden.cz", true }, { "wolfwings.us", true }, { "wolfy1339.com", false }, - { "wolkenspeicher.org", true }, { "wolkoopjes.nl", true }, { "wollgredel.de", true }, { "wollongongbaptist.hopto.org", true }, @@ -36797,6 +38877,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "womb.city", true }, { "wombatalla.com.au", true }, { "wombats.net", true }, + { "womcom.nl", true }, { "women-only.net", true }, { "womensalespros.com", true }, { "womenshairlossproject.com", true }, @@ -36816,7 +38897,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "woodcoin.org", true }, { "woodev.us", true }, { "woodlandhillselectrical.com", true }, - { "woodlandsmetro.church", true }, + { "woodlandsmetro.church", false }, { "woodlandsvale.uk", true }, { "woodlandwindows.com", true }, { "woodomat.com", true }, @@ -36824,7 +38905,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "woof.gq", true }, { "woofsbakery.com", true }, { "woohooyeah.nl", true }, - { "woomai.net", true }, { "woonboulevardvolendam.nl", true }, { "woontegelwinkel.nl", true }, { "wooplagaming.com", true }, @@ -36837,7 +38917,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "word-grabber.com", true }, { "wordcounter.net", true }, { "wordher.com", true }, - { "wordlessecho.com", true }, { "wordpress.com", false }, { "wordsmart.it", true }, { "wordspy.com", true }, @@ -36852,16 +38931,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "workingclassmedia.com", true }, { "workinginsync.co.uk", true }, { "workingmachine.info", true }, - { "workissime.com", true }, { "workmart.mx", true }, { "workoptions.com", true }, { "workplaces.online", true }, { "workraw.com", true }, + { "workray.com", true }, { "works-ginan.jp", true }, { "workshopszwolle.nl", true }, { "workshopzwolle.com", true }, { "worksitevr.com", true }, { "world-in-my-eyes.com", true }, + { "world-lolo.com", true }, { "worldcareers.dk", true }, { "worldcigars.com.br", true }, { "worldcrafts.org", true }, @@ -36877,6 +38957,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "worldofvnc.net", true }, { "worldofwobble.co.uk", true }, { "worldpeacetechnology.com", true }, + { "worldrecipes.eu", true }, { "worldsgreatestazuredemo.com", true }, { "worldsoccerclips.com", true }, { "worldstone777.com", true }, @@ -36889,6 +38970,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wot-tudasbazis.hu", true }, { "wotra-register.com", true }, { "woudenberg.nl", true }, + { "woudenbergsedrukkerij.nl", true }, { "woufbox.com", true }, { "woutergeraedts.nl", true }, { "wouterslop.com", true }, @@ -36896,7 +38978,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wouterslop.nl", true }, { "wow-foederation.de", true }, { "wow-screenshots.net", true }, - { "wow202y5.com", true }, { "wowaffixes.info", true }, { "wowbouncycastles.co.uk", true }, { "wowhelp.it", true }, @@ -36916,14 +38997,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wpac.de", true }, { "wpandup.org", true }, { "wpcanban.com", true }, + { "wpccu.org", true }, + { "wpcdn.bid", true }, { "wpcharged.nz", true }, { "wpdesigner.ir", true }, { "wpdirecto.com", true }, { "wpdublin.com", true }, { "wpenhance.com", true }, { "wpexplorer.com", true }, - { "wpfast.net", true }, { "wpformation.com", true }, + { "wpgoblin.com", true }, { "wphostingblog.nl", true }, { "wpinter.com", true }, { "wpldn.uk", true }, @@ -36948,6 +39031,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wq.ro", true }, { "wr.su", true }, { "wrara.org", true }, + { "wrathofgeek.com", true }, { "wrc-results.com", true }, { "wrdcfiles.ca", true }, { "wrdx.io", true }, @@ -36962,7 +39046,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "writemyessay.today", true }, { "writemyessays.com", true }, { "writemypaperhub.com", true }, - { "writemytermpapers.com", true }, { "writeoff.me", true }, { "writepride.com", true }, { "writepro.net", true }, @@ -36999,6 +39082,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wtfismyip.com", true }, { "wtfnope.org", true }, { "wth.in", true }, + { "wtp.co.jp", true }, { "wtpdive.jp", true }, { "wtpmj.com", true }, { "wtw.io", true }, @@ -37010,7 +39094,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wuifan.com", true }, { "wuji.cz", true }, { "wumai-p.cn", true }, - { "wumai.cloud", true }, { "wumbo.cf", true }, { "wumbo.co.nz", true }, { "wumbo.ga", true }, @@ -37043,11 +39126,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wwv-8722.com", true }, { "www-33445.com", true }, { "www-49889.com", true }, + { "www-7570.com", true }, + { "www-80036.com", true }, { "www-8522.am", true }, { "www-8522.com", true }, { "www-86499.com", true }, { "www-8722.com", true }, + { "www-9649.com", true }, { "www-9822.com", true }, + { "www-pj009.com", true }, { "www.aclu.org", false }, { "www.airbnb.com", true }, { "www.amazon.cn", true }, @@ -37110,45 +39197,48 @@ static const nsSTSPreload kSTSPreloadList[] = { { "www.wordpress.com", false }, { "www.zdnet.com", true }, { "www68277.com", true }, + { "wwww.is", true }, + { "wwww.me.uk", true }, { "wxcafe.net", true }, + { "wxdisco.com", true }, + { "wxforums.com", true }, { "wxh.jp", true }, { "wxster.com", true }, - { "wxyz.buzz", true }, + { "wxzm.sx", true }, { "wyam.io", true }, { "wybar.uk", true }, + { "wycrow.com", true }, { "wyday.com", true }, { "wygibanki.pl", true }, { "wygodnie.pl", true }, { "wynterhill.co.uk", true }, { "wyo.cam", true }, { "wypemagazine.se", true }, + { "wyrickstaxidermy.com", true }, { "wyrihaximus.net", true }, { "wyrimaps.net", true }, { "wyssmuller.ch", true }, + { "wzfetish.com.br", true }, { "wzfou.com", true }, - { "wzrd.in", true }, { "wzyboy.org", true }, - { "x-iweb.ru", true }, { "x-lan.be", true }, { "x-one.co.jp", true }, { "x.io", true }, { "x.st", true }, { "x0r.be", true }, { "x13.com", true }, - { "x1be.win", true }, + { "x1616.tk", true }, { "x2d2.de", true }, { "x378.ch", true }, { "x509.io", true }, - { "x69.biz", true }, - { "x69x.net", true }, { "x7plus.com", true }, { "xa.search.yahoo.com", false }, { "xa1.uk", true }, { "xanadu-taxi.cz", true }, + { "xanax.pro", false }, { "xants.de", true }, { "xatr0z.org", false }, { "xavier.is", true }, - { "xawen.net", true }, { "xbb.hk", true }, { "xbb.li", true }, { "xbertschy.com", true }, @@ -37167,15 +39257,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xcorpsolutions.com", true }, { "xcvb.xyz", true }, { "xd.cm", true }, - { "xd.fi", true }, { "xdavidhu.me", true }, { "xdawn.cn", true }, { "xdeftor.com", true }, - { "xecure.zone", true }, - { "xecureit.com", true }, + { "xdos.io", true }, { "xeedbeam.me", true }, { "xega.org", true }, { "xehost.com", true }, + { "xeiropraktiki.gr", true }, { "xelesante.jp", true }, { "xendo.net", true }, { "xenomedia.nl", true }, @@ -37187,6 +39276,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xentox.com", true }, { "xerblade.com", true }, { "xerhost.de", true }, + { "xerkus.pro", true }, { "xerownia.eu", true }, { "xetown.com", true }, { "xf-liam.com", true }, @@ -37199,6 +39289,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xgclan.com", true }, { "xgn.es", true }, { "xhadius.de", true }, + { "xhily.com", true }, { "xhmikosr.io", true }, { "xho.me", true }, { "xia.de", true }, @@ -37213,6 +39304,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xiaofengsky.com", true }, { "xiaoguo.net", false }, { "xiaolanglang.net", true }, + { "xiaolong.link", true }, + { "xiaomao.tk", true }, { "xiaomi.eu", true }, { "xiaoniaoyou.com", true }, { "xiaoyu.net", true }, @@ -37231,6 +39324,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xin-in.com", true }, { "xin-in.net", true }, { "xing-in.net", true }, + { "xinj.com", true }, { "xinnixdeuren-shop.be", true }, { "xinuspeed.com", true }, { "xinuspeedtest.com", true }, @@ -37238,7 +39332,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xiongx.cn", true }, { "xj8876.com", true }, { "xjd.vision", true }, + { "xjf6.com", true }, { "xjjeeps.com", true }, + { "xjoin.de", true }, { "xjpvictor.info", true }, { "xkblog.xyz", true }, { "xkcd.pw", true }, @@ -37251,15 +39347,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xmedius.com", false }, { "xmedius.eu", true }, { "xmenrevolution.com", true }, - { "xmerak.com", true }, { "xmlbeam.org", true }, + { "xmlogin288.com", true }, { "xmpp.dk", true }, { "xmppwocky.net", true }, { "xmr.to", true }, { "xmtpro.com", true }, { "xmusic.live", true }, { "xmv.cz", false }, - { "xn-----8kcgbo2bmdgkdacthvjf.xn--p1ai", true }, { "xn----7sbfl2alf8a.xn--p1ai", true }, { "xn----8hcdn2ankm1bfq.com", true }, { "xn----zmcaltpp1mdh16i.com", true }, @@ -37267,7 +39362,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xn--0kq33cz5c8wmwrqqw1d.com", true }, { "xn--24-6kch4bfqee.xn--p1ai", true }, { "xn--24-glcia8dc.xn--p1ai", true }, - { "xn--3lqp21gwna.cn", true }, + { "xn--48jwg508p.net", true }, + { "xn--4kro7fswi.xn--6qq986b3xl", true }, { "xn--4pv80kkz8auzf.jp", true }, { "xn--5dbkjqb0d.com", true }, { "xn--5dbkjqb0d.net", true }, @@ -37276,8 +39372,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xn--79q87uvkclvgd56ahq5a.net", true }, { "xn--7ca.co", true }, { "xn--7xa.google.com", true }, - { "xn--80aaagmgvmvmcuoq7r.xn--p1ai", true }, { "xn--80adb4aeode.xn--p1ai", true }, + { "xn--80adbevek3air0ee9b8d.com", true }, { "xn--80aejljbfwxn.xn--p1ai", true }, { "xn--80anogxed.xn--p1ai", true }, { "xn--80azelb.xn--p1ai", true }, @@ -37308,18 +39404,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xn--e1aoahhqgn.xn--p1ai", true }, { "xn--ecki0cd0bu9a4nsjb.com", true }, { "xn--eckle6c0exa0b0modc7054g7h8ajw6f.com", true }, + { "xn--ehq13kgw4e.ml", true }, { "xn--elsignificadodesoar-c4b.com", true }, { "xn--erklderbarenben-slbh.dk", true }, { "xn--f9jh4f4b4993b66s.tokyo", true }, { "xn--familie-pppinghaus-l3b.de", true }, { "xn--feuerlscher-arten-4zb.de", true }, + { "xn--fiqwix98h.jp", true }, { "xn--fischereiverein-mnsterhausen-i7c.de", true }, { "xn--fp8h58f.ws", true }, { "xn--frankierknig-djb.de", true }, { "xn--fs5ak3f.com", true }, - { "xn--gfrr-7qa.li", true }, { "xn--gfrrli-yxa.ch", true }, - { "xn--hfk-allgu-schwaben-stb.de", true }, { "xn--hgbk4a00a.com", true }, { "xn--hllrigl-90a.at", true }, { "xn--i2ru8q2qg.com", true }, @@ -37330,7 +39426,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xn--jp8hx8f.ws", true }, { "xn--kckd0bd4a8tp27yee2e.com", true }, { "xn--kda.tk", true }, + { "xn--keditr-0xa.biz", true }, + { "xn--klmek-0sa.com", true }, { "xn--knstler-n2a.tips", false }, + { "xn--krpto-lva.de", true }, { "xn--ktha-kamrater-pfba.se", true }, { "xn--lckwg.net", true }, { "xn--love-un4c7e0d4a.com", true }, @@ -37345,7 +39444,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xn--mgbbh2a9fub.xn--ngbc5azd", false }, { "xn--mgbmmp7eub.com", true }, { "xn--mgbpkc7fz3awhe.com", true }, - { "xn--mhsv04avtt1xi.com", false }, { "xn--mllers-wxa.info", true }, { "xn--myrepubic-wub.net", true }, { "xn--myrepublc-x5a.net", true }, @@ -37355,15 +39453,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xn--nf1a578axkh.xn--fiqs8s", true }, { "xn--nrrdetval-v2ab.se", true }, { "xn--o38h.tk", true }, + { "xn--obt757c.com", true }, + { "xn--p8j9a0d9c9a.xn--q9jyb4c", true }, { "xn--pbt947am3ab71g.com", true }, { "xn--pe-bka.ee", true }, { "xn--pq1a637b.xn--6qq986b3xl", true }, { "xn--q9jb1h5dvcspke3218b9mn4p0c.com", true }, + { "xn--q9ji3c6d.xn--q9jyb4c", true }, { "xn--qckss0j.tk", true }, { "xn--qfun83b.ga", true }, { "xn--r8jzaf7977b09e.com", true }, { "xn--rdiger-kuhlmann-zvb.de", true }, { "xn--reisebro-herrsching-bbc.de", true }, + { "xn--rlcus7b3d.xn--xkc2dl3a5ee0h", true }, { "xn--roselire-60a.ch", true }, { "xn--roselire-60a.com", true }, { "xn--rt-cja.ie", true }, @@ -37372,19 +39474,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xn--s-1gaa.fi", true }, { "xn--seelenwchter-mcb.eu", true }, { "xn--spenijmazania-yhc.pl", true }, - { "xn--sz8h.ml", true }, { "xn--t-oha.lv", true }, { "xn--t8j4aa4nkg1h9bwcvud.com", true }, - { "xn--t8j4aa4nyhxa7duezbl49aqg5546e264d.net", true }, { "xn--t8j4aa4nzg3a5euoxcwee.xyz", true }, { "xn--tigreray-i1a.org", true }, + { "xn--trdler-xxa.xyz", true }, { "xn--u8jwd.ga", true }, { "xn--u9j0ia6hb7347cg8wavz0avb0e.com", true }, { "xn--u9jv84l7ea468b.com", true }, { "xn--v-wfa35g.ro", true }, { "xn--v6q426ishax2a.xyz", true }, { "xn--woistdermlleimer-rzb.de", true }, - { "xn--wq9h.ml", true }, { "xn--y-5ga.com", true }, { "xn--y8j148r.xn--q9jyb4c", true }, { "xn--y8ja6lb.xn--q9jyb4c", true }, @@ -37403,19 +39503,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xnu.kr", true }, { "xo.tc", true }, { "xo7.ovh", true }, - { "xoda.pw", true }, { "xolphin.nl", true }, { "xombitgames.com", true }, { "xombitmusic.com", true }, { "xone.cz", true }, { "xonn.de", true }, - { "xotika.tv", true }, + { "xoonth.net", true }, { "xp2.de", true }, { "xpbytes.com", true }, { "xpd.se", true }, { "xperidia.com", true }, - { "xpj.bet", true }, - { "xpjcunkuan.com", true }, { "xpletus.nl", true }, { "xplore-dna.net", true }, { "xpoc.pro", true }, @@ -37424,12 +39521,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xps2pdf.info", true }, { "xqk7.com", true }, { "xr.cx", true }, + { "xrg.cz", true }, { "xrippedhd.com", true }, { "xrockx.de", true }, { "xroot.org", false }, { "xrwracing-france.com", true }, { "xs2a.no", true }, - { "xscancun.com", true }, + { "xs74.com", true }, { "xsec.me", true }, { "xserownia.com.pl", true }, { "xserownia.eu", true }, @@ -37441,6 +39539,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xsz.jp", true }, { "xtarget.ru", true }, { "xtips.us", true }, + { "xtom.africa", true }, { "xtom.chat", true }, { "xtom.com", true }, { "xtom.com.hk", true }, @@ -37460,30 +39559,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xubo666.com", true }, { "xuc.me", true }, { "xuedianshang.com", true }, - { "xujan.com", true }, { "xuming.studio", true }, { "xunn.io", true }, { "xuntier.ch", true }, { "xviimusic.com", true }, { "xvt-blog.tk", true }, + { "xwalck.se", true }, { "xwaretech.info", true }, { "xx0r.eu", true }, { "xxffo.com", true }, { "xxiz.com", true }, - { "xxx3dbdsm.com", true }, - { "xxxladyboysporn.com", true }, { "xxxlbox.com", true }, - { "xyfun.net", true }, + { "xyenon.bid", true }, + { "xyfun.net", false }, { "xyngular-health.com", true }, { "xywing.com", true }, { "xyyp.mn", true }, { "xyzulu.hosting", true }, + { "xza.fr", true }, { "xzclip.cn", true }, - { "xzoneadventure.com", true }, { "xzy.es", true }, { "xzy.one", true }, { "y11n.net", true }, - { "yabrt.cn", true }, { "yabuisha.jp", true }, { "yachigoya.com", true }, { "yacineboumaza.fr", true }, @@ -37512,9 +39609,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yanbao.xyz", true }, { "yandere.moe", true }, { "yangjingwen.cn", true }, - { "yangmaodang.org", true }, { "yanngraf.ch", true }, { "yanngraf.com", true }, + { "yannic.world", true }, { "yannick.cloud", true }, { "yannik-buerkle.de", true }, { "yannikbloscheck.com", true }, @@ -37526,12 +39623,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yao-in.net", true }, { "yapbreak.fr", true }, { "yarcom.ru", false }, - { "yarogneva.ru", true }, { "yarravilletownhouses.com.au", true }, { "yaru.one", true }, { "yassine-ayari.com", true }, { "yatesun.com", true }, { "yatorie.net", true }, + { "yatstudios.com", true }, { "yatsuenpoon.com", true }, { "yaup.tk", true }, { "yawen.me", true }, @@ -37539,7 +39636,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yaxim.org", true }, { "yazaral.com", true }, { "ybin.me", true }, + { "ybresson.com", true }, { "ybsul.com", true }, + { "ybt520.com", true }, { "ybti.net", true }, { "ybzhao.com", true }, { "ych.art", true }, @@ -37547,11 +39646,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ychon.com", true }, { "ychong.com", true }, { "yclan.net", true }, + { "ycnrg.org", true }, { "yd.io", true }, { "yeapdata.com", true }, { "yeesker.com", true }, { "yell.ml", true }, + { "yellowfly.co.uk", true }, { "yellowpages.ee", true }, + { "yellowtree.co.za", true }, { "yelon.hu", true }, { "yelp.at", true }, { "yelp.be", true }, @@ -37587,11 +39689,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yelp.se", true }, { "yemektarifleri.com", true }, { "yenibilgi.net", true }, - { "yennhi.co", true }, { "yep-pro.ch", true }, { "yephy.com", true }, { "yeshu.org", true }, { "yesiammaisey.me", true }, + { "yeswecan.co.bw", true }, { "yeswehack.com", true }, { "yetanalytics.io", true }, { "yetii.net", true }, @@ -37599,44 +39701,46 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yeu.io", true }, { "yex.nz", true }, { "yex.trade", true }, + { "yeyi.site", true }, { "yfengs.moe", true }, { "ygobbs.com", true }, - { "yh35.net", true }, { "yh599.cc", true }, { "yhaupenthal.org", true }, { "yhb.io", true }, { "yhe.me", true }, + { "yhfou.com", true }, { "yhndnzj.com", true }, { "yhong.me", true }, - { "yhrd.org", true }, { "yhwj.top", false }, { "yicknam.my", true }, { "yiffy.tips", false }, { "yiffy.zone", false }, { "yigujin.cn", true }, + { "yiheng.moe", true }, { "yii2.cc", true }, { "yikeyong.com", true }, { "yimgo.fr", true }, - { "yin8888.tv", true }, { "yinfor.com", true }, { "yingatech.com", true }, { "yinglinda.love", true }, { "yinlei.org", true }, - { "yipingguo.com", true }, { "yiyuanzhong.com", true }, { "yiyueread.com", true }, { "yiz96.com", true }, { "yjsw.sh.cn", true }, { "yksityisyydensuoja.fi", true }, { "ylde.de", true }, - { "ylilauta.org", true }, { "ylinternal.com", true }, { "ymarion.de", true }, { "ymblaw.com", true }, + { "ymoah.nl", true }, { "ymtsonline.org", true }, { "ynnovasport.be", true }, + { "ynxfh.cn", true }, + { "yoast.com", true }, { "yobai-grouprec.jp", true }, { "yobai28.com", true }, + { "yobbelwobbel.de", false }, { "yobify.com", true }, { "yocchan1513.net", true }, { "yoga-alliance-teacher-training.com", true }, @@ -37647,6 +39751,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yoga-zentrum-narayani.de", true }, { "yogabhawnamission.com", true }, { "yogacentric.co.uk", true }, + { "yogahealsinc.org", true }, { "yogananda-roma.org", true }, { "yogaschoolrishikesh.com", true }, { "yoibyoin.info", true }, @@ -37655,12 +39760,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yokohama-legaloffice.jp", true }, { "yolo.jetzt", true }, { "yolobert.de", true }, - { "yoloboatrentals.com", false }, + { "yoloboatrentals.com", true }, { "yolops.net", true }, { "yombo.net", true }, + { "yon.co.il", true }, { "yongbin.org", true }, { "yoonas.com", true }, { "yooooex.com", true }, + { "yoppoy.com", true }, { "yopuedo.co", true }, { "yoramvandevelde.net", true }, { "yorcom.nl", false }, @@ -37673,28 +39780,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yoshibaworks.com", true }, { "yoshitsugu.net", true }, { "yospos.org", true }, + { "yoticonnections.com", true }, { "yotilab.com", true }, { "yotta-zetta.com", true }, { "yotubaiotona.net", true }, { "you.com.br", true }, + { "you2you.fr", true }, { "youareme.ca", true }, { "youc.ir", true }, { "youcanmakeit.at", true }, { "youcruit.com", true }, - { "youdowell.com", true }, { "youdungoofd.com", true }, { "youftp.tk", true }, { "yougee.ml", true }, + { "yougot.pw", true }, { "youhacked.me", true }, { "youhavewords.com", true }, { "youhua.ru", true }, - { "youjizz.bz", true }, { "youkaryote.com", true }, { "youkaryote.org", true }, { "youked.com", true }, { "youkok2.com", true }, { "youlovehers.com", true }, - { "youmonit.me", true }, { "youms.de", true }, { "young-sheldon.com", true }, { "youngdogs.org", true }, @@ -37705,27 +39812,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "youpark.no", true }, { "your-erotic-stories.com", true }, { "your-out.com", true }, - { "youran.me", true }, + { "youracnepro.com", true }, { "yourbonus.click", true }, { "yourciso.com", true }, + { "yourcomputer.expert", true }, { "yourcopywriter.it", true }, { "yourforex.org", true }, { "yourfriendlytech.com", true }, { "yourfuturestrategy.com.au", true }, { "yourgames.tv", true }, { "yourhair.net", true }, + { "yourmemorykeeper.co.uk", true }, { "yourneighborhub.com", true }, { "yourskin.nl", true }, + { "yourstake.org", true }, { "yourticketbooking.com", true }, { "yousei.ne.jp", true }, { "yout.com", true }, { "youth.gov", true }, + { "youthovation.org", true }, { "youtous.me", true }, { "youtsuu-raku.com", true }, { "youtube.com", true }, { "youtubedownloader.com", true }, { "youtuberis.lt", true }, - { "youwatchporn.com", true }, { "yoxall.me.uk", true }, { "yoyoost.duckdns.org", true }, { "ypart.eu", true }, @@ -37734,9 +39844,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yplanapp.com", true }, { "yqjf68.com", true }, { "yr166166.com", true }, + { "yrjanheikki.com", true }, { "ys-shop.biz", true }, - { "ysicing.net", true }, { "ysicorp.com", true }, + { "yspeo.biz", true }, { "ysun.xyz", true }, { "ysx.me.uk", true }, { "ytb.zone", true }, @@ -37747,11 +39858,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ytpak.pk", true }, { "ytreza.fr", true }, { "ytuquelees.net", true }, + { "ytx588.com", true }, { "yu.gg", false }, { "yu.vc", true }, { "yuan.ga", true }, { "yuanben.io", true }, - { "yuanbenlian.com", true }, + { "yuanjiazhao.com", true }, { "yuanjiazhao.tk", true }, { "yubi.co", true }, { "yubicloud.io", true }, @@ -37808,21 +39920,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yubikeyservices.eu", true }, { "yubiking.com", true }, { "yue.la", true }, - { "yuka.one", true }, + { "yue2.net", true }, + { "yugasun.com", true }, { "yukari.cafe", true }, + { "yukari.cloud", true }, { "yuki-nagato.com", true }, + { "yuki-portfolio.com", true }, { "yuki.xyz", true }, - { "yukimochi.com", true }, - { "yukimochi.jp", true }, { "yukonconnector.com", true }, { "yukonlip.com", true }, { "yukontec.com", true }, - { "yum0.cn", true }, { "yumeconcert.com", true }, { "yunity.org", true }, { "yunjishou.pro", true }, + { "yuntong.tw", true }, { "yunzhu.li", true }, - { "yuqi.me", true }, { "yuricarlenzoli.it", true }, { "yurikirin.me", true }, { "yurimoens.be", true }, @@ -37833,11 +39945,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yutakato.net", true }, { "yutang.vn", true }, { "yutangyun.com", true }, + { "yutaron.tokyo", true }, { "yutuo.net", true }, { "yuwei.org", true }, { "yuweiyang.xyz", true }, - { "yuxingxin.com", true }, { "yuxuan.org", true }, + { "yuyo.com", true }, { "yuyu.io", true }, { "yuzei.tk", true }, { "yveshield.com", true }, @@ -37852,6 +39965,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yya.me", true }, { "yya.men", true }, { "yyc.city", true }, + { "yyrss.com", false }, { "yyyy.xyz", true }, { "yzal.io", true }, { "yzcloud.me", true }, @@ -37859,11 +39973,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yzimroni.net", true }, { "z-konzept-nutrition.ru", true }, { "z-latko.info", true }, + { "z-to-a.com", true }, { "z-vector.com", true }, { "z.ai", true }, { "z1h.de", true }, - { "z33.ch", true }, - { "z33.co", true }, { "z4k.de", true }, { "z99944x.xyz", true }, { "za.search.yahoo.com", false }, @@ -37875,11 +39988,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zacadam.com", true }, { "zacarias.com.ar", true }, { "zacavi.com.br", true }, + { "zacchaeus.co.uk", true }, + { "zacco.site", true }, { "zach.codes", true }, { "zacharopoulos.eu", true }, { "zacharopoulos.org", false }, { "zacharydubois.me", true }, { "zacharyschneider.com", true }, + { "zacharyseguin.ca", true }, { "zachaysan.com", true }, { "zachborboa.com", true }, { "zachgibbens.org", true }, @@ -37895,12 +40011,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zahnarzt-hofer.de", true }, { "zahnarzt-kramer.ch", true }, { "zahnarzt-muenich.de", true }, - { "zaidan.de", true }, - { "zaidan.eu", true }, - { "zaidanfood.com", true }, - { "zaidanfood.eu", true }, - { "zaidanlebensmittelhandel.de", true }, { "zajazd.biz", true }, + { "zakariya.blog", true }, { "zakcutner.uk", true }, { "zakladam.cz", true }, { "zakmccrac.de", true }, @@ -37909,6 +40021,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zakspartiesandevents.com", true }, { "zalamea.ph", true }, { "zaloghaz.ro", true }, + { "zalvus.com", true }, { "zamalektoday.com", true }, { "zamocosmeticos.com.br", true }, { "zamow.co", true }, @@ -37917,8 +40030,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zanellidesigns.co.uk", true }, { "zanthra.com", true }, { "zanzabar.it", true }, - { "zapatoshechoamano.pe", true }, { "zapier.com", true }, + { "zapmaster14.com", true }, { "zappbuildapps.com", false }, { "zappos.com", true }, { "zaptan.info", false }, @@ -37940,16 +40053,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zberger.com", true }, { "zbetcheck.in", true }, { "zbrane-doplnky.cz", true }, + { "zbut.bg", true }, { "zbyga.cz", true }, { "zbyte.it", true }, { "zcarot.com", true }, { "zcarrot.com", true }, { "zcgram.com", true }, { "zcon.nl", true }, + { "zcore.org", true }, { "zcr.ca", true }, { "zdbl.de", true }, { "zdenekspacek.cz", true }, { "zdorovayasimya.com", true }, + { "zdrave-konzultace.cz", true }, + { "zdravekonzultace.cz", true }, { "zdravesteny.cz", true }, { "zdrojak.cz", true }, { "ze3kr.com", true }, @@ -37957,7 +40074,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zealworks.jp", true }, { "zebbra.ro", true }, { "zebedeescastles.co.uk", true }, - { "zebibyte.cn", true }, { "zebulon.fr", true }, { "zeds-official.com", true }, { "zeebrieshoekvanholland.nl", true }, @@ -37977,6 +40093,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zemlova.cz", true }, { "zen-diez.de", true }, { "zen-ume.com", true }, + { "zena.cx", false }, { "zenchain.com", true }, { "zenevents.ro", true }, { "zenfusion.fr", true }, @@ -37986,25 +40103,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zenk-security.com", true }, { "zenlogic.com", true }, { "zenmate.com.tr", true }, + { "zennzimie.be", true }, + { "zennzimie.com", true }, { "zenofa.co.id", true }, { "zentask.io", true }, { "zenti.cloud", true }, - { "zentiweb.nl", true }, { "zenvideocloud.com", true }, { "zephyrbk.com", true }, { "zephyrbookkeeping.com", true }, + { "zephyretcoraline.com", true }, { "zeplin.io", true }, { "zer0-day.pw", true }, { "zer0.de", false }, { "zerg.uk", true }, { "zerobounce.net", true }, { "zerofy.de", true }, - { "zerolab.org", true }, { "zeronet.io", true }, { "zeropoint.bg", true }, { "zeropush.com", true }, { "zeroseteatacado.com.br", true }, { "zerossl.com", true }, + { "zerosync.com", true }, + { "zerotoone.de", true }, + { "zerowastesavvy.com", true }, { "zertif.info", true }, { "zertitude.com", true }, { "zeryn.net", true }, @@ -38012,14 +40133,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zestylemon.co.uk", true }, { "zetamode.com", true }, { "zetorzeszow.pl", false }, - { "zetrov.pl", true }, { "zettaplan.ru", true }, { "zettlmeissl.de", true }, { "zevelev.net", true }, { "zfast.com.br", true }, { "zfg.li", true }, { "zfly.me", true }, - { "zfo.gg", true }, { "zfree.co.nz", true }, { "zg-dyw.net", true }, { "zgrep.org", true }, @@ -38038,17 +40157,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zhcexo.com", true }, { "zhen-chen.com", true }, { "zhengjie.com", true }, + { "zhenyan.org", true }, + { "zhi.ci", true }, { "zhiku8.com", true }, { "zhima.io", true }, { "zhitanska.com", true }, { "zhiwei.me", true }, { "zhl123.com", true }, + { "zhongzicili.ws", true }, { "zhoushuo.me", true }, { "zhoutiancai.cn", true }, { "zhovner.com", true }, { "zhthings.com", true }, { "zhuihoude.com", true }, - { "zi.is", true }, { "ziegler-family.com", true }, { "ziegler-heizung-frankfurt.de", true }, { "zielonakarta.com", true }, @@ -38059,7 +40180,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zigottos.fr", true }, { "zigzagmart.com", true }, { "zihao.me", false }, - { "zii.bz", true }, { "zijung.me", true }, { "zikinf.com", true }, { "ziktime.com", true }, @@ -38076,11 +40196,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zinniamay.com", true }, { "zinoui.com", true }, { "ziondrive.com.br", true }, + { "zionnationalpark.net", true }, + { "zionsvillelocksmiths.com", true }, { "zip.ch", true }, { "zipkey.de", true }, { "ziptie.com", true }, { "zircode.com", true }, { "ziroh.be", true }, + { "zirtek.ie", true }, { "zirtual.com", true }, { "zitrone44.de", true }, { "zitseng.com", true }, @@ -38089,8 +40212,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zivmergers.com", true }, { "zivyruzenec.cz", false }, { "zixiao.wang", true }, + { "zjv.me", true }, { "zk.gd", true }, { "zk9.nl", true }, + { "zkontrolujsiauto.cz", true }, { "zkrypt.cc", true }, { "zkzone.net", true }, { "zlatakus.cz", true }, @@ -38113,6 +40238,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zmartagroup.se", true }, { "znation.nl", true }, { "zny.pw", true }, + { "zoarcampsite.uk", true }, { "zobraz.cz", true }, { "zobworks.com", true }, { "zoccarato.ovh", true }, @@ -38128,6 +40254,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zollihood.ch", true }, { "zolokar.xyz", true }, { "zomerschoen.nl", true }, + { "zonadigital.co", true }, { "zone-produkte.de", false }, { "zone39.com", true }, { "zonecb.com", true }, @@ -38139,12 +40266,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zonglovani.info", true }, { "zonky.cz", true }, { "zonkysetkani.cz", true }, - { "zoo.city", false }, { "zooish.net", true }, { "zook.systems", true }, { "zoola.io", true }, { "zoolaboo.de", true }, { "zoom.earth", true }, + { "zoomcar.pro", true }, { "zoomek.com", true }, { "zoomseoservices.com", false }, { "zooom.azurewebsites.net", true }, @@ -38154,7 +40281,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zootime.net", true }, { "zootime.org", true }, { "zoowiki.us", true }, - { "zooxdata.com", true }, { "zopy.com.br", true }, { "zopyx.com", true }, { "zor.com", true }, @@ -38162,13 +40288,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zorgclustertool.nl", true }, { "zorig.ch", true }, { "zorium.org", true }, - { "zorki.nl", true }, { "zorntt.fr", true }, { "zotero.org", true }, { "zouk.info", true }, - { "zouyaoji.top", true }, + { "zozo.com", true }, { "zozzle.co.uk", true }, - { "zqwqz.com", true }, { "zravypapir.cz", true }, { "zrhdwz.cn", true }, { "zrniecka-pre-sny.sk", true }, @@ -38187,7 +40311,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zuan-in.net", true }, { "zubel.it", false }, { "zubora.co", true }, - { "zubro.net", true }, { "zuefle.net", true }, { "zug-anwalt.de", true }, { "zug.fr", true }, @@ -38198,6 +40321,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zula.africa", true }, { "zulu.ro", true }, { "zum-baur.de", true }, + { "zumazar.ru", true }, { "zund-app.com", true }, { "zundapp529.nl", true }, { "zundappachterhoek.nl", true }, @@ -38240,5 +40364,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zyul.ddns.net", true }, { "zyzardx.com", true }, { "zzekj.net", true }, + { "zzpd.nl", false }, { "zzsec.org", true }, }; diff --git a/security/manager/ssl/tests/unit/test_weak_crypto.js b/security/manager/ssl/tests/unit/test_weak_crypto.js index effedf8e3..3367e9067 100644 --- a/security/manager/ssl/tests/unit/test_weak_crypto.js +++ b/security/manager/ssl/tests/unit/test_weak_crypto.js @@ -77,7 +77,6 @@ function startServer(cert, rc4only) { onStopListening: function() {} }; - tlsServer.setSessionCache(false); tlsServer.setSessionTickets(false); tlsServer.setRequestClientCertificate(Ci.nsITLSServerSocket.REQUEST_NEVER); if (rc4only) { diff --git a/security/nss/TAG-INFO b/security/nss/TAG-INFO index 1d96321b3..a004fa449 100644 --- a/security/nss/TAG-INFO +++ b/security/nss/TAG-INFO @@ -1 +1 @@ -NSS_3_36_4_RTM +NSS_3_38_RTM diff --git a/security/nss/automation/abi-check/expected-report-libnssutil3.so.txt b/security/nss/automation/abi-check/expected-report-libnssutil3.so.txt index e69de29bb..efc7d6d67 100644 --- a/security/nss/automation/abi-check/expected-report-libnssutil3.so.txt +++ b/security/nss/automation/abi-check/expected-report-libnssutil3.so.txt @@ -0,0 +1,4 @@ + +1 Added function: + + 'function SECStatus SECITEM_MakeItem(PLArenaPool*, SECItem*, unsigned char*, unsigned int)' {SECITEM_MakeItem@@NSSUTIL_3.38} diff --git a/security/nss/automation/abi-check/expected-report-libssl3.so.txt b/security/nss/automation/abi-check/expected-report-libssl3.so.txt index ad818d0aa..e69de29bb 100644 --- a/security/nss/automation/abi-check/expected-report-libssl3.so.txt +++ b/security/nss/automation/abi-check/expected-report-libssl3.so.txt @@ -1,28 +0,0 @@ - -1 function with some indirect sub-type change: - - [C]'function SECStatus SSL_GetChannelInfo(PRFileDesc*, SSLChannelInfo*, PRUintn)' at sslinfo.c:12:1 has some indirect sub-type changes: - parameter 2 of type 'SSLChannelInfo*' has sub-type changes: - in pointed to type 'typedef SSLChannelInfo' at sslt.h:318:1: - underlying type 'struct SSLChannelInfoStr' at sslt.h:251:1 changed: - type size hasn't changed - 1 data member change: - type of 'SSLSignatureScheme SSLChannelInfoStr::signatureScheme' changed: - underlying type 'enum __anonymous_enum__' at sslt.h:115:1 changed: - type size hasn't changed - 3 enumerator deletions: - '__anonymous_enum__::ssl_sig_rsa_pss_sha256' value '2052' - '__anonymous_enum__::ssl_sig_rsa_pss_sha384' value '2053' - '__anonymous_enum__::ssl_sig_rsa_pss_sha512' value '2054' - - 6 enumerator insertions: - '__anonymous_enum__::ssl_sig_rsa_pss_rsae_sha256' value '2052' - '__anonymous_enum__::ssl_sig_rsa_pss_rsae_sha384' value '2053' - '__anonymous_enum__::ssl_sig_rsa_pss_rsae_sha512' value '2054' - '__anonymous_enum__::ssl_sig_rsa_pss_pss_sha256' value '2057' - '__anonymous_enum__::ssl_sig_rsa_pss_pss_sha384' value '2058' - '__anonymous_enum__::ssl_sig_rsa_pss_pss_sha512' value '2059' - - - - diff --git a/security/nss/automation/abi-check/previous-nss-release b/security/nss/automation/abi-check/previous-nss-release index c213ca3f8..c52061e7e 100644 --- a/security/nss/automation/abi-check/previous-nss-release +++ b/security/nss/automation/abi-check/previous-nss-release @@ -1 +1 @@ -NSS_3_35_BRANCH +NSS_3_37_BRANCH diff --git a/security/nss/automation/taskcluster/docker-hacl/Dockerfile b/security/nss/automation/taskcluster/docker-hacl/Dockerfile index 63f9a24e2..50f2be239 100644 --- a/security/nss/automation/taskcluster/docker-hacl/Dockerfile +++ b/security/nss/automation/taskcluster/docker-hacl/Dockerfile @@ -5,11 +5,11 @@ MAINTAINER Franziskus Kiefer <franziskuskiefer@gmail.com> # the original F* formula with Daniel Fabian # Pinned versions of HACL* (F* and KreMLin are pinned as submodules) -ENV haclrepo https://github.com/franziskuskiefer/hacl-star.git +ENV haclrepo https://github.com/mitls/hacl-star.git # Define versions of dependencies -ENV opamv 4.04.2 -ENV haclversion 668d6cf274c33bbe2e951e3a84b73f2b6442a51f +ENV opamv 4.05.0 +ENV haclversion 1da331f9ef30e13269e45ae73bbe4a4bca679ae6 # Install required packages and set versions ADD setup.sh /tmp/setup.sh diff --git a/security/nss/automation/taskcluster/docker-hacl/setup-user.sh b/security/nss/automation/taskcluster/docker-hacl/setup-user.sh index b8accaf58..e2c0b857b 100644 --- a/security/nss/automation/taskcluster/docker-hacl/setup-user.sh +++ b/security/nss/automation/taskcluster/docker-hacl/setup-user.sh @@ -16,7 +16,6 @@ git -C hacl-star checkout ${haclversion} # This caches the extracted c code (pins the HACL* version). All we need to do # on CI now is comparing the code in this docker image with the one in NSS. opam config exec -- make -C hacl-star prepare -j$(nproc) -make -C hacl-star verify-nss -j$(nproc) make -C hacl-star -f Makefile.build snapshots/nss -j$(nproc) KOPTS="-funroll-loops 5" make -C hacl-star/code/curve25519 test -j$(nproc) make -C hacl-star/code/salsa-family test -j$(nproc) diff --git a/security/nss/automation/taskcluster/docker-saw/Dockerfile b/security/nss/automation/taskcluster/docker-saw/Dockerfile index a481ba048..d67787010 100644 --- a/security/nss/automation/taskcluster/docker-saw/Dockerfile +++ b/security/nss/automation/taskcluster/docker-saw/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:latest +FROM ubuntu:16.04 MAINTAINER Tim Taubert <ttaubert@mozilla.com> RUN useradd -d /home/worker -s /bin/bash -m worker diff --git a/security/nss/automation/taskcluster/docker/Dockerfile b/security/nss/automation/taskcluster/docker/Dockerfile index 8a2256d12..b3c2516ba 100644 --- a/security/nss/automation/taskcluster/docker/Dockerfile +++ b/security/nss/automation/taskcluster/docker/Dockerfile @@ -12,9 +12,6 @@ RUN chmod +x /home/worker/bin/* ADD setup.sh /tmp/setup.sh RUN bash /tmp/setup.sh -# Change user. -USER worker - # Env variables. ENV HOME /home/worker ENV SHELL /bin/bash diff --git a/security/nss/automation/taskcluster/graph/src/extend.js b/security/nss/automation/taskcluster/graph/src/extend.js index ee9ac9b74..5305325c5 100644 --- a/security/nss/automation/taskcluster/graph/src/extend.js +++ b/security/nss/automation/taskcluster/graph/src/extend.js @@ -995,13 +995,13 @@ async function scheduleTools() { })); queue.scheduleTask(merge(base, { - symbol: "scan-build-5.0", - name: "scan-build-5.0", - image: LINUX_IMAGE, + symbol: "scan-build", + name: "scan-build", + image: FUZZ_IMAGE, env: { USE_64: "1", - CC: "clang-5.0", - CCC: "clang++-5.0", + CC: "clang", + CCC: "clang++", }, artifacts: { public: { @@ -1092,5 +1092,17 @@ async function scheduleTools() { ] })); + queue.scheduleTask(merge(base, { + symbol: "Coverage", + name: "Coverage", + image: FUZZ_IMAGE, + features: ["allowPtrace"], + command: [ + "/bin/bash", + "-c", + "bin/checkout.sh && nss/automation/taskcluster/scripts/gen_coverage_report.sh" + ] + })); + return queue.submit(); } diff --git a/security/nss/automation/taskcluster/graph/src/try_syntax.js b/security/nss/automation/taskcluster/graph/src/try_syntax.js index 1c06dde13..214793bd5 100644 --- a/security/nss/automation/taskcluster/graph/src/try_syntax.js +++ b/security/nss/automation/taskcluster/graph/src/try_syntax.js @@ -51,7 +51,7 @@ function parseOptions(opts) { } // Parse tools. - let allTools = ["clang-format", "scan-build", "hacl", "saw", "abi"]; + let allTools = ["clang-format", "scan-build", "hacl", "saw", "abi", "coverage"]; let tools = intersect(opts.tools.split(/\s*,\s*/), allTools); // If the given value is "all" run all tools. diff --git a/security/nss/automation/taskcluster/scripts/gen_coverage_report.sh b/security/nss/automation/taskcluster/scripts/gen_coverage_report.sh new file mode 100644 index 000000000..3907c72e8 --- /dev/null +++ b/security/nss/automation/taskcluster/scripts/gen_coverage_report.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +source $(dirname "$0")/tools.sh + +# Clone NSPR. +hg_clone https://hg.mozilla.org/projects/nspr ./nspr default + +out=/home/worker/artifacts +mkdir -p $out + +# Generate coverage report. +cd nss && ./mach coverage --outdir=$out ssl_gtests diff --git a/security/nss/automation/taskcluster/scripts/run_hacl.sh b/security/nss/automation/taskcluster/scripts/run_hacl.sh index 281075eef..6cbda49b4 100644 --- a/security/nss/automation/taskcluster/scripts/run_hacl.sh +++ b/security/nss/automation/taskcluster/scripts/run_hacl.sh @@ -12,8 +12,8 @@ set -e -x -v # The extracted C code from HACL* is already generated and the HACL* tests were # successfully executed. -# Verify Poly1305 (doesn't work in docker image build) -make verify -C ~/hacl-star/code/poly1305 -j$(nproc) +# Verify HACL*. Taskcluster fails when we do this in the image build. +make -C hacl-star verify-nss -j$(nproc) # Add license header to specs spec_files=($(find ~/hacl-star/specs -type f -name '*.fst')) diff --git a/security/nss/automation/taskcluster/scripts/tools.sh b/security/nss/automation/taskcluster/scripts/tools.sh index 46d567e3a..534cb32ce 100644 --- a/security/nss/automation/taskcluster/scripts/tools.sh +++ b/security/nss/automation/taskcluster/scripts/tools.sh @@ -3,11 +3,16 @@ set -v -e -x if [[ $(id -u) -eq 0 ]]; then + # Stupid Docker. It works without sometimes... But not always. + echo "127.0.0.1 localhost.localdomain" >> /etc/hosts + # Drop privileges by re-running this script. # Note: this mangles arguments, better to avoid running scripts as root. exec su worker -c "$0 $*" fi +export PATH="${PATH}:/home/worker/.cargo/bin/:/usr/lib/go-1.6/bin" + # Usage: hg_clone repo dir [revision=@] hg_clone() { repo=$1 diff --git a/security/nss/cmd/bltest/blapitest.c b/security/nss/cmd/bltest/blapitest.c index ca3d6f314..ef8fdd802 100644 --- a/security/nss/cmd/bltest/blapitest.c +++ b/security/nss/cmd/bltest/blapitest.c @@ -3724,7 +3724,7 @@ main(int argc, char **argv) /* test the RSA_PopulatePrivateKey function */ if (bltest.commands[cmd_RSAPopulate].activated) { unsigned int keySize = 1024; - unsigned long exponent = 65537; + unsigned long keyExponent = 65537; int rounds = 1; int ret = -1; @@ -3735,12 +3735,12 @@ main(int argc, char **argv) rounds = PORT_Atoi(bltest.options[opt_Rounds].arg); } if (bltest.options[opt_Exponent].activated) { - exponent = PORT_Atoi(bltest.options[opt_Exponent].arg); + keyExponent = PORT_Atoi(bltest.options[opt_Exponent].arg); } for (i = 0; i < rounds; i++) { printf("Running RSA Populate test round %d\n", i); - ret = doRSAPopulateTest(keySize, exponent); + ret = doRSAPopulateTest(keySize, keyExponent); if (ret != 0) { break; } diff --git a/security/nss/cmd/certutil/certutil.c b/security/nss/cmd/certutil/certutil.c index 20722ae78..dbb93c922 100644 --- a/security/nss/cmd/certutil/certutil.c +++ b/security/nss/cmd/certutil/certutil.c @@ -36,9 +36,11 @@ #include "certdb.h" #include "nss.h" #include "certutil.h" +#include "basicutil.h" +#include "ssl.h" #define MIN_KEY_BITS 512 -/* MAX_KEY_BITS should agree with MAX_RSA_MODULUS in freebl */ +/* MAX_KEY_BITS should agree with RSA_MAX_MODULUS_BITS in freebl */ #define MAX_KEY_BITS 8192 #define DEFAULT_KEY_BITS 2048 @@ -447,7 +449,8 @@ ChangeTrustAttributes(CERTCertDBHandle *handle, PK11SlotInfo *slot, } static SECStatus -DumpChain(CERTCertDBHandle *handle, char *name, PRBool ascii) +DumpChain(CERTCertDBHandle *handle, char *name, PRBool ascii, + PRBool simpleSelfSigned) { CERTCertificate *the_cert; CERTCertificateList *chain; @@ -458,6 +461,14 @@ DumpChain(CERTCertDBHandle *handle, char *name, PRBool ascii) SECU_PrintError(progName, "Could not find: %s\n", name); return SECFailure; } + if (simpleSelfSigned && + SECEqual == SECITEM_CompareItem(&the_cert->derIssuer, + &the_cert->derSubject)) { + printf("\"%s\" [%s]\n\n", the_cert->nickname, the_cert->subjectName); + CERT_DestroyCertificate(the_cert); + return SECSuccess; + } + chain = CERT_CertChainFromCert(the_cert, 0, PR_TRUE); CERT_DestroyCertificate(the_cert); if (!chain) { @@ -782,17 +793,17 @@ ValidateCert(CERTCertDBHandle *handle, char *name, char *date, fprintf(stdout, "%s: certificate is valid\n", progName); GEN_BREAK(SECSuccess) } else { - char *name; + char *nick; CERTVerifyLogNode *node; node = log->head; while (node) { if (node->cert->nickname != NULL) { - name = node->cert->nickname; + nick = node->cert->nickname; } else { - name = node->cert->subjectName; + nick = node->cert->subjectName; } - fprintf(stderr, "%s : %s\n", name, + fprintf(stderr, "%s : %s\n", nick, SECU_Strerror(node->error)); CERT_DestroyCertificate(node->cert); node = node->next; @@ -845,7 +856,7 @@ SECItemToHex(const SECItem *item, char *dst) } static const char *const keyTypeName[] = { - "null", "rsa", "dsa", "fortezza", "dh", "kea", "ec" + "null", "rsa", "dsa", "fortezza", "dh", "kea", "ec", "rsaPss" }; #define MAX_CKA_ID_BIN_LEN 20 @@ -999,7 +1010,7 @@ DeleteKey(char *nickname, secuPWData *pwdata) slot = PK11_GetInternalKeySlot(); if (PK11_NeedLogin(slot)) { - SECStatus rv = PK11_Authenticate(slot, PR_TRUE, pwdata); + rv = PK11_Authenticate(slot, PR_TRUE, pwdata); if (rv != SECSuccess) { SECU_PrintError(progName, "could not authenticate to token %s.", PK11_GetTokenName(slot)); @@ -1066,7 +1077,7 @@ PrintBuildFlags() } static void -PrintSyntax(char *progName) +PrintSyntax() { #define FPS fprintf(stderr, FPS "Type %s -H for more detailed descriptions\n", progName); @@ -1115,7 +1126,9 @@ PrintSyntax(char *progName) FPS "\t%s --build-flags\n", progName); FPS "\t%s -M -n cert-name -t trustargs [-d certdir] [-P dbprefix]\n", progName); - FPS "\t%s -O -n cert-name [-X] [-d certdir] [-a] [-P dbprefix]\n", progName); + FPS "\t%s -O -n cert-name [-X] [-d certdir] [-a] [-P dbprefix]\n" + "\t\t [--simple-self-signed]\n", + progName); FPS "\t%s -R -s subj -o cert-request-file [-d certdir] [-P dbprefix] [-p phone] [-a]\n" "\t\t [-7 emailAddrs] [-k key-type-or-id] [-h token-name] [-f pwfile]\n" "\t\t [-g key-size] [-Z hashAlg]\n", @@ -1542,6 +1555,8 @@ luO(enum usage_level ul, const char *command) " -P dbprefix"); FPS "%-20s force the database to open R/W\n", " -X"); + FPS "%-20s don't search for a chain if issuer name equals subject name\n", + " --simple-self-signed"); FPS "\n"); } @@ -1560,7 +1575,7 @@ luR(enum usage_level ul, const char *command) " -o output-req"); FPS "%-20s Type of key pair to generate (\"dsa\", \"ec\", \"rsa\" (default))\n", " -k key-type-or-id"); - FPS "%-20s or nickname of the cert key to use \n", + FPS "%-20s or nickname of the cert key to use, or key id obtained using -K\n", ""); FPS "%-20s Name of token in which to generate key (default is internal)\n", " -h token-name"); @@ -1838,7 +1853,7 @@ luBuildFlags(enum usage_level ul, const char *command) } static void -LongUsage(char *progName, enum usage_level ul, const char *command) +LongUsage(enum usage_level ul, const char *command) { luA(ul, command); luB(ul, command); @@ -1866,14 +1881,14 @@ LongUsage(char *progName, enum usage_level ul, const char *command) } static void -Usage(char *progName) +Usage() { PR_fprintf(PR_STDERR, "%s - Utility to manipulate NSS certificate databases\n\n" "Usage: %s <command> -d <database-directory> <options>\n\n" "Valid commands:\n", progName, progName); - LongUsage(progName, usage_selected, NULL); + LongUsage(usage_selected, NULL); PR_fprintf(PR_STDERR, "\n" "%s -H <command> : Print available options for the given command\n" "%s -H : Print complete help output of all commands and options\n" @@ -2269,10 +2284,10 @@ flagArray opFlagsArray[] = { NAME_SIZE(verify_recover), CKF_VERIFY_RECOVER }, { NAME_SIZE(wrap), CKF_WRAP }, { NAME_SIZE(unwrap), CKF_UNWRAP }, - { NAME_SIZE(derive), CKF_DERIVE }, + { NAME_SIZE(derive), CKF_DERIVE } }; -int opFlagsCount = sizeof(opFlagsArray) / sizeof(flagArray); +int opFlagsCount = PR_ARRAY_SIZE(opFlagsArray); flagArray attrFlagsArray[] = { @@ -2286,14 +2301,13 @@ flagArray attrFlagsArray[] = { NAME_SIZE(insensitive), PK11_ATTR_INSENSITIVE }, { NAME_SIZE(extractable), PK11_ATTR_EXTRACTABLE }, { NAME_SIZE(unextractable), PK11_ATTR_UNEXTRACTABLE } - }; -int attrFlagsCount = sizeof(attrFlagsArray) / sizeof(flagArray); +int attrFlagsCount = PR_ARRAY_SIZE(attrFlagsArray); #define MAX_STRING 30 CK_ULONG -GetFlags(char *flagsString, flagArray *flagArray, int count) +GetFlags(char *flagsString, flagArray *flags, int count) { CK_ULONG flagsValue = strtol(flagsString, NULL, 0); int i; @@ -2303,10 +2317,10 @@ GetFlags(char *flagsString, flagArray *flagArray, int count) } while (*flagsString) { for (i = 0; i < count; i++) { - if (strncmp(flagsString, flagArray[i].name, flagArray[i].nameSize) == + if (strncmp(flagsString, flags[i].name, flags[i].nameSize) == 0) { - flagsValue |= flagArray[i].value; - flagsString += flagArray[i].nameSize; + flagsValue |= flags[i].value; + flagsString += flags[i].nameSize; if (*flagsString != 0) { flagsString++; } @@ -2499,6 +2513,7 @@ enum certutilOpts { opt_NewNickname, opt_Pss, opt_PssSign, + opt_SimpleSelfSigned, opt_Help }; @@ -2623,6 +2638,8 @@ static const secuCommandFlag options_init[] = "pss" }, { /* opt_PssSign */ 0, PR_FALSE, 0, PR_FALSE, "pss-sign" }, + { /* opt_SimpleSelfSigned */ 0, PR_FALSE, 0, PR_FALSE, + "simple-self-signed" }, }; #define NUM_OPTIONS ((sizeof options_init) / (sizeof options_init[0])) @@ -2691,14 +2708,13 @@ certutil_main(int argc, char **argv, PRBool initialize) rv = SECU_ParseCommandLine(argc, argv, progName, &certutil); if (rv != SECSuccess) - Usage(progName); + Usage(); if (certutil.commands[cmd_PrintSyntax].activated) { - PrintSyntax(progName); + PrintSyntax(); } if (certutil.commands[cmd_PrintHelp].activated) { - int i; char buf[2]; const char *command = NULL; for (i = 0; i < max_cmd; i++) { @@ -2715,7 +2731,7 @@ certutil_main(int argc, char **argv, PRBool initialize) break; } } - LongUsage(progName, (command ? usage_selected : usage_all), command); + LongUsage((command ? usage_selected : usage_all), command); exit(1); } @@ -2823,7 +2839,7 @@ certutil_main(int argc, char **argv, PRBool initialize) if (certutil.options[opt_DBPrefix].arg) { certPrefix = certutil.options[opt_DBPrefix].arg; } else { - Usage(progName); + Usage(); } } @@ -2832,7 +2848,7 @@ certutil_main(int argc, char **argv, PRBool initialize) if (certutil.options[opt_SourcePrefix].arg) { srcCertPrefix = certutil.options[opt_SourcePrefix].arg; } else { - Usage(progName); + Usage(); } } @@ -2916,7 +2932,7 @@ certutil_main(int argc, char **argv, PRBool initialize) return 255; } if (commandsEntered == 0) { - Usage(progName); + Usage(); } if (certutil.commands[cmd_ListCerts].activated || @@ -3124,6 +3140,8 @@ certutil_main(int argc, char **argv, PRBool initialize) } initialized = PR_TRUE; SECU_RegisterDynamicOids(); + /* Ensure the SSL error code table has been registered. Bug 1460284. */ + SSL_OptionSetDefault(-1, 0); } certHandle = CERT_GetDefaultCertDB(); @@ -3350,7 +3368,8 @@ certutil_main(int argc, char **argv, PRBool initialize) } if (certutil.commands[cmd_DumpChain].activated) { rv = DumpChain(certHandle, name, - certutil.options[opt_ASCIIForIO].activated); + certutil.options[opt_ASCIIForIO].activated, + certutil.options[opt_SimpleSelfSigned].activated); goto shutdown; } /* XXX needs work */ @@ -3444,37 +3463,80 @@ certutil_main(int argc, char **argv, PRBool initialize) keycert = CERT_FindCertByNicknameOrEmailAddr(certHandle, keysource); if (!keycert) { keycert = PK11_FindCertFromNickname(keysource, NULL); - if (!keycert) { - SECU_PrintError(progName, - "%s is neither a key-type nor a nickname", keysource); + } + + if (keycert) { + privkey = PK11_FindKeyByDERCert(slot, keycert, &pwdata); + } else { + PLArenaPool *arena = NULL; + SECItem keyidItem = { 0 }; + char *keysourcePtr = keysource; + /* Interpret keysource as CKA_ID */ + if (PK11_NeedLogin(slot)) { + rv = PK11_Authenticate(slot, PR_TRUE, &pwdata); + if (rv != SECSuccess) { + SECU_PrintError(progName, "could not authenticate to token %s.", + PK11_GetTokenName(slot)); + return SECFailure; + } + } + if (0 == PL_strncasecmp("0x", keysource, 2)) { + keysourcePtr = keysource + 2; // skip leading "0x" + } + arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE); + if (!arena) { + SECU_PrintError(progName, "unable to allocate arena"); return SECFailure; } + if (SECU_HexString2SECItem(arena, &keyidItem, keysourcePtr)) { + privkey = PK11_FindKeyByKeyID(slot, &keyidItem, &pwdata); + } + PORT_FreeArena(arena, PR_FALSE); + } + + if (!privkey) { + SECU_PrintError( + progName, + "%s is neither a key-type nor a nickname nor a key-id", keysource); + return SECFailure; } - privkey = PK11_FindKeyByDERCert(slot, keycert, &pwdata); - if (privkey) - pubkey = CERT_ExtractPublicKey(keycert); + + pubkey = SECKEY_ConvertToPublicKey(privkey); if (!pubkey) { SECU_PrintError(progName, "Could not get keys from cert %s", keysource); + if (keycert) { + CERT_DestroyCertificate(keycert); + } rv = SECFailure; - CERT_DestroyCertificate(keycert); goto shutdown; } keytype = privkey->keyType; + /* On CertReq for renewal if no subject has been * specified obtain it from the certificate. */ if (certutil.commands[cmd_CertReq].activated && !subject) { - subject = CERT_AsciiToName(keycert->subjectName); - if (!subject) { - SECU_PrintError(progName, - "Could not get subject from certificate %s", keysource); - CERT_DestroyCertificate(keycert); + if (keycert) { + subject = CERT_AsciiToName(keycert->subjectName); + if (!subject) { + SECU_PrintError( + progName, + "Could not get subject from certificate %s", + keysource); + CERT_DestroyCertificate(keycert); + rv = SECFailure; + goto shutdown; + } + } else { + SECU_PrintError(progName, "Subject name not provided"); rv = SECFailure; goto shutdown; } } - CERT_DestroyCertificate(keycert); + if (keycert) { + CERT_DestroyCertificate(keycert); + } } else { privkey = CERTUTIL_GeneratePrivateKey(keytype, slot, keysize, @@ -3537,6 +3599,14 @@ certutil_main(int argc, char **argv, PRBool initialize) } } + if (certutil.options[opt_SimpleSelfSigned].activated && + !certutil.commands[cmd_DumpChain].activated) { + PR_fprintf(PR_STDERR, + "%s -%c: --simple-self-signed only works with -O.\n", + progName, commandToRun); + return 255; + } + /* If we need a list of extensions convert the flags into list format */ if (certutil.commands[cmd_CertReq].activated || certutil.commands[cmd_CreateAndAddCert].activated || diff --git a/security/nss/cmd/crlutil/crlutil.c b/security/nss/cmd/crlutil/crlutil.c index c008ecc01..c5527fc93 100644 --- a/security/nss/cmd/crlutil/crlutil.c +++ b/security/nss/cmd/crlutil/crlutil.c @@ -770,7 +770,7 @@ loser: } static void -Usage(char *progName) +Usage() { fprintf(stderr, "Usage: %s -L [-n nickname] [-d keydir] [-P dbprefix] [-t crlType]\n" @@ -908,7 +908,7 @@ main(int argc, char **argv) while ((status = PL_GetNextOpt(optstate)) == PL_OPT_OK) { switch (optstate->option) { case '?': - Usage(progName); + Usage(); break; case 'T': @@ -1038,17 +1038,17 @@ main(int argc, char **argv) } if (deleteCRL && !nickName) - Usage(progName); + Usage(); if (importCRL && !inFile) - Usage(progName); + Usage(); if (showFileCRL && !inFile) - Usage(progName); + Usage(); if ((generateCRL && !nickName) || (modifyCRL && !inFile && !nickName)) - Usage(progName); + Usage(); if (!(listCRL || deleteCRL || importCRL || showFileCRL || generateCRL || modifyCRL || test || erase)) - Usage(progName); + Usage(); if (listCRL || showFileCRL) { readonly = PR_TRUE; diff --git a/security/nss/cmd/crmftest/testcrmf.c b/security/nss/cmd/crmftest/testcrmf.c index cbc680b08..1c1359b1b 100644 --- a/security/nss/cmd/crmftest/testcrmf.c +++ b/security/nss/cmd/crmftest/testcrmf.c @@ -577,7 +577,6 @@ Decode(void) printf("WARNING: The DER contained %d messages.\n", numMsgs); } for (i = 0; i < numMsgs; i++) { - SECStatus rv; printf("crmftest: Processing cert request %d\n", i); certReqMsg = CRMF_CertReqMessagesGetCertReqMsgAtIndex(certReqMsgs, i); if (certReqMsg == NULL) { diff --git a/security/nss/cmd/dbtest/dbtest.c b/security/nss/cmd/dbtest/dbtest.c index 9a6a034a6..11713c23f 100644 --- a/security/nss/cmd/dbtest/dbtest.c +++ b/security/nss/cmd/dbtest/dbtest.c @@ -58,7 +58,7 @@ getPassword(PK11SlotInfo *slot, PRBool retry, void *arg) } static void -Usage(const char *progName) +Usage() { printf("Usage: %s [-r] [-f] [-i] [-d dbdir ] \n", progName); @@ -96,7 +96,7 @@ main(int argc, char **argv) switch (optstate->option) { case 'h': default: - Usage(progName); + Usage(); break; case 'r': @@ -122,7 +122,7 @@ main(int argc, char **argv) } PL_DestroyOptState(optstate); if (optstatus == PL_OPT_BAD) - Usage(progName); + Usage(); if (dbDir) { char *tmp = dbDir; @@ -181,7 +181,6 @@ main(int argc, char **argv) ret = SUCCESS; if (doInitTest) { PK11SlotInfo *slot = PK11_GetInternalKeySlot(); - SECStatus rv; int passwordSuccess = 0; int type = CKM_DES3_CBC; SECItem keyid = { 0, NULL, 0 }; diff --git a/security/nss/cmd/httpserv/httpserv.c b/security/nss/cmd/httpserv/httpserv.c index 7cf28c65a..71e2ab88d 100644 --- a/security/nss/cmd/httpserv/httpserv.c +++ b/security/nss/cmd/httpserv/httpserv.c @@ -682,6 +682,7 @@ handle_connection( } if (arena) { PORT_FreeArena(arena, PR_FALSE); + arena = NULL; } if (!request || !request->tbsRequest || !request->tbsRequest->requestList || @@ -753,11 +754,11 @@ handle_connection( { PRTime now = PR_Now(); - PLArenaPool *arena = NULL; CERTOCSPSingleResponse *sr; CERTOCSPSingleResponse **singleResponses; SECItem *ocspResponse; + PORT_Assert(!arena); arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE); if (unknown) { @@ -787,8 +788,8 @@ handle_connection( } else { PR_Write(ssl_sock, outOcspHeader, strlen(outOcspHeader)); PR_Write(ssl_sock, ocspResponse->data, ocspResponse->len); - PORT_FreeArena(arena, PR_FALSE); } + PORT_FreeArena(arena, PR_FALSE); } CERT_DestroyOCSPRequest(request); break; @@ -1357,7 +1358,6 @@ main(int argc, char **argv) caRevoIter = &caRevoInfos->link; do { PRFileDesc *inFile; - int rv = SECFailure; SECItem crlDER; crlDER.data = NULL; @@ -1413,11 +1413,9 @@ main(int argc, char **argv) if (provideOcsp) { if (caRevoInfos) { - PRCList *caRevoIter; - caRevoIter = &caRevoInfos->link; do { - caRevoInfo *revoInfo = (caRevoInfo *)caRevoIter; + revoInfo = (caRevoInfo *)caRevoIter; if (revoInfo->nickname) PORT_Free(revoInfo->nickname); if (revoInfo->crlFilename) diff --git a/security/nss/cmd/lib/secutil.c b/security/nss/cmd/lib/secutil.c index 2b33f8963..6be2df432 100644 --- a/security/nss/cmd/lib/secutil.c +++ b/security/nss/cmd/lib/secutil.c @@ -1528,9 +1528,9 @@ SECU_PrintDumpDerIssuerAndSerial(FILE *out, SECItem *der, char *m, unsigned int i; for (i = 0; i < c->serialNumber.len; ++i) { unsigned char *chardata = (unsigned char *)(c->serialNumber.data); - unsigned char c = *(chardata + i); + unsigned char ch = *(chardata + i); - fprintf(out, "\\x%02x", c); + fprintf(out, "\\x%02x", ch); } fprintf(out, "\" }\n"); } @@ -3137,7 +3137,7 @@ typedef enum { static int secu_PrintSignedDataSigOpt(FILE *out, SECItem *der, const char *m, int level, SECU_PPFunc inner, - SignatureOptionType withSignature) + SignatureOptionType signatureOption) { PLArenaPool *arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE); CERTSignedData *sd; @@ -3164,7 +3164,7 @@ secu_PrintSignedDataSigOpt(FILE *out, SECItem *der, const char *m, } rv = (*inner)(out, &sd->data, "Data", level + 1); - if (withSignature) { + if (signatureOption == withSignature) { SECU_PrintAlgorithmID(out, &sd->signatureAlgorithm, "Signature Algorithm", level + 1); DER_ConvertBitString(&sd->signature); diff --git a/security/nss/cmd/listsuites/listsuites.c b/security/nss/cmd/listsuites/listsuites.c index 8eb2c3553..b49f2d8cf 100644 --- a/security/nss/cmd/listsuites/listsuites.c +++ b/security/nss/cmd/listsuites/listsuites.c @@ -64,9 +64,7 @@ main(int argc, char **argv) /* disable all the SSL3 cipher suites */ for (i = 0; i < SSL_NumImplementedCiphers; i++) { PRUint16 suite = cipherSuites[i]; - SECStatus rv; PRBool enabled; - PRErrorCode err; SSLCipherSuiteInfo info; rv = SSL_CipherPrefGetDefault(suite, &enabled); diff --git a/security/nss/cmd/lowhashtest/lowhashtest.c b/security/nss/cmd/lowhashtest/lowhashtest.c index 29d6ff4fd..fcc06a86e 100644 --- a/security/nss/cmd/lowhashtest/lowhashtest.c +++ b/security/nss/cmd/lowhashtest/lowhashtest.c @@ -390,7 +390,7 @@ testSHA512(NSSLOWInitContext *initCtx) } static void -Usage(char *progName) +Usage() { fprintf(stderr, "Usage: %s [algorithm]\n", progName); @@ -436,7 +436,7 @@ main(int argc, char **argv) rv += testSHA512(initCtx); } else { SECU_PrintError(progName, "Unsupported hash type %s\n", argv[0]); - Usage(progName); + Usage(); } NSSLOW_Shutdown(initCtx); diff --git a/security/nss/cmd/modutil/install-ds.c b/security/nss/cmd/modutil/install-ds.c index 030568762..576839f8f 100644 --- a/security/nss/cmd/modutil/install-ds.c +++ b/security/nss/cmd/modutil/install-ds.c @@ -88,11 +88,11 @@ static const char* errString[] = { static char* PR_Strdup(const char* str); -#define PAD(x) \ - { \ - int i; \ - for (i = 0; i < x; i++) \ - printf(" "); \ +#define PAD(x) \ + { \ + int pad_i; \ + for (pad_i = 0; pad_i < (x); pad_i++) \ + printf(" "); \ } #define PADINC 4 diff --git a/security/nss/cmd/mpitests/mpi-test.c b/security/nss/cmd/mpitests/mpi-test.c index 3a1f5d6c2..b7953b6f6 100644 --- a/security/nss/cmd/mpitests/mpi-test.c +++ b/security/nss/cmd/mpitests/mpi-test.c @@ -375,14 +375,14 @@ void reason(char *fmt, ...); char g_intbuf[4096]; /* buffer for integer comparison */ char a_intbuf[4096]; /* buffer for integer comparison */ int g_verbose = 1; /* print out reasons for failure? */ -int res; - -#define IFOK(x) \ - { \ - if (MP_OKAY > (res = (x))) { \ - reason("test %s failed: error %d\n", #x, res); \ - return 1; \ - } \ + +#define IFOK(x) \ + { \ + int ifok_res = (x); \ + if (MP_OKAY > ifok_res) { \ + reason("test %s failed: error %d\n", #x, ifok_res); \ + return 1; \ + } \ } int diff --git a/security/nss/cmd/ocspclnt/ocspclnt.c b/security/nss/cmd/ocspclnt/ocspclnt.c index afcb7e13f..0927f8ef6 100644 --- a/security/nss/cmd/ocspclnt/ocspclnt.c +++ b/security/nss/cmd/ocspclnt/ocspclnt.c @@ -38,7 +38,7 @@ char *program_name; static void -synopsis(char *program_name) +synopsis(char *progname) { PRFileDesc *pr_stderr; @@ -46,44 +46,44 @@ synopsis(char *program_name) PR_fprintf(pr_stderr, "Usage:"); PR_fprintf(pr_stderr, "\t%s -p [-d <dir>]\n", - program_name); + progname); PR_fprintf(pr_stderr, "\t%s -P [-d <dir>]\n", - program_name); + progname); PR_fprintf(pr_stderr, "\t%s -r <name> [-a] [-L] [-s <name>] [-d <dir>]\n", - program_name); + progname); PR_fprintf(pr_stderr, "\t%s -R <name> [-a] [-l <location>] [-s <name>] [-d <dir>]\n", - program_name); + progname); PR_fprintf(pr_stderr, "\t%s -S <name> [-a] [-l <location> -t <name>]\n", - program_name); + progname); PR_fprintf(pr_stderr, "\t\t [-s <name>] [-w <time>] [-d <dir>]\n"); PR_fprintf(pr_stderr, "\t%s -V <name> [-a] -u <usage> [-l <location> -t <name>]\n", - program_name); + progname); PR_fprintf(pr_stderr, "\t\t [-s <name>] [-w <time>] [-d <dir>]\n"); } static void -short_usage(char *program_name) +short_usage(char *progname) { PR_fprintf(PR_STDERR, "Type %s -H for more detailed descriptions\n", - program_name); - synopsis(program_name); + progname); + synopsis(progname); } static void -long_usage(char *program_name) +long_usage(char *progname) { PRFileDesc *pr_stderr; pr_stderr = PR_STDERR; - synopsis(program_name); + synopsis(progname); PR_fprintf(pr_stderr, "\nCommands (must specify exactly one):\n"); PR_fprintf(pr_stderr, " %-13s Pretty-print a binary request read from stdin\n", diff --git a/security/nss/cmd/ocspresp/ocspresp.c b/security/nss/cmd/ocspresp/ocspresp.c index 632623c97..d18d32e18 100644 --- a/security/nss/cmd/ocspresp/ocspresp.c +++ b/security/nss/cmd/ocspresp/ocspresp.c @@ -194,8 +194,8 @@ main(int argc, char **argv) &obtainedSignerCert, caCert)); #ifdef DEBUG { - SECStatus rv = CERT_GetOCSPStatusForCertID(certHandle, decodedRev, cid, - obtainedSignerCert, now); + rv = CERT_GetOCSPStatusForCertID(certHandle, decodedRev, cid, + obtainedSignerCert, now); PORT_Assert(rv == SECFailure); PORT_Assert(PORT_GetError() == SEC_ERROR_REVOKED_CERTIFICATE); } @@ -211,7 +211,7 @@ main(int argc, char **argv) decodedFail = CERT_DecodeOCSPResponse(encodedFail); #ifdef DEBUG { - SECStatus rv = CERT_GetOCSPResponseStatus(decodedFail); + rv = CERT_GetOCSPResponseStatus(decodedFail); PORT_Assert(rv == SECFailure); PORT_Assert(PORT_GetError() == SEC_ERROR_OCSP_TRY_SERVER_LATER); } diff --git a/security/nss/cmd/pk12util/pk12util.c b/security/nss/cmd/pk12util/pk12util.c index 70454a0d8..5884713e3 100644 --- a/security/nss/cmd/pk12util/pk12util.c +++ b/security/nss/cmd/pk12util/pk12util.c @@ -28,7 +28,7 @@ static PRBool pk12uForceUnicode; PRIntn pk12uErrno = 0; static void -Usage(char *progName) +Usage() { #define FPS PR_fprintf(PR_STDERR, FPS "Usage: %s -i importfile [-d certdir] [-P dbprefix] [-h tokenname]\n", @@ -1020,26 +1020,26 @@ main(int argc, char **argv) rv = SECU_ParseCommandLine(argc, argv, progName, &pk12util); if (rv != SECSuccess) - Usage(progName); + Usage(); pk12_debugging = pk12util.options[opt_Debug].activated; if ((pk12util.options[opt_Import].activated + pk12util.options[opt_Export].activated + pk12util.options[opt_List].activated) != 1) { - Usage(progName); + Usage(); } if (pk12util.options[opt_Export].activated && !pk12util.options[opt_Nickname].activated) { - Usage(progName); + Usage(); } rv = NSS_OptionGet(__NSS_PKCS12_DECODE_FORCE_UNICODE, &forceUnicode); if (rv != SECSuccess) { SECU_PrintError(progName, "Failed to get NSS_PKCS12_DECODE_FORCE_UNICODE option"); - Usage(progName); + Usage(); } pk12uForceUnicode = forceUnicode; @@ -1144,7 +1144,7 @@ main(int argc, char **argv) P12U_ListPKCS12File(import_file, slot, &slotPw, &p12FilePw); } else { - Usage(progName); + Usage(); pk12uErrno = PK12UERR_USAGE; } diff --git a/security/nss/cmd/pk1sign/pk1sign.c b/security/nss/cmd/pk1sign/pk1sign.c index 085aa1659..d5524c149 100644 --- a/security/nss/cmd/pk1sign/pk1sign.c +++ b/security/nss/cmd/pk1sign/pk1sign.c @@ -178,7 +178,7 @@ loser: SECKEY_DestroyPrivateKey(privKey); } if (data) { - PORT_Free(data); + PR_Free(data); } PORT_FreeArena(arena, PR_FALSE); diff --git a/security/nss/cmd/rsaperf/rsaperf.c b/security/nss/cmd/rsaperf/rsaperf.c index 2bb23856e..7762a465b 100644 --- a/security/nss/cmd/rsaperf/rsaperf.c +++ b/security/nss/cmd/rsaperf/rsaperf.c @@ -313,7 +313,7 @@ main(int argc, char **argv) char *slotname = NULL; long keybits = 0; RSAOp fn; - void *rsaKey = NULL; + void *rsaKeyPtr = NULL; PLOptState *optstate; PLOptStatus optstatus; long iters = DEFAULT_ITERS; @@ -464,7 +464,7 @@ main(int argc, char **argv) if (doPub) { /* do public key ops */ fn = (RSAOp)PK11_PublicKeyOp; - rsaKey = (void *)pubHighKey; + rsaKeyPtr = (void *)pubHighKey; kh = PK11_ImportPublicKey(cert->slot, pubHighKey, PR_FALSE); if (CK_INVALID_HANDLE == kh) { @@ -489,7 +489,7 @@ main(int argc, char **argv) fn = (RSAOp)PK11_PrivateKeyOp; keys.privKey = privHighKey; keys.pubKey = pubHighKey; - rsaKey = (void *)&keys; + rsaKeyPtr = (void *)&keys; printf("Using PKCS#11 for RSA decryption with token %s.\n", PK11_GetTokenName(privHighKey->pkcs11Slot)); } @@ -537,13 +537,13 @@ main(int argc, char **argv) if (doPub) { /* do public key operations */ fn = (RSAOp)PK11_PublicKeyOp; - rsaKey = (void *)pubHighKey; + rsaKeyPtr = (void *)pubHighKey; } else { /* do private key operations */ fn = (RSAOp)PK11_PrivateKeyOp; keys.privKey = privHighKey; keys.pubKey = pubHighKey; - rsaKey = (void *)&keys; + rsaKeyPtr = (void *)&keys; } } else @@ -574,7 +574,7 @@ main(int argc, char **argv) pe.data = &pubEx[0]; pe.type = siBuffer; - rsaKey = RSA_NewKey(keybits, &pe); + rsaKeyPtr = RSA_NewKey(keybits, &pe); fprintf(stderr, "Keygen completed.\n"); } else { /* use a hardcoded key */ @@ -589,31 +589,31 @@ main(int argc, char **argv) if (doPub) { /* do public key operations */ fn = (RSAOp)RSA_PublicKeyOp; - if (rsaKey) { + if (rsaKeyPtr) { /* convert the RSAPrivateKey to RSAPublicKey */ pubKeyStr.arena = NULL; - pubKeyStr.modulus = ((RSAPrivateKey *)rsaKey)->modulus; + pubKeyStr.modulus = ((RSAPrivateKey *)rsaKeyPtr)->modulus; pubKeyStr.publicExponent = - ((RSAPrivateKey *)rsaKey)->publicExponent; - rsaKey = &pubKeyStr; + ((RSAPrivateKey *)rsaKeyPtr)->publicExponent; + rsaKeyPtr = &pubKeyStr; } else { /* convert NSSLOWKeyPublicKey to RSAPublicKey */ - rsaKey = (void *)(&pubKey->u.rsa); + rsaKeyPtr = (void *)(&pubKey->u.rsa); } - PORT_Assert(rsaKey); + PORT_Assert(rsaKeyPtr); } else { /* do private key operations */ fn = (RSAOp)RSA_PrivateKeyOp; if (privKey) { /* convert NSSLOWKeyPrivateKey to RSAPrivateKey */ - rsaKey = (void *)(&privKey->u.rsa); + rsaKeyPtr = (void *)(&privKey->u.rsa); } - PORT_Assert(rsaKey); + PORT_Assert(rsaKeyPtr); } } memset(buf, 1, sizeof buf); - rv = fn(rsaKey, buf2, buf); + rv = fn(rsaKeyPtr, buf2, buf); if (rv != SECSuccess) { PRErrorCode errNum; const char *errStr = NULL; @@ -638,7 +638,7 @@ main(int argc, char **argv) runDataArr[i]->fn = fn; runDataArr[i]->buf = buf; runDataArr[i]->doIters = &doIters; - runDataArr[i]->rsaKey = rsaKey; + runDataArr[i]->rsaKey = rsaKeyPtr; runDataArr[i]->seconds = seconds; runDataArr[i]->iters = iters; threadsArr[i] = diff --git a/security/nss/cmd/selfserv/selfserv.c b/security/nss/cmd/selfserv/selfserv.c index fac428e10..c372ec9b8 100644 --- a/security/nss/cmd/selfserv/selfserv.c +++ b/security/nss/cmd/selfserv/selfserv.c @@ -57,7 +57,7 @@ int NumSidCacheEntries = 1024; -static int handle_connection(PRFileDesc *, PRFileDesc *, int); +static int handle_connection(PRFileDesc *, PRFileDesc *); static const char envVarName[] = { SSL_ENV_VAR_NAME }; static const char inheritableSockName[] = { "SELFSERV_LISTEN_SOCKET" }; @@ -509,7 +509,6 @@ typedef struct jobStr { PRCList link; PRFileDesc *tcp_sock; PRFileDesc *model_sock; - int requestCert; } JOB; static PZLock *qLock; /* this lock protects all data immediately below */ @@ -541,7 +540,7 @@ setupJobs(int maxJobs) return SECSuccess; } -typedef int startFn(PRFileDesc *a, PRFileDesc *b, int c); +typedef int startFn(PRFileDesc *a, PRFileDesc *b); typedef enum { rs_idle = 0, rs_running = 1, @@ -550,7 +549,6 @@ typedef enum { rs_idle = 0, typedef struct perThreadStr { PRFileDesc *a; PRFileDesc *b; - int c; int rv; startFn *startFunc; PRThread *prThread; @@ -564,7 +562,7 @@ thread_wrapper(void *arg) { perThread *slot = (perThread *)arg; - slot->rv = (*slot->startFunc)(slot->a, slot->b, slot->c); + slot->rv = (*slot->startFunc)(slot->a, slot->b); /* notify the thread exit handler. */ PZ_Lock(qLock); @@ -575,7 +573,7 @@ thread_wrapper(void *arg) } int -jobLoop(PRFileDesc *a, PRFileDesc *b, int c) +jobLoop(PRFileDesc *a, PRFileDesc *b) { PRCList *myLink = 0; JOB *myJob; @@ -595,8 +593,7 @@ jobLoop(PRFileDesc *a, PRFileDesc *b, int c) /* myJob will be null when stopping is true and jobQ is empty */ if (!myJob) break; - handle_connection(myJob->tcp_sock, myJob->model_sock, - myJob->requestCert); + handle_connection(myJob->tcp_sock, myJob->model_sock); PZ_Lock(qLock); PR_APPEND_LINK(myLink, &freeJobs); PZ_NotifyCondVar(freeListNotEmptyCv); @@ -609,7 +606,6 @@ launch_threads( startFn *startFunc, PRFileDesc *a, PRFileDesc *b, - int c, PRBool local) { int i; @@ -645,7 +641,6 @@ launch_threads( slot->state = rs_running; slot->a = a; slot->b = b; - slot->c = c; slot->startFunc = startFunc; slot->prThread = PR_CreateThread(PR_USER_THREAD, thread_wrapper, slot, PR_PRIORITY_NORMAL, @@ -893,8 +888,7 @@ int /* returns count */ int do_writes( PRFileDesc *ssl_sock, - PRFileDesc *model_sock, - int requestCert) + PRFileDesc *model_sock) { int sent = 0; int count = 0; @@ -925,8 +919,7 @@ do_writes( static int handle_fdx_connection( PRFileDesc *tcp_sock, - PRFileDesc *model_sock, - int requestCert) + PRFileDesc *model_sock) { PRFileDesc *ssl_sock = NULL; SECStatus result; @@ -960,8 +953,7 @@ handle_fdx_connection( lockedVars_AddToCount(&lv, 1); /* Attempt to launch the writer thread. */ - result = launch_thread(do_writes, ssl_sock, (PRFileDesc *)&lv, - requestCert); + result = launch_thread(do_writes, ssl_sock, (PRFileDesc *)&lv); if (result == SECSuccess) do { @@ -1093,7 +1085,7 @@ makeCorruptedOCSPResponse(PLArenaPool *arena) } SECItemArray * -makeSignedOCSPResponse(PLArenaPool *arena, ocspStaplingModeType osm, +makeSignedOCSPResponse(PLArenaPool *arena, CERTCertificate *cert, secuPWData *pwdata) { SECItemArray *result = NULL; @@ -1117,7 +1109,7 @@ makeSignedOCSPResponse(PLArenaPool *arena, ocspStaplingModeType osm, nextUpdate = now + (PRTime)60 * 60 * 24 * PR_USEC_PER_SEC; /* plus 1 day */ - switch (osm) { + switch (ocspStaplingMode) { case osm_good: case osm_badsig: sr = CERT_CreateOCSPSingleResponseGood(arena, cid, now, @@ -1150,7 +1142,7 @@ makeSignedOCSPResponse(PLArenaPool *arena, ocspStaplingModeType osm, singleResponses[1] = NULL; ocspResponse = CERT_CreateEncodedOCSPSuccessResponse(arena, - (osm == osm_badsig) + (ocspStaplingMode == osm_badsig) ? NULL : ca, ocspResponderID_byName, now, singleResponses, @@ -1175,7 +1167,7 @@ makeSignedOCSPResponse(PLArenaPool *arena, ocspStaplingModeType osm, } void -setupCertStatus(PLArenaPool *arena, enum ocspStaplingModeEnum ocspStaplingMode, +setupCertStatus(PLArenaPool *arena, CERTCertificate *cert, int index, secuPWData *pwdata) { if (ocspStaplingMode == osm_random) { @@ -1213,7 +1205,7 @@ setupCertStatus(PLArenaPool *arena, enum ocspStaplingModeEnum ocspStaplingMode, case osm_unknown: case osm_badsig: multiOcspResponses = - makeSignedOCSPResponse(arena, ocspStaplingMode, cert, + makeSignedOCSPResponse(arena, cert, pwdata); break; case osm_corrupted: @@ -1236,10 +1228,7 @@ setupCertStatus(PLArenaPool *arena, enum ocspStaplingModeEnum ocspStaplingMode, } int -handle_connection( - PRFileDesc *tcp_sock, - PRFileDesc *model_sock, - int requestCert) +handle_connection(PRFileDesc *tcp_sock, PRFileDesc *model_sock) { PRFileDesc *ssl_sock = NULL; PRFileDesc *local_file_fd = NULL; @@ -1272,7 +1261,6 @@ handle_connection( VLOG(("selfserv: handle_connection: starting\n")); if (useModelSocket && model_sock) { - SECStatus rv; ssl_sock = SSL_ImportFD(model_sock, tcp_sock); if (!ssl_sock) { errWarn("SSL_ImportFD with model"); @@ -1588,8 +1576,7 @@ sigusr1_handler(int sig) SECStatus do_accepts( PRFileDesc *listen_sock, - PRFileDesc *model_sock, - int requestCert) + PRFileDesc *model_sock) { PRNetAddr addr; PRErrorCode perr; @@ -1659,7 +1646,6 @@ do_accepts( JOB *myJob = (JOB *)myLink; myJob->tcp_sock = tcp_sock; myJob->model_sock = model_sock; - myJob->requestCert = requestCert; } PR_APPEND_LINK(myLink, &jobQ); @@ -1818,7 +1804,6 @@ handshakeCallback(PRFileDesc *fd, void *client_data) void server_main( PRFileDesc *listen_sock, - int requestCert, SECKEYPrivateKey **privKey, CERTCertificate **cert, const char *expectedHostNameVal) @@ -2021,7 +2006,7 @@ server_main( /* end of ssl configuration. */ /* Now, do the accepting, here in the main thread. */ - rv = do_accepts(listen_sock, model_sock, requestCert); + rv = do_accepts(listen_sock, model_sock); terminateWorkerThreads(); @@ -2654,9 +2639,8 @@ main(int argc, char **argv) } } if (cipher > 0) { - SECStatus status; - status = SSL_CipherPrefSetDefault(cipher, SSL_ALLOWED); - if (status != SECSuccess) + rv = SSL_CipherPrefSetDefault(cipher, SSL_ALLOWED); + if (rv != SECSuccess) SECU_PrintError(progName, "SSL_CipherPrefSet()"); } else { fprintf(stderr, @@ -2684,7 +2668,7 @@ main(int argc, char **argv) exit(11); } if (privKey[i]->keyType != ecKey) - setupCertStatus(certStatusArena, ocspStaplingMode, cert[i], i, &pwdata); + setupCertStatus(certStatusArena, cert[i], i, &pwdata); } if (configureWeakDHE > 0) { @@ -2697,7 +2681,7 @@ main(int argc, char **argv) } /* allocate the array of thread slots, and launch the worker threads. */ - rv = launch_threads(&jobLoop, 0, 0, requestCert, useLocalThreads); + rv = launch_threads(&jobLoop, 0, 0, useLocalThreads); if (rv == SECSuccess && logStats) { loggerThread = PR_CreateThread(PR_SYSTEM_THREAD, @@ -2712,7 +2696,7 @@ main(int argc, char **argv) } if (rv == SECSuccess) { - server_main(listen_sock, requestCert, privKey, cert, + server_main(listen_sock, privKey, cert, expectedHostNameVal); } @@ -2731,7 +2715,6 @@ cleanup: } { - int i; for (i = 0; i < certNicknameIndex; i++) { if (cert[i]) { CERT_DestroyCertificate(cert[i]); diff --git a/security/nss/cmd/shlibsign/shlibsign.c b/security/nss/cmd/shlibsign/shlibsign.c index d93fc422d..221d1e67e 100644 --- a/security/nss/cmd/shlibsign/shlibsign.c +++ b/security/nss/cmd/shlibsign/shlibsign.c @@ -148,7 +148,7 @@ writeItem(PRFileDesc *fd, CK_VOID_PTR pValue, return PR_FAILURE; } bytesWritten = PR_Write(fd, pValue, ulValueLen); - if (bytesWritten != ulValueLen) { + if (bytesWritten < 0 || (CK_ULONG)bytesWritten != ulValueLen) { lperror(file); return PR_FAILURE; } diff --git a/security/nss/cmd/signtool/javascript.c b/security/nss/cmd/signtool/javascript.c index ffff2db59..58869aa61 100644 --- a/security/nss/cmd/signtool/javascript.c +++ b/security/nss/cmd/signtool/javascript.c @@ -1300,7 +1300,6 @@ extract_js(char *filename) * Now we have a stream of tags and text. Go through and deal with each. */ for (curitem = head; curitem; curitem = curitem->next) { - TagItem *tagp = NULL; AVPair *pairp = NULL; char *src = NULL, *id = NULL, *codebase = NULL; PRBool hasEventHandler = PR_FALSE; @@ -1669,11 +1668,14 @@ loser: * Returns PR_SUCCESS if the directory is present, PR_FAILURE otherwise. */ static PRStatus -ensureExists(char *base, char *path) +ensureExists(char *basepath, char *path) { char fn[FNSIZE]; PRDir *dir; - sprintf(fn, "%s/%s", base, path); + int c = snprintf(fn, sizeof(fn), "%s/%s", basepath, path); + if (c >= sizeof(fn)) { + return PR_FAILURE; + } /*PR_fprintf(outputFD, "Trying to open directory %s.\n", fn);*/ diff --git a/security/nss/cmd/signtool/sign.c b/security/nss/cmd/signtool/sign.c index 6f8e43946..534530947 100644 --- a/security/nss/cmd/signtool/sign.c +++ b/security/nss/cmd/signtool/sign.c @@ -175,16 +175,16 @@ typedef struct { * */ int -SignAllArc(char *jartree, char *keyName, int javascript, char *metafile, - char *install_script, int optimize, PRBool recurse) +SignAllArc(char *jartree, char *keyName, int javascript, char *metafilename, + char *install_script, int optimize_level, PRBool recurse) { SignArcInfo info; info.keyName = keyName; info.javascript = javascript; - info.metafile = metafile; + info.metafile = metafilename; info.install_script = install_script; - info.optimize = optimize; + info.optimize = optimize_level; return foreach (jartree, "", sign_all_arc_fn, recurse, PR_TRUE /*include dirs*/, (void *)&info); @@ -194,7 +194,7 @@ static int sign_all_arc_fn(char *relpath, char *basedir, char *reldir, char *filename, void *arg) { - char *zipfile = NULL; + char *zipfilename = NULL; char *arc = NULL, *archive = NULL; int retval = 0; SignArcInfo *infop = (SignArcInfo *)arg; @@ -212,8 +212,8 @@ sign_all_arc_fn(char *relpath, char *basedir, char *reldir, char *filename, } archive = PR_smprintf("%s/%s", basedir, relpath); - zipfile = PL_strdup(archive); - arc = PORT_Strrchr(zipfile, '.'); + zipfilename = PL_strdup(archive); + arc = PORT_Strrchr(zipfilename, '.'); if (arc == NULL) { PR_fprintf(errorFD, "%s: Internal failure\n", PROGRAM_NAME); @@ -225,17 +225,17 @@ sign_all_arc_fn(char *relpath, char *basedir, char *reldir, char *filename, PL_strcpy(arc, ".jar"); if (verbosity >= 0) { - PR_fprintf(outputFD, "\nsigning: %s\n", zipfile); + PR_fprintf(outputFD, "\nsigning: %s\n", zipfilename); } - retval = SignArchive(archive, infop->keyName, zipfile, + retval = SignArchive(archive, infop->keyName, zipfilename, infop->javascript, infop->metafile, infop->install_script, infop->optimize, PR_TRUE /* recurse */); } finish: if (archive) PR_Free(archive); - if (zipfile) - PR_Free(zipfile); + if (zipfilename) + PR_Free(zipfilename); return retval; } @@ -707,8 +707,8 @@ SignFile(FILE *outFile, FILE *inFile, CERTCertificate *cert) static int generate_SF_file(char *manifile, char *who) { - FILE *sf; - FILE *mf; + FILE *sfFile; + FILE *mfFile; long r1, r2, r3; char whofile[FNSIZE]; char *buf, *name = NULL; @@ -718,12 +718,12 @@ generate_SF_file(char *manifile, char *who) strcpy(whofile, who); - if ((mf = fopen(manifile, "rb")) == NULL) { + if ((mfFile = fopen(manifile, "rb")) == NULL) { perror(manifile); exit(ERRX); } - if ((sf = fopen(whofile, "wb")) == NULL) { + if ((sfFile = fopen(whofile, "wb")) == NULL) { perror(who); exit(ERRX); } @@ -736,11 +736,11 @@ generate_SF_file(char *manifile, char *who) if (buf == NULL || name == NULL) out_of_memory(); - fprintf(sf, "Signature-Version: 1.0\n"); - fprintf(sf, "Created-By: %s\n", CREATOR); - fprintf(sf, "Comments: %s\n", BREAKAGE); + fprintf(sfFile, "Signature-Version: 1.0\n"); + fprintf(sfFile, "Created-By: %s\n", CREATOR); + fprintf(sfFile, "Comments: %s\n", BREAKAGE); - if (fgets(buf, BUFSIZ, mf) == NULL) { + if (fgets(buf, BUFSIZ, mfFile) == NULL) { PR_fprintf(errorFD, "%s: empty manifest file!\n", PROGRAM_NAME); errorCount++; exit(ERRX); @@ -752,15 +752,15 @@ generate_SF_file(char *manifile, char *who) exit(ERRX); } - fseek(mf, 0L, SEEK_SET); + fseek(mfFile, 0L, SEEK_SET); /* Process blocks of headers, and calculate their hashen */ while (1) { /* Beginning range */ - r1 = ftell(mf); + r1 = ftell(mfFile); - if (fgets(name, BUFSIZ, mf) == NULL) + if (fgets(name, BUFSIZ, mfFile) == NULL) break; line++; @@ -774,46 +774,46 @@ generate_SF_file(char *manifile, char *who) } r2 = r1; - while (fgets(buf, BUFSIZ, mf)) { + while (fgets(buf, BUFSIZ, mfFile)) { if (*buf == 0 || *buf == '\n' || *buf == '\r') break; line++; /* Ending range for hashing */ - r2 = ftell(mf); + r2 = ftell(mfFile); } - r3 = ftell(mf); + r3 = ftell(mfFile); if (r1) { - fprintf(sf, "\n"); - fprintf(sf, "%s", name); + fprintf(sfFile, "\n"); + fprintf(sfFile, "%s", name); } - calculate_MD5_range(mf, r1, r2, &dig); + calculate_MD5_range(mfFile, r1, r2, &dig); if (optimize == 0) { - fprintf(sf, "Digest-Algorithms: MD5 SHA1\n"); + fprintf(sfFile, "Digest-Algorithms: MD5 SHA1\n"); md5 = BTOA_DataToAscii(dig.md5, MD5_LENGTH); - fprintf(sf, "MD5-Digest: %s\n", md5); + fprintf(sfFile, "MD5-Digest: %s\n", md5); PORT_Free(md5); } sha1 = BTOA_DataToAscii(dig.sha1, SHA1_LENGTH); - fprintf(sf, "SHA1-Digest: %s\n", sha1); + fprintf(sfFile, "SHA1-Digest: %s\n", sha1); PORT_Free(sha1); /* restore normalcy after changing offset position */ - fseek(mf, r3, SEEK_SET); + fseek(mfFile, r3, SEEK_SET); } PORT_Free(buf); PORT_Free(name); - fclose(sf); - fclose(mf); + fclose(sfFile); + fclose(mfFile); return 0; } diff --git a/security/nss/cmd/signtool/zip.c b/security/nss/cmd/signtool/zip.c index 35d5f5733..aeb5d6c54 100644 --- a/security/nss/cmd/signtool/zip.c +++ b/security/nss/cmd/signtool/zip.c @@ -129,7 +129,7 @@ handle_zerror(int err, char *msg) * been opened with JzipOpen. */ int -JzipAdd(char *fullname, char *filename, ZIPfile *zipfile, int compression_level) +JzipAdd(char *fullname, char *filename, ZIPfile *zipfile, int lvl) { ZIPentry *entry; PRFileDesc *readfp; @@ -319,7 +319,7 @@ JzipAdd(char *fullname, char *filename, ZIPfile *zipfile, int compression_level) * It causes zlib to leave out its headers and footers, which don't * work in PKZIP files. */ - err = deflateInit2(&zstream, compression_level, Z_DEFLATED, + err = deflateInit2(&zstream, lvl, Z_DEFLATED, -MAX_WBITS, 8 /*default*/, Z_DEFAULT_STRATEGY); if (err != Z_OK) { handle_zerror(err, zstream.msg); diff --git a/security/nss/cmd/smimetools/cmsutil.c b/security/nss/cmd/smimetools/cmsutil.c index fe17f26a4..7106521c1 100644 --- a/security/nss/cmd/smimetools/cmsutil.c +++ b/security/nss/cmd/smimetools/cmsutil.c @@ -68,7 +68,7 @@ DigestFile(PLArenaPool *poolp, SECItem ***digests, SECItem *input, } static void -Usage(char *progName) +Usage(void) { fprintf(stderr, "Usage: %s [-C|-D|-E|-O|-S] [<options>] [-d dbdir] [-u certusage]\n" @@ -280,7 +280,6 @@ decode(FILE *out, SECItem *input, const struct decodeOptionsStr *decodeOptions) ** or might be an invalid message, such as a QA test message ** or a message from an attacker. */ - SECStatus rv; rv = NSS_CMSSignedData_VerifyCertsOnly(sigd, decodeOptions->options->certHandle, decodeOptions->options->certUsage); @@ -1127,7 +1126,7 @@ main(int argc, char **argv) fprintf(stderr, "%s: option -G only supported with option -S.\n", progName); - Usage(progName); + Usage(); exit(1); } signOptions.signingTime = PR_TRUE; @@ -1137,7 +1136,7 @@ main(int argc, char **argv) fprintf(stderr, "%s: option -H only supported with option -S.\n", progName); - Usage(progName); + Usage(); exit(1); } decodeOptions.suppressContent = PR_TRUE; @@ -1167,7 +1166,7 @@ main(int argc, char **argv) fprintf(stderr, "%s: option -N only supported with option -S.\n", progName); - Usage(progName); + Usage(); exit(1); } signOptions.nickname = PORT_Strdup(optstate->value); @@ -1180,7 +1179,7 @@ main(int argc, char **argv) fprintf(stderr, "%s: option -P only supported with option -S.\n", progName); - Usage(progName); + Usage(); exit(1); } signOptions.smimeProfile = PR_TRUE; @@ -1193,7 +1192,7 @@ main(int argc, char **argv) fprintf(stderr, "%s: option -T only supported with option -S.\n", progName); - Usage(progName); + Usage(); exit(1); } signOptions.detached = PR_TRUE; @@ -1203,7 +1202,7 @@ main(int argc, char **argv) fprintf(stderr, "%s: option -Y only supported with option -S.\n", progName); - Usage(progName); + Usage(); exit(1); } signOptions.encryptionKeyPreferenceNick = strdup(optstate->value); @@ -1214,7 +1213,7 @@ main(int argc, char **argv) fprintf(stderr, "%s: option -b only supported with option -D.\n", progName); - Usage(progName); + Usage(); exit(1); } batch = PR_TRUE; @@ -1225,7 +1224,7 @@ main(int argc, char **argv) fprintf(stderr, "%s: option -c only supported with option -D.\n", progName); - Usage(progName); + Usage(); exit(1); } contentFile = PR_Open(optstate->value, PR_RDONLY, 006600); @@ -1261,7 +1260,7 @@ main(int argc, char **argv) fprintf(stderr, "%s: option -h only supported with option -D.\n", progName); - Usage(progName); + Usage(); exit(1); } decodeOptions.headerLevel = atoi(optstate->value); @@ -1288,7 +1287,7 @@ main(int argc, char **argv) fprintf(stderr, "%s: option -k only supported with option -D.\n", progName); - Usage(progName); + Usage(); exit(1); } decodeOptions.keepCerts = PR_TRUE; @@ -1299,7 +1298,7 @@ main(int argc, char **argv) fprintf(stderr, "%s: option -n only supported with option -D.\n", progName); - Usage(progName); + Usage(); exit(1); } decodeOptions.suppressContent = PR_TRUE; @@ -1315,7 +1314,7 @@ main(int argc, char **argv) case 'p': if (!optstate->value) { fprintf(stderr, "%s: option -p must have a value.\n", progName); - Usage(progName); + Usage(); exit(1); } @@ -1325,7 +1324,7 @@ main(int argc, char **argv) case 'f': if (!optstate->value) { fprintf(stderr, "%s: option -f must have a value.\n", progName); - Usage(progName); + Usage(); exit(1); } @@ -1335,7 +1334,7 @@ main(int argc, char **argv) case 'r': if (!optstate->value) { fprintf(stderr, "%s: option -r must have a value.\n", progName); - Usage(progName); + Usage(); exit(1); } envelopeOptions.recipients = ptrarray; @@ -1368,11 +1367,11 @@ main(int argc, char **argv) } } if (status == PL_OPT_BAD) - Usage(progName); + Usage(); PL_DestroyOptState(optstate); if (mode == UNKNOWN) - Usage(progName); + Usage(); if (mode != CERTSONLY && !batch) { rv = SECU_FileToItem(&input, inFile); @@ -1529,7 +1528,7 @@ main(int argc, char **argv) break; default: fprintf(stderr, "One of options -D, -S or -E must be set.\n"); - Usage(progName); + Usage(); exitstatus = 1; } diff --git a/security/nss/cmd/strsclnt/strsclnt.c b/security/nss/cmd/strsclnt/strsclnt.c index 7d259bd0a..bba53efac 100644 --- a/security/nss/cmd/strsclnt/strsclnt.c +++ b/security/nss/cmd/strsclnt/strsclnt.c @@ -137,7 +137,7 @@ SECItem bigBuf; fprintf static void -Usage(const char *progName) +Usage(void) { fprintf(stderr, "Usage: %s [-n nickname] [-p port] [-d dbdir] [-c connections]\n" @@ -260,7 +260,6 @@ void printSecurityInfo(PRFileDesc *fd) { CERTCertificate *cert = NULL; - SSL3Statistics *ssl3stats = SSL_GetStatistics(); SECStatus result; SSLChannelInfo channel; SSLCipherSuiteInfo suite; @@ -1095,7 +1094,6 @@ client_main( while (0 != (ndx = *cipherString)) { const char *startCipher = cipherString++; int cipher = 0; - SECStatus rv; if (ndx == ':') { cipher = hexchar_to_int(*cipherString++); @@ -1353,7 +1351,7 @@ main(int argc, char **argv) enabledVersions, &enabledVersions) != SECSuccess) { fprintf(stderr, "Bad version specified.\n"); - Usage(progName); + Usage(); } break; @@ -1431,27 +1429,27 @@ main(int argc, char **argv) case 0: /* positional parameter */ if (hostName) { - Usage(progName); + Usage(); } hostName = PL_strdup(optstate->value); break; default: case '?': - Usage(progName); + Usage(); break; } } PL_DestroyOptState(optstate); if (!hostName || status == PL_OPT_BAD) - Usage(progName); + Usage(); if (fullhs != NO_FULLHS_PERCENTAGE && (fullhs < 0 || fullhs > 100 || NoReuse)) - Usage(progName); + Usage(); if (port == 0) - Usage(progName); + Usage(); if (fileName) readBigFile(fileName); diff --git a/security/nss/cmd/symkeyutil/symkeyutil.c b/security/nss/cmd/symkeyutil/symkeyutil.c index 444456808..31ab4dda4 100644 --- a/security/nss/cmd/symkeyutil/symkeyutil.c +++ b/security/nss/cmd/symkeyutil/symkeyutil.c @@ -1034,10 +1034,10 @@ main(int argc, char **argv) char *targetName = symKeyUtil.options[opt_TargetToken].arg; PK11SymKey *newKey; PK11SymKey *symKey = FindKey(slot, name, &keyID, &pwdata); - char *keyName = PK11_GetSymKeyNickname(symKey); + char *keyName; if (!symKey) { - char *keyName = keyID.data ? BufToHex(&keyID) : PORT_Strdup(name); + keyName = keyID.data ? BufToHex(&keyID) : PORT_Strdup(name); PR_fprintf(PR_STDERR, "%s: Couldn't find key %s on %s\n", progName, keyName, PK11_GetTokenName(slot)); PORT_Free(keyName); @@ -1061,6 +1061,7 @@ main(int argc, char **argv) PR_fprintf(PR_STDERR, "%s: Couldn't move the key \n", progName); goto shutdown; } + keyName = PK11_GetSymKeyNickname(symKey); if (keyName) { rv = PK11_SetSymKeyNickname(newKey, keyName); if (rv != SECSuccess) { diff --git a/security/nss/cmd/tstclnt/tstclnt.c b/security/nss/cmd/tstclnt/tstclnt.c index 1ad99502b..6f5a43146 100644 --- a/security/nss/cmd/tstclnt/tstclnt.c +++ b/security/nss/cmd/tstclnt/tstclnt.c @@ -51,6 +51,7 @@ #define MAX_WAIT_FOR_SERVER 600 #define WAIT_INTERVAL 100 +#define ZERO_RTT_MAX (2 << 16) #define EXIT_CODE_HANDSHAKE_FAILED 254 @@ -99,6 +100,7 @@ int renegotiationsDone = 0; PRBool initializedServerSessionCache = PR_FALSE; static char *progName; +static const char *requestFile; secuPWData pwdata = { PW_NONE, 0 }; @@ -172,7 +174,7 @@ printSecurityInfo(PRFileDesc *fd) } static void -PrintUsageHeader(const char *progName) +PrintUsageHeader() { fprintf(stderr, "Usage: %s -h host [-a 1st_hs_name ] [-a 2nd_hs_name ] [-p port]\n" @@ -186,7 +188,7 @@ PrintUsageHeader(const char *progName) } static void -PrintParameterUsage(void) +PrintParameterUsage() { fprintf(stderr, "%-20s Send different SNI name. 1st_hs_name - at first\n" "%-20s handshake, 2nd_hs_name - at second handshake.\n" @@ -259,17 +261,17 @@ PrintParameterUsage(void) } static void -Usage(const char *progName) +Usage() { - PrintUsageHeader(progName); + PrintUsageHeader(); PrintParameterUsage(); exit(1); } static void -PrintCipherUsage(const char *progName) +PrintCipherUsage() { - PrintUsageHeader(progName); + PrintUsageHeader(); fprintf(stderr, "%-20s Letter(s) chosen from the following list\n", "-c ciphers"); fprintf(stderr, @@ -303,7 +305,7 @@ milliPause(PRUint32 milli) } void -disableAllSSLCiphers(void) +disableAllSSLCiphers() { const PRUint16 *cipherSuites = SSL_GetImplementedCiphers(); int i = SSL_GetNumImplementedCiphers(); @@ -711,12 +713,18 @@ void thread_main(void *arg) { PRFileDesc *ps = (PRFileDesc *)arg; - PRFileDesc *std_in = PR_GetSpecialFD(PR_StandardInput); + PRFileDesc *std_in; int wc, rc; char buf[256]; + if (requestFile) { + std_in = PR_Open(requestFile, PR_RDONLY, 0); + } else { + std_in = PR_GetSpecialFD(PR_StandardInput); + } + #ifdef WIN32 - { + if (!requestFile) { /* Put stdin into O_BINARY mode ** or else incoming \r\n's will become \n's. */ @@ -737,6 +745,9 @@ thread_main(void *arg) wc = PR_Send(ps, buf, rc, 0, maxInterval); } while (wc == rc); PR_Close(ps); + if (requestFile) { + PR_Close(std_in); + } } #endif @@ -844,7 +855,7 @@ separateReqHeader(const PRFileDesc *outFd, const char *buf, const int nb, } else if (((c) >= 'A') && ((c) <= 'F')) { \ i = (c) - 'A' + 10; \ } else { \ - Usage(progName); \ + Usage(); \ } static SECStatus @@ -915,22 +926,22 @@ char *hs1SniHostName = NULL; char *hs2SniHostName = NULL; PRUint16 portno = 443; int override = 0; -char *requestString = NULL; -PRInt32 requestStringLen = 0; -PRBool requestSent = PR_FALSE; PRBool enableZeroRtt = PR_FALSE; +PRUint8 *zeroRttData; +unsigned int zeroRttLen = 0; PRBool enableAltServerHello = PR_FALSE; PRBool useDTLS = PR_FALSE; PRBool actAsServer = PR_FALSE; PRBool stopAfterHandshake = PR_FALSE; PRBool requestToExit = PR_FALSE; char *versionString = NULL; +PRBool handshakeComplete = PR_FALSE; static int -writeBytesToServer(PRFileDesc *s, const char *buf, int nb) +writeBytesToServer(PRFileDesc *s, const PRUint8 *buf, int nb) { SECStatus rv; - const char *bufp = buf; + const PRUint8 *bufp = buf; PRPollDesc pollDesc; pollDesc.in_flags = PR_POLL_WRITE | PR_POLL_EXCEPT; @@ -944,12 +955,20 @@ writeBytesToServer(PRFileDesc *s, const char *buf, int nb) if (cc < 0) { PRErrorCode err = PR_GetError(); if (err != PR_WOULD_BLOCK_ERROR) { - SECU_PrintError(progName, - "write to SSL socket failed"); + SECU_PrintError(progName, "write to SSL socket failed"); return 254; } cc = 0; } + FPRINTF(stderr, "%s: %d bytes written\n", progName, cc); + if (enableZeroRtt && !handshakeComplete) { + if (zeroRttLen + cc > ZERO_RTT_MAX) { + SECU_PrintError(progName, "too much early data to save"); + return -1; + } + PORT_Memcpy(zeroRttData + zeroRttLen, bufp, cc); + zeroRttLen += cc; + } bufp += cc; nb -= cc; if (nb <= 0) @@ -969,8 +988,7 @@ writeBytesToServer(PRFileDesc *s, const char *buf, int nb) progName); cc = PR_Poll(&pollDesc, 1, PR_INTERVAL_NO_TIMEOUT); if (cc < 0) { - SECU_PrintError(progName, - "PR_Poll failed"); + SECU_PrintError(progName, "PR_Poll failed"); return -1; } FPRINTF(stderr, @@ -993,7 +1011,7 @@ handshakeCallback(PRFileDesc *fd, void *client_data) SSL_ReHandshake(fd, (renegotiationsToDo < 2)); ++renegotiationsDone; } - if (requestString && requestSent) { + if (zeroRttLen) { /* This data was sent in 0-RTT. */ SSLChannelInfo info; SECStatus rv; @@ -1003,29 +1021,30 @@ handshakeCallback(PRFileDesc *fd, void *client_data) return; if (!info.earlyDataAccepted) { - FPRINTF(stderr, "Early data rejected. Re-sending\n"); - writeBytesToServer(fd, requestString, requestStringLen); + FPRINTF(stderr, "Early data rejected. Re-sending %d bytes\n", + zeroRttLen); + writeBytesToServer(fd, zeroRttData, zeroRttLen); + zeroRttLen = 0; } } if (stopAfterHandshake) { requestToExit = PR_TRUE; } + handshakeComplete = PR_TRUE; } -#define REQUEST_WAITING (requestString && !requestSent) - static SECStatus -installServerCertificate(PRFileDesc *s, char *nickname) +installServerCertificate(PRFileDesc *s, char *nick) { CERTCertificate *cert; SECKEYPrivateKey *privKey = NULL; - if (!nickname) { + if (!nick) { PORT_SetError(SEC_ERROR_INVALID_ARGS); return SECFailure; } - cert = PK11_FindCertFromNickname(nickname, &pwdata); + cert = PK11_FindCertFromNickname(nick, &pwdata); if (cert == NULL) { return SECFailure; } @@ -1129,20 +1148,19 @@ connectToServer(PRFileDesc *s, PRPollDesc *pollset) } static int -run(void) +run() { int headerSeparatorPtrnId = 0; int error = 0; SECStatus rv; PRStatus status; PRInt32 filesReady; - int npds; PRFileDesc *s = NULL; PRFileDesc *std_out; - PRPollDesc pollset[2]; + PRPollDesc pollset[2] = { { 0 }, { 0 } }; PRBool wrStarted = PR_FALSE; - requestSent = PR_FALSE; + handshakeComplete = PR_FALSE; /* Create socket */ if (useDTLS) { @@ -1225,19 +1243,18 @@ run(void) cipherString++; } else { if (!isalpha(ndx)) - Usage(progName); + Usage(); ndx = tolower(ndx) - 'a'; if (ndx < PR_ARRAY_SIZE(ssl3CipherSuites)) { cipher = ssl3CipherSuites[ndx]; } } if (cipher > 0) { - SECStatus status; - status = SSL_CipherPrefSet(s, cipher, SSL_ALLOWED); - if (status != SECSuccess) + rv = SSL_CipherPrefSet(s, cipher, SSL_ALLOWED); + if (rv != SECSuccess) SECU_PrintError(progName, "SSL_CipherPrefSet()"); } else { - Usage(progName); + Usage(); } } PORT_Free(cstringSaved); @@ -1394,7 +1411,6 @@ run(void) /* Try to connect to the server */ rv = connectToServer(s, pollset); if (rv != SECSuccess) { - ; error = 1; goto done; } @@ -1406,13 +1422,18 @@ run(void) pollset[SSOCK_FD].in_flags |= (clientSpeaksFirst ? 0 : PR_POLL_READ); else pollset[SSOCK_FD].in_flags |= PR_POLL_READ; - pollset[STDIN_FD].fd = PR_GetSpecialFD(PR_StandardInput); - if (!REQUEST_WAITING) { - pollset[STDIN_FD].in_flags = PR_POLL_READ; - npds = 2; + if (requestFile) { + pollset[STDIN_FD].fd = PR_Open(requestFile, PR_RDONLY, 0); + if (!pollset[STDIN_FD].fd) { + fprintf(stderr, "%s: unable to open input file: %s\n", + progName, requestFile); + error = 1; + goto done; + } } else { - npds = 1; + pollset[STDIN_FD].fd = PR_GetSpecialFD(PR_StandardInput); } + pollset[STDIN_FD].in_flags = PR_POLL_READ; std_out = PR_GetSpecialFD(PR_StandardOutput); #if defined(WIN32) || defined(OS2) @@ -1458,10 +1479,9 @@ run(void) requestToExit = PR_FALSE; FPRINTF(stderr, "%s: ready...\n", progName); while (!requestToExit && - ((pollset[SSOCK_FD].in_flags | pollset[STDIN_FD].in_flags) || - REQUEST_WAITING)) { - char buf[4000]; /* buffer for stdin */ - int nb; /* num bytes read from stdin. */ + (pollset[SSOCK_FD].in_flags || pollset[STDIN_FD].in_flags)) { + PRUint8 buf[4000]; /* buffer for stdin */ + int nb; /* num bytes read from stdin. */ rv = restartHandshakeAfterServerCertIfNeeded(s, &serverCertAuth, override); @@ -1475,7 +1495,8 @@ run(void) pollset[STDIN_FD].out_flags = 0; FPRINTF(stderr, "%s: about to call PR_Poll !\n", progName); - filesReady = PR_Poll(pollset, npds, PR_INTERVAL_NO_TIMEOUT); + filesReady = PR_Poll(pollset, PR_ARRAY_SIZE(pollset), + PR_INTERVAL_NO_TIMEOUT); if (filesReady < 0) { SECU_PrintError(progName, "select failed"); error = 1; @@ -1497,14 +1518,6 @@ run(void) "%s: PR_Poll returned 0x%02x for socket out_flags.\n", progName, pollset[SSOCK_FD].out_flags); } - if (REQUEST_WAITING) { - error = writeBytesToServer(s, requestString, requestStringLen); - if (error) { - goto done; - } - requestSent = PR_TRUE; - pollset[SSOCK_FD].in_flags = PR_POLL_READ; - } if (pollset[STDIN_FD].out_flags & PR_POLL_READ) { /* Read from stdin and write to socket */ nb = PR_Read(pollset[STDIN_FD].fd, buf, sizeof(buf)); @@ -1518,6 +1531,8 @@ run(void) } else if (nb == 0) { /* EOF on stdin, stop polling stdin for read. */ pollset[STDIN_FD].in_flags = 0; + if (actAsServer) + requestToExit = PR_TRUE; } else { error = writeBytesToServer(s, buf, nb); if (error) { @@ -1532,12 +1547,12 @@ run(void) "%s: PR_Poll returned 0x%02x for socket out_flags.\n", progName, pollset[SSOCK_FD].out_flags); } - if ((pollset[SSOCK_FD].out_flags & PR_POLL_READ) || - (pollset[SSOCK_FD].out_flags & PR_POLL_ERR) #ifdef PR_POLL_HUP - || (pollset[SSOCK_FD].out_flags & PR_POLL_HUP) +#define POLL_RECV_FLAGS (PR_POLL_READ | PR_POLL_ERR | PR_POLL_HUP) +#else +#define POLL_RECV_FLAGS (PR_POLL_READ | PR_POLL_ERR) #endif - ) { + if (pollset[SSOCK_FD].out_flags & POLL_RECV_FLAGS) { /* Read from socket and write to stdout */ nb = PR_Recv(pollset[SSOCK_FD].fd, buf, sizeof buf, 0, maxInterval); FPRINTF(stderr, "%s: Read from server %d bytes\n", progName, nb); @@ -1554,7 +1569,7 @@ run(void) if (skipProtoHeader != PR_TRUE || wrStarted == PR_TRUE) { PR_Write(std_out, buf, nb); } else { - separateReqHeader(std_out, buf, nb, &wrStarted, + separateReqHeader(std_out, (char *)buf, nb, &wrStarted, &headerSeparatorPtrnId); } if (verbose) @@ -1568,42 +1583,10 @@ done: if (s) { PR_Close(s); } - - return error; -} - -PRInt32 -ReadFile(const char *filename, char **data) -{ - char *ret = NULL; - char buf[8192]; - unsigned int len = 0; - PRStatus rv; - - PRFileDesc *fd = PR_Open(filename, PR_RDONLY, 0); - if (!fd) - return -1; - - for (;;) { - rv = PR_Read(fd, buf, sizeof(buf)); - if (rv < 0) { - PR_Free(ret); - return rv; - } - - if (!rv) - break; - - ret = PR_Realloc(ret, len + rv); - if (!ret) { - return -1; - } - PORT_Memcpy(ret + len, buf, rv); - len += rv; + if (requestFile && pollset[STDIN_FD].fd) { + PR_Close(pollset[STDIN_FD].fd); } - - *data = ret; - return len; + return error; } int @@ -1653,26 +1636,22 @@ main(int argc, char **argv) switch (optstate->option) { case '?': default: - Usage(progName); + Usage(); break; case '4': allowIPv6 = PR_FALSE; if (!allowIPv4) - Usage(progName); + Usage(); break; case '6': allowIPv4 = PR_FALSE; if (!allowIPv6) - Usage(progName); + Usage(); break; case 'A': - requestStringLen = ReadFile(optstate->value, &requestString); - if (requestStringLen < 0) { - fprintf(stderr, "Couldn't read file %s\n", optstate->value); - exit(1); - } + requestFile = PORT_Strdup(optstate->value); break; case 'C': @@ -1735,7 +1714,7 @@ main(int argc, char **argv) actAsServer = 1; } else { if (strcmp(optstate->value, "client")) { - Usage(progName); + Usage(); } } break; @@ -1768,16 +1747,21 @@ main(int argc, char **argv) if (!strcmp(optstate->value, "alt-server-hello")) { enableAltServerHello = PR_TRUE; } else { - Usage(progName); + Usage(); } break; case 'Y': - PrintCipherUsage(progName); + PrintCipherUsage(); exit(0); break; case 'Z': enableZeroRtt = PR_TRUE; + zeroRttData = PORT_ZAlloc(ZERO_RTT_MAX); + if (!zeroRttData) { + fprintf(stderr, "Unable to allocate buffer for 0-RTT\n"); + exit(1); + } break; case 'a': @@ -1786,7 +1770,7 @@ main(int argc, char **argv) } else if (!hs2SniHostName) { hs2SniHostName = PORT_Strdup(optstate->value); } else { - Usage(progName); + Usage(); } break; @@ -1875,7 +1859,7 @@ main(int argc, char **argv) if (rv != SECSuccess) { PL_DestroyOptState(optstate); fprintf(stderr, "Bad group specified.\n"); - Usage(progName); + Usage(); } break; } @@ -1889,18 +1873,18 @@ main(int argc, char **argv) enabledVersions, &enabledVersions) != SECSuccess) { fprintf(stderr, "Bad version specified.\n"); - Usage(progName); + Usage(); } PORT_Free(versionString); } if (optstatus == PL_OPT_BAD) { - Usage(progName); + Usage(); } if (!host || !portno) { fprintf(stderr, "%s: parameters -h and -p are mandatory\n", progName); - Usage(progName); + Usage(); } if (serverCertAuth.testFreshStatusFromSideChannel && @@ -2060,20 +2044,13 @@ done: PR_Close(s); } - if (hs1SniHostName) { - PORT_Free(hs1SniHostName); - } - if (hs2SniHostName) { - PORT_Free(hs2SniHostName); - } - if (nickname) { - PORT_Free(nickname); - } - if (pwdata.data) { - PORT_Free(pwdata.data); - } + PORT_Free((void *)requestFile); + PORT_Free(hs1SniHostName); + PORT_Free(hs2SniHostName); + PORT_Free(nickname); + PORT_Free(pwdata.data); PORT_Free(host); - PORT_Free(requestString); + PORT_Free(zeroRttData); if (enabledGroups) { PORT_Free(enabledGroups); diff --git a/security/nss/cmd/vfyserv/vfyserv.c b/security/nss/cmd/vfyserv/vfyserv.c index aa648ad8c..4234ecd09 100644 --- a/security/nss/cmd/vfyserv/vfyserv.c +++ b/security/nss/cmd/vfyserv/vfyserv.c @@ -327,9 +327,7 @@ do_connects(void *a, int connection) } void -client_main(unsigned short port, - int connections, - const char *hostName) +client_main(int connections) { int i; SECStatus secStatus; @@ -553,7 +551,7 @@ main(int argc, char **argv) } } - client_main(port, connections, hostName); + client_main(connections); cleanup: if (doOcspCheck) { diff --git a/security/nss/cmd/vfyserv/vfyutil.c b/security/nss/cmd/vfyserv/vfyutil.c index 2f1b53262..d3d8a206e 100644 --- a/security/nss/cmd/vfyserv/vfyutil.c +++ b/security/nss/cmd/vfyserv/vfyutil.c @@ -310,13 +310,13 @@ myHandshakeCallback(PRFileDesc *socket, void *arg) void disableAllSSLCiphers(void) { - const PRUint16 *cipherSuites = SSL_ImplementedCiphers; + const PRUint16 *allSuites = SSL_ImplementedCiphers; int i = SSL_NumImplementedCiphers; SECStatus rv; /* disable all the SSL3 cipher suites */ while (--i >= 0) { - PRUint16 suite = cipherSuites[i]; + PRUint16 suite = allSuites[i]; rv = SSL_CipherPrefSetDefault(suite, PR_FALSE); if (rv != SECSuccess) { fprintf(stderr, diff --git a/security/nss/coreconf/Werror.mk b/security/nss/coreconf/Werror.mk index 69155eb14..a569a497c 100644 --- a/security/nss/coreconf/Werror.mk +++ b/security/nss/coreconf/Werror.mk @@ -48,9 +48,11 @@ ifndef WARNING_CFLAGS else # This tests to see if enabling the warning is possible before # setting an option to disable it. - disable_warning = $(shell $(CC) -x c -E -Werror -W$(1) /dev/null >/dev/null 2>&1 && echo -Wno-$(1)) + set_warning = $(shell $(CC) -x c -E -Werror -W$(1) /dev/null >/dev/null 2>&1 && echo -W$(2)$(1)) + enable_warning = $(call set_warning,$(1),) + disable_warning = $(call set_warning,$(1),no-) - WARNING_CFLAGS = -Wall + WARNING_CFLAGS = -Wall $(call enable_warning,shadow) ifdef CC_IS_CLANG # -Qunused-arguments : clang objects to arguments that it doesn't understand # and fixing this would require rearchitecture diff --git a/security/nss/coreconf/config.mk b/security/nss/coreconf/config.mk index 55d95c30e..b62f6cef4 100644 --- a/security/nss/coreconf/config.mk +++ b/security/nss/coreconf/config.mk @@ -181,6 +181,10 @@ ifndef NSS_FORCE_FIPS DEFINES += -DNSS_NO_INIT_SUPPORT endif +ifdef NSS_SEED_ONLY_DEV_URANDOM +DEFINES += -DSEED_ONLY_DEV_URANDOM +endif + # Avoid building object leak test code for optimized library ifndef BUILD_OPT ifdef PKIX_OBJECT_LEAK_TEST diff --git a/security/nss/coreconf/coreconf.dep b/security/nss/coreconf/coreconf.dep index 5182f7555..590d1bfae 100644 --- a/security/nss/coreconf/coreconf.dep +++ b/security/nss/coreconf/coreconf.dep @@ -10,3 +10,4 @@ */ #error "Do not include this header file." + diff --git a/security/nss/coreconf/nsinstall/pathsub.c b/security/nss/coreconf/nsinstall/pathsub.c index a42a9f30a..c31a946f0 100644 --- a/security/nss/coreconf/nsinstall/pathsub.c +++ b/security/nss/coreconf/nsinstall/pathsub.c @@ -212,7 +212,7 @@ reversepath(char *inpath, char *name, int len, char *outpath) xchdir(".."); } else { cp -= 3; - strncpy(cp, "../", 3); + memcpy(cp, "../", 3); xchdir(buf); } } diff --git a/security/nss/coreconf/werror.py b/security/nss/coreconf/werror.py index c469c4002..0e2d41c63 100644 --- a/security/nss/coreconf/werror.py +++ b/security/nss/coreconf/werror.py @@ -54,7 +54,7 @@ def main(): set_warning(w, 'no-') print('-Qunused-arguments') - # set_warning('shadow') # Bug 1309068 + set_warning('shadow') if __name__ == '__main__': main() diff --git a/security/nss/cpputil/databuffer.cc b/security/nss/cpputil/databuffer.cc index d60ebccb3..1420d76b4 100644 --- a/security/nss/cpputil/databuffer.cc +++ b/security/nss/cpputil/databuffer.cc @@ -18,12 +18,12 @@ namespace nss_test { -void DataBuffer::Assign(const uint8_t* data, size_t len) { - if (data) { - Allocate(len); - memcpy(static_cast<void*>(data_), static_cast<const void*>(data), len); +void DataBuffer::Assign(const uint8_t* d, size_t l) { + if (d) { + Allocate(l); + memcpy(static_cast<void*>(data_), static_cast<const void*>(d), l); } else { - assert(len == 0); + assert(l == 0); data_ = nullptr; len_ = 0; } diff --git a/security/nss/cpputil/databuffer.h b/security/nss/cpputil/databuffer.h index 58e07efe1..5ec035098 100644 --- a/security/nss/cpputil/databuffer.h +++ b/security/nss/cpputil/databuffer.h @@ -17,8 +17,8 @@ namespace nss_test { class DataBuffer { public: DataBuffer() : data_(nullptr), len_(0) {} - DataBuffer(const uint8_t* data, size_t len) : data_(nullptr), len_(0) { - Assign(data, len); + DataBuffer(const uint8_t* d, size_t l) : data_(nullptr), len_(0) { + Assign(d, l); } DataBuffer(const DataBuffer& other) : data_(nullptr), len_(0) { Assign(other); @@ -32,17 +32,17 @@ class DataBuffer { return *this; } - void Allocate(size_t len) { + void Allocate(size_t l) { delete[] data_; - data_ = new uint8_t[len ? len : 1]; // Don't depend on new [0]. - len_ = len; + data_ = new uint8_t[l ? l : 1]; // Don't depend on new [0]. + len_ = l; } - void Truncate(size_t len) { len_ = (std::min)(len_, len); } + void Truncate(size_t l) { len_ = (std::min)(len_, l); } void Assign(const DataBuffer& other) { Assign(other.data(), other.len()); } - void Assign(const uint8_t* data, size_t len); + void Assign(const uint8_t* d, size_t l); // Write will do a new allocation and expand the size of the buffer if needed. // Returns the offset of the end of the write. diff --git a/security/nss/cpputil/scoped_ptrs.h b/security/nss/cpputil/scoped_ptrs.h index 8a0b4f5ab..6ffef4dd3 100644 --- a/security/nss/cpputil/scoped_ptrs.h +++ b/security/nss/cpputil/scoped_ptrs.h @@ -45,6 +45,7 @@ struct ScopedDelete { void operator()(SEC_PKCS12DecoderContext* dcx) { SEC_PKCS12DecoderFinish(dcx); } + void operator()(CERTDistNames* names) { CERT_FreeDistNames(names); } }; template <class T> @@ -78,6 +79,7 @@ SCOPED(PK11Context); SCOPED(PK11GenericObject); SCOPED(SSLResumptionTokenInfo); SCOPED(SEC_PKCS12DecoderContext); +SCOPED(CERTDistNames); #undef SCOPED diff --git a/security/nss/cpputil/tls_parser.cc b/security/nss/cpputil/tls_parser.cc index e4c06aa91..efedd7a65 100644 --- a/security/nss/cpputil/tls_parser.cc +++ b/security/nss/cpputil/tls_parser.cc @@ -46,6 +46,21 @@ bool TlsParser::Read(DataBuffer* val, size_t len) { return true; } +bool TlsParser::ReadFromMark(DataBuffer* val, size_t len, size_t mark) { + auto saved = offset_; + offset_ = mark; + + if (remaining() < len) { + offset_ = saved; + return false; + } + + val->Assign(ptr(), len); + + offset_ = saved; + return true; +} + bool TlsParser::ReadVariable(DataBuffer* val, size_t len_size) { uint32_t len; if (!Read(&len, len_size)) { diff --git a/security/nss/cpputil/tls_parser.h b/security/nss/cpputil/tls_parser.h index 436c11e76..56f562e07 100644 --- a/security/nss/cpputil/tls_parser.h +++ b/security/nss/cpputil/tls_parser.h @@ -123,6 +123,7 @@ class TlsParser { bool Read(uint32_t* val, size_t size); // Reads len bytes into dest buffer, overwriting it. bool Read(DataBuffer* dest, size_t len); + bool ReadFromMark(DataBuffer* val, size_t len, size_t mark); // Reads bytes into dest buffer, overwriting it. The number of bytes is // determined by reading from len_size bytes from the stream first. bool ReadVariable(DataBuffer* dest, size_t len_size); diff --git a/security/nss/fuzz/fuzz.gyp b/security/nss/fuzz/fuzz.gyp index ed1f53d58..69e178319 100644 --- a/security/nss/fuzz/fuzz.gyp +++ b/security/nss/fuzz/fuzz.gyp @@ -44,6 +44,9 @@ # This is a static build of pk11wrap, softoken, and freebl. '<(DEPTH)/lib/pk11wrap/pk11wrap.gyp:pk11wrap_static', ], + 'cflags_cc': [ + '-Wno-error=shadow', + ], 'conditions': [ ['fuzz_oss==0', { 'sources': [ diff --git a/security/nss/fuzz/tls_client_target.cc b/security/nss/fuzz/tls_client_target.cc index e59550984..a5b2a2c5f 100644 --- a/security/nss/fuzz/tls_client_target.cc +++ b/security/nss/fuzz/tls_client_target.cc @@ -87,15 +87,12 @@ static void SetupCallbacks(PRFileDesc* fd, ClientConfig* config) { } extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t len) { - static std::unique_ptr<NSSDatabase> db(new NSSDatabase()); + std::unique_ptr<NSSDatabase> db(new NSSDatabase()); assert(db != nullptr); EnableAllProtocolVersions(); std::unique_ptr<ClientConfig> config(new ClientConfig(data, len)); - // Clear the cache. We never want to resume as we couldn't reproduce that. - SSL_ClearSessionCache(); - // Reset the RNG state. assert(RNG_RandomUpdate(NULL, 0) == SECSuccess); @@ -114,6 +111,9 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t len) { SetupCallbacks(ssl_fd, config.get()); DoHandshake(ssl_fd, false); + // Release all SIDs. + SSL_ClearSessionCache(); + return 0; } diff --git a/security/nss/gtests/freebl_gtest/blake2b_unittest.cc b/security/nss/gtests/freebl_gtest/blake2b_unittest.cc index e6b0c1157..ac9cca83f 100644 --- a/security/nss/gtests/freebl_gtest/blake2b_unittest.cc +++ b/security/nss/gtests/freebl_gtest/blake2b_unittest.cc @@ -50,7 +50,7 @@ TEST_P(Blake2BKATUnkeyed, Unkeyed) { TEST_P(Blake2BKATKeyed, Keyed) { std::vector<uint8_t> values(BLAKE2B512_LENGTH); SECStatus rv = BLAKE2B_MAC_HashBuf(values.data(), kat_data.data(), - std::get<0>(GetParam()), key.data(), + std::get<0>(GetParam()), kat_key.data(), BLAKE2B_KEY_SIZE); ASSERT_EQ(SECSuccess, rv); EXPECT_EQ(values, std::get<1>(GetParam())); @@ -139,7 +139,7 @@ TEST_F(Blake2BTests, NullTest) { EXPECT_EQ(std::get<1>(TestcasesUnkeyed[0]), digest); digest = std::vector<uint8_t>(BLAKE2B512_LENGTH); - rv = BLAKE2B_MAC_HashBuf(digest.data(), nullptr, 0, key.data(), + rv = BLAKE2B_MAC_HashBuf(digest.data(), nullptr, 0, kat_key.data(), BLAKE2B_KEY_SIZE); ASSERT_EQ(SECSuccess, rv); EXPECT_EQ(std::get<1>(TestcasesKeyed[0]), digest); diff --git a/security/nss/gtests/freebl_gtest/kat/blake2b_kat.h b/security/nss/gtests/freebl_gtest/kat/blake2b_kat.h index 28921cc94..2d73a4ab5 100644 --- a/security/nss/gtests/freebl_gtest/kat/blake2b_kat.h +++ b/security/nss/gtests/freebl_gtest/kat/blake2b_kat.h @@ -7,7 +7,7 @@ #include <vector> #include <stdint.h> -const std::vector<uint8_t> key = { +const std::vector<uint8_t> kat_key = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, diff --git a/security/nss/gtests/nss_bogo_shim/config.cc b/security/nss/gtests/nss_bogo_shim/config.cc index 2e6f7f775..603bb6029 100644 --- a/security/nss/gtests/nss_bogo_shim/config.cc +++ b/security/nss/gtests/nss_bogo_shim/config.cc @@ -9,26 +9,37 @@ #include <queue> #include <string> -bool ConfigEntryBase::ParseInternal(std::queue<const char *> *args, - std::string *out) { - if (args->empty()) return false; - *out = args->front(); - args->pop(); +bool ConfigEntryBase::ParseInternal(std::queue<const char *> &args, + std::vector<int> &out) { + if (args.empty()) return false; + + char *endptr; + out.push_back(strtol(args.front(), &endptr, 10)); + args.pop(); + + return !*endptr; +} + +bool ConfigEntryBase::ParseInternal(std::queue<const char *> &args, + std::string &out) { + if (args.empty()) return false; + out = args.front(); + args.pop(); return true; } -bool ConfigEntryBase::ParseInternal(std::queue<const char *> *args, int *out) { - if (args->empty()) return false; +bool ConfigEntryBase::ParseInternal(std::queue<const char *> &args, int &out) { + if (args.empty()) return false; char *endptr; - *out = strtol(args->front(), &endptr, 10); - args->pop(); + out = strtol(args.front(), &endptr, 10); + args.pop(); return !*endptr; } -bool ConfigEntryBase::ParseInternal(std::queue<const char *> *args, bool *out) { - *out = true; +bool ConfigEntryBase::ParseInternal(std::queue<const char *> &args, bool &out) { + out = true; return true; } @@ -51,7 +62,7 @@ Config::Status Config::ParseArgs(int argc, char **argv) { if (e == entries_.end()) { return kUnknownFlag; } - if (!e->second->Parse(&args)) return kMalformedArgument; + if (!e->second->Parse(args)) return kMalformedArgument; } return kOK; diff --git a/security/nss/gtests/nss_bogo_shim/config.h b/security/nss/gtests/nss_bogo_shim/config.h index 822df65b3..0e7fb5ed5 100644 --- a/security/nss/gtests/nss_bogo_shim/config.h +++ b/security/nss/gtests/nss_bogo_shim/config.h @@ -23,18 +23,19 @@ // Abstract base class for a given config flag. class ConfigEntryBase { public: - ConfigEntryBase(const std::string& name, const std::string& type) - : name_(name), type_(type) {} + ConfigEntryBase(const std::string& nm, const std::string& typ) + : name_(nm), type_(typ) {} virtual ~ConfigEntryBase() {} const std::string& type() const { return type_; } - virtual bool Parse(std::queue<const char*>* args) = 0; + virtual bool Parse(std::queue<const char*>& args) = 0; protected: - bool ParseInternal(std::queue<const char*>* args, std::string* out); - bool ParseInternal(std::queue<const char*>* args, int* out); - bool ParseInternal(std::queue<const char*>* args, bool* out); + bool ParseInternal(std::queue<const char*>& args, std::vector<int>& out); + bool ParseInternal(std::queue<const char*>& args, std::string& out); + bool ParseInternal(std::queue<const char*>& args, int& out); + bool ParseInternal(std::queue<const char*>& args, bool& out); const std::string name_; const std::string type_; @@ -48,8 +49,8 @@ class ConfigEntry : public ConfigEntryBase { : ConfigEntryBase(name, typeid(T).name()), value_(init) {} T get() const { return value_; } - bool Parse(std::queue<const char*>* args) { - return ParseInternal(args, &value_); + bool Parse(std::queue<const char*>& args) { + return ParseInternal(args, value_); } private: diff --git a/security/nss/gtests/nss_bogo_shim/config.json b/security/nss/gtests/nss_bogo_shim/config.json index 03f875466..6dc155bef 100644 --- a/security/nss/gtests/nss_bogo_shim/config.json +++ b/security/nss/gtests/nss_bogo_shim/config.json @@ -1,69 +1,16 @@ { "DisabledTests": { "### These tests break whenever we rev versions, so just leave them here for easy uncommenting":"", - "SendWarningAlerts-Pass":"BoringSSL updated", - "SendBogusAlertType":"BoringSSL updated", - "SendEmptyRecords-Pass":"BoringSSL updated", - "ExtraCompressionMethods-TLS12":"BoringSSL updated", - "SendSNIWarningAlert":"BoringSSL updated", - "NoNullCompression-TLS12":"BoringSSL updated", - "InvalidCompressionMethod":"BoringSSL updated", - "SupportTicketsWithSessionID":"BoringSSL updated", - "NoSharedCipher":"BoringSSL updated", - "ServerHelloBogusCipher":"BoringSSL updated", - "ClientHelloVersionTooHigh":"BoringSSL updated", - "ServerAuth-SignatureType":"BoringSSL updated", - "ECDSACurveMismatch-Verify-TLS12":"BoringSSL updated", - "UnknownExtension-Client":"BoringSSL updated", - "UnofferedExtension-Client":"BoringSSL updated", - "SendClientVersion-RSA":"BoringSSL updated", - "SupportedCurves-ServerHello-TLS12":"BoringSSL updated", - "Basic-Client*Sync":"BoringSSL updated", - "Resume-Client-CipherMismatch":"BoringSSL updated", - "ClientAuth-SignatureType":"BoringSSL updated", - "Agree-Digest-Default":"BoringSSL updated", - "Basic-Server*Sync":"BoringSSL updated", - "ClientAuth-*-Sync":"BoringSSL updated", - "RSA-PSS-Default*":"BoringSSL updated", - "Renegotiate-Server-NoExt*":"BoringSSL updated", - "Downgrade-TLS12*":"BoringSSL updated", - "MaxCBCPadding":"BoringSSL updated", - "UnknownCipher":"BoringSSL updated", - "LargeMessage":"BoringSSL updated", - "NoCommonCurves":"BoringSSL updated", - "UnknownCurve":"BoringSSL updated", - "SessionTicketsDisabled*":"BoringSSL updated", - "BadFinished-*":"BoringSSL updated", - "ServerSkipCertificateVerify":"BoringSSL updated", - "*VersionTolerance":"BoringSSL updated", - "ConflictingVersionNegotiation*":"BoringSSL updated", - "Ed25519DefaultDisable*":"BoringSSL updated", - "*SHA1-Fallback*":"BoringSSL updated", - "ExtendedMasterSecret-NoToNo*":"BoringSSL updated", - "ServerNameExtensionClientMissing*":"BoringSSL updated", - "NoClientCertificate*":"BoringSSL updated", - "ServerCipherFilter*":"BoringSSL updated", - "*FallbackSCSV*":"BoringSSL updated", - "LooseInitialRecordVersion*":"BoringSSL updated", - "ALPNClient*":"BoringSSL updated", - "MinimumVersion*":"BoringSSL updated", - "VersionNegotiation*":"BoringSSL updated", - "*Client-ClientAuth*":"BoringSSL updated", - "*Server-ClientAuth*":"BoringSSL updated", - "NoExtendedMasterSecret*":"BoringSSL updated", - "PointFormat*":"BoringSSL updated", - "*Sync-SplitHandshakeRecords*":"BoringSSL updated", - "*Sync-PackHandshakeFlight*":"BoringSSL updated", - "TicketSessionIDLength*":"BoringSSL updated", - "*LargeRecord*":"BoringSSL updated", - "WrongMessageType-NewSessionTicket":"BoringSSL updated", - "WrongMessageType*Certificate*":"BoringSSL updated", - "WrongMessageType*Client*":"BoringSSL updated", - "WrongMessageType*Server*":"BoringSSL updated", - "WrongMessageType*DTLS":"BoringSSL updated", - "GarbageCertificate*":"BoringSSL updated", - "EmptyExtensions*":"BoringSSL updated", - "*OmitExtensions*":"BoringSSL updated", + "ServerBogusVersion":"Check that SH.legacy_version=TLS12 when the server picks TLS 1.3 (Bug 1443761)", + "DummyPQPadding-Server*":"Boring is testing a dummy PQ padding extension", + "VerifyPreferences-Enforced":"NSS sends alerts in response to errors in protected handshake messages in the clear", + "Draft-Downgrade-Server":"Boring implements a draft downgrade sentinel used for measurements.", + "FilterExtraAlgorithms":"NSS doesn't allow sending unsupported signature algorithms", + "SendBogusAlertType":"Unexpected TLS alerts should abort connections (Bug 1438263)", + "VerifyPreferences-Ed25519":"Add Ed25519 support (Bug 1325335)", + "Ed25519DefaultDisable*":"Add Ed25519 support (Bug 1325335)", + "ServerCipherFilter*":"Add Ed25519 support (Bug 1325335)", + "GarbageCertificate*":"Send bad_certificate alert when certificate parsing fails (Bug 1441565)", "SupportedVersionSelection-TLS12":"Should maybe reject TLS 1.2 in SH.supported_versions (Bug 1438266)", "*TLS13*":"(NSS=19, BoGo=18)", "*HelloRetryRequest*":"(NSS=19, BoGo=18)", @@ -108,7 +55,6 @@ "WrongMessageType-TLS13-ServerCertificateVerify":"nss updated/broken", "WrongMessageType-TLS13-ServerCertificate":"nss updated/broken", "WrongMessageType-TLS13-ServerFinished":"nss updated/broken", - "EncryptedExtensionsWithKeyShare":"nss updated/broken", "EmptyEncryptedExtensions":"nss updated/broken", "TrailingMessageData-*": "Bug 1304575", "DuplicateKeyShares":"Bug 1304578", diff --git a/security/nss/gtests/nss_bogo_shim/nss_bogo_shim.cc b/security/nss/gtests/nss_bogo_shim/nss_bogo_shim.cc index e12714e8d..72dbd5771 100644 --- a/security/nss/gtests/nss_bogo_shim/nss_bogo_shim.cc +++ b/security/nss/gtests/nss_bogo_shim/nss_bogo_shim.cc @@ -5,6 +5,7 @@ * You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "config.h" +#include <algorithm> #include <cstdlib> #include <iostream> #include <memory> @@ -90,9 +91,14 @@ class TestAgent { PRStatus prv; PRNetAddr addr; - prv = PR_StringToNetAddr("127.0.0.1", &addr); + // Try IPv6 first. + prv = PR_StringToNetAddr("::1", &addr); if (prv != PR_SUCCESS) { - return false; + // If that fails, try IPv4. + prv = PR_StringToNetAddr("127.0.0.1", &addr); + if (prv != PR_SUCCESS) { + return false; + } } addr.inet.port = PR_htons(cfg_.get<int>("port")); @@ -256,7 +262,11 @@ class TestAgent { } bool SetupOptions() { - SECStatus rv = SSL_OptionSet(ssl_fd_, SSL_ENABLE_SESSION_TICKETS, PR_TRUE); + SECStatus rv = + SSL_OptionSet(ssl_fd_, SSL_ENABLE_TLS13_COMPAT_MODE, PR_TRUE); + if (rv != SECSuccess) return false; + + rv = SSL_OptionSet(ssl_fd_, SSL_ENABLE_SESSION_TICKETS, PR_TRUE); if (rv != SECSuccess) return false; SSLVersionRange vrange; @@ -287,6 +297,26 @@ class TestAgent { if (rv != SECSuccess) return false; } + // Set supported signature schemes. + auto sign_prefs = cfg_.get<std::vector<int>>("signing-prefs"); + auto verify_prefs = cfg_.get<std::vector<int>>("verify-prefs"); + if (sign_prefs.empty()) { + sign_prefs = verify_prefs; + } else if (!verify_prefs.empty()) { + return false; // Both shouldn't be set. + } + if (!sign_prefs.empty()) { + std::vector<SSLSignatureScheme> sig_schemes; + std::transform( + sign_prefs.begin(), sign_prefs.end(), std::back_inserter(sig_schemes), + [](int scheme) { return static_cast<SSLSignatureScheme>(scheme); }); + + rv = SSL_SignatureSchemePrefSet( + ssl_fd_, sig_schemes.data(), + static_cast<unsigned int>(sig_schemes.size())); + if (rv != SECSuccess) return false; + } + if (cfg_.get<bool>("fallback-scsv")) { rv = SSL_OptionSet(ssl_fd_, SSL_ENABLE_FALLBACK_SCSV, PR_TRUE); if (rv != SECSuccess) return false; @@ -410,7 +440,7 @@ class TestAgent { size_t left = sizeof(block); while (left) { - int32_t rv = PR_Read(ssl_fd_, block, left); + rv = PR_Read(ssl_fd_, block, left); if (rv < 0) { std::cerr << "Failure reading\n"; return SECFailure; @@ -481,6 +511,24 @@ class TestAgent { } } + auto sig_alg = cfg_.get<int>("expect-peer-signature-algorithm"); + if (sig_alg) { + SSLChannelInfo info; + rv = SSL_GetChannelInfo(ssl_fd_, &info, sizeof(info)); + if (rv != SECSuccess) { + PRErrorCode err = PR_GetError(); + std::cerr << "SSL_GetChannelInfo failed with error=" << FormatError(err) + << std::endl; + return SECFailure; + } + + auto expected = static_cast<SSLSignatureScheme>(sig_alg); + if (info.signatureScheme != expected) { + std::cerr << "Unexpected signature scheme" << std::endl; + return SECFailure; + } + } + return SECSuccess; } @@ -513,6 +561,9 @@ std::unique_ptr<const Config> ReadConfig(int argc, char** argv) { cfg->AddEntry<bool>("verify-peer", false); cfg->AddEntry<std::string>("advertise-alpn", ""); cfg->AddEntry<std::string>("expect-alpn", ""); + cfg->AddEntry<std::vector<int>>("signing-prefs", std::vector<int>()); + cfg->AddEntry<std::vector<int>>("verify-prefs", std::vector<int>()); + cfg->AddEntry<int>("expect-peer-signature-algorithm", 0); auto rv = cfg->ParseArgs(argc, argv); switch (rv) { diff --git a/security/nss/gtests/pk11_gtest/pk11_signature_test.h b/security/nss/gtests/pk11_gtest/pk11_signature_test.h index b14104371..8a12171a0 100644 --- a/security/nss/gtests/pk11_gtest/pk11_signature_test.h +++ b/security/nss/gtests/pk11_gtest/pk11_signature_test.h @@ -25,8 +25,8 @@ struct Pkcs11SignatureTestParams { class Pk11SignatureTest : public ::testing::Test { protected: - Pk11SignatureTest(CK_MECHANISM_TYPE mechanism, SECOidTag hash_oid) - : mechanism_(mechanism), hash_oid_(hash_oid) {} + Pk11SignatureTest(CK_MECHANISM_TYPE mech, SECOidTag hash_oid) + : mechanism_(mech), hash_oid_(hash_oid) {} virtual const SECItem* parameters() const { return nullptr; } CK_MECHANISM_TYPE mechanism() const { return mechanism_; } diff --git a/security/nss/gtests/ssl_gtest/libssl_internals.c b/security/nss/gtests/ssl_gtest/libssl_internals.c index 17b4ffe49..e43113de4 100644 --- a/security/nss/gtests/ssl_gtest/libssl_internals.c +++ b/security/nss/gtests/ssl_gtest/libssl_internals.c @@ -237,22 +237,23 @@ SECStatus SSLInt_AdvanceReadSeqNum(PRFileDesc *fd, PRUint64 to) { if (!ss) { return SECFailure; } - if (to >= RECORD_SEQ_MAX) { + if (to > RECORD_SEQ_MAX) { PORT_SetError(SEC_ERROR_INVALID_ARGS); return SECFailure; } ssl_GetSpecWriteLock(ss); spec = ss->ssl3.crSpec; - spec->seqNum = to; + spec->nextSeqNum = to; /* For DTLS, we need to fix the record sequence number. For this, we can just * scrub the entire structure on the assumption that the new sequence number * is far enough past the last received sequence number. */ - if (spec->seqNum <= spec->recvdRecords.right + DTLS_RECVD_RECORDS_WINDOW) { + if (spec->nextSeqNum <= + spec->recvdRecords.right + DTLS_RECVD_RECORDS_WINDOW) { PORT_SetError(SEC_ERROR_INVALID_ARGS); return SECFailure; } - dtls_RecordSetRecvd(&spec->recvdRecords, spec->seqNum); + dtls_RecordSetRecvd(&spec->recvdRecords, spec->nextSeqNum - 1); ssl_ReleaseSpecWriteLock(ss); return SECSuccess; @@ -270,7 +271,7 @@ SECStatus SSLInt_AdvanceWriteSeqNum(PRFileDesc *fd, PRUint64 to) { return SECFailure; } ssl_GetSpecWriteLock(ss); - ss->ssl3.cwSpec->seqNum = to; + ss->ssl3.cwSpec->nextSeqNum = to; ssl_ReleaseSpecWriteLock(ss); return SECSuccess; } @@ -284,7 +285,7 @@ SECStatus SSLInt_AdvanceWriteSeqByAWindow(PRFileDesc *fd, PRInt32 extra) { return SECFailure; } ssl_GetSpecReadLock(ss); - to = ss->ssl3.cwSpec->seqNum + DTLS_RECVD_RECORDS_WINDOW + extra; + to = ss->ssl3.cwSpec->nextSeqNum + DTLS_RECVD_RECORDS_WINDOW + extra; ssl_ReleaseSpecReadLock(ss); return SSLInt_AdvanceWriteSeqNum(fd, to); } diff --git a/security/nss/gtests/ssl_gtest/manifest.mn b/security/nss/gtests/ssl_gtest/manifest.mn index 5d893bab3..8547e56d1 100644 --- a/security/nss/gtests/ssl_gtest/manifest.mn +++ b/security/nss/gtests/ssl_gtest/manifest.mn @@ -36,6 +36,7 @@ CPPSRCS = \ ssl_loopback_unittest.cc \ ssl_misc_unittest.cc \ ssl_record_unittest.cc \ + ssl_recordsize_unittest.cc \ ssl_resumption_unittest.cc \ ssl_renegotiation_unittest.cc \ ssl_skip_unittest.cc \ diff --git a/security/nss/gtests/ssl_gtest/rsa8193.h b/security/nss/gtests/ssl_gtest/rsa8193.h new file mode 100644 index 000000000..626516389 --- /dev/null +++ b/security/nss/gtests/ssl_gtest/rsa8193.h @@ -0,0 +1,209 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=2 et sw=2 tw=80: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +// openssl req -nodes -x509 -newkey rsa:8193 -out cert.pem -days 365 +static const uint8_t rsa8193[] = { + 0x30, 0x82, 0x09, 0x61, 0x30, 0x82, 0x05, 0x48, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x09, 0x00, 0xaf, 0xff, 0x37, 0x91, 0x3e, 0x44, 0xae, 0x57, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x0b, 0x05, 0x00, 0x30, 0x45, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, + 0x04, 0x06, 0x13, 0x02, 0x41, 0x55, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, + 0x55, 0x04, 0x08, 0x0c, 0x0a, 0x53, 0x6f, 0x6d, 0x65, 0x2d, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0a, + 0x0c, 0x18, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x20, 0x57, + 0x69, 0x64, 0x67, 0x69, 0x74, 0x73, 0x20, 0x50, 0x74, 0x79, 0x20, 0x4c, + 0x74, 0x64, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x38, 0x30, 0x35, 0x31, 0x37, + 0x30, 0x39, 0x34, 0x32, 0x32, 0x39, 0x5a, 0x17, 0x0d, 0x31, 0x39, 0x30, + 0x35, 0x31, 0x37, 0x30, 0x39, 0x34, 0x32, 0x32, 0x39, 0x5a, 0x30, 0x45, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x41, + 0x55, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x0a, + 0x53, 0x6f, 0x6d, 0x65, 0x2d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x31, 0x21, + 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x18, 0x49, 0x6e, 0x74, + 0x65, 0x72, 0x6e, 0x65, 0x74, 0x20, 0x57, 0x69, 0x64, 0x67, 0x69, 0x74, + 0x73, 0x20, 0x50, 0x74, 0x79, 0x20, 0x4c, 0x74, 0x64, 0x30, 0x82, 0x04, + 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x04, 0x0f, 0x00, 0x30, 0x82, 0x04, + 0x0a, 0x02, 0x82, 0x04, 0x01, 0x01, 0x77, 0xd6, 0xa9, 0x93, 0x4e, 0x15, + 0xb5, 0x67, 0x70, 0x8e, 0xc3, 0x77, 0x4f, 0xc9, 0x8a, 0x06, 0xd9, 0xb9, + 0xa6, 0x41, 0xb8, 0xfa, 0x4a, 0x13, 0x26, 0xdc, 0x2b, 0xc5, 0x82, 0xa0, + 0x74, 0x8c, 0x1e, 0xe9, 0xc0, 0x70, 0x15, 0x56, 0xec, 0x1f, 0x7e, 0x91, + 0x6e, 0x31, 0x42, 0x8b, 0xd5, 0xe2, 0x0e, 0x9c, 0xeb, 0xff, 0xbc, 0xf9, + 0x42, 0xd3, 0xb9, 0x1c, 0x5e, 0x46, 0x80, 0x90, 0x5f, 0xe1, 0x59, 0x22, + 0x13, 0x71, 0xd3, 0xd6, 0x66, 0x7a, 0xe0, 0x56, 0x04, 0x10, 0x59, 0x01, + 0xb3, 0xb6, 0xd2, 0xc7, 0xa7, 0x3b, 0xbc, 0xe6, 0x38, 0x44, 0xd5, 0x71, + 0x66, 0x1d, 0xb2, 0x63, 0x2f, 0xa9, 0x5e, 0x80, 0x92, 0x3c, 0x21, 0x0e, + 0xe1, 0xda, 0xd6, 0x1d, 0xcb, 0xce, 0xac, 0xe1, 0x5f, 0x97, 0x45, 0x8f, + 0xc1, 0x64, 0x16, 0xa6, 0x88, 0x2a, 0x36, 0x4a, 0x76, 0x64, 0x8f, 0x83, + 0x7a, 0x1d, 0xd8, 0x91, 0x90, 0x7b, 0x58, 0xb8, 0x1c, 0x7f, 0x56, 0x57, + 0x35, 0xfb, 0xf3, 0x1a, 0xcb, 0x7c, 0x66, 0x66, 0x04, 0x95, 0xee, 0x3a, + 0x80, 0xf0, 0xd4, 0x12, 0x3a, 0x7e, 0x7e, 0x5e, 0xb8, 0x55, 0x29, 0x23, + 0x06, 0xd3, 0x85, 0x0c, 0x99, 0x91, 0x42, 0xee, 0x5a, 0x30, 0x7f, 0x52, + 0x20, 0xb3, 0xe2, 0xe7, 0x39, 0x69, 0xb6, 0xfc, 0x42, 0x1e, 0x98, 0xd3, + 0x31, 0xa2, 0xfa, 0x81, 0x52, 0x69, 0x6d, 0x23, 0xf8, 0xc4, 0xc3, 0x3c, + 0x9b, 0x48, 0x75, 0xa8, 0xc7, 0xe7, 0x61, 0x81, 0x1f, 0xf7, 0xce, 0x10, + 0xaa, 0x13, 0xcb, 0x6e, 0x19, 0xc0, 0x4f, 0x6f, 0x90, 0xa8, 0x41, 0xea, + 0x49, 0xdf, 0xe4, 0xef, 0x84, 0x54, 0xb5, 0x37, 0xaf, 0x12, 0x75, 0x1a, + 0x11, 0x4b, 0x58, 0x7f, 0x63, 0x22, 0x33, 0xb1, 0xc8, 0x4d, 0xf2, 0x41, + 0x10, 0xbc, 0x37, 0xb5, 0xd5, 0xb2, 0x21, 0x32, 0x35, 0x9d, 0xf3, 0x8d, + 0xab, 0x66, 0x9d, 0x19, 0x12, 0x71, 0x45, 0xb3, 0x82, 0x5a, 0x5c, 0xff, + 0x2d, 0xcf, 0xf4, 0x5b, 0x56, 0xb8, 0x08, 0xb3, 0xd2, 0x43, 0x8c, 0xac, + 0xd2, 0xf8, 0xcc, 0x6d, 0x90, 0x97, 0xff, 0x12, 0x74, 0x97, 0xf8, 0xa4, + 0xe3, 0x95, 0xae, 0x92, 0xdc, 0x7e, 0x9d, 0x2b, 0xb4, 0x94, 0xc3, 0x8d, + 0x80, 0xe7, 0x77, 0x5c, 0x5b, 0xbb, 0x43, 0xdc, 0xa6, 0xe9, 0xbe, 0x20, + 0xcc, 0x9d, 0x8e, 0xa4, 0x2b, 0xf2, 0x72, 0xdc, 0x44, 0x61, 0x0f, 0xad, + 0x1a, 0x5e, 0xa5, 0x48, 0xe4, 0x42, 0xc5, 0xe4, 0xf1, 0x6d, 0x33, 0xdb, + 0xb2, 0x1b, 0x9f, 0xb2, 0xff, 0x18, 0x0e, 0x62, 0x35, 0x99, 0xed, 0x22, + 0x19, 0x4a, 0x5e, 0xb3, 0x3c, 0x07, 0x8f, 0x6e, 0x22, 0x5b, 0x16, 0x4a, + 0x9f, 0xef, 0xf3, 0xe7, 0xd6, 0x48, 0xe1, 0xb4, 0x3b, 0xab, 0x1b, 0x9e, + 0x53, 0xd7, 0x1b, 0xd9, 0x2d, 0x51, 0x8f, 0xe4, 0x1c, 0xab, 0xdd, 0xb9, + 0xe2, 0xee, 0xe4, 0xdd, 0x60, 0x04, 0x86, 0x6b, 0x4e, 0x7a, 0xc8, 0x09, + 0x51, 0xd1, 0x9b, 0x36, 0x9a, 0x36, 0x7f, 0xe8, 0x6b, 0x09, 0x6c, 0xee, + 0xad, 0x3a, 0x2f, 0xa8, 0x63, 0x92, 0x23, 0x2f, 0x7e, 0x00, 0xe2, 0xd1, + 0xbb, 0xd9, 0x5b, 0x5b, 0xfa, 0x4b, 0x83, 0x00, 0x19, 0x28, 0xfb, 0x7e, + 0xfe, 0x58, 0xab, 0xb7, 0x33, 0x45, 0x8f, 0x75, 0x9a, 0x54, 0x3d, 0x77, + 0x06, 0x75, 0x61, 0x4f, 0x5c, 0x93, 0xa0, 0xf9, 0xe8, 0xcf, 0xf6, 0x04, + 0x14, 0xda, 0x1b, 0x2e, 0x79, 0x35, 0xb8, 0xb4, 0xfa, 0x08, 0x27, 0x9a, + 0x03, 0x70, 0x78, 0x97, 0x8f, 0xae, 0x2e, 0xd5, 0x1c, 0xe0, 0x4d, 0x91, + 0x3a, 0xfe, 0x1a, 0x64, 0xd8, 0x49, 0xdf, 0x6c, 0x66, 0xac, 0xc9, 0x57, + 0x06, 0x72, 0xc0, 0xc0, 0x09, 0x71, 0x6a, 0xd0, 0xb0, 0x7d, 0x35, 0x3f, + 0x53, 0x17, 0x49, 0x38, 0x92, 0x22, 0x55, 0xf6, 0x58, 0x56, 0xa2, 0x42, + 0x77, 0x94, 0xb7, 0x28, 0x0a, 0xa0, 0xd2, 0xda, 0x25, 0xc1, 0xcc, 0x52, + 0x51, 0xd6, 0xba, 0x18, 0x0f, 0x0d, 0xe3, 0x7d, 0xd1, 0xda, 0xd9, 0x0c, + 0x5e, 0x3a, 0xca, 0xe9, 0xf1, 0xf5, 0x65, 0xfc, 0xc3, 0x99, 0x72, 0x25, + 0xf2, 0xc0, 0xa1, 0x8c, 0x43, 0x9d, 0xb2, 0xc9, 0xb1, 0x1a, 0x24, 0x34, + 0x57, 0xd8, 0xa7, 0x52, 0xa3, 0x39, 0x6e, 0x0b, 0xec, 0xbd, 0x5e, 0xc9, + 0x1f, 0x74, 0xed, 0xae, 0xe6, 0x4e, 0x49, 0xe8, 0x87, 0x3e, 0x46, 0x0d, + 0x40, 0x30, 0xda, 0x9d, 0xcf, 0xf5, 0x03, 0x1f, 0x38, 0x29, 0x3b, 0x66, + 0xe5, 0xc0, 0x89, 0x4c, 0xfc, 0x09, 0x62, 0x37, 0x01, 0xf9, 0x01, 0xab, + 0x8d, 0x53, 0x9c, 0x36, 0x5d, 0x36, 0x66, 0x8d, 0x87, 0xf4, 0xab, 0x37, + 0xb7, 0xf7, 0xe3, 0xdf, 0xc1, 0x52, 0xc0, 0x1d, 0x09, 0x92, 0x21, 0x47, + 0x49, 0x9a, 0x19, 0x38, 0x05, 0x62, 0xf3, 0x47, 0x80, 0x89, 0x1e, 0x70, + 0xa1, 0x57, 0xb7, 0x72, 0xd0, 0x41, 0x7a, 0x5c, 0x6a, 0x13, 0x8b, 0x6c, + 0xda, 0xdf, 0x6b, 0x01, 0x15, 0x20, 0xfa, 0xc8, 0x67, 0xee, 0xb2, 0x13, + 0xd8, 0x5f, 0x84, 0x30, 0x44, 0x8e, 0xf9, 0x2a, 0xae, 0x17, 0x53, 0x49, + 0xaa, 0x34, 0x31, 0x12, 0x31, 0xec, 0xf3, 0x25, 0x27, 0x53, 0x6b, 0xb5, + 0x63, 0xa6, 0xbc, 0xf1, 0x77, 0xd4, 0xb4, 0x77, 0xd1, 0xee, 0xad, 0x62, + 0x9d, 0x2c, 0x2e, 0x11, 0x0a, 0xd1, 0x87, 0xfe, 0xef, 0x77, 0x0e, 0xd1, + 0x38, 0xfe, 0xcc, 0x88, 0xaa, 0x1c, 0x06, 0x93, 0x25, 0x56, 0xfe, 0x0c, + 0x52, 0xe9, 0x7f, 0x4c, 0x3b, 0x2a, 0xfb, 0x40, 0x62, 0x29, 0x0a, 0x1d, + 0x58, 0x78, 0x8b, 0x09, 0x25, 0xaa, 0xc6, 0x8f, 0x66, 0x8f, 0xd1, 0x93, + 0x5a, 0xd6, 0x68, 0x35, 0x69, 0x13, 0x5d, 0x42, 0x35, 0x95, 0xcb, 0xc4, + 0xec, 0x17, 0x92, 0x96, 0xcb, 0x4a, 0xb9, 0x8f, 0xe5, 0xc4, 0x4a, 0xe7, + 0x54, 0x52, 0x4c, 0x64, 0x06, 0xac, 0x2f, 0x13, 0x32, 0x02, 0x47, 0x13, + 0x5c, 0xa2, 0x66, 0xdc, 0x36, 0x0c, 0x4f, 0xbb, 0x89, 0x58, 0x85, 0x16, + 0xf1, 0xf1, 0xff, 0xd2, 0x86, 0x54, 0x29, 0xb3, 0x7e, 0x2a, 0xbd, 0xf9, + 0x53, 0x8c, 0xa0, 0x60, 0x60, 0xb2, 0x90, 0x7f, 0x3a, 0x11, 0x5f, 0x2a, + 0x50, 0x74, 0x2a, 0xd1, 0x68, 0x78, 0xdb, 0x31, 0x1b, 0x8b, 0xee, 0xee, + 0x18, 0x97, 0xf3, 0x50, 0x84, 0xc1, 0x8f, 0xe1, 0xc6, 0x01, 0xb4, 0x16, + 0x65, 0x25, 0x0c, 0x03, 0xab, 0xed, 0x4f, 0xd6, 0xe6, 0x16, 0x23, 0xcc, + 0x42, 0x93, 0xff, 0xfa, 0x92, 0x63, 0x33, 0x9e, 0x36, 0xb0, 0xdc, 0x9a, + 0xb6, 0xaa, 0xd7, 0x48, 0xfe, 0x27, 0x01, 0xcf, 0x67, 0xc0, 0x75, 0xa0, + 0x86, 0x9a, 0xec, 0xa7, 0x2e, 0xb8, 0x7b, 0x00, 0x7f, 0xd4, 0xe3, 0xb3, + 0xfc, 0x48, 0xab, 0x50, 0x20, 0xd4, 0x0d, 0x58, 0x26, 0xc0, 0x3c, 0x09, + 0x0b, 0x80, 0x9e, 0xaf, 0x14, 0x3c, 0x0c, 0x6e, 0x69, 0xbc, 0x6c, 0x4e, + 0x50, 0x33, 0xb0, 0x07, 0x64, 0x6e, 0x77, 0x96, 0xc2, 0xe6, 0x3b, 0xd7, + 0xfe, 0xdc, 0xa4, 0x2f, 0x18, 0x5b, 0x53, 0xe5, 0xdd, 0xb6, 0xce, 0xeb, + 0x16, 0xb4, 0x25, 0xc6, 0xcb, 0xf2, 0x65, 0x3c, 0x4f, 0x94, 0xa5, 0x11, + 0x18, 0xeb, 0x7b, 0x62, 0x1d, 0xd5, 0x02, 0x35, 0x76, 0xf6, 0xb5, 0x20, + 0x27, 0x21, 0x9b, 0xab, 0xf4, 0xb6, 0x8f, 0x1a, 0x70, 0x1d, 0x12, 0xe3, + 0xb9, 0x8e, 0x29, 0x52, 0x25, 0xf4, 0xba, 0xb4, 0x25, 0x2c, 0x91, 0x11, + 0xf2, 0xae, 0x7b, 0xbe, 0xb6, 0x67, 0xd6, 0x08, 0xf8, 0x6f, 0xe7, 0xb0, + 0x16, 0xc5, 0xf6, 0xd5, 0xfb, 0x07, 0x71, 0x5b, 0x0e, 0xe1, 0x02, 0x03, + 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xaa, 0xe7, 0x7f, 0xcf, 0xf8, 0xb4, + 0xe0, 0x8d, 0x39, 0x9a, 0x1d, 0x4f, 0x86, 0xa2, 0xac, 0x56, 0x32, 0xd9, + 0x58, 0xe3, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, + 0x16, 0x80, 0x14, 0xaa, 0xe7, 0x7f, 0xcf, 0xf8, 0xb4, 0xe0, 0x8d, 0x39, + 0x9a, 0x1d, 0x4f, 0x86, 0xa2, 0xac, 0x56, 0x32, 0xd9, 0x58, 0xe3, 0x30, + 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, + 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x04, 0x02, 0x00, + 0x00, 0x0a, 0x0a, 0x81, 0xb5, 0x2e, 0xac, 0x52, 0xab, 0x0f, 0xeb, 0xad, + 0x96, 0xd6, 0xd6, 0x59, 0x8f, 0x55, 0x15, 0x56, 0x70, 0xda, 0xd5, 0x75, + 0x47, 0x12, 0x9a, 0x0e, 0xd1, 0x65, 0x68, 0xe0, 0x51, 0x89, 0x59, 0xcc, + 0xe3, 0x5a, 0x1b, 0x85, 0x14, 0xa3, 0x1d, 0x9b, 0x3f, 0xd1, 0xa4, 0x42, + 0xb0, 0x89, 0x12, 0x93, 0xd3, 0x54, 0x19, 0x04, 0xa2, 0xaf, 0xaa, 0x60, + 0xca, 0x03, 0xc2, 0xae, 0x62, 0x8c, 0xb6, 0x31, 0x03, 0xd6, 0xa5, 0xf3, + 0x5e, 0x8d, 0x5c, 0x69, 0x4c, 0x7d, 0x81, 0x49, 0x20, 0x25, 0x41, 0xa4, + 0x2a, 0x95, 0x87, 0x36, 0xa3, 0x9b, 0x9e, 0x9f, 0xed, 0x85, 0xf3, 0xb1, + 0xf1, 0xe9, 0x1b, 0xbb, 0xe3, 0xbc, 0x3b, 0x11, 0x36, 0xca, 0xb9, 0x5f, + 0xee, 0x64, 0xde, 0x2a, 0x99, 0x27, 0x91, 0xc0, 0x54, 0x9e, 0x7a, 0xd4, + 0x89, 0x8c, 0xa0, 0xe3, 0xfd, 0x44, 0x6f, 0x02, 0x38, 0x3c, 0xee, 0x52, + 0x48, 0x1b, 0xd4, 0x25, 0x2b, 0xcb, 0x8e, 0xa8, 0x1b, 0x09, 0xd6, 0x30, + 0x51, 0x15, 0x6c, 0x5c, 0x03, 0x76, 0xad, 0x64, 0x45, 0x50, 0xa2, 0xe1, + 0x3c, 0x5a, 0x67, 0x87, 0xff, 0x8c, 0xed, 0x9a, 0x8d, 0x04, 0xc1, 0xac, + 0xf9, 0xca, 0xf5, 0x2a, 0x05, 0x9c, 0xdd, 0x78, 0xce, 0x99, 0x78, 0x7b, + 0xcd, 0x43, 0x10, 0x40, 0xf7, 0xb5, 0x27, 0x12, 0xec, 0xe9, 0xb2, 0x3f, + 0xf4, 0x5d, 0xd9, 0xbb, 0xf8, 0xc4, 0xc9, 0xa4, 0x46, 0x20, 0x41, 0x7f, + 0xeb, 0x79, 0xb0, 0x51, 0x8c, 0xf7, 0xc3, 0x2c, 0x16, 0xfe, 0x42, 0x59, + 0x77, 0xfe, 0x53, 0xfe, 0x19, 0x57, 0x58, 0x44, 0x6d, 0x12, 0xe2, 0x95, + 0xd0, 0xd3, 0x5a, 0xb5, 0x2d, 0xe5, 0x7e, 0xb4, 0xb3, 0xa9, 0xcc, 0x7d, + 0x53, 0x77, 0x81, 0x01, 0x0f, 0x0a, 0xf6, 0x86, 0x3c, 0x7d, 0xb5, 0x2c, + 0xbf, 0x62, 0xc3, 0xf5, 0x38, 0x89, 0x13, 0x84, 0x1f, 0x44, 0x2d, 0x87, + 0x5c, 0x23, 0x9e, 0x05, 0x62, 0x56, 0x3d, 0x71, 0x4d, 0xd0, 0xe3, 0x15, + 0xe9, 0x09, 0x9c, 0x1a, 0xc0, 0x9a, 0x19, 0x8b, 0x9c, 0xe9, 0xae, 0xde, + 0x62, 0x05, 0x23, 0xe2, 0xd0, 0x3f, 0xf5, 0xef, 0x04, 0x96, 0x4c, 0x87, + 0x34, 0x2f, 0xd5, 0x90, 0xde, 0xbf, 0x4b, 0x56, 0x12, 0x5f, 0xc6, 0xdc, + 0xa4, 0x1c, 0xc4, 0x53, 0x0c, 0xf9, 0xb4, 0xe4, 0x2c, 0xe7, 0x48, 0xbd, + 0xb1, 0xac, 0xf1, 0xc1, 0x8d, 0x53, 0x47, 0x84, 0xc0, 0x78, 0x0a, 0x5e, + 0xc2, 0x16, 0xff, 0xef, 0x97, 0x5b, 0x33, 0x85, 0x92, 0xcd, 0xd4, 0xbb, + 0x64, 0xee, 0xed, 0x17, 0x18, 0x43, 0x32, 0x99, 0x32, 0x36, 0x25, 0xf4, + 0x21, 0x3c, 0x2f, 0x55, 0xdc, 0x16, 0x06, 0x4d, 0x86, 0xa3, 0xa9, 0x34, + 0x22, 0xd5, 0xc3, 0xc8, 0x64, 0x3c, 0x4e, 0x3a, 0x69, 0xbd, 0xcf, 0xd7, + 0xee, 0x3f, 0x0d, 0x15, 0xeb, 0xfb, 0xbd, 0x91, 0x7f, 0xef, 0x48, 0xec, + 0x86, 0xb2, 0x78, 0xf7, 0x53, 0x90, 0x38, 0xb5, 0x04, 0x9c, 0xb7, 0xd7, + 0x9e, 0xaa, 0x15, 0xf7, 0xcd, 0xc2, 0x17, 0xd5, 0x8f, 0x82, 0x98, 0xa3, + 0xaf, 0x59, 0xf1, 0x71, 0xda, 0x6e, 0xaf, 0x97, 0x6d, 0x77, 0x72, 0xfd, + 0xa8, 0x80, 0x25, 0xce, 0x46, 0x04, 0x6e, 0x40, 0x15, 0x24, 0xc0, 0xf9, + 0xbf, 0x13, 0x16, 0x72, 0xcb, 0xb7, 0x10, 0xc7, 0x0a, 0xd6, 0x66, 0x96, + 0x5b, 0x27, 0x4d, 0x66, 0xc4, 0x2f, 0x21, 0x90, 0x9f, 0x8c, 0x24, 0xa0, + 0x0e, 0xa2, 0x89, 0x92, 0xd2, 0x44, 0x63, 0x06, 0xb2, 0xab, 0x07, 0x26, + 0xde, 0x03, 0x1d, 0xdb, 0x2a, 0x42, 0x5b, 0x4c, 0xf6, 0xfe, 0x53, 0xfa, + 0x80, 0x45, 0x8d, 0x75, 0xf6, 0x0e, 0x1d, 0xcc, 0x4c, 0x3b, 0xb0, 0x80, + 0x6d, 0x4c, 0xed, 0x7c, 0xe0, 0xd2, 0xe7, 0x62, 0x59, 0xb1, 0x5a, 0x5d, + 0x3a, 0xec, 0x86, 0x04, 0xfe, 0x26, 0xd1, 0x18, 0xed, 0x56, 0x7d, 0x67, + 0x56, 0x24, 0x6d, 0x7c, 0x6e, 0x8f, 0xc8, 0xa0, 0xba, 0x42, 0x0a, 0x33, + 0x38, 0x7a, 0x09, 0x03, 0xc2, 0xbf, 0x9b, 0x01, 0xdd, 0x03, 0x5a, 0xba, + 0x76, 0x04, 0xb1, 0xc3, 0x40, 0x23, 0x53, 0xbd, 0x64, 0x4e, 0x0f, 0xe7, + 0xc3, 0x4e, 0x48, 0xea, 0x19, 0x2b, 0x1c, 0xe4, 0x3d, 0x93, 0xd8, 0xf6, + 0xfb, 0xda, 0x3d, 0xeb, 0xed, 0xc2, 0xbd, 0x14, 0x57, 0x40, 0xde, 0xd1, + 0x74, 0x54, 0x1b, 0xa8, 0x39, 0xda, 0x73, 0x56, 0xd4, 0xbe, 0xab, 0xec, + 0xc7, 0x17, 0x4f, 0x91, 0xb6, 0xf6, 0xcb, 0x24, 0xc6, 0x1c, 0x07, 0xc4, + 0xf3, 0xd0, 0x5e, 0x8d, 0xfa, 0x44, 0x98, 0x5c, 0x87, 0x36, 0x75, 0xb6, + 0xa5, 0x31, 0xaa, 0xab, 0x7d, 0x38, 0x66, 0xb3, 0x18, 0x58, 0x65, 0x97, + 0x06, 0xfd, 0x61, 0x81, 0x71, 0xc5, 0x17, 0x8b, 0x19, 0x03, 0xc8, 0x58, + 0xec, 0x05, 0xca, 0x7b, 0x0f, 0xec, 0x9d, 0xb4, 0xbc, 0xa3, 0x20, 0x2e, + 0xf8, 0xe4, 0xb1, 0x82, 0xdc, 0x5a, 0xd2, 0x92, 0x9c, 0x43, 0x5d, 0x16, + 0x5b, 0x90, 0x80, 0xe4, 0xfb, 0x6e, 0x24, 0x6b, 0x8c, 0x1a, 0x35, 0xab, + 0xbd, 0x77, 0x7f, 0xf9, 0x61, 0x80, 0xa5, 0xab, 0xa3, 0x39, 0xc2, 0xc9, + 0x69, 0x3c, 0xfc, 0xb3, 0x9a, 0x05, 0x45, 0x03, 0x88, 0x8f, 0x8e, 0x23, + 0xf2, 0x0c, 0x4c, 0x54, 0xb9, 0x40, 0x3a, 0x31, 0x1a, 0x22, 0x67, 0x43, + 0x4a, 0x3e, 0xa0, 0x8c, 0x2d, 0x4d, 0x4f, 0xfc, 0xb5, 0x9b, 0x1f, 0xe1, + 0xef, 0x02, 0x54, 0xab, 0x8d, 0x75, 0x4d, 0x93, 0xba, 0x76, 0xe1, 0xbc, + 0x42, 0x7f, 0x6c, 0xcb, 0xf5, 0x47, 0xd6, 0x8a, 0xac, 0x5d, 0xe9, 0xbb, + 0x3a, 0x65, 0x2c, 0x81, 0xe5, 0xff, 0x27, 0x7e, 0x60, 0x64, 0x80, 0x42, + 0x8d, 0x36, 0x6b, 0x07, 0x76, 0x6a, 0xf1, 0xdf, 0x96, 0x17, 0x93, 0x21, + 0x5d, 0xe4, 0x6c, 0xce, 0x1c, 0xb9, 0x82, 0x45, 0x05, 0x61, 0xe2, 0x41, + 0x96, 0x03, 0x7d, 0x10, 0x8b, 0x3e, 0xc7, 0xe5, 0xcf, 0x08, 0xeb, 0x81, + 0xd3, 0x82, 0x1b, 0x04, 0x96, 0x93, 0x5a, 0xe2, 0x8c, 0x8e, 0x50, 0x33, + 0xf6, 0xf9, 0xf0, 0xfb, 0xb1, 0xd7, 0xc6, 0x97, 0xaa, 0xef, 0x0b, 0x87, + 0xe1, 0x34, 0x97, 0x78, 0x2e, 0x7c, 0x46, 0x11, 0xd5, 0x3c, 0xec, 0x38, + 0x70, 0x59, 0x14, 0x65, 0x4d, 0x0e, 0xd1, 0xeb, 0x49, 0xb3, 0x99, 0x6f, + 0x87, 0xf1, 0x79, 0x21, 0xd9, 0x5c, 0x37, 0xb2, 0xfe, 0xc4, 0x7a, 0xc1, + 0x67, 0xbd, 0x02, 0xfc, 0x02, 0xab, 0x2f, 0xf5, 0x0f, 0xa7, 0xae, 0x90, + 0xc2, 0xaf, 0xdb, 0xd1, 0x96, 0xb2, 0x92, 0x5a, 0xfb, 0xca, 0x28, 0x74, + 0x17, 0xed, 0xda, 0x2c, 0x9f, 0xb4, 0x2d, 0xf5, 0x71, 0x20, 0x64, 0x2d, + 0x44, 0xe5, 0xa3, 0xa0, 0x94, 0x6f, 0x20, 0xb3, 0x73, 0x96, 0x40, 0x06, + 0x9b, 0x25, 0x47, 0x4b, 0xe0, 0x63, 0x91, 0xd9, 0xda, 0xf3, 0xc3, 0xe5, + 0x3a, 0x3c, 0xb7, 0x5f, 0xab, 0x1e, 0x51, 0x17, 0x4f, 0xec, 0xc1, 0x6d, + 0x82, 0x79, 0x8e, 0xba, 0x7c, 0x47, 0x8e, 0x99, 0x00, 0x17, 0x9e, 0xda, + 0x10, 0x42, 0x70, 0x25, 0x42, 0x84, 0xc8, 0xb1, 0x95, 0x56, 0xb2, 0x08, + 0xa0, 0x4f, 0xdc, 0xcd, 0x9e, 0x31, 0x4b, 0x0c, 0x0b, 0x03, 0x5d, 0x2c, + 0x26, 0xbc, 0xa9, 0x4b, 0x19, 0xdf, 0x90, 0x01, 0x9a, 0xe0, 0x06, 0x05, + 0x13, 0x34, 0x9d, 0x34, 0xb8, 0xef, 0x13, 0x3a, 0x20, 0xf5, 0x74, 0x02, + 0x70, 0x3b, 0x41, 0x60, 0x1f, 0x5e, 0x76, 0x0a, 0xb1, 0x17, 0xd5, 0xcf, + 0x79, 0xef, 0xf7, 0xab, 0xe7, 0xd6, 0x0f, 0xad, 0x85, 0x2c, 0x52, 0x67, + 0xb5, 0xa0, 0x4a, 0xfd, 0xaf};
\ No newline at end of file diff --git a/security/nss/gtests/ssl_gtest/ssl_0rtt_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_0rtt_unittest.cc index 08781af71..28fdc6631 100644 --- a/security/nss/gtests/ssl_gtest/ssl_0rtt_unittest.cc +++ b/security/nss/gtests/ssl_gtest/ssl_0rtt_unittest.cc @@ -345,8 +345,8 @@ TEST_P(TlsConnectTls13, TestTls13ZeroRttNoAlpnClient) { TEST_P(TlsConnectTls13, TestTls13ZeroRttAlpnChangeBoth) { EnableAlpn(); SetupForZeroRtt(); - static const uint8_t alpn[] = {0x01, 0x62}; // "b" - EnableAlpn(alpn, sizeof(alpn)); + static const std::vector<uint8_t> alpn({0x01, 0x62}); // "b" + EnableAlpn(alpn); client_->Set0RttEnabled(true); server_->Set0RttEnabled(true); ExpectResumption(RESUME_TICKET); diff --git a/security/nss/gtests/ssl_gtest/ssl_agent_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_agent_unittest.cc index f0c57e8b1..6be3b61f8 100644 --- a/security/nss/gtests/ssl_gtest/ssl_agent_unittest.cc +++ b/security/nss/gtests/ssl_gtest/ssl_agent_unittest.cc @@ -8,9 +8,6 @@ #include "sslerr.h" #include "sslproto.h" -// This is an internal header, used to get TLS_1_3_DRAFT_VERSION. -#include "ssl3prot.h" - #include <memory> #include "databuffer.h" @@ -21,7 +18,6 @@ namespace nss_test { -static const uint8_t kD13 = TLS_1_3_DRAFT_VERSION; // This is a 1-RTT ClientHello with ECDHE. const static uint8_t kCannedTls13ClientHello[] = { 0x01, 0x00, 0x00, 0xcf, 0x03, 0x03, 0x6c, 0xb3, 0x46, 0x81, 0xc8, 0x1a, @@ -42,16 +38,7 @@ const static uint8_t kCannedTls13ClientHello[] = { 0x1e, 0x04, 0x03, 0x05, 0x03, 0x06, 0x03, 0x02, 0x03, 0x08, 0x04, 0x08, 0x05, 0x08, 0x06, 0x04, 0x01, 0x05, 0x01, 0x06, 0x01, 0x02, 0x01, 0x04, 0x02, 0x05, 0x02, 0x06, 0x02, 0x02, 0x02}; - -const static uint8_t kCannedTls13ServerHello[] = { - 0x03, 0x03, 0x9c, 0xbc, 0x14, 0x9b, 0x0e, 0x2e, 0xfa, 0x0d, 0xf3, - 0xf0, 0x5c, 0x70, 0x7a, 0xe0, 0xd1, 0x9b, 0x3e, 0x5a, 0x44, 0x6b, - 0xdf, 0xe5, 0xc2, 0x28, 0x64, 0xf7, 0x00, 0xc1, 0x9c, 0x08, 0x76, - 0x08, 0x00, 0x13, 0x01, 0x00, 0x00, 0x2e, 0x00, 0x33, 0x00, 0x24, - 0x00, 0x1d, 0x00, 0x20, 0xc2, 0xcf, 0x23, 0x17, 0x64, 0x23, 0x03, - 0xf0, 0xfb, 0x45, 0x98, 0x26, 0xd1, 0x65, 0x24, 0xa1, 0x6c, 0xa9, - 0x80, 0x8f, 0x2c, 0xac, 0x0a, 0xea, 0x53, 0x3a, 0xcb, 0xe3, 0x08, - 0x84, 0xae, 0x19, 0x00, 0x2b, 0x00, 0x02, 0x7f, kD13}; +static const size_t kFirstFragmentSize = 20; static const char *k0RttData = "ABCDEF"; TEST_P(TlsAgentTest, EarlyFinished) { @@ -74,8 +61,9 @@ TEST_P(TlsAgentTestClient13, CannedHello) { DataBuffer buffer; EnsureInit(); DataBuffer server_hello; - MakeHandshakeMessage(kTlsHandshakeServerHello, kCannedTls13ServerHello, - sizeof(kCannedTls13ServerHello), &server_hello); + auto sh = MakeCannedTls13ServerHello(); + MakeHandshakeMessage(kTlsHandshakeServerHello, sh.data(), sh.len(), + &server_hello); MakeRecord(kTlsHandshakeType, SSL_LIBRARY_VERSION_TLS_1_3, server_hello.data(), server_hello.len(), &buffer); ProcessMessage(buffer, TlsAgent::STATE_CONNECTING); @@ -83,8 +71,9 @@ TEST_P(TlsAgentTestClient13, CannedHello) { TEST_P(TlsAgentTestClient13, EncryptedExtensionsInClear) { DataBuffer server_hello; - MakeHandshakeMessage(kTlsHandshakeServerHello, kCannedTls13ServerHello, - sizeof(kCannedTls13ServerHello), &server_hello); + auto sh = MakeCannedTls13ServerHello(); + MakeHandshakeMessage(kTlsHandshakeServerHello, sh.data(), sh.len(), + &server_hello); DataBuffer encrypted_extensions; MakeHandshakeMessage(kTlsHandshakeEncryptedExtensions, nullptr, 0, &encrypted_extensions, 1); @@ -100,19 +89,21 @@ TEST_P(TlsAgentTestClient13, EncryptedExtensionsInClear) { TEST_F(TlsAgentStreamTestClient, EncryptedExtensionsInClearTwoPieces) { DataBuffer server_hello; - MakeHandshakeMessage(kTlsHandshakeServerHello, kCannedTls13ServerHello, - sizeof(kCannedTls13ServerHello), &server_hello); + auto sh = MakeCannedTls13ServerHello(); + MakeHandshakeMessage(kTlsHandshakeServerHello, sh.data(), sh.len(), + &server_hello); DataBuffer encrypted_extensions; MakeHandshakeMessage(kTlsHandshakeEncryptedExtensions, nullptr, 0, &encrypted_extensions, 1); server_hello.Append(encrypted_extensions); DataBuffer buffer; MakeRecord(kTlsHandshakeType, SSL_LIBRARY_VERSION_TLS_1_3, - server_hello.data(), 20, &buffer); + server_hello.data(), kFirstFragmentSize, &buffer); DataBuffer buffer2; MakeRecord(kTlsHandshakeType, SSL_LIBRARY_VERSION_TLS_1_3, - server_hello.data() + 20, server_hello.len() - 20, &buffer2); + server_hello.data() + kFirstFragmentSize, + server_hello.len() - kFirstFragmentSize, &buffer2); EnsureInit(); agent_->SetVersionRange(SSL_LIBRARY_VERSION_TLS_1_3, @@ -124,15 +115,15 @@ TEST_F(TlsAgentStreamTestClient, EncryptedExtensionsInClearTwoPieces) { } TEST_F(TlsAgentDgramTestClient, EncryptedExtensionsInClearTwoPieces) { + auto sh = MakeCannedTls13ServerHello(); DataBuffer server_hello_frag1; - MakeHandshakeMessageFragment( - kTlsHandshakeServerHello, kCannedTls13ServerHello, - sizeof(kCannedTls13ServerHello), &server_hello_frag1, 0, 0, 20); + MakeHandshakeMessageFragment(kTlsHandshakeServerHello, sh.data(), sh.len(), + &server_hello_frag1, 0, 0, kFirstFragmentSize); DataBuffer server_hello_frag2; - MakeHandshakeMessageFragment( - kTlsHandshakeServerHello, kCannedTls13ServerHello + 20, - sizeof(kCannedTls13ServerHello), &server_hello_frag2, 0, 20, - sizeof(kCannedTls13ServerHello) - 20); + MakeHandshakeMessageFragment(kTlsHandshakeServerHello, + sh.data() + kFirstFragmentSize, sh.len(), + &server_hello_frag2, 0, kFirstFragmentSize, + sh.len() - kFirstFragmentSize); DataBuffer encrypted_extensions; MakeHandshakeMessage(kTlsHandshakeEncryptedExtensions, nullptr, 0, &encrypted_extensions, 1); @@ -154,6 +145,35 @@ TEST_F(TlsAgentDgramTestClient, EncryptedExtensionsInClearTwoPieces) { SSL_ERROR_RX_UNEXPECTED_HANDSHAKE); } +TEST_F(TlsAgentDgramTestClient, AckWithBogusLengthField) { + EnsureInit(); + // Length doesn't match + const uint8_t ackBuf[] = {0x00, 0x08, 0x00}; + DataBuffer record; + MakeRecord(variant_, kTlsAckType, SSL_LIBRARY_VERSION_TLS_1_2, ackBuf, + sizeof(ackBuf), &record, 0); + agent_->SetVersionRange(SSL_LIBRARY_VERSION_TLS_1_3, + SSL_LIBRARY_VERSION_TLS_1_3); + ExpectAlert(kTlsAlertDecodeError); + ProcessMessage(record, TlsAgent::STATE_ERROR, + SSL_ERROR_RX_MALFORMED_DTLS_ACK); +} + +TEST_F(TlsAgentDgramTestClient, AckWithNonEvenLength) { + EnsureInit(); + // Length isn't a multiple of 8 + const uint8_t ackBuf[] = {0x00, 0x01, 0x00}; + DataBuffer record; + MakeRecord(variant_, kTlsAckType, SSL_LIBRARY_VERSION_TLS_1_2, ackBuf, + sizeof(ackBuf), &record, 0); + agent_->SetVersionRange(SSL_LIBRARY_VERSION_TLS_1_3, + SSL_LIBRARY_VERSION_TLS_1_3); + // Because we haven't negotiated the version, + // ssl3_DecodeError() sends an older (pre-TLS error). + ExpectAlert(kTlsAlertIllegalParameter); + ProcessMessage(record, TlsAgent::STATE_ERROR, SSL_ERROR_BAD_SERVER); +} + TEST_F(TlsAgentStreamTestClient, Set0RttOptionThenWrite) { EnsureInit(); agent_->SetVersionRange(SSL_LIBRARY_VERSION_TLS_1_1, diff --git a/security/nss/gtests/ssl_gtest/ssl_auth_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_auth_unittest.cc index 7f2b2840d..e2a30e6bc 100644 --- a/security/nss/gtests/ssl_gtest/ssl_auth_unittest.cc +++ b/security/nss/gtests/ssl_gtest/ssl_auth_unittest.cc @@ -155,8 +155,8 @@ TEST_P(TlsConnectTls12, ClientAuthBigRsaCheckSigAlg) { class TlsZeroCertificateRequestSigAlgsFilter : public TlsHandshakeFilter { public: - TlsZeroCertificateRequestSigAlgsFilter(const std::shared_ptr<TlsAgent>& agent) - : TlsHandshakeFilter(agent, {kTlsHandshakeCertificateRequest}) {} + TlsZeroCertificateRequestSigAlgsFilter(const std::shared_ptr<TlsAgent>& a) + : TlsHandshakeFilter(a, {kTlsHandshakeCertificateRequest}) {} virtual PacketFilter::Action FilterHandshake( const TlsHandshakeFilter::HandshakeHeader& header, const DataBuffer& input, DataBuffer* output) { @@ -366,6 +366,50 @@ TEST_P(TlsConnectTls12, SignatureAlgorithmDrop) { server_->CheckErrorCode(SSL_ERROR_BAD_HANDSHAKE_HASH_VALUE); } +// Replaces the signature scheme in a TLS 1.3 CertificateVerify message. +class TlsReplaceSignatureSchemeFilter : public TlsHandshakeFilter { + public: + TlsReplaceSignatureSchemeFilter(const std::shared_ptr<TlsAgent>& a, + SSLSignatureScheme scheme) + : TlsHandshakeFilter(a, {kTlsHandshakeCertificateVerify}), + scheme_(scheme) { + EnableDecryption(); + } + + protected: + virtual PacketFilter::Action FilterHandshake(const HandshakeHeader& header, + const DataBuffer& input, + DataBuffer* output) { + *output = input; + output->Write(0, scheme_, 2); + return CHANGE; + } + + private: + SSLSignatureScheme scheme_; +}; + +TEST_P(TlsConnectTls13, UnsupportedSignatureSchemeAlert) { + EnsureTlsSetup(); + MakeTlsFilter<TlsReplaceSignatureSchemeFilter>(server_, ssl_sig_none); + + ConnectExpectAlert(client_, kTlsAlertIllegalParameter); + server_->CheckErrorCode(SSL_ERROR_ILLEGAL_PARAMETER_ALERT); + client_->CheckErrorCode(SSL_ERROR_RX_MALFORMED_CERT_VERIFY); +} + +TEST_P(TlsConnectTls13, InconsistentSignatureSchemeAlert) { + EnsureTlsSetup(); + + // This won't work because we use an RSA cert by default. + MakeTlsFilter<TlsReplaceSignatureSchemeFilter>( + server_, ssl_sig_ecdsa_secp256r1_sha256); + + ConnectExpectAlert(client_, kTlsAlertIllegalParameter); + server_->CheckErrorCode(SSL_ERROR_ILLEGAL_PARAMETER_ALERT); + client_->CheckErrorCode(SSL_ERROR_INCORRECT_SIGNATURE_ALGORITHM); +} + TEST_P(TlsConnectTls12Plus, RequestClientAuthWithSha384) { server_->SetSignatureSchemes(SignatureSchemeRsaSha384, PR_ARRAY_SIZE(SignatureSchemeRsaSha384)); diff --git a/security/nss/gtests/ssl_gtest/ssl_ciphersuite_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_ciphersuite_unittest.cc index fa2238be7..ec289bdd6 100644 --- a/security/nss/gtests/ssl_gtest/ssl_ciphersuite_unittest.cc +++ b/security/nss/gtests/ssl_gtest/ssl_ciphersuite_unittest.cc @@ -166,8 +166,8 @@ class TlsCipherSuiteTestBase : public TlsConnectTestBase { case ssl_calg_seed: break; } - EXPECT_TRUE(false) << "No limit for " << csinfo_.cipherSuiteName; - return 1ULL < 48; + ADD_FAILURE() << "No limit for " << csinfo_.cipherSuiteName; + return 0; } uint64_t last_safe_write() const { @@ -246,12 +246,13 @@ TEST_P(TlsCipherSuiteTest, ReadLimit) { client_->SendData(10, 10); server_->ReadBytes(); // This should be OK. + server_->ReadBytes(); // Read twice to flush any 1,N-1 record splitting. } else { // In TLS 1.3, reading or writing triggers a KeyUpdate. That would mean // that the sequence numbers would reset and we wouldn't hit the limit. So - // we move the sequence number to one less than the limit directly and don't - // test sending and receiving just before the limit. - uint64_t last = record_limit() - 1; + // move the sequence number to the limit directly and don't test sending and + // receiving just before the limit. + uint64_t last = record_limit(); EXPECT_EQ(SECSuccess, SSLInt_AdvanceReadSeqNum(server_->ssl_fd(), last)); } diff --git a/security/nss/gtests/ssl_gtest/ssl_custext_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_custext_unittest.cc index c2f582a93..5be62e506 100644 --- a/security/nss/gtests/ssl_gtest/ssl_custext_unittest.cc +++ b/security/nss/gtests/ssl_gtest/ssl_custext_unittest.cc @@ -68,6 +68,7 @@ static const uint16_t kManyExtensions[] = { ssl_next_proto_nego_xtn, ssl_renegotiation_info_xtn, ssl_tls13_short_header_xtn, + ssl_record_size_limit_xtn, 1, 0xffff}; // The list here includes all extensions we expect to use (SSL_MAX_EXTENSIONS), diff --git a/security/nss/gtests/ssl_gtest/ssl_dhe_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_dhe_unittest.cc index cdafa7a84..b99461632 100644 --- a/security/nss/gtests/ssl_gtest/ssl_dhe_unittest.cc +++ b/security/nss/gtests/ssl_gtest/ssl_dhe_unittest.cc @@ -103,8 +103,8 @@ TEST_P(TlsConnectGenericPre13, ConnectFfdheServer) { class TlsDheServerKeyExchangeDamager : public TlsHandshakeFilter { public: - TlsDheServerKeyExchangeDamager(const std::shared_ptr<TlsAgent>& agent) - : TlsHandshakeFilter(agent, {kTlsHandshakeServerKeyExchange}) {} + TlsDheServerKeyExchangeDamager(const std::shared_ptr<TlsAgent>& a) + : TlsHandshakeFilter(a, {kTlsHandshakeServerKeyExchange}) {} virtual PacketFilter::Action FilterHandshake( const TlsHandshakeFilter::HandshakeHeader& header, const DataBuffer& input, DataBuffer* output) { @@ -141,9 +141,9 @@ class TlsDheSkeChangeY : public TlsHandshakeFilter { kYZeroPad }; - TlsDheSkeChangeY(const std::shared_ptr<TlsAgent>& agent, - uint8_t handshake_type, ChangeYTo change) - : TlsHandshakeFilter(agent, {handshake_type}), change_Y_(change) {} + TlsDheSkeChangeY(const std::shared_ptr<TlsAgent>& a, uint8_t handshake_type, + ChangeYTo change) + : TlsHandshakeFilter(a, {handshake_type}), change_Y_(change) {} protected: void ChangeY(const DataBuffer& input, DataBuffer* output, size_t offset, @@ -208,9 +208,9 @@ class TlsDheSkeChangeY : public TlsHandshakeFilter { class TlsDheSkeChangeYServer : public TlsDheSkeChangeY { public: - TlsDheSkeChangeYServer(const std::shared_ptr<TlsAgent>& agent, - ChangeYTo change, bool modify) - : TlsDheSkeChangeY(agent, kTlsHandshakeServerKeyExchange, change), + TlsDheSkeChangeYServer(const std::shared_ptr<TlsAgent>& a, ChangeYTo change, + bool modify) + : TlsDheSkeChangeY(a, kTlsHandshakeServerKeyExchange, change), modify_(modify), p_() {} @@ -247,9 +247,9 @@ class TlsDheSkeChangeYServer : public TlsDheSkeChangeY { class TlsDheSkeChangeYClient : public TlsDheSkeChangeY { public: TlsDheSkeChangeYClient( - const std::shared_ptr<TlsAgent>& agent, ChangeYTo change, + const std::shared_ptr<TlsAgent>& a, ChangeYTo change, std::shared_ptr<const TlsDheSkeChangeYServer> server_filter) - : TlsDheSkeChangeY(agent, kTlsHandshakeClientKeyExchange, change), + : TlsDheSkeChangeY(a, kTlsHandshakeClientKeyExchange, change), server_filter_(server_filter) {} protected: @@ -357,8 +357,8 @@ INSTANTIATE_TEST_CASE_P( class TlsDheSkeMakePEven : public TlsHandshakeFilter { public: - TlsDheSkeMakePEven(const std::shared_ptr<TlsAgent>& agent) - : TlsHandshakeFilter(agent, {kTlsHandshakeServerKeyExchange}) {} + TlsDheSkeMakePEven(const std::shared_ptr<TlsAgent>& a) + : TlsHandshakeFilter(a, {kTlsHandshakeServerKeyExchange}) {} virtual PacketFilter::Action FilterHandshake( const TlsHandshakeFilter::HandshakeHeader& header, @@ -390,8 +390,8 @@ TEST_P(TlsConnectGenericPre13, MakeDhePEven) { class TlsDheSkeZeroPadP : public TlsHandshakeFilter { public: - TlsDheSkeZeroPadP(const std::shared_ptr<TlsAgent>& agent) - : TlsHandshakeFilter(agent, {kTlsHandshakeServerKeyExchange}) {} + TlsDheSkeZeroPadP(const std::shared_ptr<TlsAgent>& a) + : TlsHandshakeFilter(a, {kTlsHandshakeServerKeyExchange}) {} virtual PacketFilter::Action FilterHandshake( const TlsHandshakeFilter::HandshakeHeader& header, @@ -475,6 +475,45 @@ TEST_P(TlsConnectTls13, NamedGroupMismatch13) { client_->CheckErrorCode(SSL_ERROR_NO_CYPHER_OVERLAP); } +// Replace the key share in the server key exchange message with one that's +// larger than 8192 bits. +class TooLongDHEServerKEXFilter : public TlsHandshakeFilter { + public: + TooLongDHEServerKEXFilter(const std::shared_ptr<TlsAgent>& server) + : TlsHandshakeFilter(server, {kTlsHandshakeServerKeyExchange}) {} + + protected: + virtual PacketFilter::Action FilterHandshake(const HandshakeHeader& header, + const DataBuffer& input, + DataBuffer* output) { + // Replace the server key exchange message very large DH shares that are + // not supported by NSS. + const uint32_t share_len = 0x401; + const uint8_t zero_share[share_len] = {0x80}; + size_t offset = 0; + // Write dh_p. + offset = output->Write(offset, share_len, 2); + offset = output->Write(offset, zero_share, share_len); + // Write dh_g. + offset = output->Write(offset, share_len, 2); + offset = output->Write(offset, zero_share, share_len); + // Write dh_Y. + offset = output->Write(offset, share_len, 2); + offset = output->Write(offset, zero_share, share_len); + + return CHANGE; + } +}; + +TEST_P(TlsConnectGenericPre13, TooBigDHGroup) { + EnableOnlyDheCiphers(); + MakeTlsFilter<TooLongDHEServerKEXFilter>(server_); + client_->SetOption(SSL_REQUIRE_DH_NAMED_GROUPS, PR_FALSE); + ConnectExpectAlert(client_, kTlsAlertIllegalParameter); + server_->CheckErrorCode(SSL_ERROR_ILLEGAL_PARAMETER_ALERT); + client_->CheckErrorCode(SSL_ERROR_DH_KEY_TOO_LONG); +} + // Even though the client doesn't have DHE groups enabled the server assumes it // does. The client requires named groups and thus does not accept FF3072 as // custom group in contrast to the previous test. @@ -546,9 +585,9 @@ TEST_P(TlsConnectTls13, ResumeFfdhe) { class TlsDheSkeChangeSignature : public TlsHandshakeFilter { public: - TlsDheSkeChangeSignature(const std::shared_ptr<TlsAgent>& agent, - uint16_t version, const uint8_t* data, size_t len) - : TlsHandshakeFilter(agent, {kTlsHandshakeServerKeyExchange}), + TlsDheSkeChangeSignature(const std::shared_ptr<TlsAgent>& a, uint16_t version, + const uint8_t* data, size_t len) + : TlsHandshakeFilter(a, {kTlsHandshakeServerKeyExchange}), version_(version), data_(data), len_(len) {} diff --git a/security/nss/gtests/ssl_gtest/ssl_drop_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_drop_unittest.cc index ee8906deb..e5b52ff06 100644 --- a/security/nss/gtests/ssl_gtest/ssl_drop_unittest.cc +++ b/security/nss/gtests/ssl_gtest/ssl_drop_unittest.cc @@ -66,7 +66,8 @@ TEST_P(TlsConnectDatagramPre13, DropServerSecondFlightThrice) { Connect(); } -class TlsDropDatagram13 : public TlsConnectDatagram13 { +class TlsDropDatagram13 : public TlsConnectDatagram13, + public ::testing::WithParamInterface<bool> { public: TlsDropDatagram13() : client_filters_(), @@ -77,6 +78,9 @@ class TlsDropDatagram13 : public TlsConnectDatagram13 { void SetUp() override { TlsConnectDatagram13::SetUp(); ConfigureSessionCache(RESUME_NONE, RESUME_NONE); + int short_header = GetParam() ? PR_TRUE : PR_FALSE; + client_->SetOption(SSL_ENABLE_DTLS_SHORT_HEADER, short_header); + server_->SetOption(SSL_ENABLE_DTLS_SHORT_HEADER, short_header); SetFilters(); } @@ -138,10 +142,13 @@ class TlsDropDatagram13 : public TlsConnectDatagram13 { void CheckAcks(const DropAckChain& chain, size_t index, std::vector<uint64_t> acks) { const DataBuffer& buf = chain.ack_->record(index).buffer; - size_t offset = 0; + size_t offset = 2; + uint64_t len; - EXPECT_EQ(acks.size() * 8, buf.len()); - if ((acks.size() * 8) != buf.len()) { + EXPECT_EQ(2 + acks.size() * 8, buf.len()); + ASSERT_TRUE(buf.Read(0, 2, &len)); + ASSERT_EQ(static_cast<size_t>(len + 2), buf.len()); + if ((2 + acks.size() * 8) != buf.len()) { while (offset < buf.len()) { uint64_t ack; ASSERT_TRUE(buf.Read(offset, 8, &ack)); @@ -186,7 +193,7 @@ class TlsDropDatagram13 : public TlsConnectDatagram13 { // to the client upon receiving the client Finished. // Dropping complete first and second flights does not produce // ACKs -TEST_F(TlsDropDatagram13, DropClientFirstFlightOnce) { +TEST_P(TlsDropDatagram13, DropClientFirstFlightOnce) { client_filters_.drop_->Reset({0}); StartConnect(); client_->Handshake(); @@ -195,7 +202,7 @@ TEST_F(TlsDropDatagram13, DropClientFirstFlightOnce) { CheckAcks(server_filters_, 0, {0x0002000000000000ULL}); } -TEST_F(TlsDropDatagram13, DropServerFirstFlightOnce) { +TEST_P(TlsDropDatagram13, DropServerFirstFlightOnce) { server_filters_.drop_->Reset(0xff); StartConnect(); client_->Handshake(); @@ -209,7 +216,7 @@ TEST_F(TlsDropDatagram13, DropServerFirstFlightOnce) { // Dropping the server's first record also does not produce // an ACK because the next record is ignored. // TODO(ekr@rtfm.com): We should generate an empty ACK. -TEST_F(TlsDropDatagram13, DropServerFirstRecordOnce) { +TEST_P(TlsDropDatagram13, DropServerFirstRecordOnce) { server_filters_.drop_->Reset({0}); StartConnect(); client_->Handshake(); @@ -221,7 +228,7 @@ TEST_F(TlsDropDatagram13, DropServerFirstRecordOnce) { // Dropping the second packet of the server's flight should // produce an ACK. -TEST_F(TlsDropDatagram13, DropServerSecondRecordOnce) { +TEST_P(TlsDropDatagram13, DropServerSecondRecordOnce) { server_filters_.drop_->Reset({1}); StartConnect(); client_->Handshake(); @@ -235,7 +242,7 @@ TEST_F(TlsDropDatagram13, DropServerSecondRecordOnce) { // Drop the server ACK and verify that the client retransmits // the ClientHello. -TEST_F(TlsDropDatagram13, DropServerAckOnce) { +TEST_P(TlsDropDatagram13, DropServerAckOnce) { StartConnect(); client_->Handshake(); server_->Handshake(); @@ -263,7 +270,7 @@ TEST_F(TlsDropDatagram13, DropServerAckOnce) { } // Drop the client certificate verify. -TEST_F(TlsDropDatagram13, DropClientCertVerify) { +TEST_P(TlsDropDatagram13, DropClientCertVerify) { StartConnect(); client_->SetupClientAuth(); server_->RequestClientAuth(true); @@ -284,7 +291,7 @@ TEST_F(TlsDropDatagram13, DropClientCertVerify) { } // Shrink the MTU down so that certs get split and drop the first piece. -TEST_F(TlsDropDatagram13, DropFirstHalfOfServerCertificate) { +TEST_P(TlsDropDatagram13, DropFirstHalfOfServerCertificate) { server_filters_.drop_->Reset({2}); StartConnect(); ShrinkPostServerHelloMtu(); @@ -311,7 +318,7 @@ TEST_F(TlsDropDatagram13, DropFirstHalfOfServerCertificate) { } // Shrink the MTU down so that certs get split and drop the second piece. -TEST_F(TlsDropDatagram13, DropSecondHalfOfServerCertificate) { +TEST_P(TlsDropDatagram13, DropSecondHalfOfServerCertificate) { server_filters_.drop_->Reset({3}); StartConnect(); ShrinkPostServerHelloMtu(); @@ -524,11 +531,11 @@ class TlsFragmentationAndRecoveryTest : public TlsDropDatagram13 { size_t cert_len_; }; -TEST_F(TlsFragmentationAndRecoveryTest, DropFirstHalf) { RunTest(0); } +TEST_P(TlsFragmentationAndRecoveryTest, DropFirstHalf) { RunTest(0); } -TEST_F(TlsFragmentationAndRecoveryTest, DropSecondHalf) { RunTest(1); } +TEST_P(TlsFragmentationAndRecoveryTest, DropSecondHalf) { RunTest(1); } -TEST_F(TlsDropDatagram13, NoDropsDuringZeroRtt) { +TEST_P(TlsDropDatagram13, NoDropsDuringZeroRtt) { SetupForZeroRtt(); SetFilters(); std::cerr << "Starting second handshake" << std::endl; @@ -546,7 +553,7 @@ TEST_F(TlsDropDatagram13, NoDropsDuringZeroRtt) { 0x0002000000000000ULL}); // Finished } -TEST_F(TlsDropDatagram13, DropEEDuringZeroRtt) { +TEST_P(TlsDropDatagram13, DropEEDuringZeroRtt) { SetupForZeroRtt(); SetFilters(); std::cerr << "Starting second handshake" << std::endl; @@ -591,7 +598,7 @@ class TlsReorderDatagram13 : public TlsDropDatagram13 { // Reorder the server records so that EE comes at the end // of the flight and will still produce an ACK. -TEST_F(TlsDropDatagram13, ReorderServerEE) { +TEST_P(TlsDropDatagram13, ReorderServerEE) { server_filters_.drop_->Reset({1}); StartConnect(); client_->Handshake(); @@ -647,7 +654,7 @@ class TlsSendCipherSpecCapturer { std::vector<std::shared_ptr<TlsCipherSpec>> send_cipher_specs_; }; -TEST_F(TlsDropDatagram13, SendOutOfOrderAppWithHandshakeKey) { +TEST_P(TlsDropDatagram13, SendOutOfOrderAppWithHandshakeKey) { StartConnect(); TlsSendCipherSpecCapturer capturer(client_); client_->Handshake(); @@ -662,9 +669,9 @@ TEST_F(TlsDropDatagram13, SendOutOfOrderAppWithHandshakeKey) { auto spec = capturer.spec(0); ASSERT_NE(nullptr, spec.get()); ASSERT_EQ(2, spec->epoch()); - ASSERT_TRUE(client_->SendEncryptedRecord( - spec, SSL_LIBRARY_VERSION_DTLS_1_2_WIRE, 0x0002000000000002, - kTlsApplicationDataType, DataBuffer(buf, sizeof(buf)))); + ASSERT_TRUE(client_->SendEncryptedRecord(spec, 0x0002000000000002, + kTlsApplicationDataType, + DataBuffer(buf, sizeof(buf)))); // Now have the server consume the bogus message. server_->ExpectSendAlert(illegal_parameter, kTlsAlertFatal); @@ -673,7 +680,7 @@ TEST_F(TlsDropDatagram13, SendOutOfOrderAppWithHandshakeKey) { EXPECT_EQ(SSL_ERROR_RX_UNKNOWN_RECORD_TYPE, PORT_GetError()); } -TEST_F(TlsDropDatagram13, SendOutOfOrderHsNonsenseWithHandshakeKey) { +TEST_P(TlsDropDatagram13, SendOutOfOrderHsNonsenseWithHandshakeKey) { StartConnect(); TlsSendCipherSpecCapturer capturer(client_); client_->Handshake(); @@ -688,9 +695,9 @@ TEST_F(TlsDropDatagram13, SendOutOfOrderHsNonsenseWithHandshakeKey) { auto spec = capturer.spec(0); ASSERT_NE(nullptr, spec.get()); ASSERT_EQ(2, spec->epoch()); - ASSERT_TRUE(client_->SendEncryptedRecord( - spec, SSL_LIBRARY_VERSION_DTLS_1_2_WIRE, 0x0002000000000002, - kTlsHandshakeType, DataBuffer(buf, sizeof(buf)))); + ASSERT_TRUE(client_->SendEncryptedRecord(spec, 0x0002000000000002, + kTlsHandshakeType, + DataBuffer(buf, sizeof(buf)))); server_->Handshake(); EXPECT_EQ(2UL, server_filters_.ack_->count()); // The server acknowledges client Finished twice. @@ -700,7 +707,7 @@ TEST_F(TlsDropDatagram13, SendOutOfOrderHsNonsenseWithHandshakeKey) { // Shrink the MTU down so that certs get split and then swap the first and // second pieces of the server certificate. -TEST_F(TlsReorderDatagram13, ReorderServerCertificate) { +TEST_P(TlsReorderDatagram13, ReorderServerCertificate) { StartConnect(); ShrinkPostServerHelloMtu(); client_->Handshake(); @@ -722,7 +729,7 @@ TEST_F(TlsReorderDatagram13, ReorderServerCertificate) { CheckAcks(server_filters_, 0, {0x0002000000000000ULL}); } -TEST_F(TlsReorderDatagram13, DataAfterEOEDDuringZeroRtt) { +TEST_P(TlsReorderDatagram13, DataAfterEOEDDuringZeroRtt) { SetupForZeroRtt(); SetFilters(); std::cerr << "Starting second handshake" << std::endl; @@ -761,7 +768,7 @@ TEST_F(TlsReorderDatagram13, DataAfterEOEDDuringZeroRtt) { EXPECT_EQ(PR_WOULD_BLOCK_ERROR, PORT_GetError()); } -TEST_F(TlsReorderDatagram13, DataAfterFinDuringZeroRtt) { +TEST_P(TlsReorderDatagram13, DataAfterFinDuringZeroRtt) { SetupForZeroRtt(); SetFilters(); std::cerr << "Starting second handshake" << std::endl; @@ -812,12 +819,17 @@ static void GetCipherAndLimit(uint16_t version, uint16_t* cipher, *cipher = TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256; *limit = (1ULL << 48) - 1; } else { + // This test probably isn't especially useful for TLS 1.3, which has a much + // shorter sequence number encoding. That space can probably be searched in + // a reasonable amount of time. *cipher = TLS_CHACHA20_POLY1305_SHA256; - *limit = (1ULL << 48) - 1; + // Assume that we are starting with an expected sequence number of 0. + *limit = (1ULL << 29) - 1; } } // This simulates a huge number of drops on one side. +// See Bug 12965514 where a large gap was handled very inefficiently. TEST_P(TlsConnectDatagram, MissLotsOfPackets) { uint16_t cipher; uint64_t limit; @@ -834,6 +846,17 @@ TEST_P(TlsConnectDatagram, MissLotsOfPackets) { SendReceive(); } +// Send a sequence number of 0xfffffffd and it should be interpreted as that +// (and not -3 or UINT64_MAX - 2). +TEST_F(TlsConnectDatagram13, UnderflowSequenceNumber) { + Connect(); + // This is only valid if short headers are disabled. + client_->SetOption(SSL_ENABLE_DTLS_SHORT_HEADER, PR_FALSE); + EXPECT_EQ(SECSuccess, + SSLInt_AdvanceWriteSeqNum(client_->ssl_fd(), (1ULL << 30) - 3)); + SendReceive(); +} + class TlsConnectDatagram12Plus : public TlsConnectDatagram { public: TlsConnectDatagram12Plus() : TlsConnectDatagram() {} @@ -861,9 +884,54 @@ TEST_P(TlsConnectDatagram12Plus, MissAWindowAndOne) { SendReceive(); } +// This filter replaces the first record it sees with junk application data. +class TlsReplaceFirstRecordWithJunk : public TlsRecordFilter { + public: + TlsReplaceFirstRecordWithJunk(const std::shared_ptr<TlsAgent>& a) + : TlsRecordFilter(a), replaced_(false) {} + + protected: + PacketFilter::Action FilterRecord(const TlsRecordHeader& header, + const DataBuffer& record, size_t* offset, + DataBuffer* output) override { + if (replaced_) { + return KEEP; + } + replaced_ = true; + TlsRecordHeader out_header(header.variant(), header.version(), + kTlsApplicationDataType, + header.sequence_number()); + + static const uint8_t junk[] = {1, 2, 3, 4}; + *offset = out_header.Write(output, *offset, DataBuffer(junk, sizeof(junk))); + return CHANGE; + } + + private: + bool replaced_; +}; + +// DTLS needs to discard application_data that it receives prior to handshake +// completion, not generate an error. +TEST_P(TlsConnectDatagram, ReplaceFirstServerRecordWithApplicationData) { + MakeTlsFilter<TlsReplaceFirstRecordWithJunk>(server_); + Connect(); +} + +TEST_P(TlsConnectDatagram, ReplaceFirstClientRecordWithApplicationData) { + MakeTlsFilter<TlsReplaceFirstRecordWithJunk>(client_); + Connect(); +} + INSTANTIATE_TEST_CASE_P(Datagram12Plus, TlsConnectDatagram12Plus, TlsConnectTestBase::kTlsV12Plus); INSTANTIATE_TEST_CASE_P(DatagramPre13, TlsConnectDatagramPre13, TlsConnectTestBase::kTlsV11V12); +INSTANTIATE_TEST_CASE_P(DatagramDrop13, TlsDropDatagram13, + ::testing::Values(true, false)); +INSTANTIATE_TEST_CASE_P(DatagramReorder13, TlsReorderDatagram13, + ::testing::Values(true, false)); +INSTANTIATE_TEST_CASE_P(DatagramFragment13, TlsFragmentationAndRecoveryTest, + ::testing::Values(true, false)); } // namespace nss_test diff --git a/security/nss/gtests/ssl_gtest/ssl_ecdh_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_ecdh_unittest.cc index 3c7cd2ecf..12c6e8516 100644 --- a/security/nss/gtests/ssl_gtest/ssl_ecdh_unittest.cc +++ b/security/nss/gtests/ssl_gtest/ssl_ecdh_unittest.cc @@ -192,8 +192,8 @@ TEST_P(TlsConnectGenericPre13, P384PriorityFromModelSocket) { class TlsKeyExchangeGroupCapture : public TlsHandshakeFilter { public: - TlsKeyExchangeGroupCapture(const std::shared_ptr<TlsAgent> &agent) - : TlsHandshakeFilter(agent, {kTlsHandshakeServerKeyExchange}), + TlsKeyExchangeGroupCapture(const std::shared_ptr<TlsAgent> &a) + : TlsHandshakeFilter(a, {kTlsHandshakeServerKeyExchange}), group_(ssl_grp_none) {} SSLNamedGroup group() const { return group_; } @@ -559,6 +559,113 @@ TEST_P(TlsConnectGenericPre13, ConnectECDHEmptyClientPoint) { server_->CheckErrorCode(SSL_ERROR_RX_MALFORMED_CLIENT_KEY_EXCH); } +// Damage ECParams/ECPoint of a SKE. +class ECCServerKEXDamager : public TlsHandshakeFilter { + public: + ECCServerKEXDamager(const std::shared_ptr<TlsAgent> &server, ECType ec_type, + SSLNamedGroup named_curve) + : TlsHandshakeFilter(server, {kTlsHandshakeServerKeyExchange}), + ec_type_(ec_type), + named_curve_(named_curve) {} + + protected: + virtual PacketFilter::Action FilterHandshake(const HandshakeHeader &header, + const DataBuffer &input, + DataBuffer *output) { + size_t offset = 0; + output->Allocate(5); + offset = output->Write(offset, ec_type_, 1); + offset = output->Write(offset, named_curve_, 2); + // Write a point with fmt != EC_POINT_FORM_UNCOMPRESSED. + offset = output->Write(offset, 1U, 1); + (void)output->Write(offset, 0x02, 1); // EC_POINT_FORM_COMPRESSED_Y0 + return CHANGE; + } + + private: + ECType ec_type_; + SSLNamedGroup named_curve_; +}; + +TEST_P(TlsConnectGenericPre13, ConnectUnsupportedCurveType) { + EnsureTlsSetup(); + client_->DisableAllCiphers(); + client_->EnableCiphersByKeyExchange(ssl_kea_ecdh); + + MakeTlsFilter<ECCServerKEXDamager>(server_, ec_type_explicitPrime, + ssl_grp_none); + ConnectExpectAlert(client_, kTlsAlertHandshakeFailure); + client_->CheckErrorCode(SEC_ERROR_UNSUPPORTED_ELLIPTIC_CURVE); +} + +TEST_P(TlsConnectGenericPre13, ConnectUnsupportedCurve) { + EnsureTlsSetup(); + client_->DisableAllCiphers(); + client_->EnableCiphersByKeyExchange(ssl_kea_ecdh); + + MakeTlsFilter<ECCServerKEXDamager>(server_, ec_type_named, + ssl_grp_ffdhe_2048); + ConnectExpectAlert(client_, kTlsAlertHandshakeFailure); + client_->CheckErrorCode(SEC_ERROR_UNSUPPORTED_ELLIPTIC_CURVE); +} + +TEST_P(TlsConnectGenericPre13, ConnectUnsupportedPointFormat) { + EnsureTlsSetup(); + client_->DisableAllCiphers(); + client_->EnableCiphersByKeyExchange(ssl_kea_ecdh); + + MakeTlsFilter<ECCServerKEXDamager>(server_, ec_type_named, + ssl_grp_ec_secp256r1); + ConnectExpectAlert(client_, kTlsAlertHandshakeFailure); + client_->CheckErrorCode(SEC_ERROR_UNSUPPORTED_EC_POINT_FORM); +} + +// Replace SignatureAndHashAlgorithm of a SKE. +class ECCServerKEXSigAlgReplacer : public TlsHandshakeFilter { + public: + ECCServerKEXSigAlgReplacer(const std::shared_ptr<TlsAgent> &server, + SSLSignatureScheme sig_scheme) + : TlsHandshakeFilter(server, {kTlsHandshakeServerKeyExchange}), + sig_scheme_(sig_scheme) {} + + protected: + virtual PacketFilter::Action FilterHandshake(const HandshakeHeader &header, + const DataBuffer &input, + DataBuffer *output) { + *output = input; + + uint32_t point_len; + EXPECT_TRUE(output->Read(3, 1, &point_len)); + output->Write(4 + point_len, sig_scheme_, 2); + + return CHANGE; + } + + private: + SSLSignatureScheme sig_scheme_; +}; + +TEST_P(TlsConnectTls12, ConnectUnsupportedSigAlg) { + EnsureTlsSetup(); + client_->DisableAllCiphers(); + client_->EnableCiphersByKeyExchange(ssl_kea_ecdh); + + MakeTlsFilter<ECCServerKEXSigAlgReplacer>(server_, ssl_sig_none); + ConnectExpectAlert(client_, kTlsAlertIllegalParameter); + client_->CheckErrorCode(SSL_ERROR_UNSUPPORTED_SIGNATURE_ALGORITHM); +} + +TEST_P(TlsConnectTls12, ConnectIncorrectSigAlg) { + EnsureTlsSetup(); + client_->DisableAllCiphers(); + client_->EnableCiphersByKeyExchange(ssl_kea_ecdh); + + MakeTlsFilter<ECCServerKEXSigAlgReplacer>(server_, + ssl_sig_ecdsa_secp256r1_sha256); + ConnectExpectAlert(client_, kTlsAlertIllegalParameter); + client_->CheckErrorCode(SSL_ERROR_INCORRECT_SIGNATURE_ALGORITHM); +} + INSTANTIATE_TEST_CASE_P(KeyExchangeTest, TlsKeyExchangeTest, ::testing::Combine(TlsConnectTestBase::kTlsVariantsAll, TlsConnectTestBase::kTlsV11Plus)); diff --git a/security/nss/gtests/ssl_gtest/ssl_extension_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_extension_unittest.cc index 0453dabdb..6965e9ca7 100644 --- a/security/nss/gtests/ssl_gtest/ssl_extension_unittest.cc +++ b/security/nss/gtests/ssl_gtest/ssl_extension_unittest.cc @@ -19,9 +19,9 @@ namespace nss_test { class TlsExtensionTruncator : public TlsExtensionFilter { public: - TlsExtensionTruncator(const std::shared_ptr<TlsAgent>& agent, - uint16_t extension, size_t length) - : TlsExtensionFilter(agent), extension_(extension), length_(length) {} + TlsExtensionTruncator(const std::shared_ptr<TlsAgent>& a, uint16_t extension, + size_t length) + : TlsExtensionFilter(a), extension_(extension), length_(length) {} virtual PacketFilter::Action FilterExtension(uint16_t extension_type, const DataBuffer& input, DataBuffer* output) { @@ -43,9 +43,9 @@ class TlsExtensionTruncator : public TlsExtensionFilter { class TlsExtensionDamager : public TlsExtensionFilter { public: - TlsExtensionDamager(const std::shared_ptr<TlsAgent>& agent, - uint16_t extension, size_t index) - : TlsExtensionFilter(agent), extension_(extension), index_(index) {} + TlsExtensionDamager(const std::shared_ptr<TlsAgent>& a, uint16_t extension, + size_t index) + : TlsExtensionFilter(a), extension_(extension), index_(index) {} virtual PacketFilter::Action FilterExtension(uint16_t extension_type, const DataBuffer& input, DataBuffer* output) { @@ -65,11 +65,9 @@ class TlsExtensionDamager : public TlsExtensionFilter { class TlsExtensionAppender : public TlsHandshakeFilter { public: - TlsExtensionAppender(const std::shared_ptr<TlsAgent>& agent, + TlsExtensionAppender(const std::shared_ptr<TlsAgent>& a, uint8_t handshake_type, uint16_t ext, DataBuffer& data) - : TlsHandshakeFilter(agent, {handshake_type}), - extension_(ext), - data_(data) {} + : TlsHandshakeFilter(a, {handshake_type}), extension_(ext), data_(data) {} virtual PacketFilter::Action FilterHandshake(const HandshakeHeader& header, const DataBuffer& input, @@ -323,7 +321,15 @@ TEST_P(TlsExtensionTestGeneric, AlpnMissingValue) { TEST_P(TlsExtensionTestGeneric, AlpnZeroLength) { EnableAlpn(); - const uint8_t val[] = {0x01, 0x61, 0x00}; + const uint8_t val[] = {0x00, 0x03, 0x01, 0x61, 0x00}; + DataBuffer extension(val, sizeof(val)); + ClientHelloErrorTest(std::make_shared<TlsExtensionReplacer>( + client_, ssl_app_layer_protocol_xtn, extension)); +} + +TEST_P(TlsExtensionTestGeneric, AlpnLengthOverflow) { + EnableAlpn(); + const uint8_t val[] = {0x00, 0x03, 0x01, 0x61, 0x01}; DataBuffer extension(val, sizeof(val)); ClientHelloErrorTest(std::make_shared<TlsExtensionReplacer>( client_, ssl_app_layer_protocol_xtn, extension)); @@ -628,12 +634,9 @@ typedef std::function<void(TlsPreSharedKeyReplacer*)> class TlsPreSharedKeyReplacer : public TlsExtensionFilter { public: - TlsPreSharedKeyReplacer(const std::shared_ptr<TlsAgent>& agent, + TlsPreSharedKeyReplacer(const std::shared_ptr<TlsAgent>& a, TlsPreSharedKeyReplacerFunc function) - : TlsExtensionFilter(agent), - identities_(), - binders_(), - function_(function) {} + : TlsExtensionFilter(a), identities_(), binders_(), function_(function) {} static size_t CopyAndMaybeReplace(TlsParser* parser, size_t size, const std::unique_ptr<DataBuffer>& replace, diff --git a/security/nss/gtests/ssl_gtest/ssl_fragment_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_fragment_unittest.cc index f4940bf28..92947c2c7 100644 --- a/security/nss/gtests/ssl_gtest/ssl_fragment_unittest.cc +++ b/security/nss/gtests/ssl_gtest/ssl_fragment_unittest.cc @@ -20,14 +20,16 @@ namespace nss_test { // This class cuts every unencrypted handshake record into two parts. class RecordFragmenter : public PacketFilter { public: - RecordFragmenter() : sequence_number_(0), splitting_(true) {} + RecordFragmenter(bool is_dtls13) + : is_dtls13_(is_dtls13), sequence_number_(0), splitting_(true) {} private: class HandshakeSplitter { public: - HandshakeSplitter(const DataBuffer& input, DataBuffer* output, - uint64_t* sequence_number) - : input_(input), + HandshakeSplitter(bool is_dtls13, const DataBuffer& input, + DataBuffer* output, uint64_t* sequence_number) + : is_dtls13_(is_dtls13), + input_(input), output_(output), cursor_(0), sequence_number_(sequence_number) {} @@ -35,9 +37,9 @@ class RecordFragmenter : public PacketFilter { private: void WriteRecord(TlsRecordHeader& record_header, DataBuffer& record_fragment) { - TlsRecordHeader fragment_header(record_header.version(), - record_header.content_type(), - *sequence_number_); + TlsRecordHeader fragment_header( + record_header.variant(), record_header.version(), + record_header.content_type(), *sequence_number_); ++*sequence_number_; if (::g_ssl_gtest_verbose) { std::cerr << "Fragment: " << fragment_header << ' ' << record_fragment @@ -88,7 +90,7 @@ class RecordFragmenter : public PacketFilter { while (parser.remaining()) { TlsRecordHeader header; DataBuffer record; - if (!header.Parse(0, &parser, &record)) { + if (!header.Parse(is_dtls13_, 0, &parser, &record)) { ADD_FAILURE() << "bad record header"; return false; } @@ -118,6 +120,7 @@ class RecordFragmenter : public PacketFilter { } private: + bool is_dtls13_; const DataBuffer& input_; DataBuffer* output_; size_t cursor_; @@ -132,7 +135,7 @@ class RecordFragmenter : public PacketFilter { } output->Allocate(input.len()); - HandshakeSplitter splitter(input, output, &sequence_number_); + HandshakeSplitter splitter(is_dtls13_, input, output, &sequence_number_); if (!splitter.Split()) { // If splitting fails, we obviously reached encrypted packets. // Stop splitting from that point onward. @@ -144,18 +147,21 @@ class RecordFragmenter : public PacketFilter { } private: + bool is_dtls13_; uint64_t sequence_number_; bool splitting_; }; TEST_P(TlsConnectDatagram, FragmentClientPackets) { - client_->SetFilter(std::make_shared<RecordFragmenter>()); + bool is_dtls13 = version_ >= SSL_LIBRARY_VERSION_TLS_1_3; + client_->SetFilter(std::make_shared<RecordFragmenter>(is_dtls13)); Connect(); SendReceive(); } TEST_P(TlsConnectDatagram, FragmentServerPackets) { - server_->SetFilter(std::make_shared<RecordFragmenter>()); + bool is_dtls13 = version_ >= SSL_LIBRARY_VERSION_TLS_1_3; + server_->SetFilter(std::make_shared<RecordFragmenter>(is_dtls13)); Connect(); SendReceive(); } diff --git a/security/nss/gtests/ssl_gtest/ssl_fuzz_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_fuzz_unittest.cc index 99448321c..f0afc9118 100644 --- a/security/nss/gtests/ssl_gtest/ssl_fuzz_unittest.cc +++ b/security/nss/gtests/ssl_gtest/ssl_fuzz_unittest.cc @@ -27,8 +27,8 @@ class TlsFuzzTest : public ::testing::Test {}; // Record the application data stream. class TlsApplicationDataRecorder : public TlsRecordFilter { public: - TlsApplicationDataRecorder(const std::shared_ptr<TlsAgent>& agent) - : TlsRecordFilter(agent), buffer_() {} + TlsApplicationDataRecorder(const std::shared_ptr<TlsAgent>& a) + : TlsRecordFilter(a), buffer_() {} virtual PacketFilter::Action FilterRecord(const TlsRecordHeader& header, const DataBuffer& input, diff --git a/security/nss/gtests/ssl_gtest/ssl_gtest.gyp b/security/nss/gtests/ssl_gtest/ssl_gtest.gyp index e2a8d830a..17677713d 100644 --- a/security/nss/gtests/ssl_gtest/ssl_gtest.gyp +++ b/security/nss/gtests/ssl_gtest/ssl_gtest.gyp @@ -37,6 +37,7 @@ 'ssl_loopback_unittest.cc', 'ssl_misc_unittest.cc', 'ssl_record_unittest.cc', + 'ssl_recordsize_unittest.cc', 'ssl_resumption_unittest.cc', 'ssl_renegotiation_unittest.cc', 'ssl_skip_unittest.cc', diff --git a/security/nss/gtests/ssl_gtest/ssl_hrr_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_hrr_unittest.cc index 05ae87034..77b335e86 100644 --- a/security/nss/gtests/ssl_gtest/ssl_hrr_unittest.cc +++ b/security/nss/gtests/ssl_gtest/ssl_hrr_unittest.cc @@ -69,8 +69,8 @@ TEST_P(TlsConnectTls13, HelloRetryRequestAbortsZeroRtt) { // handshake packets, this will break. class CorrectMessageSeqAfterHrrFilter : public TlsRecordFilter { public: - CorrectMessageSeqAfterHrrFilter(const std::shared_ptr<TlsAgent>& agent) - : TlsRecordFilter(agent) {} + CorrectMessageSeqAfterHrrFilter(const std::shared_ptr<TlsAgent>& a) + : TlsRecordFilter(a) {} protected: PacketFilter::Action FilterRecord(const TlsRecordHeader& header, @@ -81,8 +81,9 @@ class CorrectMessageSeqAfterHrrFilter : public TlsRecordFilter { } DataBuffer buffer(record); - TlsRecordHeader new_header = {header.version(), header.content_type(), - header.sequence_number() + 1}; + TlsRecordHeader new_header(header.variant(), header.version(), + header.content_type(), + header.sequence_number() + 1); // Correct message_seq. buffer.Write(4, 1U, 2); @@ -151,8 +152,8 @@ TEST_P(TlsConnectTls13, SecondClientHelloRejectEarlyDataXtn) { class KeyShareReplayer : public TlsExtensionFilter { public: - KeyShareReplayer(const std::shared_ptr<TlsAgent>& agent) - : TlsExtensionFilter(agent) {} + KeyShareReplayer(const std::shared_ptr<TlsAgent>& a) + : TlsExtensionFilter(a) {} virtual PacketFilter::Action FilterExtension(uint16_t extension_type, const DataBuffer& input, @@ -567,6 +568,28 @@ void TriggerHelloRetryRequest(std::shared_ptr<TlsAgent>& client, client->Handshake(); server->Handshake(); EXPECT_EQ(1U, cb_called); + // Stop the callback from being called in future handshakes. + EXPECT_EQ(SECSuccess, + SSL_HelloRetryRequestCallback(server->ssl_fd(), nullptr, nullptr)); +} + +TEST_P(TlsConnectTls13, VersionNumbersAfterRetry) { + ConfigureSelfEncrypt(); + EnsureTlsSetup(); + auto r = MakeTlsFilter<TlsRecordRecorder>(client_); + TriggerHelloRetryRequest(client_, server_); + Handshake(); + ASSERT_GT(r->count(), 1UL); + auto ch1 = r->record(0); + if (ch1.header.is_dtls()) { + ASSERT_EQ(SSL_LIBRARY_VERSION_TLS_1_1, ch1.header.version()); + } else { + ASSERT_EQ(SSL_LIBRARY_VERSION_TLS_1_0, ch1.header.version()); + } + auto ch2 = r->record(1); + ASSERT_EQ(SSL_LIBRARY_VERSION_TLS_1_2, ch2.header.version()); + + CheckConnected(); } TEST_P(TlsConnectTls13, RetryStateless) { @@ -577,6 +600,7 @@ TEST_P(TlsConnectTls13, RetryStateless) { MakeNewServer(); Handshake(); + CheckConnected(); SendReceive(); } @@ -593,6 +617,68 @@ TEST_P(TlsConnectTls13, RetryStatefulDropCookie) { server_->CheckErrorCode(SSL_ERROR_MISSING_COOKIE_EXTENSION); } +class TruncateHrrCookie : public TlsExtensionFilter { + public: + TruncateHrrCookie(const std::shared_ptr<TlsAgent>& a) + : TlsExtensionFilter(a) {} + virtual PacketFilter::Action FilterExtension(uint16_t extension_type, + const DataBuffer& input, + DataBuffer* output) { + if (extension_type != ssl_tls13_cookie_xtn) { + return KEEP; + } + + // Claim a zero-length cookie. + output->Allocate(2); + output->Write(0, static_cast<uint32_t>(0), 2); + return CHANGE; + } +}; + +TEST_P(TlsConnectTls13, RetryCookieEmpty) { + ConfigureSelfEncrypt(); + EnsureTlsSetup(); + + TriggerHelloRetryRequest(client_, server_); + MakeTlsFilter<TruncateHrrCookie>(client_); + + ExpectAlert(server_, kTlsAlertHandshakeFailure); + Handshake(); + client_->CheckErrorCode(SSL_ERROR_NO_CYPHER_OVERLAP); + server_->CheckErrorCode(SSL_ERROR_RX_MALFORMED_CLIENT_HELLO); +} + +class AddJunkToCookie : public TlsExtensionFilter { + public: + AddJunkToCookie(const std::shared_ptr<TlsAgent>& a) : TlsExtensionFilter(a) {} + virtual PacketFilter::Action FilterExtension(uint16_t extension_type, + const DataBuffer& input, + DataBuffer* output) { + if (extension_type != ssl_tls13_cookie_xtn) { + return KEEP; + } + + *output = input; + // Add junk after the cookie. + static const uint8_t junk[2] = {1, 2}; + output->Append(DataBuffer(junk, sizeof(junk))); + return CHANGE; + } +}; + +TEST_P(TlsConnectTls13, RetryCookieWithExtras) { + ConfigureSelfEncrypt(); + EnsureTlsSetup(); + + TriggerHelloRetryRequest(client_, server_); + MakeTlsFilter<AddJunkToCookie>(client_); + + ExpectAlert(server_, kTlsAlertHandshakeFailure); + Handshake(); + client_->CheckErrorCode(SSL_ERROR_NO_CYPHER_OVERLAP); + server_->CheckErrorCode(SSL_ERROR_RX_MALFORMED_CLIENT_HELLO); +} + // Stream only because DTLS drops bad packets. TEST_F(TlsConnectStreamTls13, RetryStatelessDamageFirstClientHello) { ConfigureSelfEncrypt(); @@ -907,7 +993,10 @@ class HelloRetryRequestAgentTest : public TlsAgentTestClient { hrr_data.Allocate(len + 6); size_t i = 0; - i = hrr_data.Write(i, 0x0303, 2); + i = hrr_data.Write(i, variant_ == ssl_variant_datagram + ? SSL_LIBRARY_VERSION_DTLS_1_2_WIRE + : SSL_LIBRARY_VERSION_TLS_1_2, + 2); i = hrr_data.Write(i, ssl_hello_retry_random, sizeof(ssl_hello_retry_random)); i = hrr_data.Write(i, static_cast<uint32_t>(0), 1); // session_id @@ -973,6 +1062,39 @@ TEST_P(HelloRetryRequestAgentTest, HandleNoopHelloRetryRequest) { SSL_ERROR_RX_MALFORMED_HELLO_RETRY_REQUEST); } +class ReplaceRandom : public TlsHandshakeFilter { + public: + ReplaceRandom(const std::shared_ptr<TlsAgent>& a, const DataBuffer& r) + : TlsHandshakeFilter(a, {kTlsHandshakeServerHello}), random_(r) {} + + PacketFilter::Action FilterHandshake(const HandshakeHeader& header, + const DataBuffer& input, + DataBuffer* output) override { + output->Assign(input); + output->Write(2, random_); + return CHANGE; + } + + private: + DataBuffer random_; +}; + +// Make sure that the TLS 1.3 special value for the ServerHello.random +// is rejected by earlier versions. +TEST_P(TlsConnectStreamPre13, HrrRandomOnTls10) { + static const uint8_t hrr_random[] = { + 0xCF, 0x21, 0xAD, 0x74, 0xE5, 0x9A, 0x61, 0x11, 0xBE, 0x1D, 0x8C, + 0x02, 0x1E, 0x65, 0xB8, 0x91, 0xC2, 0xA2, 0x11, 0x16, 0x7A, 0xBB, + 0x8C, 0x5E, 0x07, 0x9E, 0x09, 0xE2, 0xC8, 0xA8, 0x33, 0x9C}; + + EnsureTlsSetup(); + MakeTlsFilter<ReplaceRandom>(server_, + DataBuffer(hrr_random, sizeof(hrr_random))); + ConnectExpectAlert(client_, kTlsAlertIllegalParameter); + client_->CheckErrorCode(SSL_ERROR_RX_MALFORMED_SERVER_HELLO); + server_->CheckErrorCode(SSL_ERROR_ILLEGAL_PARAMETER_ALERT); +} + INSTANTIATE_TEST_CASE_P(HelloRetryRequestAgentTests, HelloRetryRequestAgentTest, ::testing::Combine(TlsConnectTestBase::kTlsVariantsAll, TlsConnectTestBase::kTlsV13)); diff --git a/security/nss/gtests/ssl_gtest/ssl_loopback_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_loopback_unittest.cc index f1b78f52f..5adbd9dc7 100644 --- a/security/nss/gtests/ssl_gtest/ssl_loopback_unittest.cc +++ b/security/nss/gtests/ssl_gtest/ssl_loopback_unittest.cc @@ -56,8 +56,8 @@ TEST_P(TlsConnectGeneric, CipherSuiteMismatch) { class TlsAlertRecorder : public TlsRecordFilter { public: - TlsAlertRecorder(const std::shared_ptr<TlsAgent>& agent) - : TlsRecordFilter(agent), level_(255), description_(255) {} + TlsAlertRecorder(const std::shared_ptr<TlsAgent>& a) + : TlsRecordFilter(a), level_(255), description_(255) {} PacketFilter::Action FilterRecord(const TlsRecordHeader& header, const DataBuffer& input, @@ -87,9 +87,9 @@ class TlsAlertRecorder : public TlsRecordFilter { class HelloTruncator : public TlsHandshakeFilter { public: - HelloTruncator(const std::shared_ptr<TlsAgent>& agent) + HelloTruncator(const std::shared_ptr<TlsAgent>& a) : TlsHandshakeFilter( - agent, {kTlsHandshakeClientHello, kTlsHandshakeServerHello}) {} + a, {kTlsHandshakeClientHello, kTlsHandshakeServerHello}) {} PacketFilter::Action FilterHandshake(const HandshakeHeader& header, const DataBuffer& input, DataBuffer* output) override { @@ -149,6 +149,27 @@ TEST_P(TlsConnectGeneric, ConnectAlpn) { CheckAlpn("a"); } +TEST_P(TlsConnectGeneric, ConnectAlpnPriorityA) { + // "alpn" "npn" + // alpn is the fallback here. npn has the highest priority and should be + // picked. + const std::vector<uint8_t> alpn = {0x04, 0x61, 0x6c, 0x70, 0x6e, + 0x03, 0x6e, 0x70, 0x6e}; + EnableAlpn(alpn); + Connect(); + CheckAlpn("npn"); +} + +TEST_P(TlsConnectGeneric, ConnectAlpnPriorityB) { + // "alpn" "npn" "http" + // npn has the highest priority and should be picked. + const std::vector<uint8_t> alpn = {0x04, 0x61, 0x6c, 0x70, 0x6e, 0x03, 0x6e, + 0x70, 0x6e, 0x04, 0x68, 0x74, 0x74, 0x70}; + EnableAlpn(alpn); + Connect(); + CheckAlpn("npn"); +} + TEST_P(TlsConnectGeneric, ConnectAlpnClone) { EnsureModelSockets(); client_model_->EnableAlpn(alpn_dummy_val_, sizeof(alpn_dummy_val_)); @@ -157,6 +178,33 @@ TEST_P(TlsConnectGeneric, ConnectAlpnClone) { CheckAlpn("a"); } +TEST_P(TlsConnectGeneric, ConnectAlpnWithCustomCallbackA) { + // "ab" "alpn" + const std::vector<uint8_t> client_alpn = {0x02, 0x61, 0x62, 0x04, + 0x61, 0x6c, 0x70, 0x6e}; + EnableAlpnWithCallback(client_alpn, "alpn"); + Connect(); + CheckAlpn("alpn"); +} + +TEST_P(TlsConnectGeneric, ConnectAlpnWithCustomCallbackB) { + // "ab" "alpn" + const std::vector<uint8_t> client_alpn = {0x02, 0x61, 0x62, 0x04, + 0x61, 0x6c, 0x70, 0x6e}; + EnableAlpnWithCallback(client_alpn, "ab"); + Connect(); + CheckAlpn("ab"); +} + +TEST_P(TlsConnectGeneric, ConnectAlpnWithCustomCallbackC) { + // "cd" "npn" "alpn" + const std::vector<uint8_t> client_alpn = {0x02, 0x63, 0x64, 0x03, 0x6e, 0x70, + 0x6e, 0x04, 0x61, 0x6c, 0x70, 0x6e}; + EnableAlpnWithCallback(client_alpn, "npn"); + Connect(); + CheckAlpn("npn"); +} + TEST_P(TlsConnectDatagram, ConnectSrtp) { EnableSrtp(); Connect(); @@ -171,8 +219,8 @@ TEST_P(TlsConnectGeneric, ConnectSendReceive) { class SaveTlsRecord : public TlsRecordFilter { public: - SaveTlsRecord(const std::shared_ptr<TlsAgent>& agent, size_t index) - : TlsRecordFilter(agent), index_(index), count_(0), contents_() {} + SaveTlsRecord(const std::shared_ptr<TlsAgent>& a, size_t index) + : TlsRecordFilter(a), index_(index), count_(0), contents_() {} const DataBuffer& contents() const { return contents_; } @@ -227,8 +275,8 @@ TEST_F(TlsConnectStreamTls13, DecryptRecordServer) { class DropTlsRecord : public TlsRecordFilter { public: - DropTlsRecord(const std::shared_ptr<TlsAgent>& agent, size_t index) - : TlsRecordFilter(agent), index_(index), count_(0) {} + DropTlsRecord(const std::shared_ptr<TlsAgent>& a, size_t index) + : TlsRecordFilter(a), index_(index), count_(0) {} protected: PacketFilter::Action FilterRecord(const TlsRecordHeader& header, @@ -373,8 +421,8 @@ TEST_P(TlsHolddownTest, TestDtlsHolddownExpiryResumption) { class TlsPreCCSHeaderInjector : public TlsRecordFilter { public: - TlsPreCCSHeaderInjector(const std::shared_ptr<TlsAgent>& agent) - : TlsRecordFilter(agent) {} + TlsPreCCSHeaderInjector(const std::shared_ptr<TlsAgent>& a) + : TlsRecordFilter(a) {} virtual PacketFilter::Action FilterRecord( const TlsRecordHeader& record_header, const DataBuffer& input, size_t* offset, DataBuffer* output) override { @@ -383,7 +431,8 @@ class TlsPreCCSHeaderInjector : public TlsRecordFilter { std::cerr << "Injecting Finished header before CCS\n"; const uint8_t hhdr[] = {kTlsHandshakeFinished, 0x00, 0x00, 0x0c}; DataBuffer hhdr_buf(hhdr, sizeof(hhdr)); - TlsRecordHeader nhdr(record_header.version(), kTlsHandshakeType, 0); + TlsRecordHeader nhdr(record_header.variant(), record_header.version(), + kTlsHandshakeType, 0); *offset = nhdr.Write(output, *offset, hhdr_buf); *offset = record_header.Write(output, *offset, input); return CHANGE; diff --git a/security/nss/gtests/ssl_gtest/ssl_record_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_record_unittest.cc index 3b8727850..53b11c61a 100644 --- a/security/nss/gtests/ssl_gtest/ssl_record_unittest.cc +++ b/security/nss/gtests/ssl_gtest/ssl_record_unittest.cc @@ -103,16 +103,14 @@ TEST_P(TlsPaddingTest, LastByteOfPadWrong) { class RecordReplacer : public TlsRecordFilter { public: - RecordReplacer(const std::shared_ptr<TlsAgent>& agent, size_t size) - : TlsRecordFilter(agent), enabled_(false), size_(size) {} + RecordReplacer(const std::shared_ptr<TlsAgent>& a, size_t size) + : TlsRecordFilter(a), size_(size) { + Disable(); + } PacketFilter::Action FilterRecord(const TlsRecordHeader& header, const DataBuffer& data, DataBuffer* changed) override { - if (!enabled_) { - return KEEP; - } - EXPECT_EQ(kTlsApplicationDataType, header.content_type()); changed->Allocate(size_); @@ -120,17 +118,33 @@ class RecordReplacer : public TlsRecordFilter { changed->data()[i] = i & 0xff; } - enabled_ = false; + Disable(); return CHANGE; } - void Enable() { enabled_ = true; } - private: - bool enabled_; size_t size_; }; +TEST_P(TlsConnectStream, BadRecordMac) { + EnsureTlsSetup(); + Connect(); + client_->SetFilter(std::make_shared<TlsRecordLastByteDamager>(client_)); + ExpectAlert(server_, kTlsAlertBadRecordMac); + client_->SendData(10); + + // Read from the client, get error. + uint8_t buf[10]; + PRInt32 rv = PR_Read(server_->ssl_fd(), buf, sizeof(buf)); + EXPECT_GT(0, rv); + EXPECT_EQ(SSL_ERROR_BAD_MAC_READ, PORT_GetError()); + + // Read the server alert. + rv = PR_Read(client_->ssl_fd(), buf, sizeof(buf)); + EXPECT_GT(0, rv); + EXPECT_EQ(SSL_ERROR_BAD_MAC_ALERT, PORT_GetError()); +} + TEST_F(TlsConnectStreamTls13, LargeRecord) { EnsureTlsSetup(); @@ -168,6 +182,29 @@ TEST_F(TlsConnectStreamTls13, TooLargeRecord) { EXPECT_EQ(SSL_ERROR_RECORD_OVERFLOW_ALERT, PORT_GetError()); } +class ShortHeaderChecker : public PacketFilter { + public: + PacketFilter::Action Filter(const DataBuffer& input, DataBuffer* output) { + // The first octet should be 0b001xxxxx. + EXPECT_EQ(1, input.data()[0] >> 5); + return KEEP; + } +}; + +TEST_F(TlsConnectDatagram13, ShortHeadersClient) { + Connect(); + client_->SetOption(SSL_ENABLE_DTLS_SHORT_HEADER, PR_TRUE); + client_->SetFilter(std::make_shared<ShortHeaderChecker>()); + SendReceive(); +} + +TEST_F(TlsConnectDatagram13, ShortHeadersServer) { + Connect(); + server_->SetOption(SSL_ENABLE_DTLS_SHORT_HEADER, PR_TRUE); + server_->SetFilter(std::make_shared<ShortHeaderChecker>()); + SendReceive(); +} + const static size_t kContentSizesArr[] = { 1, kMacSize - 1, kMacSize, 30, 31, 32, 36, 256, 257, 287, 288}; diff --git a/security/nss/gtests/ssl_gtest/ssl_recordsize_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_recordsize_unittest.cc new file mode 100644 index 000000000..00651aec5 --- /dev/null +++ b/security/nss/gtests/ssl_gtest/ssl_recordsize_unittest.cc @@ -0,0 +1,431 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=2 et sw=2 tw=80: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "secerr.h" +#include "ssl.h" +#include "sslerr.h" +#include "sslproto.h" + +#include "gtest_utils.h" +#include "scoped_ptrs.h" +#include "tls_connect.h" +#include "tls_filter.h" +#include "tls_parser.h" + +namespace nss_test { + +// This class tracks the maximum size of record that was sent, both cleartext +// and plain. It only tracks records that have an outer type of +// application_data. In TLS 1.3, this includes handshake messages. +class TlsRecordMaximum : public TlsRecordFilter { + public: + TlsRecordMaximum(const std::shared_ptr<TlsAgent>& a) + : TlsRecordFilter(a), max_ciphertext_(0), max_plaintext_(0) {} + + size_t max_ciphertext() const { return max_ciphertext_; } + size_t max_plaintext() const { return max_plaintext_; } + + protected: + PacketFilter::Action FilterRecord(const TlsRecordHeader& header, + const DataBuffer& record, size_t* offset, + DataBuffer* output) override { + std::cerr << "max: " << record << std::endl; + // Ignore unprotected packets. + if (header.content_type() != kTlsApplicationDataType) { + return KEEP; + } + + max_ciphertext_ = (std::max)(max_ciphertext_, record.len()); + return TlsRecordFilter::FilterRecord(header, record, offset, output); + } + + PacketFilter::Action FilterRecord(const TlsRecordHeader& header, + const DataBuffer& data, + DataBuffer* changed) override { + max_plaintext_ = (std::max)(max_plaintext_, data.len()); + return KEEP; + } + + private: + size_t max_ciphertext_; + size_t max_plaintext_; +}; + +void CheckRecordSizes(const std::shared_ptr<TlsAgent>& agent, + const std::shared_ptr<TlsRecordMaximum>& record_max, + size_t config) { + uint16_t cipher_suite; + ASSERT_TRUE(agent->cipher_suite(&cipher_suite)); + + size_t expansion; + size_t iv; + switch (cipher_suite) { + case TLS_AES_128_GCM_SHA256: + case TLS_AES_256_GCM_SHA384: + case TLS_CHACHA20_POLY1305_SHA256: + expansion = 16; + iv = 0; + break; + + case TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256: + expansion = 16; + iv = 8; + break; + + case TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA: + // Expansion is 20 for the MAC. Maximum block padding is 16. Maximum + // padding is added when the input plus the MAC is an exact multiple of + // the block size. + expansion = 20 + 16 - ((config + 20) % 16); + iv = 16; + break; + + default: + ADD_FAILURE() << "No expansion set for ciphersuite " + << agent->cipher_suite_name(); + return; + } + + switch (agent->version()) { + case SSL_LIBRARY_VERSION_TLS_1_3: + EXPECT_EQ(0U, iv) << "No IV for TLS 1.3"; + // We only have decryption in TLS 1.3. + EXPECT_EQ(config - 1, record_max->max_plaintext()) + << "bad plaintext length for " << agent->role_str(); + break; + + case SSL_LIBRARY_VERSION_TLS_1_2: + case SSL_LIBRARY_VERSION_TLS_1_1: + expansion += iv; + break; + + case SSL_LIBRARY_VERSION_TLS_1_0: + break; + + default: + ADD_FAILURE() << "Unexpected version " << agent->version(); + return; + } + + EXPECT_EQ(config + expansion, record_max->max_ciphertext()) + << "bad ciphertext length for " << agent->role_str(); +} + +TEST_P(TlsConnectGeneric, RecordSizeMaximum) { + uint16_t max_record_size = + (version_ >= SSL_LIBRARY_VERSION_TLS_1_3) ? 16385 : 16384; + size_t send_size = (version_ >= SSL_LIBRARY_VERSION_TLS_1_3) + ? max_record_size + : max_record_size + 1; + + EnsureTlsSetup(); + auto client_max = MakeTlsFilter<TlsRecordMaximum>(client_); + client_max->EnableDecryption(); + auto server_max = MakeTlsFilter<TlsRecordMaximum>(server_); + server_max->EnableDecryption(); + + Connect(); + client_->SendData(send_size, send_size); + server_->SendData(send_size, send_size); + server_->ReadBytes(send_size); + client_->ReadBytes(send_size); + + CheckRecordSizes(client_, client_max, max_record_size); + CheckRecordSizes(server_, server_max, max_record_size); +} + +TEST_P(TlsConnectGeneric, RecordSizeMinimumClient) { + EnsureTlsSetup(); + auto server_max = MakeTlsFilter<TlsRecordMaximum>(server_); + server_max->EnableDecryption(); + + client_->SetOption(SSL_RECORD_SIZE_LIMIT, 64); + Connect(); + SendReceive(127); // Big enough for one record, allowing for 1+N splitting. + + CheckRecordSizes(server_, server_max, 64); +} + +TEST_P(TlsConnectGeneric, RecordSizeMinimumServer) { + EnsureTlsSetup(); + auto client_max = MakeTlsFilter<TlsRecordMaximum>(client_); + client_max->EnableDecryption(); + + server_->SetOption(SSL_RECORD_SIZE_LIMIT, 64); + Connect(); + SendReceive(127); + + CheckRecordSizes(client_, client_max, 64); +} + +TEST_P(TlsConnectGeneric, RecordSizeAsymmetric) { + EnsureTlsSetup(); + auto client_max = MakeTlsFilter<TlsRecordMaximum>(client_); + client_max->EnableDecryption(); + auto server_max = MakeTlsFilter<TlsRecordMaximum>(server_); + server_max->EnableDecryption(); + + client_->SetOption(SSL_RECORD_SIZE_LIMIT, 64); + server_->SetOption(SSL_RECORD_SIZE_LIMIT, 100); + Connect(); + SendReceive(127); + + CheckRecordSizes(client_, client_max, 100); + CheckRecordSizes(server_, server_max, 64); +} + +// This just modifies the encrypted payload so to include a few extra zeros. +class TlsRecordExpander : public TlsRecordFilter { + public: + TlsRecordExpander(const std::shared_ptr<TlsAgent>& a, size_t expansion) + : TlsRecordFilter(a), expansion_(expansion) {} + + protected: + virtual PacketFilter::Action FilterRecord(const TlsRecordHeader& header, + const DataBuffer& data, + DataBuffer* changed) { + if (header.content_type() != kTlsApplicationDataType) { + return KEEP; + } + changed->Allocate(data.len() + expansion_); + changed->Write(0, data.data(), data.len()); + return CHANGE; + } + + private: + size_t expansion_; +}; + +// Tweak the plaintext of server records so that they exceed the client's limit. +TEST_P(TlsConnectTls13, RecordSizePlaintextExceed) { + EnsureTlsSetup(); + auto server_expand = MakeTlsFilter<TlsRecordExpander>(server_, 1); + server_expand->EnableDecryption(); + + client_->SetOption(SSL_RECORD_SIZE_LIMIT, 64); + Connect(); + + server_->SendData(100); + + client_->ExpectReadWriteError(); + ExpectAlert(client_, kTlsAlertRecordOverflow); + client_->ReadBytes(100); + EXPECT_EQ(SSL_ERROR_RX_RECORD_TOO_LONG, client_->error_code()); + + // Consume the alert at the server. + server_->Handshake(); + server_->CheckErrorCode(SSL_ERROR_RECORD_OVERFLOW_ALERT); +} + +// Tweak the ciphertext of server records so that they greatly exceed the limit. +// This requires a much larger expansion than for plaintext to trigger the +// guard, which runs before decryption (current allowance is 304 octets). +TEST_P(TlsConnectTls13, RecordSizeCiphertextExceed) { + EnsureTlsSetup(); + + client_->SetOption(SSL_RECORD_SIZE_LIMIT, 64); + Connect(); + + auto server_expand = MakeTlsFilter<TlsRecordExpander>(server_, 320); + server_->SendData(100); + + client_->ExpectReadWriteError(); + ExpectAlert(client_, kTlsAlertRecordOverflow); + client_->ReadBytes(100); + EXPECT_EQ(SSL_ERROR_RX_RECORD_TOO_LONG, client_->error_code()); + + // Consume the alert at the server. + server_->Handshake(); + server_->CheckErrorCode(SSL_ERROR_RECORD_OVERFLOW_ALERT); +} + +// This indiscriminately adds padding to application data records. +class TlsRecordPadder : public TlsRecordFilter { + public: + TlsRecordPadder(const std::shared_ptr<TlsAgent>& a, size_t padding) + : TlsRecordFilter(a), padding_(padding) {} + + protected: + PacketFilter::Action FilterRecord(const TlsRecordHeader& header, + const DataBuffer& record, size_t* offset, + DataBuffer* output) override { + if (header.content_type() != kTlsApplicationDataType) { + return KEEP; + } + + uint8_t inner_content_type; + DataBuffer plaintext; + if (!Unprotect(header, record, &inner_content_type, &plaintext)) { + return KEEP; + } + + if (inner_content_type != kTlsApplicationDataType) { + return KEEP; + } + + DataBuffer ciphertext; + bool ok = + Protect(header, inner_content_type, plaintext, &ciphertext, padding_); + EXPECT_TRUE(ok); + if (!ok) { + return KEEP; + } + *offset = header.Write(output, *offset, ciphertext); + return CHANGE; + } + + private: + size_t padding_; +}; + +TEST_P(TlsConnectTls13, RecordSizeExceedPad) { + EnsureTlsSetup(); + auto server_max = std::make_shared<TlsRecordMaximum>(server_); + auto server_expand = std::make_shared<TlsRecordPadder>(server_, 1); + server_->SetFilter(std::make_shared<ChainedPacketFilter>( + ChainedPacketFilterInit({server_max, server_expand}))); + server_expand->EnableDecryption(); + + client_->SetOption(SSL_RECORD_SIZE_LIMIT, 64); + Connect(); + + server_->SendData(100); + + client_->ExpectReadWriteError(); + ExpectAlert(client_, kTlsAlertRecordOverflow); + client_->ReadBytes(100); + EXPECT_EQ(SSL_ERROR_RX_RECORD_TOO_LONG, client_->error_code()); + + // Consume the alert at the server. + server_->Handshake(); + server_->CheckErrorCode(SSL_ERROR_RECORD_OVERFLOW_ALERT); +} + +TEST_P(TlsConnectGeneric, RecordSizeBadValues) { + EnsureTlsSetup(); + EXPECT_EQ(SECFailure, + SSL_OptionSet(client_->ssl_fd(), SSL_RECORD_SIZE_LIMIT, 63)); + EXPECT_EQ(SECFailure, + SSL_OptionSet(client_->ssl_fd(), SSL_RECORD_SIZE_LIMIT, -1)); + EXPECT_EQ(SECFailure, + SSL_OptionSet(server_->ssl_fd(), SSL_RECORD_SIZE_LIMIT, 16386)); + Connect(); +} + +TEST_P(TlsConnectGeneric, RecordSizeGetValues) { + EnsureTlsSetup(); + int v; + EXPECT_EQ(SECSuccess, + SSL_OptionGet(client_->ssl_fd(), SSL_RECORD_SIZE_LIMIT, &v)); + EXPECT_EQ(16385, v); + client_->SetOption(SSL_RECORD_SIZE_LIMIT, 300); + EXPECT_EQ(SECSuccess, + SSL_OptionGet(client_->ssl_fd(), SSL_RECORD_SIZE_LIMIT, &v)); + EXPECT_EQ(300, v); + Connect(); +} + +// The value of the extension is capped by the maximum version of the client. +TEST_P(TlsConnectGeneric, RecordSizeCapExtensionClient) { + EnsureTlsSetup(); + client_->SetOption(SSL_RECORD_SIZE_LIMIT, 16385); + auto capture = + MakeTlsFilter<TlsExtensionCapture>(client_, ssl_record_size_limit_xtn); + capture->EnableDecryption(); + Connect(); + + uint64_t val = 0; + EXPECT_TRUE(capture->extension().Read(0, 2, &val)); + if (version_ < SSL_LIBRARY_VERSION_TLS_1_3) { + EXPECT_EQ(16384U, val) << "Extension should be capped"; + } else { + EXPECT_EQ(16385U, val); + } +} + +// The value of the extension is capped by the maximum version of the server. +TEST_P(TlsConnectGeneric, RecordSizeCapExtensionServer) { + EnsureTlsSetup(); + server_->SetOption(SSL_RECORD_SIZE_LIMIT, 16385); + auto capture = + MakeTlsFilter<TlsExtensionCapture>(server_, ssl_record_size_limit_xtn); + capture->EnableDecryption(); + Connect(); + + uint64_t val = 0; + EXPECT_TRUE(capture->extension().Read(0, 2, &val)); + if (version_ < SSL_LIBRARY_VERSION_TLS_1_3) { + EXPECT_EQ(16384U, val) << "Extension should be capped"; + } else { + EXPECT_EQ(16385U, val); + } +} + +// Damage the client extension and the handshake fails, but the server +// doesn't generate a validation error. +TEST_P(TlsConnectGenericPre13, RecordSizeClientExtensionInvalid) { + EnsureTlsSetup(); + client_->SetOption(SSL_RECORD_SIZE_LIMIT, 1000); + static const uint8_t v[] = {0xf4, 0x1f}; + MakeTlsFilter<TlsExtensionReplacer>(client_, ssl_record_size_limit_xtn, + DataBuffer(v, sizeof(v))); + ConnectExpectAlert(server_, kTlsAlertDecryptError); +} + +// Special handling for TLS 1.3, where the alert isn't read. +TEST_F(TlsConnectStreamTls13, RecordSizeClientExtensionInvalid) { + EnsureTlsSetup(); + client_->SetOption(SSL_RECORD_SIZE_LIMIT, 1000); + static const uint8_t v[] = {0xf4, 0x1f}; + MakeTlsFilter<TlsExtensionReplacer>(client_, ssl_record_size_limit_xtn, + DataBuffer(v, sizeof(v))); + client_->ExpectSendAlert(kTlsAlertBadRecordMac); + server_->ExpectSendAlert(kTlsAlertBadRecordMac); + ConnectExpectFail(); +} + +TEST_P(TlsConnectGeneric, RecordSizeServerExtensionInvalid) { + EnsureTlsSetup(); + server_->SetOption(SSL_RECORD_SIZE_LIMIT, 1000); + static const uint8_t v[] = {0xf4, 0x1f}; + auto replace = MakeTlsFilter<TlsExtensionReplacer>( + server_, ssl_record_size_limit_xtn, DataBuffer(v, sizeof(v))); + replace->EnableDecryption(); + ConnectExpectAlert(client_, kTlsAlertIllegalParameter); +} + +class RecordSizeDefaultsTest : public ::testing::Test { + public: + void SetUp() { + EXPECT_EQ(SECSuccess, + SSL_OptionGetDefault(SSL_RECORD_SIZE_LIMIT, &default_)); + } + void TearDown() { + // Make sure to restore the default value at the end. + EXPECT_EQ(SECSuccess, + SSL_OptionSetDefault(SSL_RECORD_SIZE_LIMIT, default_)); + } + + private: + PRIntn default_ = 0; +}; + +TEST_F(RecordSizeDefaultsTest, RecordSizeBadValues) { + EXPECT_EQ(SECFailure, SSL_OptionSetDefault(SSL_RECORD_SIZE_LIMIT, 63)); + EXPECT_EQ(SECFailure, SSL_OptionSetDefault(SSL_RECORD_SIZE_LIMIT, -1)); + EXPECT_EQ(SECFailure, SSL_OptionSetDefault(SSL_RECORD_SIZE_LIMIT, 16386)); +} + +TEST_F(RecordSizeDefaultsTest, RecordSizeGetValue) { + int v; + EXPECT_EQ(SECSuccess, SSL_OptionGetDefault(SSL_RECORD_SIZE_LIMIT, &v)); + EXPECT_EQ(16385, v); + EXPECT_EQ(SECSuccess, SSL_OptionSetDefault(SSL_RECORD_SIZE_LIMIT, 3000)); + EXPECT_EQ(SECSuccess, SSL_OptionGetDefault(SSL_RECORD_SIZE_LIMIT, &v)); + EXPECT_EQ(3000, v); +} + +} // namespace nss_test diff --git a/security/nss/gtests/ssl_gtest/ssl_resumption_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_resumption_unittest.cc index eb78c0585..2cc98a327 100644 --- a/security/nss/gtests/ssl_gtest/ssl_resumption_unittest.cc +++ b/security/nss/gtests/ssl_gtest/ssl_resumption_unittest.cc @@ -484,10 +484,8 @@ TEST_P(TlsConnectStream, TestResumptionOverrideCipher) { class SelectedVersionReplacer : public TlsHandshakeFilter { public: - SelectedVersionReplacer(const std::shared_ptr<TlsAgent>& agent, - uint16_t version) - : TlsHandshakeFilter(agent, {kTlsHandshakeServerHello}), - version_(version) {} + SelectedVersionReplacer(const std::shared_ptr<TlsAgent>& a, uint16_t version) + : TlsHandshakeFilter(a, {kTlsHandshakeServerHello}), version_(version) {} protected: PacketFilter::Action FilterHandshake(const HandshakeHeader& header, diff --git a/security/nss/gtests/ssl_gtest/ssl_skip_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_skip_unittest.cc index e4a9e5aed..9ef19653b 100644 --- a/security/nss/gtests/ssl_gtest/ssl_skip_unittest.cc +++ b/security/nss/gtests/ssl_gtest/ssl_skip_unittest.cc @@ -22,11 +22,9 @@ namespace nss_test { class TlsHandshakeSkipFilter : public TlsRecordFilter { public: // A TLS record filter that skips handshake messages of the identified type. - TlsHandshakeSkipFilter(const std::shared_ptr<TlsAgent>& agent, + TlsHandshakeSkipFilter(const std::shared_ptr<TlsAgent>& a, uint8_t handshake_type) - : TlsRecordFilter(agent), - handshake_type_(handshake_type), - skipped_(false) {} + : TlsRecordFilter(a), handshake_type_(handshake_type), skipped_(false) {} protected: // Takes a record; if it is a handshake record, it removes the first handshake diff --git a/security/nss/gtests/ssl_gtest/ssl_staticrsa_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_staticrsa_unittest.cc index e5fccc12b..ff4091b9a 100644 --- a/security/nss/gtests/ssl_gtest/ssl_staticrsa_unittest.cc +++ b/security/nss/gtests/ssl_gtest/ssl_staticrsa_unittest.cc @@ -21,6 +21,7 @@ extern "C" { #include "tls_connect.h" #include "tls_filter.h" #include "tls_parser.h" +#include "rsa8193.h" namespace nss_test { @@ -100,4 +101,39 @@ TEST_P(TlsConnectStreamPre13, Connect(); } +// Replace the server certificate with one that uses 8193-bit RSA. +class TooLargeRSACertFilter : public TlsHandshakeFilter { + public: + TooLargeRSACertFilter(const std::shared_ptr<TlsAgent> &server) + : TlsHandshakeFilter(server, {kTlsHandshakeCertificate}) {} + + protected: + virtual PacketFilter::Action FilterHandshake(const HandshakeHeader &header, + const DataBuffer &input, + DataBuffer *output) { + const uint32_t cert_len = sizeof(rsa8193); + const uint32_t outer_len = cert_len + 3; + size_t offset = 0; + offset = output->Write(offset, outer_len, 3); + offset = output->Write(offset, cert_len, 3); + offset = output->Write(offset, rsa8193, cert_len); + + return CHANGE; + } +}; + +TEST_P(TlsConnectGenericPre13, TooLargeRSAKeyInCert) { + EnableOnlyStaticRsaCiphers(); + MakeTlsFilter<TooLargeRSACertFilter>(server_); + ConnectExpectAlert(client_, kTlsAlertIllegalParameter); + client_->CheckErrorCode(SSL_ERROR_CLIENT_KEY_EXCHANGE_FAILURE); + server_->CheckErrorCode(SSL_ERROR_ILLEGAL_PARAMETER_ALERT); +} + +TEST_P(TlsConnectGeneric, ServerAuthBiggestRsa) { + Reset(TlsAgent::kRsa8192); + Connect(); + CheckKeys(); +} + } // namespace nss_test diff --git a/security/nss/gtests/ssl_gtest/ssl_tls13compat_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_tls13compat_unittest.cc index f5ccf096b..42f1065f6 100644 --- a/security/nss/gtests/ssl_gtest/ssl_tls13compat_unittest.cc +++ b/security/nss/gtests/ssl_gtest/ssl_tls13compat_unittest.cc @@ -214,6 +214,98 @@ TEST_F(Tls13CompatTest, EnabledHrrZeroRtt) { CheckForCompatHandshake(); } +class TlsSessionIDEchoFilter : public TlsHandshakeFilter { + public: + TlsSessionIDEchoFilter(const std::shared_ptr<TlsAgent>& a) + : TlsHandshakeFilter( + a, {kTlsHandshakeClientHello, kTlsHandshakeServerHello}) {} + + protected: + virtual PacketFilter::Action FilterHandshake(const HandshakeHeader& header, + const DataBuffer& input, + DataBuffer* output) { + TlsParser parser(input); + + // Skip version + random. + EXPECT_TRUE(parser.Skip(2 + 32)); + + // Capture CH.legacy_session_id. + if (header.handshake_type() == kTlsHandshakeClientHello) { + EXPECT_TRUE(parser.ReadVariable(&sid_, 1)); + return KEEP; + } + + // Check that server sends one too. + uint32_t sid_len = 0; + EXPECT_TRUE(parser.Read(&sid_len, 1)); + EXPECT_EQ(sid_len, sid_.len()); + + // Echo the one we captured. + *output = input; + output->Write(parser.consumed(), sid_.data(), sid_.len()); + + return CHANGE; + } + + private: + DataBuffer sid_; +}; + +TEST_F(TlsConnectTest, EchoTLS13CompatibilitySessionID) { + ConfigureSessionCache(RESUME_SESSIONID, RESUME_SESSIONID); + + client_->SetOption(SSL_ENABLE_TLS13_COMPAT_MODE, PR_TRUE); + + client_->SetVersionRange(SSL_LIBRARY_VERSION_TLS_1_2, + SSL_LIBRARY_VERSION_TLS_1_3); + + server_->SetVersionRange(SSL_LIBRARY_VERSION_TLS_1_2, + SSL_LIBRARY_VERSION_TLS_1_2); + + server_->SetFilter(MakeTlsFilter<TlsSessionIDEchoFilter>(client_)); + ConnectExpectAlert(client_, kTlsAlertIllegalParameter); + + client_->CheckErrorCode(SSL_ERROR_RX_MALFORMED_SERVER_HELLO); + server_->CheckErrorCode(SSL_ERROR_ILLEGAL_PARAMETER_ALERT); +} + +class TlsSessionIDInjectFilter : public TlsHandshakeFilter { + public: + TlsSessionIDInjectFilter(const std::shared_ptr<TlsAgent>& a) + : TlsHandshakeFilter(a, {kTlsHandshakeServerHello}) {} + + protected: + virtual PacketFilter::Action FilterHandshake(const HandshakeHeader& header, + const DataBuffer& input, + DataBuffer* output) { + TlsParser parser(input); + + // Skip version + random. + EXPECT_TRUE(parser.Skip(2 + 32)); + + *output = input; + + // Inject a Session ID. + const uint8_t fake_sid[SSL3_SESSIONID_BYTES] = {0xff}; + output->Write(parser.consumed(), sizeof(fake_sid), 1); + output->Splice(fake_sid, sizeof(fake_sid), parser.consumed() + 1, 0); + + return CHANGE; + } +}; + +TEST_F(TlsConnectTest, TLS13NonCompatModeSessionID) { + ConfigureVersion(SSL_LIBRARY_VERSION_TLS_1_3); + + MakeTlsFilter<TlsSessionIDInjectFilter>(server_); + client_->ExpectSendAlert(kTlsAlertIllegalParameter); + server_->ExpectSendAlert(kTlsAlertBadRecordMac); + ConnectExpectFail(); + + client_->CheckErrorCode(SSL_ERROR_RX_MALFORMED_SERVER_HELLO); + server_->CheckErrorCode(SSL_ERROR_BAD_MAC_READ); +} + static const uint8_t kCannedCcs[] = { kTlsChangeCipherSpecType, SSL_LIBRARY_VERSION_TLS_1_2 >> 8, diff --git a/security/nss/gtests/ssl_gtest/ssl_versionpolicy_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_versionpolicy_unittest.cc index 7f3c4a896..09d7801e9 100644 --- a/security/nss/gtests/ssl_gtest/ssl_versionpolicy_unittest.cc +++ b/security/nss/gtests/ssl_gtest/ssl_versionpolicy_unittest.cc @@ -50,12 +50,12 @@ inline std::ostream& operator<<(std::ostream& stream, class VersionRangeWithLabel { public: - VersionRangeWithLabel(const std::string& label, const SSLVersionRange& vr) - : label_(label), vr_(vr) {} - VersionRangeWithLabel(const std::string& label, uint16_t min, uint16_t max) - : label_(label) { - vr_.min = min; - vr_.max = max; + VersionRangeWithLabel(const std::string& txt, const SSLVersionRange& vr) + : label_(txt), vr_(vr) {} + VersionRangeWithLabel(const std::string& txt, uint16_t start, uint16_t end) + : label_(txt) { + vr_.min = start; + vr_.max = end; } VersionRangeWithLabel(const std::string& label) : label_(label) { vr_.min = vr_.max = SSL_LIBRARY_VERSION_NONE; diff --git a/security/nss/gtests/ssl_gtest/test_io.cc b/security/nss/gtests/ssl_gtest/test_io.cc index 728217851..d76b3526c 100644 --- a/security/nss/gtests/ssl_gtest/test_io.cc +++ b/security/nss/gtests/ssl_gtest/test_io.cc @@ -99,8 +99,8 @@ int32_t DummyPrSocket::Write(PRFileDesc *f, const void *buf, int32_t length) { return -1; } - auto peer = peer_.lock(); - if (!peer) { + auto dst = peer_.lock(); + if (!dst) { PR_SetError(PR_IO_ERROR, 0); return -1; } @@ -116,14 +116,14 @@ int32_t DummyPrSocket::Write(PRFileDesc *f, const void *buf, int32_t length) { case PacketFilter::CHANGE: LOG("Original packet: " << packet); LOG("Filtered packet: " << filtered); - peer->PacketReceived(filtered); + dst->PacketReceived(filtered); break; case PacketFilter::DROP: LOG("Droppped packet: " << packet); break; case PacketFilter::KEEP: LOGV("Packet: " << packet); - peer->PacketReceived(packet); + dst->PacketReceived(packet); break; } // libssl can't handle it if this reports something other than the length diff --git a/security/nss/gtests/ssl_gtest/test_io.h b/security/nss/gtests/ssl_gtest/test_io.h index dbeb6b9d4..8327373ce 100644 --- a/security/nss/gtests/ssl_gtest/test_io.h +++ b/security/nss/gtests/ssl_gtest/test_io.h @@ -59,9 +59,9 @@ class PacketFilter { class DummyPrSocket : public DummyIOLayerMethods { public: - DummyPrSocket(const std::string& name, SSLProtocolVariant variant) + DummyPrSocket(const std::string& name, SSLProtocolVariant var) : name_(name), - variant_(variant), + variant_(var), peer_(), input_(), filter_(nullptr), @@ -73,7 +73,7 @@ class DummyPrSocket : public DummyIOLayerMethods { ScopedPRFileDesc CreateFD(); std::weak_ptr<DummyPrSocket>& peer() { return peer_; } - void SetPeer(const std::shared_ptr<DummyPrSocket>& peer) { peer_ = peer; } + void SetPeer(const std::shared_ptr<DummyPrSocket>& p) { peer_ = p; } void SetPacketFilter(const std::shared_ptr<PacketFilter>& filter) { filter_ = filter; } diff --git a/security/nss/gtests/ssl_gtest/tls_agent.cc b/security/nss/gtests/ssl_gtest/tls_agent.cc index 2f71caedb..9bed1ce1b 100644 --- a/security/nss/gtests/ssl_gtest/tls_agent.cc +++ b/security/nss/gtests/ssl_gtest/tls_agent.cc @@ -33,6 +33,7 @@ const char* TlsAgent::states[] = {"INIT", "CONNECTING", "CONNECTED", "ERROR"}; const std::string TlsAgent::kClient = "client"; // both sign and encrypt const std::string TlsAgent::kRsa2048 = "rsa2048"; // bigger +const std::string TlsAgent::kRsa8192 = "rsa8192"; // biggest allowed const std::string TlsAgent::kServerRsa = "rsa"; // both sign and encrypt const std::string TlsAgent::kServerRsaSign = "rsa_sign"; const std::string TlsAgent::kServerRsaPss = "rsa_pss"; @@ -44,13 +45,22 @@ const std::string TlsAgent::kServerEcdhRsa = "ecdh_rsa"; const std::string TlsAgent::kServerEcdhEcdsa = "ecdh_ecdsa"; const std::string TlsAgent::kServerDsa = "dsa"; -TlsAgent::TlsAgent(const std::string& name, Role role, - SSLProtocolVariant variant) - : name_(name), - variant_(variant), - role_(role), +static const uint8_t kCannedTls13ServerHello[] = { + 0x03, 0x03, 0x9c, 0xbc, 0x14, 0x9b, 0x0e, 0x2e, 0xfa, 0x0d, 0xf3, + 0xf0, 0x5c, 0x70, 0x7a, 0xe0, 0xd1, 0x9b, 0x3e, 0x5a, 0x44, 0x6b, + 0xdf, 0xe5, 0xc2, 0x28, 0x64, 0xf7, 0x00, 0xc1, 0x9c, 0x08, 0x76, + 0x08, 0x00, 0x13, 0x01, 0x00, 0x00, 0x2e, 0x00, 0x33, 0x00, 0x24, + 0x00, 0x1d, 0x00, 0x20, 0xc2, 0xcf, 0x23, 0x17, 0x64, 0x23, 0x03, + 0xf0, 0xfb, 0x45, 0x98, 0x26, 0xd1, 0x65, 0x24, 0xa1, 0x6c, 0xa9, + 0x80, 0x8f, 0x2c, 0xac, 0x0a, 0xea, 0x53, 0x3a, 0xcb, 0xe3, 0x08, + 0x84, 0xae, 0x19, 0x00, 0x2b, 0x00, 0x02, 0x7f, kD13}; + +TlsAgent::TlsAgent(const std::string& nm, Role rl, SSLProtocolVariant var) + : name_(nm), + variant_(var), + role_(rl), server_key_bits_(0), - adapter_(new DummyPrSocket(role_str(), variant)), + adapter_(new DummyPrSocket(role_str(), var)), ssl_fd_(nullptr), state_(STATE_INIT), timer_handle_(nullptr), @@ -103,11 +113,11 @@ TlsAgent::~TlsAgent() { } } -void TlsAgent::SetState(State state) { - if (state_ == state) return; +void TlsAgent::SetState(State s) { + if (state_ == s) return; - LOG("Changing state from " << state_ << " to " << state); - state_ = state; + LOG("Changing state from " << state_ << " to " << s); + state_ = s; } /*static*/ bool TlsAgent::LoadCertificate(const std::string& name, @@ -124,11 +134,11 @@ void TlsAgent::SetState(State state) { return true; } -bool TlsAgent::ConfigServerCert(const std::string& name, bool updateKeyBits, +bool TlsAgent::ConfigServerCert(const std::string& id, bool updateKeyBits, const SSLExtraServerCertData* serverCertData) { ScopedCERTCertificate cert; ScopedSECKEYPrivateKey priv; - if (!TlsAgent::LoadCertificate(name, &cert, &priv)) { + if (!TlsAgent::LoadCertificate(id, &cert, &priv)) { return false; } @@ -175,6 +185,10 @@ bool TlsAgent::EnsureTlsSetup(PRFileDesc* modelSocket) { if (rv != SECSuccess) return false; } + ScopedCERTCertList anchors(CERT_NewCertList()); + rv = SSL_SetTrustAnchors(ssl_fd(), anchors.get()); + if (rv != SECSuccess) return false; + if (role_ == SERVER) { EXPECT_TRUE(ConfigServerCert(name_, true)); @@ -182,10 +196,6 @@ bool TlsAgent::EnsureTlsSetup(PRFileDesc* modelSocket) { EXPECT_EQ(SECSuccess, rv); if (rv != SECSuccess) return false; - ScopedCERTCertList anchors(CERT_NewCertList()); - rv = SSL_SetTrustAnchors(ssl_fd(), anchors.get()); - if (rv != SECSuccess) return false; - rv = SSL_SetMaxEarlyDataSize(ssl_fd(), 1024); EXPECT_EQ(SECSuccess, rv); if (rv != SECSuccess) return false; @@ -246,6 +256,17 @@ void TlsAgent::SetupClientAuth() { reinterpret_cast<void*>(this))); } +void CheckCertReqAgainstDefaultCAs(const CERTDistNames* caNames) { + ScopedCERTDistNames expected(CERT_GetSSLCACerts(nullptr)); + + ASSERT_EQ(expected->nnames, caNames->nnames); + + for (size_t i = 0; i < static_cast<size_t>(expected->nnames); ++i) { + EXPECT_EQ(SECEqual, + SECITEM_CompareItem(&(expected->names[i]), &(caNames->names[i]))); + } +} + SECStatus TlsAgent::GetClientAuthDataHook(void* self, PRFileDesc* fd, CERTDistNames* caNames, CERTCertificate** clientCert, @@ -254,6 +275,9 @@ SECStatus TlsAgent::GetClientAuthDataHook(void* self, PRFileDesc* fd, ScopedCERTCertificate peerCert(SSL_PeerCertificate(agent->ssl_fd())); EXPECT_TRUE(peerCert) << "Client should be able to see the server cert"; + // See bug 1457716 + // CheckCertReqAgainstDefaultCAs(caNames); + ScopedCERTCertificate cert; ScopedSECKEYPrivateKey priv; if (!TlsAgent::LoadCertificate(agent->name(), &cert, &priv)) { @@ -282,8 +306,8 @@ bool TlsAgent::GetPeerChainLength(size_t* count) { return true; } -void TlsAgent::CheckCipherSuite(uint16_t cipher_suite) { - EXPECT_EQ(csinfo_.cipherSuite, cipher_suite); +void TlsAgent::CheckCipherSuite(uint16_t suite) { + EXPECT_EQ(csinfo_.cipherSuite, suite); } void TlsAgent::RequestClientAuth(bool requireAuth) { @@ -442,9 +466,7 @@ void TlsAgent::GetVersionRange(uint16_t* minver, uint16_t* maxver) { *maxver = vrange_.max; } -void TlsAgent::SetExpectedVersion(uint16_t version) { - expected_version_ = version; -} +void TlsAgent::SetExpectedVersion(uint16_t ver) { expected_version_ = ver; } void TlsAgent::SetServerKeyBits(uint16_t bits) { server_key_bits_ = bits; } @@ -491,10 +513,10 @@ void TlsAgent::SetSignatureSchemes(const SSLSignatureScheme* schemes, EXPECT_EQ(i, configuredCount) << "schemes in use were all set"; } -void TlsAgent::CheckKEA(SSLKEAType kea_type, SSLNamedGroup kea_group, +void TlsAgent::CheckKEA(SSLKEAType kea, SSLNamedGroup kea_group, size_t kea_size) const { EXPECT_EQ(STATE_CONNECTED, state_); - EXPECT_EQ(kea_type, info_.keaType); + EXPECT_EQ(kea, info_.keaType); if (kea_size == 0) { switch (kea_group) { case ssl_grp_ec_curve25519: @@ -515,7 +537,7 @@ void TlsAgent::CheckKEA(SSLKEAType kea_type, SSLNamedGroup kea_group, case ssl_grp_ffdhe_custom: break; default: - if (kea_type == ssl_kea_rsa) { + if (kea == ssl_kea_rsa) { kea_size = server_key_bits_; } else { EXPECT_TRUE(false) << "need to update group sizes"; @@ -534,13 +556,13 @@ void TlsAgent::CheckOriginalKEA(SSLNamedGroup kea_group) const { } } -void TlsAgent::CheckAuthType(SSLAuthType auth_type, +void TlsAgent::CheckAuthType(SSLAuthType auth, SSLSignatureScheme sig_scheme) const { EXPECT_EQ(STATE_CONNECTED, state_); - EXPECT_EQ(auth_type, info_.authType); + EXPECT_EQ(auth, info_.authType); EXPECT_EQ(server_key_bits_, info_.authKeyBits); if (expected_version_ < SSL_LIBRARY_VERSION_TLS_1_2) { - switch (auth_type) { + switch (auth) { case ssl_auth_rsa_sign: sig_scheme = ssl_sig_rsa_pkcs1_sha1md5; break; @@ -558,9 +580,8 @@ void TlsAgent::CheckAuthType(SSLAuthType auth_type, } // Check authAlgorithm, which is the old value for authType. This is a second - // switch - // statement because default label is different. - switch (auth_type) { + // switch statement because default label is different. + switch (auth) { case ssl_auth_rsa_sign: EXPECT_EQ(ssl_auth_rsa_decrypt, csinfo_.authAlgorithm) << "authAlgorithm for RSA is always decrypt"; @@ -574,7 +595,7 @@ void TlsAgent::CheckAuthType(SSLAuthType auth_type, << "authAlgorithm for ECDH_ECDSA is ECDSA (i.e., wrong)"; break; default: - EXPECT_EQ(auth_type, csinfo_.authAlgorithm) + EXPECT_EQ(auth, csinfo_.authAlgorithm) << "authAlgorithm is (usually) the same as authType"; break; } @@ -593,22 +614,20 @@ void TlsAgent::ExpectResumption() { expect_resumption_ = true; } void TlsAgent::EnableAlpn(const uint8_t* val, size_t len) { EXPECT_TRUE(EnsureTlsSetup()); - - SetOption(SSL_ENABLE_ALPN, PR_TRUE); EXPECT_EQ(SECSuccess, SSL_SetNextProtoNego(ssl_fd(), val, len)); } void TlsAgent::CheckAlpn(SSLNextProtoState expected_state, const std::string& expected) const { - SSLNextProtoState state; + SSLNextProtoState alpn_state; char chosen[10]; unsigned int chosen_len; - SECStatus rv = SSL_GetNextProto(ssl_fd(), &state, + SECStatus rv = SSL_GetNextProto(ssl_fd(), &alpn_state, reinterpret_cast<unsigned char*>(chosen), &chosen_len, sizeof(chosen)); EXPECT_EQ(SECSuccess, rv); - EXPECT_EQ(expected_state, state); - if (state == SSL_NEXT_PROTO_NO_SUPPORT) { + EXPECT_EQ(expected_state, alpn_state); + if (alpn_state == SSL_NEXT_PROTO_NO_SUPPORT) { EXPECT_EQ("", expected); } else { EXPECT_NE("", expected); @@ -840,10 +859,10 @@ void TlsAgent::CheckSecretsDestroyed() { ASSERT_EQ(PR_TRUE, SSLInt_CheckSecretsDestroyed(ssl_fd())); } -void TlsAgent::SetDowngradeCheckVersion(uint16_t version) { +void TlsAgent::SetDowngradeCheckVersion(uint16_t ver) { ASSERT_TRUE(EnsureTlsSetup()); - SECStatus rv = SSL_SetDowngradeCheckVersion(ssl_fd(), version); + SECStatus rv = SSL_SetDowngradeCheckVersion(ssl_fd(), ver); ASSERT_EQ(SECSuccess, rv); } @@ -920,9 +939,9 @@ static bool ErrorIsNonFatal(PRErrorCode code) { } void TlsAgent::SendData(size_t bytes, size_t blocksize) { - uint8_t block[4096]; + uint8_t block[16385]; // One larger than the maximum record size. - ASSERT_LT(blocksize, sizeof(block)); + ASSERT_LE(blocksize, sizeof(block)); while (bytes) { size_t tosend = std::min(blocksize, bytes); @@ -951,12 +970,13 @@ void TlsAgent::SendBuffer(const DataBuffer& buf) { } bool TlsAgent::SendEncryptedRecord(const std::shared_ptr<TlsCipherSpec>& spec, - uint16_t wireVersion, uint64_t seq, - uint8_t ct, const DataBuffer& buf) { - LOGV("Writing " << buf.len() << " bytes"); - // Ensure we are a TLS 1.3 cipher agent. + uint64_t seq, uint8_t ct, + const DataBuffer& buf) { + LOGV("Encrypting " << buf.len() << " bytes"); + // Ensure that we are doing TLS 1.3. EXPECT_GE(expected_version_, SSL_LIBRARY_VERSION_TLS_1_3); - TlsRecordHeader header(wireVersion, kTlsApplicationDataType, seq); + TlsRecordHeader header(variant_, expected_version_, kTlsApplicationDataType, + seq); DataBuffer padded = buf; padded.Write(padded.len(), ct, 1); DataBuffer ciphertext; @@ -1078,15 +1098,20 @@ void TlsAgentTestBase::ProcessMessage(const DataBuffer& buffer, void TlsAgentTestBase::MakeRecord(SSLProtocolVariant variant, uint8_t type, uint16_t version, const uint8_t* buf, size_t len, DataBuffer* out, - uint64_t seq_num) { + uint64_t sequence_number) { size_t index = 0; index = out->Write(index, type, 1); if (variant == ssl_variant_stream) { index = out->Write(index, version, 2); + } else if (version >= SSL_LIBRARY_VERSION_TLS_1_3 && + type == kTlsApplicationDataType) { + uint32_t epoch = (sequence_number >> 48) & 0x3; + uint32_t seqno = sequence_number & ((1ULL << 30) - 1); + index = out->Write(index, (epoch << 30) | seqno, 4); } else { index = out->Write(index, TlsVersionToDtlsVersion(version), 2); - index = out->Write(index, seq_num >> 32, 4); - index = out->Write(index, seq_num & PR_UINT32_MAX, 4); + index = out->Write(index, sequence_number >> 32, 4); + index = out->Write(index, sequence_number & PR_UINT32_MAX, 4); } index = out->Write(index, len, 2); out->Write(index, buf, len); @@ -1144,4 +1169,12 @@ void TlsAgentTestBase::MakeTrivialHandshakeRecord(uint8_t hs_type, } } +DataBuffer TlsAgentTestBase::MakeCannedTls13ServerHello() { + DataBuffer sh(kCannedTls13ServerHello, sizeof(kCannedTls13ServerHello)); + if (variant_ == ssl_variant_datagram) { + sh.Write(0, SSL_LIBRARY_VERSION_DTLS_1_2_WIRE, 2); + } + return sh; +} + } // namespace nss_test diff --git a/security/nss/gtests/ssl_gtest/tls_agent.h b/security/nss/gtests/ssl_gtest/tls_agent.h index 6cd6d5073..a93d0c6ee 100644 --- a/security/nss/gtests/ssl_gtest/tls_agent.h +++ b/security/nss/gtests/ssl_gtest/tls_agent.h @@ -10,6 +10,9 @@ #include "prio.h" #include "ssl.h" +// This is an internal header, used to get TLS_1_3_DRAFT_VERSION. +#include "ssl3prot.h" + #include <functional> #include <iostream> @@ -57,6 +60,8 @@ typedef std::function<int32_t(TlsAgent* agent, const SECItem* srvNameArr, PRUint32 srvNameArrSize)> SniCallbackFunction; +static const uint8_t kD13 = TLS_1_3_DRAFT_VERSION; + class TlsAgent : public PollTarget { public: enum Role { CLIENT, SERVER }; @@ -64,6 +69,7 @@ class TlsAgent : public PollTarget { static const std::string kClient; // the client key is sign only static const std::string kRsa2048; // bigger sign and encrypt for either + static const std::string kRsa8192; // biggest sign and encrypt for either static const std::string kServerRsa; // both sign and encrypt static const std::string kServerRsaSign; static const std::string kServerRsaPss; @@ -143,8 +149,7 @@ class TlsAgent : public PollTarget { void SendData(size_t bytes, size_t blocksize = 1024); void SendBuffer(const DataBuffer& buf); bool SendEncryptedRecord(const std::shared_ptr<TlsCipherSpec>& spec, - uint16_t wireVersion, uint64_t seq, uint8_t ct, - const DataBuffer& buf); + uint64_t seq, uint8_t ct, const DataBuffer& buf); // Send data directly to the underlying socket, skipping the TLS layer. void SendDirect(const DataBuffer& buf); void SendRecordDirect(const TlsRecord& record); @@ -209,10 +214,10 @@ class TlsAgent : public PollTarget { return info_.protocolVersion; } - bool cipher_suite(uint16_t* cipher_suite) const { + bool cipher_suite(uint16_t* suite) const { if (state_ != STATE_CONNECTED) return false; - *cipher_suite = info_.cipherSuite; + *suite = info_.cipherSuite; return true; } @@ -227,17 +232,17 @@ class TlsAgent : public PollTarget { info_.sessionID + info_.sessionIDLength); } - bool auth_type(SSLAuthType* auth_type) const { + bool auth_type(SSLAuthType* a) const { if (state_ != STATE_CONNECTED) return false; - *auth_type = info_.authType; + *a = info_.authType; return true; } - bool kea_type(SSLKEAType* kea_type) const { + bool kea_type(SSLKEAType* k) const { if (state_ != STATE_CONNECTED) return false; - *kea_type = info_.keaType; + *k = info_.keaType; return true; } @@ -264,6 +269,8 @@ class TlsAgent : public PollTarget { void ExpectReceiveAlert(uint8_t alert, uint8_t level = 0); void ExpectSendAlert(uint8_t alert, uint8_t level = 0); + std::string alpn_value_to_use_ = ""; + private: const static char* states[]; @@ -443,6 +450,7 @@ class TlsAgentTestBase : public ::testing::Test { size_t hs_len, DataBuffer* out, uint64_t seq_num, uint32_t fragment_offset, uint32_t fragment_length) const; + DataBuffer MakeCannedTls13ServerHello(); static void MakeTrivialHandshakeRecord(uint8_t hs_type, size_t hs_len, DataBuffer* out); static inline TlsAgent::Role ToRole(const std::string& str) { diff --git a/security/nss/gtests/ssl_gtest/tls_connect.cc b/security/nss/gtests/ssl_gtest/tls_connect.cc index 8567b392f..68f6d21e9 100644 --- a/security/nss/gtests/ssl_gtest/tls_connect.cc +++ b/security/nss/gtests/ssl_gtest/tls_connect.cc @@ -571,14 +571,57 @@ void TlsConnectTestBase::CheckResumption(SessionResumptionMode expected) { } } +static SECStatus NextProtoCallbackServer(void* arg, PRFileDesc* fd, + const unsigned char* protos, + unsigned int protos_len, + unsigned char* protoOut, + unsigned int* protoOutLen, + unsigned int protoMaxLen) { + EXPECT_EQ(protoMaxLen, 255U); + TlsAgent* agent = reinterpret_cast<TlsAgent*>(arg); + // Check that agent->alpn_value_to_use_ is in protos. + if (protos_len < 1) { + return SECFailure; + } + for (size_t i = 0; i < protos_len;) { + size_t l = protos[i]; + EXPECT_LT(i + l, protos_len); + if (i + l >= protos_len) { + return SECFailure; + } + std::string protos_s(reinterpret_cast<const char*>(protos + i + 1), l); + if (protos_s == agent->alpn_value_to_use_) { + size_t s_len = agent->alpn_value_to_use_.size(); + EXPECT_LE(s_len, 255U); + memcpy(protoOut, &agent->alpn_value_to_use_[0], s_len); + *protoOutLen = s_len; + return SECSuccess; + } + i += l + 1; + } + return SECFailure; +} + void TlsConnectTestBase::EnableAlpn() { client_->EnableAlpn(alpn_dummy_val_, sizeof(alpn_dummy_val_)); server_->EnableAlpn(alpn_dummy_val_, sizeof(alpn_dummy_val_)); } -void TlsConnectTestBase::EnableAlpn(const uint8_t* val, size_t len) { - client_->EnableAlpn(val, len); - server_->EnableAlpn(val, len); +void TlsConnectTestBase::EnableAlpnWithCallback( + const std::vector<uint8_t>& client_vals, std::string server_choice) { + EnsureTlsSetup(); + server_->alpn_value_to_use_ = server_choice; + EXPECT_EQ(SECSuccess, + SSL_SetNextProtoNego(client_->ssl_fd(), client_vals.data(), + client_vals.size())); + SECStatus rv = SSL_SetNextProtoCallback( + server_->ssl_fd(), NextProtoCallbackServer, server_.get()); + EXPECT_EQ(SECSuccess, rv); +} + +void TlsConnectTestBase::EnableAlpn(const std::vector<uint8_t>& vals) { + client_->EnableAlpn(vals.data(), vals.size()); + server_->EnableAlpn(vals.data(), vals.size()); } void TlsConnectTestBase::EnsureModelSockets() { diff --git a/security/nss/gtests/ssl_gtest/tls_connect.h b/security/nss/gtests/ssl_gtest/tls_connect.h index 7dffe7f8a..000494501 100644 --- a/security/nss/gtests/ssl_gtest/tls_connect.h +++ b/security/nss/gtests/ssl_gtest/tls_connect.h @@ -110,7 +110,9 @@ class TlsConnectTestBase : public ::testing::Test { void ConfigureSessionCache(SessionResumptionMode client, SessionResumptionMode server); void EnableAlpn(); - void EnableAlpn(const uint8_t* val, size_t len); + void EnableAlpnWithCallback(const std::vector<uint8_t>& client, + std::string server_choice); + void EnableAlpn(const std::vector<uint8_t>& vals); void EnsureModelSockets(); void CheckAlpn(const std::string& val); void EnableSrtp(); diff --git a/security/nss/gtests/ssl_gtest/tls_filter.cc b/security/nss/gtests/ssl_gtest/tls_filter.cc index d34b13bcb..aa03cba70 100644 --- a/security/nss/gtests/ssl_gtest/tls_filter.cc +++ b/security/nss/gtests/ssl_gtest/tls_filter.cc @@ -30,11 +30,9 @@ void TlsVersioned::WriteStream(std::ostream& stream) const { case SSL_LIBRARY_VERSION_TLS_1_0: stream << "1.0"; break; - case SSL_LIBRARY_VERSION_DTLS_1_0_WIRE: case SSL_LIBRARY_VERSION_TLS_1_1: stream << (is_dtls() ? "1.0" : "1.1"); break; - case SSL_LIBRARY_VERSION_DTLS_1_2_WIRE: case SSL_LIBRARY_VERSION_TLS_1_2: stream << "1.2"; break; @@ -67,8 +65,14 @@ void TlsRecordFilter::CipherSpecChanged(void* arg, PRBool sending, return; } - self->in_sequence_number_ = 0; - self->out_sequence_number_ = 0; + uint64_t seq_no; + if (self->agent()->variant() == ssl_variant_datagram) { + seq_no = static_cast<uint64_t>(SSLInt_CipherSpecToEpoch(newSpec)) << 48; + } else { + seq_no = 0; + } + self->in_sequence_number_ = seq_no; + self->out_sequence_number_ = seq_no; self->dropped_record_ = false; self->cipher_spec_.reset(new TlsCipherSpec()); bool ret = self->cipher_spec_->Init( @@ -77,33 +81,59 @@ void TlsRecordFilter::CipherSpecChanged(void* arg, PRBool sending, EXPECT_EQ(true, ret); } +bool TlsRecordFilter::is_dtls13() const { + if (agent()->variant() != ssl_variant_datagram) { + return false; + } + if (agent()->state() == TlsAgent::STATE_CONNECTED) { + return agent()->version() >= SSL_LIBRARY_VERSION_TLS_1_3; + } + SSLPreliminaryChannelInfo info; + EXPECT_EQ(SECSuccess, SSL_GetPreliminaryChannelInfo(agent()->ssl_fd(), &info, + sizeof(info))); + return (info.protocolVersion >= SSL_LIBRARY_VERSION_TLS_1_3) || + info.canSendEarlyData; +} + PacketFilter::Action TlsRecordFilter::Filter(const DataBuffer& input, DataBuffer* output) { + // Disable during shutdown. + if (!agent()) { + return KEEP; + } + bool changed = false; size_t offset = 0U; - output->Allocate(input.len()); + output->Allocate(input.len()); TlsParser parser(input); while (parser.remaining()) { TlsRecordHeader header; DataBuffer record; - if (!header.Parse(in_sequence_number_, &parser, &record)) { + if (!header.Parse(is_dtls13(), in_sequence_number_, &parser, &record)) { ADD_FAILURE() << "not a valid record"; return KEEP; } - // Track the sequence number, which is necessary for stream mode (the - // sequence number is in the header for datagram). + // Track the sequence number, which is necessary for stream mode when + // decrypting and for TLS 1.3 datagram to recover the sequence number. + // + // We reset the counter when the cipher spec changes, but that notification + // appears before a record is sent. If multiple records are sent with + // different cipher specs, this would fail. This filters out cleartext + // records, so we don't get confused by handshake messages that are sent at + // the same time as encrypted records. Sequence numbers are therefore + // likely to be incorrect for cleartext records. // - // This isn't perfectly robust. If there is a change from an active cipher + // This isn't perfectly robust: if there is a change from an active cipher // spec to another active cipher spec (KeyUpdate for instance) AND writes - // are consolidated across that change AND packets were dropped from the - // older epoch, we will not correctly re-encrypt records in the old epoch to - // update their sequence numbers. - if (cipher_spec_ && header.content_type() == kTlsApplicationDataType) { - ++in_sequence_number_; + // are consolidated across that change, this code could use the wrong + // sequence numbers when re-encrypting records with the old keys. + if (header.content_type() == kTlsApplicationDataType) { + in_sequence_number_ = + (std::max)(in_sequence_number_, header.sequence_number() + 1); } if (FilterRecord(header, record, &offset, output) != KEEP) { @@ -131,11 +161,14 @@ PacketFilter::Action TlsRecordFilter::FilterRecord( DataBuffer plaintext; if (!Unprotect(header, record, &inner_content_type, &plaintext)) { + if (g_ssl_gtest_verbose) { + std::cerr << "unprotect failed: " << header << ":" << record << std::endl; + } return KEEP; } - TlsRecordHeader real_header = {header.version(), inner_content_type, - header.sequence_number()}; + TlsRecordHeader real_header(header.variant(), header.version(), + inner_content_type, header.sequence_number()); PacketFilter::Action action = FilterRecord(real_header, plaintext, &filtered); // In stream mode, even if something doesn't change we need to re-encrypt if @@ -166,8 +199,8 @@ PacketFilter::Action TlsRecordFilter::FilterRecord( } else { seq_num = out_sequence_number_++; } - TlsRecordHeader out_header = {header.version(), header.content_type(), - seq_num}; + TlsRecordHeader out_header(header.variant(), header.version(), + header.content_type(), seq_num); DataBuffer ciphertext; bool rv = Protect(out_header, inner_content_type, filtered, &ciphertext); @@ -179,20 +212,119 @@ PacketFilter::Action TlsRecordFilter::FilterRecord( return CHANGE; } -bool TlsRecordHeader::Parse(uint64_t sequence_number, TlsParser* parser, +size_t TlsRecordHeader::header_length() const { + // If we have a header, return it's length. + if (header_.len()) { + return header_.len(); + } + + // Otherwise make a dummy header and return the length. + DataBuffer buf; + return WriteHeader(&buf, 0, 0); +} + +uint64_t TlsRecordHeader::RecoverSequenceNumber(uint64_t expected, + uint32_t partial, + size_t partial_bits) { + EXPECT_GE(32U, partial_bits); + uint64_t mask = (1 << partial_bits) - 1; + // First we determine the highest possible value. This is half the + // expressible range above the expected value. + uint64_t cap = expected + (1ULL << (partial_bits - 1)); + // Add the partial piece in. e.g., xxxx789a and 1234 becomes xxxx1234. + uint64_t seq_no = (cap & ~mask) | partial; + // If the partial value is higher than the same partial piece from the cap, + // then the real value has to be lower. e.g., xxxx1234 can't become xxxx5678. + if (partial > (cap & mask)) { + seq_no -= 1ULL << partial_bits; + } + return seq_no; +} + +// Determine the full epoch and sequence number from an expected and raw value. +// The expected and output values are packed as they are in DTLS 1.2 and +// earlier: with 16 bits of epoch and 48 bits of sequence number. +uint64_t TlsRecordHeader::ParseSequenceNumber(uint64_t expected, uint32_t raw, + size_t seq_no_bits, + size_t epoch_bits) { + uint64_t epoch_mask = (1ULL << epoch_bits) - 1; + uint64_t epoch = RecoverSequenceNumber( + expected >> 48, (raw >> seq_no_bits) & epoch_mask, epoch_bits); + if (epoch > (expected >> 48)) { + // If the epoch has changed, reset the expected sequence number. + expected = 0; + } else { + // Otherwise, retain just the sequence number part. + expected &= (1ULL << 48) - 1; + } + uint64_t seq_no_mask = (1ULL << seq_no_bits) - 1; + uint64_t seq_no = + RecoverSequenceNumber(expected, raw & seq_no_mask, seq_no_bits); + return (epoch << 48) | seq_no; +} + +bool TlsRecordHeader::Parse(bool is_dtls13, uint64_t seqno, TlsParser* parser, DataBuffer* body) { + auto mark = parser->consumed(); + if (!parser->Read(&content_type_)) { return false; } - uint32_t version; - if (!parser->Read(&version, 2)) { + if (is_dtls13) { + variant_ = ssl_variant_datagram; + version_ = SSL_LIBRARY_VERSION_TLS_1_3; + +#ifndef UNSAFE_FUZZER_MODE + // Deal with the 7 octet header. + if (content_type_ == kTlsApplicationDataType) { + uint32_t tmp; + if (!parser->Read(&tmp, 4)) { + return false; + } + sequence_number_ = ParseSequenceNumber(seqno, tmp, 30, 2); + if (!parser->ReadFromMark(&header_, parser->consumed() + 2 - mark, + mark)) { + return false; + } + return parser->ReadVariable(body, 2); + } + + // The short, 2 octet header. + if ((content_type_ & 0xe0) == 0x20) { + uint32_t tmp; + if (!parser->Read(&tmp, 1)) { + return false; + } + // Need to use the low 5 bits of the first octet too. + tmp |= (content_type_ & 0x1f) << 8; + content_type_ = kTlsApplicationDataType; + sequence_number_ = ParseSequenceNumber(seqno, tmp, 12, 1); + + if (!parser->ReadFromMark(&header_, parser->consumed() - mark, mark)) { + return false; + } + return parser->Read(body, parser->remaining()); + } + + // The full 13 octet header can only be used for a few types. + EXPECT_TRUE(content_type_ == kTlsAlertType || + content_type_ == kTlsHandshakeType || + content_type_ == kTlsAckType); +#endif + } + + uint32_t ver; + if (!parser->Read(&ver, 2)) { return false; } - version_ = version; + if (!is_dtls13) { + variant_ = IsDtls(ver) ? ssl_variant_datagram : ssl_variant_stream; + } + version_ = NormalizeTlsVersion(ver); - // If this is DTLS, overwrite the sequence number. - if (IsDtls(version)) { + if (is_dtls()) { + // If this is DTLS, read the sequence number. uint32_t tmp; if (!parser->Read(&tmp, 4)) { return false; @@ -203,21 +335,40 @@ bool TlsRecordHeader::Parse(uint64_t sequence_number, TlsParser* parser, } sequence_number_ |= static_cast<uint64_t>(tmp); } else { - sequence_number_ = sequence_number; + sequence_number_ = seqno; + } + if (!parser->ReadFromMark(&header_, parser->consumed() + 2 - mark, mark)) { + return false; } return parser->ReadVariable(body, 2); } -size_t TlsRecordHeader::Write(DataBuffer* buffer, size_t offset, - const DataBuffer& body) const { +size_t TlsRecordHeader::WriteHeader(DataBuffer* buffer, size_t offset, + size_t body_len) const { offset = buffer->Write(offset, content_type_, 1); - offset = buffer->Write(offset, version_, 2); - if (is_dtls()) { - // write epoch (2 octet), and seqnum (6 octet) - offset = buffer->Write(offset, sequence_number_ >> 32, 4); - offset = buffer->Write(offset, sequence_number_ & 0xffffffff, 4); + if (is_dtls() && version_ >= SSL_LIBRARY_VERSION_TLS_1_3 && + content_type() == kTlsApplicationDataType) { + // application_data records in TLS 1.3 have a different header format. + // Always use the long header here for simplicity. + uint32_t e = (sequence_number_ >> 48) & 0x3; + uint32_t seqno = sequence_number_ & ((1ULL << 30) - 1); + offset = buffer->Write(offset, (e << 30) | seqno, 4); + } else { + uint16_t v = is_dtls() ? TlsVersionToDtlsVersion(version_) : version_; + offset = buffer->Write(offset, v, 2); + if (is_dtls()) { + // write epoch (2 octet), and seqnum (6 octet) + offset = buffer->Write(offset, sequence_number_ >> 32, 4); + offset = buffer->Write(offset, sequence_number_ & 0xffffffff, 4); + } } - offset = buffer->Write(offset, body.len(), 2); + offset = buffer->Write(offset, body_len, 2); + return offset; +} + +size_t TlsRecordHeader::Write(DataBuffer* buffer, size_t offset, + const DataBuffer& body) const { + offset = WriteHeader(buffer, offset, body.len()); offset = buffer->Write(offset, body); return offset; } @@ -259,7 +410,7 @@ bool TlsRecordFilter::Unprotect(const TlsRecordHeader& header, bool TlsRecordFilter::Protect(const TlsRecordHeader& header, uint8_t inner_content_type, const DataBuffer& plaintext, - DataBuffer* ciphertext) { + DataBuffer* ciphertext, size_t padding) { if (!cipher_spec_ || header.content_type() != kTlsApplicationDataType) { *ciphertext = plaintext; return true; @@ -267,8 +418,10 @@ bool TlsRecordFilter::Protect(const TlsRecordHeader& header, if (g_ssl_gtest_verbose) { std::cerr << "protect: " << header.sequence_number() << std::endl; } - DataBuffer padded = plaintext; - padded.Write(padded.len(), inner_content_type, 1); + DataBuffer padded; + padded.Allocate(plaintext.len() + 1 + padding); + size_t offset = padded.Write(0, plaintext.data(), plaintext.len()); + padded.Write(offset, inner_content_type, 1); return cipher_spec_->Protect(header, padded, ciphertext); } @@ -406,6 +559,7 @@ bool TlsHandshakeFilter::HandshakeHeader::Parse( const DataBuffer& preceding_fragment, DataBuffer* body, bool* complete) { *complete = false; + variant_ = record_header.variant(); version_ = record_header.version(); if (!parser->Read(&handshake_type_)) { return false; // malformed @@ -487,10 +641,10 @@ PacketFilter::Action TlsConversationRecorder::FilterRecord( return KEEP; } -PacketFilter::Action TlsHeaderRecorder::FilterRecord( - const TlsRecordHeader& header, const DataBuffer& input, - DataBuffer* output) { - headers_.push_back(header); +PacketFilter::Action TlsHeaderRecorder::FilterRecord(const TlsRecordHeader& hdr, + const DataBuffer& input, + DataBuffer* output) { + headers_.push_back(hdr); return KEEP; } diff --git a/security/nss/gtests/ssl_gtest/tls_filter.h b/security/nss/gtests/ssl_gtest/tls_filter.h index 1bbe190ab..effda4aa0 100644 --- a/security/nss/gtests/ssl_gtest/tls_filter.h +++ b/security/nss/gtests/ssl_gtest/tls_filter.h @@ -11,7 +11,7 @@ #include <memory> #include <set> #include <vector> - +#include "sslt.h" #include "test_io.h" #include "tls_agent.h" #include "tls_parser.h" @@ -27,43 +27,57 @@ class TlsCipherSpec; class TlsVersioned { public: - TlsVersioned() : version_(0) {} - explicit TlsVersioned(uint16_t version) : version_(version) {} + TlsVersioned() : variant_(ssl_variant_stream), version_(0) {} + TlsVersioned(SSLProtocolVariant var, uint16_t ver) + : variant_(var), version_(ver) {} - bool is_dtls() const { return IsDtls(version_); } + bool is_dtls() const { return variant_ == ssl_variant_datagram; } + SSLProtocolVariant variant() const { return variant_; } uint16_t version() const { return version_; } void WriteStream(std::ostream& stream) const; protected: + SSLProtocolVariant variant_; uint16_t version_; }; class TlsRecordHeader : public TlsVersioned { public: - TlsRecordHeader() : TlsVersioned(), content_type_(0), sequence_number_(0) {} - TlsRecordHeader(uint16_t version, uint8_t content_type, - uint64_t sequence_number) - : TlsVersioned(version), - content_type_(content_type), - sequence_number_(sequence_number) {} + TlsRecordHeader() + : TlsVersioned(), content_type_(0), sequence_number_(0), header_() {} + TlsRecordHeader(SSLProtocolVariant var, uint16_t ver, uint8_t ct, + uint64_t seqno) + : TlsVersioned(var, ver), + content_type_(ct), + sequence_number_(seqno), + header_() {} uint8_t content_type() const { return content_type_; } uint64_t sequence_number() const { return sequence_number_; } uint16_t epoch() const { return static_cast<uint16_t>(sequence_number_ >> 48); } - size_t header_length() const { return is_dtls() ? 13 : 5; } + size_t header_length() const; + const DataBuffer& header() const { return header_; } // Parse the header; return true if successful; body in an outparam if OK. - bool Parse(uint64_t sequence_number, TlsParser* parser, DataBuffer* body); + bool Parse(bool is_dtls13, uint64_t sequence_number, TlsParser* parser, + DataBuffer* body); // Write the header and body to a buffer at the given offset. // Return the offset of the end of the write. size_t Write(DataBuffer* buffer, size_t offset, const DataBuffer& body) const; + size_t WriteHeader(DataBuffer* buffer, size_t offset, size_t body_len) const; private: + static uint64_t RecoverSequenceNumber(uint64_t expected, uint32_t partial, + size_t partial_bits); + static uint64_t ParseSequenceNumber(uint64_t expected, uint32_t raw, + size_t seq_no_bits, size_t epoch_bits); + uint8_t content_type_; uint64_t sequence_number_; + DataBuffer header_; }; struct TlsRecord { @@ -83,8 +97,8 @@ inline std::shared_ptr<T> MakeTlsFilter(const std::shared_ptr<TlsAgent>& agent, // Abstract filter that operates on entire (D)TLS records. class TlsRecordFilter : public PacketFilter { public: - TlsRecordFilter(const std::shared_ptr<TlsAgent>& agent) - : agent_(agent), + TlsRecordFilter(const std::shared_ptr<TlsAgent>& a) + : agent_(a), count_(0), cipher_spec_(), dropped_record_(false), @@ -106,7 +120,8 @@ class TlsRecordFilter : public PacketFilter { bool Unprotect(const TlsRecordHeader& header, const DataBuffer& cipherText, uint8_t* inner_content_type, DataBuffer* plaintext); bool Protect(const TlsRecordHeader& header, uint8_t inner_content_type, - const DataBuffer& plaintext, DataBuffer* ciphertext); + const DataBuffer& plaintext, DataBuffer* ciphertext, + size_t padding = 0); protected: // There are two filter functions which can be overriden. Both are @@ -130,6 +145,8 @@ class TlsRecordFilter : public PacketFilter { return KEEP; } + bool is_dtls13() const; + private: static void CipherSpecChanged(void* arg, PRBool sending, ssl3CipherSpec* newSpec); @@ -183,13 +200,11 @@ inline std::ostream& operator<<(std::ostream& stream, // records and that they don't span records or anything crazy like that. class TlsHandshakeFilter : public TlsRecordFilter { public: - TlsHandshakeFilter(const std::shared_ptr<TlsAgent>& agent) - : TlsRecordFilter(agent), handshake_types_(), preceding_fragment_() {} - TlsHandshakeFilter(const std::shared_ptr<TlsAgent>& agent, + TlsHandshakeFilter(const std::shared_ptr<TlsAgent>& a) + : TlsRecordFilter(a), handshake_types_(), preceding_fragment_() {} + TlsHandshakeFilter(const std::shared_ptr<TlsAgent>& a, const std::set<uint8_t>& types) - : TlsRecordFilter(agent), - handshake_types_(types), - preceding_fragment_() {} + : TlsRecordFilter(a), handshake_types_(types), preceding_fragment_() {} // This filter can be set to be selective based on handshake message type. If // this function isn't used (or the set is empty), then all handshake messages @@ -243,12 +258,12 @@ class TlsHandshakeFilter : public TlsRecordFilter { // Make a copy of the first instance of a handshake message. class TlsHandshakeRecorder : public TlsHandshakeFilter { public: - TlsHandshakeRecorder(const std::shared_ptr<TlsAgent>& agent, + TlsHandshakeRecorder(const std::shared_ptr<TlsAgent>& a, uint8_t handshake_type) - : TlsHandshakeFilter(agent, {handshake_type}), buffer_() {} - TlsHandshakeRecorder(const std::shared_ptr<TlsAgent>& agent, + : TlsHandshakeFilter(a, {handshake_type}), buffer_() {} + TlsHandshakeRecorder(const std::shared_ptr<TlsAgent>& a, const std::set<uint8_t>& handshake_types) - : TlsHandshakeFilter(agent, handshake_types), buffer_() {} + : TlsHandshakeFilter(a, handshake_types), buffer_() {} virtual PacketFilter::Action FilterHandshake(const HandshakeHeader& header, const DataBuffer& input, @@ -265,10 +280,10 @@ class TlsHandshakeRecorder : public TlsHandshakeFilter { // Replace all instances of a handshake message. class TlsInspectorReplaceHandshakeMessage : public TlsHandshakeFilter { public: - TlsInspectorReplaceHandshakeMessage(const std::shared_ptr<TlsAgent>& agent, + TlsInspectorReplaceHandshakeMessage(const std::shared_ptr<TlsAgent>& a, uint8_t handshake_type, const DataBuffer& replacement) - : TlsHandshakeFilter(agent, {handshake_type}), buffer_(replacement) {} + : TlsHandshakeFilter(a, {handshake_type}), buffer_(replacement) {} virtual PacketFilter::Action FilterHandshake(const HandshakeHeader& header, const DataBuffer& input, @@ -281,10 +296,10 @@ class TlsInspectorReplaceHandshakeMessage : public TlsHandshakeFilter { // Make a copy of each record of a given type. class TlsRecordRecorder : public TlsRecordFilter { public: - TlsRecordRecorder(const std::shared_ptr<TlsAgent>& agent, uint8_t ct) - : TlsRecordFilter(agent), filter_(true), ct_(ct), records_() {} - TlsRecordRecorder(const std::shared_ptr<TlsAgent>& agent) - : TlsRecordFilter(agent), + TlsRecordRecorder(const std::shared_ptr<TlsAgent>& a, uint8_t ct) + : TlsRecordFilter(a), filter_(true), ct_(ct), records_() {} + TlsRecordRecorder(const std::shared_ptr<TlsAgent>& a) + : TlsRecordFilter(a), filter_(false), ct_(content_handshake), // dummy (<optional> is C++14) records_() {} @@ -306,9 +321,9 @@ class TlsRecordRecorder : public TlsRecordFilter { // Make a copy of the complete conversation. class TlsConversationRecorder : public TlsRecordFilter { public: - TlsConversationRecorder(const std::shared_ptr<TlsAgent>& agent, + TlsConversationRecorder(const std::shared_ptr<TlsAgent>& a, DataBuffer& buffer) - : TlsRecordFilter(agent), buffer_(buffer) {} + : TlsRecordFilter(a), buffer_(buffer) {} virtual PacketFilter::Action FilterRecord(const TlsRecordHeader& header, const DataBuffer& input, @@ -321,8 +336,7 @@ class TlsConversationRecorder : public TlsRecordFilter { // Make a copy of the records class TlsHeaderRecorder : public TlsRecordFilter { public: - TlsHeaderRecorder(const std::shared_ptr<TlsAgent>& agent) - : TlsRecordFilter(agent) {} + TlsHeaderRecorder(const std::shared_ptr<TlsAgent>& a) : TlsRecordFilter(a) {} virtual PacketFilter::Action FilterRecord(const TlsRecordHeader& header, const DataBuffer& input, DataBuffer* output); @@ -359,15 +373,15 @@ typedef std::function<bool(TlsParser* parser, const TlsVersioned& header)> class TlsExtensionFilter : public TlsHandshakeFilter { public: - TlsExtensionFilter(const std::shared_ptr<TlsAgent>& agent) - : TlsHandshakeFilter(agent, + TlsExtensionFilter(const std::shared_ptr<TlsAgent>& a) + : TlsHandshakeFilter(a, {kTlsHandshakeClientHello, kTlsHandshakeServerHello, kTlsHandshakeHelloRetryRequest, kTlsHandshakeEncryptedExtensions}) {} - TlsExtensionFilter(const std::shared_ptr<TlsAgent>& agent, + TlsExtensionFilter(const std::shared_ptr<TlsAgent>& a, const std::set<uint8_t>& types) - : TlsHandshakeFilter(agent, types) {} + : TlsHandshakeFilter(a, types) {} static bool FindExtensions(TlsParser* parser, const HandshakeHeader& header); @@ -388,9 +402,9 @@ class TlsExtensionFilter : public TlsHandshakeFilter { class TlsExtensionCapture : public TlsExtensionFilter { public: - TlsExtensionCapture(const std::shared_ptr<TlsAgent>& agent, uint16_t ext, + TlsExtensionCapture(const std::shared_ptr<TlsAgent>& a, uint16_t ext, bool last = false) - : TlsExtensionFilter(agent), + : TlsExtensionFilter(a), extension_(ext), captured_(false), last_(last), @@ -413,9 +427,9 @@ class TlsExtensionCapture : public TlsExtensionFilter { class TlsExtensionReplacer : public TlsExtensionFilter { public: - TlsExtensionReplacer(const std::shared_ptr<TlsAgent>& agent, - uint16_t extension, const DataBuffer& data) - : TlsExtensionFilter(agent), extension_(extension), data_(data) {} + TlsExtensionReplacer(const std::shared_ptr<TlsAgent>& a, uint16_t extension, + const DataBuffer& data) + : TlsExtensionFilter(a), extension_(extension), data_(data) {} PacketFilter::Action FilterExtension(uint16_t extension_type, const DataBuffer& input, DataBuffer* output) override; @@ -427,9 +441,8 @@ class TlsExtensionReplacer : public TlsExtensionFilter { class TlsExtensionDropper : public TlsExtensionFilter { public: - TlsExtensionDropper(const std::shared_ptr<TlsAgent>& agent, - uint16_t extension) - : TlsExtensionFilter(agent), extension_(extension) {} + TlsExtensionDropper(const std::shared_ptr<TlsAgent>& a, uint16_t extension) + : TlsExtensionFilter(a), extension_(extension) {} PacketFilter::Action FilterExtension(uint16_t extension_type, const DataBuffer&, DataBuffer*) override; @@ -439,9 +452,9 @@ class TlsExtensionDropper : public TlsExtensionFilter { class TlsExtensionInjector : public TlsHandshakeFilter { public: - TlsExtensionInjector(const std::shared_ptr<TlsAgent>& agent, uint16_t ext, + TlsExtensionInjector(const std::shared_ptr<TlsAgent>& a, uint16_t ext, const DataBuffer& data) - : TlsHandshakeFilter(agent), extension_(ext), data_(data) {} + : TlsHandshakeFilter(a), extension_(ext), data_(data) {} protected: PacketFilter::Action FilterHandshake(const HandshakeHeader& header, @@ -453,7 +466,6 @@ class TlsExtensionInjector : public TlsHandshakeFilter { const DataBuffer data_; }; -class TlsAgent; typedef std::function<void(void)> VoidFunction; class AfterRecordN : public TlsRecordFilter { @@ -495,6 +507,22 @@ class TlsClientHelloVersionChanger : public TlsHandshakeFilter { std::weak_ptr<TlsAgent> server_; }; +// Damage a record. +class TlsRecordLastByteDamager : public TlsRecordFilter { + public: + TlsRecordLastByteDamager(const std::shared_ptr<TlsAgent>& a) + : TlsRecordFilter(a) {} + + protected: + PacketFilter::Action FilterRecord(const TlsRecordHeader& header, + const DataBuffer& data, + DataBuffer* changed) override { + *changed = data; + changed->data()[changed->len() - 1]++; + return CHANGE; + } +}; + // This class selectively drops complete writes. This relies on the fact that // writes in libssl are on record boundaries. class SelectiveDropFilter : public PacketFilter { @@ -515,16 +543,16 @@ class SelectiveDropFilter : public PacketFilter { // datagram, we just drop one. class SelectiveRecordDropFilter : public TlsRecordFilter { public: - SelectiveRecordDropFilter(const std::shared_ptr<TlsAgent>& agent, + SelectiveRecordDropFilter(const std::shared_ptr<TlsAgent>& a, uint32_t pattern, bool enabled = true) - : TlsRecordFilter(agent), pattern_(pattern), counter_(0) { + : TlsRecordFilter(a), pattern_(pattern), counter_(0) { if (!enabled) { Disable(); } } - SelectiveRecordDropFilter(const std::shared_ptr<TlsAgent>& agent, + SelectiveRecordDropFilter(const std::shared_ptr<TlsAgent>& a, std::initializer_list<size_t> records) - : SelectiveRecordDropFilter(agent, ToPattern(records), true) {} + : SelectiveRecordDropFilter(a, ToPattern(records), true) {} void Reset(uint32_t pattern) { counter_ = 0; @@ -551,10 +579,9 @@ class SelectiveRecordDropFilter : public TlsRecordFilter { // Set the version number in the ClientHello. class TlsClientHelloVersionSetter : public TlsHandshakeFilter { public: - TlsClientHelloVersionSetter(const std::shared_ptr<TlsAgent>& agent, + TlsClientHelloVersionSetter(const std::shared_ptr<TlsAgent>& a, uint16_t version) - : TlsHandshakeFilter(agent, {kTlsHandshakeClientHello}), - version_(version) {} + : TlsHandshakeFilter(a, {kTlsHandshakeClientHello}), version_(version) {} virtual PacketFilter::Action FilterHandshake(const HandshakeHeader& header, const DataBuffer& input, @@ -567,8 +594,8 @@ class TlsClientHelloVersionSetter : public TlsHandshakeFilter { // Damages the last byte of a handshake message. class TlsLastByteDamager : public TlsHandshakeFilter { public: - TlsLastByteDamager(const std::shared_ptr<TlsAgent>& agent, uint8_t type) - : TlsHandshakeFilter(agent), type_(type) {} + TlsLastByteDamager(const std::shared_ptr<TlsAgent>& a, uint8_t type) + : TlsHandshakeFilter(a), type_(type) {} PacketFilter::Action FilterHandshake( const TlsHandshakeFilter::HandshakeHeader& header, const DataBuffer& input, DataBuffer* output) override { @@ -588,9 +615,9 @@ class TlsLastByteDamager : public TlsHandshakeFilter { class SelectedCipherSuiteReplacer : public TlsHandshakeFilter { public: - SelectedCipherSuiteReplacer(const std::shared_ptr<TlsAgent>& agent, + SelectedCipherSuiteReplacer(const std::shared_ptr<TlsAgent>& a, uint16_t suite) - : TlsHandshakeFilter(agent, {kTlsHandshakeServerHello}), + : TlsHandshakeFilter(a, {kTlsHandshakeServerHello}), cipher_suite_(suite) {} protected: diff --git a/security/nss/gtests/ssl_gtest/tls_protect.cc b/security/nss/gtests/ssl_gtest/tls_protect.cc index 6c945f66e..c715a36a6 100644 --- a/security/nss/gtests/ssl_gtest/tls_protect.cc +++ b/security/nss/gtests/ssl_gtest/tls_protect.cc @@ -54,17 +54,17 @@ bool AeadCipher::AeadInner(bool decrypt, void *params, size_t param_length, return rv == SECSuccess; } -bool AeadCipherAesGcm::Aead(bool decrypt, uint64_t seq, const uint8_t *in, - size_t inlen, uint8_t *out, size_t *outlen, - size_t maxlen) { +bool AeadCipherAesGcm::Aead(bool decrypt, const uint8_t *hdr, size_t hdr_len, + uint64_t seq, const uint8_t *in, size_t inlen, + uint8_t *out, size_t *outlen, size_t maxlen) { CK_GCM_PARAMS aeadParams; unsigned char nonce[12]; memset(&aeadParams, 0, sizeof(aeadParams)); aeadParams.pIv = nonce; aeadParams.ulIvLen = sizeof(nonce); - aeadParams.pAAD = NULL; - aeadParams.ulAADLen = 0; + aeadParams.pAAD = const_cast<uint8_t *>(hdr); + aeadParams.ulAADLen = hdr_len; aeadParams.ulTagBits = 128; FormatNonce(seq, nonce); @@ -72,7 +72,8 @@ bool AeadCipherAesGcm::Aead(bool decrypt, uint64_t seq, const uint8_t *in, in, inlen, out, outlen, maxlen); } -bool AeadCipherChacha20Poly1305::Aead(bool decrypt, uint64_t seq, +bool AeadCipherChacha20Poly1305::Aead(bool decrypt, const uint8_t *hdr, + size_t hdr_len, uint64_t seq, const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen, size_t maxlen) { @@ -82,8 +83,8 @@ bool AeadCipherChacha20Poly1305::Aead(bool decrypt, uint64_t seq, memset(&aeadParams, 0, sizeof(aeadParams)); aeadParams.pNonce = nonce; aeadParams.ulNonceLen = sizeof(nonce); - aeadParams.pAAD = NULL; - aeadParams.ulAADLen = 0; + aeadParams.pAAD = const_cast<uint8_t *>(hdr); + aeadParams.ulAADLen = hdr_len; aeadParams.ulTagLen = 16; FormatNonce(seq, nonce); @@ -91,9 +92,9 @@ bool AeadCipherChacha20Poly1305::Aead(bool decrypt, uint64_t seq, in, inlen, out, outlen, maxlen); } -bool TlsCipherSpec::Init(uint16_t epoch, SSLCipherAlgorithm cipher, +bool TlsCipherSpec::Init(uint16_t epoc, SSLCipherAlgorithm cipher, PK11SymKey *key, const uint8_t *iv) { - epoch_ = epoch; + epoch_ = epoc; switch (cipher) { case ssl_calg_aes_gcm: aead_.reset(new AeadCipherAesGcm()); @@ -114,10 +115,12 @@ bool TlsCipherSpec::Unprotect(const TlsRecordHeader &header, // Make space. plaintext->Allocate(ciphertext.len()); + auto header_bytes = header.header(); size_t len; bool ret = - aead_->Aead(true, header.sequence_number(), ciphertext.data(), - ciphertext.len(), plaintext->data(), &len, plaintext->len()); + aead_->Aead(true, header_bytes.data(), header_bytes.len(), + header.sequence_number(), ciphertext.data(), ciphertext.len(), + plaintext->data(), &len, plaintext->len()); if (!ret) return false; plaintext->Truncate(len); @@ -133,9 +136,13 @@ bool TlsCipherSpec::Protect(const TlsRecordHeader &header, ciphertext->Allocate(plaintext.len() + 32); // Room for any plausible auth tag size_t len; + + DataBuffer header_bytes; + (void)header.WriteHeader(&header_bytes, 0, plaintext.len() + 16); bool ret = - aead_->Aead(false, header.sequence_number(), plaintext.data(), - plaintext.len(), ciphertext->data(), &len, ciphertext->len()); + aead_->Aead(false, header_bytes.data(), header_bytes.len(), + header.sequence_number(), plaintext.data(), plaintext.len(), + ciphertext->data(), &len, ciphertext->len()); if (!ret) return false; ciphertext->Truncate(len); diff --git a/security/nss/gtests/ssl_gtest/tls_protect.h b/security/nss/gtests/ssl_gtest/tls_protect.h index 93ffd6322..6f129a4eb 100644 --- a/security/nss/gtests/ssl_gtest/tls_protect.h +++ b/security/nss/gtests/ssl_gtest/tls_protect.h @@ -23,8 +23,9 @@ class AeadCipher { virtual ~AeadCipher(); bool Init(PK11SymKey *key, const uint8_t *iv); - virtual bool Aead(bool decrypt, uint64_t seq, const uint8_t *in, size_t inlen, - uint8_t *out, size_t *outlen, size_t maxlen) = 0; + virtual bool Aead(bool decrypt, const uint8_t *hdr, size_t hdr_len, + uint64_t seq, const uint8_t *in, size_t inlen, uint8_t *out, + size_t *outlen, size_t maxlen) = 0; protected: void FormatNonce(uint64_t seq, uint8_t *nonce); @@ -42,8 +43,9 @@ class AeadCipherChacha20Poly1305 : public AeadCipher { AeadCipherChacha20Poly1305() : AeadCipher(CKM_NSS_CHACHA20_POLY1305) {} protected: - bool Aead(bool decrypt, uint64_t seq, const uint8_t *in, size_t inlen, - uint8_t *out, size_t *outlen, size_t maxlen); + bool Aead(bool decrypt, const uint8_t *hdr, size_t hdr_len, uint64_t seq, + const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen, + size_t maxlen); }; class AeadCipherAesGcm : public AeadCipher { @@ -51,8 +53,9 @@ class AeadCipherAesGcm : public AeadCipher { AeadCipherAesGcm() : AeadCipher(CKM_AES_GCM) {} protected: - bool Aead(bool decrypt, uint64_t seq, const uint8_t *in, size_t inlen, - uint8_t *out, size_t *outlen, size_t maxlen); + bool Aead(bool decrypt, const uint8_t *hdr, size_t hdr_len, uint64_t seq, + const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen, + size_t maxlen); }; // Our analog of ssl3CipherSpec diff --git a/security/nss/lib/certdb/crl.c b/security/nss/lib/certdb/crl.c index d1c48dfba..63adcad46 100644 --- a/security/nss/lib/certdb/crl.c +++ b/security/nss/lib/certdb/crl.c @@ -898,13 +898,13 @@ static PLHashAllocOps preAllocOps = { PreAllocTable, PreFreeTable, /* destructor for PreAllocator object */ void -PreAllocator_Destroy(PreAllocator* PreAllocator) +PreAllocator_Destroy(PreAllocator* allocator) { - if (!PreAllocator) { + if (!allocator) { return; } - if (PreAllocator->arena) { - PORT_FreeArena(PreAllocator->arena, PR_TRUE); + if (allocator->arena) { + PORT_FreeArena(allocator->arena, PR_TRUE); } } diff --git a/security/nss/lib/ckfw/Makefile b/security/nss/lib/ckfw/Makefile index 484dbb511..2902bef48 100644 --- a/security/nss/lib/ckfw/Makefile +++ b/security/nss/lib/ckfw/Makefile @@ -33,7 +33,3 @@ ifdef NSS_BUILD_CAPI DIRS += capi endif endif - -#ifeq ($(OS_ARCH), Darwin) -#DIRS += nssmkey -#endif diff --git a/security/nss/lib/ckfw/builtins/certdata.txt b/security/nss/lib/ckfw/builtins/certdata.txt index 5d2baf3a5..d291f28a5 100644 --- a/security/nss/lib/ckfw/builtins/certdata.txt +++ b/security/nss/lib/ckfw/builtins/certdata.txt @@ -7241,163 +7241,6 @@ CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE # -# Certificate "TC TrustCenter Class 3 CA II" -# -# Issuer: CN=TC TrustCenter Class 3 CA II,OU=TC TrustCenter Class 3 CA,O=TC TrustCenter GmbH,C=DE -# Serial Number:4a:47:00:01:00:02:e5:a0:5d:d6:3f:00:51:bf -# Subject: CN=TC TrustCenter Class 3 CA II,OU=TC TrustCenter Class 3 CA,O=TC TrustCenter GmbH,C=DE -# Not Valid Before: Thu Jan 12 14:41:57 2006 -# Not Valid After : Wed Dec 31 22:59:59 2025 -# Fingerprint (MD5): 56:5F:AA:80:61:12:17:F6:67:21:E6:2B:6D:61:56:8E -# Fingerprint (SHA1): 80:25:EF:F4:6E:70:C8:D4:72:24:65:84:FE:40:3B:8A:8D:6A:DB:F5 -CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "TC TrustCenter Class 3 CA II" -CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 -CKA_SUBJECT MULTILINE_OCTAL -\060\166\061\013\060\011\006\003\125\004\006\023\002\104\105\061 -\034\060\032\006\003\125\004\012\023\023\124\103\040\124\162\165 -\163\164\103\145\156\164\145\162\040\107\155\142\110\061\042\060 -\040\006\003\125\004\013\023\031\124\103\040\124\162\165\163\164 -\103\145\156\164\145\162\040\103\154\141\163\163\040\063\040\103 -\101\061\045\060\043\006\003\125\004\003\023\034\124\103\040\124 -\162\165\163\164\103\145\156\164\145\162\040\103\154\141\163\163 -\040\063\040\103\101\040\111\111 -END -CKA_ID UTF8 "0" -CKA_ISSUER MULTILINE_OCTAL -\060\166\061\013\060\011\006\003\125\004\006\023\002\104\105\061 -\034\060\032\006\003\125\004\012\023\023\124\103\040\124\162\165 -\163\164\103\145\156\164\145\162\040\107\155\142\110\061\042\060 -\040\006\003\125\004\013\023\031\124\103\040\124\162\165\163\164 -\103\145\156\164\145\162\040\103\154\141\163\163\040\063\040\103 -\101\061\045\060\043\006\003\125\004\003\023\034\124\103\040\124 -\162\165\163\164\103\145\156\164\145\162\040\103\154\141\163\163 -\040\063\040\103\101\040\111\111 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\016\112\107\000\001\000\002\345\240\135\326\077\000\121\277 -END -CKA_VALUE MULTILINE_OCTAL -\060\202\004\252\060\202\003\222\240\003\002\001\002\002\016\112 -\107\000\001\000\002\345\240\135\326\077\000\121\277\060\015\006 -\011\052\206\110\206\367\015\001\001\005\005\000\060\166\061\013 -\060\011\006\003\125\004\006\023\002\104\105\061\034\060\032\006 -\003\125\004\012\023\023\124\103\040\124\162\165\163\164\103\145 -\156\164\145\162\040\107\155\142\110\061\042\060\040\006\003\125 -\004\013\023\031\124\103\040\124\162\165\163\164\103\145\156\164 -\145\162\040\103\154\141\163\163\040\063\040\103\101\061\045\060 -\043\006\003\125\004\003\023\034\124\103\040\124\162\165\163\164 -\103\145\156\164\145\162\040\103\154\141\163\163\040\063\040\103 -\101\040\111\111\060\036\027\015\060\066\060\061\061\062\061\064 -\064\061\065\067\132\027\015\062\065\061\062\063\061\062\062\065 -\071\065\071\132\060\166\061\013\060\011\006\003\125\004\006\023 -\002\104\105\061\034\060\032\006\003\125\004\012\023\023\124\103 -\040\124\162\165\163\164\103\145\156\164\145\162\040\107\155\142 -\110\061\042\060\040\006\003\125\004\013\023\031\124\103\040\124 -\162\165\163\164\103\145\156\164\145\162\040\103\154\141\163\163 -\040\063\040\103\101\061\045\060\043\006\003\125\004\003\023\034 -\124\103\040\124\162\165\163\164\103\145\156\164\145\162\040\103 -\154\141\163\163\040\063\040\103\101\040\111\111\060\202\001\042 -\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003 -\202\001\017\000\060\202\001\012\002\202\001\001\000\264\340\273 -\121\273\071\134\213\004\305\114\171\034\043\206\061\020\143\103 -\125\047\077\306\105\307\244\075\354\011\015\032\036\040\302\126 -\036\336\033\067\007\060\042\057\157\361\006\361\253\255\326\310 -\253\141\243\057\103\304\260\262\055\374\303\226\151\173\176\212 -\344\314\300\071\022\220\102\140\311\314\065\150\356\332\137\220 -\126\137\315\034\115\133\130\111\353\016\001\117\144\372\054\074 -\211\130\330\057\056\342\260\150\351\042\073\165\211\326\104\032 -\145\362\033\227\046\035\050\155\254\350\275\131\035\053\044\366 -\326\204\003\146\210\044\000\170\140\361\370\253\376\002\262\153 -\373\042\373\065\346\026\321\255\366\056\022\344\372\065\152\345 -\031\271\135\333\073\036\032\373\323\377\025\024\010\330\011\152 -\272\105\235\024\171\140\175\257\100\212\007\163\263\223\226\323 -\164\064\215\072\067\051\336\134\354\365\356\056\061\302\040\334 -\276\361\117\177\043\122\331\133\342\144\331\234\252\007\010\265 -\105\275\321\320\061\301\253\124\237\251\322\303\142\140\003\361 -\273\071\112\222\112\075\012\271\235\305\240\376\067\002\003\001 -\000\001\243\202\001\064\060\202\001\060\060\017\006\003\125\035 -\023\001\001\377\004\005\060\003\001\001\377\060\016\006\003\125 -\035\017\001\001\377\004\004\003\002\001\006\060\035\006\003\125 -\035\016\004\026\004\024\324\242\374\237\263\303\330\003\323\127 -\134\007\244\320\044\247\300\362\000\324\060\201\355\006\003\125 -\035\037\004\201\345\060\201\342\060\201\337\240\201\334\240\201 -\331\206\065\150\164\164\160\072\057\057\167\167\167\056\164\162 -\165\163\164\143\145\156\164\145\162\056\144\145\057\143\162\154 -\057\166\062\057\164\143\137\143\154\141\163\163\137\063\137\143 -\141\137\111\111\056\143\162\154\206\201\237\154\144\141\160\072 -\057\057\167\167\167\056\164\162\165\163\164\143\145\156\164\145 -\162\056\144\145\057\103\116\075\124\103\045\062\060\124\162\165 -\163\164\103\145\156\164\145\162\045\062\060\103\154\141\163\163 -\045\062\060\063\045\062\060\103\101\045\062\060\111\111\054\117 -\075\124\103\045\062\060\124\162\165\163\164\103\145\156\164\145 -\162\045\062\060\107\155\142\110\054\117\125\075\162\157\157\164 -\143\145\162\164\163\054\104\103\075\164\162\165\163\164\143\145 -\156\164\145\162\054\104\103\075\144\145\077\143\145\162\164\151 -\146\151\143\141\164\145\122\145\166\157\143\141\164\151\157\156 -\114\151\163\164\077\142\141\163\145\077\060\015\006\011\052\206 -\110\206\367\015\001\001\005\005\000\003\202\001\001\000\066\140 -\344\160\367\006\040\103\331\043\032\102\362\370\243\262\271\115 -\212\264\363\302\232\125\061\174\304\073\147\232\264\337\115\016 -\212\223\112\027\213\033\215\312\211\341\317\072\036\254\035\361 -\234\062\264\216\131\166\242\101\205\045\067\240\023\320\365\174 -\116\325\352\226\342\156\162\301\273\052\376\154\156\370\221\230 -\106\374\311\033\127\133\352\310\032\073\077\260\121\230\074\007 -\332\054\131\001\332\213\104\350\341\164\375\247\150\335\124\272 -\203\106\354\310\106\265\370\257\227\300\073\011\034\217\316\162 -\226\075\063\126\160\274\226\313\330\325\175\040\232\203\237\032 -\334\071\361\305\162\243\021\003\375\073\102\122\051\333\350\001 -\367\233\136\214\326\215\206\116\031\372\274\034\276\305\041\245 -\207\236\170\056\066\333\011\161\243\162\064\370\154\343\006\011 -\362\136\126\245\323\335\230\372\324\346\006\364\360\266\040\143 -\113\352\051\275\252\202\146\036\373\201\252\247\067\255\023\030 -\346\222\303\201\301\063\273\210\036\241\347\342\264\275\061\154 -\016\121\075\157\373\226\126\200\342\066\027\321\334\344 -END -CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE - -# Trust for Certificate "TC TrustCenter Class 3 CA II" -# Issuer: CN=TC TrustCenter Class 3 CA II,OU=TC TrustCenter Class 3 CA,O=TC TrustCenter GmbH,C=DE -# Serial Number:4a:47:00:01:00:02:e5:a0:5d:d6:3f:00:51:bf -# Subject: CN=TC TrustCenter Class 3 CA II,OU=TC TrustCenter Class 3 CA,O=TC TrustCenter GmbH,C=DE -# Not Valid Before: Thu Jan 12 14:41:57 2006 -# Not Valid After : Wed Dec 31 22:59:59 2025 -# Fingerprint (MD5): 56:5F:AA:80:61:12:17:F6:67:21:E6:2B:6D:61:56:8E -# Fingerprint (SHA1): 80:25:EF:F4:6E:70:C8:D4:72:24:65:84:FE:40:3B:8A:8D:6A:DB:F5 -CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "TC TrustCenter Class 3 CA II" -CKA_CERT_SHA1_HASH MULTILINE_OCTAL -\200\045\357\364\156\160\310\324\162\044\145\204\376\100\073\212 -\215\152\333\365 -END -CKA_CERT_MD5_HASH MULTILINE_OCTAL -\126\137\252\200\141\022\027\366\147\041\346\053\155\141\126\216 -END -CKA_ISSUER MULTILINE_OCTAL -\060\166\061\013\060\011\006\003\125\004\006\023\002\104\105\061 -\034\060\032\006\003\125\004\012\023\023\124\103\040\124\162\165 -\163\164\103\145\156\164\145\162\040\107\155\142\110\061\042\060 -\040\006\003\125\004\013\023\031\124\103\040\124\162\165\163\164 -\103\145\156\164\145\162\040\103\154\141\163\163\040\063\040\103 -\101\061\045\060\043\006\003\125\004\003\023\034\124\103\040\124 -\162\165\163\164\103\145\156\164\145\162\040\103\154\141\163\163 -\040\063\040\103\101\040\111\111 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\016\112\107\000\001\000\002\345\240\135\326\077\000\121\277 -END -CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR -CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE - -# # Certificate "Deutsche Telekom Root CA 2" # # Issuer: CN=Deutsche Telekom Root CA 2,OU=T-TeleSec Trust Center,O=Deutsche Telekom AG,C=DE @@ -17883,155 +17726,6 @@ CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE # -# Certificate "S-TRUST Universal Root CA" -# -# Issuer: CN=S-TRUST Universal Root CA,OU=S-TRUST Certification Services,O=Deutscher Sparkassen Verlag GmbH,C=DE -# Serial Number:60:56:c5:4b:23:40:5b:64:d4:ed:25:da:d9:d6:1e:1e -# Subject: CN=S-TRUST Universal Root CA,OU=S-TRUST Certification Services,O=Deutscher Sparkassen Verlag GmbH,C=DE -# Not Valid Before: Tue Oct 22 00:00:00 2013 -# Not Valid After : Thu Oct 21 23:59:59 2038 -# Fingerprint (SHA-256): D8:0F:EF:91:0A:E3:F1:04:72:3B:04:5C:EC:2D:01:9F:44:1C:E6:21:3A:DF:15:67:91:E7:0C:17:90:11:0A:31 -# Fingerprint (SHA1): 1B:3D:11:14:EA:7A:0F:95:58:54:41:95:BF:6B:25:82:AB:40:CE:9A -CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "S-TRUST Universal Root CA" -CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 -CKA_SUBJECT MULTILINE_OCTAL -\060\201\205\061\013\060\011\006\003\125\004\006\023\002\104\105 -\061\051\060\047\006\003\125\004\012\023\040\104\145\165\164\163 -\143\150\145\162\040\123\160\141\162\153\141\163\163\145\156\040 -\126\145\162\154\141\147\040\107\155\142\110\061\047\060\045\006 -\003\125\004\013\023\036\123\055\124\122\125\123\124\040\103\145 -\162\164\151\146\151\143\141\164\151\157\156\040\123\145\162\166 -\151\143\145\163\061\042\060\040\006\003\125\004\003\023\031\123 -\055\124\122\125\123\124\040\125\156\151\166\145\162\163\141\154 -\040\122\157\157\164\040\103\101 -END -CKA_ID UTF8 "0" -CKA_ISSUER MULTILINE_OCTAL -\060\201\205\061\013\060\011\006\003\125\004\006\023\002\104\105 -\061\051\060\047\006\003\125\004\012\023\040\104\145\165\164\163 -\143\150\145\162\040\123\160\141\162\153\141\163\163\145\156\040 -\126\145\162\154\141\147\040\107\155\142\110\061\047\060\045\006 -\003\125\004\013\023\036\123\055\124\122\125\123\124\040\103\145 -\162\164\151\146\151\143\141\164\151\157\156\040\123\145\162\166 -\151\143\145\163\061\042\060\040\006\003\125\004\003\023\031\123 -\055\124\122\125\123\124\040\125\156\151\166\145\162\163\141\154 -\040\122\157\157\164\040\103\101 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\020\140\126\305\113\043\100\133\144\324\355\045\332\331\326 -\036\036 -END -CKA_VALUE MULTILINE_OCTAL -\060\202\003\330\060\202\002\300\240\003\002\001\002\002\020\140 -\126\305\113\043\100\133\144\324\355\045\332\331\326\036\036\060 -\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060\201 -\205\061\013\060\011\006\003\125\004\006\023\002\104\105\061\051 -\060\047\006\003\125\004\012\023\040\104\145\165\164\163\143\150 -\145\162\040\123\160\141\162\153\141\163\163\145\156\040\126\145 -\162\154\141\147\040\107\155\142\110\061\047\060\045\006\003\125 -\004\013\023\036\123\055\124\122\125\123\124\040\103\145\162\164 -\151\146\151\143\141\164\151\157\156\040\123\145\162\166\151\143 -\145\163\061\042\060\040\006\003\125\004\003\023\031\123\055\124 -\122\125\123\124\040\125\156\151\166\145\162\163\141\154\040\122 -\157\157\164\040\103\101\060\036\027\015\061\063\061\060\062\062 -\060\060\060\060\060\060\132\027\015\063\070\061\060\062\061\062 -\063\065\071\065\071\132\060\201\205\061\013\060\011\006\003\125 -\004\006\023\002\104\105\061\051\060\047\006\003\125\004\012\023 -\040\104\145\165\164\163\143\150\145\162\040\123\160\141\162\153 -\141\163\163\145\156\040\126\145\162\154\141\147\040\107\155\142 -\110\061\047\060\045\006\003\125\004\013\023\036\123\055\124\122 -\125\123\124\040\103\145\162\164\151\146\151\143\141\164\151\157 -\156\040\123\145\162\166\151\143\145\163\061\042\060\040\006\003 -\125\004\003\023\031\123\055\124\122\125\123\124\040\125\156\151 -\166\145\162\163\141\154\040\122\157\157\164\040\103\101\060\202 -\001\042\060\015\006\011\052\206\110\206\367\015\001\001\001\005 -\000\003\202\001\017\000\060\202\001\012\002\202\001\001\000\250 -\343\013\337\021\067\205\202\232\265\154\146\174\141\077\300\107 -\032\035\106\343\260\125\144\345\270\202\071\050\007\176\027\377 -\364\233\212\360\221\201\352\070\077\041\170\154\110\354\153\057 -\242\323\212\162\262\247\327\331\352\177\264\300\111\153\060\045 -\211\214\353\267\325\100\141\230\342\334\074\040\222\315\145\112 -\162\237\032\216\214\372\045\025\277\363\041\203\050\015\213\257 -\131\021\202\103\134\233\115\045\121\177\130\030\143\140\073\263 -\265\212\213\130\143\067\110\110\220\104\302\100\335\135\367\103 -\151\051\230\134\022\145\136\253\220\222\113\146\337\325\165\022 -\123\124\030\246\336\212\326\273\127\003\071\131\231\030\005\014 -\371\375\025\306\220\144\106\027\202\327\302\112\101\075\375\000 -\276\127\162\030\224\167\033\123\132\211\001\366\063\162\016\223 -\072\334\350\036\375\005\005\326\274\163\340\210\334\253\117\354 -\265\030\206\117\171\204\016\110\052\146\052\335\062\310\170\145 -\310\013\235\130\001\005\161\355\201\365\150\027\156\313\015\264 -\113\330\241\354\256\070\353\034\130\057\241\145\003\064\057\002 -\003\001\000\001\243\102\060\100\060\017\006\003\125\035\023\001 -\001\377\004\005\060\003\001\001\377\060\016\006\003\125\035\017 -\001\001\377\004\004\003\002\001\006\060\035\006\003\125\035\016 -\004\026\004\024\232\175\327\353\353\177\124\230\105\051\264\040 -\253\155\013\226\043\031\244\302\060\015\006\011\052\206\110\206 -\367\015\001\001\013\005\000\003\202\001\001\000\116\226\022\333 -\176\167\136\222\047\236\041\027\030\202\166\330\077\274\245\011 -\004\146\210\211\255\333\125\263\063\152\306\145\304\217\115\363 -\062\066\334\171\004\226\251\167\062\321\227\365\030\153\214\272 -\355\316\021\320\104\307\222\361\264\104\216\355\210\122\110\236 -\325\375\131\370\243\036\121\373\001\122\345\137\345\172\335\252 -\044\117\042\213\335\166\106\366\245\240\017\065\330\312\017\230 -\271\060\135\040\157\302\201\036\275\275\300\376\025\323\070\052 -\011\223\230\047\033\223\173\320\053\064\136\150\245\025\117\321 -\122\303\240\312\240\203\105\035\365\365\267\131\163\135\131\001 -\217\252\302\107\057\024\161\325\051\343\020\265\107\223\045\314 -\043\051\332\267\162\330\221\324\354\033\110\212\042\344\301\052 -\367\072\150\223\237\105\031\156\103\267\314\376\270\221\232\141 -\032\066\151\143\144\222\050\363\157\141\222\205\023\237\311\007 -\054\213\127\334\353\236\171\325\302\336\010\325\124\262\127\116 -\052\062\215\241\342\072\321\020\040\042\071\175\064\105\157\161 -\073\303\035\374\377\262\117\250\342\366\060\036 -END -CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE - -# Trust for "S-TRUST Universal Root CA" -# Issuer: CN=S-TRUST Universal Root CA,OU=S-TRUST Certification Services,O=Deutscher Sparkassen Verlag GmbH,C=DE -# Serial Number:60:56:c5:4b:23:40:5b:64:d4:ed:25:da:d9:d6:1e:1e -# Subject: CN=S-TRUST Universal Root CA,OU=S-TRUST Certification Services,O=Deutscher Sparkassen Verlag GmbH,C=DE -# Not Valid Before: Tue Oct 22 00:00:00 2013 -# Not Valid After : Thu Oct 21 23:59:59 2038 -# Fingerprint (SHA-256): D8:0F:EF:91:0A:E3:F1:04:72:3B:04:5C:EC:2D:01:9F:44:1C:E6:21:3A:DF:15:67:91:E7:0C:17:90:11:0A:31 -# Fingerprint (SHA1): 1B:3D:11:14:EA:7A:0F:95:58:54:41:95:BF:6B:25:82:AB:40:CE:9A -CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "S-TRUST Universal Root CA" -CKA_CERT_SHA1_HASH MULTILINE_OCTAL -\033\075\021\024\352\172\017\225\130\124\101\225\277\153\045\202 -\253\100\316\232 -END -CKA_CERT_MD5_HASH MULTILINE_OCTAL -\130\366\101\001\256\365\133\121\231\116\134\041\350\117\324\146 -END -CKA_ISSUER MULTILINE_OCTAL -\060\201\205\061\013\060\011\006\003\125\004\006\023\002\104\105 -\061\051\060\047\006\003\125\004\012\023\040\104\145\165\164\163 -\143\150\145\162\040\123\160\141\162\153\141\163\163\145\156\040 -\126\145\162\154\141\147\040\107\155\142\110\061\047\060\045\006 -\003\125\004\013\023\036\123\055\124\122\125\123\124\040\103\145 -\162\164\151\146\151\143\141\164\151\157\156\040\123\145\162\166 -\151\143\145\163\061\042\060\040\006\003\125\004\003\023\031\123 -\055\124\122\125\123\124\040\125\156\151\166\145\162\163\141\154 -\040\122\157\157\164\040\103\101 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\020\140\126\305\113\043\100\133\144\324\355\045\332\331\326 -\036\036 -END -CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR -CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE - -# # Certificate "Entrust Root Certification Authority - G2" # # Issuer: CN=Entrust Root Certification Authority - G2,OU="(c) 2009 Entrust, Inc. - for authorized use only",OU=See www.entrust.net/legal-terms,O="Entrust, Inc.",C=US @@ -18509,167 +18203,6 @@ CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE # -# Certificate "TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5" -# -# Issuer: CN=T..RKTRUST Elektronik Sertifika Hizmet Sa..lay..c..s.. H5,O=T..RKTRUST Bilgi ..leti..im ve Bili..im G..venli..i Hizmetleri A....,L=Ankara,C=TR -# Serial Number:00:8e:17:fe:24:20:81 -# Subject: CN=T..RKTRUST Elektronik Sertifika Hizmet Sa..lay..c..s.. H5,O=T..RKTRUST Bilgi ..leti..im ve Bili..im G..venli..i Hizmetleri A....,L=Ankara,C=TR -# Not Valid Before: Tue Apr 30 08:07:01 2013 -# Not Valid After : Fri Apr 28 08:07:01 2023 -# Fingerprint (SHA-256): 49:35:1B:90:34:44:C1:85:CC:DC:5C:69:3D:24:D8:55:5C:B2:08:D6:A8:14:13:07:69:9F:4A:F0:63:19:9D:78 -# Fingerprint (SHA1): C4:18:F6:4D:46:D1:DF:00:3D:27:30:13:72:43:A9:12:11:C6:75:FB -CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5" -CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 -CKA_SUBJECT MULTILINE_OCTAL -\060\201\261\061\013\060\011\006\003\125\004\006\023\002\124\122 -\061\017\060\015\006\003\125\004\007\014\006\101\156\153\141\162 -\141\061\115\060\113\006\003\125\004\012\014\104\124\303\234\122 -\113\124\122\125\123\124\040\102\151\154\147\151\040\304\260\154 -\145\164\151\305\237\151\155\040\166\145\040\102\151\154\151\305 -\237\151\155\040\107\303\274\166\145\156\154\151\304\237\151\040 -\110\151\172\155\145\164\154\145\162\151\040\101\056\305\236\056 -\061\102\060\100\006\003\125\004\003\014\071\124\303\234\122\113 -\124\122\125\123\124\040\105\154\145\153\164\162\157\156\151\153 -\040\123\145\162\164\151\146\151\153\141\040\110\151\172\155\145 -\164\040\123\141\304\237\154\141\171\304\261\143\304\261\163\304 -\261\040\110\065 -END -CKA_ID UTF8 "0" -CKA_ISSUER MULTILINE_OCTAL -\060\201\261\061\013\060\011\006\003\125\004\006\023\002\124\122 -\061\017\060\015\006\003\125\004\007\014\006\101\156\153\141\162 -\141\061\115\060\113\006\003\125\004\012\014\104\124\303\234\122 -\113\124\122\125\123\124\040\102\151\154\147\151\040\304\260\154 -\145\164\151\305\237\151\155\040\166\145\040\102\151\154\151\305 -\237\151\155\040\107\303\274\166\145\156\154\151\304\237\151\040 -\110\151\172\155\145\164\154\145\162\151\040\101\056\305\236\056 -\061\102\060\100\006\003\125\004\003\014\071\124\303\234\122\113 -\124\122\125\123\124\040\105\154\145\153\164\162\157\156\151\153 -\040\123\145\162\164\151\146\151\153\141\040\110\151\172\155\145 -\164\040\123\141\304\237\154\141\171\304\261\143\304\261\163\304 -\261\040\110\065 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\007\000\216\027\376\044\040\201 -END -CKA_VALUE MULTILINE_OCTAL -\060\202\004\047\060\202\003\017\240\003\002\001\002\002\007\000 -\216\027\376\044\040\201\060\015\006\011\052\206\110\206\367\015 -\001\001\013\005\000\060\201\261\061\013\060\011\006\003\125\004 -\006\023\002\124\122\061\017\060\015\006\003\125\004\007\014\006 -\101\156\153\141\162\141\061\115\060\113\006\003\125\004\012\014 -\104\124\303\234\122\113\124\122\125\123\124\040\102\151\154\147 -\151\040\304\260\154\145\164\151\305\237\151\155\040\166\145\040 -\102\151\154\151\305\237\151\155\040\107\303\274\166\145\156\154 -\151\304\237\151\040\110\151\172\155\145\164\154\145\162\151\040 -\101\056\305\236\056\061\102\060\100\006\003\125\004\003\014\071 -\124\303\234\122\113\124\122\125\123\124\040\105\154\145\153\164 -\162\157\156\151\153\040\123\145\162\164\151\146\151\153\141\040 -\110\151\172\155\145\164\040\123\141\304\237\154\141\171\304\261 -\143\304\261\163\304\261\040\110\065\060\036\027\015\061\063\060 -\064\063\060\060\070\060\067\060\061\132\027\015\062\063\060\064 -\062\070\060\070\060\067\060\061\132\060\201\261\061\013\060\011 -\006\003\125\004\006\023\002\124\122\061\017\060\015\006\003\125 -\004\007\014\006\101\156\153\141\162\141\061\115\060\113\006\003 -\125\004\012\014\104\124\303\234\122\113\124\122\125\123\124\040 -\102\151\154\147\151\040\304\260\154\145\164\151\305\237\151\155 -\040\166\145\040\102\151\154\151\305\237\151\155\040\107\303\274 -\166\145\156\154\151\304\237\151\040\110\151\172\155\145\164\154 -\145\162\151\040\101\056\305\236\056\061\102\060\100\006\003\125 -\004\003\014\071\124\303\234\122\113\124\122\125\123\124\040\105 -\154\145\153\164\162\157\156\151\153\040\123\145\162\164\151\146 -\151\153\141\040\110\151\172\155\145\164\040\123\141\304\237\154 -\141\171\304\261\143\304\261\163\304\261\040\110\065\060\202\001 -\042\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000 -\003\202\001\017\000\060\202\001\012\002\202\001\001\000\244\045 -\031\341\145\236\353\110\041\120\112\010\345\021\360\132\272\046 -\377\203\131\316\104\052\057\376\341\316\140\003\374\215\003\245 -\355\377\153\250\272\314\064\006\237\131\065\366\354\054\273\235 -\373\215\122\151\343\234\047\020\123\363\244\002\305\247\371\021 -\032\151\165\156\303\035\213\321\230\215\223\207\247\161\227\015 -\041\307\231\371\122\323\054\143\135\125\274\350\037\001\110\271 -\140\376\102\112\366\310\200\256\315\146\172\236\105\212\150\167 -\342\110\150\237\242\332\361\341\301\020\237\353\074\051\201\247 -\341\062\010\324\240\005\261\214\373\215\226\000\016\076\045\337 -\123\206\042\073\374\364\275\363\011\176\167\354\206\353\017\063 -\345\103\117\364\124\165\155\051\231\056\146\132\103\337\313\134 -\312\310\345\070\361\176\073\065\235\017\364\305\132\241\314\363 -\040\200\044\323\127\354\025\272\165\045\233\350\144\113\263\064 -\204\357\004\270\366\311\154\252\002\076\266\125\342\062\067\137 -\374\146\227\137\315\326\236\307\040\277\115\306\254\077\165\137 -\034\355\062\234\174\151\000\151\221\343\043\030\123\351\002\003 -\001\000\001\243\102\060\100\060\035\006\003\125\035\016\004\026 -\004\024\126\231\007\036\323\254\014\151\144\264\014\120\107\336 -\103\054\276\040\300\373\060\016\006\003\125\035\017\001\001\377 -\004\004\003\002\001\006\060\017\006\003\125\035\023\001\001\377 -\004\005\060\003\001\001\377\060\015\006\011\052\206\110\206\367 -\015\001\001\013\005\000\003\202\001\001\000\236\105\166\173\027 -\110\062\362\070\213\051\275\356\226\112\116\201\030\261\121\107 -\040\315\320\144\261\016\311\331\001\331\011\316\310\231\334\150 -\045\023\324\134\362\243\350\004\376\162\011\307\013\252\035\045 -\125\176\226\232\127\267\272\305\021\172\031\346\247\176\075\205 -\016\365\371\056\051\057\347\371\154\130\026\127\120\045\366\076 -\056\076\252\355\167\161\252\252\231\226\106\012\256\216\354\052 -\121\026\260\136\315\352\147\004\034\130\060\365\140\212\275\246 -\275\115\345\226\264\374\102\211\001\153\366\160\310\120\071\014 -\055\325\146\331\310\322\263\062\267\033\031\155\313\063\371\337 -\245\346\025\204\067\360\302\362\145\226\222\220\167\360\255\364 -\220\351\021\170\327\223\211\300\075\013\272\051\364\350\231\235 -\162\216\355\235\057\356\222\175\241\361\377\135\272\063\140\205 -\142\376\007\002\241\204\126\106\276\226\012\232\023\327\041\114 -\267\174\007\237\116\116\077\221\164\373\047\235\021\314\335\346 -\261\312\161\115\023\027\071\046\305\051\041\053\223\051\152\226 -\372\253\101\341\113\266\065\013\300\233\025 -END -CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE - -# Trust for "TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5" -# Issuer: CN=T..RKTRUST Elektronik Sertifika Hizmet Sa..lay..c..s.. H5,O=T..RKTRUST Bilgi ..leti..im ve Bili..im G..venli..i Hizmetleri A....,L=Ankara,C=TR -# Serial Number:00:8e:17:fe:24:20:81 -# Subject: CN=T..RKTRUST Elektronik Sertifika Hizmet Sa..lay..c..s.. H5,O=T..RKTRUST Bilgi ..leti..im ve Bili..im G..venli..i Hizmetleri A....,L=Ankara,C=TR -# Not Valid Before: Tue Apr 30 08:07:01 2013 -# Not Valid After : Fri Apr 28 08:07:01 2023 -# Fingerprint (SHA-256): 49:35:1B:90:34:44:C1:85:CC:DC:5C:69:3D:24:D8:55:5C:B2:08:D6:A8:14:13:07:69:9F:4A:F0:63:19:9D:78 -# Fingerprint (SHA1): C4:18:F6:4D:46:D1:DF:00:3D:27:30:13:72:43:A9:12:11:C6:75:FB -CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5" -CKA_CERT_SHA1_HASH MULTILINE_OCTAL -\304\030\366\115\106\321\337\000\075\047\060\023\162\103\251\022 -\021\306\165\373 -END -CKA_CERT_MD5_HASH MULTILINE_OCTAL -\332\160\216\360\042\337\223\046\366\137\237\323\025\006\122\116 -END -CKA_ISSUER MULTILINE_OCTAL -\060\201\261\061\013\060\011\006\003\125\004\006\023\002\124\122 -\061\017\060\015\006\003\125\004\007\014\006\101\156\153\141\162 -\141\061\115\060\113\006\003\125\004\012\014\104\124\303\234\122 -\113\124\122\125\123\124\040\102\151\154\147\151\040\304\260\154 -\145\164\151\305\237\151\155\040\166\145\040\102\151\154\151\305 -\237\151\155\040\107\303\274\166\145\156\154\151\304\237\151\040 -\110\151\172\155\145\164\154\145\162\151\040\101\056\305\236\056 -\061\102\060\100\006\003\125\004\003\014\071\124\303\234\122\113 -\124\122\125\123\124\040\105\154\145\153\164\162\157\156\151\153 -\040\123\145\162\164\151\146\151\153\141\040\110\151\172\155\145 -\164\040\123\141\304\237\154\141\171\304\261\143\304\261\163\304 -\261\040\110\065 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\007\000\216\027\376\044\040\201 -END -CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR -CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE - -# # Certificate "Certinomis - Root CA" # # Issuer: CN=Certinomis - Root CA,OU=0002 433998903,O=Certinomis,C=FR diff --git a/security/nss/lib/ckfw/builtins/nssckbi.h b/security/nss/lib/ckfw/builtins/nssckbi.h index 0189369b1..d40c8080e 100644 --- a/security/nss/lib/ckfw/builtins/nssckbi.h +++ b/security/nss/lib/ckfw/builtins/nssckbi.h @@ -32,7 +32,7 @@ * - whenever possible, if older branches require a modification to the * list, these changes should be made on the main line of development (trunk), * and the older branches should update to the most recent list. - * + * * - ODD minor version numbers are reserved to indicate a snapshot that has * deviated from the main line of development, e.g. if it was necessary * to modify the list on a stable branch. @@ -46,8 +46,8 @@ * It's recommend to switch back to 0 after having reached version 98/99. */ #define NSS_BUILTINS_LIBRARY_VERSION_MAJOR 2 -#define NSS_BUILTINS_LIBRARY_VERSION_MINOR 22 -#define NSS_BUILTINS_LIBRARY_VERSION "2.22" +#define NSS_BUILTINS_LIBRARY_VERSION_MINOR 24 +#define NSS_BUILTINS_LIBRARY_VERSION "2.24" /* These version numbers detail the semantic changes to the ckfw engine. */ #define NSS_BUILTINS_HARDWARE_VERSION_MAJOR 1 diff --git a/security/nss/lib/ckfw/nssmkey/Makefile b/security/nss/lib/ckfw/nssmkey/Makefile deleted file mode 100644 index e630e84b0..000000000 --- a/security/nss/lib/ckfw/nssmkey/Makefile +++ /dev/null @@ -1,72 +0,0 @@ -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -include manifest.mn -include $(CORE_DEPTH)/coreconf/config.mk -include config.mk - -EXTRA_LIBS = \ - $(DIST)/lib/$(LIB_PREFIX)nssckfw.$(LIB_SUFFIX) \ - $(DIST)/lib/$(LIB_PREFIX)secutil.$(LIB_SUFFIX) \ - $(DIST)/lib/$(LIB_PREFIX)nssb.$(LIB_SUFFIX) \ - $(NULL) - -# can't do this in manifest.mn because OS_TARGET isn't defined there. -ifeq (,$(filter-out WIN%,$(OS_TARGET))) - -ifdef NS_USE_GCC -EXTRA_LIBS += \ - -L$(NSPR_LIB_DIR) \ - -lplc4 \ - -lplds4 \ - -lnspr4 \ - $(NULL) -else -EXTRA_SHARED_LIBS += \ - $(NSPR_LIB_DIR)/$(NSPR31_LIB_PREFIX)plc4.lib \ - $(NSPR_LIB_DIR)/$(NSPR31_LIB_PREFIX)plds4.lib \ - $(NSPR_LIB_DIR)/$(NSPR31_LIB_PREFIX)nspr4.lib \ - $(NULL) -endif # NS_USE_GCC -else - -EXTRA_LIBS += \ - -L$(NSPR_LIB_DIR) \ - -lplc4 \ - -lplds4 \ - -lnspr4 \ - -framework Security \ - -framework CoreServices \ - $(NULL) -endif - - -include $(CORE_DEPTH)/coreconf/rules.mk - -# Generate certdata.c. -generate: - perl certdata.perl < certdata.txt - -# This'll need some help from a build person. - - -ifeq ($(OS_TARGET)$(OS_RELEASE), AIX4.1) -DSO_LDOPTS = -bM:SRE -bh:4 -bnoentry -EXTRA_DSO_LDOPTS = -lc -MKSHLIB = xlC $(DSO_LDOPTS) - -$(SHARED_LIBRARY): $(OBJS) - @$(MAKE_OBJDIR) - rm -f $@ - $(MKSHLIB) -o $@ $(OBJS) $(EXTRA_LIBS) $(EXTRA_DSO_LDOPTS) - chmod +x $@ - -endif - -ifeq ($(OS_TARGET)$(OS_RELEASE), AIX4.2) -LD += -G -endif - - diff --git a/security/nss/lib/ckfw/nssmkey/README b/security/nss/lib/ckfw/nssmkey/README deleted file mode 100644 index c060d9c3c..000000000 --- a/security/nss/lib/ckfw/nssmkey/README +++ /dev/null @@ -1,21 +0,0 @@ -This Cryptoki module provides acces to certs and keys stored in -Macintosh key Ring. - -- It does not yet export PKCS #12 keys. To get this to work should be - implemented using exporting the key object in PKCS #8 wrapped format. - PSM work needs to happen before this can be completed. -- It does not import or export CA Root trust from the mac keychain. -- It does not handle S/MIME objects (pkcs #7 in mac keychain terms?). -- The AuthRoots don't show up on the default list. -- Only RSA keys are supported currently. - -There are a number of things that have not been tested that other PKCS #11 -apps may need: -- reading Modulus and Public Exponents from private keys and public keys. -- storing public keys. -- setting attributes other than CKA_ID and CKA_LABEL. - -Other TODOs: -- Check for and plug memory leaks. -- Need to map mac errors into something more intellegible than - CKR_GENERAL_ERROR. diff --git a/security/nss/lib/ckfw/nssmkey/ckmk.h b/security/nss/lib/ckfw/nssmkey/ckmk.h deleted file mode 100644 index 4f3ab82d7..000000000 --- a/security/nss/lib/ckfw/nssmkey/ckmk.h +++ /dev/null @@ -1,182 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef CKMK_H -#define CKMK_H 1 - -#include <Security/SecKeychainSearch.h> -#include <Security/SecKeychainItem.h> -#include <Security/SecKeychain.h> -#include <Security/cssmtype.h> -#include <Security/cssmapi.h> -#include <Security/SecKey.h> -#include <Security/SecCertificate.h> - -#define NTO - -#include "nssckmdt.h" -#include "nssckfw.h" -/* - * I'm including this for access to the arena functions. - * Looks like we should publish that API. - */ -#ifndef BASE_H -#include "base.h" -#endif /* BASE_H */ -/* - * This is where the Netscape extensions live, at least for now. - */ -#ifndef CKT_H -#include "ckt.h" -#endif /* CKT_H */ - -/* - * statically defined raw objects. Allows us to data description objects - * to this PKCS #11 module. - */ -struct ckmkRawObjectStr { - CK_ULONG n; - const CK_ATTRIBUTE_TYPE *types; - const NSSItem *items; -}; -typedef struct ckmkRawObjectStr ckmkRawObject; - -/* - * Key/Cert Items - */ -struct ckmkItemObjectStr { - SecKeychainItemRef itemRef; - SecItemClass itemClass; - PRBool hasID; - NSSItem modify; - NSSItem private; - NSSItem encrypt; - NSSItem decrypt; - NSSItem derive; - NSSItem sign; - NSSItem signRecover; - NSSItem verify; - NSSItem verifyRecover; - NSSItem wrap; - NSSItem unwrap; - NSSItem label; - NSSItem subject; - NSSItem issuer; - NSSItem serial; - NSSItem derCert; - NSSItem id; - NSSItem modulus; - NSSItem exponent; - NSSItem privateExponent; - NSSItem prime1; - NSSItem prime2; - NSSItem exponent1; - NSSItem exponent2; - NSSItem coefficient; -}; -typedef struct ckmkItemObjectStr ckmkItemObject; - -typedef enum { - ckmkRaw, - ckmkItem, -} ckmkObjectType; - -/* - * all the various types of objects are abstracted away in cobject and - * cfind as ckmkInternalObjects. - */ -struct ckmkInternalObjectStr { - ckmkObjectType type; - union { - ckmkRawObject raw; - ckmkItemObject item; - } u; - CK_OBJECT_CLASS objClass; - NSSItem hashKey; - unsigned char hashKeyData[128]; - NSSCKMDObject mdObject; -}; -typedef struct ckmkInternalObjectStr ckmkInternalObject; - -/* our raw object data array */ -NSS_EXTERN_DATA ckmkInternalObject nss_ckmk_data[]; -NSS_EXTERN_DATA const PRUint32 nss_ckmk_nObjects; - -NSS_EXTERN_DATA const CK_VERSION nss_ckmk_CryptokiVersion; -NSS_EXTERN_DATA const NSSUTF8 *nss_ckmk_ManufacturerID; -NSS_EXTERN_DATA const NSSUTF8 *nss_ckmk_LibraryDescription; -NSS_EXTERN_DATA const CK_VERSION nss_ckmk_LibraryVersion; -NSS_EXTERN_DATA const NSSUTF8 *nss_ckmk_SlotDescription; -NSS_EXTERN_DATA const CK_VERSION nss_ckmk_HardwareVersion; -NSS_EXTERN_DATA const CK_VERSION nss_ckmk_FirmwareVersion; -NSS_EXTERN_DATA const NSSUTF8 *nss_ckmk_TokenLabel; -NSS_EXTERN_DATA const NSSUTF8 *nss_ckmk_TokenModel; -NSS_EXTERN_DATA const NSSUTF8 *nss_ckmk_TokenSerialNumber; - -NSS_EXTERN_DATA const NSSCKMDInstance nss_ckmk_mdInstance; -NSS_EXTERN_DATA const NSSCKMDSlot nss_ckmk_mdSlot; -NSS_EXTERN_DATA const NSSCKMDToken nss_ckmk_mdToken; -NSS_EXTERN_DATA const NSSCKMDMechanism nss_ckmk_mdMechanismRSA; - -NSS_EXTERN NSSCKMDSession * -nss_ckmk_CreateSession( - NSSCKFWSession *fwSession, - CK_RV *pError); - -NSS_EXTERN NSSCKMDFindObjects * -nss_ckmk_FindObjectsInit( - NSSCKFWSession *fwSession, - CK_ATTRIBUTE_PTR pTemplate, - CK_ULONG ulAttributeCount, - CK_RV *pError); - -/* - * Object Utilities - */ -NSS_EXTERN NSSCKMDObject * -nss_ckmk_CreateMDObject( - NSSArena *arena, - ckmkInternalObject *io, - CK_RV *pError); - -NSS_EXTERN NSSCKMDObject * -nss_ckmk_CreateObject( - NSSCKFWSession *fwSession, - CK_ATTRIBUTE_PTR pTemplate, - CK_ULONG ulAttributeCount, - CK_RV *pError); - -NSS_EXTERN const NSSItem * -nss_ckmk_FetchAttribute( - ckmkInternalObject *io, - CK_ATTRIBUTE_TYPE type, - CK_RV *pError); - -NSS_EXTERN void -nss_ckmk_DestroyInternalObject( - ckmkInternalObject *io); - -unsigned char * -nss_ckmk_DERUnwrap( - unsigned char *src, - int size, - int *outSize, - unsigned char **next); - -CK_ULONG -nss_ckmk_GetULongAttribute( - CK_ATTRIBUTE_TYPE type, - CK_ATTRIBUTE *template, - CK_ULONG templateSize, - CK_RV *pError); - -#define NSS_CKMK_ARRAY_SIZE(x) ((sizeof(x)) / (sizeof((x)[0]))) - -#ifdef DEBUG -#define CKMK_MACERR(str, err) cssmPerror(str, err) -#else -#define CKMK_MACERR(str, err) -#endif - -#endif diff --git a/security/nss/lib/ckfw/nssmkey/ckmkver.c b/security/nss/lib/ckfw/nssmkey/ckmkver.c deleted file mode 100644 index 2b99f1e22..000000000 --- a/security/nss/lib/ckfw/nssmkey/ckmkver.c +++ /dev/null @@ -1,17 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -/* Library identity and versioning */ - -#include "nssmkey.h" - -#if defined(DEBUG) -#define _DEBUG_STRING " (debug)" -#else -#define _DEBUG_STRING "" -#endif - -/* - * Version information - */ -const char __nss_ckmk_version[] = "Version: NSS Access to the MAC OS X Key Ring " NSS_CKMK_LIBRARY_VERSION _DEBUG_STRING; diff --git a/security/nss/lib/ckfw/nssmkey/config.mk b/security/nss/lib/ckfw/nssmkey/config.mk deleted file mode 100644 index 709691067..000000000 --- a/security/nss/lib/ckfw/nssmkey/config.mk +++ /dev/null @@ -1,24 +0,0 @@ -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -ifdef BUILD_IDG -DEFINES += -DNSSDEBUG -endif - -ifdef NS_USE_CKFW_TRACE -DEFINES += -DTRACE -endif - -# -# Override TARGETS variable so that only static libraries -# are specifed as dependencies within rules.mk. -# - -TARGETS = $(LIBRARY) -SHARED_LIBRARY = -IMPORT_LIBRARY = -PROGRAM = - - diff --git a/security/nss/lib/ckfw/nssmkey/manchor.c b/security/nss/lib/ckfw/nssmkey/manchor.c deleted file mode 100644 index 3b8bc2dbb..000000000 --- a/security/nss/lib/ckfw/nssmkey/manchor.c +++ /dev/null @@ -1,17 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* - * nssmkey/manchor.c - * - * This file "anchors" the actual cryptoki entry points in this module's - * shared library, which is required for dynamic loading. See the - * comments in nssck.api for more information. - */ - -#include "ckmk.h" - -#define MODULE_NAME ckmk -#define INSTANCE_NAME (NSSCKMDInstance *)&nss_ckmk_mdInstance -#include "nssck.api" diff --git a/security/nss/lib/ckfw/nssmkey/manifest.mn b/security/nss/lib/ckfw/nssmkey/manifest.mn deleted file mode 100644 index 036d9bc3f..000000000 --- a/security/nss/lib/ckfw/nssmkey/manifest.mn +++ /dev/null @@ -1,33 +0,0 @@ -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -CORE_DEPTH = ../../../.. - -MODULE = nss -MAPFILE = $(OBJDIR)/nssmkey.def - -EXPORTS = \ - nssmkey.h \ - $(NULL) - -CSRCS = \ - manchor.c \ - mconstants.c \ - mfind.c \ - minst.c \ - mobject.c \ - mrsa.c \ - msession.c \ - mslot.c \ - mtoken.c \ - ckmkver.c \ - staticobj.c \ - $(NULL) - -REQUIRES = nspr - -LIBRARY_NAME = nssmkey - -#EXTRA_SHARED_LIBS = -L$(DIST)/lib -lnssckfw -lnssb -lplc4 -lplds4 diff --git a/security/nss/lib/ckfw/nssmkey/mconstants.c b/security/nss/lib/ckfw/nssmkey/mconstants.c deleted file mode 100644 index c26298ada..000000000 --- a/security/nss/lib/ckfw/nssmkey/mconstants.c +++ /dev/null @@ -1,61 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* - * nssmkey/constants.c - * - * Identification and other constants, all collected here in one place. - */ - -#ifndef NSSBASET_H -#include "nssbaset.h" -#endif /* NSSBASET_H */ - -#ifndef NSSCKT_H -#include "nssckt.h" -#endif /* NSSCKT_H */ - -#include "nssmkey.h" - -NSS_IMPLEMENT_DATA const CK_VERSION - nss_ckmk_CryptokiVersion = { - NSS_CKMK_CRYPTOKI_VERSION_MAJOR, - NSS_CKMK_CRYPTOKI_VERSION_MINOR - }; - -NSS_IMPLEMENT_DATA const NSSUTF8 * - nss_ckmk_ManufacturerID = (NSSUTF8 *)"Mozilla Foundation"; - -NSS_IMPLEMENT_DATA const NSSUTF8 * - nss_ckmk_LibraryDescription = (NSSUTF8 *)"NSS Access to Mac OS X Key Ring"; - -NSS_IMPLEMENT_DATA const CK_VERSION - nss_ckmk_LibraryVersion = { - NSS_CKMK_LIBRARY_VERSION_MAJOR, - NSS_CKMK_LIBRARY_VERSION_MINOR - }; - -NSS_IMPLEMENT_DATA const NSSUTF8 * - nss_ckmk_SlotDescription = (NSSUTF8 *)"Mac OS X Key Ring"; - -NSS_IMPLEMENT_DATA const CK_VERSION - nss_ckmk_HardwareVersion = { - NSS_CKMK_HARDWARE_VERSION_MAJOR, - NSS_CKMK_HARDWARE_VERSION_MINOR - }; - -NSS_IMPLEMENT_DATA const CK_VERSION - nss_ckmk_FirmwareVersion = { - NSS_CKMK_FIRMWARE_VERSION_MAJOR, - NSS_CKMK_FIRMWARE_VERSION_MINOR - }; - -NSS_IMPLEMENT_DATA const NSSUTF8 * - nss_ckmk_TokenLabel = (NSSUTF8 *)"Mac OS X Key Ring"; - -NSS_IMPLEMENT_DATA const NSSUTF8 * - nss_ckmk_TokenModel = (NSSUTF8 *)"1"; - -NSS_IMPLEMENT_DATA const NSSUTF8 * - nss_ckmk_TokenSerialNumber = (NSSUTF8 *)"1"; diff --git a/security/nss/lib/ckfw/nssmkey/mfind.c b/security/nss/lib/ckfw/nssmkey/mfind.c deleted file mode 100644 index d193a8de7..000000000 --- a/security/nss/lib/ckfw/nssmkey/mfind.c +++ /dev/null @@ -1,352 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef CKMK_H -#include "ckmk.h" -#endif /* CKMK_H */ - -/* - * nssmkey/mfind.c - * - * This file implements the NSSCKMDFindObjects object for the - * "nssmkey" cryptoki module. - */ - -struct ckmkFOStr { - NSSArena *arena; - CK_ULONG n; - CK_ULONG i; - ckmkInternalObject **objs; -}; - -static void -ckmk_mdFindObjects_Final( - NSSCKMDFindObjects *mdFindObjects, - NSSCKFWFindObjects *fwFindObjects, - NSSCKMDSession *mdSession, - NSSCKFWSession *fwSession, - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance) -{ - struct ckmkFOStr *fo = (struct ckmkFOStr *)mdFindObjects->etc; - NSSArena *arena = fo->arena; - PRUint32 i; - - /* walk down an free the unused 'objs' */ - for (i = fo->i; i < fo->n; i++) { - nss_ckmk_DestroyInternalObject(fo->objs[i]); - } - - nss_ZFreeIf(fo->objs); - nss_ZFreeIf(fo); - nss_ZFreeIf(mdFindObjects); - if ((NSSArena *)NULL != arena) { - NSSArena_Destroy(arena); - } - - return; -} - -static NSSCKMDObject * -ckmk_mdFindObjects_Next( - NSSCKMDFindObjects *mdFindObjects, - NSSCKFWFindObjects *fwFindObjects, - NSSCKMDSession *mdSession, - NSSCKFWSession *fwSession, - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - NSSArena *arena, - CK_RV *pError) -{ - struct ckmkFOStr *fo = (struct ckmkFOStr *)mdFindObjects->etc; - ckmkInternalObject *io; - - if (fo->i == fo->n) { - *pError = CKR_OK; - return (NSSCKMDObject *)NULL; - } - - io = fo->objs[fo->i]; - fo->i++; - - return nss_ckmk_CreateMDObject(arena, io, pError); -} - -static CK_BBOOL -ckmk_attrmatch( - CK_ATTRIBUTE_PTR a, - ckmkInternalObject *o) -{ - PRBool prb; - const NSSItem *b; - CK_RV error; - - b = nss_ckmk_FetchAttribute(o, a->type, &error); - if (b == NULL) { - return CK_FALSE; - } - - if (a->ulValueLen != b->size) { - /* match a decoded serial number */ - if ((a->type == CKA_SERIAL_NUMBER) && (a->ulValueLen < b->size)) { - int len; - unsigned char *data; - - data = nss_ckmk_DERUnwrap(b->data, b->size, &len, NULL); - if ((len == a->ulValueLen) && - nsslibc_memequal(a->pValue, data, len, (PRStatus *)NULL)) { - return CK_TRUE; - } - } - return CK_FALSE; - } - - prb = nsslibc_memequal(a->pValue, b->data, b->size, (PRStatus *)NULL); - - if (PR_TRUE == prb) { - return CK_TRUE; - } else { - return CK_FALSE; - } -} - -static CK_BBOOL -ckmk_match( - CK_ATTRIBUTE_PTR pTemplate, - CK_ULONG ulAttributeCount, - ckmkInternalObject *o) -{ - CK_ULONG i; - - for (i = 0; i < ulAttributeCount; i++) { - if (CK_FALSE == ckmk_attrmatch(&pTemplate[i], o)) { - return CK_FALSE; - } - } - - /* Every attribute passed */ - return CK_TRUE; -} - -#define CKMK_ITEM_CHUNK 20 - -#define PUT_OBJECT(obj, err, size, count, list) \ - { \ - if (count >= size) { \ - (list) = (list) ? nss_ZREALLOCARRAY(list, ckmkInternalObject *, \ - ((size) + \ - CKMK_ITEM_CHUNK)) \ - : nss_ZNEWARRAY(NULL, ckmkInternalObject *, \ - ((size) + \ - CKMK_ITEM_CHUNK)); \ - if ((ckmkInternalObject **)NULL == list) { \ - err = CKR_HOST_MEMORY; \ - goto loser; \ - } \ - (size) += CKMK_ITEM_CHUNK; \ - } \ - (list)[count] = (obj); \ - count++; \ - } - -/* find all the certs that represent the appropriate object (cert, priv key, or - * pub key) in the cert store. - */ -static PRUint32 -collect_class( - CK_OBJECT_CLASS objClass, - SecItemClass itemClass, - CK_ATTRIBUTE_PTR pTemplate, - CK_ULONG ulAttributeCount, - ckmkInternalObject ***listp, - PRUint32 *sizep, - PRUint32 count, - CK_RV *pError) -{ - ckmkInternalObject *next = NULL; - SecKeychainSearchRef searchRef = 0; - SecKeychainItemRef itemRef = 0; - OSStatus error; - - /* future, build the attribute list based on the template - * so we can refine the search */ - error = SecKeychainSearchCreateFromAttributes( - NULL, itemClass, NULL, &searchRef); - - while (noErr == SecKeychainSearchCopyNext(searchRef, &itemRef)) { - /* if we don't have an internal object structure, get one */ - if ((ckmkInternalObject *)NULL == next) { - next = nss_ZNEW(NULL, ckmkInternalObject); - if ((ckmkInternalObject *)NULL == next) { - *pError = CKR_HOST_MEMORY; - goto loser; - } - } - /* fill in the relevant object data */ - next->type = ckmkItem; - next->objClass = objClass; - next->u.item.itemRef = itemRef; - next->u.item.itemClass = itemClass; - - /* see if this is one of the objects we are looking for */ - if (CK_TRUE == ckmk_match(pTemplate, ulAttributeCount, next)) { - /* yes, put it on the list */ - PUT_OBJECT(next, *pError, *sizep, count, *listp); - next = NULL; /* this one is on the list, need to allocate a new one now */ - } else { - /* no , release the current item and clear out the structure for reuse */ - CFRelease(itemRef); - /* don't cache the values we just loaded */ - nsslibc_memset(next, 0, sizeof(*next)); - } - } -loser: - if (searchRef) { - CFRelease(searchRef); - } - nss_ZFreeIf(next); - return count; -} - -static PRUint32 -collect_objects( - CK_ATTRIBUTE_PTR pTemplate, - CK_ULONG ulAttributeCount, - ckmkInternalObject ***listp, - CK_RV *pError) -{ - PRUint32 i; - PRUint32 count = 0; - PRUint32 size = 0; - CK_OBJECT_CLASS objClass; - - /* - * first handle the static build in objects (if any) - */ - for (i = 0; i < nss_ckmk_nObjects; i++) { - ckmkInternalObject *o = (ckmkInternalObject *)&nss_ckmk_data[i]; - - if (CK_TRUE == ckmk_match(pTemplate, ulAttributeCount, o)) { - PUT_OBJECT(o, *pError, size, count, *listp); - } - } - - /* - * now handle the various object types - */ - objClass = nss_ckmk_GetULongAttribute(CKA_CLASS, - pTemplate, ulAttributeCount, pError); - if (CKR_OK != *pError) { - objClass = CK_INVALID_HANDLE; - } - *pError = CKR_OK; - switch (objClass) { - case CKO_CERTIFICATE: - count = collect_class(objClass, kSecCertificateItemClass, - pTemplate, ulAttributeCount, listp, - &size, count, pError); - break; - case CKO_PUBLIC_KEY: - count = collect_class(objClass, CSSM_DL_DB_RECORD_PUBLIC_KEY, - pTemplate, ulAttributeCount, listp, - &size, count, pError); - break; - case CKO_PRIVATE_KEY: - count = collect_class(objClass, CSSM_DL_DB_RECORD_PRIVATE_KEY, - pTemplate, ulAttributeCount, listp, - &size, count, pError); - break; - /* all of them */ - case CK_INVALID_HANDLE: - count = collect_class(CKO_CERTIFICATE, kSecCertificateItemClass, - pTemplate, ulAttributeCount, listp, - &size, count, pError); - count = collect_class(CKO_PUBLIC_KEY, CSSM_DL_DB_RECORD_PUBLIC_KEY, - pTemplate, ulAttributeCount, listp, - &size, count, pError); - count = collect_class(CKO_PUBLIC_KEY, CSSM_DL_DB_RECORD_PRIVATE_KEY, - pTemplate, ulAttributeCount, listp, - &size, count, pError); - break; - default: - break; - } - if (CKR_OK != *pError) { - goto loser; - } - - return count; -loser: - nss_ZFreeIf(*listp); - return 0; -} - -NSS_IMPLEMENT NSSCKMDFindObjects * -nss_ckmk_FindObjectsInit( - NSSCKFWSession *fwSession, - CK_ATTRIBUTE_PTR pTemplate, - CK_ULONG ulAttributeCount, - CK_RV *pError) -{ - /* This could be made more efficient. I'm rather rushed. */ - NSSArena *arena; - NSSCKMDFindObjects *rv = (NSSCKMDFindObjects *)NULL; - struct ckmkFOStr *fo = (struct ckmkFOStr *)NULL; - ckmkInternalObject **temp = (ckmkInternalObject **)NULL; - - arena = NSSArena_Create(); - if ((NSSArena *)NULL == arena) { - goto loser; - } - - rv = nss_ZNEW(arena, NSSCKMDFindObjects); - if ((NSSCKMDFindObjects *)NULL == rv) { - *pError = CKR_HOST_MEMORY; - goto loser; - } - - fo = nss_ZNEW(arena, struct ckmkFOStr); - if ((struct ckmkFOStr *)NULL == fo) { - *pError = CKR_HOST_MEMORY; - goto loser; - } - - fo->arena = arena; - /* fo->n and fo->i are already zero */ - - rv->etc = (void *)fo; - rv->Final = ckmk_mdFindObjects_Final; - rv->Next = ckmk_mdFindObjects_Next; - rv->null = (void *)NULL; - - fo->n = collect_objects(pTemplate, ulAttributeCount, &temp, pError); - if (*pError != CKR_OK) { - goto loser; - } - - fo->objs = nss_ZNEWARRAY(arena, ckmkInternalObject *, fo->n); - if ((ckmkInternalObject **)NULL == fo->objs) { - *pError = CKR_HOST_MEMORY; - goto loser; - } - - (void)nsslibc_memcpy(fo->objs, temp, sizeof(ckmkInternalObject *) * fo->n); - nss_ZFreeIf(temp); - temp = (ckmkInternalObject **)NULL; - - return rv; - -loser: - nss_ZFreeIf(temp); - nss_ZFreeIf(fo); - nss_ZFreeIf(rv); - if ((NSSArena *)NULL != arena) { - NSSArena_Destroy(arena); - } - return (NSSCKMDFindObjects *)NULL; -} diff --git a/security/nss/lib/ckfw/nssmkey/minst.c b/security/nss/lib/ckfw/nssmkey/minst.c deleted file mode 100644 index fcb96c652..000000000 --- a/security/nss/lib/ckfw/nssmkey/minst.c +++ /dev/null @@ -1,97 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "ckmk.h" - -/* - * nssmkey/minstance.c - * - * This file implements the NSSCKMDInstance object for the - * "nssmkey" cryptoki module. - */ - -/* - * NSSCKMDInstance methods - */ - -static CK_ULONG -ckmk_mdInstance_GetNSlots( - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - CK_RV *pError) -{ - return (CK_ULONG)1; -} - -static CK_VERSION -ckmk_mdInstance_GetCryptokiVersion( - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance) -{ - return nss_ckmk_CryptokiVersion; -} - -static NSSUTF8 * -ckmk_mdInstance_GetManufacturerID( - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - CK_RV *pError) -{ - return (NSSUTF8 *)nss_ckmk_ManufacturerID; -} - -static NSSUTF8 * -ckmk_mdInstance_GetLibraryDescription( - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - CK_RV *pError) -{ - return (NSSUTF8 *)nss_ckmk_LibraryDescription; -} - -static CK_VERSION -ckmk_mdInstance_GetLibraryVersion( - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance) -{ - return nss_ckmk_LibraryVersion; -} - -static CK_RV -ckmk_mdInstance_GetSlots( - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - NSSCKMDSlot *slots[]) -{ - slots[0] = (NSSCKMDSlot *)&nss_ckmk_mdSlot; - return CKR_OK; -} - -static CK_BBOOL -ckmk_mdInstance_ModuleHandlesSessionObjects( - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance) -{ - /* we don't want to allow any session object creation, at least - * until we can investigate whether or not we can use those objects - */ - return CK_TRUE; -} - -NSS_IMPLEMENT_DATA const NSSCKMDInstance - nss_ckmk_mdInstance = { - (void *)NULL, /* etc */ - NULL, /* Initialize */ - NULL, /* Finalize */ - ckmk_mdInstance_GetNSlots, - ckmk_mdInstance_GetCryptokiVersion, - ckmk_mdInstance_GetManufacturerID, - ckmk_mdInstance_GetLibraryDescription, - ckmk_mdInstance_GetLibraryVersion, - ckmk_mdInstance_ModuleHandlesSessionObjects, - /*NULL, /* HandleSessionObjects */ - ckmk_mdInstance_GetSlots, - NULL, /* WaitForSlotEvent */ - (void *)NULL /* null terminator */ - }; diff --git a/security/nss/lib/ckfw/nssmkey/mobject.c b/security/nss/lib/ckfw/nssmkey/mobject.c deleted file mode 100644 index b19a8fdbd..000000000 --- a/security/nss/lib/ckfw/nssmkey/mobject.c +++ /dev/null @@ -1,1861 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "ckmk.h" -#include "nssbase.h" - -#include "secdert.h" /* for DER_INTEGER */ -#include "string.h" - -/* asn1 encoder (to build pkcs#8 blobs) */ -#include <seccomon.h> -#include <secitem.h> -#include <blapit.h> -#include <secoid.h> -#include <secasn1.h> - -/* for importing the keys */ -#include <CoreFoundation/CoreFoundation.h> -#include <security/SecImportExport.h> - -/* - * nssmkey/mobject.c - * - * This file implements the NSSCKMDObject object for the - * "nssmkey" cryptoki module. - */ - -const CK_ATTRIBUTE_TYPE certAttrs[] = { - CKA_CLASS, - CKA_TOKEN, - CKA_PRIVATE, - CKA_MODIFIABLE, - CKA_LABEL, - CKA_CERTIFICATE_TYPE, - CKA_SUBJECT, - CKA_ISSUER, - CKA_SERIAL_NUMBER, - CKA_VALUE -}; -const PRUint32 certAttrsCount = NSS_CKMK_ARRAY_SIZE(certAttrs); - -/* private keys, for now only support RSA */ -const CK_ATTRIBUTE_TYPE privKeyAttrs[] = { - CKA_CLASS, - CKA_TOKEN, - CKA_PRIVATE, - CKA_MODIFIABLE, - CKA_LABEL, - CKA_KEY_TYPE, - CKA_DERIVE, - CKA_LOCAL, - CKA_SUBJECT, - CKA_SENSITIVE, - CKA_DECRYPT, - CKA_SIGN, - CKA_SIGN_RECOVER, - CKA_UNWRAP, - CKA_EXTRACTABLE, - CKA_ALWAYS_SENSITIVE, - CKA_NEVER_EXTRACTABLE, - CKA_MODULUS, - CKA_PUBLIC_EXPONENT, -}; -const PRUint32 privKeyAttrsCount = NSS_CKMK_ARRAY_SIZE(privKeyAttrs); - -/* public keys, for now only support RSA */ -const CK_ATTRIBUTE_TYPE pubKeyAttrs[] = { - CKA_CLASS, - CKA_TOKEN, - CKA_PRIVATE, - CKA_MODIFIABLE, - CKA_LABEL, - CKA_KEY_TYPE, - CKA_DERIVE, - CKA_LOCAL, - CKA_SUBJECT, - CKA_ENCRYPT, - CKA_VERIFY, - CKA_VERIFY_RECOVER, - CKA_WRAP, - CKA_MODULUS, - CKA_PUBLIC_EXPONENT, -}; -const PRUint32 pubKeyAttrsCount = NSS_CKMK_ARRAY_SIZE(pubKeyAttrs); -static const CK_BBOOL ck_true = CK_TRUE; -static const CK_BBOOL ck_false = CK_FALSE; -static const CK_CERTIFICATE_TYPE ckc_x509 = CKC_X_509; -static const CK_KEY_TYPE ckk_rsa = CKK_RSA; -static const CK_OBJECT_CLASS cko_certificate = CKO_CERTIFICATE; -static const CK_OBJECT_CLASS cko_private_key = CKO_PRIVATE_KEY; -static const CK_OBJECT_CLASS cko_public_key = CKO_PUBLIC_KEY; -static const NSSItem ckmk_trueItem = { - (void *)&ck_true, (PRUint32)sizeof(CK_BBOOL) -}; -static const NSSItem ckmk_falseItem = { - (void *)&ck_false, (PRUint32)sizeof(CK_BBOOL) -}; -static const NSSItem ckmk_x509Item = { - (void *)&ckc_x509, (PRUint32)sizeof(CK_CERTIFICATE_TYPE) -}; -static const NSSItem ckmk_rsaItem = { - (void *)&ckk_rsa, (PRUint32)sizeof(CK_KEY_TYPE) -}; -static const NSSItem ckmk_certClassItem = { - (void *)&cko_certificate, (PRUint32)sizeof(CK_OBJECT_CLASS) -}; -static const NSSItem ckmk_privKeyClassItem = { - (void *)&cko_private_key, (PRUint32)sizeof(CK_OBJECT_CLASS) -}; -static const NSSItem ckmk_pubKeyClassItem = { - (void *)&cko_public_key, (PRUint32)sizeof(CK_OBJECT_CLASS) -}; -static const NSSItem ckmk_emptyItem = { - (void *)&ck_true, 0 -}; - -/* - * these are utilities. The chould be moved to a new utilities file. - */ -#ifdef DEBUG -static void -itemdump(char *str, void *data, int size, CK_RV error) -{ - unsigned char *ptr = (unsigned char *)data; - int i; - fprintf(stderr, str); - for (i = 0; i < size; i++) { - fprintf(stderr, "%02x ", (unsigned int)ptr[i]); - } - fprintf(stderr, " (error = %d)\n", (int)error); -} -#endif - -/* - * unwrap a single DER value - * now that we have util linked in, we should probably use - * the ANS1_Decoder for this work... - */ -unsigned char * -nss_ckmk_DERUnwrap( - unsigned char *src, - int size, - int *outSize, - unsigned char **next) -{ - unsigned char *start = src; - unsigned int len = 0; - - /* initialize error condition return values */ - *outSize = 0; - if (next) { - *next = src; - } - - if (size < 2) { - return start; - } - src++; /* skip the tag -- should check it against an expected value! */ - len = (unsigned)*src++; - if (len & 0x80) { - int count = len & 0x7f; - len = 0; - - if (count + 2 > size) { - return start; - } - while (count-- > 0) { - len = (len << 8) | (unsigned)*src++; - } - } - if (len + (src - start) > (unsigned int)size) { - return start; - } - if (next) { - *next = src + len; - } - *outSize = len; - - return src; -} - -/* - * get an attribute from a template. Value is returned in NSS item. - * data for the item is owned by the template. - */ -CK_RV -nss_ckmk_GetAttribute( - CK_ATTRIBUTE_TYPE type, - CK_ATTRIBUTE *template, - CK_ULONG templateSize, - NSSItem *item) -{ - CK_ULONG i; - - for (i = 0; i < templateSize; i++) { - if (template[i].type == type) { - item->data = template[i].pValue; - item->size = template[i].ulValueLen; - return CKR_OK; - } - } - return CKR_TEMPLATE_INCOMPLETE; -} - -/* - * get an attribute which is type CK_ULONG. - */ -CK_ULONG -nss_ckmk_GetULongAttribute( - CK_ATTRIBUTE_TYPE type, - CK_ATTRIBUTE *template, - CK_ULONG templateSize, - CK_RV *pError) -{ - NSSItem item; - - *pError = nss_ckmk_GetAttribute(type, template, templateSize, &item); - if (CKR_OK != *pError) { - return (CK_ULONG)0; - } - if (item.size != sizeof(CK_ULONG)) { - *pError = CKR_ATTRIBUTE_VALUE_INVALID; - return (CK_ULONG)0; - } - return *(CK_ULONG *)item.data; -} - -/* - * get an attribute which is type CK_BBOOL. - */ -CK_BBOOL -nss_ckmk_GetBoolAttribute( - CK_ATTRIBUTE_TYPE type, - CK_ATTRIBUTE *template, - CK_ULONG templateSize, - CK_BBOOL defaultBool) -{ - NSSItem item; - CK_RV error; - - error = nss_ckmk_GetAttribute(type, template, templateSize, &item); - if (CKR_OK != error) { - return defaultBool; - } - if (item.size != sizeof(CK_BBOOL)) { - return defaultBool; - } - return *(CK_BBOOL *)item.data; -} - -/* - * get an attribute as a NULL terminated string. Caller is responsible to - * free the string. - */ -char * -nss_ckmk_GetStringAttribute( - CK_ATTRIBUTE_TYPE type, - CK_ATTRIBUTE *template, - CK_ULONG templateSize, - CK_RV *pError) -{ - NSSItem item; - char *str; - - /* get the attribute */ - *pError = nss_ckmk_GetAttribute(type, template, templateSize, &item); - if (CKR_OK != *pError) { - return (char *)NULL; - } - /* make sure it is null terminated */ - str = nss_ZNEWARRAY(NULL, char, item.size + 1); - if ((char *)NULL == str) { - *pError = CKR_HOST_MEMORY; - return (char *)NULL; - } - - nsslibc_memcpy(str, item.data, item.size); - str[item.size] = 0; - - return str; -} - -/* - * Apple doesn't seem to have a public interface to the DER encoder, - * wip out a quick one for integers only (anything more complicated, - * we should use one of the 3 in lib/util). -- especially since we - * now link with it. - */ -static CK_RV -ckmk_encodeInt(NSSItem *dest, void *src, int srcLen) -{ - int dataLen = srcLen; - int lenLen = 1; - int encLen; - int isSigned = 0; - int offset = 0; - unsigned char *data = NULL; - int i; - - if (*(unsigned char *)src & 0x80) { - dataLen++; - isSigned = 1; - } - - /* calculate the length of the length specifier */ - /* (NOTE: destroys dataLen value) */ - if (dataLen > 0x7f) { - do { - lenLen++; - dataLen >>= 8; - } while (dataLen); - } - - /* calculate our total length */ - dataLen = isSigned + srcLen; - encLen = 1 + lenLen + dataLen; - data = nss_ZNEWARRAY(NULL, unsigned char, encLen); - if ((unsigned char *)NULL == data) { - return CKR_HOST_MEMORY; - } - data[0] = DER_INTEGER; - if (1 == lenLen) { - data[1] = dataLen; - } else { - data[1] = 0x80 + lenLen; - for (i = 0; i < lenLen; i++) { - data[i + 1] = ((dataLen >> ((lenLen - - i - 1) * - 8)) & - 0xff); - } - } - offset = lenLen + 1; - - if (isSigned) { - data[offset++] = 0; - } - nsslibc_memcpy(&data[offset], src, srcLen); - dest->data = data; - dest->size = encLen; - return CKR_OK; -} - -/* - * Get a Keyring attribute. If content is set to true, then we get the - * content, not the attribute. - */ -static CK_RV -ckmk_GetCommonAttribute( - ckmkInternalObject *io, - SecItemAttr itemAttr, - PRBool content, - NSSItem *item, - char *dbString) -{ - SecKeychainAttributeList *attrList = NULL; - SecKeychainAttributeInfo attrInfo; - PRUint32 len = 0; - PRUint32 dataLen = 0; - PRUint32 attrFormat = 0; - void *dataVal = 0; - void *out = NULL; - CK_RV error = CKR_OK; - OSStatus macErr; - - attrInfo.count = 1; - attrInfo.tag = &itemAttr; - attrInfo.format = &attrFormat; - - macErr = SecKeychainItemCopyAttributesAndData(io->u.item.itemRef, - &attrInfo, NULL, &attrList, &len, &out); - if (noErr != macErr) { - CKMK_MACERR(dbString, macErr); - return CKR_ATTRIBUTE_TYPE_INVALID; - } - dataLen = content ? len : attrList->attr->length; - dataVal = content ? out : attrList->attr->data; - - /* Apple's documentation says this value is DER Encoded, but it clearly isn't - * der encode it before we ship it back off to NSS - */ - if (kSecSerialNumberItemAttr == itemAttr) { - error = ckmk_encodeInt(item, dataVal, dataLen); - goto loser; /* logically 'done' if error == CKR_OK */ - } - item->data = nss_ZNEWARRAY(NULL, char, dataLen); - if (NULL == item->data) { - error = CKR_HOST_MEMORY; - goto loser; - } - nsslibc_memcpy(item->data, dataVal, dataLen); - item->size = dataLen; - -loser: - SecKeychainItemFreeAttributesAndData(attrList, out); - return error; -} - -/* - * change an attribute (does not operate on the content). - */ -static CK_RV -ckmk_updateAttribute( - SecKeychainItemRef itemRef, - SecItemAttr itemAttr, - void *data, - PRUint32 len, - char *dbString) -{ - SecKeychainAttributeList attrList; - SecKeychainAttribute attrAttr; - OSStatus macErr; - CK_RV error = CKR_OK; - - attrList.count = 1; - attrList.attr = &attrAttr; - attrAttr.tag = itemAttr; - attrAttr.data = data; - attrAttr.length = len; - macErr = SecKeychainItemModifyAttributesAndData(itemRef, &attrList, 0, NULL); - if (noErr != macErr) { - CKMK_MACERR(dbString, macErr); - error = CKR_ATTRIBUTE_TYPE_INVALID; - } - return error; -} - -/* - * get an attribute (does not operate on the content) - */ -static CK_RV -ckmk_GetDataAttribute( - ckmkInternalObject *io, - SecItemAttr itemAttr, - NSSItem *item, - char *dbString) -{ - return ckmk_GetCommonAttribute(io, itemAttr, PR_FALSE, item, dbString); -} - -/* - * get an attribute we know is a BOOL. - */ -static CK_RV -ckmk_GetBoolAttribute( - ckmkInternalObject *io, - SecItemAttr itemAttr, - NSSItem *item, - char *dbString) -{ - SecKeychainAttribute attr; - SecKeychainAttributeList attrList; - CK_BBOOL *boolp = NULL; - PRUint32 len = 0; - ; - void *out = NULL; - CK_RV error = CKR_OK; - OSStatus macErr; - - attr.tag = itemAttr; - attr.length = 0; - attr.data = NULL; - attrList.count = 1; - attrList.attr = &attr; - - boolp = nss_ZNEW(NULL, CK_BBOOL); - if ((CK_BBOOL *)NULL == boolp) { - error = CKR_HOST_MEMORY; - goto loser; - } - - macErr = SecKeychainItemCopyContent(io->u.item.itemRef, NULL, - &attrList, &len, &out); - if (noErr != macErr) { - CKMK_MACERR(dbString, macErr); - error = CKR_ATTRIBUTE_TYPE_INVALID; - goto loser; - } - if (sizeof(PRUint32) != attr.length) { - error = CKR_ATTRIBUTE_TYPE_INVALID; - goto loser; - } - *boolp = *(PRUint32 *)attr.data ? 1 : 0; - item->data = boolp; - boolp = NULL; - item->size = sizeof(CK_BBOOL); - -loser: - nss_ZFreeIf(boolp); - SecKeychainItemFreeContent(&attrList, out); - return error; -} - -/* - * macros for fetching attributes into a cache and returning the - * appropriate value. These operate inside switch statements - */ -#define CKMK_HANDLE_ITEM(func, io, type, loc, item, error, str) \ - if (0 == (item)->loc.size) { \ - error = func(io, type, &(item)->loc, str); \ - } \ - return (CKR_OK == (error)) ? &(item)->loc : NULL; - -#define CKMK_HANDLE_OPT_ITEM(func, io, type, loc, item, error, str) \ - if (0 == (item)->loc.size) { \ - (void)func(io, type, &(item)->loc, str); \ - } \ - return &(item)->loc; - -#define CKMK_HANDLE_BOOL_ITEM(io, type, loc, item, error, str) \ - CKMK_HANDLE_ITEM(ckmk_GetBoolAttribute, io, type, loc, item, error, str) -#define CKMK_HANDLE_DATA_ITEM(io, type, loc, item, error, str) \ - CKMK_HANDLE_ITEM(ckmk_GetDataAttribute, io, type, loc, item, error, str) -#define CKMK_HANDLE_OPT_DATA_ITEM(io, type, loc, item, error, str) \ - CKMK_HANDLE_OPT_ITEM(ckmk_GetDataAttribute, io, type, loc, item, error, str) - -/* - * fetch the unique identifier for each object type. - */ -static void -ckmk_FetchHashKey( - ckmkInternalObject *io) -{ - NSSItem *key = &io->hashKey; - - if (io->objClass == CKO_CERTIFICATE) { - ckmk_GetCommonAttribute(io, kSecCertEncodingItemAttr, - PR_TRUE, key, "Fetching HashKey (cert)"); - } else { - ckmk_GetCommonAttribute(io, kSecKeyLabel, - PR_FALSE, key, "Fetching HashKey (key)"); - } -} - -/* - * Apple mucks with the actual subject and issuer, so go fetch - * the real ones ourselves. - */ -static void -ckmk_fetchCert( - ckmkInternalObject *io) -{ - CK_RV error; - unsigned char *cert, *next; - int certSize, thisEntrySize; - - error = ckmk_GetCommonAttribute(io, kSecCertEncodingItemAttr, PR_TRUE, - &io->u.item.derCert, "Fetching Value (cert)"); - if (CKR_OK != error) { - return; - } - /* unwrap the cert bundle */ - cert = nss_ckmk_DERUnwrap((unsigned char *)io->u.item.derCert.data, - io->u.item.derCert.size, - &certSize, NULL); - /* unwrap the cert itself */ - /* cert == certdata */ - cert = nss_ckmk_DERUnwrap(cert, certSize, &certSize, NULL); - - /* skip the optional version */ - if ((cert[0] & 0xa0) == 0xa0) { - nss_ckmk_DERUnwrap(cert, certSize, &thisEntrySize, &next); - certSize -= next - cert; - cert = next; - } - /* skip the serial number */ - nss_ckmk_DERUnwrap(cert, certSize, &thisEntrySize, &next); - certSize -= next - cert; - cert = next; - - /* skip the OID */ - nss_ckmk_DERUnwrap(cert, certSize, &thisEntrySize, &next); - certSize -= next - cert; - cert = next; - - /* save the (wrapped) issuer */ - io->u.item.issuer.data = cert; - nss_ckmk_DERUnwrap(cert, certSize, &thisEntrySize, &next); - io->u.item.issuer.size = next - cert; - certSize -= io->u.item.issuer.size; - cert = next; - - /* skip the OID */ - nss_ckmk_DERUnwrap(cert, certSize, &thisEntrySize, &next); - certSize -= next - cert; - cert = next; - - /* save the (wrapped) subject */ - io->u.item.subject.data = cert; - nss_ckmk_DERUnwrap(cert, certSize, &thisEntrySize, &next); - io->u.item.subject.size = next - cert; - certSize -= io->u.item.subject.size; - cert = next; -} - -static void -ckmk_fetchModulus( - ckmkInternalObject *io) -{ - NSSItem item; - PRInt32 modLen; - CK_RV error; - - /* we can't reliably get the modulus for private keys through CSSM (sigh). - * For NSS this is OK because we really only use this to get the modulus - * length (unless we are trying to get a public key from a private keys, - * something CSSM ALSO does not do!). - */ - error = ckmk_GetDataAttribute(io, kSecKeyKeySizeInBits, &item, - "Key Fetch Modulus"); - if (CKR_OK != error) { - return; - } - - modLen = *(PRInt32 *)item.data; - modLen = modLen / 8; /* convert from bits to bytes */ - - nss_ZFreeIf(item.data); - io->u.item.modulus.data = nss_ZNEWARRAY(NULL, char, modLen); - if (NULL == io->u.item.modulus.data) { - return; - } - *(char *)io->u.item.modulus.data = 0x80; /* fake NSS out or it will - * drop the first byte */ - io->u.item.modulus.size = modLen; - return; -} - -const NSSItem * -ckmk_FetchCertAttribute( - ckmkInternalObject *io, - CK_ATTRIBUTE_TYPE type, - CK_RV *pError) -{ - ckmkItemObject *item = &io->u.item; - *pError = CKR_OK; - switch (type) { - case CKA_CLASS: - return &ckmk_certClassItem; - case CKA_TOKEN: - case CKA_MODIFIABLE: - return &ckmk_trueItem; - case CKA_PRIVATE: - return &ckmk_falseItem; - case CKA_CERTIFICATE_TYPE: - return &ckmk_x509Item; - case CKA_LABEL: - CKMK_HANDLE_OPT_DATA_ITEM(io, kSecLabelItemAttr, label, item, *pError, - "Cert:Label attr") - case CKA_SUBJECT: - /* OK, well apple does provide an subject and issuer attribute, but they - * decided to cannonicalize that value. Probably a good move for them, - * but makes it useless for most users of PKCS #11.. Get the real subject - * from the certificate */ - if (0 == item->derCert.size) { - ckmk_fetchCert(io); - } - return &item->subject; - case CKA_ISSUER: - if (0 == item->derCert.size) { - ckmk_fetchCert(io); - } - return &item->issuer; - case CKA_SERIAL_NUMBER: - CKMK_HANDLE_DATA_ITEM(io, kSecSerialNumberItemAttr, serial, item, *pError, - "Cert:Serial Number attr") - case CKA_VALUE: - if (0 == item->derCert.size) { - ckmk_fetchCert(io); - } - return &item->derCert; - case CKA_ID: - CKMK_HANDLE_OPT_DATA_ITEM(io, kSecPublicKeyHashItemAttr, id, item, *pError, - "Cert:ID attr") - default: - *pError = CKR_ATTRIBUTE_TYPE_INVALID; - break; - } - return NULL; -} - -const NSSItem * -ckmk_FetchPubKeyAttribute( - ckmkInternalObject *io, - CK_ATTRIBUTE_TYPE type, - CK_RV *pError) -{ - ckmkItemObject *item = &io->u.item; - *pError = CKR_OK; - - switch (type) { - case CKA_CLASS: - return &ckmk_pubKeyClassItem; - case CKA_TOKEN: - case CKA_LOCAL: - return &ckmk_trueItem; - case CKA_KEY_TYPE: - return &ckmk_rsaItem; - case CKA_LABEL: - CKMK_HANDLE_OPT_DATA_ITEM(io, kSecKeyPrintName, label, item, *pError, - "PubKey:Label attr") - case CKA_ENCRYPT: - CKMK_HANDLE_BOOL_ITEM(io, kSecKeyEncrypt, encrypt, item, *pError, - "PubKey:Encrypt attr") - case CKA_VERIFY: - CKMK_HANDLE_BOOL_ITEM(io, kSecKeyVerify, verify, item, *pError, - "PubKey:Verify attr") - case CKA_VERIFY_RECOVER: - CKMK_HANDLE_BOOL_ITEM(io, kSecKeyVerifyRecover, verifyRecover, - item, *pError, "PubKey:VerifyRecover attr") - case CKA_PRIVATE: - CKMK_HANDLE_BOOL_ITEM(io, kSecKeyPrivate, private, item, *pError, - "PubKey:Private attr") - case CKA_MODIFIABLE: - CKMK_HANDLE_BOOL_ITEM(io, kSecKeyModifiable, modify, item, *pError, - "PubKey:Modify attr") - case CKA_DERIVE: - CKMK_HANDLE_BOOL_ITEM(io, kSecKeyDerive, derive, item, *pError, - "PubKey:Derive attr") - case CKA_WRAP: - CKMK_HANDLE_BOOL_ITEM(io, kSecKeyWrap, wrap, item, *pError, - "PubKey:Wrap attr") - case CKA_SUBJECT: - CKMK_HANDLE_OPT_DATA_ITEM(io, kSecSubjectItemAttr, subject, item, *pError, - "PubKey:Subect attr") - case CKA_MODULUS: - return &ckmk_emptyItem; - case CKA_PUBLIC_EXPONENT: - return &ckmk_emptyItem; - case CKA_ID: - CKMK_HANDLE_OPT_DATA_ITEM(io, kSecKeyLabel, id, item, *pError, - "PubKey:ID attr") - default: - *pError = CKR_ATTRIBUTE_TYPE_INVALID; - break; - } - return NULL; -} - -const NSSItem * -ckmk_FetchPrivKeyAttribute( - ckmkInternalObject *io, - CK_ATTRIBUTE_TYPE type, - CK_RV *pError) -{ - ckmkItemObject *item = &io->u.item; - *pError = CKR_OK; - - switch (type) { - case CKA_CLASS: - return &ckmk_privKeyClassItem; - case CKA_TOKEN: - case CKA_LOCAL: - return &ckmk_trueItem; - case CKA_SENSITIVE: - case CKA_EXTRACTABLE: /* will probably move in the future */ - case CKA_ALWAYS_SENSITIVE: - case CKA_NEVER_EXTRACTABLE: - return &ckmk_falseItem; - case CKA_KEY_TYPE: - return &ckmk_rsaItem; - case CKA_LABEL: - CKMK_HANDLE_OPT_DATA_ITEM(io, kSecKeyPrintName, label, item, *pError, - "PrivateKey:Label attr") - case CKA_DECRYPT: - CKMK_HANDLE_BOOL_ITEM(io, kSecKeyDecrypt, decrypt, item, *pError, - "PrivateKey:Decrypt attr") - case CKA_SIGN: - CKMK_HANDLE_BOOL_ITEM(io, kSecKeySign, sign, item, *pError, - "PrivateKey:Sign attr") - case CKA_SIGN_RECOVER: - CKMK_HANDLE_BOOL_ITEM(io, kSecKeySignRecover, signRecover, item, *pError, - "PrivateKey:Sign Recover attr") - case CKA_PRIVATE: - CKMK_HANDLE_BOOL_ITEM(io, kSecKeyPrivate, private, item, *pError, - "PrivateKey:Private attr") - case CKA_MODIFIABLE: - CKMK_HANDLE_BOOL_ITEM(io, kSecKeyModifiable, modify, item, *pError, - "PrivateKey:Modify attr") - case CKA_DERIVE: - CKMK_HANDLE_BOOL_ITEM(io, kSecKeyDerive, derive, item, *pError, - "PrivateKey:Derive attr") - case CKA_UNWRAP: - CKMK_HANDLE_BOOL_ITEM(io, kSecKeyUnwrap, unwrap, item, *pError, - "PrivateKey:Unwrap attr") - case CKA_SUBJECT: - CKMK_HANDLE_OPT_DATA_ITEM(io, kSecSubjectItemAttr, subject, item, *pError, - "PrivateKey:Subject attr") - case CKA_MODULUS: - if (0 == item->modulus.size) { - ckmk_fetchModulus(io); - } - return &item->modulus; - case CKA_PUBLIC_EXPONENT: - return &ckmk_emptyItem; -#ifdef notdef - /* the following are sensitive attributes. We could implement them for - * sensitive keys using the key export function, but it's better to - * just support wrap through this token. That will more reliably allow us - * to export any private key that is truly exportable. - */ - case CKA_PRIVATE_EXPONENT: - CKMK_HANDLE_DATA_ITEM(io, kSecPrivateExponentItemAttr, privateExponent, - item, *pError) - case CKA_PRIME_1: - CKMK_HANDLE_DATA_ITEM(io, kSecPrime1ItemAttr, prime1, item, *pError) - case CKA_PRIME_2: - CKMK_HANDLE_DATA_ITEM(io, kSecPrime2ItemAttr, prime2, item, *pError) - case CKA_EXPONENT_1: - CKMK_HANDLE_DATA_ITEM(io, kSecExponent1ItemAttr, exponent1, item, *pError) - case CKA_EXPONENT_2: - CKMK_HANDLE_DATA_ITEM(io, kSecExponent2ItemAttr, exponent2, item, *pError) - case CKA_COEFFICIENT: - CKMK_HANDLE_DATA_ITEM(io, kSecCoefficientItemAttr, coefficient, - item, *pError) -#endif - case CKA_ID: - CKMK_HANDLE_OPT_DATA_ITEM(io, kSecKeyLabel, id, item, *pError, - "PrivateKey:ID attr") - default: - *pError = CKR_ATTRIBUTE_TYPE_INVALID; - return NULL; - } -} - -const NSSItem * -nss_ckmk_FetchAttribute( - ckmkInternalObject *io, - CK_ATTRIBUTE_TYPE type, - CK_RV *pError) -{ - CK_ULONG i; - const NSSItem *value = NULL; - - if (io->type == ckmkRaw) { - for (i = 0; i < io->u.raw.n; i++) { - if (type == io->u.raw.types[i]) { - return &io->u.raw.items[i]; - } - } - *pError = CKR_ATTRIBUTE_TYPE_INVALID; - return NULL; - } - /* deal with the common attributes */ - switch (io->objClass) { - case CKO_CERTIFICATE: - value = ckmk_FetchCertAttribute(io, type, pError); - break; - case CKO_PRIVATE_KEY: - value = ckmk_FetchPrivKeyAttribute(io, type, pError); - break; - case CKO_PUBLIC_KEY: - value = ckmk_FetchPubKeyAttribute(io, type, pError); - break; - default: - *pError = CKR_OBJECT_HANDLE_INVALID; - return NULL; - } - -#ifdef DEBUG - if (CKA_ID == type) { - itemdump("id: ", value->data, value->size, *pError); - } -#endif - return value; -} - -static void -ckmk_removeObjectFromHash( - ckmkInternalObject *io); - -/* - * - * These are the MSObject functions we need to implement - * - * Finalize - unneeded (actually we should clean up the hashtables) - * Destroy - * IsTokenObject - CK_TRUE - * GetAttributeCount - * GetAttributeTypes - * GetAttributeSize - * GetAttribute - * SetAttribute - * GetObjectSize - */ - -static CK_RV -ckmk_mdObject_Destroy( - NSSCKMDObject *mdObject, - NSSCKFWObject *fwObject, - NSSCKMDSession *mdSession, - NSSCKFWSession *fwSession, - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance) -{ - ckmkInternalObject *io = (ckmkInternalObject *)mdObject->etc; - OSStatus macErr; - - if (ckmkRaw == io->type) { - /* there is not 'object write protected' error, use the next best thing */ - return CKR_TOKEN_WRITE_PROTECTED; - } - - /* This API is done well. The following 4 lines are the complete apple - * specific part of this implementation */ - macErr = SecKeychainItemDelete(io->u.item.itemRef); - if (noErr != macErr) { - CKMK_MACERR("Delete object", macErr); - } - - /* remove it from the hash */ - ckmk_removeObjectFromHash(io); - - /* free the puppy.. */ - nss_ckmk_DestroyInternalObject(io); - - return CKR_OK; -} - -static CK_BBOOL -ckmk_mdObject_IsTokenObject( - NSSCKMDObject *mdObject, - NSSCKFWObject *fwObject, - NSSCKMDSession *mdSession, - NSSCKFWSession *fwSession, - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance) -{ - return CK_TRUE; -} - -static CK_ULONG -ckmk_mdObject_GetAttributeCount( - NSSCKMDObject *mdObject, - NSSCKFWObject *fwObject, - NSSCKMDSession *mdSession, - NSSCKFWSession *fwSession, - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - CK_RV *pError) -{ - ckmkInternalObject *io = (ckmkInternalObject *)mdObject->etc; - - if (ckmkRaw == io->type) { - return io->u.raw.n; - } - switch (io->objClass) { - case CKO_CERTIFICATE: - return certAttrsCount; - case CKO_PUBLIC_KEY: - return pubKeyAttrsCount; - case CKO_PRIVATE_KEY: - return privKeyAttrsCount; - default: - break; - } - return 0; -} - -static CK_RV -ckmk_mdObject_GetAttributeTypes( - NSSCKMDObject *mdObject, - NSSCKFWObject *fwObject, - NSSCKMDSession *mdSession, - NSSCKFWSession *fwSession, - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - CK_ATTRIBUTE_TYPE_PTR typeArray, - CK_ULONG ulCount) -{ - ckmkInternalObject *io = (ckmkInternalObject *)mdObject->etc; - CK_ULONG i; - CK_RV error = CKR_OK; - const CK_ATTRIBUTE_TYPE *attrs = NULL; - CK_ULONG size = ckmk_mdObject_GetAttributeCount( - mdObject, fwObject, mdSession, fwSession, - mdToken, fwToken, mdInstance, fwInstance, &error); - - if (size != ulCount) { - return CKR_BUFFER_TOO_SMALL; - } - if (io->type == ckmkRaw) { - attrs = io->u.raw.types; - } else - switch (io->objClass) { - case CKO_CERTIFICATE: - attrs = - certAttrs; - break; - case CKO_PUBLIC_KEY: - attrs = - pubKeyAttrs; - break; - case CKO_PRIVATE_KEY: - attrs = - privKeyAttrs; - break; - default: - return CKR_OK; - } - - for (i = 0; i < size; i++) { - typeArray[i] = attrs[i]; - } - - return CKR_OK; -} - -static CK_ULONG -ckmk_mdObject_GetAttributeSize( - NSSCKMDObject *mdObject, - NSSCKFWObject *fwObject, - NSSCKMDSession *mdSession, - NSSCKFWSession *fwSession, - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - CK_ATTRIBUTE_TYPE attribute, - CK_RV *pError) -{ - ckmkInternalObject *io = (ckmkInternalObject *)mdObject->etc; - - const NSSItem *b; - - b = nss_ckmk_FetchAttribute(io, attribute, pError); - - if ((const NSSItem *)NULL == b) { - return 0; - } - return b->size; -} - -static CK_RV -ckmk_mdObject_SetAttribute( - NSSCKMDObject *mdObject, - NSSCKFWObject *fwObject, - NSSCKMDSession *mdSession, - NSSCKFWSession *fwSession, - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - CK_ATTRIBUTE_TYPE attribute, - NSSItem *value) -{ - ckmkInternalObject *io = (ckmkInternalObject *)mdObject->etc; - SecKeychainItemRef itemRef; - - if (io->type == ckmkRaw) { - return CKR_TOKEN_WRITE_PROTECTED; - } - itemRef = io->u.item.itemRef; - - switch (io->objClass) { - case CKO_PRIVATE_KEY: - case CKO_PUBLIC_KEY: - switch (attribute) { - case CKA_ID: - ckmk_updateAttribute(itemRef, kSecKeyLabel, - value->data, value->size, "Set Attr Key ID"); -#ifdef DEBUG - itemdump("key id: ", value->data, value->size, CKR_OK); -#endif - break; - case CKA_LABEL: - ckmk_updateAttribute(itemRef, kSecKeyPrintName, value->data, - value->size, "Set Attr Key Label"); - break; - default: - break; - } - break; - - case CKO_CERTIFICATE: - switch (attribute) { - case CKA_ID: - ckmk_updateAttribute(itemRef, kSecPublicKeyHashItemAttr, - value->data, value->size, "Set Attr Cert ID"); - break; - case CKA_LABEL: - ckmk_updateAttribute(itemRef, kSecLabelItemAttr, value->data, - value->size, "Set Attr Cert Label"); - break; - default: - break; - } - break; - - default: - break; - } - return CKR_OK; -} - -static NSSCKFWItem -ckmk_mdObject_GetAttribute( - NSSCKMDObject *mdObject, - NSSCKFWObject *fwObject, - NSSCKMDSession *mdSession, - NSSCKFWSession *fwSession, - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - CK_ATTRIBUTE_TYPE attribute, - CK_RV *pError) -{ - NSSCKFWItem mdItem; - ckmkInternalObject *io = (ckmkInternalObject *)mdObject->etc; - - mdItem.needsFreeing = PR_FALSE; - mdItem.item = (NSSItem *)nss_ckmk_FetchAttribute(io, attribute, pError); - - return mdItem; -} - -static CK_ULONG -ckmk_mdObject_GetObjectSize( - NSSCKMDObject *mdObject, - NSSCKFWObject *fwObject, - NSSCKMDSession *mdSession, - NSSCKFWSession *fwSession, - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - CK_RV *pError) -{ - CK_ULONG rv = 1; - - /* size is irrelevant to this token */ - return rv; -} - -static const NSSCKMDObject - ckmk_prototype_mdObject = { - (void *)NULL, /* etc */ - NULL, /* Finalize */ - ckmk_mdObject_Destroy, - ckmk_mdObject_IsTokenObject, - ckmk_mdObject_GetAttributeCount, - ckmk_mdObject_GetAttributeTypes, - ckmk_mdObject_GetAttributeSize, - ckmk_mdObject_GetAttribute, - NULL, /* FreeAttribute */ - ckmk_mdObject_SetAttribute, - ckmk_mdObject_GetObjectSize, - (void *)NULL /* null terminator */ - }; - -static nssHash *ckmkInternalObjectHash = NULL; - -NSS_IMPLEMENT NSSCKMDObject * -nss_ckmk_CreateMDObject( - NSSArena *arena, - ckmkInternalObject *io, - CK_RV *pError) -{ - if ((nssHash *)NULL == ckmkInternalObjectHash) { - ckmkInternalObjectHash = nssHash_CreateItem(NULL, 10); - } - if (ckmkItem == io->type) { - /* the hash key, not a cryptographic key */ - NSSItem *key = &io->hashKey; - ckmkInternalObject *old_o = NULL; - - if (key->size == 0) { - ckmk_FetchHashKey(io); - } - old_o = (ckmkInternalObject *) - nssHash_Lookup(ckmkInternalObjectHash, key); - if (!old_o) { - nssHash_Add(ckmkInternalObjectHash, key, io); - } else if (old_o != io) { - nss_ckmk_DestroyInternalObject(io); - io = old_o; - } - } - - if ((void *)NULL == io->mdObject.etc) { - (void)nsslibc_memcpy(&io->mdObject, &ckmk_prototype_mdObject, - sizeof(ckmk_prototype_mdObject)); - io->mdObject.etc = (void *)io; - } - return &io->mdObject; -} - -static void -ckmk_removeObjectFromHash( - ckmkInternalObject *io) -{ - NSSItem *key = &io->hashKey; - - if ((nssHash *)NULL == ckmkInternalObjectHash) { - return; - } - if (key->size == 0) { - ckmk_FetchHashKey(io); - } - nssHash_Remove(ckmkInternalObjectHash, key); - return; -} - -void -nss_ckmk_DestroyInternalObject( - ckmkInternalObject *io) -{ - switch (io->type) { - case ckmkRaw: - return; - case ckmkItem: - nss_ZFreeIf(io->u.item.modify.data); - nss_ZFreeIf(io->u.item.private.data); - nss_ZFreeIf(io->u.item.encrypt.data); - nss_ZFreeIf(io->u.item.decrypt.data); - nss_ZFreeIf(io->u.item.derive.data); - nss_ZFreeIf(io->u.item.sign.data); - nss_ZFreeIf(io->u.item.signRecover.data); - nss_ZFreeIf(io->u.item.verify.data); - nss_ZFreeIf(io->u.item.verifyRecover.data); - nss_ZFreeIf(io->u.item.wrap.data); - nss_ZFreeIf(io->u.item.unwrap.data); - nss_ZFreeIf(io->u.item.label.data); - /*nss_ZFreeIf(io->u.item.subject.data); */ - /*nss_ZFreeIf(io->u.item.issuer.data); */ - nss_ZFreeIf(io->u.item.serial.data); - nss_ZFreeIf(io->u.item.modulus.data); - nss_ZFreeIf(io->u.item.exponent.data); - nss_ZFreeIf(io->u.item.privateExponent.data); - nss_ZFreeIf(io->u.item.prime1.data); - nss_ZFreeIf(io->u.item.prime2.data); - nss_ZFreeIf(io->u.item.exponent1.data); - nss_ZFreeIf(io->u.item.exponent2.data); - nss_ZFreeIf(io->u.item.coefficient.data); - break; - } - nss_ZFreeIf(io); - return; -} - -static ckmkInternalObject * -nss_ckmk_NewInternalObject( - CK_OBJECT_CLASS objClass, - SecKeychainItemRef itemRef, - SecItemClass itemClass, - CK_RV *pError) -{ - ckmkInternalObject *io = nss_ZNEW(NULL, ckmkInternalObject); - - if ((ckmkInternalObject *)NULL == io) { - *pError = CKR_HOST_MEMORY; - return io; - } - io->type = ckmkItem; - io->objClass = objClass; - io->u.item.itemRef = itemRef; - io->u.item.itemClass = itemClass; - return io; -} - -/* - * Apple doesn't alway have a default keyChain set by the OS, use the - * SearchList to try to find one. - */ -static CK_RV -ckmk_GetSafeDefaultKeychain( - SecKeychainRef *keychainRef) -{ - OSStatus macErr; - CFArrayRef searchList = 0; - CK_RV error = CKR_OK; - - macErr = SecKeychainCopyDefault(keychainRef); - if (noErr != macErr) { - int searchCount = 0; - if (errSecNoDefaultKeychain != macErr) { - CKMK_MACERR("Getting default key chain", macErr); - error = CKR_GENERAL_ERROR; - goto loser; - } - /* ok, we don't have a default key chain, find one */ - macErr = SecKeychainCopySearchList(&searchList); - if (noErr != macErr) { - CKMK_MACERR("failed to find a keyring searchList", macErr); - error = CKR_DEVICE_REMOVED; - goto loser; - } - searchCount = CFArrayGetCount(searchList); - if (searchCount < 1) { - error = CKR_DEVICE_REMOVED; - goto loser; - } - *keychainRef = - (SecKeychainRef)CFRetain(CFArrayGetValueAtIndex(searchList, 0)); - if (0 == *keychainRef) { - error = CKR_DEVICE_REMOVED; - goto loser; - } - /* should we set it as default? */ - } -loser: - if (0 != searchList) { - CFRelease(searchList); - } - return error; -} -static ckmkInternalObject * -nss_ckmk_CreateCertificate( - NSSCKFWSession *fwSession, - CK_ATTRIBUTE_PTR pTemplate, - CK_ULONG ulAttributeCount, - CK_RV *pError) -{ - NSSItem value; - ckmkInternalObject *io = NULL; - OSStatus macErr; - SecCertificateRef certRef; - SecKeychainItemRef itemRef; - SecKeychainRef keychainRef; - CSSM_DATA certData; - - *pError = nss_ckmk_GetAttribute(CKA_VALUE, pTemplate, - ulAttributeCount, &value); - if (CKR_OK != *pError) { - goto loser; - } - - certData.Data = value.data; - certData.Length = value.size; - macErr = SecCertificateCreateFromData(&certData, CSSM_CERT_X_509v3, - CSSM_CERT_ENCODING_BER, &certRef); - if (noErr != macErr) { - CKMK_MACERR("Create cert from data Failed", macErr); - *pError = CKR_GENERAL_ERROR; /* need to map macErr */ - goto loser; - } - - *pError = ckmk_GetSafeDefaultKeychain(&keychainRef); - if (CKR_OK != *pError) { - goto loser; - } - - macErr = SecCertificateAddToKeychain(certRef, keychainRef); - itemRef = (SecKeychainItemRef)certRef; - if (errSecDuplicateItem != macErr) { - NSSItem keyID = { NULL, 0 }; - char *nickname = NULL; - CK_RV dummy; - - if (noErr != macErr) { - CKMK_MACERR("Add cert to keychain Failed", macErr); - *pError = CKR_GENERAL_ERROR; /* need to map macErr */ - goto loser; - } - /* these two are optional */ - nickname = nss_ckmk_GetStringAttribute(CKA_LABEL, pTemplate, - ulAttributeCount, &dummy); - /* we've added a new one, update the attributes in the key ring */ - if (nickname) { - ckmk_updateAttribute(itemRef, kSecLabelItemAttr, nickname, - strlen(nickname) + 1, "Modify Cert Label"); - nss_ZFreeIf(nickname); - } - dummy = nss_ckmk_GetAttribute(CKA_ID, pTemplate, - ulAttributeCount, &keyID); - if (CKR_OK == dummy) { - dummy = ckmk_updateAttribute(itemRef, kSecPublicKeyHashItemAttr, - keyID.data, keyID.size, "Modify Cert ID"); - } - } - - io = nss_ckmk_NewInternalObject(CKO_CERTIFICATE, itemRef, - kSecCertificateItemClass, pError); - if ((ckmkInternalObject *)NULL != io) { - itemRef = 0; - } - -loser: - if (0 != itemRef) { - CFRelease(itemRef); - } - if (0 != keychainRef) { - CFRelease(keychainRef); - } - - return io; -} - -/* - * PKCS #8 attributes - */ -struct ckmk_AttributeStr { - SECItem attrType; - SECItem *attrValue; -}; -typedef struct ckmk_AttributeStr ckmk_Attribute; - -/* - ** A PKCS#8 private key info object - */ -struct PrivateKeyInfoStr { - PLArenaPool *arena; - SECItem version; - SECAlgorithmID algorithm; - SECItem privateKey; - ckmk_Attribute **attributes; -}; -typedef struct PrivateKeyInfoStr PrivateKeyInfo; - -const SEC_ASN1Template ckmk_RSAPrivateKeyTemplate[] = { - { SEC_ASN1_SEQUENCE, 0, NULL, sizeof(RSAPrivateKey) }, - { SEC_ASN1_INTEGER, offsetof(RSAPrivateKey, version) }, - { SEC_ASN1_INTEGER, offsetof(RSAPrivateKey, modulus) }, - { SEC_ASN1_INTEGER, offsetof(RSAPrivateKey, publicExponent) }, - { SEC_ASN1_INTEGER, offsetof(RSAPrivateKey, privateExponent) }, - { SEC_ASN1_INTEGER, offsetof(RSAPrivateKey, prime1) }, - { SEC_ASN1_INTEGER, offsetof(RSAPrivateKey, prime2) }, - { SEC_ASN1_INTEGER, offsetof(RSAPrivateKey, exponent1) }, - { SEC_ASN1_INTEGER, offsetof(RSAPrivateKey, exponent2) }, - { SEC_ASN1_INTEGER, offsetof(RSAPrivateKey, coefficient) }, - { 0 } -}; - -const SEC_ASN1Template ckmk_AttributeTemplate[] = { - { SEC_ASN1_SEQUENCE, 0, NULL, sizeof(ckmk_Attribute) }, - { SEC_ASN1_OBJECT_ID, offsetof(ckmk_Attribute, attrType) }, - { SEC_ASN1_SET_OF, offsetof(ckmk_Attribute, attrValue), - SEC_AnyTemplate }, - { 0 } -}; - -const SEC_ASN1Template ckmk_SetOfAttributeTemplate[] = { - { SEC_ASN1_SET_OF, 0, ckmk_AttributeTemplate }, -}; - -SEC_ASN1_MKSUB(SECOID_AlgorithmIDTemplate) - -/* ASN1 Templates for new decoder/encoder */ -const SEC_ASN1Template ckmk_PrivateKeyInfoTemplate[] = { - { SEC_ASN1_SEQUENCE, 0, NULL, sizeof(PrivateKeyInfo) }, - { SEC_ASN1_INTEGER, offsetof(PrivateKeyInfo, version) }, - { SEC_ASN1_INLINE | SEC_ASN1_XTRN, offsetof(PrivateKeyInfo, algorithm), - SEC_ASN1_SUB(SECOID_AlgorithmIDTemplate) }, - { SEC_ASN1_OCTET_STRING, offsetof(PrivateKeyInfo, privateKey) }, - { SEC_ASN1_OPTIONAL | SEC_ASN1_CONSTRUCTED | SEC_ASN1_CONTEXT_SPECIFIC | 0, - offsetof(PrivateKeyInfo, attributes), ckmk_SetOfAttributeTemplate }, - { 0 } -}; - -#define CKMK_PRIVATE_KEY_INFO_VERSION 0 -static CK_RV -ckmk_CreateRSAKeyBlob( - RSAPrivateKey *lk, - NSSItem *keyBlob) -{ - PrivateKeyInfo *pki = NULL; - PLArenaPool *arena = NULL; - SECOidTag algorithm = SEC_OID_UNKNOWN; - void *dummy; - SECStatus rv; - SECItem *encodedKey = NULL; - CK_RV error = CKR_OK; - - arena = PORT_NewArena(2048); /* XXX different size? */ - if (!arena) { - error = CKR_HOST_MEMORY; - goto loser; - } - - pki = (PrivateKeyInfo *)PORT_ArenaZAlloc(arena, sizeof(PrivateKeyInfo)); - if (!pki) { - error = CKR_HOST_MEMORY; - goto loser; - } - pki->arena = arena; - - dummy = SEC_ASN1EncodeItem(arena, &pki->privateKey, lk, - ckmk_RSAPrivateKeyTemplate); - algorithm = SEC_OID_PKCS1_RSA_ENCRYPTION; - - if (!dummy) { - error = CKR_DEVICE_ERROR; /* should map NSS SECError */ - goto loser; - } - - rv = SECOID_SetAlgorithmID(arena, &pki->algorithm, algorithm, - (SECItem *)NULL); - if (rv != SECSuccess) { - error = CKR_DEVICE_ERROR; /* should map NSS SECError */ - goto loser; - } - - dummy = SEC_ASN1EncodeInteger(arena, &pki->version, - CKMK_PRIVATE_KEY_INFO_VERSION); - if (!dummy) { - error = CKR_DEVICE_ERROR; /* should map NSS SECError */ - goto loser; - } - - encodedKey = SEC_ASN1EncodeItem(NULL, NULL, pki, - ckmk_PrivateKeyInfoTemplate); - if (!encodedKey) { - error = CKR_DEVICE_ERROR; - goto loser; - } - - keyBlob->data = nss_ZNEWARRAY(NULL, char, encodedKey->len); - if (NULL == keyBlob->data) { - error = CKR_HOST_MEMORY; - goto loser; - } - nsslibc_memcpy(keyBlob->data, encodedKey->data, encodedKey->len); - keyBlob->size = encodedKey->len; - -loser: - if (arena) { - PORT_FreeArena(arena, PR_TRUE); - } - if (encodedKey) { - SECITEM_FreeItem(encodedKey, PR_TRUE); - } - - return error; -} -/* - * There MUST be a better way to do this. For now, find the key based on the - * default name Apple gives it once we import. - */ -#define IMPORTED_NAME "Imported Private Key" -static CK_RV -ckmk_FindImportedKey( - SecKeychainRef keychainRef, - SecItemClass itemClass, - SecKeychainItemRef *outItemRef) -{ - OSStatus macErr; - SecKeychainSearchRef searchRef = 0; - SecKeychainItemRef newItemRef; - - macErr = SecKeychainSearchCreateFromAttributes(keychainRef, itemClass, - NULL, &searchRef); - if (noErr != macErr) { - CKMK_MACERR("Can't search for Key", macErr); - return CKR_GENERAL_ERROR; - } - while (noErr == SecKeychainSearchCopyNext(searchRef, &newItemRef)) { - SecKeychainAttributeList *attrList = NULL; - SecKeychainAttributeInfo attrInfo; - SecItemAttr itemAttr = kSecKeyPrintName; - PRUint32 attrFormat = 0; - OSStatus macErr; - - attrInfo.count = 1; - attrInfo.tag = &itemAttr; - attrInfo.format = &attrFormat; - - macErr = SecKeychainItemCopyAttributesAndData(newItemRef, - &attrInfo, NULL, &attrList, NULL, NULL); - if (noErr == macErr) { - if (nsslibc_memcmp(attrList->attr->data, IMPORTED_NAME, - attrList->attr->length, NULL) == 0) { - *outItemRef = newItemRef; - CFRelease(searchRef); - SecKeychainItemFreeAttributesAndData(attrList, NULL); - return CKR_OK; - } - SecKeychainItemFreeAttributesAndData(attrList, NULL); - } - CFRelease(newItemRef); - } - CFRelease(searchRef); - return CKR_GENERAL_ERROR; /* we can come up with something better! */ -} - -static ckmkInternalObject * -nss_ckmk_CreatePrivateKey( - NSSCKFWSession *fwSession, - CK_ATTRIBUTE_PTR pTemplate, - CK_ULONG ulAttributeCount, - CK_RV *pError) -{ - NSSItem attribute; - RSAPrivateKey lk; - NSSItem keyID; - char *nickname = NULL; - ckmkInternalObject *io = NULL; - CK_KEY_TYPE keyType; - OSStatus macErr; - SecKeychainItemRef itemRef = 0; - NSSItem keyBlob = { NULL, 0 }; - CFDataRef dataRef = 0; - SecExternalFormat inputFormat = kSecFormatBSAFE; - /*SecExternalFormat inputFormat = kSecFormatOpenSSL; */ - SecExternalItemType itemType = kSecItemTypePrivateKey; - SecKeyImportExportParameters keyParams; - SecKeychainRef targetKeychain = 0; - unsigned char zero = 0; - CK_RV error; - - keyParams.version = SEC_KEY_IMPORT_EXPORT_PARAMS_VERSION; - keyParams.flags = 0; - keyParams.passphrase = 0; - keyParams.alertTitle = 0; - keyParams.alertPrompt = 0; - keyParams.accessRef = 0; /* default */ - keyParams.keyUsage = 0; /* will get filled in */ - keyParams.keyAttributes = CSSM_KEYATTR_PERMANENT; /* will get filled in */ - keyType = nss_ckmk_GetULongAttribute(CKA_KEY_TYPE, pTemplate, ulAttributeCount, pError); - if (CKR_OK != *pError) { - return (ckmkInternalObject *)NULL; - } - if (CKK_RSA != keyType) { - *pError = CKR_ATTRIBUTE_VALUE_INVALID; - return (ckmkInternalObject *)NULL; - } - if (nss_ckmk_GetBoolAttribute(CKA_DECRYPT, - pTemplate, ulAttributeCount, CK_TRUE)) { - keyParams.keyUsage |= CSSM_KEYUSE_DECRYPT; - } - if (nss_ckmk_GetBoolAttribute(CKA_UNWRAP, - pTemplate, ulAttributeCount, CK_TRUE)) { - keyParams.keyUsage |= CSSM_KEYUSE_UNWRAP; - } - if (nss_ckmk_GetBoolAttribute(CKA_SIGN, - pTemplate, ulAttributeCount, CK_TRUE)) { - keyParams.keyUsage |= CSSM_KEYUSE_SIGN; - } - if (nss_ckmk_GetBoolAttribute(CKA_DERIVE, - pTemplate, ulAttributeCount, CK_FALSE)) { - keyParams.keyUsage |= CSSM_KEYUSE_DERIVE; - } - if (nss_ckmk_GetBoolAttribute(CKA_SENSITIVE, - pTemplate, ulAttributeCount, CK_TRUE)) { - keyParams.keyAttributes |= CSSM_KEYATTR_SENSITIVE; - } - if (nss_ckmk_GetBoolAttribute(CKA_EXTRACTABLE, - pTemplate, ulAttributeCount, CK_TRUE)) { - keyParams.keyAttributes |= CSSM_KEYATTR_EXTRACTABLE; - } - - lk.version.type = siUnsignedInteger; - lk.version.data = &zero; - lk.version.len = 1; - - *pError = nss_ckmk_GetAttribute(CKA_MODULUS, pTemplate, - ulAttributeCount, &attribute); - if (CKR_OK != *pError) { - return (ckmkInternalObject *)NULL; - } - lk.modulus.type = siUnsignedInteger; - lk.modulus.data = attribute.data; - lk.modulus.len = attribute.size; - - *pError = nss_ckmk_GetAttribute(CKA_PUBLIC_EXPONENT, pTemplate, - ulAttributeCount, &attribute); - if (CKR_OK != *pError) { - return (ckmkInternalObject *)NULL; - } - lk.publicExponent.type = siUnsignedInteger; - lk.publicExponent.data = attribute.data; - lk.publicExponent.len = attribute.size; - - *pError = nss_ckmk_GetAttribute(CKA_PRIVATE_EXPONENT, pTemplate, - ulAttributeCount, &attribute); - if (CKR_OK != *pError) { - return (ckmkInternalObject *)NULL; - } - lk.privateExponent.type = siUnsignedInteger; - lk.privateExponent.data = attribute.data; - lk.privateExponent.len = attribute.size; - - *pError = nss_ckmk_GetAttribute(CKA_PRIME_1, pTemplate, - ulAttributeCount, &attribute); - if (CKR_OK != *pError) { - return (ckmkInternalObject *)NULL; - } - lk.prime1.type = siUnsignedInteger; - lk.prime1.data = attribute.data; - lk.prime1.len = attribute.size; - - *pError = nss_ckmk_GetAttribute(CKA_PRIME_2, pTemplate, - ulAttributeCount, &attribute); - if (CKR_OK != *pError) { - return (ckmkInternalObject *)NULL; - } - lk.prime2.type = siUnsignedInteger; - lk.prime2.data = attribute.data; - lk.prime2.len = attribute.size; - - *pError = nss_ckmk_GetAttribute(CKA_EXPONENT_1, pTemplate, - ulAttributeCount, &attribute); - if (CKR_OK != *pError) { - return (ckmkInternalObject *)NULL; - } - lk.exponent1.type = siUnsignedInteger; - lk.exponent1.data = attribute.data; - lk.exponent1.len = attribute.size; - - *pError = nss_ckmk_GetAttribute(CKA_EXPONENT_2, pTemplate, - ulAttributeCount, &attribute); - if (CKR_OK != *pError) { - return (ckmkInternalObject *)NULL; - } - lk.exponent2.type = siUnsignedInteger; - lk.exponent2.data = attribute.data; - lk.exponent2.len = attribute.size; - - *pError = nss_ckmk_GetAttribute(CKA_COEFFICIENT, pTemplate, - ulAttributeCount, &attribute); - if (CKR_OK != *pError) { - return (ckmkInternalObject *)NULL; - } - lk.coefficient.type = siUnsignedInteger; - lk.coefficient.data = attribute.data; - lk.coefficient.len = attribute.size; - - /* ASN1 Encode the pkcs8 structure... look at softoken to see how this - * is done... */ - error = ckmk_CreateRSAKeyBlob(&lk, &keyBlob); - if (CKR_OK != error) { - goto loser; - } - - dataRef = CFDataCreate(NULL, (UInt8 *)keyBlob.data, keyBlob.size); - if (0 == dataRef) { - *pError = CKR_HOST_MEMORY; - goto loser; - } - - *pError == ckmk_GetSafeDefaultKeychain(&targetKeychain); - if (CKR_OK != *pError) { - goto loser; - } - - /* the itemArray that is returned is useless. the item does not - * is 'not on the key chain' so none of the modify calls work on it. - * It also has a key that isn't the same key as the one in the actual - * key chain. In short it isn't the item we want, and it gives us zero - * information about the item we want, so don't even bother with it... - */ - macErr = SecKeychainItemImport(dataRef, NULL, &inputFormat, &itemType, 0, - &keyParams, targetKeychain, NULL); - if (noErr != macErr) { - CKMK_MACERR("Import Private Key", macErr); - *pError = CKR_GENERAL_ERROR; - goto loser; - } - - *pError = ckmk_FindImportedKey(targetKeychain, - CSSM_DL_DB_RECORD_PRIVATE_KEY, - &itemRef); - if (CKR_OK != *pError) { -#ifdef DEBUG - fprintf(stderr, "couldn't find key in keychain \n"); -#endif - goto loser; - } - - /* set the CKA_ID and the CKA_LABEL */ - error = nss_ckmk_GetAttribute(CKA_ID, pTemplate, - ulAttributeCount, &keyID); - if (CKR_OK == error) { - error = ckmk_updateAttribute(itemRef, kSecKeyLabel, - keyID.data, keyID.size, "Modify Key ID"); -#ifdef DEBUG - itemdump("key id: ", keyID.data, keyID.size, error); -#endif - } - nickname = nss_ckmk_GetStringAttribute(CKA_LABEL, pTemplate, - ulAttributeCount, &error); - if (nickname) { - ckmk_updateAttribute(itemRef, kSecKeyPrintName, nickname, - strlen(nickname) + 1, "Modify Key Label"); - } else { -#define DEFAULT_NICKNAME "NSS Imported Key" - ckmk_updateAttribute(itemRef, kSecKeyPrintName, DEFAULT_NICKNAME, - sizeof(DEFAULT_NICKNAME), "Modify Key Label"); - } - - io = nss_ckmk_NewInternalObject(CKO_PRIVATE_KEY, itemRef, - CSSM_DL_DB_RECORD_PRIVATE_KEY, pError); - if ((ckmkInternalObject *)NULL == io) { - CFRelease(itemRef); - } - - return io; - -loser: - /* free the key blob */ - if (keyBlob.data) { - nss_ZFreeIf(keyBlob.data); - } - if (0 != targetKeychain) { - CFRelease(targetKeychain); - } - if (0 != dataRef) { - CFRelease(dataRef); - } - return io; -} - -NSS_EXTERN NSSCKMDObject * -nss_ckmk_CreateObject( - NSSCKFWSession *fwSession, - CK_ATTRIBUTE_PTR pTemplate, - CK_ULONG ulAttributeCount, - CK_RV *pError) -{ - CK_OBJECT_CLASS objClass; - ckmkInternalObject *io = NULL; - CK_BBOOL isToken; - - /* - * only create token objects - */ - isToken = nss_ckmk_GetBoolAttribute(CKA_TOKEN, pTemplate, - ulAttributeCount, CK_FALSE); - if (!isToken) { - *pError = CKR_ATTRIBUTE_VALUE_INVALID; - return (NSSCKMDObject *)NULL; - } - - /* - * only create keys and certs. - */ - objClass = nss_ckmk_GetULongAttribute(CKA_CLASS, pTemplate, - ulAttributeCount, pError); - if (CKR_OK != *pError) { - return (NSSCKMDObject *)NULL; - } -#ifdef notdef - if (objClass == CKO_PUBLIC_KEY) { - return CKR_OK; /* fake public key creation, happens as a side effect of - * private key creation */ - } -#endif - if (objClass == CKO_CERTIFICATE) { - io = nss_ckmk_CreateCertificate(fwSession, pTemplate, - ulAttributeCount, pError); - } else if (objClass == CKO_PRIVATE_KEY) { - io = nss_ckmk_CreatePrivateKey(fwSession, pTemplate, - ulAttributeCount, pError); - } else { - *pError = CKR_ATTRIBUTE_VALUE_INVALID; - } - - if ((ckmkInternalObject *)NULL == io) { - return (NSSCKMDObject *)NULL; - } - return nss_ckmk_CreateMDObject(NULL, io, pError); -} diff --git a/security/nss/lib/ckfw/nssmkey/mrsa.c b/security/nss/lib/ckfw/nssmkey/mrsa.c deleted file mode 100644 index 00175b47a..000000000 --- a/security/nss/lib/ckfw/nssmkey/mrsa.c +++ /dev/null @@ -1,479 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "ckmk.h" - -/* Sigh, For all the talk about 'ease of use', apple has hidden the interfaces - * needed to be able to truly use CSSM. These came from their modification - * to NSS's S/MIME code. The following two functions currently are not - * part of the SecKey.h interface. - */ -OSStatus -SecKeyGetCredentials( - SecKeyRef keyRef, - CSSM_ACL_AUTHORIZATION_TAG authTag, - int type, - const CSSM_ACCESS_CREDENTIALS **creds); - -/* this function could be implemented using 'SecKeychainItemCopyKeychain' and - * 'SecKeychainGetCSPHandle' */ -OSStatus -SecKeyGetCSPHandle( - SecKeyRef keyRef, - CSSM_CSP_HANDLE *cspHandle); - -typedef struct ckmkInternalCryptoOperationRSAPrivStr - ckmkInternalCryptoOperationRSAPriv; -struct ckmkInternalCryptoOperationRSAPrivStr { - NSSCKMDCryptoOperation mdOperation; - NSSCKMDMechanism *mdMechanism; - ckmkInternalObject *iKey; - NSSItem *buffer; - CSSM_CC_HANDLE cssmContext; -}; - -typedef enum { - CKMK_DECRYPT, - CKMK_SIGN -} ckmkRSAOpType; - -/* - * ckmk_mdCryptoOperationRSAPriv_Create - */ -static NSSCKMDCryptoOperation * -ckmk_mdCryptoOperationRSAPriv_Create( - const NSSCKMDCryptoOperation *proto, - NSSCKMDMechanism *mdMechanism, - NSSCKMDObject *mdKey, - ckmkRSAOpType type, - CK_RV *pError) -{ - ckmkInternalObject *iKey = (ckmkInternalObject *)mdKey->etc; - const NSSItem *classItem = nss_ckmk_FetchAttribute(iKey, CKA_CLASS, pError); - const NSSItem *keyType = nss_ckmk_FetchAttribute(iKey, CKA_KEY_TYPE, pError); - ckmkInternalCryptoOperationRSAPriv *iOperation; - SecKeyRef privateKey; - OSStatus macErr; - CSSM_RETURN cssmErr; - const CSSM_KEY *cssmKey; - CSSM_CSP_HANDLE cspHandle; - const CSSM_ACCESS_CREDENTIALS *creds = NULL; - CSSM_CC_HANDLE cssmContext; - CSSM_ACL_AUTHORIZATION_TAG authType; - - /* make sure we have the right objects */ - if (((const NSSItem *)NULL == classItem) || - (sizeof(CK_OBJECT_CLASS) != classItem->size) || - (CKO_PRIVATE_KEY != *(CK_OBJECT_CLASS *)classItem->data) || - ((const NSSItem *)NULL == keyType) || - (sizeof(CK_KEY_TYPE) != keyType->size) || - (CKK_RSA != *(CK_KEY_TYPE *)keyType->data)) { - *pError = CKR_KEY_TYPE_INCONSISTENT; - return (NSSCKMDCryptoOperation *)NULL; - } - - privateKey = (SecKeyRef)iKey->u.item.itemRef; - macErr = SecKeyGetCSSMKey(privateKey, &cssmKey); - if (noErr != macErr) { - CKMK_MACERR("Getting CSSM Key", macErr); - *pError = CKR_KEY_HANDLE_INVALID; - return (NSSCKMDCryptoOperation *)NULL; - } - macErr = SecKeyGetCSPHandle(privateKey, &cspHandle); - if (noErr != macErr) { - CKMK_MACERR("Getting CSP for Key", macErr); - *pError = CKR_KEY_HANDLE_INVALID; - return (NSSCKMDCryptoOperation *)NULL; - } - switch (type) { - case CKMK_DECRYPT: - authType = CSSM_ACL_AUTHORIZATION_DECRYPT; - break; - case CKMK_SIGN: - authType = CSSM_ACL_AUTHORIZATION_SIGN; - break; - default: - *pError = CKR_GENERAL_ERROR; -#ifdef DEBUG - fprintf(stderr, "RSAPriv_Create: bad type = %d\n", type); -#endif - return (NSSCKMDCryptoOperation *)NULL; - } - - macErr = SecKeyGetCredentials(privateKey, authType, 0, &creds); - if (noErr != macErr) { - CKMK_MACERR("Getting Credentials for Key", macErr); - *pError = CKR_KEY_HANDLE_INVALID; - return (NSSCKMDCryptoOperation *)NULL; - } - - switch (type) { - case CKMK_DECRYPT: - cssmErr = CSSM_CSP_CreateAsymmetricContext(cspHandle, CSSM_ALGID_RSA, - creds, cssmKey, CSSM_PADDING_PKCS1, &cssmContext); - break; - case CKMK_SIGN: - cssmErr = CSSM_CSP_CreateSignatureContext(cspHandle, CSSM_ALGID_RSA, - creds, cssmKey, &cssmContext); - break; - default: - *pError = CKR_GENERAL_ERROR; -#ifdef DEBUG - fprintf(stderr, "RSAPriv_Create: bad type = %d\n", type); -#endif - return (NSSCKMDCryptoOperation *)NULL; - } - if (noErr != cssmErr) { - CKMK_MACERR("Getting Context for Key", cssmErr); - *pError = CKR_GENERAL_ERROR; - return (NSSCKMDCryptoOperation *)NULL; - } - - iOperation = nss_ZNEW(NULL, ckmkInternalCryptoOperationRSAPriv); - if ((ckmkInternalCryptoOperationRSAPriv *)NULL == iOperation) { - *pError = CKR_HOST_MEMORY; - return (NSSCKMDCryptoOperation *)NULL; - } - iOperation->mdMechanism = mdMechanism; - iOperation->iKey = iKey; - iOperation->cssmContext = cssmContext; - - nsslibc_memcpy(&iOperation->mdOperation, - proto, sizeof(NSSCKMDCryptoOperation)); - iOperation->mdOperation.etc = iOperation; - - return &iOperation->mdOperation; -} - -static void -ckmk_mdCryptoOperationRSAPriv_Destroy( - NSSCKMDCryptoOperation *mdOperation, - NSSCKFWCryptoOperation *fwOperation, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance) -{ - ckmkInternalCryptoOperationRSAPriv *iOperation = - (ckmkInternalCryptoOperationRSAPriv *)mdOperation->etc; - - if (iOperation->buffer) { - nssItem_Destroy(iOperation->buffer); - } - if (iOperation->cssmContext) { - CSSM_DeleteContext(iOperation->cssmContext); - } - nss_ZFreeIf(iOperation); - return; -} - -static CK_ULONG -ckmk_mdCryptoOperationRSA_GetFinalLength( - NSSCKMDCryptoOperation *mdOperation, - NSSCKFWCryptoOperation *fwOperation, - NSSCKMDSession *mdSession, - NSSCKFWSession *fwSession, - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - CK_RV *pError) -{ - ckmkInternalCryptoOperationRSAPriv *iOperation = - (ckmkInternalCryptoOperationRSAPriv *)mdOperation->etc; - const NSSItem *modulus = - nss_ckmk_FetchAttribute(iOperation->iKey, CKA_MODULUS, pError); - - return modulus->size; -} - -/* - * ckmk_mdCryptoOperationRSADecrypt_GetOperationLength - * we won't know the length until we actually decrypt the - * input block. Since we go to all the work to decrypt the - * the block, we'll save if for when the block is asked for - */ -static CK_ULONG -ckmk_mdCryptoOperationRSADecrypt_GetOperationLength( - NSSCKMDCryptoOperation *mdOperation, - NSSCKFWCryptoOperation *fwOperation, - NSSCKMDSession *mdSession, - NSSCKFWSession *fwSession, - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - const NSSItem *input, - CK_RV *pError) -{ - ckmkInternalCryptoOperationRSAPriv *iOperation = - (ckmkInternalCryptoOperationRSAPriv *)mdOperation->etc; - CSSM_DATA cssmInput; - CSSM_DATA cssmOutput = { 0, NULL }; - PRUint32 bytesDecrypted; - CSSM_DATA remainder = { 0, NULL }; - NSSItem output; - CSSM_RETURN cssmErr; - - if (iOperation->buffer) { - return iOperation->buffer->size; - } - - cssmInput.Data = input->data; - cssmInput.Length = input->size; - - cssmErr = CSSM_DecryptData(iOperation->cssmContext, - &cssmInput, 1, &cssmOutput, 1, - &bytesDecrypted, &remainder); - if (CSSM_OK != cssmErr) { - CKMK_MACERR("Decrypt Failed", cssmErr); - *pError = CKR_DATA_INVALID; - return 0; - } - /* we didn't suppy any buffers, so it should all be in remainder */ - output.data = nss_ZNEWARRAY(NULL, char, bytesDecrypted + remainder.Length); - if (NULL == output.data) { - free(cssmOutput.Data); - free(remainder.Data); - *pError = CKR_HOST_MEMORY; - return 0; - } - output.size = bytesDecrypted + remainder.Length; - - if (0 != bytesDecrypted) { - nsslibc_memcpy(output.data, cssmOutput.Data, bytesDecrypted); - free(cssmOutput.Data); - } - if (0 != remainder.Length) { - nsslibc_memcpy(((char *)output.data) + bytesDecrypted, - remainder.Data, remainder.Length); - free(remainder.Data); - } - - iOperation->buffer = nssItem_Duplicate(&output, NULL, NULL); - nss_ZFreeIf(output.data); - if ((NSSItem *)NULL == iOperation->buffer) { - *pError = CKR_HOST_MEMORY; - return 0; - } - - return iOperation->buffer->size; -} - -/* - * ckmk_mdCryptoOperationRSADecrypt_UpdateFinal - * - * NOTE: ckmk_mdCryptoOperationRSADecrypt_GetOperationLength is presumed to - * have been called previously. - */ -static CK_RV -ckmk_mdCryptoOperationRSADecrypt_UpdateFinal( - NSSCKMDCryptoOperation *mdOperation, - NSSCKFWCryptoOperation *fwOperation, - NSSCKMDSession *mdSession, - NSSCKFWSession *fwSession, - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - const NSSItem *input, - NSSItem *output) -{ - ckmkInternalCryptoOperationRSAPriv *iOperation = - (ckmkInternalCryptoOperationRSAPriv *)mdOperation->etc; - NSSItem *buffer = iOperation->buffer; - - if ((NSSItem *)NULL == buffer) { - return CKR_GENERAL_ERROR; - } - nsslibc_memcpy(output->data, buffer->data, buffer->size); - output->size = buffer->size; - return CKR_OK; -} - -/* - * ckmk_mdCryptoOperationRSASign_UpdateFinal - * - */ -static CK_RV -ckmk_mdCryptoOperationRSASign_UpdateFinal( - NSSCKMDCryptoOperation *mdOperation, - NSSCKFWCryptoOperation *fwOperation, - NSSCKMDSession *mdSession, - NSSCKFWSession *fwSession, - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - const NSSItem *input, - NSSItem *output) -{ - ckmkInternalCryptoOperationRSAPriv *iOperation = - (ckmkInternalCryptoOperationRSAPriv *)mdOperation->etc; - CSSM_DATA cssmInput; - CSSM_DATA cssmOutput = { 0, NULL }; - CSSM_RETURN cssmErr; - - cssmInput.Data = input->data; - cssmInput.Length = input->size; - - cssmErr = CSSM_SignData(iOperation->cssmContext, &cssmInput, 1, - CSSM_ALGID_NONE, &cssmOutput); - if (CSSM_OK != cssmErr) { - CKMK_MACERR("Signed Failed", cssmErr); - return CKR_FUNCTION_FAILED; - } - if (cssmOutput.Length > output->size) { - free(cssmOutput.Data); - return CKR_BUFFER_TOO_SMALL; - } - nsslibc_memcpy(output->data, cssmOutput.Data, cssmOutput.Length); - free(cssmOutput.Data); - output->size = cssmOutput.Length; - - return CKR_OK; -} - -NSS_IMPLEMENT_DATA const NSSCKMDCryptoOperation - ckmk_mdCryptoOperationRSADecrypt_proto = { - NULL, /* etc */ - ckmk_mdCryptoOperationRSAPriv_Destroy, - NULL, /* GetFinalLengh - not needed for one shot Decrypt/Encrypt */ - ckmk_mdCryptoOperationRSADecrypt_GetOperationLength, - NULL, /* Final - not needed for one shot operation */ - NULL, /* Update - not needed for one shot operation */ - NULL, /* DigetUpdate - not needed for one shot operation */ - ckmk_mdCryptoOperationRSADecrypt_UpdateFinal, - NULL, /* UpdateCombo - not needed for one shot operation */ - NULL, /* DigetKey - not needed for one shot operation */ - (void *)NULL /* null terminator */ - }; - -NSS_IMPLEMENT_DATA const NSSCKMDCryptoOperation - ckmk_mdCryptoOperationRSASign_proto = { - NULL, /* etc */ - ckmk_mdCryptoOperationRSAPriv_Destroy, - ckmk_mdCryptoOperationRSA_GetFinalLength, - NULL, /* GetOperationLengh - not needed for one shot Sign/Verify */ - NULL, /* Final - not needed for one shot operation */ - NULL, /* Update - not needed for one shot operation */ - NULL, /* DigetUpdate - not needed for one shot operation */ - ckmk_mdCryptoOperationRSASign_UpdateFinal, - NULL, /* UpdateCombo - not needed for one shot operation */ - NULL, /* DigetKey - not needed for one shot operation */ - (void *)NULL /* null terminator */ - }; - -/********** NSSCKMDMechansim functions ***********************/ -/* - * ckmk_mdMechanismRSA_Destroy - */ -static void -ckmk_mdMechanismRSA_Destroy( - NSSCKMDMechanism *mdMechanism, - NSSCKFWMechanism *fwMechanism, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance) -{ - nss_ZFreeIf(fwMechanism); -} - -/* - * ckmk_mdMechanismRSA_GetMinKeySize - */ -static CK_ULONG -ckmk_mdMechanismRSA_GetMinKeySize( - NSSCKMDMechanism *mdMechanism, - NSSCKFWMechanism *fwMechanism, - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - CK_RV *pError) -{ - return 384; -} - -/* - * ckmk_mdMechanismRSA_GetMaxKeySize - */ -static CK_ULONG -ckmk_mdMechanismRSA_GetMaxKeySize( - NSSCKMDMechanism *mdMechanism, - NSSCKFWMechanism *fwMechanism, - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - CK_RV *pError) -{ - return 16384; -} - -/* - * ckmk_mdMechanismRSA_DecryptInit - */ -static NSSCKMDCryptoOperation * -ckmk_mdMechanismRSA_DecryptInit( - NSSCKMDMechanism *mdMechanism, - NSSCKFWMechanism *fwMechanism, - CK_MECHANISM *pMechanism, - NSSCKMDSession *mdSession, - NSSCKFWSession *fwSession, - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - NSSCKMDObject *mdKey, - NSSCKFWObject *fwKey, - CK_RV *pError) -{ - return ckmk_mdCryptoOperationRSAPriv_Create( - &ckmk_mdCryptoOperationRSADecrypt_proto, - mdMechanism, mdKey, CKMK_DECRYPT, pError); -} - -/* - * ckmk_mdMechanismRSA_SignInit - */ -static NSSCKMDCryptoOperation * -ckmk_mdMechanismRSA_SignInit( - NSSCKMDMechanism *mdMechanism, - NSSCKFWMechanism *fwMechanism, - CK_MECHANISM *pMechanism, - NSSCKMDSession *mdSession, - NSSCKFWSession *fwSession, - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - NSSCKMDObject *mdKey, - NSSCKFWObject *fwKey, - CK_RV *pError) -{ - return ckmk_mdCryptoOperationRSAPriv_Create( - &ckmk_mdCryptoOperationRSASign_proto, - mdMechanism, mdKey, CKMK_SIGN, pError); -} - -NSS_IMPLEMENT_DATA const NSSCKMDMechanism - nss_ckmk_mdMechanismRSA = { - (void *)NULL, /* etc */ - ckmk_mdMechanismRSA_Destroy, - ckmk_mdMechanismRSA_GetMinKeySize, - ckmk_mdMechanismRSA_GetMaxKeySize, - NULL, /* GetInHardware - default false */ - NULL, /* EncryptInit - default errs */ - ckmk_mdMechanismRSA_DecryptInit, - NULL, /* DigestInit - default errs*/ - ckmk_mdMechanismRSA_SignInit, - NULL, /* VerifyInit - default errs */ - ckmk_mdMechanismRSA_SignInit, /* SignRecoverInit */ - NULL, /* VerifyRecoverInit - default errs */ - NULL, /* GenerateKey - default errs */ - NULL, /* GenerateKeyPair - default errs */ - NULL, /* GetWrapKeyLength - default errs */ - NULL, /* WrapKey - default errs */ - NULL, /* UnwrapKey - default errs */ - NULL, /* DeriveKey - default errs */ - (void *)NULL /* null terminator */ - }; diff --git a/security/nss/lib/ckfw/nssmkey/msession.c b/security/nss/lib/ckfw/nssmkey/msession.c deleted file mode 100644 index e6a29244a..000000000 --- a/security/nss/lib/ckfw/nssmkey/msession.c +++ /dev/null @@ -1,87 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "ckmk.h" - -/* - * nssmkey/msession.c - * - * This file implements the NSSCKMDSession object for the - * "nssmkey" cryptoki module. - */ - -static NSSCKMDFindObjects * -ckmk_mdSession_FindObjectsInit( - NSSCKMDSession *mdSession, - NSSCKFWSession *fwSession, - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - CK_ATTRIBUTE_PTR pTemplate, - CK_ULONG ulAttributeCount, - CK_RV *pError) -{ - return nss_ckmk_FindObjectsInit(fwSession, pTemplate, ulAttributeCount, pError); -} - -static NSSCKMDObject * -ckmk_mdSession_CreateObject( - NSSCKMDSession *mdSession, - NSSCKFWSession *fwSession, - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - NSSArena *arena, - CK_ATTRIBUTE_PTR pTemplate, - CK_ULONG ulAttributeCount, - CK_RV *pError) -{ - return nss_ckmk_CreateObject(fwSession, pTemplate, ulAttributeCount, pError); -} - -NSS_IMPLEMENT NSSCKMDSession * -nss_ckmk_CreateSession( - NSSCKFWSession *fwSession, - CK_RV *pError) -{ - NSSArena *arena; - NSSCKMDSession *rv; - - arena = NSSCKFWSession_GetArena(fwSession, pError); - if ((NSSArena *)NULL == arena) { - return (NSSCKMDSession *)NULL; - } - - rv = nss_ZNEW(arena, NSSCKMDSession); - if ((NSSCKMDSession *)NULL == rv) { - *pError = CKR_HOST_MEMORY; - return (NSSCKMDSession *)NULL; - } - - /* - * rv was zeroed when allocated, so we only - * need to set the non-zero members. - */ - - rv->etc = (void *)fwSession; - /* rv->Close */ - /* rv->GetDeviceError */ - /* rv->Login */ - /* rv->Logout */ - /* rv->InitPIN */ - /* rv->SetPIN */ - /* rv->GetOperationStateLen */ - /* rv->GetOperationState */ - /* rv->SetOperationState */ - rv->CreateObject = ckmk_mdSession_CreateObject; - /* rv->CopyObject */ - rv->FindObjectsInit = ckmk_mdSession_FindObjectsInit; - /* rv->SeedRandom */ - /* rv->GetRandom */ - /* rv->null */ - - return rv; -} diff --git a/security/nss/lib/ckfw/nssmkey/mslot.c b/security/nss/lib/ckfw/nssmkey/mslot.c deleted file mode 100644 index b2747ff7b..000000000 --- a/security/nss/lib/ckfw/nssmkey/mslot.c +++ /dev/null @@ -1,81 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "ckmk.h" - -/* - * nssmkey/mslot.c - * - * This file implements the NSSCKMDSlot object for the - * "nssmkey" cryptoki module. - */ - -static NSSUTF8 * -ckmk_mdSlot_GetSlotDescription( - NSSCKMDSlot *mdSlot, - NSSCKFWSlot *fwSlot, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - CK_RV *pError) -{ - return (NSSUTF8 *)nss_ckmk_SlotDescription; -} - -static NSSUTF8 * -ckmk_mdSlot_GetManufacturerID( - NSSCKMDSlot *mdSlot, - NSSCKFWSlot *fwSlot, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - CK_RV *pError) -{ - return (NSSUTF8 *)nss_ckmk_ManufacturerID; -} - -static CK_VERSION -ckmk_mdSlot_GetHardwareVersion( - NSSCKMDSlot *mdSlot, - NSSCKFWSlot *fwSlot, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance) -{ - return nss_ckmk_HardwareVersion; -} - -static CK_VERSION -ckmk_mdSlot_GetFirmwareVersion( - NSSCKMDSlot *mdSlot, - NSSCKFWSlot *fwSlot, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance) -{ - return nss_ckmk_FirmwareVersion; -} - -static NSSCKMDToken * -ckmk_mdSlot_GetToken( - NSSCKMDSlot *mdSlot, - NSSCKFWSlot *fwSlot, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - CK_RV *pError) -{ - return (NSSCKMDToken *)&nss_ckmk_mdToken; -} - -NSS_IMPLEMENT_DATA const NSSCKMDSlot - nss_ckmk_mdSlot = { - (void *)NULL, /* etc */ - NULL, /* Initialize */ - NULL, /* Destroy */ - ckmk_mdSlot_GetSlotDescription, - ckmk_mdSlot_GetManufacturerID, - NULL, /* GetTokenPresent -- defaults to true */ - NULL, /* GetRemovableDevice -- defaults to false */ - NULL, /* GetHardwareSlot -- defaults to false */ - ckmk_mdSlot_GetHardwareVersion, - ckmk_mdSlot_GetFirmwareVersion, - ckmk_mdSlot_GetToken, - (void *)NULL /* null terminator */ - }; diff --git a/security/nss/lib/ckfw/nssmkey/mtoken.c b/security/nss/lib/ckfw/nssmkey/mtoken.c deleted file mode 100644 index e18d61240..000000000 --- a/security/nss/lib/ckfw/nssmkey/mtoken.c +++ /dev/null @@ -1,184 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "ckmk.h" - -/* - * nssmkey/mtoken.c - * - * This file implements the NSSCKMDToken object for the - * "nssmkey" cryptoki module. - */ - -static NSSUTF8 * -ckmk_mdToken_GetLabel( - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - CK_RV *pError) -{ - return (NSSUTF8 *)nss_ckmk_TokenLabel; -} - -static NSSUTF8 * -ckmk_mdToken_GetManufacturerID( - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - CK_RV *pError) -{ - return (NSSUTF8 *)nss_ckmk_ManufacturerID; -} - -static NSSUTF8 * -ckmk_mdToken_GetModel( - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - CK_RV *pError) -{ - return (NSSUTF8 *)nss_ckmk_TokenModel; -} - -static NSSUTF8 * -ckmk_mdToken_GetSerialNumber( - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - CK_RV *pError) -{ - return (NSSUTF8 *)nss_ckmk_TokenSerialNumber; -} - -static CK_BBOOL -ckmk_mdToken_GetIsWriteProtected( - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance) -{ - return CK_FALSE; -} - -/* fake out Mozilla so we don't try to initialize the token */ -static CK_BBOOL -ckmk_mdToken_GetUserPinInitialized( - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance) -{ - return CK_TRUE; -} - -static CK_VERSION -ckmk_mdToken_GetHardwareVersion( - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance) -{ - return nss_ckmk_HardwareVersion; -} - -static CK_VERSION -ckmk_mdToken_GetFirmwareVersion( - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance) -{ - return nss_ckmk_FirmwareVersion; -} - -static NSSCKMDSession * -ckmk_mdToken_OpenSession( - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - NSSCKFWSession *fwSession, - CK_BBOOL rw, - CK_RV *pError) -{ - return nss_ckmk_CreateSession(fwSession, pError); -} - -static CK_ULONG -ckmk_mdToken_GetMechanismCount( - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance) -{ - return (CK_ULONG)1; -} - -static CK_RV -ckmk_mdToken_GetMechanismTypes( - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - CK_MECHANISM_TYPE types[]) -{ - types[0] = CKM_RSA_PKCS; - return CKR_OK; -} - -static NSSCKMDMechanism * -ckmk_mdToken_GetMechanism( - NSSCKMDToken *mdToken, - NSSCKFWToken *fwToken, - NSSCKMDInstance *mdInstance, - NSSCKFWInstance *fwInstance, - CK_MECHANISM_TYPE which, - CK_RV *pError) -{ - if (which != CKM_RSA_PKCS) { - *pError = CKR_MECHANISM_INVALID; - return (NSSCKMDMechanism *)NULL; - } - return (NSSCKMDMechanism *)&nss_ckmk_mdMechanismRSA; -} - -NSS_IMPLEMENT_DATA const NSSCKMDToken - nss_ckmk_mdToken = { - (void *)NULL, /* etc */ - NULL, /* Setup */ - NULL, /* Invalidate */ - NULL, /* InitToken -- default errs */ - ckmk_mdToken_GetLabel, - ckmk_mdToken_GetManufacturerID, - ckmk_mdToken_GetModel, - ckmk_mdToken_GetSerialNumber, - NULL, /* GetHasRNG -- default is false */ - ckmk_mdToken_GetIsWriteProtected, - NULL, /* GetLoginRequired -- default is false */ - ckmk_mdToken_GetUserPinInitialized, - NULL, /* GetRestoreKeyNotNeeded -- irrelevant */ - NULL, /* GetHasClockOnToken -- default is false */ - NULL, /* GetHasProtectedAuthenticationPath -- default is false */ - NULL, /* GetSupportsDualCryptoOperations -- default is false */ - NULL, /* GetMaxSessionCount -- default is CK_UNAVAILABLE_INFORMATION */ - NULL, /* GetMaxRwSessionCount -- default is CK_UNAVAILABLE_INFORMATION */ - NULL, /* GetMaxPinLen -- irrelevant */ - NULL, /* GetMinPinLen -- irrelevant */ - NULL, /* GetTotalPublicMemory -- default is CK_UNAVAILABLE_INFORMATION */ - NULL, /* GetFreePublicMemory -- default is CK_UNAVAILABLE_INFORMATION */ - NULL, /* GetTotalPrivateMemory -- default is CK_UNAVAILABLE_INFORMATION */ - NULL, /* GetFreePrivateMemory -- default is CK_UNAVAILABLE_INFORMATION */ - ckmk_mdToken_GetHardwareVersion, - ckmk_mdToken_GetFirmwareVersion, - NULL, /* GetUTCTime -- no clock */ - ckmk_mdToken_OpenSession, - ckmk_mdToken_GetMechanismCount, - ckmk_mdToken_GetMechanismTypes, - ckmk_mdToken_GetMechanism, - (void *)NULL /* null terminator */ - }; diff --git a/security/nss/lib/ckfw/nssmkey/nssmkey.def b/security/nss/lib/ckfw/nssmkey/nssmkey.def deleted file mode 100644 index 45d307ff0..000000000 --- a/security/nss/lib/ckfw/nssmkey/nssmkey.def +++ /dev/null @@ -1,26 +0,0 @@ -;+# -;+# This Source Code Form is subject to the terms of the Mozilla Public -;+# License, v. 2.0. If a copy of the MPL was not distributed with this -;+# file, You can obtain one at http://mozilla.org/MPL/2.0/. -;+# -;+# OK, this file is meant to support SUN, LINUX, AIX and WINDOWS -;+# 1. For all unix platforms, the string ";-" means "remove this line" -;+# 2. For all unix platforms, the string " DATA " will be removed from any -;+# line on which it occurs. -;+# 3. Lines containing ";+" will have ";+" removed on SUN and LINUX. -;+# On AIX, lines containing ";+" will be removed. -;+# 4. For all unix platforms, the string ";;" will thave the ";;" removed. -;+# 5. For all unix platforms, after the above processing has taken place, -;+# all characters after the first ";" on the line will be removed. -;+# And for AIX, the first ";" will also be removed. -;+# This file is passed directly to windows. Since ';' is a comment, all UNIX -;+# directives are hidden behind ";", ";+", and ";-" -;+ -;+NSSMKEY_3.0 { # First release of nssmkey -;+ global: -LIBRARY nssmkey ;- -EXPORTS ;- -C_GetFunctionList; -;+ local: -;+*; -;+}; diff --git a/security/nss/lib/ckfw/nssmkey/nssmkey.h b/security/nss/lib/ckfw/nssmkey/nssmkey.h deleted file mode 100644 index ba58233e6..000000000 --- a/security/nss/lib/ckfw/nssmkey/nssmkey.h +++ /dev/null @@ -1,41 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef NSSMKEY_H -#define NSSMKEY_H - -/* - * NSS CKMK Version numbers. - * - * These are the version numbers for the nssmkey module packaged with - * this release on NSS. To determine the version numbers of the builtin - * module you are using, use the appropriate PKCS #11 calls. - * - * These version numbers detail changes to the PKCS #11 interface. They map - * to the PKCS #11 spec versions. - */ -#define NSS_CKMK_CRYPTOKI_VERSION_MAJOR 2 -#define NSS_CKMK_CRYPTOKI_VERSION_MINOR 20 - -/* These version numbers detail the changes - * to the list of trusted certificates. - * - * NSS_CKMK_LIBRARY_VERSION_MINOR is a CK_BYTE. It's not clear - * whether we may use its full range (0-255) or only 0-99 because - * of the comment in the CK_VERSION type definition. - */ -#define NSS_CKMK_LIBRARY_VERSION_MAJOR 1 -#define NSS_CKMK_LIBRARY_VERSION_MINOR 1 -#define NSS_CKMK_LIBRARY_VERSION "1.1" - -/* These version numbers detail the semantic changes to the ckfw engine. */ -#define NSS_CKMK_HARDWARE_VERSION_MAJOR 1 -#define NSS_CKMK_HARDWARE_VERSION_MINOR 0 - -/* These version numbers detail the semantic changes to ckbi itself - * (new PKCS #11 objects), etc. */ -#define NSS_CKMK_FIRMWARE_VERSION_MAJOR 1 -#define NSS_CKMK_FIRMWARE_VERSION_MINOR 0 - -#endif /* NSSMKEY_H */ diff --git a/security/nss/lib/ckfw/nssmkey/staticobj.c b/security/nss/lib/ckfw/nssmkey/staticobj.c deleted file mode 100644 index 5f3bb7c72..000000000 --- a/security/nss/lib/ckfw/nssmkey/staticobj.c +++ /dev/null @@ -1,36 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef CKMK_H -#include "ckmk.h" -#endif /* CKMK_H */ - -static const CK_TRUST ckt_netscape_valid = CKT_NETSCAPE_VALID; -static const CK_OBJECT_CLASS cko_certificate = CKO_CERTIFICATE; -static const CK_TRUST ckt_netscape_trusted_delegator = CKT_NETSCAPE_TRUSTED_DELEGATOR; -static const CK_OBJECT_CLASS cko_netscape_trust = CKO_NETSCAPE_TRUST; -static const CK_BBOOL ck_true = CK_TRUE; -static const CK_OBJECT_CLASS cko_data = CKO_DATA; -static const CK_CERTIFICATE_TYPE ckc_x_509 = CKC_X_509; -static const CK_BBOOL ck_false = CK_FALSE; -static const CK_OBJECT_CLASS cko_netscape_builtin_root_list = CKO_NETSCAPE_BUILTIN_ROOT_LIST; - -/* example of a static object */ -static const CK_ATTRIBUTE_TYPE nss_ckmk_types_1[] = { - CKA_CLASS, CKA_TOKEN, CKA_PRIVATE, CKA_MODIFIABLE, CKA_LABEL -}; - -static const NSSItem nss_ckmk_items_1[] = { - { (void *)&cko_data, (PRUint32)sizeof(CK_OBJECT_CLASS) }, - { (void *)&ck_true, (PRUint32)sizeof(CK_BBOOL) }, - { (void *)&ck_false, (PRUint32)sizeof(CK_BBOOL) }, - { (void *)&ck_false, (PRUint32)sizeof(CK_BBOOL) }, - { (void *)"Mozilla Mac Key Ring Access", (PRUint32)28 } -}; - -ckmkInternalObject nss_ckmk_data[] = { - { ckmkRaw, { { 5, nss_ckmk_types_1, nss_ckmk_items_1 } }, CKO_DATA, { NULL } }, -}; - -const PRUint32 nss_ckmk_nObjects = 1; diff --git a/security/nss/lib/ckfw/session.c b/security/nss/lib/ckfw/session.c index a3119345c..7efedf403 100644 --- a/security/nss/lib/ckfw/session.c +++ b/security/nss/lib/ckfw/session.c @@ -1419,9 +1419,8 @@ nssCKFWSession_CopyObject( /* use create object */ NSSArena *tmpArena; CK_ATTRIBUTE_PTR newTemplate; - CK_ULONG i, j, n, newLength, k; + CK_ULONG j, n, newLength, k; CK_ATTRIBUTE_TYPE_PTR oldTypes; - NSSCKFWObject *rv; n = nssCKFWObject_GetAttributeCount(fwObject, pError); if ((0 == n) && (CKR_OK != *pError)) { diff --git a/security/nss/lib/dev/devtoken.c b/security/nss/lib/dev/devtoken.c index 0d4c3b5a7..41ffe86da 100644 --- a/security/nss/lib/dev/devtoken.c +++ b/security/nss/lib/dev/devtoken.c @@ -528,7 +528,9 @@ nssToken_ImportCertificate( */ NSS_CK_TEMPLATE_START(cert_tmpl, attr, ctsize); NSS_CK_SET_ATTRIBUTE_ITEM(attr, CKA_ID, id); - NSS_CK_SET_ATTRIBUTE_UTF8(attr, CKA_LABEL, nickname); + if (!rvObject->label && nickname) { + NSS_CK_SET_ATTRIBUTE_UTF8(attr, CKA_LABEL, nickname); + } NSS_CK_TEMPLATE_FINISH(cert_tmpl, attr, ctsize); /* reset the mutable attributes on the token */ nssCKObject_SetAttributes(rvObject->handle, diff --git a/security/nss/lib/freebl/Makefile b/security/nss/lib/freebl/Makefile index a4b1a86ae..bff11c7c8 100644 --- a/security/nss/lib/freebl/Makefile +++ b/security/nss/lib/freebl/Makefile @@ -517,13 +517,13 @@ ifndef NSS_DISABLE_CHACHAPOLY ifdef HAVE_INT128_SUPPORT EXTRA_SRCS += Hacl_Poly1305_64.c else - EXTRA_SRCS += poly1305.c + EXTRA_SRCS += Hacl_Poly1305_32.c endif else ifeq ($(CPU_ARCH),aarch64) EXTRA_SRCS += Hacl_Poly1305_64.c else - EXTRA_SRCS += poly1305.c + EXTRA_SRCS += Hacl_Poly1305_32.c endif endif # x86_64 @@ -535,12 +535,16 @@ ifeq (,$(filter-out i386 x386 x86 x86_64 aarch64,$(CPU_ARCH))) # All intel architectures get the 64 bit version # With custom uint128 if necessary (faster than generic 32 bit version). ECL_SRCS += curve25519_64.c - VERIFIED_SRCS += Hacl_Curve25519.c FStar.c + VERIFIED_SRCS += Hacl_Curve25519.c else # All non intel architectures get the generic 32 bit implementation (slow!) ECL_SRCS += curve25519_32.c endif +ifndef HAVE_INT128_SUPPORT + VERIFIED_SRCS += FStar.c +endif + ####################################################################### # (5) Execute "global" rules. (OPTIONAL) # ####################################################################### diff --git a/security/nss/lib/freebl/blake2b.c b/security/nss/lib/freebl/blake2b.c index 4099c67e0..b4a0442c9 100644 --- a/security/nss/lib/freebl/blake2b.c +++ b/security/nss/lib/freebl/blake2b.c @@ -180,7 +180,7 @@ blake2b_Begin(BLAKE2BContext* ctx, uint8_t outlen, const uint8_t* key, return SECSuccess; failure: - PORT_Memset(&ctx, 0, sizeof(ctx)); + PORT_Memset(ctx, 0, sizeof(*ctx)); PORT_SetError(SEC_ERROR_INVALID_ARGS); return SECFailure; } diff --git a/security/nss/lib/freebl/chacha20poly1305.c b/security/nss/lib/freebl/chacha20poly1305.c index 859d05316..302f0db9e 100644 --- a/security/nss/lib/freebl/chacha20poly1305.c +++ b/security/nss/lib/freebl/chacha20poly1305.c @@ -24,36 +24,60 @@ extern void Hacl_Chacha20_Vec128_chacha20(uint8_t *output, uint8_t *plain, extern void Hacl_Chacha20_chacha20(uint8_t *output, uint8_t *plain, uint32_t len, uint8_t *k, uint8_t *n1, uint32_t ctr); -/* Poly1305Do writes the Poly1305 authenticator of the given additional data - * and ciphertext to |out|. */ #if defined(HAVE_INT128_SUPPORT) && (defined(NSS_X86_OR_X64) || defined(__aarch64__)) /* Use HACL* Poly1305 on 64-bit Intel and ARM */ #include "verified/Hacl_Poly1305_64.h" +#define NSS_POLY1305_64 1 +#define Hacl_Poly1305_update Hacl_Poly1305_64_update +#define Hacl_Poly1305_mk_state Hacl_Poly1305_64_mk_state +#define Hacl_Poly1305_init Hacl_Poly1305_64_init +#define Hacl_Poly1305_finish Hacl_Poly1305_64_finish +typedef Hacl_Impl_Poly1305_64_State_poly1305_state Hacl_Impl_Poly1305_State_poly1305_state; +#else +/* All other platforms get the 32-bit poly1305 HACL* implementation. */ +#include "verified/Hacl_Poly1305_32.h" +#define NSS_POLY1305_32 1 +#define Hacl_Poly1305_update Hacl_Poly1305_32_update +#define Hacl_Poly1305_mk_state Hacl_Poly1305_32_mk_state +#define Hacl_Poly1305_init Hacl_Poly1305_32_init +#define Hacl_Poly1305_finish Hacl_Poly1305_32_finish +typedef Hacl_Impl_Poly1305_32_State_poly1305_state Hacl_Impl_Poly1305_State_poly1305_state; +#endif /* HAVE_INT128_SUPPORT */ static void -Poly1305PadUpdate(Hacl_Impl_Poly1305_64_State_poly1305_state state, +Poly1305PadUpdate(Hacl_Impl_Poly1305_State_poly1305_state state, unsigned char *block, const unsigned char *p, const unsigned int pLen) { unsigned int pRemLen = pLen % 16; - Hacl_Poly1305_64_update(state, (uint8_t *)p, (pLen / 16)); + Hacl_Poly1305_update(state, (uint8_t *)p, (pLen / 16)); if (pRemLen > 0) { memcpy(block, p + (pLen - pRemLen), pRemLen); - Hacl_Poly1305_64_update(state, block, 1); + Hacl_Poly1305_update(state, block, 1); } } +/* Poly1305Do writes the Poly1305 authenticator of the given additional data + * and ciphertext to |out|. */ static void Poly1305Do(unsigned char *out, const unsigned char *ad, unsigned int adLen, const unsigned char *ciphertext, unsigned int ciphertextLen, const unsigned char key[32]) { - uint64_t tmp1[6U] = { 0U }; - Hacl_Impl_Poly1305_64_State_poly1305_state state = - Hacl_Poly1305_64_mk_state(tmp1, tmp1 + 3); +#ifdef NSS_POLY1305_64 + uint64_t stateStack[6U] = { 0U }; + size_t offset = 3; +#elif defined NSS_POLY1305_32 + uint32_t stateStack[10U] = { 0U }; + size_t offset = 5; +#else +#error "This can't happen." +#endif + Hacl_Impl_Poly1305_State_poly1305_state state = + Hacl_Poly1305_mk_state(stateStack, stateStack + offset); unsigned char block[16] = { 0 }; - Hacl_Poly1305_64_init(state, (uint8_t *)key); + Hacl_Poly1305_init(state, (uint8_t *)key); Poly1305PadUpdate(state, block, ad, adLen); memset(block, 0, 16); @@ -68,49 +92,11 @@ Poly1305Do(unsigned char *out, const unsigned char *ad, unsigned int adLen, block[i] = j; } - Hacl_Poly1305_64_update(state, block, 1); - Hacl_Poly1305_64_finish(state, out, (uint8_t *)(key + 16)); + Hacl_Poly1305_update(state, block, 1); + Hacl_Poly1305_finish(state, out, (uint8_t *)(key + 16)); +#undef NSS_POLY1305_64 +#undef NSS_POLY1305_32 } -#else -/* All other platforms get the 32-bit poly1305 reference implementation. */ -#include "poly1305.h" - -static void -Poly1305Do(unsigned char *out, const unsigned char *ad, unsigned int adLen, - const unsigned char *ciphertext, unsigned int ciphertextLen, - const unsigned char key[32]) -{ - poly1305_state state; - unsigned int j; - unsigned char lengthBytes[8]; - static const unsigned char zeros[15]; - unsigned int i; - - Poly1305Init(&state, key); - Poly1305Update(&state, ad, adLen); - if (adLen % 16 > 0) { - Poly1305Update(&state, zeros, 16 - adLen % 16); - } - Poly1305Update(&state, ciphertext, ciphertextLen); - if (ciphertextLen % 16 > 0) { - Poly1305Update(&state, zeros, 16 - ciphertextLen % 16); - } - j = adLen; - for (i = 0; i < sizeof(lengthBytes); i++) { - lengthBytes[i] = j; - j >>= 8; - } - Poly1305Update(&state, lengthBytes, sizeof(lengthBytes)); - j = ciphertextLen; - for (i = 0; i < sizeof(lengthBytes); i++) { - lengthBytes[i] = j; - j >>= 8; - } - Poly1305Update(&state, lengthBytes, sizeof(lengthBytes)); - Poly1305Finish(&state, out); -} - -#endif /* HAVE_INT128_SUPPORT */ #endif /* NSS_DISABLE_CHACHAPOLY */ SECStatus diff --git a/security/nss/lib/freebl/dsa.c b/security/nss/lib/freebl/dsa.c index 9324d306b..aef353967 100644 --- a/security/nss/lib/freebl/dsa.c +++ b/security/nss/lib/freebl/dsa.c @@ -16,14 +16,11 @@ #include "blapi.h" #include "nssilock.h" #include "secitem.h" -#include "blapi.h" +#include "blapit.h" #include "mpi.h" #include "secmpi.h" #include "pqg.h" -/* XXX to be replaced by define in blapit.h */ -#define NSS_FREEBL_DSA_DEFAULT_CHUNKSIZE 2048 - /* * FIPS 186-2 requires result from random output to be reduced mod q when * generating random numbers for DSA. @@ -168,7 +165,7 @@ dsa_NewKeyExtended(const PQGParams *params, const SECItem *seed, return SECFailure; } /* Initialize an arena for the DSA key. */ - arena = PORT_NewArena(NSS_FREEBL_DSA_DEFAULT_CHUNKSIZE); + arena = PORT_NewArena(NSS_FREEBL_DEFAULT_CHUNKSIZE); if (!arena) { PORT_SetError(SEC_ERROR_NO_MEMORY); return SECFailure; @@ -213,8 +210,9 @@ cleanup: mp_clear(&g); mp_clear(&x); mp_clear(&y); - if (key) + if (key) { PORT_FreeArena(key->params.arena, PR_TRUE); + } if (err) { translate_mpi_error(err); return SECFailure; @@ -321,6 +319,7 @@ dsa_SignDigest(DSAPrivateKey *key, SECItem *signature, const SECItem *digest, mp_int x, k; /* private key & pseudo-random integer */ mp_int r, s; /* tuple (r, s) is signature) */ mp_int t; /* holding tmp values */ + mp_int ar; /* holding blinding values */ mp_err err = MP_OKAY; SECStatus rv = SECSuccess; unsigned int dsa_subprime_len, dsa_signature_len, offset; @@ -364,6 +363,7 @@ dsa_SignDigest(DSAPrivateKey *key, SECItem *signature, const SECItem *digest, MP_DIGITS(&r) = 0; MP_DIGITS(&s) = 0; MP_DIGITS(&t) = 0; + MP_DIGITS(&ar) = 0; CHECK_MPI_OK(mp_init(&p)); CHECK_MPI_OK(mp_init(&q)); CHECK_MPI_OK(mp_init(&g)); @@ -372,6 +372,7 @@ dsa_SignDigest(DSAPrivateKey *key, SECItem *signature, const SECItem *digest, CHECK_MPI_OK(mp_init(&r)); CHECK_MPI_OK(mp_init(&s)); CHECK_MPI_OK(mp_init(&t)); + CHECK_MPI_OK(mp_init(&ar)); /* ** Convert stored PQG and private key into MPI integers. */ @@ -397,14 +398,28 @@ dsa_SignDigest(DSAPrivateKey *key, SECItem *signature, const SECItem *digest, rv = SECFailure; goto cleanup; } - SECITEM_TO_MPINT(t2, &t); /* t <-$ Zq */ + SECITEM_TO_MPINT(t2, &t); /* t <-$ Zq */ + SECITEM_FreeItem(&t2, PR_FALSE); + if (DSA_NewRandom(NULL, &key->params.subPrime, &t2) != SECSuccess) { + PORT_SetError(SEC_ERROR_NEED_RANDOM); + rv = SECFailure; + goto cleanup; + } + SECITEM_TO_MPINT(t2, &ar); /* ar <-$ Zq */ + SECITEM_FreeItem(&t2, PR_FALSE); + + /* Using mp_invmod on k directly would leak bits from k. */ + CHECK_MPI_OK(mp_mul(&k, &ar, &k)); /* k = k * ar */ CHECK_MPI_OK(mp_mulmod(&k, &t, &q, &k)); /* k = k * t mod q */ CHECK_MPI_OK(mp_invmod(&k, &q, &k)); /* k = k**-1 mod q */ CHECK_MPI_OK(mp_mulmod(&k, &t, &q, &k)); /* k = k * t mod q */ SECITEM_TO_MPINT(localDigest, &s); /* s = HASH(M) */ - CHECK_MPI_OK(mp_mulmod(&x, &r, &q, &x)); /* x = x * r mod q */ - CHECK_MPI_OK(mp_addmod(&s, &x, &q, &s)); /* s = s + x mod q */ - CHECK_MPI_OK(mp_mulmod(&s, &k, &q, &s)); /* s = s * k mod q */ + /* To avoid leaking secret bits here the addition is blinded. */ + CHECK_MPI_OK(mp_mul(&x, &ar, &x)); /* x = x * ar */ + CHECK_MPI_OK(mp_mulmod(&x, &r, &q, &x)); /* x = x * r mod q */ + CHECK_MPI_OK(mp_mulmod(&s, &ar, &q, &t)); /* t = s * ar mod q */ + CHECK_MPI_OK(mp_add(&t, &x, &s)); /* s = t + x */ + CHECK_MPI_OK(mp_mulmod(&s, &k, &q, &s)); /* s = s * k mod q */ /* ** verify r != 0 and s != 0 ** mentioned as optional in FIPS 186-1. @@ -438,7 +453,7 @@ cleanup: mp_clear(&r); mp_clear(&s); mp_clear(&t); - SECITEM_FreeItem(&t2, PR_FALSE); + mp_clear(&ar); if (err) { translate_mpi_error(err); rv = SECFailure; diff --git a/security/nss/lib/freebl/ec.c b/security/nss/lib/freebl/ec.c index b28815ade..6468a10d6 100644 --- a/security/nss/lib/freebl/ec.c +++ b/security/nss/lib/freebl/ec.c @@ -653,6 +653,7 @@ ECDSA_SignDigestWithSeed(ECPrivateKey *key, SECItem *signature, mp_int r, s; /* tuple (r, s) is the signature */ mp_int t; /* holding tmp values */ mp_int n; + mp_int ar; /* blinding value */ mp_err err = MP_OKAY; ECParams *ecParams = NULL; SECItem kGpoint = { siBuffer, NULL, 0 }; @@ -674,6 +675,7 @@ ECDSA_SignDigestWithSeed(ECPrivateKey *key, SECItem *signature, MP_DIGITS(&s) = 0; MP_DIGITS(&n) = 0; MP_DIGITS(&t) = 0; + MP_DIGITS(&ar) = 0; /* Check args */ if (!key || !signature || !digest || !kb || (kblen < 0)) { @@ -700,6 +702,7 @@ ECDSA_SignDigestWithSeed(ECPrivateKey *key, SECItem *signature, CHECK_MPI_OK(mp_init(&s)); CHECK_MPI_OK(mp_init(&n)); CHECK_MPI_OK(mp_init(&t)); + CHECK_MPI_OK(mp_init(&ar)); SECITEM_TO_MPINT(ecParams->order, &n); SECITEM_TO_MPINT(key->privateValue, &d); @@ -815,12 +818,25 @@ ECDSA_SignDigestWithSeed(ECPrivateKey *key, SECItem *signature, goto cleanup; } CHECK_MPI_OK(mp_read_unsigned_octets(&t, t2, 2 * ecParams->order.len)); /* t <-$ Zn */ - CHECK_MPI_OK(mp_mulmod(&k, &t, &n, &k)); /* k = k * t mod n */ - CHECK_MPI_OK(mp_invmod(&k, &n, &k)); /* k = k**-1 mod n */ - CHECK_MPI_OK(mp_mulmod(&k, &t, &n, &k)); /* k = k * t mod n */ - CHECK_MPI_OK(mp_mulmod(&d, &r, &n, &d)); /* d = d * r mod n */ - CHECK_MPI_OK(mp_addmod(&s, &d, &n, &s)); /* s = s + d mod n */ - CHECK_MPI_OK(mp_mulmod(&s, &k, &n, &s)); /* s = s * k mod n */ + PORT_Memset(t2, 0, 2 * ecParams->order.len); + if (RNG_GenerateGlobalRandomBytes(t2, 2 * ecParams->order.len) != SECSuccess) { + PORT_SetError(SEC_ERROR_NEED_RANDOM); + rv = SECFailure; + goto cleanup; + } + CHECK_MPI_OK(mp_read_unsigned_octets(&ar, t2, 2 * ecParams->order.len)); /* ar <-$ Zn */ + + /* Using mp_invmod on k directly would leak bits from k. */ + CHECK_MPI_OK(mp_mul(&k, &ar, &k)); /* k = k * ar */ + CHECK_MPI_OK(mp_mulmod(&k, &t, &n, &k)); /* k = k * t mod n */ + CHECK_MPI_OK(mp_invmod(&k, &n, &k)); /* k = k**-1 mod n */ + CHECK_MPI_OK(mp_mulmod(&k, &t, &n, &k)); /* k = k * t mod n */ + /* To avoid leaking secret bits here the addition is blinded. */ + CHECK_MPI_OK(mp_mul(&d, &ar, &t)); /* t = d * ar */ + CHECK_MPI_OK(mp_mulmod(&t, &r, &n, &d)); /* d = t * r mod n */ + CHECK_MPI_OK(mp_mulmod(&s, &ar, &n, &t)); /* t = s * ar mod n */ + CHECK_MPI_OK(mp_add(&t, &d, &s)); /* s = t + d */ + CHECK_MPI_OK(mp_mulmod(&s, &k, &n, &s)); /* s = s * k mod n */ #if EC_DEBUG mp_todecimal(&s, mpstr); @@ -858,6 +874,7 @@ cleanup: mp_clear(&s); mp_clear(&n); mp_clear(&t); + mp_clear(&ar); if (t2) { PORT_Free(t2); diff --git a/security/nss/lib/freebl/freebl.gyp b/security/nss/lib/freebl/freebl.gyp index fae56f709..004807483 100644 --- a/security/nss/lib/freebl/freebl.gyp +++ b/security/nss/lib/freebl/freebl.gyp @@ -272,28 +272,15 @@ }, }], [ 'cc_use_gnu_ld==1 and OS=="win" and target_arch=="x64"', { + # mingw x64 'defines': [ 'MP_IS_LITTLE_ENDIAN', - 'NSS_BEVAND_ARCFOUR', - 'MPI_AMD64', - 'MP_ASSEMBLY_MULTIPLY', - 'NSS_USE_COMBA', - 'USE_HW_AES', - 'INTEL_GCM', ], }], - [ 'OS!="win"', { - 'conditions': [ - [ 'target_arch=="x64" or target_arch=="arm64" or target_arch=="aarch64"', { - 'defines': [ - # The Makefile does version-tests on GCC, but we're not doing that here. - 'HAVE_INT128_SUPPORT', - ], - }, { - 'defines': [ - 'KRML_NOUINT128', - ], - }], + [ 'have_int128_support==1', { + 'defines': [ + # The Makefile does version-tests on GCC, but we're not doing that here. + 'HAVE_INT128_SUPPORT', ], }, { 'defines': [ @@ -355,5 +342,18 @@ }, 'variables': { 'module': 'nss', + 'conditions': [ + [ 'OS!="win"', { + 'conditions': [ + [ 'target_arch=="x64" or target_arch=="arm64" or target_arch=="aarch64"', { + 'have_int128_support%': 1, + }, { + 'have_int128_support%': 0, + }], + ], + }, { + 'have_int128_support%': 0, + }], + ], } } diff --git a/security/nss/lib/freebl/freebl_base.gypi b/security/nss/lib/freebl/freebl_base.gypi index ebd1018d8..1372994f4 100644 --- a/security/nss/lib/freebl/freebl_base.gypi +++ b/security/nss/lib/freebl/freebl_base.gypi @@ -59,7 +59,7 @@ 'sha_fast.c', 'shvfy.c', 'sysrand.c', - 'tlsprfalg.c' + 'tlsprfalg.c', ], 'conditions': [ [ 'OS=="linux" or OS=="android"', { @@ -122,6 +122,11 @@ 'intel-gcm-x86-masm.asm', ], }], + [ 'cc_use_gnu_ld==1', { + # mingw + 'sources': [ + ], + }], [ 'cc_is_clang!=1', { # MSVC 'sources': [ @@ -135,7 +140,6 @@ # All intel and 64-bit ARM architectures get the 64 bit version. 'ecl/curve25519_64.c', 'verified/Hacl_Curve25519.c', - 'verified/FStar.c', ], }, { 'sources': [ @@ -167,7 +171,7 @@ }, { # !Windows & !x64 & !arm64 & !aarch64 'sources': [ - 'poly1305.c', + 'verified/Hacl_Poly1305_32.c', ], }], ], @@ -176,7 +180,7 @@ }, { # Windows 'sources': [ - 'poly1305.c', + 'verified/Hacl_Poly1305_32.c', ], }], ], @@ -215,6 +219,9 @@ }], ], }], + [ 'have_int128_support==0', { + 'sources': [ 'verified/FStar.c' ], + }], ], 'ldflags': [ '-Wl,-Bsymbolic' diff --git a/security/nss/lib/freebl/loader.c b/security/nss/lib/freebl/loader.c index fe5e0a668..6d200e6dd 100644 --- a/security/nss/lib/freebl/loader.c +++ b/security/nss/lib/freebl/loader.c @@ -2164,12 +2164,12 @@ BLAKE2B_NewContext(void) } void -BLAKE2B_DestroyContext(BLAKE2BContext *BLAKE2BContext, PRBool freeit) +BLAKE2B_DestroyContext(BLAKE2BContext *ctx, PRBool freeit) { if (!vector && PR_SUCCESS != freebl_RunLoaderOnce()) { return; } - (vector->p_BLAKE2B_DestroyContext)(BLAKE2BContext, freeit); + (vector->p_BLAKE2B_DestroyContext)(ctx, freeit); } SECStatus diff --git a/security/nss/lib/freebl/mpi/mpi.c b/security/nss/lib/freebl/mpi/mpi.c index ae404019d..8c893fb5f 100644 --- a/security/nss/lib/freebl/mpi/mpi.c +++ b/security/nss/lib/freebl/mpi/mpi.c @@ -2657,10 +2657,10 @@ mp_toradix(mp_int *mp, char *str, int radix) /* Reverse the digits and sign indicator */ ix = 0; while (ix < pos) { - char tmp = str[ix]; + char tmpc = str[ix]; str[ix] = str[pos]; - str[pos] = tmp; + str[pos] = tmpc; ++ix; --pos; } @@ -3313,13 +3313,14 @@ s_mp_div_d(mp_int *mp, mp_digit d, mp_digit *r) /* could check for power of 2 here, but mp_div_d does that. */ if (MP_USED(mp) == 1) { mp_digit n = MP_DIGIT(mp, 0); - mp_digit rem; + mp_digit remdig; q = n / d; - rem = n % d; + remdig = n % d; MP_DIGIT(mp, 0) = q; - if (r) - *r = rem; + if (r) { + *r = remdig; + } return MP_OKAY; } diff --git a/security/nss/lib/freebl/poly1305-donna-x64-sse2-incremental-source.c b/security/nss/lib/freebl/poly1305-donna-x64-sse2-incremental-source.c deleted file mode 100644 index 3c803c167..000000000 --- a/security/nss/lib/freebl/poly1305-donna-x64-sse2-incremental-source.c +++ /dev/null @@ -1,881 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* This implementation of poly1305 is by Andrew Moon - * (https://github.com/floodyberry/poly1305-donna) and released as public - * domain. It implements SIMD vectorization based on the algorithm described in - * http://cr.yp.to/papers.html#neoncrypto. Unrolled to 2 powers, i.e. 64 byte - * block size. */ - -#include <emmintrin.h> -#include <stdint.h> - -#include "poly1305.h" -#include "blapii.h" - -#define ALIGN(x) __attribute__((aligned(x))) -#define INLINE inline -#define U8TO64_LE(m) (*(uint64_t *)(m)) -#define U8TO32_LE(m) (*(uint32_t *)(m)) -#define U64TO8_LE(m, v) (*(uint64_t *)(m)) = v - -typedef __m128i xmmi; -typedef unsigned __int128 uint128_t; - -static const uint32_t ALIGN(16) poly1305_x64_sse2_message_mask[4] = { (1 << 26) - 1, 0, (1 << 26) - 1, 0 }; -static const uint32_t ALIGN(16) poly1305_x64_sse2_5[4] = { 5, 0, 5, 0 }; -static const uint32_t ALIGN(16) poly1305_x64_sse2_1shl128[4] = { (1 << 24), 0, (1 << 24), 0 }; - -static uint128_t INLINE -add128(uint128_t a, uint128_t b) -{ - return a + b; -} - -static uint128_t INLINE -add128_64(uint128_t a, uint64_t b) -{ - return a + b; -} - -static uint128_t INLINE -mul64x64_128(uint64_t a, uint64_t b) -{ - return (uint128_t)a * b; -} - -static uint64_t INLINE -lo128(uint128_t a) -{ - return (uint64_t)a; -} - -static uint64_t INLINE -shr128(uint128_t v, const int shift) -{ - return (uint64_t)(v >> shift); -} - -static uint64_t INLINE -shr128_pair(uint64_t hi, uint64_t lo, const int shift) -{ - return (uint64_t)((((uint128_t)hi << 64) | lo) >> shift); -} - -typedef struct poly1305_power_t { - union { - xmmi v; - uint64_t u[2]; - uint32_t d[4]; - } R20, R21, R22, R23, R24, S21, S22, S23, S24; -} poly1305_power; - -typedef struct poly1305_state_internal_t { - poly1305_power P[2]; /* 288 bytes, top 32 bit halves unused = 144 bytes of free storage */ - union { - xmmi H[5]; /* 80 bytes */ - uint64_t HH[10]; - }; - /* uint64_t r0,r1,r2; [24 bytes] */ - /* uint64_t pad0,pad1; [16 bytes] */ - uint64_t started; /* 8 bytes */ - uint64_t leftover; /* 8 bytes */ - uint8_t buffer[64]; /* 64 bytes */ -} poly1305_state_internal; /* 448 bytes total + 63 bytes for alignment = 511 bytes raw */ - -static poly1305_state_internal INLINE - * - poly1305_aligned_state(poly1305_state *state) -{ - return (poly1305_state_internal *)(((uint64_t)state + 63) & ~63); -} - -/* copy 0-63 bytes */ -static void INLINE NO_SANITIZE_ALIGNMENT -poly1305_block_copy(uint8_t *dst, const uint8_t *src, size_t bytes) -{ - size_t offset = src - dst; - if (bytes & 32) { - _mm_storeu_si128((xmmi *)(dst + 0), _mm_loadu_si128((xmmi *)(dst + offset + 0))); - _mm_storeu_si128((xmmi *)(dst + 16), _mm_loadu_si128((xmmi *)(dst + offset + 16))); - dst += 32; - } - if (bytes & 16) { - _mm_storeu_si128((xmmi *)dst, _mm_loadu_si128((xmmi *)(dst + offset))); - dst += 16; - } - if (bytes & 8) { - *(uint64_t *)dst = *(uint64_t *)(dst + offset); - dst += 8; - } - if (bytes & 4) { - *(uint32_t *)dst = *(uint32_t *)(dst + offset); - dst += 4; - } - if (bytes & 2) { - *(uint16_t *)dst = *(uint16_t *)(dst + offset); - dst += 2; - } - if (bytes & 1) { - *(uint8_t *)dst = *(uint8_t *)(dst + offset); - } -} - -/* zero 0-15 bytes */ -static void INLINE -poly1305_block_zero(uint8_t *dst, size_t bytes) -{ - if (bytes & 8) { - *(uint64_t *)dst = 0; - dst += 8; - } - if (bytes & 4) { - *(uint32_t *)dst = 0; - dst += 4; - } - if (bytes & 2) { - *(uint16_t *)dst = 0; - dst += 2; - } - if (bytes & 1) { - *(uint8_t *)dst = 0; - } -} - -static size_t INLINE -poly1305_min(size_t a, size_t b) -{ - return (a < b) ? a : b; -} - -void -Poly1305Init(poly1305_state *state, const unsigned char key[32]) -{ - poly1305_state_internal *st = poly1305_aligned_state(state); - poly1305_power *p; - uint64_t r0, r1, r2; - uint64_t t0, t1; - - /* clamp key */ - t0 = U8TO64_LE(key + 0); - t1 = U8TO64_LE(key + 8); - r0 = t0 & 0xffc0fffffff; - t0 >>= 44; - t0 |= t1 << 20; - r1 = t0 & 0xfffffc0ffff; - t1 >>= 24; - r2 = t1 & 0x00ffffffc0f; - - /* store r in un-used space of st->P[1] */ - p = &st->P[1]; - p->R20.d[1] = (uint32_t)(r0); - p->R20.d[3] = (uint32_t)(r0 >> 32); - p->R21.d[1] = (uint32_t)(r1); - p->R21.d[3] = (uint32_t)(r1 >> 32); - p->R22.d[1] = (uint32_t)(r2); - p->R22.d[3] = (uint32_t)(r2 >> 32); - - /* store pad */ - p->R23.d[1] = U8TO32_LE(key + 16); - p->R23.d[3] = U8TO32_LE(key + 20); - p->R24.d[1] = U8TO32_LE(key + 24); - p->R24.d[3] = U8TO32_LE(key + 28); - - /* H = 0 */ - st->H[0] = _mm_setzero_si128(); - st->H[1] = _mm_setzero_si128(); - st->H[2] = _mm_setzero_si128(); - st->H[3] = _mm_setzero_si128(); - st->H[4] = _mm_setzero_si128(); - - st->started = 0; - st->leftover = 0; -} - -static void -poly1305_first_block(poly1305_state_internal *st, const uint8_t *m) -{ - const xmmi MMASK = _mm_load_si128((xmmi *)poly1305_x64_sse2_message_mask); - const xmmi FIVE = _mm_load_si128((xmmi *)poly1305_x64_sse2_5); - const xmmi HIBIT = _mm_load_si128((xmmi *)poly1305_x64_sse2_1shl128); - xmmi T5, T6; - poly1305_power *p; - uint128_t d[3]; - uint64_t r0, r1, r2; - uint64_t r20, r21, r22, s22; - uint64_t pad0, pad1; - uint64_t c; - uint64_t i; - - /* pull out stored info */ - p = &st->P[1]; - - r0 = ((uint64_t)p->R20.d[3] << 32) | (uint64_t)p->R20.d[1]; - r1 = ((uint64_t)p->R21.d[3] << 32) | (uint64_t)p->R21.d[1]; - r2 = ((uint64_t)p->R22.d[3] << 32) | (uint64_t)p->R22.d[1]; - pad0 = ((uint64_t)p->R23.d[3] << 32) | (uint64_t)p->R23.d[1]; - pad1 = ((uint64_t)p->R24.d[3] << 32) | (uint64_t)p->R24.d[1]; - - /* compute powers r^2,r^4 */ - r20 = r0; - r21 = r1; - r22 = r2; - for (i = 0; i < 2; i++) { - s22 = r22 * (5 << 2); - - d[0] = add128(mul64x64_128(r20, r20), mul64x64_128(r21 * 2, s22)); - d[1] = add128(mul64x64_128(r22, s22), mul64x64_128(r20 * 2, r21)); - d[2] = add128(mul64x64_128(r21, r21), mul64x64_128(r22 * 2, r20)); - - r20 = lo128(d[0]) & 0xfffffffffff; - c = shr128(d[0], 44); - d[1] = add128_64(d[1], c); - r21 = lo128(d[1]) & 0xfffffffffff; - c = shr128(d[1], 44); - d[2] = add128_64(d[2], c); - r22 = lo128(d[2]) & 0x3ffffffffff; - c = shr128(d[2], 42); - r20 += c * 5; - c = (r20 >> 44); - r20 = r20 & 0xfffffffffff; - r21 += c; - - p->R20.v = _mm_shuffle_epi32(_mm_cvtsi32_si128((uint32_t)(r20)&0x3ffffff), _MM_SHUFFLE(1, 0, 1, 0)); - p->R21.v = _mm_shuffle_epi32(_mm_cvtsi32_si128((uint32_t)((r20 >> 26) | (r21 << 18)) & 0x3ffffff), _MM_SHUFFLE(1, 0, 1, 0)); - p->R22.v = _mm_shuffle_epi32(_mm_cvtsi32_si128((uint32_t)((r21 >> 8)) & 0x3ffffff), _MM_SHUFFLE(1, 0, 1, 0)); - p->R23.v = _mm_shuffle_epi32(_mm_cvtsi32_si128((uint32_t)((r21 >> 34) | (r22 << 10)) & 0x3ffffff), _MM_SHUFFLE(1, 0, 1, 0)); - p->R24.v = _mm_shuffle_epi32(_mm_cvtsi32_si128((uint32_t)((r22 >> 16))), _MM_SHUFFLE(1, 0, 1, 0)); - p->S21.v = _mm_mul_epu32(p->R21.v, FIVE); - p->S22.v = _mm_mul_epu32(p->R22.v, FIVE); - p->S23.v = _mm_mul_epu32(p->R23.v, FIVE); - p->S24.v = _mm_mul_epu32(p->R24.v, FIVE); - p--; - } - - /* put saved info back */ - p = &st->P[1]; - p->R20.d[1] = (uint32_t)(r0); - p->R20.d[3] = (uint32_t)(r0 >> 32); - p->R21.d[1] = (uint32_t)(r1); - p->R21.d[3] = (uint32_t)(r1 >> 32); - p->R22.d[1] = (uint32_t)(r2); - p->R22.d[3] = (uint32_t)(r2 >> 32); - p->R23.d[1] = (uint32_t)(pad0); - p->R23.d[3] = (uint32_t)(pad0 >> 32); - p->R24.d[1] = (uint32_t)(pad1); - p->R24.d[3] = (uint32_t)(pad1 >> 32); - - /* H = [Mx,My] */ - T5 = _mm_unpacklo_epi64(_mm_loadl_epi64((xmmi *)(m + 0)), _mm_loadl_epi64((xmmi *)(m + 16))); - T6 = _mm_unpacklo_epi64(_mm_loadl_epi64((xmmi *)(m + 8)), _mm_loadl_epi64((xmmi *)(m + 24))); - st->H[0] = _mm_and_si128(MMASK, T5); - st->H[1] = _mm_and_si128(MMASK, _mm_srli_epi64(T5, 26)); - T5 = _mm_or_si128(_mm_srli_epi64(T5, 52), _mm_slli_epi64(T6, 12)); - st->H[2] = _mm_and_si128(MMASK, T5); - st->H[3] = _mm_and_si128(MMASK, _mm_srli_epi64(T5, 26)); - st->H[4] = _mm_or_si128(_mm_srli_epi64(T6, 40), HIBIT); -} - -static void -poly1305_blocks(poly1305_state_internal *st, const uint8_t *m, size_t bytes) -{ - const xmmi MMASK = _mm_load_si128((xmmi *)poly1305_x64_sse2_message_mask); - const xmmi FIVE = _mm_load_si128((xmmi *)poly1305_x64_sse2_5); - const xmmi HIBIT = _mm_load_si128((xmmi *)poly1305_x64_sse2_1shl128); - - poly1305_power *p; - xmmi H0, H1, H2, H3, H4; - xmmi T0, T1, T2, T3, T4, T5, T6; - xmmi M0, M1, M2, M3, M4; - xmmi C1, C2; - - H0 = st->H[0]; - H1 = st->H[1]; - H2 = st->H[2]; - H3 = st->H[3]; - H4 = st->H[4]; - - while (bytes >= 64) { - /* H *= [r^4,r^4] */ - p = &st->P[0]; - T0 = _mm_mul_epu32(H0, p->R20.v); - T1 = _mm_mul_epu32(H0, p->R21.v); - T2 = _mm_mul_epu32(H0, p->R22.v); - T3 = _mm_mul_epu32(H0, p->R23.v); - T4 = _mm_mul_epu32(H0, p->R24.v); - T5 = _mm_mul_epu32(H1, p->S24.v); - T6 = _mm_mul_epu32(H1, p->R20.v); - T0 = _mm_add_epi64(T0, T5); - T1 = _mm_add_epi64(T1, T6); - T5 = _mm_mul_epu32(H2, p->S23.v); - T6 = _mm_mul_epu32(H2, p->S24.v); - T0 = _mm_add_epi64(T0, T5); - T1 = _mm_add_epi64(T1, T6); - T5 = _mm_mul_epu32(H3, p->S22.v); - T6 = _mm_mul_epu32(H3, p->S23.v); - T0 = _mm_add_epi64(T0, T5); - T1 = _mm_add_epi64(T1, T6); - T5 = _mm_mul_epu32(H4, p->S21.v); - T6 = _mm_mul_epu32(H4, p->S22.v); - T0 = _mm_add_epi64(T0, T5); - T1 = _mm_add_epi64(T1, T6); - T5 = _mm_mul_epu32(H1, p->R21.v); - T6 = _mm_mul_epu32(H1, p->R22.v); - T2 = _mm_add_epi64(T2, T5); - T3 = _mm_add_epi64(T3, T6); - T5 = _mm_mul_epu32(H2, p->R20.v); - T6 = _mm_mul_epu32(H2, p->R21.v); - T2 = _mm_add_epi64(T2, T5); - T3 = _mm_add_epi64(T3, T6); - T5 = _mm_mul_epu32(H3, p->S24.v); - T6 = _mm_mul_epu32(H3, p->R20.v); - T2 = _mm_add_epi64(T2, T5); - T3 = _mm_add_epi64(T3, T6); - T5 = _mm_mul_epu32(H4, p->S23.v); - T6 = _mm_mul_epu32(H4, p->S24.v); - T2 = _mm_add_epi64(T2, T5); - T3 = _mm_add_epi64(T3, T6); - T5 = _mm_mul_epu32(H1, p->R23.v); - T4 = _mm_add_epi64(T4, T5); - T5 = _mm_mul_epu32(H2, p->R22.v); - T4 = _mm_add_epi64(T4, T5); - T5 = _mm_mul_epu32(H3, p->R21.v); - T4 = _mm_add_epi64(T4, T5); - T5 = _mm_mul_epu32(H4, p->R20.v); - T4 = _mm_add_epi64(T4, T5); - - /* H += [Mx,My]*[r^2,r^2] */ - T5 = _mm_unpacklo_epi64(_mm_loadl_epi64((xmmi *)(m + 0)), _mm_loadl_epi64((xmmi *)(m + 16))); - T6 = _mm_unpacklo_epi64(_mm_loadl_epi64((xmmi *)(m + 8)), _mm_loadl_epi64((xmmi *)(m + 24))); - M0 = _mm_and_si128(MMASK, T5); - M1 = _mm_and_si128(MMASK, _mm_srli_epi64(T5, 26)); - T5 = _mm_or_si128(_mm_srli_epi64(T5, 52), _mm_slli_epi64(T6, 12)); - M2 = _mm_and_si128(MMASK, T5); - M3 = _mm_and_si128(MMASK, _mm_srli_epi64(T5, 26)); - M4 = _mm_or_si128(_mm_srli_epi64(T6, 40), HIBIT); - - p = &st->P[1]; - T5 = _mm_mul_epu32(M0, p->R20.v); - T6 = _mm_mul_epu32(M0, p->R21.v); - T0 = _mm_add_epi64(T0, T5); - T1 = _mm_add_epi64(T1, T6); - T5 = _mm_mul_epu32(M1, p->S24.v); - T6 = _mm_mul_epu32(M1, p->R20.v); - T0 = _mm_add_epi64(T0, T5); - T1 = _mm_add_epi64(T1, T6); - T5 = _mm_mul_epu32(M2, p->S23.v); - T6 = _mm_mul_epu32(M2, p->S24.v); - T0 = _mm_add_epi64(T0, T5); - T1 = _mm_add_epi64(T1, T6); - T5 = _mm_mul_epu32(M3, p->S22.v); - T6 = _mm_mul_epu32(M3, p->S23.v); - T0 = _mm_add_epi64(T0, T5); - T1 = _mm_add_epi64(T1, T6); - T5 = _mm_mul_epu32(M4, p->S21.v); - T6 = _mm_mul_epu32(M4, p->S22.v); - T0 = _mm_add_epi64(T0, T5); - T1 = _mm_add_epi64(T1, T6); - T5 = _mm_mul_epu32(M0, p->R22.v); - T6 = _mm_mul_epu32(M0, p->R23.v); - T2 = _mm_add_epi64(T2, T5); - T3 = _mm_add_epi64(T3, T6); - T5 = _mm_mul_epu32(M1, p->R21.v); - T6 = _mm_mul_epu32(M1, p->R22.v); - T2 = _mm_add_epi64(T2, T5); - T3 = _mm_add_epi64(T3, T6); - T5 = _mm_mul_epu32(M2, p->R20.v); - T6 = _mm_mul_epu32(M2, p->R21.v); - T2 = _mm_add_epi64(T2, T5); - T3 = _mm_add_epi64(T3, T6); - T5 = _mm_mul_epu32(M3, p->S24.v); - T6 = _mm_mul_epu32(M3, p->R20.v); - T2 = _mm_add_epi64(T2, T5); - T3 = _mm_add_epi64(T3, T6); - T5 = _mm_mul_epu32(M4, p->S23.v); - T6 = _mm_mul_epu32(M4, p->S24.v); - T2 = _mm_add_epi64(T2, T5); - T3 = _mm_add_epi64(T3, T6); - T5 = _mm_mul_epu32(M0, p->R24.v); - T4 = _mm_add_epi64(T4, T5); - T5 = _mm_mul_epu32(M1, p->R23.v); - T4 = _mm_add_epi64(T4, T5); - T5 = _mm_mul_epu32(M2, p->R22.v); - T4 = _mm_add_epi64(T4, T5); - T5 = _mm_mul_epu32(M3, p->R21.v); - T4 = _mm_add_epi64(T4, T5); - T5 = _mm_mul_epu32(M4, p->R20.v); - T4 = _mm_add_epi64(T4, T5); - - /* H += [Mx,My] */ - T5 = _mm_unpacklo_epi64(_mm_loadl_epi64((xmmi *)(m + 32)), _mm_loadl_epi64((xmmi *)(m + 48))); - T6 = _mm_unpacklo_epi64(_mm_loadl_epi64((xmmi *)(m + 40)), _mm_loadl_epi64((xmmi *)(m + 56))); - M0 = _mm_and_si128(MMASK, T5); - M1 = _mm_and_si128(MMASK, _mm_srli_epi64(T5, 26)); - T5 = _mm_or_si128(_mm_srli_epi64(T5, 52), _mm_slli_epi64(T6, 12)); - M2 = _mm_and_si128(MMASK, T5); - M3 = _mm_and_si128(MMASK, _mm_srli_epi64(T5, 26)); - M4 = _mm_or_si128(_mm_srli_epi64(T6, 40), HIBIT); - - T0 = _mm_add_epi64(T0, M0); - T1 = _mm_add_epi64(T1, M1); - T2 = _mm_add_epi64(T2, M2); - T3 = _mm_add_epi64(T3, M3); - T4 = _mm_add_epi64(T4, M4); - - /* reduce */ - C1 = _mm_srli_epi64(T0, 26); - C2 = _mm_srli_epi64(T3, 26); - T0 = _mm_and_si128(T0, MMASK); - T3 = _mm_and_si128(T3, MMASK); - T1 = _mm_add_epi64(T1, C1); - T4 = _mm_add_epi64(T4, C2); - C1 = _mm_srli_epi64(T1, 26); - C2 = _mm_srli_epi64(T4, 26); - T1 = _mm_and_si128(T1, MMASK); - T4 = _mm_and_si128(T4, MMASK); - T2 = _mm_add_epi64(T2, C1); - T0 = _mm_add_epi64(T0, _mm_mul_epu32(C2, FIVE)); - C1 = _mm_srli_epi64(T2, 26); - C2 = _mm_srli_epi64(T0, 26); - T2 = _mm_and_si128(T2, MMASK); - T0 = _mm_and_si128(T0, MMASK); - T3 = _mm_add_epi64(T3, C1); - T1 = _mm_add_epi64(T1, C2); - C1 = _mm_srli_epi64(T3, 26); - T3 = _mm_and_si128(T3, MMASK); - T4 = _mm_add_epi64(T4, C1); - - /* H = (H*[r^4,r^4] + [Mx,My]*[r^2,r^2] + [Mx,My]) */ - H0 = T0; - H1 = T1; - H2 = T2; - H3 = T3; - H4 = T4; - - m += 64; - bytes -= 64; - } - - st->H[0] = H0; - st->H[1] = H1; - st->H[2] = H2; - st->H[3] = H3; - st->H[4] = H4; -} - -static size_t -poly1305_combine(poly1305_state_internal *st, const uint8_t *m, size_t bytes) -{ - const xmmi MMASK = _mm_load_si128((xmmi *)poly1305_x64_sse2_message_mask); - const xmmi HIBIT = _mm_load_si128((xmmi *)poly1305_x64_sse2_1shl128); - const xmmi FIVE = _mm_load_si128((xmmi *)poly1305_x64_sse2_5); - - poly1305_power *p; - xmmi H0, H1, H2, H3, H4; - xmmi M0, M1, M2, M3, M4; - xmmi T0, T1, T2, T3, T4, T5, T6; - xmmi C1, C2; - - uint64_t r0, r1, r2; - uint64_t t0, t1, t2, t3, t4; - uint64_t c; - size_t consumed = 0; - - H0 = st->H[0]; - H1 = st->H[1]; - H2 = st->H[2]; - H3 = st->H[3]; - H4 = st->H[4]; - - /* p = [r^2,r^2] */ - p = &st->P[1]; - - if (bytes >= 32) { - /* H *= [r^2,r^2] */ - T0 = _mm_mul_epu32(H0, p->R20.v); - T1 = _mm_mul_epu32(H0, p->R21.v); - T2 = _mm_mul_epu32(H0, p->R22.v); - T3 = _mm_mul_epu32(H0, p->R23.v); - T4 = _mm_mul_epu32(H0, p->R24.v); - T5 = _mm_mul_epu32(H1, p->S24.v); - T6 = _mm_mul_epu32(H1, p->R20.v); - T0 = _mm_add_epi64(T0, T5); - T1 = _mm_add_epi64(T1, T6); - T5 = _mm_mul_epu32(H2, p->S23.v); - T6 = _mm_mul_epu32(H2, p->S24.v); - T0 = _mm_add_epi64(T0, T5); - T1 = _mm_add_epi64(T1, T6); - T5 = _mm_mul_epu32(H3, p->S22.v); - T6 = _mm_mul_epu32(H3, p->S23.v); - T0 = _mm_add_epi64(T0, T5); - T1 = _mm_add_epi64(T1, T6); - T5 = _mm_mul_epu32(H4, p->S21.v); - T6 = _mm_mul_epu32(H4, p->S22.v); - T0 = _mm_add_epi64(T0, T5); - T1 = _mm_add_epi64(T1, T6); - T5 = _mm_mul_epu32(H1, p->R21.v); - T6 = _mm_mul_epu32(H1, p->R22.v); - T2 = _mm_add_epi64(T2, T5); - T3 = _mm_add_epi64(T3, T6); - T5 = _mm_mul_epu32(H2, p->R20.v); - T6 = _mm_mul_epu32(H2, p->R21.v); - T2 = _mm_add_epi64(T2, T5); - T3 = _mm_add_epi64(T3, T6); - T5 = _mm_mul_epu32(H3, p->S24.v); - T6 = _mm_mul_epu32(H3, p->R20.v); - T2 = _mm_add_epi64(T2, T5); - T3 = _mm_add_epi64(T3, T6); - T5 = _mm_mul_epu32(H4, p->S23.v); - T6 = _mm_mul_epu32(H4, p->S24.v); - T2 = _mm_add_epi64(T2, T5); - T3 = _mm_add_epi64(T3, T6); - T5 = _mm_mul_epu32(H1, p->R23.v); - T4 = _mm_add_epi64(T4, T5); - T5 = _mm_mul_epu32(H2, p->R22.v); - T4 = _mm_add_epi64(T4, T5); - T5 = _mm_mul_epu32(H3, p->R21.v); - T4 = _mm_add_epi64(T4, T5); - T5 = _mm_mul_epu32(H4, p->R20.v); - T4 = _mm_add_epi64(T4, T5); - - /* H += [Mx,My] */ - T5 = _mm_unpacklo_epi64(_mm_loadl_epi64((xmmi *)(m + 0)), _mm_loadl_epi64((xmmi *)(m + 16))); - T6 = _mm_unpacklo_epi64(_mm_loadl_epi64((xmmi *)(m + 8)), _mm_loadl_epi64((xmmi *)(m + 24))); - M0 = _mm_and_si128(MMASK, T5); - M1 = _mm_and_si128(MMASK, _mm_srli_epi64(T5, 26)); - T5 = _mm_or_si128(_mm_srli_epi64(T5, 52), _mm_slli_epi64(T6, 12)); - M2 = _mm_and_si128(MMASK, T5); - M3 = _mm_and_si128(MMASK, _mm_srli_epi64(T5, 26)); - M4 = _mm_or_si128(_mm_srli_epi64(T6, 40), HIBIT); - - T0 = _mm_add_epi64(T0, M0); - T1 = _mm_add_epi64(T1, M1); - T2 = _mm_add_epi64(T2, M2); - T3 = _mm_add_epi64(T3, M3); - T4 = _mm_add_epi64(T4, M4); - - /* reduce */ - C1 = _mm_srli_epi64(T0, 26); - C2 = _mm_srli_epi64(T3, 26); - T0 = _mm_and_si128(T0, MMASK); - T3 = _mm_and_si128(T3, MMASK); - T1 = _mm_add_epi64(T1, C1); - T4 = _mm_add_epi64(T4, C2); - C1 = _mm_srli_epi64(T1, 26); - C2 = _mm_srli_epi64(T4, 26); - T1 = _mm_and_si128(T1, MMASK); - T4 = _mm_and_si128(T4, MMASK); - T2 = _mm_add_epi64(T2, C1); - T0 = _mm_add_epi64(T0, _mm_mul_epu32(C2, FIVE)); - C1 = _mm_srli_epi64(T2, 26); - C2 = _mm_srli_epi64(T0, 26); - T2 = _mm_and_si128(T2, MMASK); - T0 = _mm_and_si128(T0, MMASK); - T3 = _mm_add_epi64(T3, C1); - T1 = _mm_add_epi64(T1, C2); - C1 = _mm_srli_epi64(T3, 26); - T3 = _mm_and_si128(T3, MMASK); - T4 = _mm_add_epi64(T4, C1); - - /* H = (H*[r^2,r^2] + [Mx,My]) */ - H0 = T0; - H1 = T1; - H2 = T2; - H3 = T3; - H4 = T4; - - consumed = 32; - } - - /* finalize, H *= [r^2,r] */ - r0 = ((uint64_t)p->R20.d[3] << 32) | (uint64_t)p->R20.d[1]; - r1 = ((uint64_t)p->R21.d[3] << 32) | (uint64_t)p->R21.d[1]; - r2 = ((uint64_t)p->R22.d[3] << 32) | (uint64_t)p->R22.d[1]; - - p->R20.d[2] = (uint32_t)(r0)&0x3ffffff; - p->R21.d[2] = (uint32_t)((r0 >> 26) | (r1 << 18)) & 0x3ffffff; - p->R22.d[2] = (uint32_t)((r1 >> 8)) & 0x3ffffff; - p->R23.d[2] = (uint32_t)((r1 >> 34) | (r2 << 10)) & 0x3ffffff; - p->R24.d[2] = (uint32_t)((r2 >> 16)); - p->S21.d[2] = p->R21.d[2] * 5; - p->S22.d[2] = p->R22.d[2] * 5; - p->S23.d[2] = p->R23.d[2] * 5; - p->S24.d[2] = p->R24.d[2] * 5; - - /* H *= [r^2,r] */ - T0 = _mm_mul_epu32(H0, p->R20.v); - T1 = _mm_mul_epu32(H0, p->R21.v); - T2 = _mm_mul_epu32(H0, p->R22.v); - T3 = _mm_mul_epu32(H0, p->R23.v); - T4 = _mm_mul_epu32(H0, p->R24.v); - T5 = _mm_mul_epu32(H1, p->S24.v); - T6 = _mm_mul_epu32(H1, p->R20.v); - T0 = _mm_add_epi64(T0, T5); - T1 = _mm_add_epi64(T1, T6); - T5 = _mm_mul_epu32(H2, p->S23.v); - T6 = _mm_mul_epu32(H2, p->S24.v); - T0 = _mm_add_epi64(T0, T5); - T1 = _mm_add_epi64(T1, T6); - T5 = _mm_mul_epu32(H3, p->S22.v); - T6 = _mm_mul_epu32(H3, p->S23.v); - T0 = _mm_add_epi64(T0, T5); - T1 = _mm_add_epi64(T1, T6); - T5 = _mm_mul_epu32(H4, p->S21.v); - T6 = _mm_mul_epu32(H4, p->S22.v); - T0 = _mm_add_epi64(T0, T5); - T1 = _mm_add_epi64(T1, T6); - T5 = _mm_mul_epu32(H1, p->R21.v); - T6 = _mm_mul_epu32(H1, p->R22.v); - T2 = _mm_add_epi64(T2, T5); - T3 = _mm_add_epi64(T3, T6); - T5 = _mm_mul_epu32(H2, p->R20.v); - T6 = _mm_mul_epu32(H2, p->R21.v); - T2 = _mm_add_epi64(T2, T5); - T3 = _mm_add_epi64(T3, T6); - T5 = _mm_mul_epu32(H3, p->S24.v); - T6 = _mm_mul_epu32(H3, p->R20.v); - T2 = _mm_add_epi64(T2, T5); - T3 = _mm_add_epi64(T3, T6); - T5 = _mm_mul_epu32(H4, p->S23.v); - T6 = _mm_mul_epu32(H4, p->S24.v); - T2 = _mm_add_epi64(T2, T5); - T3 = _mm_add_epi64(T3, T6); - T5 = _mm_mul_epu32(H1, p->R23.v); - T4 = _mm_add_epi64(T4, T5); - T5 = _mm_mul_epu32(H2, p->R22.v); - T4 = _mm_add_epi64(T4, T5); - T5 = _mm_mul_epu32(H3, p->R21.v); - T4 = _mm_add_epi64(T4, T5); - T5 = _mm_mul_epu32(H4, p->R20.v); - T4 = _mm_add_epi64(T4, T5); - - C1 = _mm_srli_epi64(T0, 26); - C2 = _mm_srli_epi64(T3, 26); - T0 = _mm_and_si128(T0, MMASK); - T3 = _mm_and_si128(T3, MMASK); - T1 = _mm_add_epi64(T1, C1); - T4 = _mm_add_epi64(T4, C2); - C1 = _mm_srli_epi64(T1, 26); - C2 = _mm_srli_epi64(T4, 26); - T1 = _mm_and_si128(T1, MMASK); - T4 = _mm_and_si128(T4, MMASK); - T2 = _mm_add_epi64(T2, C1); - T0 = _mm_add_epi64(T0, _mm_mul_epu32(C2, FIVE)); - C1 = _mm_srli_epi64(T2, 26); - C2 = _mm_srli_epi64(T0, 26); - T2 = _mm_and_si128(T2, MMASK); - T0 = _mm_and_si128(T0, MMASK); - T3 = _mm_add_epi64(T3, C1); - T1 = _mm_add_epi64(T1, C2); - C1 = _mm_srli_epi64(T3, 26); - T3 = _mm_and_si128(T3, MMASK); - T4 = _mm_add_epi64(T4, C1); - - /* H = H[0]+H[1] */ - H0 = _mm_add_epi64(T0, _mm_srli_si128(T0, 8)); - H1 = _mm_add_epi64(T1, _mm_srli_si128(T1, 8)); - H2 = _mm_add_epi64(T2, _mm_srli_si128(T2, 8)); - H3 = _mm_add_epi64(T3, _mm_srli_si128(T3, 8)); - H4 = _mm_add_epi64(T4, _mm_srli_si128(T4, 8)); - - t0 = _mm_cvtsi128_si32(H0); - c = (t0 >> 26); - t0 &= 0x3ffffff; - t1 = _mm_cvtsi128_si32(H1) + c; - c = (t1 >> 26); - t1 &= 0x3ffffff; - t2 = _mm_cvtsi128_si32(H2) + c; - c = (t2 >> 26); - t2 &= 0x3ffffff; - t3 = _mm_cvtsi128_si32(H3) + c; - c = (t3 >> 26); - t3 &= 0x3ffffff; - t4 = _mm_cvtsi128_si32(H4) + c; - c = (t4 >> 26); - t4 &= 0x3ffffff; - t0 = t0 + (c * 5); - c = (t0 >> 26); - t0 &= 0x3ffffff; - t1 = t1 + c; - - st->HH[0] = ((t0) | (t1 << 26)) & 0xfffffffffffull; - st->HH[1] = ((t1 >> 18) | (t2 << 8) | (t3 << 34)) & 0xfffffffffffull; - st->HH[2] = ((t3 >> 10) | (t4 << 16)) & 0x3ffffffffffull; - - return consumed; -} - -void -Poly1305Update(poly1305_state *state, const unsigned char *m, size_t bytes) -{ - poly1305_state_internal *st = poly1305_aligned_state(state); - size_t want; - - /* need at least 32 initial bytes to start the accelerated branch */ - if (!st->started) { - if ((st->leftover == 0) && (bytes > 32)) { - poly1305_first_block(st, m); - m += 32; - bytes -= 32; - } else { - want = poly1305_min(32 - st->leftover, bytes); - poly1305_block_copy(st->buffer + st->leftover, m, want); - bytes -= want; - m += want; - st->leftover += want; - if ((st->leftover < 32) || (bytes == 0)) - return; - poly1305_first_block(st, st->buffer); - st->leftover = 0; - } - st->started = 1; - } - - /* handle leftover */ - if (st->leftover) { - want = poly1305_min(64 - st->leftover, bytes); - poly1305_block_copy(st->buffer + st->leftover, m, want); - bytes -= want; - m += want; - st->leftover += want; - if (st->leftover < 64) - return; - poly1305_blocks(st, st->buffer, 64); - st->leftover = 0; - } - - /* process 64 byte blocks */ - if (bytes >= 64) { - want = (bytes & ~63); - poly1305_blocks(st, m, want); - m += want; - bytes -= want; - } - - if (bytes) { - poly1305_block_copy(st->buffer + st->leftover, m, bytes); - st->leftover += bytes; - } -} - -void -Poly1305Finish(poly1305_state *state, unsigned char mac[16]) -{ - poly1305_state_internal *st = poly1305_aligned_state(state); - size_t leftover = st->leftover; - uint8_t *m = st->buffer; - uint128_t d[3]; - uint64_t h0, h1, h2; - uint64_t t0, t1; - uint64_t g0, g1, g2, c, nc; - uint64_t r0, r1, r2, s1, s2; - poly1305_power *p; - - if (st->started) { - size_t consumed = poly1305_combine(st, m, leftover); - leftover -= consumed; - m += consumed; - } - - /* st->HH will either be 0 or have the combined result */ - h0 = st->HH[0]; - h1 = st->HH[1]; - h2 = st->HH[2]; - - p = &st->P[1]; - r0 = ((uint64_t)p->R20.d[3] << 32) | (uint64_t)p->R20.d[1]; - r1 = ((uint64_t)p->R21.d[3] << 32) | (uint64_t)p->R21.d[1]; - r2 = ((uint64_t)p->R22.d[3] << 32) | (uint64_t)p->R22.d[1]; - s1 = r1 * (5 << 2); - s2 = r2 * (5 << 2); - - if (leftover < 16) - goto poly1305_donna_atmost15bytes; - -poly1305_donna_atleast16bytes: - t0 = U8TO64_LE(m + 0); - t1 = U8TO64_LE(m + 8); - h0 += t0 & 0xfffffffffff; - t0 = shr128_pair(t1, t0, 44); - h1 += t0 & 0xfffffffffff; - h2 += (t1 >> 24) | ((uint64_t)1 << 40); - -poly1305_donna_mul: - d[0] = add128(add128(mul64x64_128(h0, r0), mul64x64_128(h1, s2)), mul64x64_128(h2, s1)); - d[1] = add128(add128(mul64x64_128(h0, r1), mul64x64_128(h1, r0)), mul64x64_128(h2, s2)); - d[2] = add128(add128(mul64x64_128(h0, r2), mul64x64_128(h1, r1)), mul64x64_128(h2, r0)); - h0 = lo128(d[0]) & 0xfffffffffff; - c = shr128(d[0], 44); - d[1] = add128_64(d[1], c); - h1 = lo128(d[1]) & 0xfffffffffff; - c = shr128(d[1], 44); - d[2] = add128_64(d[2], c); - h2 = lo128(d[2]) & 0x3ffffffffff; - c = shr128(d[2], 42); - h0 += c * 5; - - m += 16; - leftover -= 16; - if (leftover >= 16) - goto poly1305_donna_atleast16bytes; - -/* final bytes */ -poly1305_donna_atmost15bytes: - if (!leftover) - goto poly1305_donna_finish; - - m[leftover++] = 1; - poly1305_block_zero(m + leftover, 16 - leftover); - leftover = 16; - - t0 = U8TO64_LE(m + 0); - t1 = U8TO64_LE(m + 8); - h0 += t0 & 0xfffffffffff; - t0 = shr128_pair(t1, t0, 44); - h1 += t0 & 0xfffffffffff; - h2 += (t1 >> 24); - - goto poly1305_donna_mul; - -poly1305_donna_finish: - c = (h0 >> 44); - h0 &= 0xfffffffffff; - h1 += c; - c = (h1 >> 44); - h1 &= 0xfffffffffff; - h2 += c; - c = (h2 >> 42); - h2 &= 0x3ffffffffff; - h0 += c * 5; - - g0 = h0 + 5; - c = (g0 >> 44); - g0 &= 0xfffffffffff; - g1 = h1 + c; - c = (g1 >> 44); - g1 &= 0xfffffffffff; - g2 = h2 + c - ((uint64_t)1 << 42); - - c = (g2 >> 63) - 1; - nc = ~c; - h0 = (h0 & nc) | (g0 & c); - h1 = (h1 & nc) | (g1 & c); - h2 = (h2 & nc) | (g2 & c); - - /* pad */ - t0 = ((uint64_t)p->R23.d[3] << 32) | (uint64_t)p->R23.d[1]; - t1 = ((uint64_t)p->R24.d[3] << 32) | (uint64_t)p->R24.d[1]; - h0 += (t0 & 0xfffffffffff); - c = (h0 >> 44); - h0 &= 0xfffffffffff; - t0 = shr128_pair(t1, t0, 44); - h1 += (t0 & 0xfffffffffff) + c; - c = (h1 >> 44); - h1 &= 0xfffffffffff; - t1 = (t1 >> 24); - h2 += (t1) + c; - - U64TO8_LE(mac + 0, ((h0) | (h1 << 44))); - U64TO8_LE(mac + 8, ((h1 >> 20) | (h2 << 24))); -} diff --git a/security/nss/lib/freebl/poly1305.c b/security/nss/lib/freebl/poly1305.c deleted file mode 100644 index eb3e3cd55..000000000 --- a/security/nss/lib/freebl/poly1305.c +++ /dev/null @@ -1,314 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* This implementation of poly1305 is by Andrew Moon - * (https://github.com/floodyberry/poly1305-donna) and released as public - * domain. */ - -#include <string.h> - -#include "poly1305.h" - -#if defined(_MSC_VER) && _MSC_VER < 1600 -#include "prtypes.h" -typedef PRUint32 uint32_t; -typedef PRUint64 uint64_t; -#else -#include <stdint.h> -#endif - -#if defined(NSS_X86) || defined(NSS_X64) -/* We can assume little-endian. */ -static uint32_t -U8TO32_LE(const unsigned char *m) -{ - uint32_t r; - memcpy(&r, m, sizeof(r)); - return r; -} - -static void -U32TO8_LE(unsigned char *m, uint32_t v) -{ - memcpy(m, &v, sizeof(v)); -} -#else -static uint32_t -U8TO32_LE(const unsigned char *m) -{ - return (uint32_t)m[0] | - (uint32_t)m[1] << 8 | - (uint32_t)m[2] << 16 | - (uint32_t)m[3] << 24; -} - -static void -U32TO8_LE(unsigned char *m, uint32_t v) -{ - m[0] = v; - m[1] = v >> 8; - m[2] = v >> 16; - m[3] = v >> 24; -} -#endif - -static uint64_t -mul32x32_64(uint32_t a, uint32_t b) -{ - return (uint64_t)a * b; -} - -struct poly1305_state_st { - uint32_t r0, r1, r2, r3, r4; - uint32_t s1, s2, s3, s4; - uint32_t h0, h1, h2, h3, h4; - unsigned char buf[16]; - unsigned int buf_used; - unsigned char key[16]; -}; - -/* update updates |state| given some amount of input data. This function may - * only be called with a |len| that is not a multiple of 16 at the end of the - * data. Otherwise the input must be buffered into 16 byte blocks. */ -static void -update(struct poly1305_state_st *state, const unsigned char *in, - size_t len) -{ - uint32_t t0, t1, t2, t3; - uint64_t t[5]; - uint32_t b; - uint64_t c; - size_t j; - unsigned char mp[16]; - - if (len < 16) - goto poly1305_donna_atmost15bytes; - -poly1305_donna_16bytes: - t0 = U8TO32_LE(in); - t1 = U8TO32_LE(in + 4); - t2 = U8TO32_LE(in + 8); - t3 = U8TO32_LE(in + 12); - - in += 16; - len -= 16; - - state->h0 += t0 & 0x3ffffff; - state->h1 += ((((uint64_t)t1 << 32) | t0) >> 26) & 0x3ffffff; - state->h2 += ((((uint64_t)t2 << 32) | t1) >> 20) & 0x3ffffff; - state->h3 += ((((uint64_t)t3 << 32) | t2) >> 14) & 0x3ffffff; - state->h4 += (t3 >> 8) | (1 << 24); - -poly1305_donna_mul: - t[0] = mul32x32_64(state->h0, state->r0) + - mul32x32_64(state->h1, state->s4) + - mul32x32_64(state->h2, state->s3) + - mul32x32_64(state->h3, state->s2) + - mul32x32_64(state->h4, state->s1); - t[1] = mul32x32_64(state->h0, state->r1) + - mul32x32_64(state->h1, state->r0) + - mul32x32_64(state->h2, state->s4) + - mul32x32_64(state->h3, state->s3) + - mul32x32_64(state->h4, state->s2); - t[2] = mul32x32_64(state->h0, state->r2) + - mul32x32_64(state->h1, state->r1) + - mul32x32_64(state->h2, state->r0) + - mul32x32_64(state->h3, state->s4) + - mul32x32_64(state->h4, state->s3); - t[3] = mul32x32_64(state->h0, state->r3) + - mul32x32_64(state->h1, state->r2) + - mul32x32_64(state->h2, state->r1) + - mul32x32_64(state->h3, state->r0) + - mul32x32_64(state->h4, state->s4); - t[4] = mul32x32_64(state->h0, state->r4) + - mul32x32_64(state->h1, state->r3) + - mul32x32_64(state->h2, state->r2) + - mul32x32_64(state->h3, state->r1) + - mul32x32_64(state->h4, state->r0); - - state->h0 = (uint32_t)t[0] & 0x3ffffff; - c = (t[0] >> 26); - t[1] += c; - state->h1 = (uint32_t)t[1] & 0x3ffffff; - b = (uint32_t)(t[1] >> 26); - t[2] += b; - state->h2 = (uint32_t)t[2] & 0x3ffffff; - b = (uint32_t)(t[2] >> 26); - t[3] += b; - state->h3 = (uint32_t)t[3] & 0x3ffffff; - b = (uint32_t)(t[3] >> 26); - t[4] += b; - state->h4 = (uint32_t)t[4] & 0x3ffffff; - b = (uint32_t)(t[4] >> 26); - state->h0 += b * 5; - - if (len >= 16) - goto poly1305_donna_16bytes; - -/* final bytes */ -poly1305_donna_atmost15bytes: - if (!len) - return; - - for (j = 0; j < len; j++) - mp[j] = in[j]; - mp[j++] = 1; - for (; j < 16; j++) - mp[j] = 0; - len = 0; - - t0 = U8TO32_LE(mp + 0); - t1 = U8TO32_LE(mp + 4); - t2 = U8TO32_LE(mp + 8); - t3 = U8TO32_LE(mp + 12); - - state->h0 += t0 & 0x3ffffff; - state->h1 += ((((uint64_t)t1 << 32) | t0) >> 26) & 0x3ffffff; - state->h2 += ((((uint64_t)t2 << 32) | t1) >> 20) & 0x3ffffff; - state->h3 += ((((uint64_t)t3 << 32) | t2) >> 14) & 0x3ffffff; - state->h4 += (t3 >> 8); - - goto poly1305_donna_mul; -} - -void -Poly1305Init(poly1305_state *statep, const unsigned char key[32]) -{ - struct poly1305_state_st *state = (struct poly1305_state_st *)statep; - uint32_t t0, t1, t2, t3; - - t0 = U8TO32_LE(key + 0); - t1 = U8TO32_LE(key + 4); - t2 = U8TO32_LE(key + 8); - t3 = U8TO32_LE(key + 12); - - /* precompute multipliers */ - state->r0 = t0 & 0x3ffffff; - t0 >>= 26; - t0 |= t1 << 6; - state->r1 = t0 & 0x3ffff03; - t1 >>= 20; - t1 |= t2 << 12; - state->r2 = t1 & 0x3ffc0ff; - t2 >>= 14; - t2 |= t3 << 18; - state->r3 = t2 & 0x3f03fff; - t3 >>= 8; - state->r4 = t3 & 0x00fffff; - - state->s1 = state->r1 * 5; - state->s2 = state->r2 * 5; - state->s3 = state->r3 * 5; - state->s4 = state->r4 * 5; - - /* init state */ - state->h0 = 0; - state->h1 = 0; - state->h2 = 0; - state->h3 = 0; - state->h4 = 0; - - state->buf_used = 0; - memcpy(state->key, key + 16, sizeof(state->key)); -} - -void -Poly1305Update(poly1305_state *statep, const unsigned char *in, - size_t in_len) -{ - unsigned int i; - struct poly1305_state_st *state = (struct poly1305_state_st *)statep; - - if (state->buf_used) { - unsigned int todo = 16 - state->buf_used; - if (todo > in_len) - todo = in_len; - for (i = 0; i < todo; i++) - state->buf[state->buf_used + i] = in[i]; - state->buf_used += todo; - in_len -= todo; - in += todo; - - if (state->buf_used == 16) { - update(state, state->buf, 16); - state->buf_used = 0; - } - } - - if (in_len >= 16) { - size_t todo = in_len & ~0xf; - update(state, in, todo); - in += todo; - in_len &= 0xf; - } - - if (in_len) { - for (i = 0; i < in_len; i++) - state->buf[i] = in[i]; - state->buf_used = in_len; - } -} - -void -Poly1305Finish(poly1305_state *statep, unsigned char mac[16]) -{ - struct poly1305_state_st *state = (struct poly1305_state_st *)statep; - uint64_t f0, f1, f2, f3; - uint32_t g0, g1, g2, g3, g4; - uint32_t b, nb; - - if (state->buf_used) - update(state, state->buf, state->buf_used); - - b = state->h0 >> 26; - state->h0 = state->h0 & 0x3ffffff; - state->h1 += b; - b = state->h1 >> 26; - state->h1 = state->h1 & 0x3ffffff; - state->h2 += b; - b = state->h2 >> 26; - state->h2 = state->h2 & 0x3ffffff; - state->h3 += b; - b = state->h3 >> 26; - state->h3 = state->h3 & 0x3ffffff; - state->h4 += b; - b = state->h4 >> 26; - state->h4 = state->h4 & 0x3ffffff; - state->h0 += b * 5; - - g0 = state->h0 + 5; - b = g0 >> 26; - g0 &= 0x3ffffff; - g1 = state->h1 + b; - b = g1 >> 26; - g1 &= 0x3ffffff; - g2 = state->h2 + b; - b = g2 >> 26; - g2 &= 0x3ffffff; - g3 = state->h3 + b; - b = g3 >> 26; - g3 &= 0x3ffffff; - g4 = state->h4 + b - (1 << 26); - - b = (g4 >> 31) - 1; - nb = ~b; - state->h0 = (state->h0 & nb) | (g0 & b); - state->h1 = (state->h1 & nb) | (g1 & b); - state->h2 = (state->h2 & nb) | (g2 & b); - state->h3 = (state->h3 & nb) | (g3 & b); - state->h4 = (state->h4 & nb) | (g4 & b); - - f0 = ((state->h0) | (state->h1 << 26)) + (uint64_t)U8TO32_LE(&state->key[0]); - f1 = ((state->h1 >> 6) | (state->h2 << 20)) + (uint64_t)U8TO32_LE(&state->key[4]); - f2 = ((state->h2 >> 12) | (state->h3 << 14)) + (uint64_t)U8TO32_LE(&state->key[8]); - f3 = ((state->h3 >> 18) | (state->h4 << 8)) + (uint64_t)U8TO32_LE(&state->key[12]); - - U32TO8_LE(&mac[0], (uint32_t)f0); - f1 += (f0 >> 32); - U32TO8_LE(&mac[4], (uint32_t)f1); - f2 += (f1 >> 32); - U32TO8_LE(&mac[8], (uint32_t)f2); - f3 += (f2 >> 32); - U32TO8_LE(&mac[12], (uint32_t)f3); -} diff --git a/security/nss/lib/freebl/poly1305.h b/security/nss/lib/freebl/poly1305.h deleted file mode 100644 index 125f49b3b..000000000 --- a/security/nss/lib/freebl/poly1305.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * poly1305.h - header file for Poly1305 implementation. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef FREEBL_POLY1305_H_ -#define FREEBL_POLY1305_H_ - -#include "stddef.h" - -typedef unsigned char poly1305_state[512]; - -/* Poly1305Init sets up |state| so that it can be used to calculate an - * authentication tag with the one-time key |key|. Note that |key| is a - * one-time key and therefore there is no `reset' method because that would - * enable several messages to be authenticated with the same key. */ -extern void Poly1305Init(poly1305_state* state, const unsigned char key[32]); - -/* Poly1305Update processes |in_len| bytes from |in|. It can be called zero or - * more times after poly1305_init. */ -extern void Poly1305Update(poly1305_state* state, const unsigned char* in, - size_t inLen); - -/* Poly1305Finish completes the poly1305 calculation and writes a 16 byte - * authentication tag to |mac|. */ -extern void Poly1305Finish(poly1305_state* state, unsigned char mac[16]); - -#endif /* FREEBL_POLY1305_H_ */ diff --git a/security/nss/lib/freebl/unix_urandom.c b/security/nss/lib/freebl/unix_urandom.c index 25e6ad91c..869a5ed8c 100644 --- a/security/nss/lib/freebl/unix_urandom.c +++ b/security/nss/lib/freebl/unix_urandom.c @@ -4,10 +4,14 @@ #include <fcntl.h> #include <unistd.h> +#include <errno.h> #include "secerr.h" #include "secrng.h" #include "prprf.h" +/* syscall getentropy() is limited to retrieving 256 bytes */ +#define GETENTROPY_MAX_BYTES 256 + void RNG_SystemInfoForRNG(void) { @@ -28,6 +32,35 @@ RNG_SystemRNG(void *dest, size_t maxLen) size_t fileBytes = 0; unsigned char *buffer = dest; +#if defined(__OpenBSD__) || (defined(LINUX) && defined(__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 25)))) + int result; + + while (fileBytes < maxLen) { + size_t getBytes = maxLen - fileBytes; + if (getBytes > GETENTROPY_MAX_BYTES) { + getBytes = GETENTROPY_MAX_BYTES; + } + result = getentropy(buffer, getBytes); + if (result == 0) { /* success */ + fileBytes += getBytes; + buffer += getBytes; + } else { + break; + } + } + if (fileBytes == maxLen) { /* success */ + return maxLen; + } + /* If we failed with an error other than ENOSYS, it means the destination + * buffer is not writeable. We don't need to try writing to it again. */ + if (errno != ENOSYS) { + PORT_SetError(SEC_ERROR_NEED_RANDOM); + return 0; + } + /* ENOSYS means the kernel doesn't support getentropy()/getrandom(). + * Reset the number of bytes to get and fall back to /dev/urandom. */ + fileBytes = 0; +#endif fd = open("/dev/urandom", O_RDONLY); if (fd < 0) { PORT_SetError(SEC_ERROR_NEED_RANDOM); diff --git a/security/nss/lib/freebl/verified/Hacl_Poly1305_32.c b/security/nss/lib/freebl/verified/Hacl_Poly1305_32.c new file mode 100644 index 000000000..246a41af3 --- /dev/null +++ b/security/nss/lib/freebl/verified/Hacl_Poly1305_32.c @@ -0,0 +1,578 @@ +/* Copyright 2016-2017 INRIA and Microsoft Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "Hacl_Poly1305_32.h" + +inline static void +Hacl_Bignum_Modulo_reduce(uint32_t *b) +{ + uint32_t b0 = b[0U]; + b[0U] = (b0 << (uint32_t)2U) + b0; +} + +inline static void +Hacl_Bignum_Modulo_carry_top(uint32_t *b) +{ + uint32_t b4 = b[4U]; + uint32_t b0 = b[0U]; + uint32_t b4_26 = b4 >> (uint32_t)26U; + b[4U] = b4 & (uint32_t)0x3ffffffU; + b[0U] = (b4_26 << (uint32_t)2U) + b4_26 + b0; +} + +inline static void +Hacl_Bignum_Modulo_carry_top_wide(uint64_t *b) +{ + uint64_t b4 = b[4U]; + uint64_t b0 = b[0U]; + uint64_t b4_ = b4 & (uint64_t)(uint32_t)0x3ffffffU; + uint32_t b4_26 = (uint32_t)(b4 >> (uint32_t)26U); + uint64_t b0_ = b0 + (uint64_t)((b4_26 << (uint32_t)2U) + b4_26); + b[4U] = b4_; + b[0U] = b0_; +} + +inline static void +Hacl_Bignum_Fproduct_copy_from_wide_(uint32_t *output, uint64_t *input) +{ + for (uint32_t i = (uint32_t)0U; i < (uint32_t)5U; i = i + (uint32_t)1U) { + uint64_t xi = input[i]; + output[i] = (uint32_t)xi; + } +} + +inline static void +Hacl_Bignum_Fproduct_sum_scalar_multiplication_(uint64_t *output, uint32_t *input, uint32_t s) +{ + for (uint32_t i = (uint32_t)0U; i < (uint32_t)5U; i = i + (uint32_t)1U) { + uint64_t xi = output[i]; + uint32_t yi = input[i]; + uint64_t x_wide = (uint64_t)yi; + uint64_t y_wide = (uint64_t)s; + output[i] = xi + x_wide * y_wide; + } +} + +inline static void +Hacl_Bignum_Fproduct_carry_wide_(uint64_t *tmp) +{ + for (uint32_t i = (uint32_t)0U; i < (uint32_t)4U; i = i + (uint32_t)1U) { + uint32_t ctr = i; + uint64_t tctr = tmp[ctr]; + uint64_t tctrp1 = tmp[ctr + (uint32_t)1U]; + uint32_t r0 = (uint32_t)tctr & (uint32_t)0x3ffffffU; + uint64_t c = tctr >> (uint32_t)26U; + tmp[ctr] = (uint64_t)r0; + tmp[ctr + (uint32_t)1U] = tctrp1 + c; + } +} + +inline static void +Hacl_Bignum_Fproduct_carry_limb_(uint32_t *tmp) +{ + for (uint32_t i = (uint32_t)0U; i < (uint32_t)4U; i = i + (uint32_t)1U) { + uint32_t ctr = i; + uint32_t tctr = tmp[ctr]; + uint32_t tctrp1 = tmp[ctr + (uint32_t)1U]; + uint32_t r0 = tctr & (uint32_t)0x3ffffffU; + uint32_t c = tctr >> (uint32_t)26U; + tmp[ctr] = r0; + tmp[ctr + (uint32_t)1U] = tctrp1 + c; + } +} + +inline static void +Hacl_Bignum_Fmul_shift_reduce(uint32_t *output) +{ + uint32_t tmp = output[4U]; + for (uint32_t i = (uint32_t)0U; i < (uint32_t)4U; i = i + (uint32_t)1U) { + uint32_t ctr = (uint32_t)5U - i - (uint32_t)1U; + uint32_t z = output[ctr - (uint32_t)1U]; + output[ctr] = z; + } + output[0U] = tmp; + Hacl_Bignum_Modulo_reduce(output); +} + +static void +Hacl_Bignum_Fmul_mul_shift_reduce_(uint64_t *output, uint32_t *input, uint32_t *input2) +{ + for (uint32_t i = (uint32_t)0U; i < (uint32_t)4U; i = i + (uint32_t)1U) { + uint32_t input2i = input2[i]; + Hacl_Bignum_Fproduct_sum_scalar_multiplication_(output, input, input2i); + Hacl_Bignum_Fmul_shift_reduce(input); + } + uint32_t i = (uint32_t)4U; + uint32_t input2i = input2[i]; + Hacl_Bignum_Fproduct_sum_scalar_multiplication_(output, input, input2i); +} + +inline static void +Hacl_Bignum_Fmul_fmul(uint32_t *output, uint32_t *input, uint32_t *input2) +{ + uint32_t tmp[5U] = { 0U }; + memcpy(tmp, input, (uint32_t)5U * sizeof input[0U]); + uint64_t t[5U] = { 0U }; + Hacl_Bignum_Fmul_mul_shift_reduce_(t, tmp, input2); + Hacl_Bignum_Fproduct_carry_wide_(t); + Hacl_Bignum_Modulo_carry_top_wide(t); + Hacl_Bignum_Fproduct_copy_from_wide_(output, t); + uint32_t i0 = output[0U]; + uint32_t i1 = output[1U]; + uint32_t i0_ = i0 & (uint32_t)0x3ffffffU; + uint32_t i1_ = i1 + (i0 >> (uint32_t)26U); + output[0U] = i0_; + output[1U] = i1_; +} + +inline static void +Hacl_Bignum_AddAndMultiply_add_and_multiply(uint32_t *acc, uint32_t *block, uint32_t *r) +{ + for (uint32_t i = (uint32_t)0U; i < (uint32_t)5U; i = i + (uint32_t)1U) { + uint32_t xi = acc[i]; + uint32_t yi = block[i]; + acc[i] = xi + yi; + } + Hacl_Bignum_Fmul_fmul(acc, acc, r); +} + +inline static void +Hacl_Impl_Poly1305_32_poly1305_update( + Hacl_Impl_Poly1305_32_State_poly1305_state st, + uint8_t *m) +{ + Hacl_Impl_Poly1305_32_State_poly1305_state scrut0 = st; + uint32_t *h = scrut0.h; + uint32_t *acc = h; + Hacl_Impl_Poly1305_32_State_poly1305_state scrut = st; + uint32_t *r = scrut.r; + uint32_t *r5 = r; + uint32_t tmp[5U] = { 0U }; + uint8_t *s0 = m; + uint8_t *s1 = m + (uint32_t)3U; + uint8_t *s2 = m + (uint32_t)6U; + uint8_t *s3 = m + (uint32_t)9U; + uint8_t *s4 = m + (uint32_t)12U; + uint32_t i0 = load32_le(s0); + uint32_t i1 = load32_le(s1); + uint32_t i2 = load32_le(s2); + uint32_t i3 = load32_le(s3); + uint32_t i4 = load32_le(s4); + uint32_t r0 = i0 & (uint32_t)0x3ffffffU; + uint32_t r1 = i1 >> (uint32_t)2U & (uint32_t)0x3ffffffU; + uint32_t r2 = i2 >> (uint32_t)4U & (uint32_t)0x3ffffffU; + uint32_t r3 = i3 >> (uint32_t)6U & (uint32_t)0x3ffffffU; + uint32_t r4 = i4 >> (uint32_t)8U; + tmp[0U] = r0; + tmp[1U] = r1; + tmp[2U] = r2; + tmp[3U] = r3; + tmp[4U] = r4; + uint32_t b4 = tmp[4U]; + uint32_t b4_ = (uint32_t)0x1000000U | b4; + tmp[4U] = b4_; + Hacl_Bignum_AddAndMultiply_add_and_multiply(acc, tmp, r5); +} + +inline static void +Hacl_Impl_Poly1305_32_poly1305_process_last_block_( + uint8_t *block, + Hacl_Impl_Poly1305_32_State_poly1305_state st, + uint8_t *m, + uint64_t rem_) +{ + uint32_t tmp[5U] = { 0U }; + uint8_t *s0 = block; + uint8_t *s1 = block + (uint32_t)3U; + uint8_t *s2 = block + (uint32_t)6U; + uint8_t *s3 = block + (uint32_t)9U; + uint8_t *s4 = block + (uint32_t)12U; + uint32_t i0 = load32_le(s0); + uint32_t i1 = load32_le(s1); + uint32_t i2 = load32_le(s2); + uint32_t i3 = load32_le(s3); + uint32_t i4 = load32_le(s4); + uint32_t r0 = i0 & (uint32_t)0x3ffffffU; + uint32_t r1 = i1 >> (uint32_t)2U & (uint32_t)0x3ffffffU; + uint32_t r2 = i2 >> (uint32_t)4U & (uint32_t)0x3ffffffU; + uint32_t r3 = i3 >> (uint32_t)6U & (uint32_t)0x3ffffffU; + uint32_t r4 = i4 >> (uint32_t)8U; + tmp[0U] = r0; + tmp[1U] = r1; + tmp[2U] = r2; + tmp[3U] = r3; + tmp[4U] = r4; + Hacl_Impl_Poly1305_32_State_poly1305_state scrut0 = st; + uint32_t *h = scrut0.h; + Hacl_Impl_Poly1305_32_State_poly1305_state scrut = st; + uint32_t *r = scrut.r; + Hacl_Bignum_AddAndMultiply_add_and_multiply(h, tmp, r); +} + +inline static void +Hacl_Impl_Poly1305_32_poly1305_process_last_block( + Hacl_Impl_Poly1305_32_State_poly1305_state st, + uint8_t *m, + uint64_t rem_) +{ + uint8_t zero1 = (uint8_t)0U; + KRML_CHECK_SIZE(zero1, (uint32_t)16U); + uint8_t block[16U]; + for (uint32_t _i = 0U; _i < (uint32_t)16U; ++_i) + block[_i] = zero1; + uint32_t i0 = (uint32_t)rem_; + uint32_t i = (uint32_t)rem_; + memcpy(block, m, i * sizeof m[0U]); + block[i0] = (uint8_t)1U; + Hacl_Impl_Poly1305_32_poly1305_process_last_block_(block, st, m, rem_); +} + +static void +Hacl_Impl_Poly1305_32_poly1305_last_pass(uint32_t *acc) +{ + Hacl_Bignum_Fproduct_carry_limb_(acc); + Hacl_Bignum_Modulo_carry_top(acc); + uint32_t t0 = acc[0U]; + uint32_t t10 = acc[1U]; + uint32_t t20 = acc[2U]; + uint32_t t30 = acc[3U]; + uint32_t t40 = acc[4U]; + uint32_t t1_ = t10 + (t0 >> (uint32_t)26U); + uint32_t mask_261 = (uint32_t)0x3ffffffU; + uint32_t t0_ = t0 & mask_261; + uint32_t t2_ = t20 + (t1_ >> (uint32_t)26U); + uint32_t t1__ = t1_ & mask_261; + uint32_t t3_ = t30 + (t2_ >> (uint32_t)26U); + uint32_t t2__ = t2_ & mask_261; + uint32_t t4_ = t40 + (t3_ >> (uint32_t)26U); + uint32_t t3__ = t3_ & mask_261; + acc[0U] = t0_; + acc[1U] = t1__; + acc[2U] = t2__; + acc[3U] = t3__; + acc[4U] = t4_; + Hacl_Bignum_Modulo_carry_top(acc); + uint32_t t00 = acc[0U]; + uint32_t t1 = acc[1U]; + uint32_t t2 = acc[2U]; + uint32_t t3 = acc[3U]; + uint32_t t4 = acc[4U]; + uint32_t t1_0 = t1 + (t00 >> (uint32_t)26U); + uint32_t t0_0 = t00 & (uint32_t)0x3ffffffU; + uint32_t t2_0 = t2 + (t1_0 >> (uint32_t)26U); + uint32_t t1__0 = t1_0 & (uint32_t)0x3ffffffU; + uint32_t t3_0 = t3 + (t2_0 >> (uint32_t)26U); + uint32_t t2__0 = t2_0 & (uint32_t)0x3ffffffU; + uint32_t t4_0 = t4 + (t3_0 >> (uint32_t)26U); + uint32_t t3__0 = t3_0 & (uint32_t)0x3ffffffU; + acc[0U] = t0_0; + acc[1U] = t1__0; + acc[2U] = t2__0; + acc[3U] = t3__0; + acc[4U] = t4_0; + Hacl_Bignum_Modulo_carry_top(acc); + uint32_t i0 = acc[0U]; + uint32_t i1 = acc[1U]; + uint32_t i0_ = i0 & (uint32_t)0x3ffffffU; + uint32_t i1_ = i1 + (i0 >> (uint32_t)26U); + acc[0U] = i0_; + acc[1U] = i1_; + uint32_t a0 = acc[0U]; + uint32_t a1 = acc[1U]; + uint32_t a2 = acc[2U]; + uint32_t a3 = acc[3U]; + uint32_t a4 = acc[4U]; + uint32_t mask0 = FStar_UInt32_gte_mask(a0, (uint32_t)0x3fffffbU); + uint32_t mask1 = FStar_UInt32_eq_mask(a1, (uint32_t)0x3ffffffU); + uint32_t mask2 = FStar_UInt32_eq_mask(a2, (uint32_t)0x3ffffffU); + uint32_t mask3 = FStar_UInt32_eq_mask(a3, (uint32_t)0x3ffffffU); + uint32_t mask4 = FStar_UInt32_eq_mask(a4, (uint32_t)0x3ffffffU); + uint32_t mask = (((mask0 & mask1) & mask2) & mask3) & mask4; + uint32_t a0_ = a0 - ((uint32_t)0x3fffffbU & mask); + uint32_t a1_ = a1 - ((uint32_t)0x3ffffffU & mask); + uint32_t a2_ = a2 - ((uint32_t)0x3ffffffU & mask); + uint32_t a3_ = a3 - ((uint32_t)0x3ffffffU & mask); + uint32_t a4_ = a4 - ((uint32_t)0x3ffffffU & mask); + acc[0U] = a0_; + acc[1U] = a1_; + acc[2U] = a2_; + acc[3U] = a3_; + acc[4U] = a4_; +} + +static Hacl_Impl_Poly1305_32_State_poly1305_state +Hacl_Impl_Poly1305_32_mk_state(uint32_t *r, uint32_t *h) +{ + return ((Hacl_Impl_Poly1305_32_State_poly1305_state){.r = r, .h = h }); +} + +static void +Hacl_Standalone_Poly1305_32_poly1305_blocks( + Hacl_Impl_Poly1305_32_State_poly1305_state st, + uint8_t *m, + uint64_t len1) +{ + if (!(len1 == (uint64_t)0U)) { + uint8_t *block = m; + uint8_t *tail1 = m + (uint32_t)16U; + Hacl_Impl_Poly1305_32_poly1305_update(st, block); + uint64_t len2 = len1 - (uint64_t)1U; + Hacl_Standalone_Poly1305_32_poly1305_blocks(st, tail1, len2); + } +} + +static void +Hacl_Standalone_Poly1305_32_poly1305_partial( + Hacl_Impl_Poly1305_32_State_poly1305_state st, + uint8_t *input, + uint64_t len1, + uint8_t *kr) +{ + Hacl_Impl_Poly1305_32_State_poly1305_state scrut = st; + uint32_t *r = scrut.r; + uint32_t *x0 = r; + FStar_UInt128_t k1 = load128_le(kr); + FStar_UInt128_t + k_clamped = + FStar_UInt128_logand(k1, + FStar_UInt128_logor(FStar_UInt128_shift_left(FStar_UInt128_uint64_to_uint128((uint64_t)0x0ffffffc0ffffffcU), + (uint32_t)64U), + FStar_UInt128_uint64_to_uint128((uint64_t)0x0ffffffc0fffffffU))); + uint32_t r0 = (uint32_t)FStar_UInt128_uint128_to_uint64(k_clamped) & (uint32_t)0x3ffffffU; + uint32_t + r1 = + (uint32_t)FStar_UInt128_uint128_to_uint64(FStar_UInt128_shift_right(k_clamped, (uint32_t)26U)) & (uint32_t)0x3ffffffU; + uint32_t + r2 = + (uint32_t)FStar_UInt128_uint128_to_uint64(FStar_UInt128_shift_right(k_clamped, (uint32_t)52U)) & (uint32_t)0x3ffffffU; + uint32_t + r3 = + (uint32_t)FStar_UInt128_uint128_to_uint64(FStar_UInt128_shift_right(k_clamped, (uint32_t)78U)) & (uint32_t)0x3ffffffU; + uint32_t + r4 = + (uint32_t)FStar_UInt128_uint128_to_uint64(FStar_UInt128_shift_right(k_clamped, (uint32_t)104U)) & (uint32_t)0x3ffffffU; + x0[0U] = r0; + x0[1U] = r1; + x0[2U] = r2; + x0[3U] = r3; + x0[4U] = r4; + Hacl_Impl_Poly1305_32_State_poly1305_state scrut0 = st; + uint32_t *h = scrut0.h; + uint32_t *x00 = h; + x00[0U] = (uint32_t)0U; + x00[1U] = (uint32_t)0U; + x00[2U] = (uint32_t)0U; + x00[3U] = (uint32_t)0U; + x00[4U] = (uint32_t)0U; + Hacl_Standalone_Poly1305_32_poly1305_blocks(st, input, len1); +} + +static void +Hacl_Standalone_Poly1305_32_poly1305_complete( + Hacl_Impl_Poly1305_32_State_poly1305_state st, + uint8_t *m, + uint64_t len1, + uint8_t *k1) +{ + uint8_t *kr = k1; + uint64_t len16 = len1 >> (uint32_t)4U; + uint64_t rem16 = len1 & (uint64_t)0xfU; + uint8_t *part_input = m; + uint8_t *last_block = m + (uint32_t)((uint64_t)16U * len16); + Hacl_Standalone_Poly1305_32_poly1305_partial(st, part_input, len16, kr); + if (!(rem16 == (uint64_t)0U)) + Hacl_Impl_Poly1305_32_poly1305_process_last_block(st, last_block, rem16); + Hacl_Impl_Poly1305_32_State_poly1305_state scrut = st; + uint32_t *h = scrut.h; + uint32_t *acc = h; + Hacl_Impl_Poly1305_32_poly1305_last_pass(acc); +} + +static void +Hacl_Standalone_Poly1305_32_crypto_onetimeauth_( + uint8_t *output, + uint8_t *input, + uint64_t len1, + uint8_t *k1) +{ + uint32_t buf[10U] = { 0U }; + uint32_t *r = buf; + uint32_t *h = buf + (uint32_t)5U; + Hacl_Impl_Poly1305_32_State_poly1305_state st = Hacl_Impl_Poly1305_32_mk_state(r, h); + uint8_t *key_s = k1 + (uint32_t)16U; + Hacl_Standalone_Poly1305_32_poly1305_complete(st, input, len1, k1); + Hacl_Impl_Poly1305_32_State_poly1305_state scrut = st; + uint32_t *h5 = scrut.h; + uint32_t *acc = h5; + FStar_UInt128_t k_ = load128_le(key_s); + uint32_t h0 = acc[0U]; + uint32_t h1 = acc[1U]; + uint32_t h2 = acc[2U]; + uint32_t h3 = acc[3U]; + uint32_t h4 = acc[4U]; + FStar_UInt128_t + acc_ = + FStar_UInt128_logor(FStar_UInt128_shift_left(FStar_UInt128_uint64_to_uint128((uint64_t)h4), + (uint32_t)104U), + FStar_UInt128_logor(FStar_UInt128_shift_left(FStar_UInt128_uint64_to_uint128((uint64_t)h3), + (uint32_t)78U), + FStar_UInt128_logor(FStar_UInt128_shift_left(FStar_UInt128_uint64_to_uint128((uint64_t)h2), + (uint32_t)52U), + FStar_UInt128_logor(FStar_UInt128_shift_left(FStar_UInt128_uint64_to_uint128((uint64_t)h1), + (uint32_t)26U), + FStar_UInt128_uint64_to_uint128((uint64_t)h0))))); + FStar_UInt128_t mac_ = FStar_UInt128_add_mod(acc_, k_); + store128_le(output, mac_); +} + +static void +Hacl_Standalone_Poly1305_32_crypto_onetimeauth( + uint8_t *output, + uint8_t *input, + uint64_t len1, + uint8_t *k1) +{ + Hacl_Standalone_Poly1305_32_crypto_onetimeauth_(output, input, len1, k1); +} + +void * +Hacl_Poly1305_32_op_String_Access(FStar_Monotonic_HyperStack_mem h, uint8_t *b) +{ + return (void *)(uint8_t)0U; +} + +Hacl_Impl_Poly1305_32_State_poly1305_state +Hacl_Poly1305_32_mk_state(uint32_t *r, uint32_t *acc) +{ + return Hacl_Impl_Poly1305_32_mk_state(r, acc); +} + +void +Hacl_Poly1305_32_init(Hacl_Impl_Poly1305_32_State_poly1305_state st, uint8_t *k1) +{ + Hacl_Impl_Poly1305_32_State_poly1305_state scrut = st; + uint32_t *r = scrut.r; + uint32_t *x0 = r; + FStar_UInt128_t k10 = load128_le(k1); + FStar_UInt128_t + k_clamped = + FStar_UInt128_logand(k10, + FStar_UInt128_logor(FStar_UInt128_shift_left(FStar_UInt128_uint64_to_uint128((uint64_t)0x0ffffffc0ffffffcU), + (uint32_t)64U), + FStar_UInt128_uint64_to_uint128((uint64_t)0x0ffffffc0fffffffU))); + uint32_t r0 = (uint32_t)FStar_UInt128_uint128_to_uint64(k_clamped) & (uint32_t)0x3ffffffU; + uint32_t + r1 = + (uint32_t)FStar_UInt128_uint128_to_uint64(FStar_UInt128_shift_right(k_clamped, (uint32_t)26U)) & (uint32_t)0x3ffffffU; + uint32_t + r2 = + (uint32_t)FStar_UInt128_uint128_to_uint64(FStar_UInt128_shift_right(k_clamped, (uint32_t)52U)) & (uint32_t)0x3ffffffU; + uint32_t + r3 = + (uint32_t)FStar_UInt128_uint128_to_uint64(FStar_UInt128_shift_right(k_clamped, (uint32_t)78U)) & (uint32_t)0x3ffffffU; + uint32_t + r4 = + (uint32_t)FStar_UInt128_uint128_to_uint64(FStar_UInt128_shift_right(k_clamped, (uint32_t)104U)) & (uint32_t)0x3ffffffU; + x0[0U] = r0; + x0[1U] = r1; + x0[2U] = r2; + x0[3U] = r3; + x0[4U] = r4; + Hacl_Impl_Poly1305_32_State_poly1305_state scrut0 = st; + uint32_t *h = scrut0.h; + uint32_t *x00 = h; + x00[0U] = (uint32_t)0U; + x00[1U] = (uint32_t)0U; + x00[2U] = (uint32_t)0U; + x00[3U] = (uint32_t)0U; + x00[4U] = (uint32_t)0U; +} + +void *Hacl_Poly1305_32_empty_log = (void *)(uint8_t)0U; + +void +Hacl_Poly1305_32_update_block(Hacl_Impl_Poly1305_32_State_poly1305_state st, uint8_t *m) +{ + Hacl_Impl_Poly1305_32_poly1305_update(st, m); +} + +void +Hacl_Poly1305_32_update( + Hacl_Impl_Poly1305_32_State_poly1305_state st, + uint8_t *m, + uint32_t len1) +{ + if (!(len1 == (uint32_t)0U)) { + uint8_t *block = m; + uint8_t *m_ = m + (uint32_t)16U; + uint32_t len2 = len1 - (uint32_t)1U; + Hacl_Poly1305_32_update_block(st, block); + Hacl_Poly1305_32_update(st, m_, len2); + } +} + +void +Hacl_Poly1305_32_update_last( + Hacl_Impl_Poly1305_32_State_poly1305_state st, + uint8_t *m, + uint32_t len1) +{ + if (!((uint64_t)len1 == (uint64_t)0U)) + Hacl_Impl_Poly1305_32_poly1305_process_last_block(st, m, (uint64_t)len1); + Hacl_Impl_Poly1305_32_State_poly1305_state scrut = st; + uint32_t *h = scrut.h; + uint32_t *acc = h; + Hacl_Impl_Poly1305_32_poly1305_last_pass(acc); +} + +void +Hacl_Poly1305_32_finish( + Hacl_Impl_Poly1305_32_State_poly1305_state st, + uint8_t *mac, + uint8_t *k1) +{ + Hacl_Impl_Poly1305_32_State_poly1305_state scrut = st; + uint32_t *h = scrut.h; + uint32_t *acc = h; + FStar_UInt128_t k_ = load128_le(k1); + uint32_t h0 = acc[0U]; + uint32_t h1 = acc[1U]; + uint32_t h2 = acc[2U]; + uint32_t h3 = acc[3U]; + uint32_t h4 = acc[4U]; + FStar_UInt128_t + acc_ = + FStar_UInt128_logor(FStar_UInt128_shift_left(FStar_UInt128_uint64_to_uint128((uint64_t)h4), + (uint32_t)104U), + FStar_UInt128_logor(FStar_UInt128_shift_left(FStar_UInt128_uint64_to_uint128((uint64_t)h3), + (uint32_t)78U), + FStar_UInt128_logor(FStar_UInt128_shift_left(FStar_UInt128_uint64_to_uint128((uint64_t)h2), + (uint32_t)52U), + FStar_UInt128_logor(FStar_UInt128_shift_left(FStar_UInt128_uint64_to_uint128((uint64_t)h1), + (uint32_t)26U), + FStar_UInt128_uint64_to_uint128((uint64_t)h0))))); + FStar_UInt128_t mac_ = FStar_UInt128_add_mod(acc_, k_); + store128_le(mac, mac_); +} + +void +Hacl_Poly1305_32_crypto_onetimeauth( + uint8_t *output, + uint8_t *input, + uint64_t len1, + uint8_t *k1) +{ + Hacl_Standalone_Poly1305_32_crypto_onetimeauth(output, input, len1, k1); +} diff --git a/security/nss/lib/freebl/verified/Hacl_Poly1305_32.h b/security/nss/lib/freebl/verified/Hacl_Poly1305_32.h new file mode 100644 index 000000000..4dd070026 --- /dev/null +++ b/security/nss/lib/freebl/verified/Hacl_Poly1305_32.h @@ -0,0 +1,103 @@ +/* Copyright 2016-2017 INRIA and Microsoft Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "kremlib.h" +#ifndef __Hacl_Poly1305_32_H +#define __Hacl_Poly1305_32_H + +typedef uint32_t Hacl_Bignum_Constants_limb; + +typedef uint64_t Hacl_Bignum_Constants_wide; + +typedef uint64_t Hacl_Bignum_Wide_t; + +typedef uint32_t Hacl_Bignum_Limb_t; + +typedef void *Hacl_Impl_Poly1305_32_State_log_t; + +typedef uint8_t *Hacl_Impl_Poly1305_32_State_uint8_p; + +typedef uint32_t *Hacl_Impl_Poly1305_32_State_bigint; + +typedef void *Hacl_Impl_Poly1305_32_State_seqelem; + +typedef uint32_t *Hacl_Impl_Poly1305_32_State_elemB; + +typedef uint8_t *Hacl_Impl_Poly1305_32_State_wordB; + +typedef uint8_t *Hacl_Impl_Poly1305_32_State_wordB_16; + +typedef struct +{ + uint32_t *r; + uint32_t *h; +} Hacl_Impl_Poly1305_32_State_poly1305_state; + +typedef void *Hacl_Impl_Poly1305_32_log_t; + +typedef uint32_t *Hacl_Impl_Poly1305_32_bigint; + +typedef uint8_t *Hacl_Impl_Poly1305_32_uint8_p; + +typedef uint32_t *Hacl_Impl_Poly1305_32_elemB; + +typedef uint8_t *Hacl_Impl_Poly1305_32_wordB; + +typedef uint8_t *Hacl_Impl_Poly1305_32_wordB_16; + +typedef uint8_t *Hacl_Poly1305_32_uint8_p; + +typedef uint64_t Hacl_Poly1305_32_uint64_t; + +void *Hacl_Poly1305_32_op_String_Access(FStar_Monotonic_HyperStack_mem h, uint8_t *b); + +typedef uint8_t *Hacl_Poly1305_32_key; + +typedef Hacl_Impl_Poly1305_32_State_poly1305_state Hacl_Poly1305_32_state; + +Hacl_Impl_Poly1305_32_State_poly1305_state +Hacl_Poly1305_32_mk_state(uint32_t *r, uint32_t *acc); + +void Hacl_Poly1305_32_init(Hacl_Impl_Poly1305_32_State_poly1305_state st, uint8_t *k1); + +extern void *Hacl_Poly1305_32_empty_log; + +void Hacl_Poly1305_32_update_block(Hacl_Impl_Poly1305_32_State_poly1305_state st, uint8_t *m); + +void +Hacl_Poly1305_32_update( + Hacl_Impl_Poly1305_32_State_poly1305_state st, + uint8_t *m, + uint32_t len1); + +void +Hacl_Poly1305_32_update_last( + Hacl_Impl_Poly1305_32_State_poly1305_state st, + uint8_t *m, + uint32_t len1); + +void +Hacl_Poly1305_32_finish( + Hacl_Impl_Poly1305_32_State_poly1305_state st, + uint8_t *mac, + uint8_t *k1); + +void +Hacl_Poly1305_32_crypto_onetimeauth( + uint8_t *output, + uint8_t *input, + uint64_t len1, + uint8_t *k1); +#endif diff --git a/security/nss/lib/libpkix/pkix_pl_nss/module/pkix_pl_httpdefaultclient.c b/security/nss/lib/libpkix/pkix_pl_nss/module/pkix_pl_httpdefaultclient.c index 9954f0ca6..f73b95f68 100644 --- a/security/nss/lib/libpkix/pkix_pl_nss/module/pkix_pl_httpdefaultclient.c +++ b/security/nss/lib/libpkix/pkix_pl_nss/module/pkix_pl_httpdefaultclient.c @@ -70,7 +70,7 @@ static const PKIX_UInt32 httpprotocolLen = 5; /* strlen(httpprotocol) */ * The address at which the Boolean state machine flag is stored to * indicate whether processing can continue without further input. * Must be non-NULL. - * "plContext" + * "plCtx" * Platform-specific context pointer. * THREAD SAFETY: * Thread Safe (see Thread Safety Definitions in Programmer's Guide) @@ -85,7 +85,7 @@ pkix_pl_HttpDefaultClient_HdrCheckComplete( PKIX_PL_HttpDefaultClient *client, PKIX_UInt32 bytesRead, PKIX_Boolean *pKeepGoing, - void *plContext) + void *plCtx) { PKIX_UInt32 alreadyScanned = 0; PKIX_UInt32 comp = 0; @@ -142,7 +142,7 @@ pkix_pl_HttpDefaultClient_HdrCheckComplete( headerLength = (eoh - client->rcvBuf); /* allocate space to copy header (and for the NULL terminator) */ - PKIX_CHECK(PKIX_PL_Malloc(headerLength + 1, (void **)©, plContext), + PKIX_CHECK(PKIX_PL_Malloc(headerLength + 1, (void **)©, plCtx), PKIX_MALLOCFAILED); /* copy header data before we corrupt it (by storing NULLs) */ @@ -301,7 +301,7 @@ pkix_pl_HttpDefaultClient_HdrCheckComplete( if (contentLength > 0) { /* allocate a buffer of size contentLength for the content */ - PKIX_CHECK(PKIX_PL_Malloc(contentLength, (void **)&body, plContext), + PKIX_CHECK(PKIX_PL_Malloc(contentLength, (void **)&body, plCtx), PKIX_MALLOCFAILED); /* copy any remaining bytes in current buffer into new buffer */ @@ -311,7 +311,7 @@ pkix_pl_HttpDefaultClient_HdrCheckComplete( } } - PKIX_CHECK(PKIX_PL_Free(client->rcvBuf, plContext), + PKIX_CHECK(PKIX_PL_Free(client->rcvBuf, plCtx), PKIX_FREEFAILED); client->rcvBuf = body; @@ -340,7 +340,7 @@ cleanup: * "pClient" * The address at which the created HttpDefaultClient is to be stored. * Must be non-NULL. - * "plContext" + * "plCtx" * Platform-specific context pointer. * THREAD SAFETY: * Thread Safe (see Thread Safety Definitions in Programmer's Guide) @@ -355,7 +355,7 @@ pkix_pl_HttpDefaultClient_Create( const char *host, PRUint16 portnum, PKIX_PL_HttpDefaultClient **pClient, - void *plContext) + void *plCtx) { PKIX_PL_HttpDefaultClient *client = NULL; @@ -367,7 +367,7 @@ pkix_pl_HttpDefaultClient_Create( (PKIX_HTTPDEFAULTCLIENT_TYPE, sizeof (PKIX_PL_HttpDefaultClient), (PKIX_PL_Object **)&client, - plContext), + plCtx), PKIX_COULDNOTCREATEHTTPDEFAULTCLIENTOBJECT); /* Client timeout is overwritten in HttpDefaultClient_RequestCreate @@ -408,10 +408,10 @@ pkix_pl_HttpDefaultClient_Create( client->socket = NULL; /* - * The HttpClient API does not include a plContext argument in its + * The HttpClient API does not include a plCtx argument in its * function calls. Save it here. */ - client->plContext = plContext; + client->plContext = plCtx; *pClient = client; @@ -430,7 +430,7 @@ cleanup: static PKIX_Error * pkix_pl_HttpDefaultClient_Destroy( PKIX_PL_Object *object, - void *plContext) + void *plCtx) { PKIX_PL_HttpDefaultClient *client = NULL; @@ -438,13 +438,13 @@ pkix_pl_HttpDefaultClient_Destroy( PKIX_NULLCHECK_ONE(object); PKIX_CHECK(pkix_CheckType - (object, PKIX_HTTPDEFAULTCLIENT_TYPE, plContext), + (object, PKIX_HTTPDEFAULTCLIENT_TYPE, plCtx), PKIX_OBJECTNOTANHTTPDEFAULTCLIENT); client = (PKIX_PL_HttpDefaultClient *)object; if (client->rcvHeaders) { - PKIX_PL_Free(client->rcvHeaders, plContext); + PKIX_PL_Free(client->rcvHeaders, plCtx); client->rcvHeaders = NULL; } if (client->rcvContentType) { @@ -456,11 +456,11 @@ pkix_pl_HttpDefaultClient_Destroy( client->GETBuf = NULL; } if (client->POSTBuf != NULL) { - PKIX_PL_Free(client->POSTBuf, plContext); + PKIX_PL_Free(client->POSTBuf, plCtx); client->POSTBuf = NULL; } if (client->rcvBuf != NULL) { - PKIX_PL_Free(client->rcvBuf, plContext); + PKIX_PL_Free(client->rcvBuf, plCtx); client->rcvBuf = NULL; } if (client->host) { @@ -493,7 +493,7 @@ cleanup: * thread-safe. */ PKIX_Error * -pkix_pl_HttpDefaultClient_RegisterSelf(void *plContext) +pkix_pl_HttpDefaultClient_RegisterSelf(void *plCtx) { extern pkix_ClassTable_Entry systemClasses[PKIX_NUMTYPES]; pkix_ClassTable_Entry *entry = @@ -529,7 +529,7 @@ pkix_pl_HttpDefaultClient_RegisterSelf(void *plContext) * The address at which the Boolean state machine flag is stored to * indicate whether processing can continue without further input. * Must be non-NULL. - * "plContext" + * "plCtx" * Platform-specific context pointer. * THREAD SAFETY: * Thread Safe (see Thread Safety Definitions in Programmer's Guide) @@ -543,7 +543,7 @@ static PKIX_Error * pkix_pl_HttpDefaultClient_ConnectContinue( PKIX_PL_HttpDefaultClient *client, PKIX_Boolean *pKeepGoing, - void *plContext) + void *plCtx) { PRErrorCode status; PKIX_Boolean keepGoing = PKIX_FALSE; @@ -557,7 +557,7 @@ pkix_pl_HttpDefaultClient_ConnectContinue( callbackList = (PKIX_PL_Socket_Callback *)client->callbackList; PKIX_CHECK(callbackList->connectcontinueCallback - (client->socket, &status, plContext), + (client->socket, &status, plCtx), PKIX_SOCKETCONNECTCONTINUEFAILED); if (status == 0) { @@ -595,7 +595,7 @@ cleanup: * "pBytesTransferred" * The address at which the number of bytes sent is stored. Must be * non-NULL. - * "plContext" + * "plCtx" * Platform-specific context pointer. * THREAD SAFETY: * Thread Safe (see Thread Safety Definitions in Programmer's Guide) @@ -610,7 +610,7 @@ pkix_pl_HttpDefaultClient_Send( PKIX_PL_HttpDefaultClient *client, PKIX_Boolean *pKeepGoing, PKIX_UInt32 *pBytesTransferred, - void *plContext) + void *plCtx) { PKIX_Int32 bytesWritten = 0; PKIX_Int32 lenToWrite = 0; @@ -640,7 +640,7 @@ pkix_pl_HttpDefaultClient_Send( dataToWrite, lenToWrite, &bytesWritten, - plContext), + plCtx), PKIX_SOCKETSENDFAILED); client->rcvBuf = NULL; @@ -690,7 +690,7 @@ cleanup: * "pBytesTransferred" * The address at which the number of bytes sent is stored. Must be * non-NULL. - * "plContext" + * "plCtx" * Platform-specific context pointer. * THREAD SAFETY: * Thread Safe (see Thread Safety Definitions in Programmer's Guide) @@ -705,7 +705,7 @@ pkix_pl_HttpDefaultClient_SendContinue( PKIX_PL_HttpDefaultClient *client, PKIX_Boolean *pKeepGoing, PKIX_UInt32 *pBytesTransferred, - void *plContext) + void *plCtx) { PKIX_Int32 bytesWritten = 0; PKIX_PL_Socket_Callback *callbackList = NULL; @@ -718,7 +718,7 @@ pkix_pl_HttpDefaultClient_SendContinue( callbackList = (PKIX_PL_Socket_Callback *)client->callbackList; PKIX_CHECK(callbackList->pollCallback - (client->socket, &bytesWritten, NULL, plContext), + (client->socket, &bytesWritten, NULL, plCtx), PKIX_SOCKETPOLLFAILED); /* @@ -752,7 +752,7 @@ cleanup: * The address at which the Boolean state machine flag is stored to * indicate whether processing can continue without further input. * Must be non-NULL. - * "plContext" + * "plCtx" * Platform-specific context pointer. * THREAD SAFETY: * Thread Safe (see Thread Safety Definitions in Programmer's Guide) @@ -766,7 +766,7 @@ static PKIX_Error * pkix_pl_HttpDefaultClient_RecvHdr( PKIX_PL_HttpDefaultClient *client, PKIX_Boolean *pKeepGoing, - void *plContext) + void *plCtx) { PKIX_UInt32 bytesToRead = 0; PKIX_Int32 bytesRead = 0; @@ -787,7 +787,7 @@ pkix_pl_HttpDefaultClient_RecvHdr( (client->rcvBuf, client->capacity, (void **)&(client->rcvBuf), - plContext), + plCtx), PKIX_REALLOCFAILED); bytesToRead = client->capacity - client->filledupBytes; @@ -799,7 +799,7 @@ pkix_pl_HttpDefaultClient_RecvHdr( (void *)&(client->rcvBuf[client->filledupBytes]), bytesToRead, &bytesRead, - plContext), + plCtx), PKIX_SOCKETRECVFAILED); if (bytesRead > 0) { @@ -808,7 +808,7 @@ pkix_pl_HttpDefaultClient_RecvHdr( PKIX_CHECK( pkix_pl_HttpDefaultClient_HdrCheckComplete(client, bytesRead, pKeepGoing, - plContext), + plCtx), PKIX_HTTPDEFAULTCLIENTHDRCHECKCOMPLETEFAILED); } else { client->connectStatus = HTTP_RECV_HDR_PENDING; @@ -834,7 +834,7 @@ cleanup: * The address at which the Boolean state machine flag is stored to * indicate whether processing can continue without further input. * Must be non-NULL. - * "plContext" + * "plCtx" * Platform-specific context pointer. * THREAD SAFETY: * Thread Safe (see Thread Safety Definitions in Programmer's Guide) @@ -848,7 +848,7 @@ static PKIX_Error * pkix_pl_HttpDefaultClient_RecvHdrContinue( PKIX_PL_HttpDefaultClient *client, PKIX_Boolean *pKeepGoing, - void *plContext) + void *plCtx) { PKIX_Int32 bytesRead = 0; PKIX_PL_Socket_Callback *callbackList = NULL; @@ -861,14 +861,14 @@ pkix_pl_HttpDefaultClient_RecvHdrContinue( callbackList = (PKIX_PL_Socket_Callback *)client->callbackList; PKIX_CHECK(callbackList->pollCallback - (client->socket, NULL, &bytesRead, plContext), + (client->socket, NULL, &bytesRead, plCtx), PKIX_SOCKETPOLLFAILED); if (bytesRead > 0) { client->filledupBytes += bytesRead; PKIX_CHECK(pkix_pl_HttpDefaultClient_HdrCheckComplete - (client, bytesRead, pKeepGoing, plContext), + (client, bytesRead, pKeepGoing, plCtx), PKIX_HTTPDEFAULTCLIENTHDRCHECKCOMPLETEFAILED); } else { @@ -897,7 +897,7 @@ cleanup: * The address at which the Boolean state machine flag is stored to * indicate whether processing can continue without further input. * Must be non-NULL. - * "plContext" + * "plCtx" * Platform-specific context pointer. * THREAD SAFETY: * Thread Safe (see Thread Safety Definitions in Programmer's Guide) @@ -911,7 +911,7 @@ static PKIX_Error * pkix_pl_HttpDefaultClient_RecvBody( PKIX_PL_HttpDefaultClient *client, PKIX_Boolean *pKeepGoing, - void *plContext) + void *plCtx) { PKIX_Int32 bytesRead = 0; PKIX_Int32 bytesToRead = 0; @@ -952,7 +952,7 @@ pkix_pl_HttpDefaultClient_RecvBody( client->capacity = newLength; PKIX_CHECK( PKIX_PL_Realloc(client->rcvBuf, newLength, - (void**)&client->rcvBuf, plContext), + (void**)&client->rcvBuf, plCtx), PKIX_REALLOCFAILED); freeBuffSize = client->capacity - client->filledupBytes; @@ -964,7 +964,7 @@ pkix_pl_HttpDefaultClient_RecvBody( /* Use poll callback if waiting on non-blocking IO */ if (client->connectStatus == HTTP_RECV_BODY_PENDING) { PKIX_CHECK(callbackList->pollCallback - (client->socket, NULL, &bytesRead, plContext), + (client->socket, NULL, &bytesRead, plCtx), PKIX_SOCKETPOLLFAILED); } else { PKIX_CHECK(callbackList->recvCallback @@ -972,7 +972,7 @@ pkix_pl_HttpDefaultClient_RecvBody( (void *)&(client->rcvBuf[client->filledupBytes]), bytesToRead, &bytesRead, - plContext), + plCtx), PKIX_SOCKETRECVFAILED); } @@ -1026,7 +1026,7 @@ cleanup: * PARAMETERS: * "client" * The address of the HttpDefaultClient object. Must be non-NULL. - * "plContext" + * "plCtx" * Platform-specific context pointer. * THREAD SAFETY: * Thread Safe (see Thread Safety Definitions in Programmer's Guide) @@ -1039,7 +1039,7 @@ cleanup: static PKIX_Error * pkix_pl_HttpDefaultClient_Dispatch( PKIX_PL_HttpDefaultClient *client, - void *plContext) + void *plCtx) { PKIX_UInt32 bytesTransferred = 0; PKIX_Boolean keepGoing = PKIX_TRUE; @@ -1051,33 +1051,33 @@ pkix_pl_HttpDefaultClient_Dispatch( switch (client->connectStatus) { case HTTP_CONNECT_PENDING: PKIX_CHECK(pkix_pl_HttpDefaultClient_ConnectContinue - (client, &keepGoing, plContext), + (client, &keepGoing, plCtx), PKIX_HTTPDEFAULTCLIENTCONNECTCONTINUEFAILED); break; case HTTP_CONNECTED: PKIX_CHECK(pkix_pl_HttpDefaultClient_Send - (client, &keepGoing, &bytesTransferred, plContext), + (client, &keepGoing, &bytesTransferred, plCtx), PKIX_HTTPDEFAULTCLIENTSENDFAILED); break; case HTTP_SEND_PENDING: PKIX_CHECK(pkix_pl_HttpDefaultClient_SendContinue - (client, &keepGoing, &bytesTransferred, plContext), + (client, &keepGoing, &bytesTransferred, plCtx), PKIX_HTTPDEFAULTCLIENTSENDCONTINUEFAILED); break; case HTTP_RECV_HDR: PKIX_CHECK(pkix_pl_HttpDefaultClient_RecvHdr - (client, &keepGoing, plContext), + (client, &keepGoing, plCtx), PKIX_HTTPDEFAULTCLIENTRECVHDRFAILED); break; case HTTP_RECV_HDR_PENDING: PKIX_CHECK(pkix_pl_HttpDefaultClient_RecvHdrContinue - (client, &keepGoing, plContext), + (client, &keepGoing, plCtx), PKIX_HTTPDEFAULTCLIENTRECVHDRCONTINUEFAILED); break; case HTTP_RECV_BODY: case HTTP_RECV_BODY_PENDING: PKIX_CHECK(pkix_pl_HttpDefaultClient_RecvBody - (client, &keepGoing, plContext), + (client, &keepGoing, plCtx), PKIX_HTTPDEFAULTCLIENTRECVBODYFAILED); break; case HTTP_ERROR: @@ -1106,7 +1106,7 @@ pkix_pl_HttpDefaultClient_CreateSession( const char *host, PRUint16 portnum, SEC_HTTP_SERVER_SESSION *pSession, - void *plContext) + void *plCtx) { PKIX_PL_HttpDefaultClient *client = NULL; @@ -1115,7 +1115,7 @@ pkix_pl_HttpDefaultClient_CreateSession( PKIX_NULLCHECK_TWO(host, pSession); PKIX_CHECK(pkix_pl_HttpDefaultClient_Create - (host, portnum, &client, plContext), + (host, portnum, &client, plCtx), PKIX_HTTPDEFAULTCLIENTCREATEFAILED); *pSession = (SEC_HTTP_SERVER_SESSION)client; @@ -1130,7 +1130,7 @@ PKIX_Error * pkix_pl_HttpDefaultClient_KeepAliveSession( SEC_HTTP_SERVER_SESSION session, PRPollDesc **pPollDesc, - void *plContext) + void *plCtx) { PKIX_ENTER (HTTPDEFAULTCLIENT, @@ -1140,7 +1140,7 @@ pkix_pl_HttpDefaultClient_KeepAliveSession( PKIX_CHECK(pkix_CheckType ((PKIX_PL_Object *)session, PKIX_HTTPDEFAULTCLIENT_TYPE, - plContext), + plCtx), PKIX_SESSIONNOTANHTTPDEFAULTCLIENT); /* XXX Not implemented */ @@ -1159,7 +1159,7 @@ pkix_pl_HttpDefaultClient_RequestCreate( const char *http_request_method, const PRIntervalTime timeout, SEC_HTTP_REQUEST_SESSION *pRequest, - void *plContext) + void *plCtx) { PKIX_PL_HttpDefaultClient *client = NULL; PKIX_PL_Socket *socket = NULL; @@ -1174,7 +1174,7 @@ pkix_pl_HttpDefaultClient_RequestCreate( PKIX_CHECK(pkix_CheckType ((PKIX_PL_Object *)session, PKIX_HTTPDEFAULTCLIENT_TYPE, - plContext), + plCtx), PKIX_SESSIONNOTANHTTPDEFAULTCLIENT); client = (PKIX_PL_HttpDefaultClient *)session; @@ -1212,7 +1212,7 @@ pkix_pl_HttpDefaultClient_RequestCreate( 2001, /* client->portnum, */ &status, &socket, - plContext), + plCtx), PKIX_HTTPCERTSTOREFINDSOCKETCONNECTIONFAILED); #else PKIX_CHECK(pkix_HttpCertStore_FindSocketConnection @@ -1221,20 +1221,20 @@ pkix_pl_HttpDefaultClient_RequestCreate( client->portnum, &status, &socket, - plContext), + plCtx), PKIX_HTTPCERTSTOREFINDSOCKETCONNECTIONFAILED); #endif client->socket = socket; PKIX_CHECK(pkix_pl_Socket_GetCallbackList - (socket, &callbackList, plContext), + (socket, &callbackList, plCtx), PKIX_SOCKETGETCALLBACKLISTFAILED); client->callbackList = (void *)callbackList; PKIX_CHECK(pkix_pl_Socket_GetPRFileDesc - (socket, &fileDesc, plContext), + (socket, &fileDesc, plCtx), PKIX_SOCKETGETPRFILEDESCFAILED); client->pollDesc.fd = fileDesc; @@ -1264,7 +1264,7 @@ pkix_pl_HttpDefaultClient_SetPostData( const char *http_data, const PRUint32 http_data_len, const char *http_content_type, - void *plContext) + void *plCtx) { PKIX_PL_HttpDefaultClient *client = NULL; @@ -1276,7 +1276,7 @@ pkix_pl_HttpDefaultClient_SetPostData( PKIX_CHECK(pkix_CheckType ((PKIX_PL_Object *)request, PKIX_HTTPDEFAULTCLIENT_TYPE, - plContext), + plCtx), PKIX_REQUESTNOTANHTTPDEFAULTCLIENT); client = (PKIX_PL_HttpDefaultClient *)request; @@ -1307,7 +1307,7 @@ pkix_pl_HttpDefaultClient_TrySendAndReceive( PRUint32 *http_response_data_len, PRPollDesc **pPollDesc, SECStatus *pSECReturn, - void *plContext) + void *plCtx) { PKIX_PL_HttpDefaultClient *client = NULL; PKIX_UInt32 postLen = 0; @@ -1324,7 +1324,7 @@ pkix_pl_HttpDefaultClient_TrySendAndReceive( PKIX_CHECK(pkix_CheckType ((PKIX_PL_Object *)request, PKIX_HTTPDEFAULTCLIENT_TYPE, - plContext), + plCtx), PKIX_REQUESTNOTANHTTPDEFAULTCLIENT); client = (PKIX_PL_HttpDefaultClient *)request; @@ -1380,7 +1380,7 @@ pkix_pl_HttpDefaultClient_TrySendAndReceive( PKIX_CHECK(PKIX_PL_Malloc (client->POSTLen, (void **)&(client->POSTBuf), - plContext), + plCtx), PKIX_MALLOCFAILED); /* copy header into postBuffer */ @@ -1407,7 +1407,7 @@ pkix_pl_HttpDefaultClient_TrySendAndReceive( } /* continue according to state */ - PKIX_CHECK(pkix_pl_HttpDefaultClient_Dispatch(client, plContext), + PKIX_CHECK(pkix_pl_HttpDefaultClient_Dispatch(client, plCtx), PKIX_HTTPDEFAULTCLIENTDISPATCHFAILED); switch (client->connectStatus) { @@ -1478,7 +1478,7 @@ cleanup: PKIX_Error * pkix_pl_HttpDefaultClient_Cancel( SEC_HTTP_REQUEST_SESSION request, - void *plContext) + void *plCtx) { PKIX_ENTER(HTTPDEFAULTCLIENT, "pkix_pl_HttpDefaultClient_Cancel"); PKIX_NULLCHECK_ONE(request); @@ -1486,7 +1486,7 @@ pkix_pl_HttpDefaultClient_Cancel( PKIX_CHECK(pkix_CheckType ((PKIX_PL_Object *)request, PKIX_HTTPDEFAULTCLIENT_TYPE, - plContext), + plCtx), PKIX_REQUESTNOTANHTTPDEFAULTCLIENT); /* XXX Not implemented */ diff --git a/security/nss/lib/libpkix/pkix_pl_nss/pki/pkix_pl_infoaccess.c b/security/nss/lib/libpkix/pkix_pl_nss/pki/pkix_pl_infoaccess.c index 9fa8e9260..09b54a2be 100644 --- a/security/nss/lib/libpkix/pkix_pl_nss/pki/pkix_pl_infoaccess.c +++ b/security/nss/lib/libpkix/pkix_pl_nss/pki/pkix_pl_infoaccess.c @@ -23,8 +23,8 @@ * PARAMETERS * "method" * The UInt32 value to be stored as the method field of the InfoAccess. - * "generalName" - * The GeneralName to be stored as the generalName field of the InfoAccess. + * "gName" + * The GeneralName to be stored as the gName field of the InfoAccess. * Must be non-NULL. * "pInfoAccess" * Address where the result is stored. Must be non-NULL. @@ -39,7 +39,7 @@ static PKIX_Error * pkix_pl_InfoAccess_Create( PKIX_UInt32 method, - PKIX_PL_GeneralName *generalName, + PKIX_PL_GeneralName *gName, PKIX_PL_InfoAccess **pInfoAccess, void *plContext) { @@ -47,7 +47,7 @@ pkix_pl_InfoAccess_Create( PKIX_PL_InfoAccess *infoAccess = NULL; PKIX_ENTER(INFOACCESS, "pkix_pl_InfoAccess_Create"); - PKIX_NULLCHECK_TWO(generalName, pInfoAccess); + PKIX_NULLCHECK_TWO(gName, pInfoAccess); PKIX_CHECK(PKIX_PL_Object_Alloc (PKIX_INFOACCESS_TYPE, @@ -58,8 +58,8 @@ pkix_pl_InfoAccess_Create( infoAccess->method = method; - PKIX_INCREF(generalName); - infoAccess->location = generalName; + PKIX_INCREF(gName); + infoAccess->location = gName; *pInfoAccess = infoAccess; infoAccess = NULL; @@ -678,7 +678,7 @@ pkix_pl_UnescapeURL( * [binary|<other-type>]]* * * PARAMETERS - * "generalName" + * "gName" * Address of the GeneralName whose LDAPLocation is to be parsed. Must be * non-NULL. * "arena" @@ -700,7 +700,7 @@ pkix_pl_UnescapeURL( */ PKIX_Error * pkix_pl_InfoAccess_ParseLocation( - PKIX_PL_GeneralName *generalName, + PKIX_PL_GeneralName *gName, PLArenaPool *arena, LDAPRequestParams *request, char **pDomainName, @@ -722,9 +722,9 @@ pkix_pl_InfoAccess_ParseLocation( LDAPNameComponent *nameComponent = NULL; PKIX_ENTER(INFOACCESS, "pkix_pl_InfoAccess_ParseLocation"); - PKIX_NULLCHECK_FOUR(generalName, arena, request, pDomainName); + PKIX_NULLCHECK_FOUR(gName, arena, request, pDomainName); - PKIX_TOSTRING(generalName, &locationString, plContext, + PKIX_TOSTRING(gName, &locationString, plContext, PKIX_GENERALNAMETOSTRINGFAILED); PKIX_CHECK(PKIX_PL_String_GetEncoded diff --git a/security/nss/lib/nss/nss.h b/security/nss/lib/nss/nss.h index d62f4957b..efb0827c5 100644 --- a/security/nss/lib/nss/nss.h +++ b/security/nss/lib/nss/nss.h @@ -22,10 +22,10 @@ * The format of the version string should be * "<major version>.<minor version>[.<patch level>[.<build number>]][ <ECC>][ <Beta>]" */ -#define NSS_VERSION "3.36.4" _NSS_CUSTOMIZED +#define NSS_VERSION "3.38" _NSS_CUSTOMIZED #define NSS_VMAJOR 3 -#define NSS_VMINOR 36 -#define NSS_VPATCH 4 +#define NSS_VMINOR 38 +#define NSS_VPATCH 0 #define NSS_VBUILD 0 #define NSS_BETA PR_FALSE diff --git a/security/nss/lib/pk11wrap/pk11akey.c b/security/nss/lib/pk11wrap/pk11akey.c index c45901ec3..346e473a9 100644 --- a/security/nss/lib/pk11wrap/pk11akey.c +++ b/security/nss/lib/pk11wrap/pk11akey.c @@ -804,12 +804,30 @@ PK11_MakePrivKey(PK11SlotInfo *slot, KeyType keyType, /* don't know? look it up */ if (keyType == nullKey) { CK_KEY_TYPE pk11Type = CKK_RSA; + SECItem info; pk11Type = PK11_ReadULongAttribute(slot, privID, CKA_KEY_TYPE); isTemp = (PRBool)!PK11_HasAttributeSet(slot, privID, CKA_TOKEN, PR_FALSE); switch (pk11Type) { case CKK_RSA: keyType = rsaKey; + /* determine RSA key type from the CKA_PUBLIC_KEY_INFO if present */ + rv = PK11_ReadAttribute(slot, privID, CKA_PUBLIC_KEY_INFO, NULL, &info); + if (rv == SECSuccess) { + CERTSubjectPublicKeyInfo *spki; + + spki = SECKEY_DecodeDERSubjectPublicKeyInfo(&info); + if (spki) { + SECOidTag tag; + + tag = SECOID_GetAlgorithmTag(&spki->algorithm); + if (tag == SEC_OID_PKCS1_RSA_PSS_SIGNATURE) + keyType = rsaPssKey; + SECKEY_DestroySubjectPublicKeyInfo(spki); + } + SECITEM_FreeItem(&info, PR_FALSE); + } + break; case CKK_DSA: keyType = dsaKey; diff --git a/security/nss/lib/pk11wrap/pk11pars.c b/security/nss/lib/pk11wrap/pk11pars.c index fc30222b3..c165e1ef2 100644 --- a/security/nss/lib/pk11wrap/pk11pars.c +++ b/security/nss/lib/pk11wrap/pk11pars.c @@ -547,16 +547,16 @@ secmod_applyCryptoPolicy(const char *policyString, for (i = 0; i < PR_ARRAY_SIZE(algOptList); i++) { const oidValDef *algOpt = &algOptList[i]; unsigned name_size = algOpt->name_size; - PRBool newValue = PR_FALSE; + PRBool newOption = PR_FALSE; if ((length >= name_size) && (cipher[name_size] == '/')) { - newValue = PR_TRUE; + newOption = PR_TRUE; } - if ((newValue || algOpt->name_size == length) && + if ((newOption || algOpt->name_size == length) && PORT_Strncasecmp(algOpt->name, cipher, name_size) == 0) { PRUint32 value = algOpt->val; PRUint32 enable, disable; - if (newValue) { + if (newOption) { value = secmod_parsePolicyValue(&cipher[name_size] + 1, length - name_size - 1); } diff --git a/security/nss/lib/pkcs12/p12e.c b/security/nss/lib/pkcs12/p12e.c index 4a21d8955..c42c4d2e2 100644 --- a/security/nss/lib/pkcs12/p12e.c +++ b/security/nss/lib/pkcs12/p12e.c @@ -884,7 +884,9 @@ sec_PKCS12AddAttributeToBag(SEC_PKCS12ExportContext *p12ctxt, unsigned int nItems = 0; SECStatus rv; - if (!safeBag || !p12ctxt) { + PORT_Assert(p12ctxt->arena == safeBag->arena); + if (!safeBag || !p12ctxt || p12ctxt->arena != safeBag->arena) { + PORT_SetError(SEC_ERROR_INVALID_ARGS); return SECFailure; } @@ -1589,6 +1591,7 @@ sec_pkcs12_encoder_start_context(SEC_PKCS12ExportContext *p12exp) params = PK11_CreatePBEParams(salt, &pwd, NSS_PBE_DEFAULT_ITERATION_COUNT); SECITEM_ZfreeItem(salt, PR_TRUE); + salt = NULL; SECITEM_ZfreeItem(&pwd, PR_FALSE); /* get the PBA Mechanism to generate the key */ diff --git a/security/nss/lib/pkcs7/p7decode.c b/security/nss/lib/pkcs7/p7decode.c index 4f17b8e84..ba51955ab 100644 --- a/security/nss/lib/pkcs7/p7decode.c +++ b/security/nss/lib/pkcs7/p7decode.c @@ -1596,7 +1596,6 @@ sec_pkcs7_verify_signature(SEC_PKCS7ContentInfo *cinfo, } else { SECItem *sig; SECItem holder; - SECStatus rv; /* * No authenticated attributes. diff --git a/security/nss/lib/pki/pki3hack.c b/security/nss/lib/pki/pki3hack.c index fb3110a23..fab3a7a02 100644 --- a/security/nss/lib/pki/pki3hack.c +++ b/security/nss/lib/pki/pki3hack.c @@ -1143,8 +1143,8 @@ STAN_ChangeCertTrust(CERTCertificate *cc, CERTCertTrust *trust) (PRBool)(trust->sslFlags & CERTDB_GOVT_APPROVED_CA); if (c->object.cryptoContext != NULL) { /* The cert is in a context, set the trust there */ - NSSCryptoContext *cc = c->object.cryptoContext; - nssrv = nssCryptoContext_ImportTrust(cc, nssTrust); + NSSCryptoContext *cctx = c->object.cryptoContext; + nssrv = nssCryptoContext_ImportTrust(cctx, nssTrust); if (nssrv != PR_SUCCESS) { goto done; } diff --git a/security/nss/lib/smime/cmsrecinfo.c b/security/nss/lib/smime/cmsrecinfo.c index 2efb6b1f2..8cab288d2 100644 --- a/security/nss/lib/smime/cmsrecinfo.c +++ b/security/nss/lib/smime/cmsrecinfo.c @@ -82,7 +82,7 @@ nss_cmsrecipientinfo_create(NSSCMSMessage *cmsg, if (DERinput) { /* decode everything from DER */ SECItem newinput; - SECStatus rv = SECITEM_CopyItem(poolp, &newinput, DERinput); + rv = SECITEM_CopyItem(poolp, &newinput, DERinput); if (SECSuccess != rv) goto loser; rv = SEC_QuickDERDecodeItem(poolp, ri, NSSCMSRecipientInfoTemplate, &newinput); diff --git a/security/nss/lib/softoken/legacydb/pcertdb.c b/security/nss/lib/softoken/legacydb/pcertdb.c index 2e8b650ee..47778190d 100644 --- a/security/nss/lib/softoken/legacydb/pcertdb.c +++ b/security/nss/lib/softoken/legacydb/pcertdb.c @@ -2577,14 +2577,13 @@ ReadDBSubjectEntry(NSSLOWCERTCertDBHandle *handle, SECItem *derSubject) SECItem dbentry; SECStatus rv; + PORT_InitCheapArena(&tmpArena, DER_DEFAULT_CHUNKSIZE); arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE); if (arena == NULL) { PORT_SetError(SEC_ERROR_NO_MEMORY); goto loser; } - PORT_InitCheapArena(&tmpArena, DER_DEFAULT_CHUNKSIZE); - entry = (certDBEntrySubject *)PORT_ArenaAlloc(arena, sizeof(certDBEntrySubject)); if (entry == NULL) { diff --git a/security/nss/lib/softoken/lowkey.c b/security/nss/lib/softoken/lowkey.c index 295d55f40..a28a3a55e 100644 --- a/security/nss/lib/softoken/lowkey.c +++ b/security/nss/lib/softoken/lowkey.c @@ -45,6 +45,23 @@ const SEC_ASN1Template nsslowkey_PrivateKeyInfoTemplate[] = { { 0 } }; +const SEC_ASN1Template nsslowkey_SubjectPublicKeyInfoTemplate[] = { + { SEC_ASN1_SEQUENCE, 0, NULL, sizeof(NSSLOWKEYSubjectPublicKeyInfo) }, + { SEC_ASN1_INLINE | SEC_ASN1_XTRN, + offsetof(NSSLOWKEYSubjectPublicKeyInfo, algorithm), + SEC_ASN1_SUB(SECOID_AlgorithmIDTemplate) }, + { SEC_ASN1_BIT_STRING, + offsetof(NSSLOWKEYSubjectPublicKeyInfo, subjectPublicKey) }, + { 0 } +}; + +const SEC_ASN1Template nsslowkey_RSAPublicKeyTemplate[] = { + { SEC_ASN1_SEQUENCE, 0, NULL, sizeof(NSSLOWKEYPublicKey) }, + { SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPublicKey, u.rsa.modulus) }, + { SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPublicKey, u.rsa.publicExponent) }, + { 0 } +}; + const SEC_ASN1Template nsslowkey_PQGParamsTemplate[] = { { SEC_ASN1_SEQUENCE, 0, NULL, sizeof(PQGParams) }, { SEC_ASN1_INTEGER, offsetof(PQGParams, prime) }, @@ -135,6 +152,13 @@ prepare_low_rsa_priv_key_for_asn1(NSSLOWKEYPrivateKey *key) } void +prepare_low_rsa_pub_key_for_asn1(NSSLOWKEYPublicKey *key) +{ + key->u.rsa.modulus.type = siUnsignedInteger; + key->u.rsa.publicExponent.type = siUnsignedInteger; +} + +void prepare_low_pqg_params_for_asn1(PQGParams *params) { params->prime.type = siUnsignedInteger; diff --git a/security/nss/lib/softoken/lowkeyi.h b/security/nss/lib/softoken/lowkeyi.h index f9ba3a75f..e599f01fa 100644 --- a/security/nss/lib/softoken/lowkeyi.h +++ b/security/nss/lib/softoken/lowkeyi.h @@ -27,6 +27,7 @@ extern void prepare_low_dsa_priv_key_export_for_asn1(NSSLOWKEYPrivateKey *key); extern void prepare_low_dh_priv_key_for_asn1(NSSLOWKEYPrivateKey *key); extern void prepare_low_ec_priv_key_for_asn1(NSSLOWKEYPrivateKey *key); extern void prepare_low_ecparams_for_asn1(ECParams *params); +extern void prepare_low_rsa_pub_key_for_asn1(NSSLOWKEYPublicKey *key); /* ** Destroy a private key object. diff --git a/security/nss/lib/softoken/lowkeyti.h b/security/nss/lib/softoken/lowkeyti.h index c048b33e7..7e77592c5 100644 --- a/security/nss/lib/softoken/lowkeyti.h +++ b/security/nss/lib/softoken/lowkeyti.h @@ -25,6 +25,8 @@ extern const SEC_ASN1Template nsslowkey_ECPrivateKeyTemplate[]; extern const SEC_ASN1Template nsslowkey_PrivateKeyInfoTemplate[]; extern const SEC_ASN1Template nsslowkey_EncryptedPrivateKeyInfoTemplate[]; +extern const SEC_ASN1Template nsslowkey_SubjectPublicKeyInfoTemplate[]; +extern const SEC_ASN1Template nsslowkey_RSAPublicKeyTemplate[]; /* * PKCS #8 attributes @@ -48,6 +50,13 @@ struct NSSLOWKEYPrivateKeyInfoStr { typedef struct NSSLOWKEYPrivateKeyInfoStr NSSLOWKEYPrivateKeyInfo; #define NSSLOWKEY_PRIVATE_KEY_INFO_VERSION 0 /* what we *create* */ +struct NSSLOWKEYSubjectPublicKeyInfoStr { + PLArenaPool *arena; + SECAlgorithmID algorithm; + SECItem subjectPublicKey; +}; +typedef struct NSSLOWKEYSubjectPublicKeyInfoStr NSSLOWKEYSubjectPublicKeyInfo; + typedef enum { NSSLOWKEYNullKey = 0, NSSLOWKEYRSAKey = 1, diff --git a/security/nss/lib/softoken/lowpbe.c b/security/nss/lib/softoken/lowpbe.c index 0a47804bf..4a101c68c 100644 --- a/security/nss/lib/softoken/lowpbe.c +++ b/security/nss/lib/softoken/lowpbe.c @@ -1073,15 +1073,15 @@ sec_pkcs5_rc2(SECItem *key, SECItem *iv, SECItem *src, PRBool dummy, } if (encrypt != PR_FALSE) { - void *dummy; + void *v; - dummy = CBC_PadBuffer(NULL, dup_src->data, - dup_src->len, &dup_src->len, 8 /* RC2_BLOCK_SIZE */); - if (dummy == NULL) { + v = CBC_PadBuffer(NULL, dup_src->data, + dup_src->len, &dup_src->len, 8 /* RC2_BLOCK_SIZE */); + if (v == NULL) { SECITEM_FreeItem(dup_src, PR_TRUE); return NULL; } - dup_src->data = (unsigned char *)dummy; + dup_src->data = (unsigned char *)v; } dest = (SECItem *)PORT_ZAlloc(sizeof(SECItem)); diff --git a/security/nss/lib/softoken/pkcs11.c b/security/nss/lib/softoken/pkcs11.c index 77882a274..34f25a9d0 100644 --- a/security/nss/lib/softoken/pkcs11.c +++ b/security/nss/lib/softoken/pkcs11.c @@ -1343,7 +1343,6 @@ sftk_handleSecretKeyObject(SFTKSession *session, SFTKObject *object, if (sftk_isTrue(object, CKA_TOKEN)) { SFTKSlot *slot = session->slot; SFTKDBHandle *keyHandle = sftk_getKeyDB(slot); - CK_RV crv; if (keyHandle == NULL) { return CKR_TOKEN_WRITE_PROTECTED; @@ -3807,12 +3806,12 @@ NSC_SetPIN(CK_SESSION_HANDLE hSession, CK_CHAR_PTR pOldPin, PZ_Unlock(slot->slotLock); /* Reset login flags. */ if (ulNewLen == 0) { - PRBool tokenRemoved = PR_FALSE; PZ_Lock(slot->slotLock); slot->isLoggedIn = PR_FALSE; slot->ssoLoggedIn = PR_FALSE; PZ_Unlock(slot->slotLock); + tokenRemoved = PR_FALSE; rv = sftkdb_CheckPassword(handle, "", &tokenRemoved); if (tokenRemoved) { sftk_CloseAllSessions(slot, PR_FALSE); @@ -4422,6 +4421,44 @@ NSC_GetObjectSize(CK_SESSION_HANDLE hSession, return CKR_OK; } +static CK_RV +nsc_GetTokenAttributeValue(SFTKSession *session, CK_OBJECT_HANDLE hObject, + CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount) +{ + SFTKSlot *slot = sftk_SlotFromSession(session); + SFTKDBHandle *dbHandle = sftk_getDBForTokenObject(slot, hObject); + SFTKDBHandle *keydb = NULL; + CK_RV crv; + + if (dbHandle == NULL) { + return CKR_OBJECT_HANDLE_INVALID; + } + + crv = sftkdb_GetAttributeValue(dbHandle, hObject, pTemplate, ulCount); + + /* make sure we don't export any sensitive information */ + keydb = sftk_getKeyDB(slot); + if (dbHandle == keydb) { + CK_ULONG i; + for (i = 0; i < ulCount; i++) { + if (sftk_isSensitive(pTemplate[i].type, CKO_PRIVATE_KEY)) { + crv = CKR_ATTRIBUTE_SENSITIVE; + if (pTemplate[i].pValue && (pTemplate[i].ulValueLen != -1)) { + PORT_Memset(pTemplate[i].pValue, 0, + pTemplate[i].ulValueLen); + } + pTemplate[i].ulValueLen = -1; + } + } + } + + sftk_freeDB(dbHandle); + if (keydb) { + sftk_freeDB(keydb); + } + return crv; +} + /* NSC_GetAttributeValue obtains the value of one or more object attributes. */ CK_RV NSC_GetAttributeValue(CK_SESSION_HANDLE hSession, @@ -4450,37 +4487,8 @@ NSC_GetAttributeValue(CK_SESSION_HANDLE hSession, /* short circuit everything for token objects */ if (sftk_isToken(hObject)) { - SFTKSlot *slot = sftk_SlotFromSession(session); - SFTKDBHandle *dbHandle = sftk_getDBForTokenObject(slot, hObject); - SFTKDBHandle *keydb = NULL; - - if (dbHandle == NULL) { - sftk_FreeSession(session); - return CKR_OBJECT_HANDLE_INVALID; - } - - crv = sftkdb_GetAttributeValue(dbHandle, hObject, pTemplate, ulCount); - - /* make sure we don't export any sensitive information */ - keydb = sftk_getKeyDB(slot); - if (dbHandle == keydb) { - for (i = 0; i < (int)ulCount; i++) { - if (sftk_isSensitive(pTemplate[i].type, CKO_PRIVATE_KEY)) { - crv = CKR_ATTRIBUTE_SENSITIVE; - if (pTemplate[i].pValue && (pTemplate[i].ulValueLen != -1)) { - PORT_Memset(pTemplate[i].pValue, 0, - pTemplate[i].ulValueLen); - } - pTemplate[i].ulValueLen = -1; - } - } - } - + crv = nsc_GetTokenAttributeValue(session, hObject, pTemplate, ulCount); sftk_FreeSession(session); - sftk_freeDB(dbHandle); - if (keydb) { - sftk_freeDB(keydb); - } return crv; } diff --git a/security/nss/lib/softoken/pkcs11c.c b/security/nss/lib/softoken/pkcs11c.c index d675d7331..385d3c144 100644 --- a/security/nss/lib/softoken/pkcs11c.c +++ b/security/nss/lib/softoken/pkcs11c.c @@ -5324,7 +5324,52 @@ sftk_PackagePrivateKey(SFTKObject *key, CK_RV *crvp) prepare_low_rsa_priv_key_for_asn1(lk); dummy = SEC_ASN1EncodeItem(arena, &pki->privateKey, lk, nsslowkey_RSAPrivateKeyTemplate); - algorithm = SEC_OID_PKCS1_RSA_ENCRYPTION; + + /* determine RSA key type from the CKA_PUBLIC_KEY_INFO if present */ + attribute = sftk_FindAttribute(key, CKA_PUBLIC_KEY_INFO); + if (attribute) { + NSSLOWKEYSubjectPublicKeyInfo *publicKeyInfo; + SECItem spki; + + spki.data = attribute->attrib.pValue; + spki.len = attribute->attrib.ulValueLen; + + publicKeyInfo = PORT_ArenaZAlloc(arena, + sizeof(NSSLOWKEYSubjectPublicKeyInfo)); + if (!publicKeyInfo) { + sftk_FreeAttribute(attribute); + *crvp = CKR_HOST_MEMORY; + rv = SECFailure; + goto loser; + } + rv = SEC_QuickDERDecodeItem(arena, publicKeyInfo, + nsslowkey_SubjectPublicKeyInfoTemplate, + &spki); + if (rv != SECSuccess) { + sftk_FreeAttribute(attribute); + *crvp = CKR_KEY_TYPE_INCONSISTENT; + goto loser; + } + algorithm = SECOID_GetAlgorithmTag(&publicKeyInfo->algorithm); + if (algorithm != SEC_OID_PKCS1_RSA_ENCRYPTION && + algorithm != SEC_OID_PKCS1_RSA_PSS_SIGNATURE) { + sftk_FreeAttribute(attribute); + rv = SECFailure; + *crvp = CKR_KEY_TYPE_INCONSISTENT; + goto loser; + } + param = SECITEM_DupItem(&publicKeyInfo->algorithm.parameters); + if (!param) { + sftk_FreeAttribute(attribute); + rv = SECFailure; + *crvp = CKR_HOST_MEMORY; + goto loser; + } + sftk_FreeAttribute(attribute); + } else { + /* default to PKCS #1 */ + algorithm = SEC_OID_PKCS1_RSA_ENCRYPTION; + } break; case NSSLOWKEYDSAKey: prepare_low_dsa_priv_key_export_for_asn1(lk); @@ -5803,6 +5848,53 @@ sftk_unwrapPrivateKey(SFTKObject *key, SECItem *bpki) break; } + if (crv != CKR_OK) { + goto loser; + } + + /* For RSA-PSS, record the original algorithm parameters so + * they can be encrypted altoghether when wrapping */ + if (SECOID_GetAlgorithmTag(&pki->algorithm) == SEC_OID_PKCS1_RSA_PSS_SIGNATURE) { + NSSLOWKEYSubjectPublicKeyInfo spki; + NSSLOWKEYPublicKey pubk; + SECItem *publicKeyInfo; + + memset(&spki, 0, sizeof(NSSLOWKEYSubjectPublicKeyInfo)); + rv = SECOID_CopyAlgorithmID(arena, &spki.algorithm, &pki->algorithm); + if (rv != SECSuccess) { + crv = CKR_HOST_MEMORY; + goto loser; + } + + prepare_low_rsa_pub_key_for_asn1(&pubk); + + rv = SECITEM_CopyItem(arena, &pubk.u.rsa.modulus, &lpk->u.rsa.modulus); + if (rv != SECSuccess) { + crv = CKR_HOST_MEMORY; + goto loser; + } + rv = SECITEM_CopyItem(arena, &pubk.u.rsa.publicExponent, &lpk->u.rsa.publicExponent); + if (rv != SECSuccess) { + crv = CKR_HOST_MEMORY; + goto loser; + } + + if (SEC_ASN1EncodeItem(arena, &spki.subjectPublicKey, + &pubk, nsslowkey_RSAPublicKeyTemplate) == NULL) { + crv = CKR_HOST_MEMORY; + goto loser; + } + + publicKeyInfo = SEC_ASN1EncodeItem(arena, NULL, + &spki, nsslowkey_SubjectPublicKeyInfoTemplate); + if (!publicKeyInfo) { + crv = CKR_HOST_MEMORY; + goto loser; + } + crv = sftk_AddAttributeType(key, CKA_PUBLIC_KEY_INFO, + sftk_item_expand(publicKeyInfo)); + } + loser: if (lpk) { nsslowkey_DestroyPrivateKey(lpk); @@ -7575,13 +7667,13 @@ NSC_DeriveKey(CK_SESSION_HANDLE hSession, (const CK_NSS_HKDFParams *)pMechanism->pParameter; const SECHashObject *rawHash; unsigned hashLen; - CK_BYTE buf[HASH_LENGTH_MAX]; + CK_BYTE hashbuf[HASH_LENGTH_MAX]; CK_BYTE *prk; /* psuedo-random key */ CK_ULONG prkLen; CK_BYTE *okm; /* output keying material */ rawHash = HASH_GetRawHashObject(hashType); - if (rawHash == NULL || rawHash->length > sizeof buf) { + if (rawHash == NULL || rawHash->length > sizeof(hashbuf)) { crv = CKR_FUNCTION_FAILED; break; } @@ -7615,7 +7707,7 @@ NSC_DeriveKey(CK_SESSION_HANDLE hSession, saltLen = params->ulSaltLen; if (salt == NULL) { saltLen = hashLen; - salt = buf; + salt = hashbuf; memset(salt, 0, saltLen); } hmac = HMAC_Create(rawHash, salt, saltLen, isFIPS); @@ -7626,10 +7718,10 @@ NSC_DeriveKey(CK_SESSION_HANDLE hSession, HMAC_Begin(hmac); HMAC_Update(hmac, (const unsigned char *)att->attrib.pValue, att->attrib.ulValueLen); - HMAC_Finish(hmac, buf, &bufLen, sizeof(buf)); + HMAC_Finish(hmac, hashbuf, &bufLen, sizeof(hashbuf)); HMAC_Destroy(hmac, PR_TRUE); PORT_Assert(bufLen == rawHash->length); - prk = buf; + prk = hashbuf; prkLen = bufLen; } else { /* PRK = base key value */ @@ -7646,24 +7738,24 @@ NSC_DeriveKey(CK_SESSION_HANDLE hSession, * key material = T(1) | ... | T(n) */ HMACContext *hmac; - CK_BYTE i; + CK_BYTE bi; unsigned iterations = PR_ROUNDUP(keySize, hashLen) / hashLen; hmac = HMAC_Create(rawHash, prk, prkLen, isFIPS); if (hmac == NULL) { crv = CKR_HOST_MEMORY; break; } - for (i = 1; i <= iterations; ++i) { + for (bi = 1; bi <= iterations; ++bi) { unsigned len; HMAC_Begin(hmac); - if (i > 1) { - HMAC_Update(hmac, key_block + ((i - 2) * hashLen), hashLen); + if (bi > 1) { + HMAC_Update(hmac, key_block + ((bi - 2) * hashLen), hashLen); } if (params->ulInfoLen != 0) { HMAC_Update(hmac, params->pInfo, params->ulInfoLen); } - HMAC_Update(hmac, &i, 1); - HMAC_Finish(hmac, key_block + ((i - 1) * hashLen), &len, + HMAC_Update(hmac, &bi, 1); + HMAC_Finish(hmac, key_block + ((bi - 1) * hashLen), &len, hashLen); PORT_Assert(len == hashLen); } diff --git a/security/nss/lib/softoken/pkcs11u.c b/security/nss/lib/softoken/pkcs11u.c index 27e411759..7b5fe732f 100644 --- a/security/nss/lib/softoken/pkcs11u.c +++ b/security/nss/lib/softoken/pkcs11u.c @@ -1193,7 +1193,7 @@ sftk_DeleteObject(SFTKSession *session, SFTKObject *object) /* Handle Token case */ if (so && so->session) { - SFTKSession *session = so->session; + session = so->session; PZ_Lock(session->objectLock); sftkqueue_delete(&so->sessionList, 0, session->objects, 0); PZ_Unlock(session->objectLock); @@ -1269,7 +1269,7 @@ static const CK_ULONG ecPubKeyAttrsCount = static const CK_ATTRIBUTE_TYPE commonPrivKeyAttrs[] = { CKA_DECRYPT, CKA_SIGN, CKA_SIGN_RECOVER, CKA_UNWRAP, CKA_SUBJECT, - CKA_SENSITIVE, CKA_EXTRACTABLE, CKA_NETSCAPE_DB + CKA_SENSITIVE, CKA_EXTRACTABLE, CKA_NETSCAPE_DB, CKA_PUBLIC_KEY_INFO }; static const CK_ULONG commonPrivKeyAttrsCount = sizeof(commonPrivKeyAttrs) / sizeof(commonPrivKeyAttrs[0]); diff --git a/security/nss/lib/softoken/sdb.c b/security/nss/lib/softoken/sdb.c index 96717cb26..fb897d68c 100644 --- a/security/nss/lib/softoken/sdb.c +++ b/security/nss/lib/softoken/sdb.c @@ -37,6 +37,10 @@ #elif defined(XP_UNIX) #include <unistd.h> #endif +#if defined(LINUX) && !defined(ANDROID) +#include <linux/magic.h> +#include <sys/vfs.h> +#endif #include "utilpars.h" #ifdef SQLITE_UNSAFE_THREADS @@ -154,7 +158,8 @@ static const CK_ATTRIBUTE_TYPE known_attributes[] = { CKA_TRUST_EMAIL_PROTECTION, CKA_TRUST_IPSEC_END_SYSTEM, CKA_TRUST_IPSEC_TUNNEL, CKA_TRUST_IPSEC_USER, CKA_TRUST_TIME_STAMPING, CKA_TRUST_STEP_UP_APPROVED, CKA_CERT_SHA1_HASH, CKA_CERT_MD5_HASH, - CKA_NETSCAPE_DB, CKA_NETSCAPE_TRUST, CKA_NSS_OVERRIDE_EXTENSIONS + CKA_NETSCAPE_DB, CKA_NETSCAPE_TRUST, CKA_NSS_OVERRIDE_EXTENSIONS, + CKA_PUBLIC_KEY_INFO }; static int known_attributes_size = sizeof(known_attributes) / @@ -643,13 +648,18 @@ static int sdb_openDB(const char *name, sqlite3 **sqlDB, int flags) { int sqlerr; - /* - * in sqlite3 3.5.0, there is a new open call that allows us - * to specify read only. Most new OS's are still on 3.3.x (including - * NSS's internal version and the version shipped with Firefox). - */ + int openFlags; + *sqlDB = NULL; - sqlerr = sqlite3_open(name, sqlDB); + + if (flags & SDB_RDONLY) { + openFlags = SQLITE_OPEN_READONLY; + } else { + openFlags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE; + } + + /* Requires SQLite 3.5.0 or newer. */ + sqlerr = sqlite3_open_v2(name, sqlDB, openFlags, NULL); if (sqlerr != SQLITE_OK) { return sqlerr; } @@ -1757,6 +1767,8 @@ sdb_init(char *dbname, char *table, sdbDataType type, int *inUpdate, PRIntervalTime now = 0; char *env; PRBool enableCache = PR_FALSE; + PRBool checkFSType = PR_FALSE; + PRBool measureSpeed = PR_FALSE; PRBool create; int flags = inFlags & 0x7; @@ -1917,11 +1929,48 @@ sdb_init(char *dbname, char *table, sdbDataType type, int *inUpdate, env = PR_GetEnvSecure("NSS_SDB_USE_CACHE"); - if (!env || PORT_Strcasecmp(env, "no") == 0) { - enableCache = PR_FALSE; + /* Variables enableCache, checkFSType, measureSpeed are PR_FALSE by default, + * which is the expected behavior for NSS_SDB_USE_CACHE="no". + * We don't need to check for "no" here. */ + if (!env) { + /* By default, with no variable set, we avoid expensive measuring for + * most FS types. We start with inexpensive FS type checking, and + * might perform measuring for some types. */ + checkFSType = PR_TRUE; } else if (PORT_Strcasecmp(env, "yes") == 0) { enableCache = PR_TRUE; - } else { + } else if (PORT_Strcasecmp(env, "no") != 0) { /* not "no" => "auto" */ + measureSpeed = PR_TRUE; + } + + if (checkFSType) { +#if defined(LINUX) && !defined(ANDROID) + struct statfs statfs_s; + if (statfs(dbname, &statfs_s) == 0) { + switch (statfs_s.f_type) { + case SMB_SUPER_MAGIC: + case 0xff534d42: /* CIFS_MAGIC_NUMBER */ + case NFS_SUPER_MAGIC: + /* We assume these are slow. */ + enableCache = PR_TRUE; + break; + case CODA_SUPER_MAGIC: + case 0x65735546: /* FUSE_SUPER_MAGIC */ + case NCP_SUPER_MAGIC: + /* It's uncertain if this FS is fast or slow. + * It seems reasonable to perform slow measuring for users + * with questionable FS speed. */ + measureSpeed = PR_TRUE; + break; + case AFS_SUPER_MAGIC: /* Already implements caching. */ + default: + break; + } + } +#endif + } + + if (measureSpeed) { char *tempDir = NULL; PRUint32 tempOps = 0; /* diff --git a/security/nss/lib/softoken/sftkdb.c b/security/nss/lib/softoken/sftkdb.c index 2ae084068..409c910f4 100644 --- a/security/nss/lib/softoken/sftkdb.c +++ b/security/nss/lib/softoken/sftkdb.c @@ -1591,7 +1591,8 @@ static const CK_ATTRIBUTE_TYPE known_attributes[] = { CKA_TRUST_EMAIL_PROTECTION, CKA_TRUST_IPSEC_END_SYSTEM, CKA_TRUST_IPSEC_TUNNEL, CKA_TRUST_IPSEC_USER, CKA_TRUST_TIME_STAMPING, CKA_TRUST_STEP_UP_APPROVED, CKA_CERT_SHA1_HASH, CKA_CERT_MD5_HASH, - CKA_NETSCAPE_DB, CKA_NETSCAPE_TRUST, CKA_NSS_OVERRIDE_EXTENSIONS + CKA_NETSCAPE_DB, CKA_NETSCAPE_TRUST, CKA_NSS_OVERRIDE_EXTENSIONS, + CKA_PUBLIC_KEY_INFO }; static unsigned int known_attributes_size = sizeof(known_attributes) / diff --git a/security/nss/lib/softoken/sftkpars.c b/security/nss/lib/softoken/sftkpars.c index e972fe854..5e96a1c04 100644 --- a/security/nss/lib/softoken/sftkpars.c +++ b/security/nss/lib/softoken/sftkpars.c @@ -162,7 +162,7 @@ sftk_parseParameters(char *param, sftk_parameters *parsed, PRBool isFIPS) } if (parsed->tokens == NULL) { int count = isFIPS ? 1 : 2; - int index = count - 1; + int i = count - 1; sftk_token_parameters *tokens = NULL; tokens = (sftk_token_parameters *) @@ -172,30 +172,30 @@ sftk_parseParameters(char *param, sftk_parameters *parsed, PRBool isFIPS) } parsed->tokens = tokens; parsed->token_count = count; - tokens[index].slotID = isFIPS ? FIPS_SLOT_ID : PRIVATE_KEY_SLOT_ID; - tokens[index].certPrefix = certPrefix; - tokens[index].keyPrefix = keyPrefix; - tokens[index].minPW = minPW ? atoi(minPW) : 0; - tokens[index].readOnly = parsed->readOnly; - tokens[index].noCertDB = parsed->noCertDB; - tokens[index].noKeyDB = parsed->noCertDB; - tokens[index].forceOpen = parsed->forceOpen; - tokens[index].pwRequired = parsed->pwRequired; - tokens[index].optimizeSpace = parsed->optimizeSpace; + tokens[i].slotID = isFIPS ? FIPS_SLOT_ID : PRIVATE_KEY_SLOT_ID; + tokens[i].certPrefix = certPrefix; + tokens[i].keyPrefix = keyPrefix; + tokens[i].minPW = minPW ? atoi(minPW) : 0; + tokens[i].readOnly = parsed->readOnly; + tokens[i].noCertDB = parsed->noCertDB; + tokens[i].noKeyDB = parsed->noCertDB; + tokens[i].forceOpen = parsed->forceOpen; + tokens[i].pwRequired = parsed->pwRequired; + tokens[i].optimizeSpace = parsed->optimizeSpace; tokens[0].optimizeSpace = parsed->optimizeSpace; certPrefix = NULL; keyPrefix = NULL; if (isFIPS) { - tokens[index].tokdes = ftokdes; - tokens[index].updtokdes = pupdtokdes; - tokens[index].slotdes = fslotdes; + tokens[i].tokdes = ftokdes; + tokens[i].updtokdes = pupdtokdes; + tokens[i].slotdes = fslotdes; fslotdes = NULL; ftokdes = NULL; pupdtokdes = NULL; } else { - tokens[index].tokdes = ptokdes; - tokens[index].updtokdes = pupdtokdes; - tokens[index].slotdes = pslotdes; + tokens[i].tokdes = ptokdes; + tokens[i].updtokdes = pupdtokdes; + tokens[i].slotdes = pslotdes; tokens[0].slotID = NETSCAPE_SLOT_ID; tokens[0].tokdes = tokdes; tokens[0].slotdes = slotdes; diff --git a/security/nss/lib/softoken/sftkpwd.c b/security/nss/lib/softoken/sftkpwd.c index e0d2df9ab..9834d3ba0 100644 --- a/security/nss/lib/softoken/sftkpwd.c +++ b/security/nss/lib/softoken/sftkpwd.c @@ -138,12 +138,14 @@ sftkdb_decodeCipherText(SECItem *cipherText, sftkCipherValue *cipherValue) SFTKDBEncryptedDataInfo edi; SECStatus rv; + PORT_Assert(cipherValue); + cipherValue->arena = NULL; + cipherValue->param = NULL; + arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE); if (arena == NULL) { return SECFailure; } - cipherValue->arena = NULL; - cipherValue->param = NULL; rv = SEC_QuickDERDecodeItem(arena, &edi, sftkdb_EncryptedDataInfoTemplate, cipherText); diff --git a/security/nss/lib/softoken/softkver.h b/security/nss/lib/softoken/softkver.h index f760ba21d..827bf2e22 100644 --- a/security/nss/lib/softoken/softkver.h +++ b/security/nss/lib/softoken/softkver.h @@ -17,10 +17,10 @@ * The format of the version string should be * "<major version>.<minor version>[.<patch level>[.<build number>]][ <ECC>][ <Beta>]" */ -#define SOFTOKEN_VERSION "3.36.4" SOFTOKEN_ECC_STRING +#define SOFTOKEN_VERSION "3.38" SOFTOKEN_ECC_STRING #define SOFTOKEN_VMAJOR 3 -#define SOFTOKEN_VMINOR 36 -#define SOFTOKEN_VPATCH 4 +#define SOFTOKEN_VMINOR 38 +#define SOFTOKEN_VPATCH 0 #define SOFTOKEN_VBUILD 0 #define SOFTOKEN_BETA PR_FALSE diff --git a/security/nss/lib/ssl/SSLerrs.h b/security/nss/lib/ssl/SSLerrs.h index d3f087544..f01d16583 100644 --- a/security/nss/lib/ssl/SSLerrs.h +++ b/security/nss/lib/ssl/SSLerrs.h @@ -374,7 +374,7 @@ ER3(SSL_ERROR_WEAK_SERVER_EPHEMERAL_DH_KEY, (SSL_ERROR_BASE + 115), "SSL received a weak ephemeral Diffie-Hellman key in Server Key Exchange handshake message.") ER3(SSL_ERROR_NEXT_PROTOCOL_DATA_INVALID, (SSL_ERROR_BASE + 116), - "SSL received invalid NPN extension data.") + "SSL received invalid ALPN extension data.") ER3(SSL_ERROR_FEATURE_NOT_SUPPORTED_FOR_SSL2, (SSL_ERROR_BASE + 117), "SSL feature not supported for SSL 2.0 connections.") @@ -543,3 +543,12 @@ ER3(SSL_ERROR_TOO_MANY_KEY_UPDATES, (SSL_ERROR_BASE + 171), ER3(SSL_ERROR_HANDSHAKE_FAILED, (SSL_ERROR_BASE + 172), "SSL handshake has already failed. No more operations possible.") + +ER3(SSL_ERROR_BAD_RESUMPTION_TOKEN_ERROR, (SSL_ERROR_BASE + 173), + "SSL received an invalid resumption token.") + +ER3(SSL_ERROR_RX_MALFORMED_DTLS_ACK, (SSL_ERROR_BASE + 174), + "SSL received a malformed DTLS ACK") + +ER3(SSL_ERROR_DH_KEY_TOO_LONG, (SSL_ERROR_BASE + 175), + "SSL received a DH key share that's too long (>8192 bit).") diff --git a/security/nss/lib/ssl/dtls13con.c b/security/nss/lib/ssl/dtls13con.c index aba0f62ab..de6cb47ca 100644 --- a/security/nss/lib/ssl/dtls13con.c +++ b/security/nss/lib/ssl/dtls13con.c @@ -11,6 +11,43 @@ #include "sslimpl.h" #include "sslproto.h" +SECStatus +dtls13_InsertCipherTextHeader(const sslSocket *ss, ssl3CipherSpec *cwSpec, + sslBuffer *wrBuf, PRBool *needsLength) +{ + PRUint32 seq; + SECStatus rv; + + /* Avoid using short records for the handshake. We pack multiple records + * into the one datagram for the handshake. */ + if (ss->opt.enableDtlsShortHeader && + cwSpec->epoch != TrafficKeyHandshake) { + *needsLength = PR_FALSE; + /* The short header is comprised of two octets in the form + * 0b001essssssssssss where 'e' is the low bit of the epoch and 's' is + * the low 12 bits of the sequence number. */ + seq = 0x2000 | + (((uint64_t)cwSpec->epoch & 1) << 12) | + (cwSpec->nextSeqNum & 0xfff); + return sslBuffer_AppendNumber(wrBuf, seq, 2); + } + + rv = sslBuffer_AppendNumber(wrBuf, content_application_data, 1); + if (rv != SECSuccess) { + return SECFailure; + } + + /* The epoch and sequence number are encoded on 4 octets, with the epoch + * consuming the first two bits. */ + seq = (((uint64_t)cwSpec->epoch & 3) << 30) | (cwSpec->nextSeqNum & 0x3fffffff); + rv = sslBuffer_AppendNumber(wrBuf, seq, 4); + if (rv != SECSuccess) { + return SECFailure; + } + *needsLength = PR_TRUE; + return SECSuccess; +} + /* DTLS 1.3 Record map for ACK processing. * This represents a single fragment, so a record which includes * multiple fragments will have one entry for each fragment on the @@ -82,10 +119,15 @@ dtls13_SendAck(sslSocket *ss) SECStatus rv = SECSuccess; PRCList *cursor; PRInt32 sent; + unsigned int offset; SSL_TRC(10, ("%d: SSL3[%d]: Sending ACK", SSL_GETPID(), ss->fd)); + rv = sslBuffer_Skip(&buf, 2, &offset); + if (rv != SECSuccess) { + goto loser; + } for (cursor = PR_LIST_HEAD(&ss->ssl3.hs.dtlsRcvdHandshake); cursor != &ss->ssl3.hs.dtlsRcvdHandshake; cursor = PR_NEXT_LINK(cursor)) { @@ -99,6 +141,11 @@ dtls13_SendAck(sslSocket *ss) } } + rv = sslBuffer_InsertLength(&buf, offset, 2); + if (rv != SECSuccess) { + goto loser; + } + ssl_GetXmitBufLock(ss); sent = ssl3_SendRecord(ss, NULL, content_ack, buf.buf, buf.len, 0); @@ -364,6 +411,7 @@ dtls13_HandleAck(sslSocket *ss, sslBuffer *databuf) { PRUint8 *b = databuf->buf; PRUint32 l = databuf->len; + unsigned int length; SECStatus rv; /* Ensure we don't loop. */ @@ -372,10 +420,19 @@ dtls13_HandleAck(sslSocket *ss, sslBuffer *databuf) PORT_Assert(IS_DTLS(ss)); if (!tls13_MaybeTls13(ss)) { tls13_FatalError(ss, SSL_ERROR_RX_UNKNOWN_RECORD_TYPE, illegal_parameter); - return SECSuccess; + return SECFailure; } SSL_TRC(10, ("%d: SSL3[%d]: Handling ACK", SSL_GETPID(), ss->fd)); + rv = ssl3_ConsumeHandshakeNumber(ss, &length, 2, &b, &l); + if (rv != SECSuccess) { + return SECFailure; + } + if (length != l) { + tls13_FatalError(ss, SSL_ERROR_RX_MALFORMED_DTLS_ACK, decode_error); + return SECFailure; + } + while (l > 0) { PRUint64 seq; PRCList *cursor; diff --git a/security/nss/lib/ssl/dtls13con.h b/security/nss/lib/ssl/dtls13con.h index bf14d3bd2..ca48ef363 100644 --- a/security/nss/lib/ssl/dtls13con.h +++ b/security/nss/lib/ssl/dtls13con.h @@ -9,6 +9,10 @@ #ifndef __dtls13con_h_ #define __dtls13con_h_ +SECStatus dtls13_InsertCipherTextHeader(const sslSocket *ss, + ssl3CipherSpec *cwSpec, + sslBuffer *wrBuf, + PRBool *needsLength); SECStatus dtls13_RememberFragment(sslSocket *ss, PRCList *list, PRUint32 sequence, PRUint32 offset, PRUint32 length, DTLSEpoch epoch, diff --git a/security/nss/lib/ssl/dtlscon.c b/security/nss/lib/ssl/dtlscon.c index 2f335f924..a82295c66 100644 --- a/security/nss/lib/ssl/dtlscon.c +++ b/security/nss/lib/ssl/dtlscon.c @@ -724,13 +724,16 @@ dtls_FragmentHandshake(sslSocket *ss, DTLSQueuedMessage *msg) PORT_Assert(end <= contentLen); fragmentLen = PR_MIN(end, contentLen) - fragmentOffset; - /* Reduce to the space remaining in the MTU. Allow for any existing - * messages, record expansion, and the handshake header. */ + /* Limit further by the record size limit. Account for the header. */ + fragmentLen = PR_MIN(fragmentLen, + msg->cwSpec->recordSizeLimit - DTLS_HS_HDR_LEN); + + /* Reduce to the space remaining in the MTU. */ fragmentLen = PR_MIN(fragmentLen, ss->ssl3.mtu - /* MTU estimate. */ - ss->pendingBuf.len - /* Less unsent records. */ + ss->pendingBuf.len - /* Less any unsent records. */ DTLS_MAX_EXPANSION - /* Allow for expansion. */ - DTLS_HS_HDR_LEN); /* + handshake header. */ + DTLS_HS_HDR_LEN); /* And the handshake header. */ PORT_Assert(fragmentLen > 0 || fragmentOffset == 0); /* Make totally sure that we will fit in the buffer. This should be @@ -776,7 +779,7 @@ dtls_FragmentHandshake(sslSocket *ss, DTLSQueuedMessage *msg) rv = dtls13_RememberFragment(ss, &ss->ssl3.hs.dtlsSentHandshake, msgSeq, fragmentOffset, fragmentLen, msg->cwSpec->epoch, - msg->cwSpec->seqNum); + msg->cwSpec->nextSeqNum); if (rv != SECSuccess) { return SECFailure; } @@ -1319,6 +1322,107 @@ DTLS_GetHandshakeTimeout(PRFileDesc *socket, PRIntervalTime *timeout) return SECSuccess; } +PRBool +dtls_IsLongHeader(SSL3ProtocolVersion version, PRUint8 firstOctet) +{ +#ifndef UNSAFE_FUZZER_MODE + return version < SSL_LIBRARY_VERSION_TLS_1_3 || + firstOctet == content_handshake || + firstOctet == content_ack || + firstOctet == content_alert; +#else + return PR_TRUE; +#endif +} + +DTLSEpoch +dtls_ReadEpoch(const ssl3CipherSpec *crSpec, const PRUint8 *hdr) +{ + DTLSEpoch epoch; + DTLSEpoch maxEpoch; + DTLSEpoch partial; + + if (dtls_IsLongHeader(crSpec->version, hdr[0])) { + return ((DTLSEpoch)hdr[3] << 8) | hdr[4]; + } + + /* A lot of how we recover the epoch here will depend on how we plan to + * manage KeyUpdate. In the case that we decide to install a new read spec + * as a KeyUpdate is handled, crSpec will always be the highest epoch we can + * possibly receive. That makes this easier to manage. */ + if ((hdr[0] & 0xe0) == 0x20) { + /* Use crSpec->epoch, or crSpec->epoch - 1 if the last bit differs. */ + if (((hdr[0] >> 4) & 1) == (crSpec->epoch & 1)) { + return crSpec->epoch; + } + return crSpec->epoch - 1; + } + + /* dtls_GatherData should ensure that this works. */ + PORT_Assert(hdr[0] == content_application_data); + + /* This uses the same method as is used to recover the sequence number in + * dtls_ReadSequenceNumber, except that the maximum value is set to the + * current epoch. */ + partial = hdr[1] >> 6; + maxEpoch = PR_MAX(crSpec->epoch, 3); + epoch = (maxEpoch & 0xfffc) | partial; + if (partial > (maxEpoch & 0x03)) { + epoch -= 4; + } + return epoch; +} + +static sslSequenceNumber +dtls_ReadSequenceNumber(const ssl3CipherSpec *spec, const PRUint8 *hdr) +{ + sslSequenceNumber cap; + sslSequenceNumber partial; + sslSequenceNumber seqNum; + sslSequenceNumber mask; + + if (dtls_IsLongHeader(spec->version, hdr[0])) { + static const unsigned int seqNumOffset = 5; /* type, version, epoch */ + static const unsigned int seqNumLength = 6; + sslReader r = SSL_READER(hdr + seqNumOffset, seqNumLength); + (void)sslRead_ReadNumber(&r, seqNumLength, &seqNum); + return seqNum; + } + + /* Only the least significant bits of the sequence number is available here. + * This recovers the value based on the next expected sequence number. + * + * This works by determining the maximum possible sequence number, which is + * half the range of possible values above the expected next value (the + * expected next value is in |spec->seqNum|). Then, the last part of the + * sequence number is replaced. If that causes the value to exceed the + * maximum, subtract an entire range. + */ + if ((hdr[0] & 0xe0) == 0x20) { + /* A 12-bit sequence number. */ + cap = spec->nextSeqNum + (1ULL << 11); + partial = (((sslSequenceNumber)hdr[0] & 0xf) << 8) | + (sslSequenceNumber)hdr[1]; + mask = (1ULL << 12) - 1; + } else { + /* A 30-bit sequence number. */ + cap = spec->nextSeqNum + (1ULL << 29); + partial = (((sslSequenceNumber)hdr[1] & 0x3f) << 24) | + ((sslSequenceNumber)hdr[2] << 16) | + ((sslSequenceNumber)hdr[3] << 8) | + (sslSequenceNumber)hdr[4]; + mask = (1ULL << 30) - 1; + } + seqNum = (cap & ~mask) | partial; + /* The second check prevents the value from underflowing if we get a large + * gap at the start of a connection, where this subtraction would cause the + * sequence number to wrap to near UINT64_MAX. */ + if ((partial > (cap & mask)) && (seqNum > mask)) { + seqNum -= mask + 1; + } + return seqNum; +} + /* * DTLS relevance checks: * Note that this code currently ignores all out-of-epoch packets, @@ -1336,7 +1440,7 @@ dtls_IsRelevant(sslSocket *ss, const ssl3CipherSpec *spec, const SSL3Ciphertext *cText, sslSequenceNumber *seqNumOut) { - sslSequenceNumber seqNum = cText->seq_num & RECORD_SEQ_MASK; + sslSequenceNumber seqNum = dtls_ReadSequenceNumber(spec, cText->hdr); if (dtls_RecordGetRecvd(&spec->recvdRecords, seqNum) != 0) { SSL_TRC(10, ("%d: SSL3[%d]: dtls_IsRelevant, rejecting " "potentially replayed packet", diff --git a/security/nss/lib/ssl/dtlscon.h b/security/nss/lib/ssl/dtlscon.h index d094380f8..45fc069b9 100644 --- a/security/nss/lib/ssl/dtlscon.h +++ b/security/nss/lib/ssl/dtlscon.h @@ -41,8 +41,10 @@ extern SSL3ProtocolVersion dtls_TLSVersionToDTLSVersion(SSL3ProtocolVersion tlsv); extern SSL3ProtocolVersion dtls_DTLSVersionToTLSVersion(SSL3ProtocolVersion dtlsv); +DTLSEpoch dtls_ReadEpoch(const ssl3CipherSpec *crSpec, const PRUint8 *hdr); extern PRBool dtls_IsRelevant(sslSocket *ss, const ssl3CipherSpec *spec, const SSL3Ciphertext *cText, sslSequenceNumber *seqNum); void dtls_ReceivedFirstMessageInFlight(sslSocket *ss); +PRBool dtls_IsLongHeader(SSL3ProtocolVersion version, PRUint8 firstOctet); #endif diff --git a/security/nss/lib/ssl/ssl.h b/security/nss/lib/ssl/ssl.h index 25aabbaa2..ecc4f9506 100644 --- a/security/nss/lib/ssl/ssl.h +++ b/security/nss/lib/ssl/ssl.h @@ -158,23 +158,18 @@ SSL_IMPORT PRFileDesc *DTLS_ImportFD(PRFileDesc *model, PRFileDesc *fd); #define SSL_CBC_RANDOM_IV 23 #define SSL_ENABLE_OCSP_STAPLING 24 /* Request OCSP stapling (client) */ -/* SSL_ENABLE_NPN controls whether the NPN extension is enabled for the initial - * handshake when application layer protocol negotiation is used. - * SSL_SetNextProtoCallback or SSL_SetNextProtoNego must be used to control the - * application layer protocol negotiation; otherwise, the NPN extension will - * not be negotiated. SSL_ENABLE_NPN is currently enabled by default but this - * may change in future versions. - */ +/* SSL_ENABLE_NPN is defunct and defaults to false. + * Using this option will not have any effect but won't produce an error. */ #define SSL_ENABLE_NPN 25 /* SSL_ENABLE_ALPN controls whether the ALPN extension is enabled for the * initial handshake when application layer protocol negotiation is used. - * SSL_SetNextProtoNego (not SSL_SetNextProtoCallback) must be used to control - * the application layer protocol negotiation; otherwise, the ALPN extension - * will not be negotiated. ALPN is not negotiated for renegotiation handshakes, - * even though the ALPN specification defines a way to use ALPN during - * renegotiations. SSL_ENABLE_ALPN is currently disabled by default, but this - * may change in future versions. + * SSL_SetNextProtoNego or SSL_SetNextProtoCallback can be used to control + * the application layer protocol negotiation; + * ALPN is not negotiated for renegotiation handshakes, even though the ALPN + * specification defines a way to use ALPN during renegotiations. + * SSL_ENABLE_ALPN is currently enabled by default, but this may change in + * future versions. */ #define SSL_ENABLE_ALPN 26 @@ -248,12 +243,45 @@ SSL_IMPORT PRFileDesc *DTLS_ImportFD(PRFileDesc *model, PRFileDesc *fd); */ #define SSL_ENABLE_0RTT_DATA 33 +/* Sets a limit to the size of encrypted records (see + * draft-ietf-tls-record-limit). This is the value that is advertised to peers, + * not a limit on the size of records that will be created. Setting this value + * reduces the size of records that will be received (not sent). + * + * This limit applies to the plaintext, but the records that appear on the wire + * will be bigger. This doesn't include record headers, IVs, block cipher + * padding, and authentication tags or MACs. + * + * NSS always advertises the record size limit extension. If this option is not + * set, the extension will contain the maximum allowed size for the selected TLS + * version (currently this is 16384 or 2^14 for TLS 1.2 and lower and 16385 for + * TLS 1.3). + * + * By default, NSS creates records that are the maximum size possible, using all + * the data that was written by the application. Writes larger than the maximum + * are split into maximum sized records, and any remainder (unless + * SSL_CBC_RANDOM_IV is enabled and active). If a peer advertises a record size + * limit then that value is used instead. + */ +#define SSL_RECORD_SIZE_LIMIT 34 + /* Enables TLS 1.3 compatibility mode. In this mode, the client includes a fake * session ID in the handshake and sends a ChangeCipherSpec. A server will * always use the setting chosen by the client, so the value of this option has * no effect for a server. This setting is ignored for DTLS. */ #define SSL_ENABLE_TLS13_COMPAT_MODE 35 +/* Enables the sending of DTLS records using the short (two octet) record + * header. Only do this if there are 2^10 or fewer packets in flight at a time; + * using this with a larger number of packets in flight could mean that packets + * are dropped if there is reordering. + * + * This applies to TLS 1.3 only. This is not a parameter that is negotiated + * during the TLS handshake. Unlike other socket options, this option can be + * changed after a handshake is complete. + */ +#define SSL_ENABLE_DTLS_SHORT_HEADER 36 + #ifdef SSL_DEPRECATED_FUNCTION /* Old deprecated function names */ SSL_IMPORT SECStatus SSL_Enable(PRFileDesc *fd, int option, PRIntn on); @@ -272,10 +300,10 @@ SSL_IMPORT SECStatus SSL_OptionSetDefault(PRInt32 option, PRIntn val); SSL_IMPORT SECStatus SSL_OptionGetDefault(PRInt32 option, PRIntn *val); SSL_IMPORT SECStatus SSL_CertDBHandleSet(PRFileDesc *fd, CERTCertDBHandle *dbHandle); -/* SSLNextProtoCallback is called during the handshake for the client, when a - * Next Protocol Negotiation (NPN) extension has been received from the server. - * |protos| and |protosLen| define a buffer which contains the server's - * advertisement. This data is guaranteed to be well formed per the NPN spec. +/* SSLNextProtoCallback is called during the handshake for the server, when an + * Application-Layer Protocol Negotiation (ALPN) extension has been received + * from the client. |protos| and |protosLen| define a buffer which contains the + * client's advertisement. * |protoOut| is a buffer provided by the caller, of length 255 (the maximum * allowed by the protocol). On successful return, the protocol to be announced * to the server will be in |protoOut| and its length in |*protoOutLen|. @@ -291,27 +319,24 @@ typedef SECStatus(PR_CALLBACK *SSLNextProtoCallback)( unsigned int *protoOutLen, unsigned int protoMaxOut); -/* SSL_SetNextProtoCallback sets a callback function to handle Next Protocol - * Negotiation. It causes a client to advertise NPN. */ +/* SSL_SetNextProtoCallback sets a callback function to handle ALPN Negotiation. + * It causes a client to advertise ALPN. */ SSL_IMPORT SECStatus SSL_SetNextProtoCallback(PRFileDesc *fd, SSLNextProtoCallback callback, void *arg); /* SSL_SetNextProtoNego can be used as an alternative to - * SSL_SetNextProtoCallback. It also causes a client to advertise NPN and - * installs a default callback function which selects the first supported - * protocol in server-preference order. If no matching protocol is found it - * selects the first supported protocol. + * SSL_SetNextProtoCallback. * - * Using this function also allows the client to transparently support ALPN. + * Using this function allows client and server to transparently support ALPN. * The same set of protocols will be advertised via ALPN and, if the server * uses ALPN to select a protocol, SSL_GetNextProto will return * SSL_NEXT_PROTO_SELECTED as the state. * - * Since NPN uses the first protocol as the fallback protocol, when sending an - * ALPN extension, the first protocol is moved to the end of the list. This - * indicates that the fallback protocol is the least preferred. The other - * protocols should be in preference order. + * Because the predecessor to ALPN, NPN, used the first protocol as the fallback + * protocol, when sending an ALPN extension, the first protocol is moved to the + * end of the list. This indicates that the fallback protocol is the least + * preferred. The other protocols should be in preference order. * * The supported protocols are specified in |data| in wire-format (8-bit * length-prefixed). For example: "\010http/1.1\006spdy/2". */ diff --git a/security/nss/lib/ssl/ssl3con.c b/security/nss/lib/ssl/ssl3con.c index 2593bbacc..466fc296f 100644 --- a/security/nss/lib/ssl/ssl3con.c +++ b/security/nss/lib/ssl/ssl3con.c @@ -990,27 +990,22 @@ ssl_ClientReadVersion(sslSocket *ss, PRUint8 **b, unsigned int *len, if (rv != SECSuccess) { return SECFailure; /* alert has been sent */ } - -#ifdef TLS_1_3_DRAFT_VERSION - if (temp == SSL_LIBRARY_VERSION_TLS_1_3) { - (void)SSL3_SendAlert(ss, alert_fatal, protocol_version); - PORT_SetError(SSL_ERROR_UNSUPPORTED_VERSION); - return SECFailure; - } - if (temp == tls13_EncodeDraftVersion(SSL_LIBRARY_VERSION_TLS_1_3)) { - v = SSL_LIBRARY_VERSION_TLS_1_3; - } else { - v = (SSL3ProtocolVersion)temp; - } -#else v = (SSL3ProtocolVersion)temp; -#endif if (IS_DTLS(ss)) { - /* If this fails, we get 0 back and the next check to fails. */ v = dtls_DTLSVersionToTLSVersion(v); + /* Check for failure. */ + if (!v || v > SSL_LIBRARY_VERSION_MAX_SUPPORTED) { + SSL3_SendAlert(ss, alert_fatal, illegal_parameter); + return SECFailure; + } } + /* You can't negotiate TLS 1.3 this way. */ + if (v >= SSL_LIBRARY_VERSION_TLS_1_3) { + SSL3_SendAlert(ss, alert_fatal, illegal_parameter); + return SECFailure; + } *version = v; return SECSuccess; } @@ -1415,7 +1410,7 @@ ssl3_SetupPendingCipherSpec(sslSocket *ss, CipherSpecDirection direction, spec->macDef = ssl_GetMacDef(ss, suiteDef); spec->epoch = prev->epoch + 1; - spec->seqNum = 0; + spec->nextSeqNum = 0; if (IS_DTLS(ss) && direction == CipherSpecRead) { dtls_InitRecvdRecords(&spec->recvdRecords); } @@ -1481,6 +1476,13 @@ ssl3_SetupBothPendingCipherSpecs(sslSocket *ss) goto loser; } + if (ssl3_ExtensionNegotiated(ss, ssl_record_size_limit_xtn)) { + ss->ssl3.prSpec->recordSizeLimit = PR_MIN(MAX_FRAGMENT_LENGTH, + ss->opt.recordSizeLimit); + ss->ssl3.pwSpec->recordSizeLimit = PR_MIN(MAX_FRAGMENT_LENGTH, + ss->xtnData.recordSizeLimit); + } + ssl_ReleaseSpecWriteLock(ss); /*******************************/ return SECSuccess; @@ -2004,6 +2006,7 @@ ssl3_MACEncryptRecord(ssl3CipherSpec *cwSpec, unsigned int ivLen = 0; unsigned char pseudoHeaderBuf[13]; sslBuffer pseudoHeader = SSL_BUFFER(pseudoHeaderBuf); + int len; if (cwSpec->cipherDef->type == type_block && cwSpec->version >= SSL_LIBRARY_VERSION_TLS_1_1) { @@ -2013,29 +2016,32 @@ ssl3_MACEncryptRecord(ssl3CipherSpec *cwSpec, * record. */ ivLen = cwSpec->cipherDef->iv_size; - if (ivLen > wrBuf->space) { + if (ivLen > SSL_BUFFER_SPACE(wrBuf)) { PORT_SetError(SEC_ERROR_LIBRARY_FAILURE); return SECFailure; } - rv = PK11_GenerateRandom(wrBuf->buf, ivLen); + rv = PK11_GenerateRandom(SSL_BUFFER_NEXT(wrBuf), ivLen); if (rv != SECSuccess) { ssl_MapLowLevelError(SSL_ERROR_GENERATE_RANDOM_FAILURE); return rv; } rv = cwSpec->cipher(cwSpec->cipherContext, - wrBuf->buf, /* output */ - (int *)&wrBuf->len, /* outlen */ - ivLen, /* max outlen */ - wrBuf->buf, /* input */ - ivLen); /* input len */ - if (rv != SECSuccess || wrBuf->len != ivLen) { + SSL_BUFFER_NEXT(wrBuf), /* output */ + &len, /* outlen */ + ivLen, /* max outlen */ + SSL_BUFFER_NEXT(wrBuf), /* input */ + ivLen); /* input len */ + if (rv != SECSuccess || len != ivLen) { PORT_SetError(SSL_ERROR_ENCRYPTION_FAILURE); return SECFailure; } + + rv = sslBuffer_Skip(wrBuf, len, NULL); + PORT_Assert(rv == SECSuccess); /* Can't fail. */ } rv = ssl3_BuildRecordPseudoHeader( - cwSpec->epoch, cwSpec->seqNum, type, + cwSpec->epoch, cwSpec->nextSeqNum, type, cwSpec->version >= SSL_LIBRARY_VERSION_TLS_1_0, cwSpec->recordVersion, isDTLS, contentLen, &pseudoHeader); PORT_Assert(rv == SECSuccess); @@ -2043,23 +2049,26 @@ ssl3_MACEncryptRecord(ssl3CipherSpec *cwSpec, const int nonceLen = cwSpec->cipherDef->explicit_nonce_size; const int tagLen = cwSpec->cipherDef->tag_size; - if (nonceLen + contentLen + tagLen > wrBuf->space) { + if (nonceLen + contentLen + tagLen > SSL_BUFFER_SPACE(wrBuf)) { PORT_SetError(SEC_ERROR_LIBRARY_FAILURE); return SECFailure; } rv = cwSpec->aead( &cwSpec->keyMaterial, - PR_FALSE, /* do encrypt */ - wrBuf->buf, /* output */ - (int *)&wrBuf->len, /* out len */ - wrBuf->space, /* max out */ - pIn, contentLen, /* input */ + PR_FALSE, /* do encrypt */ + SSL_BUFFER_NEXT(wrBuf), /* output */ + &len, /* out len */ + SSL_BUFFER_SPACE(wrBuf), /* max out */ + pIn, contentLen, /* input */ SSL_BUFFER_BASE(&pseudoHeader), SSL_BUFFER_LEN(&pseudoHeader)); if (rv != SECSuccess) { PORT_SetError(SSL_ERROR_ENCRYPTION_FAILURE); return SECFailure; } + + rv = sslBuffer_Skip(wrBuf, len, NULL); + PORT_Assert(rv == SECSuccess); /* Can't fail. */ } else { int blockSize = cwSpec->cipherDef->block_size; @@ -2069,7 +2078,7 @@ ssl3_MACEncryptRecord(ssl3CipherSpec *cwSpec, rv = ssl3_ComputeRecordMAC(cwSpec, SSL_BUFFER_BASE(&pseudoHeader), SSL_BUFFER_LEN(&pseudoHeader), pIn, contentLen, - wrBuf->buf + ivLen + contentLen, &macLen); + SSL_BUFFER_NEXT(wrBuf) + contentLen, &macLen); if (rv != SECSuccess) { ssl_MapLowLevelError(SSL_ERROR_MAC_COMPUTATION_FAILURE); return SECFailure; @@ -2095,7 +2104,7 @@ ssl3_MACEncryptRecord(ssl3CipherSpec *cwSpec, PORT_Assert((fragLen % blockSize) == 0); /* Pad according to TLS rules (also acceptable to SSL3). */ - pBuf = &wrBuf->buf[ivLen + fragLen - 1]; + pBuf = SSL_BUFFER_NEXT(wrBuf) + fragLen - 1; for (i = padding_length + 1; i > 0; --i) { *pBuf-- = padding_length; } @@ -2112,14 +2121,14 @@ ssl3_MACEncryptRecord(ssl3CipherSpec *cwSpec, p2Len += oddLen; PORT_Assert((blockSize < 2) || (p2Len % blockSize) == 0); - memmove(wrBuf->buf + ivLen + p1Len, pIn + p1Len, oddLen); + memmove(SSL_BUFFER_NEXT(wrBuf) + p1Len, pIn + p1Len, oddLen); } if (p1Len > 0) { int cipherBytesPart1 = -1; rv = cwSpec->cipher(cwSpec->cipherContext, - wrBuf->buf + ivLen, /* output */ - &cipherBytesPart1, /* actual outlen */ - p1Len, /* max outlen */ + SSL_BUFFER_NEXT(wrBuf), /* output */ + &cipherBytesPart1, /* actual outlen */ + p1Len, /* max outlen */ pIn, p1Len); /* input, and inputlen */ PORT_Assert(rv == SECSuccess && cipherBytesPart1 == (int)p1Len); @@ -2127,22 +2136,24 @@ ssl3_MACEncryptRecord(ssl3CipherSpec *cwSpec, PORT_SetError(SSL_ERROR_ENCRYPTION_FAILURE); return SECFailure; } - wrBuf->len += cipherBytesPart1; + rv = sslBuffer_Skip(wrBuf, p1Len, NULL); + PORT_Assert(rv == SECSuccess); } if (p2Len > 0) { int cipherBytesPart2 = -1; rv = cwSpec->cipher(cwSpec->cipherContext, - wrBuf->buf + ivLen + p1Len, + SSL_BUFFER_NEXT(wrBuf), &cipherBytesPart2, /* output and actual outLen */ p2Len, /* max outlen */ - wrBuf->buf + ivLen + p1Len, + SSL_BUFFER_NEXT(wrBuf), p2Len); /* input and inputLen*/ PORT_Assert(rv == SECSuccess && cipherBytesPart2 == (int)p2Len); if (rv != SECSuccess || cipherBytesPart2 != (int)p2Len) { PORT_SetError(SSL_ERROR_ENCRYPTION_FAILURE); return SECFailure; } - wrBuf->len += cipherBytesPart2; + rv = sslBuffer_Skip(wrBuf, p2Len, NULL); + PORT_Assert(rv == SECSuccess); } } @@ -2150,16 +2161,20 @@ ssl3_MACEncryptRecord(ssl3CipherSpec *cwSpec, } /* Note: though this can report failure, it shouldn't. */ -static SECStatus +SECStatus ssl_InsertRecordHeader(const sslSocket *ss, ssl3CipherSpec *cwSpec, - SSL3ContentType contentType, unsigned int len, - sslBuffer *wrBuf) + SSL3ContentType contentType, sslBuffer *wrBuf, + PRBool *needsLength) { SECStatus rv; #ifndef UNSAFE_FUZZER_MODE if (cwSpec->version >= SSL_LIBRARY_VERSION_TLS_1_3 && - cwSpec->cipherDef->calg != ssl_calg_null) { + cwSpec->epoch > TrafficKeyClearText) { + if (IS_DTLS(ss)) { + return dtls13_InsertCipherTextHeader(ss, cwSpec, wrBuf, + needsLength); + } contentType = content_application_data; } #endif @@ -2177,16 +2192,12 @@ ssl_InsertRecordHeader(const sslSocket *ss, ssl3CipherSpec *cwSpec, if (rv != SECSuccess) { return SECFailure; } - rv = sslBuffer_AppendNumber(wrBuf, cwSpec->seqNum, 6); + rv = sslBuffer_AppendNumber(wrBuf, cwSpec->nextSeqNum, 6); if (rv != SECSuccess) { return SECFailure; } } - rv = sslBuffer_AppendNumber(wrBuf, len, 2); - if (rv != SECSuccess) { - return SECFailure; - } - + *needsLength = PR_TRUE; return SECSuccess; } @@ -2194,66 +2205,67 @@ SECStatus ssl_ProtectRecord(sslSocket *ss, ssl3CipherSpec *cwSpec, SSL3ContentType type, const PRUint8 *pIn, PRUint32 contentLen, sslBuffer *wrBuf) { - unsigned int headerLen = IS_DTLS(ss) ? DTLS_RECORD_HEADER_LENGTH - : SSL3_RECORD_HEADER_LENGTH; - sslBuffer protBuf = SSL_BUFFER_FIXED(SSL_BUFFER_BASE(wrBuf) + headerLen, - SSL_BUFFER_SPACE(wrBuf) - headerLen); - PRBool isTLS13; + PRBool needsLength; + unsigned int lenOffset; SECStatus rv; PORT_Assert(cwSpec->direction == CipherSpecWrite); PORT_Assert(SSL_BUFFER_LEN(wrBuf) == 0); PORT_Assert(cwSpec->cipherDef->max_records <= RECORD_SEQ_MAX); - if (cwSpec->seqNum >= cwSpec->cipherDef->max_records) { + + if (cwSpec->nextSeqNum >= cwSpec->cipherDef->max_records) { /* We should have automatically updated before here in TLS 1.3. */ PORT_Assert(cwSpec->version < SSL_LIBRARY_VERSION_TLS_1_3); SSL_TRC(3, ("%d: SSL[-]: write sequence number at limit 0x%0llx", - SSL_GETPID(), cwSpec->seqNum)); + SSL_GETPID(), cwSpec->nextSeqNum)); PORT_SetError(SSL_ERROR_TOO_MANY_RECORDS); return SECFailure; } - isTLS13 = (PRBool)(cwSpec->version >= SSL_LIBRARY_VERSION_TLS_1_3); + rv = ssl_InsertRecordHeader(ss, cwSpec, type, wrBuf, &needsLength); + if (rv != SECSuccess) { + return SECFailure; + } + if (needsLength) { + rv = sslBuffer_Skip(wrBuf, 2, &lenOffset); + if (rv != SECSuccess) { + return SECFailure; + } + } #ifdef UNSAFE_FUZZER_MODE { int len; - rv = Null_Cipher(NULL, SSL_BUFFER_BASE(&protBuf), &len, - SSL_BUFFER_SPACE(&protBuf), pIn, contentLen); + rv = Null_Cipher(NULL, SSL_BUFFER_NEXT(wrBuf), &len, + SSL_BUFFER_SPACE(wrBuf), pIn, contentLen); if (rv != SECSuccess) { return SECFailure; /* error was set */ } - rv = sslBuffer_Skip(&protBuf, len, NULL); + rv = sslBuffer_Skip(wrBuf, len, NULL); PORT_Assert(rv == SECSuccess); /* Can't fail. */ } #else - if (isTLS13) { - rv = tls13_ProtectRecord(ss, cwSpec, type, pIn, contentLen, &protBuf); + if (cwSpec->version >= SSL_LIBRARY_VERSION_TLS_1_3) { + rv = tls13_ProtectRecord(ss, cwSpec, type, pIn, contentLen, wrBuf); } else { rv = ssl3_MACEncryptRecord(cwSpec, ss->sec.isServer, IS_DTLS(ss), type, - pIn, contentLen, &protBuf); + pIn, contentLen, wrBuf); } #endif if (rv != SECSuccess) { return SECFailure; /* error was set */ } - PORT_Assert(protBuf.len <= MAX_FRAGMENT_LENGTH + (isTLS13 ? 256 : 1024)); - - rv = ssl_InsertRecordHeader(ss, cwSpec, type, SSL_BUFFER_LEN(&protBuf), - wrBuf); - if (rv != SECSuccess) { - return SECFailure; - } - - PORT_Assert(SSL_BUFFER_LEN(wrBuf) == headerLen); - rv = sslBuffer_Skip(wrBuf, SSL_BUFFER_LEN(&protBuf), NULL); - if (rv != SECSuccess) { - PORT_Assert(0); /* Can't fail. */ - return SECFailure; + if (needsLength) { + /* Insert the length. */ + rv = sslBuffer_InsertLength(wrBuf, lenOffset, 2); + if (rv != SECSuccess) { + PORT_Assert(0); /* Can't fail. */ + return SECFailure; + } } - ++cwSpec->seqNum; + ++cwSpec->nextSeqNum; return SECSuccess; } @@ -2267,7 +2279,7 @@ ssl_ProtectNextRecord(sslSocket *ss, ssl3CipherSpec *spec, SSL3ContentType type, unsigned int spaceNeeded; SECStatus rv; - contentLen = PR_MIN(nIn, MAX_FRAGMENT_LENGTH); + contentLen = PR_MIN(nIn, spec->recordSizeLimit); spaceNeeded = contentLen + SSL3_BUFFER_FUDGE; if (spec->version >= SSL_LIBRARY_VERSION_TLS_1_1 && spec->cipherDef->type == type_block) { @@ -2291,6 +2303,7 @@ ssl_ProtectNextRecord(sslSocket *ss, ssl3CipherSpec *spec, SSL3ContentType type, *written = contentLen; return SECSuccess; } + /* Process the plain text before sending it. * Returns the number of bytes of plaintext that were successfully sent * plus the number of bytes of plaintext that were copied into the @@ -2368,7 +2381,7 @@ ssl3_SendRecord(sslSocket *ss, rv = ssl_ProtectNextRecord(ss, spec, type, pIn, nIn, &written); ssl_ReleaseSpecReadLock(ss); if (rv != SECSuccess) { - return SECFailure; + goto loser; } PORT_Assert(written > 0); @@ -3034,7 +3047,6 @@ ssl3_SendChangeCipherSpecsInt(sslSocket *ss) return SECFailure; /* error code set by ssl3_SendRecord */ } } else { - SECStatus rv; rv = dtls_QueueMessage(ss, content_change_cipher_spec, &change, 1); if (rv != SECSuccess) { return SECFailure; @@ -5567,13 +5579,20 @@ ssl3_SendRSAClientKeyExchange(sslSocket *ss, SECKEYPublicKey *svrPubKey) } /* Get the wrapped (encrypted) pre-master secret, enc_pms */ - enc_pms.len = SECKEY_PublicKeyStrength(svrPubKey); + unsigned int svrPubKeyBits = SECKEY_PublicKeyStrengthInBits(svrPubKey); + enc_pms.len = (svrPubKeyBits + 7) / 8; + /* Check that the RSA key isn't larger than 8k bit. */ + if (svrPubKeyBits > SSL_MAX_RSA_KEY_BITS) { + (void)SSL3_SendAlert(ss, alert_fatal, illegal_parameter); + ssl_MapLowLevelError(SSL_ERROR_CLIENT_KEY_EXCHANGE_FAILURE); + goto loser; + } enc_pms.data = (unsigned char *)PORT_Alloc(enc_pms.len); if (enc_pms.data == NULL) { goto loser; /* err set by PORT_Alloc */ } - /* wrap pre-master secret in server's public key. */ + /* Wrap pre-master secret in server's public key. */ rv = PK11_PubWrapSymKey(CKM_RSA_PKCS, svrPubKey, pms, &enc_pms); if (rv != SECSuccess) { ssl_MapLowLevelError(SSL_ERROR_CLIENT_KEY_EXCHANGE_FAILURE); @@ -5676,7 +5695,7 @@ ssl3_SendDHClientKeyExchange(sslSocket *ss, SECKEYPublicKey *svrPubKey) }; sslEphemeralKeyPair *keyPair = NULL; SECKEYPublicKey *pubKey; - PRUint8 dhData[1026]; /* Enough for the 8192-bit group. */ + PRUint8 dhData[SSL_MAX_DH_KEY_BITS / 8 + 2]; sslBuffer dhBuf = SSL_BUFFER(dhData); PORT_Assert(ss->opt.noLocks || ssl_HaveSSL3HandshakeLock(ss)); @@ -6208,7 +6227,6 @@ ssl3_HandleServerHello(sslSocket *ss, PRUint8 *b, PRUint32 length) SECItem sidBytes = { siBuffer, NULL, 0 }; PRBool isHelloRetry; SSL3AlertDescription desc = illegal_parameter; - TLSExtension *versionExtension; const PRUint8 *savedMsg = b; const PRUint32 savedLength = length; #ifndef TLS_1_3_DRAFT_VERSION @@ -6299,16 +6317,10 @@ ssl3_HandleServerHello(sslSocket *ss, PRUint8 *b, PRUint32 length) } } - /* Update the version based on the extension, as necessary. */ - versionExtension = ssl3_FindExtension(ss, ssl_tls13_supported_versions_xtn); - if (versionExtension) { - rv = ssl_ClientReadVersion(ss, &versionExtension->data.data, - &versionExtension->data.len, - &ss->version); - if (rv != SECSuccess) { - errCode = PORT_GetError(); - goto loser; /* An alert is sent by ssl_ClientReadVersion */ - } + /* Read supported_versions if present. */ + rv = tls13_ClientReadSupportedVersion(ss); + if (rv != SECSuccess) { + goto loser; } PORT_Assert(!SSL_ALL_VERSIONS_DISABLED(&ss->vrange)); @@ -6332,7 +6344,7 @@ ssl3_HandleServerHello(sslSocket *ss, PRUint8 *b, PRUint32 length) /* The server didn't pick 1.3 although we either received a * HelloRetryRequest, or we prepared to send early app data. */ if (ss->version < SSL_LIBRARY_VERSION_TLS_1_3) { - if (ss->ssl3.hs.helloRetry) { + if (isHelloRetry || ss->ssl3.hs.helloRetry) { /* SSL3_SendAlert() will uncache the SID. */ desc = illegal_parameter; errCode = SSL_ERROR_RX_MALFORMED_SERVER_HELLO; @@ -6393,8 +6405,9 @@ ssl3_HandleServerHello(sslSocket *ss, PRUint8 *b, PRUint32 length) /* Finally, now all the version-related checks have passed. */ ss->ssl3.hs.preliminaryInfo |= ssl_preinfo_version; /* Update the write cipher spec to match the version. But not after - * HelloRetryRequest, because cwSpec might be a 0-RTT cipher spec. */ - if (!ss->firstHsDone && !ss->ssl3.hs.helloRetry) { + * HelloRetryRequest, because cwSpec might be a 0-RTT cipher spec, + * in which case this is a no-op. */ + if (!ss->firstHsDone && !isHelloRetry) { ssl_GetSpecWriteLock(ss); ssl_SetSpecVersions(ss, ss->ssl3.cwSpec); ssl_ReleaseSpecWriteLock(ss); @@ -6729,6 +6742,10 @@ ssl_HandleDHServerKeyExchange(sslSocket *ss, PRUint8 *b, PRUint32 length) errCode = SSL_ERROR_WEAK_SERVER_EPHEMERAL_DH_KEY; goto alert_loser; } + if (dh_p_bits > SSL_MAX_DH_KEY_BITS) { + errCode = SSL_ERROR_DH_KEY_TOO_LONG; + goto alert_loser; + } rv = ssl3_ConsumeHandshakeVariable(ss, &dh_g, 2, &b, &length); if (rv != SECSuccess) { goto loser; /* malformed. */ @@ -6938,8 +6955,10 @@ ssl3_ParseCertificateRequestCAs(sslSocket *ss, PRUint8 **b, PRUint32 *length, goto alert_loser; /* malformed */ remaining -= 2; + if (SECITEM_MakeItem(ca_list->arena, &node->name, *b, len) != SECSuccess) { + goto no_mem; + } node->name.len = len; - node->name.data = *b; *b += len; *length -= len; remaining -= len; @@ -6967,7 +6986,6 @@ ssl3_ParseCertificateRequestCAs(sslSocket *ss, PRUint8 **b, PRUint32 *length, return SECSuccess; no_mem: - PORT_SetError(SEC_ERROR_NO_MEMORY); return SECFailure; alert_loser: @@ -7332,10 +7350,6 @@ ssl3_SendClientSecondRound(sslSocket *ss) * certificate to an attacker that does not have a valid cert for the * domain we are connecting to. * - * XXX: We should do the same for the NPN extension, but for that we - * need an option to give the application the ability to leak the NPN - * information to get better performance. - * * During the initial handshake on a connection, we never send/receive * application data until we have authenticated the server's certificate; * i.e. we have fully authenticated the handshake before using the cipher @@ -7409,14 +7423,6 @@ ssl3_SendClientSecondRound(sslSocket *ss) ss->enoughFirstHsDone = PR_TRUE; if (!ss->firstHsDone) { - /* XXX: If the server's certificate hasn't been authenticated by this - * point, then we may be leaking this NPN message to an attacker. - */ - rv = ssl3_SendNextProto(ss); - if (rv != SECSuccess) { - goto loser; /* err code was set. */ - } - if (ss->opt.enableFalseStart) { if (!ss->ssl3.hs.authCertificatePending) { /* When we fix bug 589047, we will need to know whether we are @@ -8879,12 +8885,10 @@ ssl_ConstructServerHello(sslSocket *ss, PRBool helloRetry, SSL3ProtocolVersion version; sslSessionID *sid = ss->sec.ci.sid; - if (IS_DTLS(ss) && ss->version < SSL_LIBRARY_VERSION_TLS_1_3) { - version = dtls_TLSVersionToDTLSVersion(ss->version); - } else { - version = PR_MIN(ss->version, SSL_LIBRARY_VERSION_TLS_1_2); + version = PR_MIN(ss->version, SSL_LIBRARY_VERSION_TLS_1_2); + if (IS_DTLS(ss)) { + version = dtls_TLSVersionToDTLSVersion(version); } - rv = sslBuffer_AppendNumber(messageBuf, version, 2); if (rv != SECSuccess) { return SECFailure; @@ -11404,6 +11408,10 @@ ssl3_HandleHandshakeMessage(sslSocket *ss, PRUint8 *b, PRUint32 length, /* Increment the expected sequence number */ ss->ssl3.hs.recvMessageSeq++; } + + /* Taint the message so that it's easier to detect UAFs. */ + PORT_Memset(b, 'N', length); + return rv; } @@ -11738,7 +11746,7 @@ ssl_RemoveTLSCBCPadding(sslBuffer *plaintext, unsigned int macSize) } for (i = 0; i < toCheck; i++) { - unsigned int t = paddingLength - i; + t = paddingLength - i; /* If i <= paddingLength then the MSB of t is zero and mask is * 0xff. Otherwise, mask is 0. */ unsigned char mask = DUPLICATE_MSB_TO_ALL(~t); @@ -11878,6 +11886,7 @@ ssl3_UnprotectRecord(sslSocket *ss, unsigned int good; unsigned int ivLen = 0; SSL3ContentType rType; + SSL3ProtocolVersion rVersion; unsigned int minLength; unsigned int originalLen = 0; PRUint8 headerBuf[13]; @@ -11950,7 +11959,9 @@ ssl3_UnprotectRecord(sslSocket *ss, return SECFailure; } - rType = cText->type; + rType = (SSL3ContentType)cText->hdr[0]; + rVersion = ((SSL3ProtocolVersion)cText->hdr[1] << 8) | + (SSL3ProtocolVersion)cText->hdr[2]; if (cipher_def->type == type_aead) { /* XXX For many AEAD ciphers, the plaintext is shorter than the * ciphertext by a fixed byte count, but it is not true in general. @@ -11960,8 +11971,8 @@ ssl3_UnprotectRecord(sslSocket *ss, cText->buf->len - cipher_def->explicit_nonce_size - cipher_def->tag_size; rv = ssl3_BuildRecordPseudoHeader( - spec->epoch, IS_DTLS(ss) ? cText->seq_num : spec->seqNum, - rType, isTLS, cText->version, IS_DTLS(ss), decryptedLen, &header); + spec->epoch, cText->seqNum, + rType, isTLS, rVersion, IS_DTLS(ss), decryptedLen, &header); PORT_Assert(rv == SECSuccess); rv = spec->aead(&spec->keyMaterial, PR_TRUE, /* do decrypt */ @@ -12008,8 +12019,8 @@ ssl3_UnprotectRecord(sslSocket *ss, /* compute the MAC */ rv = ssl3_BuildRecordPseudoHeader( - spec->epoch, IS_DTLS(ss) ? cText->seq_num : spec->seqNum, - rType, isTLS, cText->version, IS_DTLS(ss), + spec->epoch, cText->seqNum, + rType, isTLS, rVersion, IS_DTLS(ss), plaintext->len - spec->macDef->mac_size, &header); PORT_Assert(rv == SECSuccess); if (cipher_def->type == type_block) { @@ -12059,13 +12070,19 @@ ssl3_UnprotectRecord(sslSocket *ss, return SECSuccess; } -static SECStatus +SECStatus ssl3_HandleNonApplicationData(sslSocket *ss, SSL3ContentType rType, DTLSEpoch epoch, sslSequenceNumber seqNum, sslBuffer *databuf) { SECStatus rv; + /* check for Token Presence */ + if (!ssl3_ClientAuthTokenPresent(ss->sec.ci.sid)) { + PORT_SetError(SSL_ERROR_TOKEN_INSERTION_REMOVAL); + return SECFailure; + } + ssl_GetSSL3HandshakeLock(ss); /* All the functions called in this switch MUST set error code if @@ -12111,15 +12128,16 @@ ssl3_HandleNonApplicationData(sslSocket *ss, SSL3ContentType rType, * Returns NULL if no appropriate cipher spec is found. */ static ssl3CipherSpec * -ssl3_GetCipherSpec(sslSocket *ss, sslSequenceNumber seq) +ssl3_GetCipherSpec(sslSocket *ss, SSL3Ciphertext *cText) { ssl3CipherSpec *crSpec = ss->ssl3.crSpec; ssl3CipherSpec *newSpec = NULL; - DTLSEpoch epoch = seq >> 48; + DTLSEpoch epoch; if (!IS_DTLS(ss)) { return crSpec; } + epoch = dtls_ReadEpoch(crSpec, cText->hdr); if (crSpec->epoch == epoch) { return crSpec; } @@ -12136,6 +12154,11 @@ ssl3_GetCipherSpec(sslSocket *ss, sslSequenceNumber seq) return NULL; } +/* MAX_EXPANSION is the amount by which a record might plausibly be expanded + * when protected. It's the worst case estimate, so the sum of block cipher + * padding (up to 256 octets) and HMAC (48 octets for SHA-384). */ +#define MAX_EXPANSION (256 + 48) + /* if cText is non-null, then decipher and check the MAC of the * SSL record from cText->buf (typically gs->inbuf) * into databuf (typically gs->buf), and any previous contents of databuf @@ -12159,16 +12182,16 @@ ssl3_GetCipherSpec(sslSocket *ss, sslSequenceNumber seq) * Application Data records. */ SECStatus -ssl3_HandleRecord(sslSocket *ss, SSL3Ciphertext *cText, sslBuffer *databuf) +ssl3_HandleRecord(sslSocket *ss, SSL3Ciphertext *cText) { SECStatus rv; PRBool isTLS; DTLSEpoch epoch; - sslSequenceNumber seqNum = 0; ssl3CipherSpec *spec = NULL; + PRUint16 recordSizeLimit; PRBool outOfOrderSpec = PR_FALSE; SSL3ContentType rType; - sslBuffer *plaintext; + sslBuffer *plaintext = &ss->gs.buf; SSL3AlertDescription alert = internal_error; PORT_Assert(ss->opt.noLocks || ssl_HaveRecvBufLock(ss)); @@ -12178,27 +12201,23 @@ ssl3_HandleRecord(sslSocket *ss, SSL3Ciphertext *cText, sslBuffer *databuf) return SECFailure; } - /* cText is NULL when we're called from ssl3_RestartHandshakeAfterXXX(). - * This implies that databuf holds a previously deciphered SSL Handshake - * message. - */ - if (cText == NULL) { - SSL_DBG(("%d: SSL3[%d]: HandleRecord, resuming handshake", - SSL_GETPID(), ss->fd)); - /* Note that this doesn't pass the epoch and sequence number of the - * record through, which DTLS 1.3 depends on. DTLS doesn't support - * asynchronous certificate validation, so that should be OK. */ - PORT_Assert(!IS_DTLS(ss)); - return ssl3_HandleNonApplicationData(ss, content_handshake, - 0, 0, databuf); + /* Clear out the buffer in case this exits early. Any data then won't be + * processed twice. */ + plaintext->len = 0; + + /* We're waiting for another ClientHello, which will appear unencrypted. + * Use the content type to tell whether this should be discarded. */ + if (ss->ssl3.hs.zeroRttIgnore == ssl_0rtt_ignore_hrr && + cText->hdr[0] == content_application_data) { + PORT_Assert(ss->ssl3.hs.ws == wait_client_hello); + return SECSuccess; } ssl_GetSpecReadLock(ss); /******************************************/ - spec = ssl3_GetCipherSpec(ss, cText->seq_num); + spec = ssl3_GetCipherSpec(ss, cText); if (!spec) { PORT_Assert(IS_DTLS(ss)); ssl_ReleaseSpecReadLock(ss); /*****************************/ - databuf->len = 0; /* Needed to ensure data not left around */ return SECSuccess; } if (spec != ss->ssl3.crSpec) { @@ -12209,66 +12228,68 @@ ssl3_HandleRecord(sslSocket *ss, SSL3Ciphertext *cText, sslBuffer *databuf) } isTLS = (PRBool)(spec->version > SSL_LIBRARY_VERSION_3_0); if (IS_DTLS(ss)) { - if (!dtls_IsRelevant(ss, spec, cText, &seqNum)) { + if (!dtls_IsRelevant(ss, spec, cText, &cText->seqNum)) { ssl_ReleaseSpecReadLock(ss); /*****************************/ - databuf->len = 0; /* Needed to ensure data not left around */ - return SECSuccess; } } else { - seqNum = spec->seqNum + 1; + cText->seqNum = spec->nextSeqNum; } - if (seqNum >= spec->cipherDef->max_records) { + if (cText->seqNum >= spec->cipherDef->max_records) { ssl_ReleaseSpecReadLock(ss); /*****************************/ SSL_TRC(3, ("%d: SSL[%d]: read sequence number at limit 0x%0llx", - SSL_GETPID(), ss->fd, seqNum)); + SSL_GETPID(), ss->fd, cText->seqNum)); PORT_SetError(SSL_ERROR_TOO_MANY_RECORDS); return SECFailure; } - plaintext = databuf; - plaintext->len = 0; /* filled in by Unprotect call below. */ - - /* We're waiting for another ClientHello, which will appear unencrypted. - * Use the content type to tell whether this is should be discarded. - * - * XXX If we decide to remove the content type from encrypted records, this - * will become much more difficult to manage. */ - if (ss->ssl3.hs.zeroRttIgnore == ssl_0rtt_ignore_hrr && - cText->type == content_application_data) { + recordSizeLimit = spec->recordSizeLimit; + if (cText->buf->len > recordSizeLimit + MAX_EXPANSION) { ssl_ReleaseSpecReadLock(ss); /*****************************/ - PORT_Assert(ss->ssl3.hs.ws == wait_client_hello); - databuf->len = 0; - return SECSuccess; + SSL3_SendAlert(ss, alert_fatal, record_overflow); + PORT_SetError(SSL_ERROR_RX_RECORD_TOO_LONG); + return SECFailure; } - if (plaintext->space < MAX_FRAGMENT_LENGTH) { - rv = sslBuffer_Grow(plaintext, MAX_FRAGMENT_LENGTH + 2048); + if (plaintext->space < recordSizeLimit + MAX_EXPANSION) { + rv = sslBuffer_Grow(plaintext, recordSizeLimit + MAX_EXPANSION); if (rv != SECSuccess) { ssl_ReleaseSpecReadLock(ss); /*************************/ SSL_DBG(("%d: SSL3[%d]: HandleRecord, tried to get %d bytes", - SSL_GETPID(), ss->fd, MAX_FRAGMENT_LENGTH + 2048)); + SSL_GETPID(), ss->fd, recordSizeLimit + MAX_EXPANSION)); /* sslBuffer_Grow has set a memory error code. */ /* Perhaps we should send an alert. (but we have no memory!) */ return SECFailure; } } + /* Most record types aside from protected TLS 1.3 records carry the content + * type in the first octet. TLS 1.3 will override this value later. */ + rType = cText->hdr[0]; + /* Encrypted application data records could arrive before the handshake + * completes in DTLS 1.3. These can look like valid TLS 1.2 application_data + * records in epoch 0, which is never valid. Pretend they didn't decrypt. */ + if (spec->epoch == 0 && rType == content_application_data) { + PORT_SetError(SSL_ERROR_RX_UNEXPECTED_APPLICATION_DATA); + alert = unexpected_message; + rv = SECFailure; + } else { #ifdef UNSAFE_FUZZER_MODE - rv = Null_Cipher(NULL, plaintext->buf, (int *)&plaintext->len, - plaintext->space, cText->buf->buf, cText->buf->len); + rv = Null_Cipher(NULL, plaintext->buf, (int *)&plaintext->len, + plaintext->space, cText->buf->buf, cText->buf->len); #else - /* IMPORTANT: Unprotect functions MUST NOT send alerts - * because we still hold the spec read lock. Instead, if they - * return SECFailure, they set *alert to the alert to be sent. */ - if (spec->version < SSL_LIBRARY_VERSION_TLS_1_3 || - spec->cipherDef->calg == ssl_calg_null) { - /* Unencrypted TLS 1.3 records use the pre-TLS 1.3 format. */ - rv = ssl3_UnprotectRecord(ss, spec, cText, plaintext, &alert); - } else { - rv = tls13_UnprotectRecord(ss, spec, cText, plaintext, &alert); - } + /* IMPORTANT: Unprotect functions MUST NOT send alerts + * because we still hold the spec read lock. Instead, if they + * return SECFailure, they set *alert to the alert to be sent. */ + if (spec->version < SSL_LIBRARY_VERSION_TLS_1_3 || + spec->epoch == 0) { + rv = ssl3_UnprotectRecord(ss, spec, cText, plaintext, &alert); + } else { + rv = tls13_UnprotectRecord(ss, spec, cText, plaintext, &rType, + &alert); + } #endif + } if (rv != SECSuccess) { ssl_ReleaseSpecReadLock(ss); /***************************/ @@ -12276,39 +12297,45 @@ ssl3_HandleRecord(sslSocket *ss, SSL3Ciphertext *cText, sslBuffer *databuf) SSL_DBG(("%d: SSL3[%d]: decryption failed", SSL_GETPID(), ss->fd)); /* Ensure that we don't process this data again. */ - databuf->len = 0; + plaintext->len = 0; - /* Ignore a CCS if the alternative handshake is negotiated. Note that - * this will fail if the server fails to negotiate the alternative - * handshake type in a 0-RTT session that is resumed from a session that - * did negotiate it. We don't care about that corner case right now. */ + /* Ignore a CCS if compatibility mode is negotiated. Note that this + * will fail if the server fails to negotiate compatibility mode in a + * 0-RTT session that is resumed from a session that did negotiate it. + * We don't care about that corner case right now. */ if (ss->version >= SSL_LIBRARY_VERSION_TLS_1_3 && - cText->type == content_change_cipher_spec && + cText->hdr[0] == content_change_cipher_spec && ss->ssl3.hs.ws != idle_handshake && cText->buf->len == 1 && cText->buf->buf[0] == change_cipher_spec_choice) { /* Ignore the CCS. */ return SECSuccess; } + if (IS_DTLS(ss) || (ss->sec.isServer && ss->ssl3.hs.zeroRttIgnore == ssl_0rtt_ignore_trial)) { - /* Silently drop the packet */ + /* Silently drop the packet unless we sent a fatal alert. */ + if (ss->ssl3.fatalAlertSent) { + return SECFailure; + } return SECSuccess; - } else { - int errCode = PORT_GetError(); - SSL3_SendAlert(ss, alert_fatal, alert); - /* Reset the error code in case SSL3_SendAlert called - * PORT_SetError(). */ - PORT_SetError(errCode); - return SECFailure; } + + int errCode = PORT_GetError(); + SSL3_SendAlert(ss, alert_fatal, alert); + /* Reset the error code in case SSL3_SendAlert called + * PORT_SetError(). */ + PORT_SetError(errCode); + return SECFailure; } /* SECSuccess */ - spec->seqNum = PR_MAX(spec->seqNum, seqNum); if (IS_DTLS(ss)) { - dtls_RecordSetRecvd(&spec->recvdRecords, seqNum); + dtls_RecordSetRecvd(&spec->recvdRecords, cText->seqNum); + spec->nextSeqNum = PR_MAX(spec->nextSeqNum, cText->seqNum + 1); + } else { + ++spec->nextSeqNum; } epoch = spec->epoch; @@ -12317,19 +12344,18 @@ ssl3_HandleRecord(sslSocket *ss, SSL3Ciphertext *cText, sslBuffer *databuf) /* * The decrypted data is now in plaintext. */ - rType = cText->type; /* This must go after decryption because TLS 1.3 - * has encrypted content types. */ /* IMPORTANT: We are in DTLS 1.3 mode and we have processed something * from the wrong epoch. Divert to a divert processing function to make * sure we don't accidentally use the data unsafely. */ if (outOfOrderSpec) { PORT_Assert(IS_DTLS(ss) && ss->version >= SSL_LIBRARY_VERSION_TLS_1_3); - return dtls13_HandleOutOfEpochRecord(ss, spec, rType, databuf); + return dtls13_HandleOutOfEpochRecord(ss, spec, rType, plaintext); } /* Check the length of the plaintext. */ - if (isTLS && databuf->len > MAX_FRAGMENT_LENGTH) { + if (isTLS && plaintext->len > recordSizeLimit) { + plaintext->len = 0; SSL3_SendAlert(ss, alert_fatal, record_overflow); PORT_SetError(SSL_ERROR_RX_RECORD_TOO_LONG); return SECFailure; @@ -12344,14 +12370,16 @@ ssl3_HandleRecord(sslSocket *ss, SSL3Ciphertext *cText, sslBuffer *databuf) if (ss->version >= SSL_LIBRARY_VERSION_TLS_1_3 && ss->sec.isServer && ss->ssl3.hs.zeroRttState == ssl_0rtt_accepted) { - return tls13_HandleEarlyApplicationData(ss, databuf); + return tls13_HandleEarlyApplicationData(ss, plaintext); } + plaintext->len = 0; (void)SSL3_SendAlert(ss, alert_fatal, unexpected_message); PORT_SetError(SSL_ERROR_RX_UNEXPECTED_APPLICATION_DATA); return SECFailure; } - return ssl3_HandleNonApplicationData(ss, rType, epoch, seqNum, databuf); + return ssl3_HandleNonApplicationData(ss, rType, epoch, cText->seqNum, + plaintext); } /* diff --git a/security/nss/lib/ssl/ssl3ecc.c b/security/nss/lib/ssl/ssl3ecc.c index 913a14f63..f8b9a9400 100644 --- a/security/nss/lib/ssl/ssl3ecc.c +++ b/security/nss/lib/ssl/ssl3ecc.c @@ -548,12 +548,14 @@ ssl3_HandleECDHServerKeyExchange(sslSocket *ss, PRUint8 *b, PRUint32 length) if (ss->ssl3.prSpec->version == SSL_LIBRARY_VERSION_TLS_1_2) { rv = ssl_ConsumeSignatureScheme(ss, &b, &length, &sigScheme); if (rv != SECSuccess) { - goto loser; /* malformed or unsupported. */ + errCode = PORT_GetError(); + goto alert_loser; /* malformed or unsupported. */ } rv = ssl_CheckSignatureSchemeConsistency(ss, sigScheme, ss->sec.peerCert); if (rv != SECSuccess) { - goto loser; + errCode = PORT_GetError(); + goto alert_loser; } hashAlg = ssl_SignatureSchemeToHashType(sigScheme); } else { diff --git a/security/nss/lib/ssl/ssl3ext.c b/security/nss/lib/ssl/ssl3ext.c index 5a5077998..9b6c719f8 100644 --- a/security/nss/lib/ssl/ssl3ext.c +++ b/security/nss/lib/ssl/ssl3ext.c @@ -39,7 +39,6 @@ static const ssl3ExtensionHandler clientHelloHandlers[] = { { ssl_ec_point_formats_xtn, &ssl3_HandleSupportedPointFormatsXtn }, { ssl_session_ticket_xtn, &ssl3_ServerHandleSessionTicketXtn }, { ssl_renegotiation_info_xtn, &ssl3_HandleRenegotiationInfoXtn }, - { ssl_next_proto_nego_xtn, &ssl3_ServerHandleNextProtoNegoXtn }, { ssl_app_layer_protocol_xtn, &ssl3_ServerHandleAppProtoXtn }, { ssl_use_srtp_xtn, &ssl3_ServerHandleUseSRTPXtn }, { ssl_cert_status_xtn, &ssl3_ServerHandleStatusRequestXtn }, @@ -51,6 +50,7 @@ static const ssl3ExtensionHandler clientHelloHandlers[] = { { ssl_tls13_early_data_xtn, &tls13_ServerHandleEarlyDataXtn }, { ssl_tls13_psk_key_exchange_modes_xtn, &tls13_ServerHandlePskModesXtn }, { ssl_tls13_cookie_xtn, &tls13_ServerHandleCookieXtn }, + { ssl_record_size_limit_xtn, &ssl_HandleRecordSizeLimitXtn }, { 0, NULL } }; @@ -61,7 +61,6 @@ static const ssl3ExtensionHandler serverHelloHandlersTLS[] = { /* TODO: add a handler for ssl_ec_point_formats_xtn */ { ssl_session_ticket_xtn, &ssl3_ClientHandleSessionTicketXtn }, { ssl_renegotiation_info_xtn, &ssl3_HandleRenegotiationInfoXtn }, - { ssl_next_proto_nego_xtn, &ssl3_ClientHandleNextProtoNegoXtn }, { ssl_app_layer_protocol_xtn, &ssl3_ClientHandleAppProtoXtn }, { ssl_use_srtp_xtn, &ssl3_ClientHandleUseSRTPXtn }, { ssl_cert_status_xtn, &ssl3_ClientHandleStatusRequestXtn }, @@ -70,6 +69,7 @@ static const ssl3ExtensionHandler serverHelloHandlersTLS[] = { { ssl_tls13_key_share_xtn, &tls13_ClientHandleKeyShareXtn }, { ssl_tls13_pre_shared_key_xtn, &tls13_ClientHandlePreSharedKeyXtn }, { ssl_tls13_early_data_xtn, &tls13_ClientHandleEarlyDataXtn }, + { ssl_record_size_limit_xtn, &ssl_HandleRecordSizeLimitXtn }, { 0, NULL } }; @@ -122,7 +122,6 @@ static const sslExtensionBuilder clientHelloSendersTLS[] = { ssl_supported_groups_xtn, &ssl_SendSupportedGroupsXtn }, { ssl_ec_point_formats_xtn, &ssl3_SendSupportedPointFormatsXtn }, { ssl_session_ticket_xtn, &ssl3_ClientSendSessionTicketXtn }, - { ssl_next_proto_nego_xtn, &ssl3_ClientSendNextProtoNegoXtn }, { ssl_app_layer_protocol_xtn, &ssl3_ClientSendAppProtoXtn }, { ssl_use_srtp_xtn, &ssl3_ClientSendUseSRTPXtn }, { ssl_cert_status_xtn, &ssl3_ClientSendStatusRequestXtn }, @@ -137,6 +136,7 @@ static const sslExtensionBuilder clientHelloSendersTLS[] = { ssl_signature_algorithms_xtn, &ssl3_SendSigAlgsXtn }, { ssl_tls13_cookie_xtn, &tls13_ClientSendHrrCookieXtn }, { ssl_tls13_psk_key_exchange_modes_xtn, &tls13_ClientSendPskModesXtn }, + { ssl_record_size_limit_xtn, &ssl_SendRecordSizeLimitXtn }, /* The pre_shared_key extension MUST be last. */ { ssl_tls13_pre_shared_key_xtn, &tls13_ClientSendPreSharedKeyXtn }, { 0, NULL } @@ -183,7 +183,6 @@ static const struct { { ssl_tls13_psk_key_exchange_modes_xtn, ssl_ext_native_only }, { ssl_tls13_ticket_early_data_info_xtn, ssl_ext_native_only }, { ssl_tls13_certificate_authorities_xtn, ssl_ext_native }, - { ssl_next_proto_nego_xtn, ssl_ext_none }, { ssl_renegotiation_info_xtn, ssl_ext_native } }; @@ -681,7 +680,11 @@ ssl_CallCustomExtensionSenders(sslSocket *ss, sslBuffer *buf, } } - sslBuffer_Append(buf, tail.buf, tail.len); + rv = sslBuffer_Append(buf, tail.buf, tail.len); + if (rv != SECSuccess) { + goto loser; /* Code already set. */ + } + sslBuffer_Clear(&tail); return SECSuccess; diff --git a/security/nss/lib/ssl/ssl3ext.h b/security/nss/lib/ssl/ssl3ext.h index d0f75a599..6d77c7459 100644 --- a/security/nss/lib/ssl/ssl3ext.h +++ b/security/nss/lib/ssl/ssl3ext.h @@ -98,6 +98,9 @@ struct TLSExtensionDataStr { /* The application token contains a value that was passed to the client via * a session ticket, or the cookie in a HelloRetryRequest. */ SECItem applicationToken; + + /* The record size limit set by the peer. Our value is kept in ss->opt. */ + PRUint16 recordSizeLimit; }; typedef struct TLSExtensionStr { diff --git a/security/nss/lib/ssl/ssl3exthandle.c b/security/nss/lib/ssl/ssl3exthandle.c index e6388945e..d1f286dc3 100644 --- a/security/nss/lib/ssl/ssl3exthandle.c +++ b/security/nss/lib/ssl/ssl3exthandle.c @@ -242,33 +242,11 @@ ssl_AlpnTagAllowed(const sslSocket *ss, const SECItem *tag) return PR_FALSE; } -/* handle an incoming Next Protocol Negotiation extension. */ -SECStatus -ssl3_ServerHandleNextProtoNegoXtn(const sslSocket *ss, TLSExtensionData *xtnData, - SECItem *data) -{ - PORT_Assert(ss->version < SSL_LIBRARY_VERSION_TLS_1_3); - - if (ss->firstHsDone || data->len != 0) { - /* Clients MUST send an empty NPN extension, if any. */ - PORT_SetError(SSL_ERROR_NEXT_PROTOCOL_DATA_INVALID); - return SECFailure; - } - - xtnData->negotiated[xtnData->numNegotiated++] = ssl_next_proto_nego_xtn; - - /* TODO: server side NPN support would require calling - * ssl3_RegisterServerHelloExtensionSender here in order to echo the - * extension back to the client. */ - - return SECSuccess; -} - -/* ssl3_ValidateNextProtoNego checks that the given block of data is valid: none +/* ssl3_ValidateAppProtocol checks that the given block of data is valid: none * of the lengths may be 0 and the sum of the lengths must equal the length of * the block. */ SECStatus -ssl3_ValidateNextProtoNego(const unsigned char *data, unsigned int length) +ssl3_ValidateAppProtocol(const unsigned char *data, unsigned int length) { unsigned int offset = 0; @@ -286,7 +264,7 @@ ssl3_ValidateNextProtoNego(const unsigned char *data, unsigned int length) return SECSuccess; } -/* protocol selection handler for ALPN (server side) and NPN (client side) */ +/* Protocol selection handler for ALPN. */ static SECStatus ssl3_SelectAppProtocol(const sslSocket *ss, TLSExtensionData *xtnData, PRUint16 extension, SECItem *data) @@ -295,7 +273,7 @@ ssl3_SelectAppProtocol(const sslSocket *ss, TLSExtensionData *xtnData, unsigned char resultBuffer[255]; SECItem result = { siBuffer, resultBuffer, 0 }; - rv = ssl3_ValidateNextProtoNego(data->data, data->len); + rv = ssl3_ValidateAppProtocol(data->data, data->len); if (rv != SECSuccess) { ssl3_ExtSendAlert(ss, alert_fatal, decode_error); PORT_SetError(SSL_ERROR_NEXT_PROTOCOL_DATA_INVALID); @@ -303,11 +281,13 @@ ssl3_SelectAppProtocol(const sslSocket *ss, TLSExtensionData *xtnData, } PORT_Assert(ss->nextProtoCallback); - /* For ALPN, the cipher suite isn't selected yet. Note that extensions + /* The cipher suite isn't selected yet. Note that extensions * sometimes affect what cipher suite is selected, e.g., for ECC. */ PORT_Assert((ss->ssl3.hs.preliminaryInfo & ssl_preinfo_all & ~ssl_preinfo_cipher_suite) == (ssl_preinfo_all & ~ssl_preinfo_cipher_suite)); + /* The callback has to make sure that either rv != SECSuccess or that result + * is not set if there is no common protocol. */ rv = ss->nextProtoCallback(ss->nextProtoArg, ss->fd, data->data, data->len, result.data, &result.len, sizeof(resultBuffer)); if (rv != SECSuccess) { @@ -320,21 +300,20 @@ ssl3_SelectAppProtocol(const sslSocket *ss, TLSExtensionData *xtnData, * stack. */ if (result.len > sizeof(resultBuffer)) { PORT_SetError(SEC_ERROR_OUTPUT_LEN); - /* TODO: crash */ + PORT_Assert(PR_FALSE); return SECFailure; } SECITEM_FreeItem(&xtnData->nextProto, PR_FALSE); - if (extension == ssl_app_layer_protocol_xtn && - xtnData->nextProtoState != SSL_NEXT_PROTO_NEGOTIATED) { - /* The callback might say OK, but then it picks a default value - one - * that was not listed. That's OK for NPN, but not ALPN. */ + if (result.len < 1 || !result.data) { + /* Check that we actually got a result. */ ssl3_ExtSendAlert(ss, alert_fatal, no_application_protocol); PORT_SetError(SSL_ERROR_NEXT_PROTOCOL_NO_PROTOCOL); return SECFailure; } + xtnData->nextProtoState = SSL_NEXT_PROTO_NEGOTIATED; xtnData->negotiated[xtnData->numNegotiated++] = extension; return SECITEM_CopyItem(NULL, &xtnData->nextProto, &result); } @@ -356,7 +335,7 @@ ssl3_ServerHandleAppProtoXtn(const sslSocket *ss, TLSExtensionData *xtnData, return SECFailure; } - /* Unlike NPN, ALPN has extra redundant length information so that + /* ALPN has extra redundant length information so that * the extension is the same in both ClientHello and ServerHello. */ rv = ssl3_ExtConsumeHandshakeNumber(ss, &count, 2, &data->data, &data->len); if (rv != SECSuccess || count != data->len) { @@ -389,39 +368,6 @@ ssl3_ServerHandleAppProtoXtn(const sslSocket *ss, TLSExtensionData *xtnData, } SECStatus -ssl3_ClientHandleNextProtoNegoXtn(const sslSocket *ss, TLSExtensionData *xtnData, - SECItem *data) -{ - PORT_Assert(ss->version < SSL_LIBRARY_VERSION_TLS_1_3); - PORT_Assert(!ss->firstHsDone); - - if (ssl3_ExtensionNegotiated(ss, ssl_app_layer_protocol_xtn)) { - /* If the server negotiated ALPN then it has already told us what - * protocol to use, so it doesn't make sense for us to try to negotiate - * a different one by sending the NPN handshake message. However, if - * we've negotiated NPN then we're required to send the NPN handshake - * message. Thus, these two extensions cannot both be negotiated on the - * same connection. */ - ssl3_ExtSendAlert(ss, alert_fatal, illegal_parameter); - PORT_SetError(SSL_ERROR_BAD_SERVER); - return SECFailure; - } - - /* We should only get this call if we sent the extension, so - * ss->nextProtoCallback needs to be non-NULL. However, it is possible - * that an application erroneously cleared the callback between the time - * we sent the ClientHello and now. */ - if (!ss->nextProtoCallback) { - PORT_Assert(0); - ssl3_ExtSendAlert(ss, alert_fatal, internal_error); - PORT_SetError(SSL_ERROR_NEXT_PROTOCOL_NO_CALLBACK); - return SECFailure; - } - - return ssl3_SelectAppProtocol(ss, xtnData, ssl_next_proto_nego_xtn, data); -} - -SECStatus ssl3_ClientHandleAppProtoXtn(const sslSocket *ss, TLSExtensionData *xtnData, SECItem *data) { @@ -475,19 +421,6 @@ ssl3_ClientHandleAppProtoXtn(const sslSocket *ss, TLSExtensionData *xtnData, } SECStatus -ssl3_ClientSendNextProtoNegoXtn(const sslSocket *ss, TLSExtensionData *xtnData, - sslBuffer *buf, PRBool *added) -{ - /* Renegotiations do not send this extension. */ - if (!ss->opt.enableNPN || !ss->nextProtoCallback || ss->firstHsDone) { - return SECSuccess; - } - - *added = PR_TRUE; - return SECSuccess; -} - -SECStatus ssl3_ClientSendAppProtoXtn(const sslSocket *ss, TLSExtensionData *xtnData, sslBuffer *buf, PRBool *added) { @@ -499,35 +432,15 @@ ssl3_ClientSendAppProtoXtn(const sslSocket *ss, TLSExtensionData *xtnData, return SECSuccess; } - /* NPN requires that the client's fallback protocol is first in the - * list. However, ALPN sends protocols in preference order. So move the - * first protocol to the end of the list. */ - if (len > 0) { /* Each protocol string is prefixed with a single byte length. */ - unsigned int i; - rv = sslBuffer_AppendNumber(buf, len, 2); if (rv != SECSuccess) { return SECFailure; } - - i = ss->opt.nextProtoNego.data[0] + 1; - if (i <= len) { - rv = sslBuffer_Append(buf, &ss->opt.nextProtoNego.data[i], len - i); - if (rv != SECSuccess) { - return SECFailure; - } - rv = sslBuffer_Append(buf, ss->opt.nextProtoNego.data, i); - if (rv != SECSuccess) { - return SECFailure; - } - } else { - /* This seems to be invalid data so we'll send as-is. */ - rv = sslBuffer_Append(buf, ss->opt.nextProtoNego.data, len); - if (rv != SECSuccess) { - return SECFailure; - } + rv = sslBuffer_Append(buf, ss->opt.nextProtoNego.data, len); + if (rv != SECSuccess) { + return SECFailure; } } @@ -1955,3 +1868,67 @@ ssl_HandleSupportedGroupsXtn(const sslSocket *ss, TLSExtensionData *xtnData, return SECSuccess; } + +SECStatus +ssl_HandleRecordSizeLimitXtn(const sslSocket *ss, TLSExtensionData *xtnData, + SECItem *data) +{ + SECStatus rv; + PRUint32 limit; + PRUint32 maxLimit = (ss->version >= SSL_LIBRARY_VERSION_TLS_1_3) + ? (MAX_FRAGMENT_LENGTH + 1) + : MAX_FRAGMENT_LENGTH; + + rv = ssl3_ExtConsumeHandshakeNumber(ss, &limit, 2, &data->data, &data->len); + if (rv != SECSuccess) { + return SECFailure; + } + if (data->len != 0 || limit < 64) { + ssl3_ExtSendAlert(ss, alert_fatal, illegal_parameter); + PORT_SetError(SSL_ERROR_RX_MALFORMED_HANDSHAKE); + return SECFailure; + } + + if (ss->sec.isServer) { + rv = ssl3_RegisterExtensionSender(ss, xtnData, ssl_record_size_limit_xtn, + &ssl_SendRecordSizeLimitXtn); + if (rv != SECSuccess) { + return SECFailure; /* error already set. */ + } + } else if (limit > maxLimit) { + /* The client can sensibly check the maximum. */ + ssl3_ExtSendAlert(ss, alert_fatal, illegal_parameter); + PORT_SetError(SSL_ERROR_RX_MALFORMED_HANDSHAKE); + return SECFailure; + } + + /* We can't enforce the maximum on a server. But we do need to ensure + * that we don't apply a limit that is too large. */ + xtnData->recordSizeLimit = PR_MIN(maxLimit, limit); + xtnData->negotiated[xtnData->numNegotiated++] = ssl_record_size_limit_xtn; + return SECSuccess; +} + +SECStatus +ssl_SendRecordSizeLimitXtn(const sslSocket *ss, TLSExtensionData *xtnData, + sslBuffer *buf, PRBool *added) +{ + PRUint32 maxLimit; + if (ss->sec.isServer) { + maxLimit = (ss->version >= SSL_LIBRARY_VERSION_TLS_1_3) + ? (MAX_FRAGMENT_LENGTH + 1) + : MAX_FRAGMENT_LENGTH; + } else { + maxLimit = (ss->vrange.max >= SSL_LIBRARY_VERSION_TLS_1_3) + ? (MAX_FRAGMENT_LENGTH + 1) + : MAX_FRAGMENT_LENGTH; + } + PRUint32 limit = PR_MIN(ss->opt.recordSizeLimit, maxLimit); + SECStatus rv = sslBuffer_AppendNumber(buf, limit, 2); + if (rv != SECSuccess) { + return SECFailure; + } + + *added = PR_TRUE; + return SECSuccess; +} diff --git a/security/nss/lib/ssl/ssl3exthandle.h b/security/nss/lib/ssl/ssl3exthandle.h index b84bd074c..eaf7f0081 100644 --- a/security/nss/lib/ssl/ssl3exthandle.h +++ b/security/nss/lib/ssl/ssl3exthandle.h @@ -119,4 +119,11 @@ SECStatus ssl_SendSupportedGroupsXtn(const sslSocket *ss, SECStatus ssl3_SendSupportedPointFormatsXtn(const sslSocket *ss, TLSExtensionData *xtnData, sslBuffer *buf, PRBool *added); +SECStatus ssl_HandleRecordSizeLimitXtn(const sslSocket *ss, + TLSExtensionData *xtnData, + SECItem *data); +SECStatus ssl_SendRecordSizeLimitXtn(const sslSocket *ss, + TLSExtensionData *xtnData, + sslBuffer *buf, PRBool *added); + #endif diff --git a/security/nss/lib/ssl/ssl3gthr.c b/security/nss/lib/ssl/ssl3gthr.c index 8b323bb05..5ea7cc249 100644 --- a/security/nss/lib/ssl/ssl3gthr.c +++ b/security/nss/lib/ssl/ssl3gthr.c @@ -158,6 +158,7 @@ ssl3_GatherData(sslSocket *ss, sslGather *gs, int flags, ssl2Gather *ssl2gs) * the length of the following encrypted data, and then * read in the rest of the record into gs->inbuf. */ gs->remainder = (gs->hdr[3] << 8) | gs->hdr[4]; + gs->hdrLen = SSL3_RECORD_HEADER_LENGTH; } else { /* Probably an SSLv2 record header. No need to handle any * security escapes (gs->hdr[0] & 0x40) as we wouldn't get @@ -264,8 +265,9 @@ static int dtls_GatherData(sslSocket *ss, sslGather *gs, int flags) { int nb; - int err; - int rv = 1; + PRUint8 contentType; + unsigned int headerLen; + SECStatus rv; SSL_TRC(30, ("dtls_GatherData")); @@ -285,81 +287,97 @@ dtls_GatherData(sslSocket *ss, sslGather *gs, int flags) ** to 13 (the size of the record header). */ if (gs->dtlsPacket.space < MAX_FRAGMENT_LENGTH + 2048 + 13) { - err = sslBuffer_Grow(&gs->dtlsPacket, - MAX_FRAGMENT_LENGTH + 2048 + 13); - if (err) { /* realloc has set error code to no mem. */ - return err; + rv = sslBuffer_Grow(&gs->dtlsPacket, + MAX_FRAGMENT_LENGTH + 2048 + 13); + if (rv != SECSuccess) { + return -1; /* Code already set. */ } } /* recv() needs to read a full datagram at a time */ nb = ssl_DefRecv(ss, gs->dtlsPacket.buf, gs->dtlsPacket.space, flags); - if (nb > 0) { PRINT_BUF(60, (ss, "raw gather data:", gs->dtlsPacket.buf, nb)); } else if (nb == 0) { /* EOF */ SSL_TRC(30, ("%d: SSL3[%d]: EOF", SSL_GETPID(), ss->fd)); - rv = 0; - return rv; + return 0; } else /* if (nb < 0) */ { SSL_DBG(("%d: SSL3[%d]: recv error %d", SSL_GETPID(), ss->fd, PR_GetError())); - rv = SECFailure; - return rv; + return -1; } gs->dtlsPacket.len = nb; } + contentType = gs->dtlsPacket.buf[gs->dtlsPacketOffset]; + if (dtls_IsLongHeader(ss->version, contentType)) { + headerLen = 13; + } else if (contentType == content_application_data) { + headerLen = 7; + } else if ((contentType & 0xe0) == 0x20) { + headerLen = 2; + } else { + SSL_DBG(("%d: SSL3[%d]: invalid first octet (%d) for DTLS", + SSL_GETPID(), ss->fd, contentType)); + PORT_SetError(SSL_ERROR_RX_UNKNOWN_RECORD_TYPE); + gs->dtlsPacketOffset = 0; + gs->dtlsPacket.len = 0; + return -1; + } + /* At this point we should have >=1 complete records lined up in * dtlsPacket. Read off the header. */ - if ((gs->dtlsPacket.len - gs->dtlsPacketOffset) < 13) { + if ((gs->dtlsPacket.len - gs->dtlsPacketOffset) < headerLen) { SSL_DBG(("%d: SSL3[%d]: rest of DTLS packet " "too short to contain header", SSL_GETPID(), ss->fd)); - PR_SetError(PR_WOULD_BLOCK_ERROR, 0); + PORT_SetError(PR_WOULD_BLOCK_ERROR); gs->dtlsPacketOffset = 0; gs->dtlsPacket.len = 0; - rv = SECFailure; - return rv; + return -1; } - memcpy(gs->hdr, gs->dtlsPacket.buf + gs->dtlsPacketOffset, 13); - gs->dtlsPacketOffset += 13; + memcpy(gs->hdr, SSL_BUFFER_BASE(&gs->dtlsPacket) + gs->dtlsPacketOffset, + headerLen); + gs->hdrLen = headerLen; + gs->dtlsPacketOffset += headerLen; /* Have received SSL3 record header in gs->hdr. */ - gs->remainder = (gs->hdr[11] << 8) | gs->hdr[12]; + if (headerLen == 13) { + gs->remainder = (gs->hdr[11] << 8) | gs->hdr[12]; + } else if (headerLen == 7) { + gs->remainder = (gs->hdr[5] << 8) | gs->hdr[6]; + } else { + PORT_Assert(headerLen == 2); + gs->remainder = gs->dtlsPacket.len - gs->dtlsPacketOffset; + } if ((gs->dtlsPacket.len - gs->dtlsPacketOffset) < gs->remainder) { SSL_DBG(("%d: SSL3[%d]: rest of DTLS packet too short " "to contain rest of body", SSL_GETPID(), ss->fd)); - PR_SetError(PR_WOULD_BLOCK_ERROR, 0); + PORT_SetError(PR_WOULD_BLOCK_ERROR); gs->dtlsPacketOffset = 0; gs->dtlsPacket.len = 0; - rv = SECFailure; - return rv; + return -1; } /* OK, we have at least one complete packet, copy into inbuf */ - if (gs->remainder > gs->inbuf.space) { - err = sslBuffer_Grow(&gs->inbuf, gs->remainder); - if (err) { /* realloc has set error code to no mem. */ - return err; - } + gs->inbuf.len = 0; + rv = sslBuffer_Append(&gs->inbuf, + SSL_BUFFER_BASE(&gs->dtlsPacket) + gs->dtlsPacketOffset, + gs->remainder); + if (rv != SECSuccess) { + return -1; /* code already set. */ } - - SSL_TRC(20, ("%d: SSL3[%d]: dtls gathered record type=%d len=%d", - SSL_GETPID(), ss->fd, gs->hdr[0], gs->inbuf.len)); - - memcpy(gs->inbuf.buf, gs->dtlsPacket.buf + gs->dtlsPacketOffset, - gs->remainder); - gs->inbuf.len = gs->remainder; gs->offset = gs->remainder; gs->dtlsPacketOffset += gs->remainder; gs->state = GS_INIT; + SSL_TRC(20, ("%d: SSL3[%d]: dtls gathered record type=%d len=%d", + SSL_GETPID(), ss->fd, contentType, gs->inbuf.len)); return 1; } @@ -442,7 +460,11 @@ ssl3_GatherCompleteHandshake(sslSocket *ss, int flags) * We need to process it now before we overwrite it with the next * handshake record. */ - rv = ssl3_HandleRecord(ss, NULL, &ss->gs.buf); + SSL_DBG(("%d: SSL3[%d]: resuming handshake", + SSL_GETPID(), ss->fd)); + PORT_Assert(!IS_DTLS(ss)); + rv = ssl3_HandleNonApplicationData(ss, content_handshake, + 0, 0, &ss->gs.buf); } else { /* State for SSLv2 client hello support. */ ssl2Gather ssl2gs = { PR_FALSE, 0 }; @@ -495,20 +517,14 @@ ssl3_GatherCompleteHandshake(sslSocket *ss, int flags) * If it's application data, ss->gs.buf will not be empty upon return. * If it's a change cipher spec, alert, or handshake message, * ss->gs.buf.len will be 0 when ssl3_HandleRecord returns SECSuccess. + * + * cText only needs to be valid for this next function call, so + * it can borrow gs.hdr. */ - cText.type = (SSL3ContentType)ss->gs.hdr[0]; - cText.version = (ss->gs.hdr[1] << 8) | ss->gs.hdr[2]; - - if (IS_DTLS(ss)) { - sslSequenceNumber seq_num; - - /* DTLS sequence number */ - PORT_Memcpy(&seq_num, &ss->gs.hdr[3], sizeof(seq_num)); - cText.seq_num = PR_ntohll(seq_num); - } - + cText.hdr = ss->gs.hdr; + cText.hdrLen = ss->gs.hdrLen; cText.buf = &ss->gs.inbuf; - rv = ssl3_HandleRecord(ss, &cText, &ss->gs.buf); + rv = ssl3_HandleRecord(ss, &cText); } } if (rv < 0) { @@ -520,7 +536,6 @@ ssl3_GatherCompleteHandshake(sslSocket *ss, int flags) * completing any renegotiation handshake we may be doing. */ PORT_Assert(ss->firstHsDone); - PORT_Assert(cText.type == content_application_data); break; } diff --git a/security/nss/lib/ssl/ssl3prot.h b/security/nss/lib/ssl/ssl3prot.h index d1f46db97..8e6cf2745 100644 --- a/security/nss/lib/ssl/ssl3prot.h +++ b/security/nss/lib/ssl/ssl3prot.h @@ -16,7 +16,7 @@ typedef PRUint16 SSL3ProtocolVersion; /* The TLS 1.3 draft version. Used to avoid negotiating * between incompatible pre-standard TLS 1.3 drafts. * TODO(ekr@rtfm.com): Remove when TLS 1.3 is published. */ -#define TLS_1_3_DRAFT_VERSION 23 +#define TLS_1_3_DRAFT_VERSION 28 typedef PRUint16 ssl3CipherSuite; /* The cipher suites are defined in sslproto.h */ diff --git a/security/nss/lib/ssl/sslcert.c b/security/nss/lib/ssl/sslcert.c index 6cd02e402..1c3ddb0e7 100644 --- a/security/nss/lib/ssl/sslcert.c +++ b/security/nss/lib/ssl/sslcert.c @@ -256,7 +256,8 @@ ssl_PopulateKeyPair(sslServerCert *sc, sslKeyPair *keyPair) /* Get the size of the cert's public key, and remember it. */ sc->serverKeyBits = SECKEY_PublicKeyStrengthInBits(keyPair->pubKey); - if (sc->serverKeyBits == 0) { + if (sc->serverKeyBits == 0 || + (keyType == rsaKey && sc->serverKeyBits > SSL_MAX_RSA_KEY_BITS)) { PORT_SetError(SEC_ERROR_INVALID_ARGS); return SECFailure; } diff --git a/security/nss/lib/ssl/sslerr.h b/security/nss/lib/ssl/sslerr.h index b94d0cc62..518a2b887 100644 --- a/security/nss/lib/ssl/sslerr.h +++ b/security/nss/lib/ssl/sslerr.h @@ -262,6 +262,8 @@ typedef enum { SSL_ERROR_TOO_MANY_KEY_UPDATES = (SSL_ERROR_BASE + 171), SSL_ERROR_HANDSHAKE_FAILED = (SSL_ERROR_BASE + 172), SSL_ERROR_BAD_RESUMPTION_TOKEN_ERROR = (SSL_ERROR_BASE + 173), + SSL_ERROR_RX_MALFORMED_DTLS_ACK = (SSL_ERROR_BASE + 174), + SSL_ERROR_DH_KEY_TOO_LONG = (SSL_ERROR_BASE + 175), SSL_ERROR_END_OF_LIST /* let the c compiler determine the value of this. */ } SSLErrorCodes; #endif /* NO_SECURITY_ERROR_ENUM */ diff --git a/security/nss/lib/ssl/sslimpl.h b/security/nss/lib/ssl/sslimpl.h index 10d0333d9..a2209e90a 100644 --- a/security/nss/lib/ssl/sslimpl.h +++ b/security/nss/lib/ssl/sslimpl.h @@ -121,6 +121,10 @@ typedef enum { SSLAppOpRead = 0, /* default number of entries in namedGroupPreferences */ #define SSL_NAMED_GROUP_COUNT 31 +/* The maximum DH and RSA bit-length supported. */ +#define SSL_MAX_DH_KEY_BITS 8192 +#define SSL_MAX_RSA_KEY_BITS 8192 + /* Types and names of elliptic curves used in TLS */ typedef enum { ec_type_explicitPrime = 1, /* not supported */ @@ -232,6 +236,7 @@ typedef struct sslOptionsStr { /* If SSL_SetNextProtoNego has been called, then this contains the * list of supported protocols. */ SECItem nextProtoNego; + PRUint16 recordSizeLimit; PRUint32 maxEarlyDataSize; unsigned int useSecurity : 1; @@ -251,7 +256,6 @@ typedef struct sslOptionsStr { unsigned int enableFalseStart : 1; unsigned int cbcRandomIV : 1; unsigned int enableOCSPStapling : 1; - unsigned int enableNPN : 1; unsigned int enableALPN : 1; unsigned int reuseServerECDHEKey : 1; unsigned int enableFallbackSCSV : 1; @@ -261,6 +265,7 @@ typedef struct sslOptionsStr { unsigned int requireDHENamedGroups : 1; unsigned int enable0RttData : 1; unsigned int enableTls13CompatMode : 1; + unsigned int enableDtlsShortHeader : 1; } sslOptions; typedef enum { sslHandshakingUndetermined = 0, @@ -325,9 +330,11 @@ struct sslGatherStr { ** than into buf or inbuf, while in the GS_HEADER state. ** The portion of the SSL record header put here always comes off the wire ** as plaintext, never ciphertext. - ** For SSL3/TLS, the plaintext portion is 5 bytes long. For DTLS it is 13. + ** For SSL3/TLS, the plaintext portion is 5 bytes long. For DTLS it + ** varies based on version and header type. */ unsigned char hdr[13]; + unsigned int hdrLen; /* Buffer for DTLS data read off the wire as a single datagram */ sslBuffer dtlsPacket; @@ -440,7 +447,7 @@ struct sslSessionIDStr { */ SECItem signedCertTimestamps; - /* The NPN/ALPN value negotiated in the original connection. + /* The ALPN value negotiated in the original connection. * Used for TLS 1.3. */ SECItem alpnSelection; @@ -780,9 +787,13 @@ struct ssl3StateStr { #define IS_DTLS(ss) (ss->protocolVariant == ssl_variant_datagram) typedef struct { - SSL3ContentType type; - SSL3ProtocolVersion version; - sslSequenceNumber seq_num; /* DTLS only */ + /* |seqNum| eventually contains the reconstructed sequence number. */ + sslSequenceNumber seqNum; + /* The header of the cipherText. */ + const PRUint8 *hdr; + unsigned int hdrLen; + + /* |buf| is the payload of the ciphertext. */ sslBuffer *buf; } SSL3Ciphertext; @@ -805,7 +816,7 @@ struct ssl3DHParamsStr { }; typedef struct SSLWrappedSymWrappingKeyStr { - PRUint8 wrappedSymmetricWrappingkey[512]; + PRUint8 wrappedSymmetricWrappingkey[SSL_MAX_RSA_KEY_BITS / 8]; CK_MECHANISM_TYPE symWrapMechanism; /* unwrapped symmetric wrapping key uses this mechanism */ CK_MECHANISM_TYPE asymWrapMechanism; @@ -1375,8 +1386,11 @@ SECStatus ssl3_SendClientHello(sslSocket *ss, sslClientHelloType type); /* * input into the SSL3 machinery from the actualy network reading code */ -SECStatus ssl3_HandleRecord( - sslSocket *ss, SSL3Ciphertext *cipher, sslBuffer *out); +SECStatus ssl3_HandleRecord(sslSocket *ss, SSL3Ciphertext *cipher); +SECStatus ssl3_HandleNonApplicationData(sslSocket *ss, SSL3ContentType rType, + DTLSEpoch epoch, + sslSequenceNumber seqNum, + sslBuffer *databuf); SECStatus ssl_RemoveTLSCBCPadding(sslBuffer *plaintext, unsigned int macSize); int ssl3_GatherAppDataRecord(sslSocket *ss, int flags); @@ -1537,8 +1551,8 @@ SECStatus ssl_GetSelfEncryptKeys(sslSocket *ss, unsigned char *keyName, PK11SymKey **encKey, PK11SymKey **macKey); void ssl_ResetSelfEncryptKeys(); -extern SECStatus ssl3_ValidateNextProtoNego(const unsigned char *data, - unsigned int length); +extern SECStatus ssl3_ValidateAppProtocol(const unsigned char *data, + unsigned int length); /* Construct a new NSPR socket for the app to use */ extern PRFileDesc *ssl_NewPRSocket(sslSocket *ss, PRFileDesc *fd); @@ -1636,6 +1650,9 @@ SSLHashType ssl_SignatureSchemeToHashType(SSLSignatureScheme scheme); KeyType ssl_SignatureSchemeToKeyType(SSLSignatureScheme scheme); SECStatus ssl3_SetupCipherSuite(sslSocket *ss, PRBool initHashes); +SECStatus ssl_InsertRecordHeader(const sslSocket *ss, ssl3CipherSpec *cwSpec, + SSL3ContentType contentType, sslBuffer *wrBuf, + PRBool *needsLength); /* Pull in DTLS functions */ #include "dtlscon.h" diff --git a/security/nss/lib/ssl/sslsecur.c b/security/nss/lib/ssl/sslsecur.c index f09ec067c..a1d389214 100644 --- a/security/nss/lib/ssl/sslsecur.c +++ b/security/nss/lib/ssl/sslsecur.c @@ -791,7 +791,7 @@ tls13_CheckKeyUpdate(sslSocket *ss, CipherSpecDirection dir) spec = ss->ssl3.cwSpec; margin = spec->cipherDef->max_records / 4; } - seqNum = spec->seqNum; + seqNum = spec->nextSeqNum; keyUpdate = seqNum > spec->cipherDef->max_records - margin; ssl_ReleaseSpecReadLock(ss); if (!keyUpdate) { @@ -922,21 +922,30 @@ ssl_SecureSend(sslSocket *ss, const unsigned char *buf, int len, int flags) */ if (!ss->firstHsDone) { PRBool allowEarlySend = PR_FALSE; + PRBool firstClientWrite = PR_FALSE; ssl_Get1stHandshakeLock(ss); - if (ss->opt.enableFalseStart || - (ss->opt.enable0RttData && !ss->sec.isServer)) { + /* The client can sometimes send before the handshake is fully + * complete. In TLS 1.2: false start; in TLS 1.3: 0-RTT. */ + if (!ss->sec.isServer && + (ss->opt.enableFalseStart || ss->opt.enable0RttData)) { ssl_GetSSL3HandshakeLock(ss); - /* The client can sometimes send before the handshake is fully - * complete. In TLS 1.2: false start; in TLS 1.3: 0-RTT. */ zeroRtt = ss->ssl3.hs.zeroRttState == ssl_0rtt_sent || ss->ssl3.hs.zeroRttState == ssl_0rtt_accepted; allowEarlySend = ss->ssl3.hs.canFalseStart || zeroRtt; + firstClientWrite = ss->ssl3.hs.ws == idle_handshake; ssl_ReleaseSSL3HandshakeLock(ss); } if (!allowEarlySend && ss->handshake) { rv = ssl_Do1stHandshake(ss); } + if (firstClientWrite) { + /* Wait until after sending ClientHello and double-check 0-RTT. */ + ssl_GetSSL3HandshakeLock(ss); + zeroRtt = ss->ssl3.hs.zeroRttState == ssl_0rtt_sent || + ss->ssl3.hs.zeroRttState == ssl_0rtt_accepted; + ssl_ReleaseSSL3HandshakeLock(ss); + } ssl_Release1stHandshakeLock(ss); } diff --git a/security/nss/lib/ssl/sslsock.c b/security/nss/lib/ssl/sslsock.c index e08d5e232..33595ffae 100644 --- a/security/nss/lib/ssl/sslsock.c +++ b/security/nss/lib/ssl/sslsock.c @@ -55,6 +55,7 @@ static const sslSocketOps ssl_secure_ops = { /* SSL. */ static sslOptions ssl_defaults = { .nextProtoNego = { siBuffer, NULL, 0 }, .maxEarlyDataSize = 1 << 16, + .recordSizeLimit = MAX_FRAGMENT_LENGTH + 1, .useSecurity = PR_TRUE, .useSocks = PR_FALSE, .requestCertificate = PR_FALSE, @@ -72,7 +73,6 @@ static sslOptions ssl_defaults = { .enableFalseStart = PR_FALSE, .cbcRandomIV = PR_TRUE, .enableOCSPStapling = PR_FALSE, - .enableNPN = PR_FALSE, .enableALPN = PR_TRUE, .reuseServerECDHEKey = PR_TRUE, .enableFallbackSCSV = PR_FALSE, @@ -81,7 +81,8 @@ static sslOptions ssl_defaults = { .enableSignedCertTimestamps = PR_FALSE, .requireDHENamedGroups = PR_FALSE, .enable0RttData = PR_FALSE, - .enableTls13CompatMode = PR_FALSE + .enableTls13CompatMode = PR_FALSE, + .enableDtlsShortHeader = PR_FALSE }; /* @@ -803,10 +804,23 @@ SSL_OptionSet(PRFileDesc *fd, PRInt32 which, PRIntn val) ss->opt.enable0RttData = val; break; + case SSL_RECORD_SIZE_LIMIT: + if (val < 64 || val > (MAX_FRAGMENT_LENGTH + 1)) { + PORT_SetError(SEC_ERROR_INVALID_ARGS); + rv = SECFailure; + } else { + ss->opt.recordSizeLimit = val; + } + break; + case SSL_ENABLE_TLS13_COMPAT_MODE: ss->opt.enableTls13CompatMode = val; break; + case SSL_ENABLE_DTLS_SHORT_HEADER: + ss->opt.enableDtlsShortHeader = val; + break; + default: PORT_SetError(SEC_ERROR_INVALID_ARGS); rv = SECFailure; @@ -914,7 +928,7 @@ SSL_OptionGet(PRFileDesc *fd, PRInt32 which, PRIntn *pVal) val = ss->opt.enableOCSPStapling; break; case SSL_ENABLE_NPN: - val = ss->opt.enableNPN; + val = PR_FALSE; break; case SSL_ENABLE_ALPN: val = ss->opt.enableALPN; @@ -940,9 +954,15 @@ SSL_OptionGet(PRFileDesc *fd, PRInt32 which, PRIntn *pVal) case SSL_ENABLE_0RTT_DATA: val = ss->opt.enable0RttData; break; + case SSL_RECORD_SIZE_LIMIT: + val = ss->opt.recordSizeLimit; + break; case SSL_ENABLE_TLS13_COMPAT_MODE: val = ss->opt.enableTls13CompatMode; break; + case SSL_ENABLE_DTLS_SHORT_HEADER: + val = ss->opt.enableDtlsShortHeader; + break; default: PORT_SetError(SEC_ERROR_INVALID_ARGS); rv = SECFailure; @@ -1037,7 +1057,7 @@ SSL_OptionGetDefault(PRInt32 which, PRIntn *pVal) val = ssl_defaults.enableOCSPStapling; break; case SSL_ENABLE_NPN: - val = ssl_defaults.enableNPN; + val = PR_FALSE; break; case SSL_ENABLE_ALPN: val = ssl_defaults.enableALPN; @@ -1060,9 +1080,15 @@ SSL_OptionGetDefault(PRInt32 which, PRIntn *pVal) case SSL_ENABLE_0RTT_DATA: val = ssl_defaults.enable0RttData; break; + case SSL_RECORD_SIZE_LIMIT: + val = ssl_defaults.recordSizeLimit; + break; case SSL_ENABLE_TLS13_COMPAT_MODE: val = ssl_defaults.enableTls13CompatMode; break; + case SSL_ENABLE_DTLS_SHORT_HEADER: + val = ssl_defaults.enableDtlsShortHeader; + break; default: PORT_SetError(SEC_ERROR_INVALID_ARGS); rv = SECFailure; @@ -1242,10 +1268,22 @@ SSL_OptionSetDefault(PRInt32 which, PRIntn val) ssl_defaults.enable0RttData = val; break; + case SSL_RECORD_SIZE_LIMIT: + if (val < 64 || val > (MAX_FRAGMENT_LENGTH + 1)) { + PORT_SetError(SEC_ERROR_INVALID_ARGS); + return SECFailure; + } + ssl_defaults.recordSizeLimit = val; + break; + case SSL_ENABLE_TLS13_COMPAT_MODE: ssl_defaults.enableTls13CompatMode = val; break; + case SSL_ENABLE_DTLS_SHORT_HEADER: + ssl_defaults.enableDtlsShortHeader = val; + break; + default: PORT_SetError(SEC_ERROR_INVALID_ARGS); return SECFailure; @@ -1895,10 +1933,7 @@ DTLS_ImportFD(PRFileDesc *model, PRFileDesc *fd) } /* SSL_SetNextProtoCallback is used to select an application protocol - * for ALPN and NPN. For ALPN, this runs on the server; for NPN it - * runs on the client. */ -/* Note: The ALPN version doesn't allow for the use of a default, setting a - * status of SSL_NEXT_PROTO_NO_OVERLAP is treated as a failure. */ + * for ALPN. */ SECStatus SSL_SetNextProtoCallback(PRFileDesc *fd, SSLNextProtoCallback callback, void *arg) @@ -1919,7 +1954,7 @@ SSL_SetNextProtoCallback(PRFileDesc *fd, SSLNextProtoCallback callback, return SECSuccess; } -/* ssl_NextProtoNegoCallback is set as an ALPN/NPN callback when +/* ssl_NextProtoNegoCallback is set as an ALPN callback when * SSL_SetNextProtoNego is used. */ static SECStatus @@ -1929,7 +1964,6 @@ ssl_NextProtoNegoCallback(void *arg, PRFileDesc *fd, unsigned int protoMaxLen) { unsigned int i, j; - const unsigned char *result; sslSocket *ss = ssl_FindSocket(fd); if (!ss) { @@ -1937,37 +1971,29 @@ ssl_NextProtoNegoCallback(void *arg, PRFileDesc *fd, SSL_GETPID(), fd)); return SECFailure; } + PORT_Assert(protoMaxLen <= 255); + if (protoMaxLen > 255) { + PORT_SetError(SEC_ERROR_OUTPUT_LEN); + return SECFailure; + } - /* For each protocol in server preference, see if we support it. */ - for (i = 0; i < protos_len;) { - for (j = 0; j < ss->opt.nextProtoNego.len;) { + /* For each protocol in client preference, see if we support it. */ + for (j = 0; j < ss->opt.nextProtoNego.len;) { + for (i = 0; i < protos_len;) { if (protos[i] == ss->opt.nextProtoNego.data[j] && PORT_Memcmp(&protos[i + 1], &ss->opt.nextProtoNego.data[j + 1], protos[i]) == 0) { /* We found a match. */ - ss->xtnData.nextProtoState = SSL_NEXT_PROTO_NEGOTIATED; - result = &protos[i]; - goto found; + const unsigned char *result = &protos[i]; + memcpy(protoOut, result + 1, result[0]); + *protoOutLen = result[0]; + return SECSuccess; } - j += 1 + (unsigned int)ss->opt.nextProtoNego.data[j]; + i += 1 + (unsigned int)protos[i]; } - i += 1 + (unsigned int)protos[i]; + j += 1 + (unsigned int)ss->opt.nextProtoNego.data[j]; } - /* The other side supports the extension, and either doesn't have any - * protocols configured, or none of its options match ours. In this case we - * request our favoured protocol. */ - /* This will be treated as a failure for ALPN. */ - ss->xtnData.nextProtoState = SSL_NEXT_PROTO_NO_OVERLAP; - result = ss->opt.nextProtoNego.data; - -found: - if (protoMaxLen < result[0]) { - PORT_SetError(SEC_ERROR_OUTPUT_LEN); - return SECFailure; - } - memcpy(protoOut, result + 1, result[0]); - *protoOutLen = result[0]; return SECSuccess; } @@ -1976,8 +2002,6 @@ SSL_SetNextProtoNego(PRFileDesc *fd, const unsigned char *data, unsigned int length) { sslSocket *ss; - SECStatus rv; - SECItem dataItem = { siBuffer, (unsigned char *)data, length }; ss = ssl_FindSocket(fd); if (!ss) { @@ -1986,17 +2010,22 @@ SSL_SetNextProtoNego(PRFileDesc *fd, const unsigned char *data, return SECFailure; } - if (ssl3_ValidateNextProtoNego(data, length) != SECSuccess) + if (ssl3_ValidateAppProtocol(data, length) != SECSuccess) { return SECFailure; + } + /* NPN required that the client's fallback protocol is first in the + * list. However, ALPN sends protocols in preference order. So move the + * first protocol to the end of the list. */ ssl_GetSSL3HandshakeLock(ss); SECITEM_FreeItem(&ss->opt.nextProtoNego, PR_FALSE); - rv = SECITEM_CopyItem(NULL, &ss->opt.nextProtoNego, &dataItem); + SECITEM_AllocItem(NULL, &ss->opt.nextProtoNego, length); + size_t firstLen = data[0] + 1; + /* firstLen <= length is ensured by ssl3_ValidateAppProtocol. */ + PORT_Memcpy(ss->opt.nextProtoNego.data + (length - firstLen), data, firstLen); + PORT_Memcpy(ss->opt.nextProtoNego.data, data + firstLen, length - firstLen); ssl_ReleaseSSL3HandshakeLock(ss); - if (rv != SECSuccess) - return rv; - return SSL_SetNextProtoCallback(fd, ssl_NextProtoNegoCallback, NULL); } @@ -3034,26 +3063,27 @@ ssl_Poll(PRFileDesc *fd, PRInt16 how_flags, PRInt16 *p_out_flags) } else { /* handshaking as server */ new_flags |= PR_POLL_READ; } - } else + } else if (ss->lastWriteBlocked) { /* First handshake is in progress */ - if (ss->lastWriteBlocked) { if (new_flags & PR_POLL_READ) { /* The caller is waiting for data to be received, ** but the initial handshake is blocked on write, or the ** client's first handshake record has not been written. ** The code should select on write, not read. */ - new_flags ^= PR_POLL_READ; /* don't select on read. */ + new_flags &= ~PR_POLL_READ; /* don't select on read. */ new_flags |= PR_POLL_WRITE; /* do select on write. */ } } else if (new_flags & PR_POLL_WRITE) { /* The caller is trying to write, but the handshake is ** blocked waiting for data to read, and the first ** handshake has been sent. So do NOT to poll on write - ** unless we did false start. + ** unless we did false start or we are doing 0-RTT. */ - if (!ss->ssl3.hs.canFalseStart) { - new_flags ^= PR_POLL_WRITE; /* don't select on write. */ + if (!(ss->ssl3.hs.canFalseStart || + ss->ssl3.hs.zeroRttState == ssl_0rtt_sent || + ss->ssl3.hs.zeroRttState == ssl_0rtt_accepted)) { + new_flags &= ~PR_POLL_WRITE; /* don't select on write. */ } new_flags |= PR_POLL_READ; /* do select on read. */ } @@ -3093,6 +3123,9 @@ ssl_Poll(PRFileDesc *fd, PRInt16 how_flags, PRInt16 *p_out_flags) } } + SSL_TRC(20, ("%d: SSL[%d]: ssl_Poll flags %x -> %x", + SSL_GETPID(), fd, how_flags, new_flags)); + if (new_flags && (fd->lower->methods->poll != NULL)) { PRInt16 lower_out_flags = 0; PRInt16 lower_new_flags; diff --git a/security/nss/lib/ssl/sslspec.c b/security/nss/lib/ssl/sslspec.c index 26c3eb546..7833eeab6 100644 --- a/security/nss/lib/ssl/sslspec.c +++ b/security/nss/lib/ssl/sslspec.c @@ -143,6 +143,7 @@ ssl_CreateCipherSpec(sslSocket *ss, CipherSpecDirection direction) spec->refCt = 1; spec->version = ss->version; spec->direction = direction; + spec->recordSizeLimit = MAX_FRAGMENT_LENGTH; SSL_TRC(10, ("%d: SSL[%d]: new %s spec %d ct=%d", SSL_GETPID(), ss->fd, SPEC_DIR(spec), spec, spec->refCt)); diff --git a/security/nss/lib/ssl/sslspec.h b/security/nss/lib/ssl/sslspec.h index 729ac1006..b25601755 100644 --- a/security/nss/lib/ssl/sslspec.h +++ b/security/nss/lib/ssl/sslspec.h @@ -162,12 +162,18 @@ struct ssl3CipherSpecStr { DTLSEpoch epoch; const char *phase; - sslSequenceNumber seqNum; + + /* The next sequence number to be sent or received. */ + sslSequenceNumber nextSeqNum; DTLSRecvdRecords recvdRecords; /* The number of 0-RTT bytes that can be sent or received in TLS 1.3. This * will be zero for everything but 0-RTT. */ PRUint32 earlyDataRemaining; + /* The maximum plaintext length. This differs from the configured or + * negotiated value for TLS 1.3; it is reduced by one to account for the + * content type octet. */ + PRUint16 recordSizeLimit; }; typedef void (*sslCipherSpecChangedFunc)(void *arg, diff --git a/security/nss/lib/ssl/sslt.h b/security/nss/lib/ssl/sslt.h index e2b80fb43..bb1bec7a3 100644 --- a/security/nss/lib/ssl/sslt.h +++ b/security/nss/lib/ssl/sslt.h @@ -432,6 +432,7 @@ typedef enum { ssl_signed_cert_timestamp_xtn = 18, ssl_padding_xtn = 21, ssl_extended_master_secret_xtn = 23, + ssl_record_size_limit_xtn = 28, ssl_session_ticket_xtn = 35, /* 40 was used in draft versions of TLS 1.3; it is now reserved. */ ssl_tls13_pre_shared_key_xtn = 41, @@ -454,7 +455,7 @@ typedef enum { /* SSL_MAX_EXTENSIONS includes the maximum number of extensions that are * supported for any single message type. That is, a ClientHello; ServerHello * and TLS 1.3 NewSessionTicket and HelloRetryRequest extensions have fewer. */ -#define SSL_MAX_EXTENSIONS 20 +#define SSL_MAX_EXTENSIONS 21 /* Deprecated */ typedef enum { diff --git a/security/nss/lib/ssl/tls13con.c b/security/nss/lib/ssl/tls13con.c index c06acc83a..4d9170fb0 100644 --- a/security/nss/lib/ssl/tls13con.c +++ b/security/nss/lib/ssl/tls13con.c @@ -792,7 +792,7 @@ tls13_HandleKeyUpdate(sslSocket *ss, PRUint8 *b, unsigned int length) /* Only send an update if we have sent with the current spec. This * prevents us from being forced to crank forward pointlessly. */ ssl_GetSpecReadLock(ss); - sendUpdate = ss->ssl3.cwSpec->seqNum > 0; + sendUpdate = ss->ssl3.cwSpec->nextSeqNum > 0; ssl_ReleaseSpecReadLock(ss); } else { sendUpdate = PR_TRUE; @@ -1620,7 +1620,7 @@ tls13_HandleClientHelloPart2(sslSocket *ss, ssl_GetSpecWriteLock(ss); /* Increase the write sequence number. The read sequence number * will be reset after this to early data or handshake. */ - ss->ssl3.cwSpec->seqNum = 1; + ss->ssl3.cwSpec->nextSeqNum = 1; ssl_ReleaseSpecWriteLock(ss); } @@ -2007,7 +2007,7 @@ tls13_SendHelloRetryRequest(sslSocket *ss, /* We depend on this being exactly one record and one message. */ PORT_Assert(!IS_DTLS(ss) || (ss->ssl3.hs.sendMessageSeq == 1 && - ss->ssl3.cwSpec->seqNum == 1)); + ss->ssl3.cwSpec->nextSeqNum == 1)); ssl_ReleaseXmitBufLock(ss); ss->ssl3.hs.helloRetry = PR_TRUE; @@ -2209,6 +2209,8 @@ tls13_HandleHelloRetryRequest(sslSocket *ss, const PRUint8 *savedMsg, } else { PORT_Assert(ss->ssl3.hs.zeroRttState == ssl_0rtt_none); } + /* Set the spec version, because we want to send CH now with 0303 */ + tls13_SetSpecRecordVersion(ss, ss->ssl3.cwSpec); /* Extensions must contain more than just supported_versions. This will * ensure that a HelloRetryRequest isn't a no-op: we must have at least two @@ -2248,6 +2250,7 @@ tls13_HandleHelloRetryRequest(sslSocket *ss, const PRUint8 *savedMsg, goto loser; } } + rv = ssl3_SendClientHello(ss, client_hello_retry); if (rv != SECSuccess) { goto loser; @@ -3251,6 +3254,17 @@ tls13_SetupPendingCipherSpec(sslSocket *ss, ssl3CipherSpec *spec) } tls13_SetSpecRecordVersion(ss, spec); + + /* The record size limit is reduced by one so that the remainder of the + * record handling code can use the same checks for all versions. */ + if (ssl3_ExtensionNegotiated(ss, ssl_record_size_limit_xtn)) { + spec->recordSizeLimit = ((spec->direction == CipherSpecRead) + ? ss->opt.recordSizeLimit + : ss->xtnData.recordSizeLimit) - + 1; + } else { + spec->recordSizeLimit = MAX_FRAGMENT_LENGTH; + } return SECSuccess; } @@ -3316,7 +3330,7 @@ tls13_SetCipherSpec(sslSocket *ss, PRUint16 epoch, return SECFailure; } spec->epoch = epoch; - spec->seqNum = 0; + spec->nextSeqNum = 0; if (IS_DTLS(ss)) { dtls_InitRecvdRecords(&spec->recvdRecords); } @@ -3536,14 +3550,15 @@ tls13_AESGCM(ssl3KeyMaterial *keys, CK_GCM_PARAMS gcmParams; unsigned char nonce[12]; + PORT_Assert(additionalDataLen > 8); memset(&gcmParams, 0, sizeof(gcmParams)); gcmParams.pIv = nonce; gcmParams.ulIvLen = sizeof(nonce); - gcmParams.pAAD = NULL; - gcmParams.ulAADLen = 0; + gcmParams.pAAD = (PRUint8 *)(additionalData + 8); + gcmParams.ulAADLen = additionalDataLen - 8; gcmParams.ulTagBits = 128; /* GCM measures tag length in bits. */ - tls13_WriteNonce(keys, additionalData, additionalDataLen, + tls13_WriteNonce(keys, additionalData, 8, nonce, sizeof(nonce)); return tls13_AEAD(keys, doDecrypt, out, outlen, maxout, in, inlen, CKM_AES_GCM, @@ -3560,14 +3575,15 @@ tls13_ChaCha20Poly1305(ssl3KeyMaterial *keys, PRBool doDecrypt, CK_NSS_AEAD_PARAMS aeadParams; unsigned char nonce[12]; + PORT_Assert(additionalDataLen > 8); memset(&aeadParams, 0, sizeof(aeadParams)); aeadParams.pNonce = nonce; aeadParams.ulNonceLen = sizeof(nonce); - aeadParams.pAAD = NULL; /* No AAD in TLS 1.3. */ - aeadParams.ulAADLen = 0; + aeadParams.pAAD = (PRUint8 *)(additionalData + 8); + aeadParams.ulAADLen = additionalDataLen - 8; aeadParams.ulTagLen = 16; /* The Poly1305 tag is 16 octets. */ - tls13_WriteNonce(keys, additionalData, additionalDataLen, + tls13_WriteNonce(keys, additionalData, 8, nonce, sizeof(nonce)); return tls13_AEAD(keys, doDecrypt, out, outlen, maxout, in, inlen, CKM_NSS_CHACHA20_POLY1305, @@ -3579,7 +3595,7 @@ tls13_HandleEncryptedExtensions(sslSocket *ss, PRUint8 *b, PRUint32 length) { SECStatus rv; PRUint32 innerLength; - SECItem oldNpn = { siBuffer, NULL, 0 }; + SECItem oldAlpn = { siBuffer, NULL, 0 }; PORT_Assert(ss->opt.noLocks || ssl_HaveRecvBufLock(ss)); PORT_Assert(ss->opt.noLocks || ssl_HaveSSL3HandshakeLock(ss)); @@ -3603,11 +3619,11 @@ tls13_HandleEncryptedExtensions(sslSocket *ss, PRUint8 *b, PRUint32 length) return SECFailure; } - /* If we are doing 0-RTT, then we already have an NPN value. Stash + /* If we are doing 0-RTT, then we already have an ALPN value. Stash * it for comparison. */ if (ss->ssl3.hs.zeroRttState == ssl_0rtt_sent && ss->xtnData.nextProtoState == SSL_NEXT_PROTO_EARLY_VALUE) { - oldNpn = ss->xtnData.nextProto; + oldAlpn = ss->xtnData.nextProto; ss->xtnData.nextProto.data = NULL; ss->xtnData.nextProtoState = SSL_NEXT_PROTO_NO_SUPPORT; } @@ -3627,8 +3643,8 @@ tls13_HandleEncryptedExtensions(sslSocket *ss, PRUint8 *b, PRUint32 length) ss->ssl3.hs.zeroRttState = ssl_0rtt_accepted; /* Check that the server negotiated the same ALPN (if any). */ - if (SECITEM_CompareItem(&oldNpn, &ss->xtnData.nextProto)) { - SECITEM_FreeItem(&oldNpn, PR_FALSE); + if (SECITEM_CompareItem(&oldAlpn, &ss->xtnData.nextProto)) { + SECITEM_FreeItem(&oldAlpn, PR_FALSE); FATAL_ERROR(ss, SSL_ERROR_NEXT_PROTOCOL_DATA_INVALID, illegal_parameter); return SECFailure; @@ -3650,7 +3666,7 @@ tls13_HandleEncryptedExtensions(sslSocket *ss, PRUint8 *b, PRUint32 length) ss->ssl3.hs.zeroRttState == ssl_0rtt_ignored)); } - SECITEM_FreeItem(&oldNpn, PR_FALSE); + SECITEM_FreeItem(&oldAlpn, PR_FALSE); if (ss->ssl3.hs.kea_def->authKeyType == ssl_auth_psk) { TLS13_SET_HS_STATE(ss, wait_finished); } else { @@ -3815,13 +3831,14 @@ tls13_HandleCertificateVerify(sslSocket *ss, PRUint8 *b, PRUint32 length) rv = ssl_ConsumeSignatureScheme(ss, &b, &length, &sigScheme); if (rv != SECSuccess) { - PORT_SetError(SSL_ERROR_RX_MALFORMED_CERT_VERIFY); + FATAL_ERROR(ss, SSL_ERROR_RX_MALFORMED_CERT_VERIFY, illegal_parameter); return SECFailure; } rv = ssl_CheckSignatureSchemeConsistency(ss, sigScheme, ss->sec.peerCert); if (rv != SECSuccess) { /* Error set already */ + FATAL_ERROR(ss, PORT_GetError(), illegal_parameter); return SECFailure; } hashAlg = ssl_SignatureSchemeToHashType(sigScheme); @@ -4740,7 +4757,8 @@ static const struct { { ssl_tls13_cookie_xtn, _M2(client_hello, hello_retry_request) }, { ssl_tls13_certificate_authorities_xtn, _M1(certificate_request) }, { ssl_tls13_supported_versions_xtn, _M3(client_hello, server_hello, - hello_retry_request) } + hello_retry_request) }, + { ssl_record_size_limit_xtn, _M2(client_hello, encrypted_extensions) } }; tls13ExtensionStatus @@ -4780,19 +4798,20 @@ tls13_ExtensionStatus(PRUint16 extension, SSLHandshakeType message) #undef _M2 #undef _M3 -/* TLS 1.3 doesn't actually have additional data but the aead function - * signature overloads additional data to carry the record sequence - * number and that's what we put here. The TLS 1.3 AEAD functions - * just use this input as the sequence number and not as additional - * data. */ +/* We cheat a bit on additional data because the AEAD interface + * which doesn't have room for the record number. The AAD we + * format is serialized record number followed by the true AD + * (i.e., the record header) plus the serialized record number. */ static SECStatus -tls13_FormatAdditionalData(sslSocket *ss, PRUint8 *aad, unsigned int length, - DTLSEpoch epoch, sslSequenceNumber seqNum) +tls13_FormatAdditionalData( + sslSocket *ss, + const PRUint8 *header, unsigned int headerLen, + DTLSEpoch epoch, sslSequenceNumber seqNum, + PRUint8 *aad, unsigned int *aadLength, unsigned int maxLength) { SECStatus rv; - sslBuffer buf = SSL_BUFFER_FIXED(aad, length); + sslBuffer buf = SSL_BUFFER_FIXED(aad, maxLength); - PORT_Assert(length == 8); if (IS_DTLS(ss)) { rv = sslBuffer_AppendNumber(&buf, epoch, 2); if (rv != SECSuccess) { @@ -4803,6 +4822,14 @@ tls13_FormatAdditionalData(sslSocket *ss, PRUint8 *aad, unsigned int length, if (rv != SECSuccess) { return SECFailure; } + + rv = sslBuffer_Append(&buf, header, headerLen); + if (rv != SECSuccess) { + return SECFailure; + } + + *aadLength = buf.len; + return SECSuccess; } @@ -4843,43 +4870,68 @@ tls13_ProtectRecord(sslSocket *ss, PORT_Assert(cwSpec->direction == CipherSpecWrite); SSL_TRC(3, ("%d: TLS13[%d]: spec=%d epoch=%d (%s) protect 0x%0llx len=%u", SSL_GETPID(), ss->fd, cwSpec, cwSpec->epoch, cwSpec->phase, - cwSpec->seqNum, contentLen)); + cwSpec->nextSeqNum, contentLen)); - if (contentLen + 1 + tagLen > wrBuf->space) { + if (contentLen + 1 + tagLen > SSL_BUFFER_SPACE(wrBuf)) { PORT_SetError(SEC_ERROR_LIBRARY_FAILURE); return SECFailure; } /* Copy the data into the wrBuf. We're going to encrypt in-place * in the AEAD branch anyway */ - PORT_Memcpy(wrBuf->buf, pIn, contentLen); + PORT_Memcpy(SSL_BUFFER_NEXT(wrBuf), pIn, contentLen); if (cipher_def->calg == ssl_calg_null) { /* Shortcut for plaintext */ - wrBuf->len = contentLen; + rv = sslBuffer_Skip(wrBuf, contentLen, NULL); + PORT_Assert(rv == SECSuccess); } else { - PRUint8 aad[8]; + PRUint8 hdr[13]; + sslBuffer buf = SSL_BUFFER_FIXED(hdr, sizeof(hdr)); + PRBool needsLength; + PRUint8 aad[21]; + unsigned int aadLen; + int len; + PORT_Assert(cipher_def->type == type_aead); /* Add the content type at the end. */ - wrBuf->buf[contentLen] = type; + *(SSL_BUFFER_NEXT(wrBuf) + contentLen) = type; - rv = tls13_FormatAdditionalData(ss, aad, sizeof(aad), cwSpec->epoch, - cwSpec->seqNum); + /* Create the header (ugly that we have to do it twice). */ + rv = ssl_InsertRecordHeader(ss, cwSpec, content_application_data, + &buf, &needsLength); + if (rv != SECSuccess) { + return SECFailure; + } + if (needsLength) { + rv = sslBuffer_AppendNumber(&buf, contentLen + 1 + + cwSpec->cipherDef->tag_size, + 2); + if (rv != SECSuccess) { + return SECFailure; + } + } + rv = tls13_FormatAdditionalData(ss, SSL_BUFFER_BASE(&buf), SSL_BUFFER_LEN(&buf), + cwSpec->epoch, cwSpec->nextSeqNum, + aad, &aadLen, sizeof(aad)); if (rv != SECSuccess) { return SECFailure; } rv = cwSpec->aead(&cwSpec->keyMaterial, - PR_FALSE, /* do encrypt */ - wrBuf->buf, /* output */ - (int *)&wrBuf->len, /* out len */ - wrBuf->space, /* max out */ - wrBuf->buf, contentLen + 1, /* input */ - aad, sizeof(aad)); + PR_FALSE, /* do encrypt */ + SSL_BUFFER_NEXT(wrBuf), /* output */ + &len, /* out len */ + SSL_BUFFER_SPACE(wrBuf), /* max out */ + SSL_BUFFER_NEXT(wrBuf), /* input */ + contentLen + 1, /* input len */ + aad, aadLen); if (rv != SECSuccess) { PORT_SetError(SSL_ERROR_ENCRYPTION_FAILURE); return SECFailure; } + rv = sslBuffer_Skip(wrBuf, len, NULL); + PORT_Assert(rv == SECSuccess); } return SECSuccess; @@ -4897,25 +4949,22 @@ tls13_ProtectRecord(sslSocket *ss, SECStatus tls13_UnprotectRecord(sslSocket *ss, ssl3CipherSpec *spec, - SSL3Ciphertext *cText, sslBuffer *plaintext, + SSL3Ciphertext *cText, + sslBuffer *plaintext, + SSL3ContentType *innerType, SSL3AlertDescription *alert) { const ssl3BulkCipherDef *cipher_def = spec->cipherDef; - sslSequenceNumber seqNum; - PRUint8 aad[8]; + PRUint8 aad[21]; + unsigned int aadLen; SECStatus rv; *alert = bad_record_mac; /* Default alert for most issues. */ PORT_Assert(spec->direction == CipherSpecRead); - if (IS_DTLS(ss)) { - seqNum = cText->seq_num & RECORD_SEQ_MASK; - } else { - seqNum = spec->seqNum; - } SSL_TRC(3, ("%d: TLS13[%d]: spec=%d epoch=%d (%s) unprotect 0x%0llx len=%u", - SSL_GETPID(), ss->fd, spec, spec->epoch, spec->phase, seqNum, - cText->buf->len)); + SSL_GETPID(), ss->fd, spec, spec->epoch, spec->phase, + cText->seqNum, cText->buf->len)); /* We can perform this test in variable time because the record's total * length and the ciphersuite are both public knowledge. */ @@ -4927,28 +4976,38 @@ tls13_UnprotectRecord(sslSocket *ss, return SECFailure; } - /* Verify that the content type is right, even though we overwrite it. */ - if (cText->type != content_application_data) { + /* Verify that the content type is right, even though we overwrite it. + * Also allow the DTLS short header in TLS 1.3. */ + if (!(cText->hdr[0] == content_application_data || + (IS_DTLS(ss) && + ss->version >= SSL_LIBRARY_VERSION_TLS_1_3 && + (cText->hdr[0] & 0xe0) == 0x20))) { SSL_TRC(3, - ("%d: TLS13[%d]: record has invalid exterior content type=%d", - SSL_GETPID(), ss->fd, cText->type)); + ("%d: TLS13[%d]: record has invalid exterior type=%2.2x", + SSL_GETPID(), ss->fd, cText->hdr[0])); /* Do we need a better error here? */ PORT_SetError(SSL_ERROR_BAD_MAC_READ); return SECFailure; } - /* Check the version number in the record. */ - if (cText->version != spec->recordVersion) { - /* Do we need a better error here? */ - SSL_TRC(3, - ("%d: TLS13[%d]: record has bogus version", - SSL_GETPID(), ss->fd)); - return SECFailure; + /* Check the version number in the record. Stream only. */ + if (!IS_DTLS(ss)) { + SSL3ProtocolVersion version = + ((SSL3ProtocolVersion)cText->hdr[1] << 8) | + (SSL3ProtocolVersion)cText->hdr[2]; + if (version != spec->recordVersion) { + /* Do we need a better error here? */ + SSL_TRC(3, ("%d: TLS13[%d]: record has bogus version", + SSL_GETPID(), ss->fd)); + return SECFailure; + } } /* Decrypt */ PORT_Assert(cipher_def->type == type_aead); - rv = tls13_FormatAdditionalData(ss, aad, sizeof(aad), spec->epoch, seqNum); + rv = tls13_FormatAdditionalData(ss, cText->hdr, cText->hdrLen, + spec->epoch, cText->seqNum, + aad, &aadLen, sizeof(aad)); if (rv != SECSuccess) { return SECFailure; } @@ -4959,7 +5018,7 @@ tls13_UnprotectRecord(sslSocket *ss, plaintext->space, /* maxout */ cText->buf->buf, /* in */ cText->buf->len, /* inlen */ - aad, sizeof(aad)); + aad, aadLen); if (rv != SECSuccess) { SSL_TRC(3, ("%d: TLS13[%d]: record has bogus MAC", @@ -4968,6 +5027,16 @@ tls13_UnprotectRecord(sslSocket *ss, return SECFailure; } + /* There is a similar test in ssl3_HandleRecord, but this test is needed to + * account for padding. It's safe to do this here (including the alert), + * because it only confirms that the record exceeded the size limit, which + * is apparent from the size of the ciphertext. */ + if (plaintext->len > spec->recordSizeLimit + 1) { + SSL3_SendAlert(ss, alert_fatal, record_overflow); + PORT_SetError(SSL_ERROR_RX_RECORD_TOO_LONG); + return SECFailure; + } + /* The record is right-padded with 0s, followed by the true * content type, so read from the right until we receive a * nonzero byte. */ @@ -4977,9 +5046,7 @@ tls13_UnprotectRecord(sslSocket *ss, /* Bogus padding. */ if (plaintext->len < 1) { - SSL_TRC(3, - ("%d: TLS13[%d]: empty record", - SSL_GETPID(), ss->fd, cText->type)); + SSL_TRC(3, ("%d: TLS13[%d]: empty record", SSL_GETPID(), ss->fd)); /* It's safe to report this specifically because it happened * after the MAC has been verified. */ PORT_SetError(SSL_ERROR_BAD_BLOCK_PADDING); @@ -4987,12 +5054,12 @@ tls13_UnprotectRecord(sslSocket *ss, } /* Record the type. */ - cText->type = plaintext->buf[plaintext->len - 1]; + *innerType = (SSL3ContentType)plaintext->buf[plaintext->len - 1]; --plaintext->len; /* Check that we haven't received too much 0-RTT data. */ if (spec->epoch == TrafficKeyEarlyApplicationData && - cText->type == content_application_data) { + *innerType == content_application_data) { if (plaintext->len > spec->earlyDataRemaining) { *alert = unexpected_message; PORT_SetError(SSL_ERROR_TOO_MUCH_EARLY_DATA); @@ -5002,9 +5069,8 @@ tls13_UnprotectRecord(sslSocket *ss, } SSL_TRC(10, - ("%d: TLS13[%d]: %s received record of length=%d type=%d", - SSL_GETPID(), ss->fd, SSL_ROLE(ss), - plaintext->len, cText->type)); + ("%d: TLS13[%d]: %s received record of length=%d, type=%d", + SSL_GETPID(), ss->fd, SSL_ROLE(ss), plaintext->len, *innerType)); return SECSuccess; } @@ -5227,6 +5293,58 @@ tls13_EncodeDraftVersion(SSL3ProtocolVersion version) return (PRUint16)version; } +SECStatus +tls13_ClientReadSupportedVersion(sslSocket *ss) +{ + PRUint32 temp; + SSL3ProtocolVersion v; + TLSExtension *versionExtension; + SECItem it; + SECStatus rv; + + /* Update the version based on the extension, as necessary. */ + versionExtension = ssl3_FindExtension(ss, ssl_tls13_supported_versions_xtn); + if (!versionExtension) { + return SECSuccess; + } + + /* Struct copy so we don't damage the extension. */ + it = versionExtension->data; + + rv = ssl3_ConsumeHandshakeNumber(ss, &temp, 2, &it.data, &it.len); + if (rv != SECSuccess) { + return SECFailure; + } + if (it.len) { + FATAL_ERROR(ss, SSL_ERROR_RX_MALFORMED_SERVER_HELLO, illegal_parameter); + return SECFailure; + } + v = (SSL3ProtocolVersion)temp; + + /* You cannot negotiate < TLS 1.3 with supported_versions. */ + if (v < SSL_LIBRARY_VERSION_TLS_1_3) { + FATAL_ERROR(ss, SSL_ERROR_RX_MALFORMED_SERVER_HELLO, illegal_parameter); + return SECFailure; + } + +#ifdef TLS_1_3_DRAFT_VERSION + if (temp == SSL_LIBRARY_VERSION_TLS_1_3) { + FATAL_ERROR(ss, SSL_ERROR_UNSUPPORTED_VERSION, protocol_version); + return SECFailure; + } + if (temp == tls13_EncodeDraftVersion(SSL_LIBRARY_VERSION_TLS_1_3)) { + v = SSL_LIBRARY_VERSION_TLS_1_3; + } else { + v = (SSL3ProtocolVersion)temp; + } +#else + v = (SSL3ProtocolVersion)temp; +#endif + + ss->version = v; + return SECSuccess; +} + /* Pick the highest version we support that is also advertised. */ SECStatus tls13_NegotiateVersion(sslSocket *ss, const TLSExtension *supportedVersions) diff --git a/security/nss/lib/ssl/tls13con.h b/security/nss/lib/ssl/tls13con.h index 1aaffb651..f35b20023 100644 --- a/security/nss/lib/ssl/tls13con.h +++ b/security/nss/lib/ssl/tls13con.h @@ -28,6 +28,7 @@ typedef enum { SECStatus tls13_UnprotectRecord( sslSocket *ss, ssl3CipherSpec *spec, SSL3Ciphertext *cText, sslBuffer *plaintext, + SSL3ContentType *innerType, SSL3AlertDescription *alert); #if defined(WIN32) @@ -101,6 +102,7 @@ PRInt32 tls13_Read0RttData(sslSocket *ss, void *buf, PRInt32 len); SECStatus tls13_HandleEarlyApplicationData(sslSocket *ss, sslBuffer *origBuf); PRBool tls13_ClientAllow0Rtt(const sslSocket *ss, const sslSessionID *sid); PRUint16 tls13_EncodeDraftVersion(SSL3ProtocolVersion version); +SECStatus tls13_ClientReadSupportedVersion(sslSocket *ss); SECStatus tls13_NegotiateVersion(sslSocket *ss, const TLSExtension *supported_versions); diff --git a/security/nss/lib/ssl/tls13exthandle.c b/security/nss/lib/ssl/tls13exthandle.c index 899f23827..1ab8a8e59 100644 --- a/security/nss/lib/ssl/tls13exthandle.c +++ b/security/nss/lib/ssl/tls13exthandle.c @@ -860,12 +860,12 @@ tls13_ServerHandleCookieXtn(const sslSocket *ss, TLSExtensionData *xtnData, } if (xtnData->cookie.len == 0) { - PORT_SetError(SSL_ERROR_RX_MALFORMED_SERVER_HELLO); + PORT_SetError(SSL_ERROR_RX_MALFORMED_CLIENT_HELLO); return SECFailure; } if (data->len) { - PORT_SetError(SSL_ERROR_RX_MALFORMED_SERVER_HELLO); + PORT_SetError(SSL_ERROR_RX_MALFORMED_CLIENT_HELLO); return SECFailure; } diff --git a/security/nss/lib/util/nssutil.def b/security/nss/lib/util/nssutil.def index 936455f6e..26e438ba6 100644 --- a/security/nss/lib/util/nssutil.def +++ b/security/nss/lib/util/nssutil.def @@ -322,4 +322,9 @@ _NSSUTIL_UTF8ToWide;- _NSSUTIL_Access;- ;- local: ;- *; -;-}; +;+NSSUTIL_3.38 { # NSS Utilities 3.38 release +;+ global: +SECITEM_MakeItem; +;+ local: +;+ *; +;+}; diff --git a/security/nss/lib/util/nssutil.h b/security/nss/lib/util/nssutil.h index b65d4a0c9..2749abaa1 100644 --- a/security/nss/lib/util/nssutil.h +++ b/security/nss/lib/util/nssutil.h @@ -19,10 +19,10 @@ * The format of the version string should be * "<major version>.<minor version>[.<patch level>[.<build number>]][ <Beta>]" */ -#define NSSUTIL_VERSION "3.36.4" +#define NSSUTIL_VERSION "3.38" #define NSSUTIL_VMAJOR 3 -#define NSSUTIL_VMINOR 36 -#define NSSUTIL_VPATCH 4 +#define NSSUTIL_VMINOR 38 +#define NSSUTIL_VPATCH 0 #define NSSUTIL_VBUILD 0 #define NSSUTIL_BETA PR_FALSE diff --git a/security/nss/lib/util/pkcs11t.h b/security/nss/lib/util/pkcs11t.h index c945f314e..01ff8a572 100644 --- a/security/nss/lib/util/pkcs11t.h +++ b/security/nss/lib/util/pkcs11t.h @@ -466,6 +466,8 @@ typedef CK_ULONG CK_ATTRIBUTE_TYPE; #define CKA_EXPONENT_1 0x00000126 #define CKA_EXPONENT_2 0x00000127 #define CKA_COEFFICIENT 0x00000128 +/* CKA_PUBLIC_KEY_INFO is new for v2.40 */ +#define CKA_PUBLIC_KEY_INFO 0x00000129 #define CKA_PRIME 0x00000130 #define CKA_SUBPRIME 0x00000131 #define CKA_BASE 0x00000132 diff --git a/security/nss/lib/util/secasn1d.c b/security/nss/lib/util/secasn1d.c index ccd97481d..ed237ed72 100644 --- a/security/nss/lib/util/secasn1d.c +++ b/security/nss/lib/util/secasn1d.c @@ -2987,7 +2987,9 @@ SEC_ASN1DecoderFinish(SEC_ASN1DecoderContext *cx) * XXX anything else that needs to be finished? */ - PORT_FreeArena(cx->our_pool, PR_TRUE); + if (cx) { + PORT_FreeArena(cx->our_pool, PR_TRUE); + } return rv; } diff --git a/security/nss/lib/util/secitem.c b/security/nss/lib/util/secitem.c index 22c5b1f6e..1e505a9af 100644 --- a/security/nss/lib/util/secitem.c +++ b/security/nss/lib/util/secitem.c @@ -76,6 +76,15 @@ loser: } SECStatus +SECITEM_MakeItem(PLArenaPool *arena, SECItem *dest, unsigned char *data, + unsigned int len) +{ + SECItem it = { siBuffer, data, len }; + + return SECITEM_CopyItem(arena, dest, &it); +} + +SECStatus SECITEM_ReallocItem(PLArenaPool *arena, SECItem *item, unsigned int oldlen, unsigned int newlen) { diff --git a/security/nss/lib/util/secitem.h b/security/nss/lib/util/secitem.h index 5b9d0e174..4fb123938 100644 --- a/security/nss/lib/util/secitem.h +++ b/security/nss/lib/util/secitem.h @@ -35,6 +35,14 @@ SEC_BEGIN_PROTOS extern SECItem *SECITEM_AllocItem(PLArenaPool *arena, SECItem *item, unsigned int len); +/* Allocate and make an item with the requested contents. + * + * We seem to have mostly given up on SECItemType, so the result is + * always siBuffer. + */ +extern SECStatus SECITEM_MakeItem(PLArenaPool *arena, SECItem *dest, + unsigned char *data, unsigned int len); + /* ** This is a legacy function containing bugs. It doesn't update item->len, ** and it has other issues as described in bug 298649 and bug 298938. diff --git a/security/nss/nss-tool/enc/enctool.cc b/security/nss/nss-tool/enc/enctool.cc index b3c0d1dbe..e37e4593a 100644 --- a/security/nss/nss-tool/enc/enctool.cc +++ b/security/nss/nss-tool/enc/enctool.cc @@ -271,7 +271,6 @@ bool EncTool::DoCipher(std::string file_name, std::string out_file, if (file_name.empty()) { std::vector<uint8_t> data = ReadInputData(""); std::vector<uint8_t> out(data.size() + 16); - SECStatus rv; if (encrypt) { rv = PK11_Encrypt(symKey.get(), cipher_mech_, params.get(), out.data(), &outLen, data.size() + 16, data.data(), data.size()); diff --git a/security/nss/tests/all.sh b/security/nss/tests/all.sh index 3a02debef..f8a777fb3 100755 --- a/security/nss/tests/all.sh +++ b/security/nss/tests/all.sh @@ -309,7 +309,7 @@ TESTS=${NSS_TESTS:-$tests} ALL_TESTS=${TESTS} -nss_ssl_tests="crl iopr policy" +nss_ssl_tests="crl iopr policy normal_normal" if [ $NO_INIT_SUPPORT -eq 0 ]; then nss_ssl_tests="$nss_ssl_tests fips_normal normal_fips" fi diff --git a/security/nss/tests/bogo/bogo.sh b/security/nss/tests/bogo/bogo.sh index d1a93bf9b..4fccb845b 100755 --- a/security/nss/tests/bogo/bogo.sh +++ b/security/nss/tests/bogo/bogo.sh @@ -25,7 +25,7 @@ bogo_init() BORING=${BORING:=boringssl} if [ ! -d "$BORING" ]; then git clone -q https://boringssl.googlesource.com/boringssl "$BORING" - git -C "$BORING" checkout -q a513e86c1ebb1383930c9e504bdabcc302a85f30 + git -C "$BORING" checkout -q ec55dc15d3a39e5f1a58bfd79148729f38f6acb4 fi SCRIPTNAME="bogo.sh" @@ -39,11 +39,12 @@ bogo_cleanup() . common/cleanup.sh } -cd "$(dirname "$0")" -SOURCE_DIR="$PWD"/../.. +cd ../ +cwd=$(cd $(dirname $0); pwd -P) +SOURCE_DIR="$cwd"/.. bogo_init (cd "$BORING"/ssl/test/runner; - GOPATH="$PWD" go test -pipe -shim-path "${BINDIR}"/nss_bogo_shim \ + GOPATH="$cwd" go test -pipe -shim-path "${BINDIR}"/nss_bogo_shim \ -loose-errors -allow-unimplemented \ -shim-config "${SOURCE_DIR}/gtests/nss_bogo_shim/config.json") \ 2>bogo.errors | tee bogo.log diff --git a/security/nss/tests/cert/cert.sh b/security/nss/tests/cert/cert.sh index d1a9148a9..34006efd1 100755 --- a/security/nss/tests/cert/cert.sh +++ b/security/nss/tests/cert/cert.sh @@ -1060,6 +1060,25 @@ cert_extended_ssl() # -d "${PROFILEDIR}" -i "${CLIENT_CADIR}/clientCA-ecmixed.ca.cert" \ # 2>&1 + # Check that a repeated import with a different nickname doesn't change the + # nickname of the existing cert (bug 1458518). + # We want to search for the results using grep, to avoid subset matches, + # we'll use one of the longer nicknames for testing. + # (Because "grep -w hostname" matches "grep -w hostname-dsamixed") + MYDBPASS="-d ${PROFILEDIR} -f ${R_PWFILE}" + TESTNAME="Ensure there's exactly one match for ${CERTNAME}-dsamixed" + cert_check_nickname_exists "$MYDBPASS" "${CERTNAME}-dsamixed" 0 1 "${TESTNAME}" + + CU_ACTION="Repeated import of $CERTNAME's mixed DSA Cert with different nickname" + certu -A -n "${CERTNAME}-repeated-dsamixed" -t "u,u,u" -d "${PROFILEDIR}" \ + -f "${R_PWFILE}" -i "${CERTNAME}-dsamixed.cert" 2>&1 + + TESTNAME="Ensure there's still exactly one match for ${CERTNAME}-dsamixed" + cert_check_nickname_exists "$MYDBPASS" "${CERTNAME}-dsamixed" 0 1 "${TESTNAME}" + + TESTNAME="Ensure there's zero matches for ${CERTNAME}-repeated-dsamixed" + cert_check_nickname_exists "$MYDBPASS" "${CERTNAME}-repeated-dsamixed" 0 0 "${TESTNAME}" + echo "Importing all the server's own CA chain into the servers DB" for CA in `find ${SERVER_CADIR} -name "?*.ca.cert"` ; do @@ -1532,6 +1551,37 @@ cert_make_with_param() return 0 } +cert_check_nickname_exists() +{ + MYDIRPASS="$1" + MYCERTNAME="$2" + EXPECT="$3" + EXPECTCOUNT="$4" + MYTESTNAME="$5" + + echo certutil ${MYDIRPASS} -L + ${BINDIR}/certutil ${MYDIRPASS} -L + + RET=$? + if [ "${RET}" -ne "${EXPECT}" ]; then + CERTFAILED=1 + html_failed "${MYTESTNAME} - list" + cert_log "ERROR: ${MYTESTNAME} - list" + return 1 + fi + + LISTCOUNT=`${BINDIR}/certutil ${MYDIRPASS} -L | grep -wc ${MYCERTNAME}` + if [ "${LISTCOUNT}" -ne "${EXPECTCOUNT}" ]; then + CERTFAILED=1 + html_failed "${MYTESTNAME} - list and count" + cert_log "ERROR: ${MYTESTNAME} - list and count failed" + return 1 + fi + + html_passed "${MYTESTNAME}" + return 0 +} + cert_list_and_count_dns() { DIRPASS="$1" @@ -2425,6 +2475,31 @@ EOF RETEXPECTED=0 } +cert_test_orphan_key_reuse() +{ + CU_ACTION="Create orphan key in serverdir" + certu -G -f "${R_PWFILE}" -z ${R_NOISE_FILE} -d ${PROFILEDIR} + # Let's get the key ID of the first orphan key. + # The output of certutil -K (list keys) isn't well formatted. + # The initial <key-number> part may or may not contain white space, which + # makes the use of awk to filter the column unreliable. + # To fix that, we remove the initial <number> field using sed, then select the + # column that contains the key ID. + ORPHAN=`${BINDIR}/certutil -d ${PROFILEDIR} -K -f ${R_PWFILE} | \ + sed 's/^<.*>//g' | grep -w orphan | head -1 | awk '{print $2}'` + CU_ACTION="Create cert request for orphan key" + certu -R -f "${R_PWFILE}" -k ${ORPHAN} -s "CN=orphan" -d ${PROFILEDIR} \ + -o ${SERVERDIR}/orphan.req + # Ensure that creating the request really works by listing it, and check + # if listing was successful. + ${BINDIR}/pp -t certificate-request -i ${SERVERDIR}/orphan.req + RET=$? + if [ "$RET" -ne 0 ]; then + html_failed "Listing cert request for orphan key ($RET)" + cert_log "ERROR: Listing cert request for orphan key failed $RET" + fi +} + ############################## cert_cleanup ############################ # local shell function to finish this script (no exit since it might be # sourced) @@ -2444,6 +2519,7 @@ cert_all_CA cert_test_implicit_db_init cert_extended_ssl cert_ssl +cert_test_orphan_key_reuse cert_smime_client IS_FIPS_DISABLED=`certutil --build-flags |grep -cw NSS_FIPS_DISABLED` if [ $IS_FIPS_DISABLED -ne 0 ]; then diff --git a/security/nss/tests/common/init.sh b/security/nss/tests/common/init.sh index 933551e83..6aa22af8d 100644 --- a/security/nss/tests/common/init.sh +++ b/security/nss/tests/common/init.sh @@ -543,8 +543,8 @@ if [ -z "${INIT_SOURCED}" -o "${INIT_SOURCED}" != "TRUE" ]; then D_DISTRUST="Distrust.$version" D_RSAPSS="RSAPSS.$version" - # we need relative pathnames of these files abd directories, since our - # tools can't handle the unix style absolut pathnames on cygnus + # we need relative pathnames of these files and directories, since our + # tools can't handle the unix style absolute pathnames on cygnus R_CADIR=../CA R_SERVERDIR=../server @@ -565,6 +565,7 @@ if [ -z "${INIT_SOURCED}" -o "${INIT_SOURCED}" != "TRUE" ]; then R_NOLOGINDIR=../nologin R_SSLGTESTDIR=../ssl_gtests R_GTESTDIR=../gtests + R_RSAPSSDIR=../rsapss # # profiles are either paths or domains depending on the setting of @@ -581,6 +582,7 @@ if [ -z "${INIT_SOURCED}" -o "${INIT_SOURCED}" != "TRUE" ]; then P_R_EXT_SERVERDIR=${R_EXT_SERVERDIR} P_R_EXT_CLIENTDIR=${R_EXT_CLIENTDIR} P_R_IMPLICIT_INIT_DIR=${R_IMPLICIT_INIT_DIR} + P_R_RSAPSSDIR=${R_RSAPSSDIR} if [ -n "${MULTIACCESS_DBM}" ]; then P_R_CADIR="multiaccess:${D_CA}" P_R_ALICEDIR="multiaccess:${D_ALICE}" @@ -593,6 +595,7 @@ if [ -z "${INIT_SOURCED}" -o "${INIT_SOURCED}" != "TRUE" ]; then P_R_EXT_SERVERDIR="multiaccess:${D_EXT_SERVER}" P_R_EXT_CLIENTDIR="multiaccess:${D_EXT_CLIENT}" P_R_IMPLICIT_INIT_DIR="multiaccess:${D_IMPLICIT_INIT}" + P_R_RSAPSSDIR="multiaccess:${D_RSAPSS}" fi R_PWFILE=../tests.pw diff --git a/security/nss/tests/interop/interop.sh b/security/nss/tests/interop/interop.sh index 97c82e0ca..50c8bb3c1 100644 --- a/security/nss/tests/interop/interop.sh +++ b/security/nss/tests/interop/interop.sh @@ -25,7 +25,7 @@ interop_init() INTEROP=${INTEROP:=tls_interop} if [ ! -d "$INTEROP" ]; then git clone -q https://github.com/ttaubert/tls-interop "$INTEROP" - git -C "$INTEROP" checkout -q 07930b791827c1bdb6f4c19ca0aa63850fd59e22 + git -C "$INTEROP" checkout -q d07b28ac32b390dea1c9bcca5c56716247d23e5e fi INTEROP=$(cd "$INTEROP";pwd -P) diff --git a/security/nss/tests/ssl/ssl.sh b/security/nss/tests/ssl/ssl.sh index de867a4bd..9a63bd997 100755 --- a/security/nss/tests/ssl/ssl.sh +++ b/security/nss/tests/ssl/ssl.sh @@ -283,34 +283,30 @@ ssl_cov() echo "${testname}" | grep "EXPORT" > /dev/null EXP=$? - if [ "$ectype" = "ECC" ] ; then - echo "$SCRIPTNAME: skipping $testname (ECC only)" - else - echo "$SCRIPTNAME: running $testname ----------------------------" - VMAX="ssl3" - if [ "$testmax" = "TLS10" ]; then - VMAX="tls1.0" - fi - if [ "$testmax" = "TLS11" ]; then - VMAX="tls1.1" - fi - if [ "$testmax" = "TLS12" ]; then - VMAX="tls1.2" - fi - - echo "tstclnt -4 -p ${PORT} -h ${HOSTADDR} -c ${param} -V ${VMIN}:${VMAX} ${CLIENT_OPTIONS} \\" - echo " -f -d ${P_R_CLIENTDIR} $verbose -w nss < ${REQUEST_FILE}" - - rm ${TMP}/$HOST.tmp.$$ 2>/dev/null - ${PROFTOOL} ${BINDIR}/tstclnt -4 -p ${PORT} -h ${HOSTADDR} -c ${param} -V ${VMIN}:${VMAX} ${CLIENT_OPTIONS} -f \ - -d ${P_R_CLIENTDIR} $verbose -w nss < ${REQUEST_FILE} \ - >${TMP}/$HOST.tmp.$$ 2>&1 - ret=$? - cat ${TMP}/$HOST.tmp.$$ - rm ${TMP}/$HOST.tmp.$$ 2>/dev/null - html_msg $ret 0 "${testname}" \ - "produced a returncode of $ret, expected is 0" + echo "$SCRIPTNAME: running $testname ----------------------------" + VMAX="ssl3" + if [ "$testmax" = "TLS10" ]; then + VMAX="tls1.0" + fi + if [ "$testmax" = "TLS11" ]; then + VMAX="tls1.1" fi + if [ "$testmax" = "TLS12" ]; then + VMAX="tls1.2" + fi + + echo "tstclnt -4 -p ${PORT} -h ${HOSTADDR} -c ${param} -V ${VMIN}:${VMAX} ${CLIENT_OPTIONS} \\" + echo " -f -d ${P_R_CLIENTDIR} $verbose -w nss < ${REQUEST_FILE}" + + rm ${TMP}/$HOST.tmp.$$ 2>/dev/null + ${PROFTOOL} ${BINDIR}/tstclnt -4 -p ${PORT} -h ${HOSTADDR} -c ${param} -V ${VMIN}:${VMAX} ${CLIENT_OPTIONS} -f \ + -d ${P_R_CLIENTDIR} $verbose -w nss < ${REQUEST_FILE} \ + >${TMP}/$HOST.tmp.$$ 2>&1 + ret=$? + cat ${TMP}/$HOST.tmp.$$ + rm ${TMP}/$HOST.tmp.$$ 2>/dev/null + html_msg $ret 0 "${testname}" \ + "produced a returncode of $ret, expected is 0" done kill_selfserv @@ -335,8 +331,6 @@ ssl_auth() echo "$SCRIPTNAME: skipping $testname (non-FIPS only)" elif [ "$ectype" = "SNI" -a "$NORM_EXT" = "Extended Test" ] ; then echo "$SCRIPTNAME: skipping $testname for $NORM_EXT" - elif [ "$ectype" = "ECC" ] ; then - echo "$SCRIPTNAME: skipping $testname (ECC only)" else cparam=`echo $cparam | sed -e 's;_; ;g' -e "s/TestUser/$USER_NICKNAME/g" ` if [ "$ectype" = "SNI" ]; then @@ -550,8 +544,6 @@ ssl_stress() if [ "$ectype" = "SNI" -a "$NORM_EXT" = "Extended Test" ] ; then echo "$SCRIPTNAME: skipping $testname for $NORM_EXT" - elif [ "$ectype" = "ECC" ] ; then - echo "$SCRIPTNAME: skipping $testname (ECC only)" elif [ "${CLIENT_MODE}" = "fips" -a "${CAUTH}" -ne 0 ] ; then echo "$SCRIPTNAME: skipping $testname (non-FIPS only)" elif [ "${NOLOGIN}" -eq 0 ] && \ @@ -615,9 +607,7 @@ ssl_crl_ssl() ignore_blank_lines ${SSLAUTH} | \ while read ectype value sparam cparam testname do - if [ "$ectype" = "ECC" ] ; then - echo "$SCRIPTNAME: skipping $testname (ECC only)" - elif [ "$ectype" = "SNI" ]; then + if [ "$ectype" = "SNI" ]; then continue else servarg=`echo $sparam | awk '{r=split($0,a,"-r") - 1;print r;}'` @@ -729,43 +719,39 @@ ssl_policy() do VMIN="ssl3" - if [ "$ectype" = "ECC" ] ; then - echo "$SCRIPTNAME: skipping $testname (ECC only)" - else - echo "$SCRIPTNAME: running $testname ----------------------------" - VMAX="ssl3" - if [ "$testmax" = "TLS10" ]; then - VMAX="tls1.0" - fi - if [ "$testmax" = "TLS11" ]; then - VMAX="tls1.1" - fi - if [ "$testmax" = "TLS12" ]; then - VMAX="tls1.2" - fi + echo "$SCRIPTNAME: running $testname ----------------------------" + VMAX="ssl3" + if [ "$testmax" = "TLS10" ]; then + VMAX="tls1.0" + fi + if [ "$testmax" = "TLS11" ]; then + VMAX="tls1.1" + fi + if [ "$testmax" = "TLS12" ]; then + VMAX="tls1.2" + fi - # load the policy - policy=`echo ${policy} | sed -e 's;_; ;g'` - setup_policy "$policy" ${P_R_CLIENTDIR} + # load the policy + policy=`echo ${policy} | sed -e 's;_; ;g'` + setup_policy "$policy" ${P_R_CLIENTDIR} - echo "tstclnt -4 -p ${PORT} -h ${HOSTADDR} -c ${param} -V ${VMIN}:${VMAX} ${CLIENT_OPTIONS} \\" - echo " -f -d ${P_R_CLIENTDIR} $verbose -w nss < ${REQUEST_FILE}" + echo "tstclnt -4 -p ${PORT} -h ${HOSTADDR} -c ${param} -V ${VMIN}:${VMAX} ${CLIENT_OPTIONS} \\" + echo " -f -d ${P_R_CLIENTDIR} $verbose -w nss < ${REQUEST_FILE}" - rm ${TMP}/$HOST.tmp.$$ 2>/dev/null - ${PROFTOOL} ${BINDIR}/tstclnt -4 -p ${PORT} -h ${HOSTADDR} -c ${param} -V ${VMIN}:${VMAX} ${CLIENT_OPTIONS} -f \ - -d ${P_R_CLIENTDIR} $verbose -w nss < ${REQUEST_FILE} \ - >${TMP}/$HOST.tmp.$$ 2>&1 - ret=$? - cat ${TMP}/$HOST.tmp.$$ - rm ${TMP}/$HOST.tmp.$$ 2>/dev/null + rm ${TMP}/$HOST.tmp.$$ 2>/dev/null + ${PROFTOOL} ${BINDIR}/tstclnt -4 -p ${PORT} -h ${HOSTADDR} -c ${param} -V ${VMIN}:${VMAX} ${CLIENT_OPTIONS} -f \ + -d ${P_R_CLIENTDIR} $verbose -w nss < ${REQUEST_FILE} \ + >${TMP}/$HOST.tmp.$$ 2>&1 + ret=$? + cat ${TMP}/$HOST.tmp.$$ + rm ${TMP}/$HOST.tmp.$$ 2>/dev/null - #workaround for bug #402058 - [ $ret -ne 0 ] && ret=1 - [ ${value} -ne 0 ] && value=1 + #workaround for bug #402058 + [ $ret -ne 0 ] && ret=1 + [ ${value} -ne 0 ] && value=1 - html_msg $ret ${value} "${testname}" \ - "produced a returncode of $ret, expected is ${value}" - fi + html_msg $ret ${value} "${testname}" \ + "produced a returncode of $ret, expected is ${value}" done cp ${P_R_CLIENTDIR}/pkcs11.txt.sav ${P_R_CLIENTDIR}/pkcs11.txt @@ -1004,9 +990,7 @@ ssl_crl_cache() while read ectype value sparam cparam testname do [ "$ectype" = "" ] && continue - if [ "$ectype" = "ECC" ] ; then - echo "$SCRIPTNAME: skipping $testname (ECC only)" - elif [ "$ectype" = "SNI" ]; then + if [ "$ectype" = "SNI" ]; then continue else servarg=`echo $sparam | awk '{r=split($0,a,"-r") - 1;print r;}'` diff --git a/security/nss/tests/ssl_gtests/ssl_gtests.sh b/security/nss/tests/ssl_gtests/ssl_gtests.sh index fd678bf59..eef77f16f 100755 --- a/security/nss/tests/ssl_gtests/ssl_gtests.sh +++ b/security/nss/tests/ssl_gtests/ssl_gtests.sh @@ -47,6 +47,7 @@ make_cert() { dsa) type_args='-g 1024' ;; rsa) type_args='-g 1024' ;; rsa2048) type_args='-g 2048';type=rsa ;; + rsa8192) type_args='-g 8192';type=rsa ;; rsapss) type_args='-g 1024 --pss';type=rsa ;; p256) type_args='-q nistp256';type=ec ;; p384) type_args='-q secp384r1';type=ec ;; @@ -83,6 +84,7 @@ ssl_gtest_certs() { make_cert client rsa sign make_cert rsa rsa sign kex make_cert rsa2048 rsa2048 sign kex + make_cert rsa8192 rsa8192 sign kex make_cert rsa_sign rsa sign make_cert rsa_pss rsapss sign make_cert rsa_decrypt rsa kex diff --git a/security/nss/tests/tools/TestRSAPSS.p12 b/security/nss/tests/tools/TestRSAPSS.p12 Binary files differnew file mode 100644 index 000000000..91473891c --- /dev/null +++ b/security/nss/tests/tools/TestRSAPSS.p12 diff --git a/security/nss/tests/tools/tools.sh b/security/nss/tests/tools/tools.sh index 11be23e05..7cf1ef73f 100644 --- a/security/nss/tests/tools/tools.sh +++ b/security/nss/tests/tools/tools.sh @@ -105,6 +105,7 @@ tools_init() mkdir -p ${TOOLSDIR}/data cp ${QADIR}/tools/TestOldCA.p12 ${TOOLSDIR}/data cp ${QADIR}/tools/TestOldAES128CA.p12 ${TOOLSDIR}/data + cp ${QADIR}/tools/TestRSAPSS.p12 ${TOOLSDIR}/data cd ${TOOLSDIR} } @@ -436,6 +437,23 @@ tools_p12_import_old_files() check_tmpfile } +tools_p12_import_rsa_pss_private_key() +{ + echo "$SCRIPTNAME: Importing RSA-PSS private key from PKCS#12 file --------------" + ${BINDIR}/pk12util -i ${TOOLSDIR}/data/TestRSAPSS.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '' 2>&1 + ret=$? + html_msg $ret 0 "Importing RSA-PSS private key from PKCS#12 file" + check_tmpfile + + # Check if RSA-PSS identifier is included in the key listing + ${BINDIR}/certutil -d ${P_R_COPYDIR} -K -f ${R_PWFILE} | grep '^<[0-9 ]*> *rsaPss' + ret=$? + html_msg $ret 0 "Listing RSA-PSS private key imported from PKCS#12 file" + check_tmpfile + + return $ret +} + ############################## tools_p12 ############################### # local shell function to test basic functionality of pk12util ######################################################################## @@ -448,6 +466,9 @@ tools_p12() tools_p12_export_with_none_ciphers tools_p12_export_with_invalid_ciphers tools_p12_import_old_files + if [ "${TEST_MODE}" = "SHARED_DB" ] ; then + tools_p12_import_rsa_pss_private_key + fi } ############################## tools_sign ############################## diff --git a/services/sync/Weave.js b/services/sync/Weave.js index a414fa083..de131d08a 100644 --- a/services/sync/Weave.js +++ b/services/sync/Weave.js @@ -72,13 +72,6 @@ WeaveService.prototype = { Ci.nsISupportsWeakReference]), ensureLoaded: function () { -#ifndef MC_PALEMOON - // If we are loaded and not using FxA, load the migration module. - if (!this.fxAccountsEnabled) { - Cu.import("resource://services-sync/FxaMigrator.jsm"); - } -#endif - Components.utils.import("resource://services-sync/main.js"); // Side-effect of accessing the service is that it is instantiated. diff --git a/services/sync/modules/FxaMigrator.jsm b/services/sync/modules/FxaMigrator.jsm deleted file mode 100644 index 735b60144..000000000 --- a/services/sync/modules/FxaMigrator.jsm +++ /dev/null @@ -1,99 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -"use strict;" - -// Note that this module used to supervise the step-by-step migration from -// a legacy Sync account to a FxA-based Sync account. In bug 1205928, this -// changed to automatically disconnect the legacy Sync account. - -const {classes: Cc, interfaces: Ci, results: Cr, utils: Cu} = Components; - -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); -Cu.import("resource://gre/modules/Log.jsm"); -Cu.import("resource://gre/modules/Services.jsm"); - -XPCOMUtils.defineLazyGetter(this, "WeaveService", function() { - return Cc["@mozilla.org/weave/service;1"] - .getService(Components.interfaces.nsISupports) - .wrappedJSObject; -}); - -XPCOMUtils.defineLazyModuleGetter(this, "Weave", - "resource://services-sync/main.js"); - -// We send this notification when we perform the disconnection. The browser -// window will show a one-off notification bar. -const OBSERVER_STATE_CHANGE_TOPIC = "fxa-migration:state-changed"; - -const OBSERVER_TOPICS = [ - "xpcom-shutdown", - "weave:eol", -]; - -function Migrator() { - // Leave the log-level as Debug - Sync will setup log appenders such that - // these messages generally will not be seen unless other log related - // prefs are set. - this.log.level = Log.Level.Debug; - - for (let topic of OBSERVER_TOPICS) { - Services.obs.addObserver(this, topic, false); - } -} - -Migrator.prototype = { - log: Log.repository.getLogger("Sync.SyncMigration"), - - finalize() { - for (let topic of OBSERVER_TOPICS) { - Services.obs.removeObserver(this, topic); - } - }, - - observe(subject, topic, data) { - this.log.debug("observed " + topic); - switch (topic) { - case "xpcom-shutdown": - this.finalize(); - break; - - default: - // this notification when configured with legacy Sync means we want to - // disconnect - if (!WeaveService.fxAccountsEnabled) { - this.log.info("Disconnecting from legacy Sync"); - // Set up an observer for when the disconnection is complete. - let observe; - Services.obs.addObserver(observe = () => { - this.log.info("observed that startOver is complete"); - Services.obs.removeObserver(observe, "weave:service:start-over:finish"); - // Send the notification for the UI. - Services.obs.notifyObservers(null, OBSERVER_STATE_CHANGE_TOPIC, null); - }, "weave:service:start-over:finish", false); - - // Do the disconnection. - Weave.Service.startOver(); - } - } - }, - - get learnMoreLink() { - try { - var url = Services.prefs.getCharPref("app.support.baseURL"); - } catch (err) { - return null; - } - url += "sync-upgrade"; - let sb = Services.strings.createBundle("chrome://weave/locale/services/sync.properties"); - return { - text: sb.GetStringFromName("sync.eol.learnMore.label"), - href: Services.urlFormatter.formatURL(url), - }; - }, -}; - -// We expose a singleton -this.EXPORTED_SYMBOLS = ["fxaMigrator"]; -var fxaMigrator = new Migrator(); diff --git a/services/sync/moz.build b/services/sync/moz.build index 83c39274a..5e5de10b7 100644 --- a/services/sync/moz.build +++ b/services/sync/moz.build @@ -26,7 +26,6 @@ EXTRA_JS_MODULES['services-sync'] += [ 'modules/browserid_identity.js', 'modules/collection_validator.js', 'modules/engines.js', - 'modules/FxaMigrator.jsm', 'modules/identity.js', 'modules/jpakeclient.js', 'modules/keys.js', diff --git a/services/sync/tests/unit/test_fxa_migration.js b/services/sync/tests/unit/test_fxa_migration.js deleted file mode 100644 index 0ca770e28..000000000 --- a/services/sync/tests/unit/test_fxa_migration.js +++ /dev/null @@ -1,117 +0,0 @@ -// We change this pref before anything else initializes -Services.prefs.setCharPref("identity.fxaccounts.auth.uri", "http://localhost"); - -// Test the FxAMigration module -Cu.import("resource://services-sync/FxaMigrator.jsm"); -Cu.import("resource://gre/modules/Promise.jsm"); - -// Set our username pref early so sync initializes with the legacy provider. -Services.prefs.setCharPref("services.sync.username", "foo"); -// And ensure all debug messages end up being printed. -Services.prefs.setCharPref("services.sync.log.appender.dump", "Debug"); - -// Now import sync -Cu.import("resource://services-sync/service.js"); -Cu.import("resource://services-sync/record.js"); -Cu.import("resource://services-sync/util.js"); - -// And reset the username. -Services.prefs.clearUserPref("services.sync.username"); - -Cu.import("resource://testing-common/services/sync/utils.js"); -Cu.import("resource://testing-common/services/common/logging.js"); -Cu.import("resource://testing-common/services/sync/rotaryengine.js"); - -const FXA_USERNAME = "someone@somewhere"; - -// Utilities -function promiseOneObserver(topic) { - return new Promise((resolve, reject) => { - let observer = function(subject, topic, data) { - Services.obs.removeObserver(observer, topic); - resolve({ subject: subject, data: data }); - } - Services.obs.addObserver(observer, topic, false); - }); -} - -function promiseStopServer(server) { - return new Promise((resolve, reject) => { - server.stop(resolve); - }); -} - - -// Helpers -function configureLegacySync() { - let engine = new RotaryEngine(Service); - engine.enabled = true; - Svc.Prefs.set("registerEngines", engine.name); - Svc.Prefs.set("log.logger.engine.rotary", "Trace"); - - let contents = { - meta: {global: {engines: {rotary: {version: engine.version, - syncID: engine.syncID}}}}, - crypto: {}, - rotary: {} - }; - - const USER = "foo"; - const PASSPHRASE = "abcdeabcdeabcdeabcdeabcdea"; - - setBasicCredentials(USER, "password", PASSPHRASE); - - let onRequest = function(request, response) { - // ideally we'd only do this while a legacy user is configured, but WTH. - response.setHeader("x-weave-alert", JSON.stringify({code: "soft-eol"})); - } - let server = new SyncServer({onRequest: onRequest}); - server.registerUser(USER, "password"); - server.createContents(USER, contents); - server.start(); - - Service.serverURL = server.baseURI; - Service.clusterURL = server.baseURI; - Service.identity.username = USER; - Service._updateCachedURLs(); - - Service.engineManager._engines[engine.name] = engine; - - return [engine, server]; -} - -add_task(function *testMigrationUnlinks() { - - // when we do a .startOver we want the new provider. - let oldValue = Services.prefs.getBoolPref("services.sync-testing.startOverKeepIdentity"); - Services.prefs.setBoolPref("services.sync-testing.startOverKeepIdentity", false); - - do_register_cleanup(() => { - Services.prefs.setBoolPref("services.sync-testing.startOverKeepIdentity", oldValue) - }); - - // Arrange for a legacy sync user. - let [engine, server] = configureLegacySync(); - - // Start a sync - this will cause an EOL notification which the migrator's - // observer will notice. - let promiseMigration = promiseOneObserver("fxa-migration:state-changed"); - let promiseStartOver = promiseOneObserver("weave:service:start-over:finish"); - _("Starting sync"); - Service.sync(); - _("Finished sync"); - - yield promiseStartOver; - yield promiseMigration; - // We should have seen the observer and Sync should no longer be configured. - Assert.ok(!Services.prefs.prefHasUserValue("services.sync.username")); -}); - -function run_test() { - initTestLogging(); - do_register_cleanup(() => { - fxaMigrator.finalize(); - Svc.Prefs.resetBranch(""); - }); - run_next_test(); -} diff --git a/services/sync/tests/unit/xpcshell.ini b/services/sync/tests/unit/xpcshell.ini index 609003ce9..4c0f0e7b7 100644 --- a/services/sync/tests/unit/xpcshell.ini +++ b/services/sync/tests/unit/xpcshell.ini @@ -190,9 +190,6 @@ support-files = prefs_test_prefs_store.js [test_warn_on_truncated_response.js] [test_postqueue.js] -# FxA migration -[test_fxa_migration.js] - # Synced tabs. [test_syncedtabs.js] diff --git a/startupcache/StartupCache.cpp b/startupcache/StartupCache.cpp index 371f4795c..d4102efa1 100644 --- a/startupcache/StartupCache.cpp +++ b/startupcache/StartupCache.cpp @@ -242,31 +242,6 @@ StartupCache::LoadArchive(enum TelemetrifyAge flag) mArchive = new nsZipArchive(); rv = mArchive->OpenArchive(mFile); - if (NS_FAILED(rv) || flag == IGNORE_AGE) - return rv; - - nsCString comment; - if (!mArchive->GetComment(comment)) { - return rv; - } - - const char *data; - size_t len = NS_CStringGetData(comment, &data); - PRTime creationStamp; - // We might not have a comment if the startup cache file was created - // before we started recording creation times in the comment. - if (len == sizeof(creationStamp)) { - memcpy(&creationStamp, data, len); - PRTime current = PR_Now(); - int64_t diff = current - creationStamp; - - // We can't use AccumulateTimeDelta here because we have no way of - // reifying a TimeStamp from creationStamp. - int64_t usec_per_hour = PR_USEC_PER_SEC * int64_t(3600); - int64_t hour_diff = (diff + usec_per_hour - 1) / usec_per_hour; - mozilla::Telemetry::Accumulate(Telemetry::STARTUP_CACHE_AGE_HOURS, - hour_diff); - } return rv; } @@ -497,7 +472,6 @@ StartupCache::InvalidateCache() if (NS_FAILED(rv) && rv != NS_ERROR_FILE_TARGET_DOES_NOT_EXIST && rv != NS_ERROR_FILE_NOT_FOUND) { gIgnoreDiskCache = true; - mozilla::Telemetry::Accumulate(Telemetry::STARTUP_CACHE_INVALID, true); return; } gIgnoreDiskCache = false; diff --git a/storage/TelemetryVFS.cpp b/storage/TelemetryVFS.cpp index 5a025e29e..eb102a046 100644 --- a/storage/TelemetryVFS.cpp +++ b/storage/TelemetryVFS.cpp @@ -101,12 +101,6 @@ public: ~IOThreadAutoTimer() { - TimeStamp end(TimeStamp::Now()); - uint32_t mainThread = NS_IsMainThread() ? 1 : 0; - if (id != Telemetry::HistogramCount) { - Telemetry::AccumulateTimeDelta(static_cast<Telemetry::ID>(id + mainThread), - start, end); - } // We don't report SQLite I/O on Windows because we have a comprehensive // mechanism for intercepting I/O on that platform that captures a superset // of the data captured here. @@ -361,8 +355,6 @@ xRead(sqlite3_file *pFile, void *zBuf, int iAmt, sqlite_int64 iOfst) int rc; rc = p->pReal->pMethods->xRead(p->pReal, zBuf, iAmt, iOfst); // sqlite likes to read from empty files, this is normal, ignore it. - if (rc != SQLITE_IOERR_SHORT_READ) - Telemetry::Accumulate(p->histograms->readB, rc == SQLITE_OK ? iAmt : 0); return rc; } @@ -395,7 +387,6 @@ xWrite(sqlite3_file *pFile, const void *zBuf, int iAmt, sqlite_int64 iOfst) } } rc = p->pReal->pMethods->xWrite(p->pReal, zBuf, iAmt, iOfst); - Telemetry::Accumulate(p->histograms->writeB, rc == SQLITE_OK ? iAmt : 0); if (p->quotaObject && rc != SQLITE_OK) { NS_WARNING("xWrite failed on a quota-controlled file, attempting to " "update its current size..."); @@ -416,7 +407,6 @@ xTruncate(sqlite3_file *pFile, sqlite_int64 size) IOThreadAutoTimer ioTimer(Telemetry::MOZ_SQLITE_TRUNCATE_MS); telemetry_file *p = (telemetry_file *)pFile; int rc; - Telemetry::AutoTimer<Telemetry::MOZ_SQLITE_TRUNCATE_MS> timer; if (p->quotaObject) { if (p->fileChunkSize > 0) { // Round up to the smallest multiple of the chunk size that will hold all @@ -618,7 +608,6 @@ xOpen(sqlite3_vfs* vfs, const char *zName, sqlite3_file* pFile, { IOThreadAutoTimer ioTimer(Telemetry::MOZ_SQLITE_OPEN_MS, IOInterposeObserver::OpCreateOrOpen); - Telemetry::AutoTimer<Telemetry::MOZ_SQLITE_OPEN_MS> timer; sqlite3_vfs *orig_vfs = static_cast<sqlite3_vfs*>(vfs->pAppData); int rc; telemetry_file *p = (telemetry_file *)pFile; diff --git a/storage/mozStorageAsyncStatementExecution.cpp b/storage/mozStorageAsyncStatementExecution.cpp index e1d344aca..00f584f03 100644 --- a/storage/mozStorageAsyncStatementExecution.cpp +++ b/storage/mozStorageAsyncStatementExecution.cpp @@ -226,7 +226,6 @@ bool AsyncExecuteStatements::executeStatement(sqlite3_stmt *aStatement) { mMutex.AssertNotCurrentThreadOwns(); - Telemetry::AutoTimer<Telemetry::MOZ_STORAGE_ASYNC_REQUESTS_MS> finallySendExecutionDuration(mRequestStartDate); while (true) { // lock the sqlite mutex so sqlite3_errmsg cannot change SQLiteMutexAutoLock lockedScope(mDBMutex); @@ -235,14 +234,12 @@ AsyncExecuteStatements::executeStatement(sqlite3_stmt *aStatement) // Stop if we have no more results. if (rc == SQLITE_DONE) { - Telemetry::Accumulate(Telemetry::MOZ_STORAGE_ASYNC_REQUESTS_SUCCESS, true); return false; } // If we got results, we can return now. if (rc == SQLITE_ROW) { - Telemetry::Accumulate(Telemetry::MOZ_STORAGE_ASYNC_REQUESTS_SUCCESS, true); return true; } @@ -258,7 +255,6 @@ AsyncExecuteStatements::executeStatement(sqlite3_stmt *aStatement) // Set an error state. mState = ERROR; - Telemetry::Accumulate(Telemetry::MOZ_STORAGE_ASYNC_REQUESTS_SUCCESS, false); // Construct the error message before giving up the mutex (which we cannot // hold during the call to notifyError). diff --git a/toolkit/components/alerts/nsAlertsService.cpp b/toolkit/components/alerts/nsAlertsService.cpp index dd67ad983..73dbb265c 100644 --- a/toolkit/components/alerts/nsAlertsService.cpp +++ b/toolkit/components/alerts/nsAlertsService.cpp @@ -6,7 +6,6 @@ #include "mozilla/dom/ContentChild.h" #include "mozilla/dom/PermissionMessageUtils.h" #include "mozilla/Preferences.h" -#include "mozilla/Telemetry.h" #include "nsXULAppAPI.h" #include "nsAlertsService.h" @@ -292,9 +291,6 @@ NS_IMETHODIMP nsAlertsService::SetManualDoNotDisturb(bool aDoNotDisturb) NS_ENSURE_TRUE(alertsDND, NS_ERROR_NOT_IMPLEMENTED); nsresult rv = alertsDND->SetManualDoNotDisturb(aDoNotDisturb); - if (NS_SUCCEEDED(rv)) { - Telemetry::Accumulate(Telemetry::ALERTS_SERVICE_DND_ENABLED, 1); - } return rv; #endif } diff --git a/toolkit/components/downloads/ApplicationReputation.cpp b/toolkit/components/downloads/ApplicationReputation.cpp index 7bd219dbf..a369ca884 100644 --- a/toolkit/components/downloads/ApplicationReputation.cpp +++ b/toolkit/components/downloads/ApplicationReputation.cpp @@ -34,7 +34,6 @@ #include "mozilla/LoadContext.h" #include "mozilla/Preferences.h" #include "mozilla/Services.h" -#include "mozilla/Telemetry.h" #include "mozilla/TimeStamp.h" #include "nsAutoPtr.h" @@ -59,7 +58,6 @@ using mozilla::DocShellOriginAttributes; using mozilla::PrincipalOriginAttributes; using mozilla::Preferences; using mozilla::TimeStamp; -using mozilla::Telemetry::Accumulate; using safe_browsing::ClientDownloadRequest; using safe_browsing::ClientDownloadRequest_CertificateChain; using safe_browsing::ClientDownloadRequest_Resource; @@ -356,7 +354,6 @@ PendingDBLookup::HandleEvent(const nsACString& tables) Preferences::GetCString(PREF_DOWNLOAD_BLOCK_TABLE, &blockList); if (!mAllowlistOnly && FindInReadable(blockList, tables)) { mPendingLookup->mBlocklistCount++; - Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_LOCAL, BLOCK_LIST); LOG(("Found principal %s on blocklist [this = %p]", mSpec.get(), this)); return mPendingLookup->OnComplete(true, NS_OK, nsIApplicationReputationService::VERDICT_DANGEROUS); @@ -366,13 +363,11 @@ PendingDBLookup::HandleEvent(const nsACString& tables) Preferences::GetCString(PREF_DOWNLOAD_ALLOW_TABLE, &allowList); if (FindInReadable(allowList, tables)) { mPendingLookup->mAllowlistCount++; - Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_LOCAL, ALLOW_LIST); LOG(("Found principal %s on allowlist [this = %p]", mSpec.get(), this)); // Don't call onComplete, since blocklisting trumps allowlisting } else { LOG(("Didn't find principal %s on any list [this = %p]", mSpec.get(), this)); - Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_LOCAL, NO_LIST); } return mPendingLookup->LookupNext(); } @@ -1000,7 +995,7 @@ PendingLookup::GetSpecHash(nsACString& aSpec, nsACString& hexEncodedHash) static const char* const hex = "0123456789ABCDEF"; hexEncodedHash.SetCapacity(2 * binaryHash.Length()); for (size_t i = 0; i < binaryHash.Length(); ++i) { - auto c = static_cast<const unsigned char>(binaryHash[i]); + auto c = static_cast<unsigned char>(binaryHash[i]); hexEncodedHash.Append(hex[(c >> 4) & 0x0F]); hexEncodedHash.Append(hex[c & 0x0F]); } @@ -1144,8 +1139,6 @@ PendingLookup::OnComplete(bool shouldBlock, nsresult rv, uint32_t verdict) mTimeoutTimer = nullptr; } - Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_SHOULD_BLOCK, - shouldBlock); double t = (TimeStamp::Now() - mStartTime).ToMilliseconds(); LOG(("Application Reputation verdict is %lu, obtained in %f ms [this = %p]", verdict, t, this)); @@ -1393,8 +1386,6 @@ PendingLookup::Notify(nsITimer* aTimer) { LOG(("Remote lookup timed out [this = %p]", this)); MOZ_ASSERT(aTimer == mTimeoutTimer); - Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_REMOTE_LOOKUP_TIMEOUT, - true); mChannel->Cancel(NS_ERROR_NET_TIMEOUT); mTimeoutTimer->Cancel(); return NS_OK; @@ -1457,8 +1448,6 @@ PendingLookup::OnStopRequest(nsIRequest *aRequest, bool shouldBlock = false; uint32_t verdict = nsIApplicationReputationService::VERDICT_SAFE; - Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_REMOTE_LOOKUP_TIMEOUT, - false); nsresult rv = OnStopRequestInternal(aRequest, aContext, aResult, &shouldBlock, &verdict); @@ -1473,8 +1462,6 @@ PendingLookup::OnStopRequestInternal(nsIRequest *aRequest, bool* aShouldBlock, uint32_t* aVerdict) { if (NS_FAILED(aResult)) { - Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_SERVER, - SERVER_RESPONSE_FAILED); return aResult; } @@ -1483,22 +1470,16 @@ PendingLookup::OnStopRequestInternal(nsIRequest *aRequest, nsresult rv; nsCOMPtr<nsIHttpChannel> channel = do_QueryInterface(aRequest, &rv); if (NS_FAILED(rv)) { - Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_SERVER, - SERVER_RESPONSE_FAILED); return rv; } uint32_t status = 0; rv = channel->GetResponseStatus(&status); if (NS_FAILED(rv)) { - Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_SERVER, - SERVER_RESPONSE_FAILED); return rv; } if (status != 200) { - Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_SERVER, - SERVER_RESPONSE_FAILED); return NS_ERROR_NOT_AVAILABLE; } @@ -1506,16 +1487,9 @@ PendingLookup::OnStopRequestInternal(nsIRequest *aRequest, safe_browsing::ClientDownloadResponse response; if (!response.ParseFromString(buf)) { LOG(("Invalid protocol buffer response [this = %p]: %s", this, buf.c_str())); - Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_SERVER, - SERVER_RESPONSE_INVALID); return NS_ERROR_CANNOT_CONVERT_DATA; } - Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_SERVER, - SERVER_RESPONSE_VALID); - // Clamp responses 0-7, we only know about 0-4 for now. - Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_SERVER_VERDICT, - std::min<uint32_t>(response.verdict(), 7)); switch(response.verdict()) { case safe_browsing::ClientDownloadResponse::DANGEROUS: *aShouldBlock = Preferences::GetBool(PREF_BLOCK_DANGEROUS, true); @@ -1583,11 +1557,8 @@ ApplicationReputationService::QueryReputation( NS_ENSURE_ARG_POINTER(aQuery); NS_ENSURE_ARG_POINTER(aCallback); - Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_COUNT, true); nsresult rv = QueryReputationInternal(aQuery, aCallback); if (NS_FAILED(rv)) { - Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_SHOULD_BLOCK, - false); aCallback->OnComplete(false, rv, nsIApplicationReputationService::VERDICT_SAFE); } diff --git a/toolkit/components/osfile/modules/osfile_async_front.jsm b/toolkit/components/osfile/modules/osfile_async_front.jsm index 964e53084..93c7e66d6 100644 --- a/toolkit/components/osfile/modules/osfile_async_front.jsm +++ b/toolkit/components/osfile/modules/osfile_async_front.jsm @@ -56,7 +56,6 @@ Cu.import("resource://gre/modules/Task.jsm", this); // The implementation of communications Cu.import("resource://gre/modules/PromiseWorker.jsm", this); Cu.import("resource://gre/modules/Services.jsm", this); -Cu.import("resource://gre/modules/TelemetryStopwatch.jsm", this); Cu.import("resource://gre/modules/AsyncShutdown.jsm", this); var Native = Cu.import("resource://gre/modules/osfile/osfile_native.jsm", {}); @@ -1171,13 +1170,10 @@ File.writeAtomic = function writeAtomic(path, buffer, options = {}) { if (isTypedArray(buffer) && (!("bytes" in options))) { options.bytes = buffer.byteLength; }; - let refObj = {}; - TelemetryStopwatch.start("OSFILE_WRITEATOMIC_JANK_MS", refObj); let promise = Scheduler.post("writeAtomic", [Type.path.toMsg(path), Type.void_t.in_ptr.toMsg(buffer), options], [options, buffer, path]); - TelemetryStopwatch.finish("OSFILE_WRITEATOMIC_JANK_MS", refObj); return promise; }; diff --git a/toolkit/components/perfmonitoring/nsPerformanceStats.cpp b/toolkit/components/perfmonitoring/nsPerformanceStats.cpp index eb924de46..33aeaf7c2 100644 --- a/toolkit/components/perfmonitoring/nsPerformanceStats.cpp +++ b/toolkit/components/perfmonitoring/nsPerformanceStats.cpp @@ -27,7 +27,6 @@ #include "mozilla/ArrayUtils.h" #include "mozilla/EventStateManager.h" #include "mozilla/Services.h" -#include "mozilla/Telemetry.h" #if defined(XP_WIN) #include <processthreadsapi.h> @@ -957,22 +956,7 @@ nsPerformanceStatsService::SetJankAlertBufferingDelay(uint32_t value) { nsresult nsPerformanceStatsService::UpdateTelemetry() { - // Promote everything to floating-point explicitly before dividing. - const double processStayed = mProcessStayed; - const double processMoved = mProcessMoved; - - if (processStayed <= 0 || processMoved <= 0 || processStayed + processMoved <= 0) { - // Overflow/underflow/nothing to report - return NS_OK; - } - - const double proportion = (100 * processStayed) / (processStayed + processMoved); - if (proportion < 0 || proportion > 100) { - // Overflow/underflow - return NS_OK; - } - - mozilla::Telemetry::Accumulate(mozilla::Telemetry::PERF_MONITORING_TEST_CPU_RESCHEDULING_PROPORTION_MOVED, (uint32_t)proportion); + /* STUB */ return NS_OK; } diff --git a/toolkit/components/places/Database.cpp b/toolkit/components/places/Database.cpp index 37502e2a1..a87c14b37 100644 --- a/toolkit/components/places/Database.cpp +++ b/toolkit/components/places/Database.cpp @@ -615,9 +615,6 @@ Database::BackupAndReplaceDatabaseFile(nsCOMPtr<mozIStorageService>& aStorage) // Set up a pref to try replacing the database at the next startup. Preferences::SetBool(PREF_FORCE_DATABASE_REPLACEMENT, true); } - // Report the corruption through telemetry. - Telemetry::Accumulate(Telemetry::PLACES_DATABASE_CORRUPTION_HANDLING_STAGE, - static_cast<int8_t>(stage)); }); // Close database connection if open. diff --git a/toolkit/components/places/FaviconHelpers.cpp b/toolkit/components/places/FaviconHelpers.cpp index 69c202338..ca08cdff4 100644 --- a/toolkit/components/places/FaviconHelpers.cpp +++ b/toolkit/components/places/FaviconHelpers.cpp @@ -14,7 +14,6 @@ #include "nsNavHistory.h" #include "nsFaviconService.h" #include "mozilla/storage.h" -#include "mozilla/Telemetry.h" #include "nsNetUtil.h" #include "nsPrintfCString.h" #include "nsStreamUtils.h" @@ -581,33 +580,6 @@ AsyncFetchAndSetIconForPage::OnStopRequest(nsIRequest* aRequest, mIcon.expiration = GetExpirationTimeFromChannel(channel); - // Telemetry probes to measure the favicon file sizes for each different file type. - // This allow us to measure common file sizes while also observing each type popularity. - if (mIcon.mimeType.EqualsLiteral("image/png")) { - mozilla::Telemetry::Accumulate(mozilla::Telemetry::PLACES_FAVICON_PNG_SIZES, mIcon.data.Length()); - } - else if (mIcon.mimeType.EqualsLiteral("image/x-icon") || - mIcon.mimeType.EqualsLiteral("image/vnd.microsoft.icon")) { - mozilla::Telemetry::Accumulate(mozilla::Telemetry::PLACES_FAVICON_ICO_SIZES, mIcon.data.Length()); - } - else if (mIcon.mimeType.EqualsLiteral("image/jpeg") || - mIcon.mimeType.EqualsLiteral("image/pjpeg")) { - mozilla::Telemetry::Accumulate(mozilla::Telemetry::PLACES_FAVICON_JPEG_SIZES, mIcon.data.Length()); - } - else if (mIcon.mimeType.EqualsLiteral("image/gif")) { - mozilla::Telemetry::Accumulate(mozilla::Telemetry::PLACES_FAVICON_GIF_SIZES, mIcon.data.Length()); - } - else if (mIcon.mimeType.EqualsLiteral("image/bmp") || - mIcon.mimeType.EqualsLiteral("image/x-windows-bmp")) { - mozilla::Telemetry::Accumulate(mozilla::Telemetry::PLACES_FAVICON_BMP_SIZES, mIcon.data.Length()); - } - else if (mIcon.mimeType.EqualsLiteral("image/svg+xml")) { - mozilla::Telemetry::Accumulate(mozilla::Telemetry::PLACES_FAVICON_SVG_SIZES, mIcon.data.Length()); - } - else { - mozilla::Telemetry::Accumulate(mozilla::Telemetry::PLACES_FAVICON_OTHER_SIZES, mIcon.data.Length()); - } - rv = OptimizeIconSize(mIcon, favicons); NS_ENSURE_SUCCESS(rv, rv); diff --git a/toolkit/components/places/Helpers.cpp b/toolkit/components/places/Helpers.cpp index 66c4e79a9..dda162197 100644 --- a/toolkit/components/places/Helpers.cpp +++ b/toolkit/components/places/Helpers.cpp @@ -385,9 +385,7 @@ AsyncStatementCallbackNotifier::HandleCompletion(uint16_t aReason) NS_IMETHODIMP AsyncStatementTelemetryTimer::HandleCompletion(uint16_t aReason) { - if (aReason == mozIStorageStatementCallback::REASON_FINISHED) { - Telemetry::AccumulateTimeDelta(mHistogramId, mStart); - } + /* STUB */ return NS_OK; } diff --git a/toolkit/components/places/UnifiedComplete.js b/toolkit/components/places/UnifiedComplete.js index acd358b11..2efae9cbe 100644 --- a/toolkit/components/places/UnifiedComplete.js +++ b/toolkit/components/places/UnifiedComplete.js @@ -262,8 +262,6 @@ Cu.import("resource://gre/modules/Services.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "PlacesUtils", "resource://gre/modules/PlacesUtils.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "TelemetryStopwatch", - "resource://gre/modules/TelemetryStopwatch.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "NetUtil", "resource://gre/modules/NetUtil.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "Preferences", @@ -887,10 +885,6 @@ Search.prototype = { if (!this.pending) return; - TelemetryStopwatch.start(TELEMETRY_1ST_RESULT, this); - if (this._searchString) - TelemetryStopwatch.start(TELEMETRY_6_FIRST_RESULTS, this); - // Since we call the synchronous parseSubmissionURL function later, we must // wait for the initialization of PlacesSearchAutocompleteProvider first. yield PlacesSearchAutocompleteProvider.ensureInitialized(); @@ -1468,9 +1462,6 @@ Search.prototype = { }, _onResultRow: function (row) { - if (this._localMatchesCount == 0) { - TelemetryStopwatch.finish(TELEMETRY_1ST_RESULT, this); - } let queryType = row.getResultByIndex(QUERYINDEX_QUERYTYPE); let match; switch (queryType) { @@ -1566,9 +1557,6 @@ Search.prototype = { match.style, match.finalCompleteValue); - if (this._result.matchCount == 6) - TelemetryStopwatch.finish(TELEMETRY_6_FIRST_RESULTS, this); - this.notifyResults(true); }, @@ -2088,8 +2076,6 @@ UnifiedComplete.prototype = { * results or not. */ finishSearch: function (notify=false) { - TelemetryStopwatch.cancel(TELEMETRY_1ST_RESULT, this); - TelemetryStopwatch.cancel(TELEMETRY_6_FIRST_RESULTS, this); // Clear state now to avoid race conditions, see below. let search = this._currentSearch; if (!search) diff --git a/toolkit/components/places/nsPlacesAutoComplete.js b/toolkit/components/places/nsPlacesAutoComplete.js index 29bdae4c1..9c6452ecd 100644 --- a/toolkit/components/places/nsPlacesAutoComplete.js +++ b/toolkit/components/places/nsPlacesAutoComplete.js @@ -8,8 +8,6 @@ Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); Components.utils.import("resource://gre/modules/Services.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "PlacesUtils", "resource://gre/modules/PlacesUtils.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "TelemetryStopwatch", - "resource://gre/modules/TelemetryStopwatch.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "NetUtil", "resource://gre/modules/NetUtil.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "Task", @@ -1510,8 +1508,6 @@ urlInlineComplete.prototype = { // Do a synchronous search on the table of hosts. let query = this._hostQuery; query.params.search_string = this._currentSearchString.toLowerCase(); - // This is just to measure the delay to reach the UI, not the query time. - TelemetryStopwatch.start(DOMAIN_QUERY_TELEMETRY); let wrapper = new AutoCompleteStatementCallbackWrapper(this, { handleResult: aResultSet => { if (this._pendingSearch != pendingSearch) @@ -1541,7 +1537,6 @@ urlInlineComplete.prototype = { handleCompletion: aReason => { if (this._pendingSearch != pendingSearch) return; - TelemetryStopwatch.finish(DOMAIN_QUERY_TELEMETRY); this._finishSearch(); } }, this._db); diff --git a/toolkit/components/search/current/nsSearchService.js b/toolkit/components/search/current/nsSearchService.js index 9f9003516..99e73b50b 100644 --- a/toolkit/components/search/current/nsSearchService.js +++ b/toolkit/components/search/current/nsSearchService.js @@ -21,8 +21,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "OS", "resource://gre/modules/osfile.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "Task", "resource://gre/modules/Task.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "TelemetryStopwatch", - "resource://gre/modules/TelemetryStopwatch.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "SearchStaticData", "resource://gre/modules/SearchStaticData.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "setTimeout", @@ -3873,21 +3871,17 @@ SearchService.prototype = { LOG("SearchService.init"); let self = this; if (!this._initStarted) { - TelemetryStopwatch.start("SEARCH_SERVICE_INIT_MS"); this._initStarted = true; Task.spawn(function* task() { try { // Complete initialization by calling asynchronous initializer. yield self._asyncInit(); - TelemetryStopwatch.finish("SEARCH_SERVICE_INIT_MS"); } catch (ex) { if (ex.result == Cr.NS_ERROR_ALREADY_INITIALIZED) { // No need to pursue asynchronous because synchronous fallback was // called and has finished. - TelemetryStopwatch.finish("SEARCH_SERVICE_INIT_MS"); } else { self._initObservers.reject(ex); - TelemetryStopwatch.cancel("SEARCH_SERVICE_INIT_MS"); } } }); diff --git a/toolkit/components/search/orginal/nsSearchService.js b/toolkit/components/search/orginal/nsSearchService.js index 56d378b39..8d81e1a27 100644 --- a/toolkit/components/search/orginal/nsSearchService.js +++ b/toolkit/components/search/orginal/nsSearchService.js @@ -2237,7 +2237,10 @@ Engine.prototype = { get lazySerializeTask() { if (!this._lazySerializeTask) { let task = function taskCallback() { - this._serializeToFile(); + // This check should be done by caller, but it is better to be safe than sorry. + if (!this._readOnly && this._file) { + this._serializeToFile(); + } }.bind(this); this._lazySerializeTask = new DeferredTask(task, LAZY_SERIALIZE_DELAY); } @@ -2245,6 +2248,17 @@ Engine.prototype = { return this._lazySerializeTask; }, + // This API is required by some search engine management extensions, so let's restore it. + // Old API was using a timer to do its work, but this can lead us too far. If extension is + // rely on such subtle internal details, that extension should be fixed, not browser. + _lazySerializeToFile: function SRCH_ENG_lazySerializeToFile() { + // This check should be done by caller, but it is better to be safe than sorry. + // Besides, we don't have to create a task for r/o or non-file engines. + if (!this._readOnly && this._file) { + this.lazySerializeTask.arm(); + } + }, + /** * Serializes the engine object to file. */ @@ -3058,6 +3072,10 @@ SearchService.prototype = { continue; } + // Write out serialized search engine files when rebuilding cache. + // Do it lazily, to: 1) reuse existing API; 2) make browser interface more responsive + engine._lazySerializeToFile(); + let cacheKey = parent.path; if (!cache.directories[cacheKey]) { let cacheEntry = {}; diff --git a/toolkit/components/startup/nsAppStartup.cpp b/toolkit/components/startup/nsAppStartup.cpp index 391389605..53f8c5670 100644 --- a/toolkit/components/startup/nsAppStartup.cpp +++ b/toolkit/components/startup/nsAppStartup.cpp @@ -758,11 +758,6 @@ nsAppStartup::GetStartupInfo(JSContext* aCx, JS::MutableHandle<JS::Value> aRetva procTime = TimeStamp::ProcessCreation(error); - if (error) { - Telemetry::Accumulate(Telemetry::STARTUP_MEASUREMENT_ERRORS, - StartupTimeline::PROCESS_CREATION); - } - StartupTimeline::Record(StartupTimeline::PROCESS_CREATION, procTime); } @@ -777,8 +772,6 @@ nsAppStartup::GetStartupInfo(JSContext* aCx, JS::MutableHandle<JS::Value> aRetva // Always define main to aid with bug 689256. stamp = procTime; MOZ_ASSERT(!stamp.IsNull()); - Telemetry::Accumulate(Telemetry::STARTUP_MEASUREMENT_ERRORS, - StartupTimeline::MAIN); } if (!stamp.IsNull()) { @@ -787,8 +780,6 @@ nsAppStartup::GetStartupInfo(JSContext* aCx, JS::MutableHandle<JS::Value> aRetva / PR_USEC_PER_MSEC; JS::Rooted<JSObject*> date(aCx, JS::NewDateObject(aCx, JS::TimeClip(prStamp))); JS_DefineProperty(aCx, obj, StartupTimeline::Describe(ev), date, JSPROP_ENUMERATE); - } else { - Telemetry::Accumulate(Telemetry::STARTUP_MEASUREMENT_ERRORS, ev); } } } @@ -887,9 +878,6 @@ nsAppStartup::TrackStartupCrashBegin(bool *aIsSafeModeNecessary) if (PR_Now() / PR_USEC_PER_SEC <= lastSuccessfulStartup) return NS_ERROR_FAILURE; - // The last startup was a crash so include it in the count regardless of when it happened. - Telemetry::Accumulate(Telemetry::STARTUP_CRASH_DETECTED, true); - if (inSafeMode) { GetAutomaticSafeModeNecessary(aIsSafeModeNecessary); return NS_OK; diff --git a/toolkit/components/telemetry/TelemetryStopwatch.jsm b/toolkit/components/telemetry/TelemetryStopwatch.jsm deleted file mode 100644 index ab6c6eafb..000000000 --- a/toolkit/components/telemetry/TelemetryStopwatch.jsm +++ /dev/null @@ -1,335 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ - -const Cc = Components.classes; -const Ci = Components.interfaces; -const Cu = Components.utils; - -this.EXPORTED_SYMBOLS = ["TelemetryStopwatch"]; - -Cu.import("resource://gre/modules/Log.jsm", this); -var Telemetry = Cc["@mozilla.org/base/telemetry;1"] - .getService(Ci.nsITelemetry); - -// Weak map does not allow using null objects as keys. These objects are used -// as 'null' placeholders. -const NULL_OBJECT = {}; -const NULL_KEY = {}; - -/** - * Timers is a variation of a Map used for storing information about running - * Stopwatches. Timers has the following data structure: - * - * { - * "HISTOGRAM_NAME": WeakMap { - * Object || NULL_OBJECT: Map { - * "KEY" || NULL_KEY: startTime - * ... - * } - * ... - * } - * ... - * } - * - * - * @example - * // Stores current time for a keyed histogram "PLAYING_WITH_CUTE_ANIMALS". - * Timers.put("PLAYING_WITH_CUTE_ANIMALS", null, "CATS", Date.now()); - * - * @example - * // Returns information about a simple Stopwatch. - * let startTime = Timers.get("PLAYING_WITH_CUTE_ANIMALS", null, "CATS"); - */ -let Timers = { - _timers: new Map(), - - _validTypes: function(histogram, obj, key) { - let nonEmptyString = value => { - return typeof value === "string" && value !== "" && value.length > 0; - }; - return nonEmptyString(histogram) && - typeof obj == "object" && - (key === NULL_KEY || nonEmptyString(key)); - }, - - get: function(histogram, obj, key) { - key = key === null ? NULL_KEY : key; - obj = obj || NULL_OBJECT; - - if (!this.has(histogram, obj, key)) { - return null; - } - - return this._timers.get(histogram).get(obj).get(key); - }, - - put: function(histogram, obj, key, startTime) { - key = key === null ? NULL_KEY : key; - obj = obj || NULL_OBJECT; - - if (!this._validTypes(histogram, obj, key)) { - return false; - } - - let objectMap = this._timers.get(histogram) || new WeakMap(); - let keyedInfo = objectMap.get(obj) || new Map(); - keyedInfo.set(key, startTime); - objectMap.set(obj, keyedInfo); - this._timers.set(histogram, objectMap); - return true; - }, - - has: function(histogram, obj, key) { - key = key === null ? NULL_KEY : key; - obj = obj || NULL_OBJECT; - - return this._timers.has(histogram) && - this._timers.get(histogram).has(obj) && - this._timers.get(histogram).get(obj).has(key); - }, - - delete: function(histogram, obj, key) { - key = key === null ? NULL_KEY : key; - obj = obj || NULL_OBJECT; - - if (!this.has(histogram, obj, key)) { - return false; - } - let objectMap = this._timers.get(histogram); - let keyedInfo = objectMap.get(obj); - if (keyedInfo.size > 1) { - keyedInfo.delete(key); - return true; - } - objectMap.delete(obj); - // NOTE: - // We never delete empty objecMaps from this._timers because there is no - // nice solution for tracking the number of objects in a WeakMap. - // WeakMap is not enumerable, so we can't deterministically say when it's - // empty. We accept that trade-off here, given that entries for short-lived - // objects will go away when they are no longer referenced - return true; - } -}; - -this.TelemetryStopwatch = { - /** - * Starts a timer associated with a telemetry histogram. The timer can be - * directly associated with a histogram, or with a pair of a histogram and - * an object. - * - * @param {String} aHistogram - a string which must be a valid histogram name. - * - * @param {Object} aObj - Optional parameter. If specified, the timer is - * associated with this object, meaning that multiple - * timers for the same histogram may be run - * concurrently, as long as they are associated with - * different objects. - * - * @returns {Boolean} True if the timer was successfully started, false - * otherwise. If a timer already exists, it can't be - * started again, and the existing one will be cleared in - * order to avoid measurements errors. - */ - start: function(aHistogram, aObj) { - return TelemetryStopwatchImpl.start(aHistogram, aObj, null); - }, - - /** - * Deletes the timer associated with a telemetry histogram. The timer can be - * directly associated with a histogram, or with a pair of a histogram and - * an object. Important: Only use this method when a legitimate cancellation - * should be done. - * - * @param {String} aHistogram - a string which must be a valid histogram name. - * - * @param {Object} aObj - Optional parameter. If specified, the timer is - * associated with this object, meaning that multiple - * timers or a same histogram may be run concurrently, - * as long as they are associated with different - * objects. - * - * @returns {Boolean} True if the timer exist and it was cleared, False - * otherwise. - */ - cancel: function(aHistogram, aObj) { - return TelemetryStopwatchImpl.cancel(aHistogram, aObj, null); - }, - - /** - * Returns the elapsed time for a particular stopwatch. Primarily for - * debugging purposes. Must be called prior to finish. - * - * @param {String} aHistogram - a string which must be a valid histogram name. - * If an invalid name is given, the function will - * throw. - * - * @param (Object) aObj - Optional parameter which associates the histogram - * timer with the given object. - * - * @returns {Integer} time in milliseconds or -1 if the stopwatch was not - * found. - */ - timeElapsed: function(aHistogram, aObj) { - return TelemetryStopwatchImpl.timeElapsed(aHistogram, aObj, null); - }, - - /** - * Stops the timer associated with the given histogram (and object), - * calculates the time delta between start and finish, and adds the value - * to the histogram. - * - * @param {String} aHistogram - a string which must be a valid histogram name. - * - * @param {Object} aObj - Optional parameter which associates the histogram - * timer with the given object. - * - * @returns {Boolean} True if the timer was succesfully stopped and the data - * was added to the histogram, False otherwise. - */ - finish: function(aHistogram, aObj) { - return TelemetryStopwatchImpl.finish(aHistogram, aObj, null); - }, - - /** - * Starts a timer associated with a keyed telemetry histogram. The timer can - * be directly associated with a histogram and its key. Similarly to - * @see{TelemetryStopwatch.stat} the histogram and its key can be associated - * with an object. Each key may have multiple associated objects and each - * object can be associated with multiple keys. - * - * @param {String} aHistogram - a string which must be a valid histogram name. - * - * @param {String} aKey - a string which must be a valid histgram key. - * - * @param {Object} aObj - Optional parameter. If specified, the timer is - * associated with this object, meaning that multiple - * timers for the same histogram may be run - * concurrently,as long as they are associated with - * different objects. - * - * @returns {Boolean} True if the timer was successfully started, false - * otherwise. If a timer already exists, it can't be - * started again, and the existing one will be cleared in - * order to avoid measurements errors. - */ - startKeyed: function(aHistogram, aKey, aObj) { - return TelemetryStopwatchImpl.start(aHistogram, aObj, aKey); - }, - - /** - * Deletes the timer associated with a keyed histogram. Important: Only use - * this method when a legitimate cancellation should be done. - * - * @param {String} aHistogram - a string which must be a valid histogram name. - * - * @param {String} aKey - a string which must be a valid histgram key. - * - * @param {Object} aObj - Optional parameter. If specified, the timer - * associated with this object is deleted. - * - * @return {Boolean} True if the timer exist and it was cleared, False - * otherwise. - */ - cancelKeyed: function(aHistogram, aKey, aObj) { - return TelemetryStopwatchImpl.cancel(aHistogram, aObj, aKey); - }, - - /** - * Returns the elapsed time for a particular stopwatch. Primarily for - * debugging purposes. Must be called prior to finish. - * - * @param {String} aHistogram - a string which must be a valid histogram name. - * - * @param {String} aKey - a string which must be a valid histgram key. - * - * @param {Object} aObj - Optional parameter. If specified, the timer - * associated with this object is used to calculate - * the elapsed time. - * - * @return {Integer} time in milliseconds or -1 if the stopwatch was not - * found. - */ - timeElapsedKeyed: function(aHistogram, aKey, aObj) { - return TelemetryStopwatchImpl.timeElapsed(aHistogram, aObj, aKey); - }, - - /** - * Stops the timer associated with the given keyed histogram (and object), - * calculates the time delta between start and finish, and adds the value - * to the keyed histogram. - * - * @param {String} aHistogram - a string which must be a valid histogram name. - * - * @param {String} aKey - a string which must be a valid histgram key. - * - * @param {Object} aObj - optional parameter which associates the histogram - * timer with the given object. - * - * @returns {Boolean} True if the timer was succesfully stopped and the data - * was added to the histogram, False otherwise. - */ - finishKeyed: function(aHistogram, aKey, aObj) { - return TelemetryStopwatchImpl.finish(aHistogram, aObj, aKey); - } -}; - -this.TelemetryStopwatchImpl = { - start: function(histogram, object, key) { - if (Timers.has(histogram, object, key)) { - Timers.delete(histogram, object, key); - Cu.reportError(`TelemetryStopwatch: key "${histogram}" was already ` + - "initialized"); - return false; - } - - return Timers.put(histogram, object, key, Components.utils.now()); - }, - - cancel: function (histogram, object, key) { - return Timers.delete(histogram, object, key); - }, - - timeElapsed: function(histogram, object, key) { - let startTime = Timers.get(histogram, object, key); - if (startTime === null) { - Cu.reportError("TelemetryStopwatch: requesting elapsed time for " + - `nonexisting stopwatch. Histogram: "${histogram}", ` + - `key: "${key}"`); - return -1; - } - - try { - let delta = Components.utils.now() - startTime - return Math.round(delta); - } catch (e) { - Cu.reportError("TelemetryStopwatch: failed to calculate elapsed time " + - `for Histogram: "${histogram}", key: "${key}", ` + - `exception: ${Log.exceptionStr(e)}`); - return -1; - } - }, - - finish: function(histogram, object, key) { - let delta = this.timeElapsed(histogram, object, key); - if (delta == -1) { - return false; - } - - try { - if (key) { - Telemetry.getKeyedHistogramById(histogram).add(key, delta); - } else { - Telemetry.getHistogramById(histogram).add(delta); - } - } catch (e) { - Cu.reportError("TelemetryStopwatch: failed to update the Histogram " + - `"${histogram}", using key: "${key}", ` + - `exception: ${Log.exceptionStr(e)}`); - return false; - } - - return Timers.delete(histogram, object, key); - } -} diff --git a/toolkit/components/telemetry/moz.build b/toolkit/components/telemetry/moz.build index 118d61b71..7765c59b4 100644 --- a/toolkit/components/telemetry/moz.build +++ b/toolkit/components/telemetry/moz.build @@ -64,7 +64,6 @@ EXTRA_JS_MODULES += [ 'TelemetryReportingPolicy.jsm', 'TelemetrySend.jsm', 'TelemetrySession.jsm', - 'TelemetryStopwatch.jsm', 'TelemetryStorage.jsm', 'TelemetryTimestamps.jsm', 'TelemetryUtils.jsm', diff --git a/toolkit/components/telemetry/tests/unit/test_TelemetryStopwatch.js b/toolkit/components/telemetry/tests/unit/test_TelemetryStopwatch.js deleted file mode 100644 index d162d9b17..000000000 --- a/toolkit/components/telemetry/tests/unit/test_TelemetryStopwatch.js +++ /dev/null @@ -1,156 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ */ - -var tmpScope = {}; -Cu.import("resource://gre/modules/TelemetryStopwatch.jsm", tmpScope); -var TelemetryStopwatch = tmpScope.TelemetryStopwatch; - -const HIST_NAME = "TELEMETRY_SEND_SUCCESS"; -const HIST_NAME2 = "RANGE_CHECKSUM_ERRORS"; -const KEYED_HIST = { id: "TELEMETRY_INVALID_PING_TYPE_SUBMITTED", key: "TEST" }; - -var refObj = {}, refObj2 = {}; - -var originalCount1, originalCount2; - -function run_test() { - let histogram = Telemetry.getHistogramById(HIST_NAME); - let snapshot = histogram.snapshot(); - originalCount1 = snapshot.counts.reduce((a, b) => a += b); - - histogram = Telemetry.getHistogramById(HIST_NAME2); - snapshot = histogram.snapshot(); - originalCount2 = snapshot.counts.reduce((a, b) => a += b); - - histogram = Telemetry.getKeyedHistogramById(KEYED_HIST.id); - snapshot = histogram.snapshot(KEYED_HIST.key); - originalCount3 = snapshot.counts.reduce((a, b) => a += b); - - do_check_false(TelemetryStopwatch.start(3)); - do_check_false(TelemetryStopwatch.start({})); - do_check_false(TelemetryStopwatch.start("", 3)); - do_check_false(TelemetryStopwatch.start("", "")); - do_check_false(TelemetryStopwatch.start({}, {})); - - do_check_true(TelemetryStopwatch.start("mark1")); - do_check_true(TelemetryStopwatch.start("mark2")); - - do_check_true(TelemetryStopwatch.start("mark1", refObj)); - do_check_true(TelemetryStopwatch.start("mark2", refObj)); - - // Same timer can't be re-started before being stopped - do_check_false(TelemetryStopwatch.start("mark1")); - do_check_false(TelemetryStopwatch.start("mark1", refObj)); - - // Can't stop a timer that was accidentaly started twice - do_check_false(TelemetryStopwatch.finish("mark1")); - do_check_false(TelemetryStopwatch.finish("mark1", refObj)); - - do_check_true(TelemetryStopwatch.start("NON-EXISTENT_HISTOGRAM")); - do_check_false(TelemetryStopwatch.finish("NON-EXISTENT_HISTOGRAM")); - - do_check_true(TelemetryStopwatch.start("NON-EXISTENT_HISTOGRAM", refObj)); - do_check_false(TelemetryStopwatch.finish("NON-EXISTENT_HISTOGRAM", refObj)); - - do_check_true(TelemetryStopwatch.start(HIST_NAME)); - do_check_true(TelemetryStopwatch.start(HIST_NAME2)); - do_check_true(TelemetryStopwatch.start(HIST_NAME, refObj)); - do_check_true(TelemetryStopwatch.start(HIST_NAME2, refObj)); - do_check_true(TelemetryStopwatch.start(HIST_NAME, refObj2)); - do_check_true(TelemetryStopwatch.start(HIST_NAME2, refObj2)); - - do_check_true(TelemetryStopwatch.finish(HIST_NAME)); - do_check_true(TelemetryStopwatch.finish(HIST_NAME2)); - do_check_true(TelemetryStopwatch.finish(HIST_NAME, refObj)); - do_check_true(TelemetryStopwatch.finish(HIST_NAME2, refObj)); - do_check_true(TelemetryStopwatch.finish(HIST_NAME, refObj2)); - do_check_true(TelemetryStopwatch.finish(HIST_NAME2, refObj2)); - - // Verify that TS.finish deleted the timers - do_check_false(TelemetryStopwatch.finish(HIST_NAME)); - do_check_false(TelemetryStopwatch.finish(HIST_NAME, refObj)); - - // Verify that they can be used again - do_check_true(TelemetryStopwatch.start(HIST_NAME)); - do_check_true(TelemetryStopwatch.start(HIST_NAME, refObj)); - do_check_true(TelemetryStopwatch.finish(HIST_NAME)); - do_check_true(TelemetryStopwatch.finish(HIST_NAME, refObj)); - - do_check_false(TelemetryStopwatch.finish("unknown-mark")); // Unknown marker - do_check_false(TelemetryStopwatch.finish("unknown-mark", {})); // Unknown object - do_check_false(TelemetryStopwatch.finish(HIST_NAME, {})); // Known mark on unknown object - - // Test cancel - do_check_true(TelemetryStopwatch.start(HIST_NAME)); - do_check_true(TelemetryStopwatch.start(HIST_NAME, refObj)); - do_check_true(TelemetryStopwatch.cancel(HIST_NAME)); - do_check_true(TelemetryStopwatch.cancel(HIST_NAME, refObj)); - - // Verify that can not cancel twice - do_check_false(TelemetryStopwatch.cancel(HIST_NAME)); - do_check_false(TelemetryStopwatch.cancel(HIST_NAME, refObj)); - - // Verify that cancel removes the timers - do_check_false(TelemetryStopwatch.finish(HIST_NAME)); - do_check_false(TelemetryStopwatch.finish(HIST_NAME, refObj)); - - // Verify that keyed stopwatch reject invalid keys. - for (let key of [3, {}, ""]) { - do_check_false(TelemetryStopwatch.startKeyed(KEYED_HIST.id, key)); - } - - // Verify that keyed histograms can be started. - do_check_true(TelemetryStopwatch.startKeyed("HISTOGRAM", "KEY1")); - do_check_true(TelemetryStopwatch.startKeyed("HISTOGRAM", "KEY2")); - do_check_true(TelemetryStopwatch.startKeyed("HISTOGRAM", "KEY1", refObj)); - do_check_true(TelemetryStopwatch.startKeyed("HISTOGRAM", "KEY2", refObj)); - - // Restarting keyed histograms should fail. - do_check_false(TelemetryStopwatch.startKeyed("HISTOGRAM", "KEY1")); - do_check_false(TelemetryStopwatch.startKeyed("HISTOGRAM", "KEY1", refObj)); - - // Finishing a stopwatch of a non existing histogram should return false. - do_check_false(TelemetryStopwatch.finishKeyed("HISTOGRAM", "KEY2")); - do_check_false(TelemetryStopwatch.finishKeyed("HISTOGRAM", "KEY2", refObj)); - - // Starting & finishing a keyed stopwatch for an existing histogram should work. - do_check_true(TelemetryStopwatch.startKeyed(KEYED_HIST.id, KEYED_HIST.key)); - do_check_true(TelemetryStopwatch.finishKeyed(KEYED_HIST.id, KEYED_HIST.key)); - // Verify that TS.finish deleted the timers - do_check_false(TelemetryStopwatch.finishKeyed(KEYED_HIST.id, KEYED_HIST.key)); - - // Verify that they can be used again - do_check_true(TelemetryStopwatch.startKeyed(KEYED_HIST.id, KEYED_HIST.key)); - do_check_true(TelemetryStopwatch.finishKeyed(KEYED_HIST.id, KEYED_HIST.key)); - - do_check_false(TelemetryStopwatch.finishKeyed("unknown-mark", "unknown-key")); - do_check_false(TelemetryStopwatch.finishKeyed(KEYED_HIST.id, "unknown-key")); - - // Verify that keyed histograms can only be canceled through "keyed" API. - do_check_true(TelemetryStopwatch.startKeyed(KEYED_HIST.id, KEYED_HIST.key)); - do_check_false(TelemetryStopwatch.cancel(KEYED_HIST.id, KEYED_HIST.key)); - do_check_true(TelemetryStopwatch.cancelKeyed(KEYED_HIST.id, KEYED_HIST.key)); - do_check_false(TelemetryStopwatch.cancelKeyed(KEYED_HIST.id, KEYED_HIST.key)); - - finishTest(); -} - -function finishTest() { - let histogram = Telemetry.getHistogramById(HIST_NAME); - let snapshot = histogram.snapshot(); - let newCount = snapshot.counts.reduce((a, b) => a += b); - - do_check_eq(newCount - originalCount1, 5, "The correct number of histograms were added for histogram 1."); - - histogram = Telemetry.getHistogramById(HIST_NAME2); - snapshot = histogram.snapshot(); - newCount = snapshot.counts.reduce((a, b) => a += b); - - do_check_eq(newCount - originalCount2, 3, "The correct number of histograms were added for histogram 2."); - - histogram = Telemetry.getKeyedHistogramById(KEYED_HIST.id); - snapshot = histogram.snapshot(KEYED_HIST.key); - newCount = snapshot.counts.reduce((a, b) => a += b); - - do_check_eq(newCount - originalCount3, 2, "The correct number of histograms were added for histogram 3."); -} diff --git a/toolkit/components/telemetry/tests/unit/xpcshell.ini b/toolkit/components/telemetry/tests/unit/xpcshell.ini index 42354c4cd..224516f57 100644 --- a/toolkit/components/telemetry/tests/unit/xpcshell.ini +++ b/toolkit/components/telemetry/tests/unit/xpcshell.ini @@ -41,7 +41,6 @@ tags = addons [test_TelemetryController_idle.js] [test_TelemetryControllerShutdown.js] tags = addons -[test_TelemetryStopwatch.js] [test_TelemetryControllerBuildID.js] [test_TelemetrySendOldPings.js] skip-if = os == "android" # Disabled due to intermittent orange on Android diff --git a/toolkit/components/url-classifier/Classifier.cpp b/toolkit/components/url-classifier/Classifier.cpp index bbaeaf535..b9d0ace1b 100644 --- a/toolkit/components/url-classifier/Classifier.cpp +++ b/toolkit/components/url-classifier/Classifier.cpp @@ -15,7 +15,6 @@ #include "nsNetCID.h" #include "nsPrintfCString.h" #include "nsThreadUtils.h" -#include "mozilla/Telemetry.h" #include "mozilla/Logging.h" #include "mozilla/SyncRunnable.h" #include "mozilla/Base64.h" @@ -413,8 +412,6 @@ Classifier::Check(const nsACString& aSpec, uint32_t aFreshnessGuarantee, LookupResultArray& aResults) { - Telemetry::AutoTimer<Telemetry::URLCLASSIFIER_CL_CHECK_TIME> timer; - // Get the set of fragments based on the url. This is necessary because we // only look up at most 5 URLs per aSpec, even if aSpec has more than 5 // components. @@ -498,9 +495,6 @@ Classifier::Check(const nsACString& aSpec, matchingStatistics |= PrefixMatch::eMatchV2Prefix; } } - - Telemetry::Accumulate(Telemetry::URLCLASSIFIER_PREFIX_MATCH, - static_cast<uint8_t>(matchingStatistics)); } return NS_OK; @@ -509,8 +503,6 @@ Classifier::Check(const nsACString& aSpec, nsresult Classifier::ApplyUpdates(nsTArray<TableUpdate*>* aUpdates) { - Telemetry::AutoTimer<Telemetry::URLCLASSIFIER_CL_UPDATE_TIME> timer; - PRIntervalTime clockStart = 0; if (LOG_ENABLED()) { clockStart = PR_IntervalNow(); diff --git a/toolkit/components/url-classifier/Entries.h b/toolkit/components/url-classifier/Entries.h index 969f4f739..b7fb34516 100644 --- a/toolkit/components/url-classifier/Entries.h +++ b/toolkit/components/url-classifier/Entries.h @@ -100,7 +100,7 @@ struct SafebrowsingHash aStr.SetCapacity(2 * len); for (size_t i = 0; i < len; ++i) { - const char c = static_cast<const char>(buf[i]); + const char c = static_cast<char>(buf[i]); aStr.Append(lut[(c >> 4) & 0x0F]); aStr.Append(lut[c & 15]); } diff --git a/toolkit/components/url-classifier/LookupCache.cpp b/toolkit/components/url-classifier/LookupCache.cpp index 5a3b1e36d..7c4d7682b 100644 --- a/toolkit/components/url-classifier/LookupCache.cpp +++ b/toolkit/components/url-classifier/LookupCache.cpp @@ -6,7 +6,6 @@ #include "LookupCache.h" #include "HashStore.h" #include "nsISeekableStream.h" -#include "mozilla/Telemetry.h" #include "mozilla/Logging.h" #include "nsNetUtil.h" #include "prprf.h" @@ -451,9 +450,6 @@ nsresult LookupCacheV2::Build(AddPrefixArray& aAddPrefixes, AddCompleteArray& aAddCompletes) { - Telemetry::Accumulate(Telemetry::URLCLASSIFIER_LC_COMPLETIONS, - static_cast<uint32_t>(aAddCompletes.Length())); - mUpdateCompletions.Clear(); mUpdateCompletions.SetCapacity(aAddCompletes.Length()); for (uint32_t i = 0; i < aAddCompletes.Length(); i++) { @@ -462,9 +458,6 @@ LookupCacheV2::Build(AddPrefixArray& aAddPrefixes, aAddCompletes.Clear(); mUpdateCompletions.Sort(); - Telemetry::Accumulate(Telemetry::URLCLASSIFIER_LC_PREFIXES, - static_cast<uint32_t>(aAddPrefixes.Length())); - nsresult rv = ConstructPrefixSet(aAddPrefixes); NS_ENSURE_SUCCESS(rv, rv); mPrimed = true; @@ -548,8 +541,6 @@ static void EnsureSorted(T* aArray) nsresult LookupCacheV2::ConstructPrefixSet(AddPrefixArray& aAddPrefixes) { - Telemetry::AutoTimer<Telemetry::URLCLASSIFIER_PS_CONSTRUCT_TIME> timer; - nsTArray<uint32_t> array; if (!array.SetCapacity(aAddPrefixes.Length(), fallible)) { return NS_ERROR_OUT_OF_MEMORY; diff --git a/toolkit/components/url-classifier/LookupCacheV4.cpp b/toolkit/components/url-classifier/LookupCacheV4.cpp index 7258ae358..a96e4931a 100644 --- a/toolkit/components/url-classifier/LookupCacheV4.cpp +++ b/toolkit/components/url-classifier/LookupCacheV4.cpp @@ -144,9 +144,6 @@ LookupCacheV4::LoadFromFile(nsIFile* aFile) } rv = VerifyChecksum(checksum); - Telemetry::Accumulate(Telemetry::URLCLASSIFIER_VLPS_LOAD_CORRUPT, - rv == NS_ERROR_FILE_CORRUPTED); - return rv; } @@ -231,8 +228,6 @@ LookupCacheV4::ApplyUpdate(TableUpdateV4* aTableUpdate, if (!isOldMapEmpty && !isAddMapEmpty) { if (smallestOldPrefix == smallestAddPrefix) { LOG(("Add prefix should not exist in the original prefix set.")); - Telemetry::Accumulate(Telemetry::URLCLASSIFIER_UPDATE_ERROR_TYPE, - DUPLICATE_PREFIX); return NS_ERROR_FAILURE; } @@ -274,15 +269,11 @@ LookupCacheV4::ApplyUpdate(TableUpdateV4* aTableUpdate, // the number of original prefix plus add prefix. if (index <= 0) { LOG(("There are still prefixes remaining after reaching maximum runs.")); - Telemetry::Accumulate(Telemetry::URLCLASSIFIER_UPDATE_ERROR_TYPE, - INFINITE_LOOP); return NS_ERROR_FAILURE; } if (removalIndex < removalArray.Length()) { LOG(("There are still prefixes to remove after exhausting the old PrefixSet.")); - Telemetry::Accumulate(Telemetry::URLCLASSIFIER_UPDATE_ERROR_TYPE, - WRONG_REMOVAL_INDICES); return NS_ERROR_FAILURE; } @@ -290,8 +281,6 @@ LookupCacheV4::ApplyUpdate(TableUpdateV4* aTableUpdate, crypto->Finish(false, checksum); if (aTableUpdate->Checksum().IsEmpty()) { LOG(("Update checksum missing.")); - Telemetry::Accumulate(Telemetry::URLCLASSIFIER_UPDATE_ERROR_TYPE, - MISSING_CHECKSUM); // Generate our own checksum to tableUpdate to ensure there is always // checksum in .metadata @@ -300,8 +289,6 @@ LookupCacheV4::ApplyUpdate(TableUpdateV4* aTableUpdate, } else if (aTableUpdate->Checksum() != checksum){ LOG(("Checksum mismatch after applying partial update")); - Telemetry::Accumulate(Telemetry::URLCLASSIFIER_UPDATE_ERROR_TYPE, - CHECKSUM_MISMATCH); return NS_ERROR_FAILURE; } diff --git a/toolkit/components/url-classifier/VariableLengthPrefixSet.cpp b/toolkit/components/url-classifier/VariableLengthPrefixSet.cpp index e9d6770d3..a387a698c 100644 --- a/toolkit/components/url-classifier/VariableLengthPrefixSet.cpp +++ b/toolkit/components/url-classifier/VariableLengthPrefixSet.cpp @@ -209,8 +209,6 @@ VariableLengthPrefixSet::LoadFromFile(nsIFile* aFile) NS_ENSURE_ARG_POINTER(aFile); - Telemetry::AutoTimer<Telemetry::URLCLASSIFIER_VLPS_FILELOAD_TIME> timer; - nsCOMPtr<nsIInputStream> localInFile; nsresult rv = NS_NewLocalFileInputStream(getter_AddRefs(localInFile), aFile, PR_RDONLY | nsIFile::OS_READAHEAD); @@ -255,15 +253,12 @@ VariableLengthPrefixSet::StoreToFile(nsIFile* aFile) uint32_t fileSize = 0; // Preallocate the file storage - { - nsCOMPtr<nsIFileOutputStream> fos(do_QueryInterface(localOutFile)); - Telemetry::AutoTimer<Telemetry::URLCLASSIFIER_VLPS_FALLOCATE_TIME> timer; + nsCOMPtr<nsIFileOutputStream> fos(do_QueryInterface(localOutFile)); - fileSize += mFixedPrefixSet->CalculatePreallocateSize(); - fileSize += CalculatePreallocateSize(); + fileSize += mFixedPrefixSet->CalculatePreallocateSize(); + fileSize += CalculatePreallocateSize(); - Unused << fos->Preallocate(fileSize); - } + Unused << fos->Preallocate(fileSize); // Convert to buffered stream nsCOMPtr<nsIOutputStream> out = diff --git a/toolkit/components/url-classifier/nsUrlClassifierDBService.cpp b/toolkit/components/url-classifier/nsUrlClassifierDBService.cpp index 2ad8b6b51..d3018aa2d 100644 --- a/toolkit/components/url-classifier/nsUrlClassifierDBService.cpp +++ b/toolkit/components/url-classifier/nsUrlClassifierDBService.cpp @@ -37,7 +37,6 @@ #include "mozilla/Mutex.h" #include "mozilla/Preferences.h" #include "mozilla/TimeStamp.h" -#include "mozilla/Telemetry.h" #include "mozilla/Logging.h" #include "prprf.h" #include "prnetdb.h" @@ -320,9 +319,6 @@ nsUrlClassifierDBServiceWorker::HandlePendingLookups() MutexAutoUnlock unlock(mPendingLookupLock); DoLookup(lookup.mKey, lookup.mTables, lookup.mCallback); } - double lookupTime = (TimeStamp::Now() - lookup.mStartTime).ToMilliseconds(); - Telemetry::Accumulate(Telemetry::URLCLASSIFIER_LOOKUP_TIME, - static_cast<uint32_t>(lookupTime)); } return NS_OK; @@ -1818,8 +1814,6 @@ nsUrlClassifierDBService::Shutdown() gShuttingDownThread = true; - Telemetry::AutoTimer<Telemetry::URLCLASSIFIER_SHUTDOWN_TIME> timer; - mCompleters.Clear(); nsCOMPtr<nsIPrefBranch> prefs = do_GetService(NS_PREFSERVICE_CONTRACTID); diff --git a/toolkit/components/url-classifier/nsUrlClassifierPrefixSet.cpp b/toolkit/components/url-classifier/nsUrlClassifierPrefixSet.cpp index 874565470..3cfdf7a35 100644 --- a/toolkit/components/url-classifier/nsUrlClassifierPrefixSet.cpp +++ b/toolkit/components/url-classifier/nsUrlClassifierPrefixSet.cpp @@ -315,8 +315,6 @@ nsUrlClassifierPrefixSet::LoadFromFile(nsIFile* aFile) { MutexAutoLock lock(mLock); - Telemetry::AutoTimer<Telemetry::URLCLASSIFIER_PS_FILELOAD_TIME> timer; - nsCOMPtr<nsIInputStream> localInFile; nsresult rv = NS_NewLocalFileInputStream(getter_AddRefs(localInFile), aFile, PR_RDONLY | nsIFile::OS_READAHEAD); @@ -356,17 +354,13 @@ nsUrlClassifierPrefixSet::StoreToFile(nsIFile* aFile) uint32_t fileSize; - // Preallocate the file storage - { - nsCOMPtr<nsIFileOutputStream> fos(do_QueryInterface(localOutFile)); - Telemetry::AutoTimer<Telemetry::URLCLASSIFIER_PS_FALLOCATE_TIME> timer; + nsCOMPtr<nsIFileOutputStream> fos(do_QueryInterface(localOutFile)); - fileSize = CalculatePreallocateSize(); + fileSize = CalculatePreallocateSize(); - // Ignore failure, the preallocation is a hint and we write out the entire - // file later on - Unused << fos->Preallocate(fileSize); - } + // Ignore failure, the preallocation is a hint and we write out the entire + // file later on + Unused << fos->Preallocate(fileSize); // Convert to buffered stream nsCOMPtr<nsIOutputStream> out = diff --git a/toolkit/components/url-classifier/nsUrlClassifierStreamUpdater.cpp b/toolkit/components/url-classifier/nsUrlClassifierStreamUpdater.cpp index 554bff342..e230f6951 100644 --- a/toolkit/components/url-classifier/nsUrlClassifierStreamUpdater.cpp +++ b/toolkit/components/url-classifier/nsUrlClassifierStreamUpdater.cpp @@ -646,9 +646,6 @@ nsUrlClassifierStreamUpdater::OnStartRequest(nsIRequest *request, if (NS_FAILED(status)) { // Assume we're overloading the server and trigger backoff. downloadError = true; - mozilla::Telemetry::Accumulate(mozilla::Telemetry::URLCLASSIFIER_UPDATE_REMOTE_STATUS, - 15 /* unknown response code */); - } else { bool succeeded = false; rv = httpChannel->GetRequestSucceeded(&succeeded); @@ -657,8 +654,6 @@ nsUrlClassifierStreamUpdater::OnStartRequest(nsIRequest *request, uint32_t requestStatus; rv = httpChannel->GetResponseStatus(&requestStatus); NS_ENSURE_SUCCESS(rv, rv); - mozilla::Telemetry::Accumulate(mozilla::Telemetry::URLCLASSIFIER_UPDATE_REMOTE_STATUS, - HTTPStatusToBucket(requestStatus)); LOG(("nsUrlClassifierStreamUpdater::OnStartRequest %s (%d)", succeeded ? "succeeded" : "failed", requestStatus)); if (!succeeded) { diff --git a/toolkit/content/browser-content.js b/toolkit/content/browser-content.js index 2276f8a0d..e1114672c 100644 --- a/toolkit/content/browser-content.js +++ b/toolkit/content/browser-content.js @@ -841,6 +841,35 @@ var FindBar = { fakeEvent[k] = event[k]; } } +#ifdef MC_PALEMOON + let findBarId = "FindToolbar"; + // The FindBar is in the chrome window's context, not in tabbrowser + // - see also bug 537013 + let chromeWin = null; + try { + chromeWin = content + .QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIWebNavigation) + .QueryInterface(Ci.nsIDocShellTreeItem) + .rootTreeItem + .QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIDOMWindow) + .QueryInterface(Ci.nsIDOMChromeWindow); + } catch (e) { + Cu.reportError( + "The FindBar - the chrome window's context was not detected:\n" + e); + } + if (chromeWin && chromeWin.document.getElementById(findBarId)) { + try { + chromeWin.document.getElementById(findBarId) + .browser = Services.wm.getMostRecentWindow("navigator:browser") + .gBrowser.mCurrentBrowser; + } catch (e) { + Cu.reportError( + "The FindBar - cannot set the property 'browser':\n" + e); + } + } +#endif // sendSyncMessage returns an array of the responses from all listeners let rv = sendSyncMessage("Findbar:Keypress", { diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn index e1d432cb3..c11d3abed 100644 --- a/toolkit/content/jar.mn +++ b/toolkit/content/jar.mn @@ -39,7 +39,7 @@ toolkit.jar: content/global/plugins.html content/global/plugins.css content/global/browser-child.js - content/global/browser-content.js +* content/global/browser-content.js * content/global/buildconfig.html content/global/contentAreaUtils.js #ifndef MOZ_FENNEC diff --git a/toolkit/content/widgets/findbar.xml b/toolkit/content/widgets/findbar.xml index b92fb1d05..c312a6a25 100644 --- a/toolkit/content/widgets/findbar.xml +++ b/toolkit/content/widgets/findbar.xml @@ -282,6 +282,7 @@ return this._browser; ]]></getter> <setter><![CDATA[ + let prefsvc = this._prefsvc; if (this._browser) { if (this._browser.messageManager) { this._browser.messageManager.removeMessageListener("Findbar:Keypress", this); @@ -300,7 +301,9 @@ this._browser.messageManager.addMessageListener("Findbar:Mouseup", this); this._browser.finder.addResultListener(this); - this._findField.value = this._browser._lastSearchString; + if (prefsvc.getBoolPref("findbar.termPerTab") == true) { + this._findField.value = this._browser._lastSearchString; + } } return val; ]]></setter> diff --git a/toolkit/content/widgets/tabbox.xml b/toolkit/content/widgets/tabbox.xml index 02adb70b3..60c395c13 100644 --- a/toolkit/content/widgets/tabbox.xml +++ b/toolkit/content/widgets/tabbox.xml @@ -792,19 +792,6 @@ <field name="arrowKeysShouldWrap" readonly="true"> /Mac/.test(navigator.platform) </field> - <property name="TelemetryStopwatch" readonly="true"> - <getter><![CDATA[ - let module = {}; - Cu.import("resource://gre/modules/TelemetryStopwatch.jsm", module); - Object.defineProperty(this, "TelemetryStopwatch", { - configurable: true, - enumerable: true, - writable: true, - value: module.TelemetryStopwatch - }); - return module.TelemetryStopwatch; - ]]></getter> - </property> </implementation> <handlers> @@ -814,11 +801,6 @@ return; if (this != this.parentNode.selectedItem) { // Not selected yet - let stopwatchid = this.parentNode.getAttribute("stopwatchid"); - if (stopwatchid) { - this.TelemetryStopwatch.start(stopwatchid); - } - // Call this before setting the 'ignorefocus' attribute because this // will pass on focus if the formerly selected tab was focused as well. this.parentNode._selectNewTab(this); @@ -836,10 +818,6 @@ this.setAttribute("ignorefocus", "true"); setTimeout(tab => tab.removeAttribute("ignorefocus"), 0, this); } - - if (stopwatchid) { - this.TelemetryStopwatch.finish(stopwatchid); - } } // Otherwise this tab is already selected and we will fall // through to mousedown behavior which sets focus on the current tab, diff --git a/toolkit/locales/Makefile.in b/toolkit/locales/Makefile.in index 189e0b1b0..198d9aaa8 100644 --- a/toolkit/locales/Makefile.in +++ b/toolkit/locales/Makefile.in @@ -16,7 +16,9 @@ libs-%: @$(MAKE) -C ../../netwerk/locales/ libs AB_CD=$* XPI_NAME=locale-$* @$(MAKE) -C ../../dom/locales/ libs AB_CD=$* XPI_NAME=locale-$* @$(MAKE) -C ../../security/manager/locales/ libs AB_CD=$* XPI_NAME=locale-$* +ifdef MOZ_DEVTOOLS_SERVER @$(MAKE) -C ../../devtools/shared/locales/ libs AB_CD=$* XPI_NAME=locale-$* +endif @$(MAKE) libs AB_CD=$* XPI_NAME=locale-$* # target to be used by multi-locale l10n builds, just add this locale diff --git a/toolkit/themes/linux/global/jar.mn b/toolkit/themes/linux/global/jar.mn index b161f8cae..ba665adff 100644 --- a/toolkit/themes/linux/global/jar.mn +++ b/toolkit/themes/linux/global/jar.mn @@ -32,7 +32,7 @@ toolkit.jar: skin/classic/global/splitter.css skin/classic/global/tabbox.css skin/classic/global/textbox.css - skin/classic/global/toolbar.css +* skin/classic/global/toolbar.css skin/classic/global/toolbarbutton.css skin/classic/global/tree.css skin/classic/global/alerts/alert.css (alerts/alert.css) diff --git a/toolkit/themes/linux/global/toolbar.css b/toolkit/themes/linux/global/toolbar.css index f17fea12f..1d52aeb8f 100644 --- a/toolkit/themes/linux/global/toolbar.css +++ b/toolkit/themes/linux/global/toolbar.css @@ -31,11 +31,21 @@ menubar, toolbar[type="menubar"] { padding: 1px 0px; } + +%ifdef MOZ_AUSTRALIS +menubar:-moz-lwtheme, +toolbar:-moz-lwtheme { + -moz-appearance: none; + color: inherit; +} +%else menubar:-moz-lwtheme, toolbar:-moz-lwtheme { -moz-appearance: none; color: inherit; + border-style: none; } +%endif /* in browser.xul, the menubar is inside a toolbar... */ toolbaritem > menubar { diff --git a/toolkit/themes/osx/global/jar.mn b/toolkit/themes/osx/global/jar.mn index 2b7d19641..9ca73cc6b 100644 --- a/toolkit/themes/osx/global/jar.mn +++ b/toolkit/themes/osx/global/jar.mn @@ -44,7 +44,7 @@ toolkit.jar: skin/classic/global/tabbox.css skin/classic/global/textbox.css skin/classic/global/datetimepicker.css - skin/classic/global/toolbar.css +* skin/classic/global/toolbar.css skin/classic/global/toolbarbutton.css * skin/classic/global/tree.css * skin/classic/global/viewbuttons.css diff --git a/toolkit/themes/osx/global/toolbar.css b/toolkit/themes/osx/global/toolbar.css index 820436f14..f07332d2f 100644 --- a/toolkit/themes/osx/global/toolbar.css +++ b/toolkit/themes/osx/global/toolbar.css @@ -16,12 +16,21 @@ toolbar { -moz-appearance: toolbar; } +%ifdef MOZ_AUSTRALIS menubar:-moz-lwtheme, toolbar:-moz-lwtheme { -moz-appearance: none; background: none; border-color: transparent; } +%else +menubar:-moz-lwtheme, +toolbar:-moz-lwtheme { + -moz-appearance: none; + background: none; + border-style: none; +} +%endif menubar { -moz-appearance: dialog; /* For content menubars, "toolbar" is too dark, so we use "dialog". */ diff --git a/toolkit/themes/windows/global/jar.mn b/toolkit/themes/windows/global/jar.mn index a2cc9e2ea..6f0cf4130 100644 --- a/toolkit/themes/windows/global/jar.mn +++ b/toolkit/themes/windows/global/jar.mn @@ -37,7 +37,7 @@ toolkit.jar: skin/classic/global/printPreview.css skin/classic/global/scrollbox.css skin/classic/global/splitter.css - skin/classic/global/toolbar.css +* skin/classic/global/toolbar.css skin/classic/global/toolbarbutton.css * skin/classic/global/tree.css skin/classic/global/alerts/alert.css (alerts/alert.css) diff --git a/toolkit/themes/windows/global/toolbar.css b/toolkit/themes/windows/global/toolbar.css index dcd8d361f..38c8a617a 100644 --- a/toolkit/themes/windows/global/toolbar.css +++ b/toolkit/themes/windows/global/toolbar.css @@ -37,7 +37,8 @@ toolbar:first-child, menubar { } /* ::::: lightweight theme ::::: */ - + +%ifdef MOZ_AUSTRALIS menubar:-moz-lwtheme, toolbox:-moz-lwtheme, toolbar:-moz-lwtheme { @@ -45,6 +46,15 @@ toolbar:-moz-lwtheme { background: none; border-color: transparent; } +%else +menubar:-moz-lwtheme, +toolbox:-moz-lwtheme, +toolbar:-moz-lwtheme { + -moz-appearance: none; + background: none; + border-style: none; +} +%endif /* ::::: toolbar decorations ::::: */ diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp index 40f9ead79..59a72c432 100644 --- a/toolkit/xre/nsAppRunner.cpp +++ b/toolkit/xre/nsAppRunner.cpp @@ -4338,11 +4338,6 @@ mozilla::BrowserTabsRemoteAutostart() gBrowserTabsRemoteStatus = status; - mozilla::Telemetry::Accumulate(mozilla::Telemetry::E10S_STATUS, status); - if (prefEnabled) { - mozilla::Telemetry::Accumulate(mozilla::Telemetry::E10S_BLOCKED_FROM_RUNNING, - !gBrowserTabsRemoteAutostart); - } return gBrowserTabsRemoteAutostart; } diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp index d904cb83a..265652477 100644 --- a/toolkit/xre/nsXREDirProvider.cpp +++ b/toolkit/xre/nsXREDirProvider.cpp @@ -953,27 +953,6 @@ nsXREDirProvider::DoStartup() else mode = 2; } - mozilla::Telemetry::Accumulate(mozilla::Telemetry::SAFE_MODE_USAGE, mode); - - // Telemetry about number of profiles. - nsCOMPtr<nsIToolkitProfileService> profileService = - do_GetService("@mozilla.org/toolkit/profile-service;1"); - if (profileService) { - nsCOMPtr<nsISimpleEnumerator> profiles; - rv = profileService->GetProfiles(getter_AddRefs(profiles)); - if (NS_WARN_IF(NS_FAILED(rv))) { - return rv; - } - - uint32_t count = 0; - nsCOMPtr<nsISupports> profile; - while (NS_SUCCEEDED(profiles->GetNext(getter_AddRefs(profile)))) { - ++count; - } - - mozilla::Telemetry::Accumulate(mozilla::Telemetry::NUMBER_OF_PROFILES, - count); - } obsSvc->NotifyObservers(nullptr, "profile-initial-state", nullptr); } diff --git a/widget/android/fennec/Telemetry.h b/widget/android/fennec/Telemetry.h index c72735496..458889ef0 100644 --- a/widget/android/fennec/Telemetry.h +++ b/widget/android/fennec/Telemetry.h @@ -44,7 +44,6 @@ public: AddHistogram(jni::String::Param aName, int32_t aValue) { MOZ_ASSERT(aName); - mozilla::Telemetry::Accumulate(aName->ToCString().get(), aValue); } static void @@ -52,8 +51,6 @@ public: int32_t aValue) { MOZ_ASSERT(aName && aKey); - mozilla::Telemetry::Accumulate(aName->ToCString().get(), - aKey->ToCString(), aValue); } static void diff --git a/widget/nsIdleService.cpp b/widget/nsIdleService.cpp index 6a2833081..a1a2566df 100644 --- a/widget/nsIdleService.cpp +++ b/widget/nsIdleService.cpp @@ -716,9 +716,6 @@ nsIdleService::IdleTimerCallback(void) return; } - // Tell expired listeners they are expired,and find the next timeout - Telemetry::AutoTimer<Telemetry::IDLE_NOTIFY_IDLE_MS> timer; - // We need to initialise the time to the next idle switch. mDeltaToNextIdleSwitchInS = UINT32_MAX; diff --git a/widget/windows/WinCompositorWidget.cpp b/widget/windows/WinCompositorWidget.cpp index f660bd019..99ce67573 100644 --- a/widget/windows/WinCompositorWidget.cpp +++ b/widget/windows/WinCompositorWidget.cpp @@ -22,6 +22,7 @@ using namespace mozilla::gfx; WinCompositorWidget::WinCompositorWidget(const CompositorWidgetInitData& aInitData) : mWidgetKey(aInitData.widgetKey()), mWnd(reinterpret_cast<HWND>(aInitData.hWnd())), + mTransparentSurfaceLock("mTransparentSurfaceLock"), mTransparencyMode(static_cast<nsTransparencyMode>(aInitData.transparencyMode())), mMemoryDC(nullptr), mCompositeDC(nullptr), @@ -39,6 +40,7 @@ WinCompositorWidget::WinCompositorWidget(const CompositorWidgetInitData& aInitDa void WinCompositorWidget::OnDestroyWindow() { + MutexAutoLock lock(mTransparentSurfaceLock); mTransparentSurface = nullptr; mMemoryDC = nullptr; } @@ -75,6 +77,8 @@ WinCompositorWidget::GetClientSize() already_AddRefed<gfx::DrawTarget> WinCompositorWidget::StartRemoteDrawing() { + MutexAutoLock lock(mTransparentSurfaceLock); + MOZ_ASSERT(!mCompositeDC); RefPtr<gfxASurface> surf; @@ -229,6 +233,7 @@ WinCompositorWidget::LeavePresentLock() RefPtr<gfxASurface> WinCompositorWidget::EnsureTransparentSurface() { + mTransparentSurfaceLock.AssertCurrentThreadOwns(); MOZ_ASSERT(mTransparencyMode == eTransparencyTransparent); IntSize size = GetClientSize().ToUnknownSize(); @@ -245,6 +250,7 @@ WinCompositorWidget::EnsureTransparentSurface() void WinCompositorWidget::CreateTransparentSurface(const gfx::IntSize& aSize) { + mTransparentSurfaceLock.AssertCurrentThreadOwns(); MOZ_ASSERT(!mTransparentSurface && !mMemoryDC); RefPtr<gfxWindowsSurface> surface = new gfxWindowsSurface(aSize, SurfaceFormat::A8R8G8B8_UINT32); mTransparentSurface = surface; @@ -254,6 +260,7 @@ WinCompositorWidget::CreateTransparentSurface(const gfx::IntSize& aSize) void WinCompositorWidget::UpdateTransparency(nsTransparencyMode aMode) { + MutexAutoLock lock(mTransparentSurfaceLock); if (mTransparencyMode == aMode) { return; } @@ -270,6 +277,7 @@ WinCompositorWidget::UpdateTransparency(nsTransparencyMode aMode) void WinCompositorWidget::ClearTransparentWindow() { + MutexAutoLock lock(mTransparentSurfaceLock); if (!mTransparentSurface) { return; } diff --git a/widget/windows/WinCompositorWidget.h b/widget/windows/WinCompositorWidget.h index 9661cab45..1689a8641 100644 --- a/widget/windows/WinCompositorWidget.h +++ b/widget/windows/WinCompositorWidget.h @@ -10,6 +10,7 @@ #include "gfxASurface.h" #include "mozilla/gfx/CriticalSection.h" #include "mozilla/gfx/Point.h" +#include "mozilla/Mutex.h" #include "nsIWidget.h" class nsWindow; @@ -83,6 +84,8 @@ public: return mWnd; } + mozilla::Mutex& GetTransparentSurfaceLock() { return mTransparentSurfaceLock; } + private: HDC GetWindowSurface(); void FreeWindowSurface(HDC dc); @@ -95,6 +98,7 @@ private: gfx::CriticalSection mPresentLock; // Transparency handling. + mozilla::Mutex mTransparentSurfaceLock; nsTransparencyMode mTransparencyMode; RefPtr<gfxASurface> mTransparentSurface; HDC mMemoryDC; diff --git a/widget/windows/nsLookAndFeel.cpp b/widget/windows/nsLookAndFeel.cpp index 97f81abfd..a907622d9 100644 --- a/widget/windows/nsLookAndFeel.cpp +++ b/widget/windows/nsLookAndFeel.cpp @@ -11,7 +11,6 @@ #include "nsUXThemeConstants.h" #include "gfxFont.h" #include "WinUtils.h" -#include "mozilla/Telemetry.h" #include "mozilla/WindowsVersion.h" #include "gfxFontConstants.h" @@ -65,8 +64,6 @@ nsLookAndFeel::nsLookAndFeel() : nsXPLookAndFeel() , mUseAccessibilityTheme(0) { - mozilla::Telemetry::Accumulate(mozilla::Telemetry::TOUCH_ENABLED_DEVICE, - WinUtils::IsTouchDeviceSupportPresent()); } nsLookAndFeel::~nsLookAndFeel() diff --git a/widget/windows/nsWindow.cpp b/widget/windows/nsWindow.cpp index b2bb59bd3..122d18686 100644 --- a/widget/windows/nsWindow.cpp +++ b/widget/windows/nsWindow.cpp @@ -366,6 +366,9 @@ static const int32_t kResizableBorderMinSize = 3; // Cached pointer events enabler value, True if pointer events are enabled. static bool gIsPointerEventsEnabled = false; +// Cached scroll outside menu enabler value, True if scrolling is allowed. +static bool gIsScrollingOutsideEnabled = false; + // We should never really try to accelerate windows bigger than this. In some // cases this might lead to no D3D9 acceleration where we could have had it // but D3D9 does not reliably report when it supports bigger windows. 8192 @@ -665,6 +668,10 @@ nsWindow::nsWindow() Preferences::AddBoolVarCache(&gIsPointerEventsEnabled, "dom.w3c_pointer_events.enabled", gIsPointerEventsEnabled); + Preferences::AddBoolVarCache(&gIsScrollingOutsideEnabled, + "ui.menu.allow_content_scroll", + gIsScrollingOutsideEnabled); + } // !sInstanceCount mIdleService = nullptr; @@ -4225,10 +4232,6 @@ nsWindow::DispatchMouseEvent(EventMessage aEventMessage, WPARAM wParam, } if (WinUtils::GetIsMouseFromTouch(aEventMessage)) { - if (aEventMessage == eMouseDown) { - Telemetry::Accumulate(Telemetry::FX_TOUCH_USED, 1); - } - if (mTouchWindow) { // If mTouchWindow is true, then we must have APZ enabled and be // feeding it raw touch events. In that case we don't need to @@ -6743,8 +6746,6 @@ bool nsWindow::OnGesture(WPARAM wParam, LPARAM lParam) bool endFeedback = true; if (mGesture.PanDeltaToPixelScroll(wheelEvent)) { - mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS, - (uint32_t) ScrollInputMethod::MainThreadTouch); DispatchEvent(&wheelEvent, status); } @@ -7703,7 +7704,8 @@ nsWindow::DealWithPopups(HWND aWnd, UINT aMessage, break; } } - return consumeRollupEvent; + // Consume event if appropriate unless overridden. + return consumeRollupEvent && !gIsScrollingOutsideEnabled; case WM_ACTIVATEAPP: break; diff --git a/widget/windows/nsWindowGfx.cpp b/widget/windows/nsWindowGfx.cpp index a88631f89..9b303a0f2 100644 --- a/widget/windows/nsWindowGfx.cpp +++ b/widget/windows/nsWindowGfx.cpp @@ -320,6 +320,8 @@ bool nsWindow::OnPaint(HDC aDC, uint32_t aNestingLevel) #if defined(MOZ_XUL) // don't support transparency for non-GDI rendering, for now if (eTransparencyTransparent == mTransparencyMode) { + // This mutex needs to be held when EnsureTransparentSurface is called. + MutexAutoLock lock(mBasicLayersSurface->GetTransparentSurfaceLock()); targetSurface = mBasicLayersSurface->EnsureTransparentSurface(); } #endif diff --git a/xpcom/base/CycleCollectedJSContext.cpp b/xpcom/base/CycleCollectedJSContext.cpp index 4af8fe4dd..02fc1aa4c 100644 --- a/xpcom/base/CycleCollectedJSContext.cpp +++ b/xpcom/base/CycleCollectedJSContext.cpp @@ -1547,9 +1547,6 @@ IncrementalFinalizeRunnable::Run() } } - uint32_t duration = (uint32_t)((TimeStamp::Now() - start).ToMilliseconds()); - Telemetry::Accumulate(Telemetry::DEFERRED_FINALIZE_ASYNC, duration); - return NS_OK; } diff --git a/xpcom/base/nsCycleCollector.cpp b/xpcom/base/nsCycleCollector.cpp index b2c15a1dd..a349e086d 100644 --- a/xpcom/base/nsCycleCollector.cpp +++ b/xpcom/base/nsCycleCollector.cpp @@ -528,15 +528,6 @@ public: #define CC_GRAPH_ASSERT(b) #endif -#define CC_TELEMETRY(_name, _value) \ - PR_BEGIN_MACRO \ - if (NS_IsMainThread()) { \ - Telemetry::Accumulate(Telemetry::CYCLE_COLLECTOR##_name, _value); \ - } else { \ - Telemetry::Accumulate(Telemetry::CYCLE_COLLECTOR_WORKER##_name, _value); \ - } \ - PR_END_MACRO - enum NodeColor { black, white, grey }; // This structure should be kept as small as possible; we may expect @@ -2966,7 +2957,6 @@ nsCycleCollector::ScanWeakMaps() if (failed) { MOZ_ASSERT(false, "Ran out of memory in ScanWeakMaps"); - CC_TELEMETRY(_OOM, true); } } @@ -3109,7 +3099,6 @@ nsCycleCollector::ScanIncrementalRoots() if (failed) { NS_ASSERTION(false, "Ran out of memory in ScanIncrementalRoots"); - CC_TELEMETRY(_OOM, true); } } @@ -3171,7 +3160,6 @@ nsCycleCollector::ScanBlackNodes() if (failed) { NS_ASSERTION(false, "Ran out of memory in ScanBlackNodes"); - CC_TELEMETRY(_OOM, true); } } @@ -3501,7 +3489,6 @@ nsCycleCollector::FixGrayBits(bool aForceGC, TimeLog& aTimeLog) bool needGC = !mJSContext->AreGCGrayBitsValid(); // Only do a telemetry ping for non-shutdown CCs. - CC_TELEMETRY(_NEED_GC, needGC); if (!needGC) { return; } @@ -3553,10 +3540,6 @@ nsCycleCollector::CleanupAfterCollection() printf(".\ncc: \n"); #endif - CC_TELEMETRY( , interval); - CC_TELEMETRY(_VISITED_REF_COUNTED, mResults.mVisitedRefCounted); - CC_TELEMETRY(_VISITED_GCED, mResults.mVisitedGCed); - CC_TELEMETRY(_COLLECTED, mWhiteNodeCount); timeLog.Checkpoint("CleanupAfterCollection::telemetry"); if (mJSContext) { diff --git a/xpcom/base/nsMemoryReporterManager.cpp b/xpcom/base/nsMemoryReporterManager.cpp index 2d4f3fa9c..bfeda063b 100644 --- a/xpcom/base/nsMemoryReporterManager.cpp +++ b/xpcom/base/nsMemoryReporterManager.cpp @@ -440,7 +440,6 @@ ResidentDistinguishedAmountHelper(int64_t* aN, bool aDoPurge) { #ifdef HAVE_JEMALLOC_STATS if (aDoPurge) { - Telemetry::AutoTimer<Telemetry::MEMORY_FREE_PURGED_PAGES_MS> timer; jemalloc_purge_freed_pages(); } #endif diff --git a/xpcom/build/XPCOMInit.cpp b/xpcom/build/XPCOMInit.cpp index e8ee5828a..b89f51a98 100644 --- a/xpcom/build/XPCOMInit.cpp +++ b/xpcom/build/XPCOMInit.cpp @@ -123,6 +123,8 @@ extern nsresult nsStringInputStreamConstructor(nsISupports*, REFNSIID, void**); #include "nsMemoryInfoDumper.h" #include "nsSecurityConsoleMessage.h" #include "nsMessageLoop.h" +#include "nss.h" +#include "ssl.h" #include "nsStatusReporterManager.h" @@ -1043,6 +1045,17 @@ ShutdownXPCOM(nsIServiceManager* aServMgr) sInitializedJS = false; } + // At this point all networking threads should have been joined and the + // component manager is shut down. Any remaining objects that hold NSS + // resources (should!) have been released, so we can safely shut down NSS. + if (NSS_IsInitialized()) { + SSL_ClearSessionCache(); + // XXX: It would be nice if we can enforce this shutdown. + if (NSS_Shutdown() != SECSuccess) { + NS_WARNING("NSS Shutdown failed - some resources are still in use"); + } + } + // Release our own singletons // Do this _after_ shutting down the component manager, because the // JS component loader will use XPConnect to call nsIModule::canUnload, diff --git a/xpcom/glue/Observer.h b/xpcom/glue/Observer.h index 958e5e4a9..cf9e507dd 100644 --- a/xpcom/glue/Observer.h +++ b/xpcom/glue/Observer.h @@ -7,7 +7,7 @@ #ifndef mozilla_Observer_h #define mozilla_Observer_h -#include "nsTArray.h" +#include "nsTObserverArray.h" namespace mozilla { @@ -48,7 +48,7 @@ public: */ void AddObserver(Observer<T>* aObserver) { - mObservers.AppendElement(aObserver); + mObservers.AppendElementUnlessExists(aObserver); } /** @@ -67,15 +67,15 @@ public: void Broadcast(const T& aParam) { - nsTArray<Observer<T>*> observersCopy(mObservers); - uint32_t size = observersCopy.Length(); - for (uint32_t i = 0; i < size; ++i) { - observersCopy[i]->Notify(aParam); + typename nsTObserverArray<Observer<T>*>::ForwardIterator iter(mObservers); + while (iter.HasMore()) { + Observer<T>* obs = iter.GetNext(); + obs->Notify(aParam); } } protected: - nsTArray<Observer<T>*> mObservers; + nsTObserverArray<Observer<T>*> mObservers; }; } // namespace mozilla diff --git a/xpcom/glue/nsTHashtable.h b/xpcom/glue/nsTHashtable.h index 705b0294e..830f52e88 100644 --- a/xpcom/glue/nsTHashtable.h +++ b/xpcom/glue/nsTHashtable.h @@ -372,7 +372,7 @@ template<class EntryType> PLDHashNumber nsTHashtable<EntryType>::s_HashKey(const void* aKey) { - return EntryType::HashKey(static_cast<const KeyTypePointer>(aKey)); + return EntryType::HashKey(static_cast<KeyTypePointer>(aKey)); } template<class EntryType> @@ -381,7 +381,7 @@ nsTHashtable<EntryType>::s_MatchEntry(const PLDHashEntryHdr* aEntry, const void* aKey) { return ((const EntryType*)aEntry)->KeyEquals( - static_cast<const KeyTypePointer>(aKey)); + static_cast<KeyTypePointer>(aKey)); } template<class EntryType> diff --git a/xpcom/string/nsReadableUtilsImpl.h b/xpcom/string/nsReadableUtilsImpl.h index ff1497b51..94f18dffc 100644 --- a/xpcom/string/nsReadableUtilsImpl.h +++ b/xpcom/string/nsReadableUtilsImpl.h @@ -18,7 +18,7 @@ inline bool IsASCII(char16_t aChar) { inline const char16_t* aligned(const char16_t* aPtr, const uintptr_t aMask) { return reinterpret_cast<const char16_t*>( - reinterpret_cast<const uintptr_t>(aPtr) & ~aMask); + reinterpret_cast<uintptr_t>(aPtr) & ~aMask); } /** diff --git a/xpcom/threads/HangMonitor.cpp b/xpcom/threads/HangMonitor.cpp index 6def6ed61..8003ef515 100644 --- a/xpcom/threads/HangMonitor.cpp +++ b/xpcom/threads/HangMonitor.cpp @@ -249,8 +249,6 @@ NotifyActivity(ActivityType aActivityType) // If we have UI activity we should reset the timer and report it if (aActivityType == kUIActivity) { - mozilla::Telemetry::Accumulate(mozilla::Telemetry::EVENTLOOP_UI_ACTIVITY_EXP_MS, - cumulativeUILagMS); cumulativeUILagMS = 0; } |