Merge inbound to mozilla-central. a=merge
authorshindli <shindli@mozilla.com>
Mon, 24 Sep 2018 19:46:04 +0300
changeset 493640 ea12f08bca89233f4f1037b6061a3877ab81d841
parent 493610 bdc24dded5656cf650d9cac7d6e4e43fd214d58c (diff)
parent 493639 fcd124fe04e7773064b94640ad4b0545f633e50e (current diff)
child 493654 7942f4faa153bc273d9676bdb041fb3f7c3be7dc
child 493717 bf90894b0f2eb4aa876496a71dae66107559dd42
push id9984
push userffxbld-merge
push dateMon, 15 Oct 2018 21:07:35 +0000
treeherdermozilla-beta@183d27ea8570 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone64.0a1
first release with
nightly linux32
ea12f08bca89 / 64.0a1 / 20180924220042 / files
nightly linux64
ea12f08bca89 / 64.0a1 / 20180924220042 / files
nightly mac
ea12f08bca89 / 64.0a1 / 20180924220042 / files
nightly win32
ea12f08bca89 / 64.0a1 / 20180924220042 / files
nightly win64
ea12f08bca89 / 64.0a1 / 20180924220042 / files
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
releases
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Merge inbound to mozilla-central. a=merge
devtools/client/debugger/panel.js
devtools/client/framework/toolbox.js
netwerk/cookie/test/unit/test_bug1267910.js
--- a/.taskcluster.yml
+++ b/.taskcluster.yml
@@ -72,16 +72,20 @@ tasks:
             - "tc-treeherder.v2.${repository.project}.${push.revision}.${_pushId}"
             - $if: 'tasks_for == "hg-push"'
               then:
                 - "index.gecko.v2.${repository.project}.latest.taskgraph.decision"
                 - "index.gecko.v2.${repository.project}.revision.${push.revision}.taskgraph.decision"
                 - "index.gecko.v2.${repository.project}.pushlog-id.${_pushId}.decision"
                 - "notify.email.${ownerEmail}.on-failed"
                 - "notify.email.${ownerEmail}.on-exception"
+                # Send a notification email if the push comes from try
+                - $if: 'repository.project == "try"'
+                  then:
+                    "notify.email.${ownerEmail}.on-completed"
                 # These are the old index routes for the decision task.
                 # They are still here so external tools that referenced them continue to work.
                 - "index.gecko.v2.${repository.project}.latest.firefox.decision"
                 - "index.gecko.v2.${repository.project}.revision.${push.revision}.firefox.decision"
               else:
                 $if: 'tasks_for == "action"'
                 then:
                 - "notify.email.taskcluster-notifications+action-task@mozilla.com.on-failed"
@@ -224,8 +228,19 @@ tasks:
                     taskGroupId: '${action.taskGroupId}'
                     taskId: {$eval: 'taskId'}
                     input: {$eval: 'input'}
                     parameters: {$eval: 'parameters'}
             - $if: 'tasks_for == "cron"'
               then:
                 cron: {$json: {$eval: 'cron'}}
             - tasks_for: '${tasks_for}'
+            # Email format for try pushes
+            - $if: 'tasks_for == "hg-push" && repository.project == "try"'
+              then:
+                notify:
+                  email:
+                    subject: "Thank you for your try submission of ${push.revision}. It's the best!"
+                    content: "Your try push has been submitted. Use the link to view the status of your jobs."
+                    link:
+                      text: "Treeherder Jobs"
+                      href: "https://treeherder.mozilla.org/#/jobs?repo=${repository.project}&revision=${push.revision}"
+          
--- a/browser/base/content/browser-contentblocking.js
+++ b/browser/base/content/browser-contentblocking.js
@@ -1,13 +1,14 @@
 /* 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 FastBlock = {
+  reportBreakageLabel: "fastblock",
   PREF_ENABLED: "browser.fastblock.enabled",
   PREF_UI_ENABLED: "browser.contentblocking.fastblock.control-center.ui.enabled",
 
   get categoryItem() {
     delete this.categoryItem;
     return this.categoryItem = document.getElementById("identity-popup-content-blocking-category-fastblock");
   },
 
@@ -17,16 +18,17 @@ var FastBlock = {
   },
 
   isBlockerActivated(state) {
     return state & Ci.nsIWebProgressListener.STATE_BLOCKED_SLOW_TRACKING_CONTENT;
   },
 };
 
 var TrackingProtection = {
+  reportBreakageLabel: "trackingprotection",
   PREF_ENABLED_GLOBALLY: "privacy.trackingprotection.enabled",
   PREF_ENABLED_IN_PRIVATE_WINDOWS: "privacy.trackingprotection.pbmode.enabled",
   PREF_UI_ENABLED: "browser.contentblocking.trackingprotection.control-center.ui.enabled",
   enabledGlobally: false,
   enabledInPrivateWindows: false,
 
   get categoryItem() {
     delete this.categoryItem;
@@ -134,16 +136,17 @@ var TrackingProtection = {
   },
 
   isBlockerActivated(state) {
     return state & Ci.nsIWebProgressListener.STATE_BLOCKED_TRACKING_CONTENT;
   },
 };
 
 var ThirdPartyCookies = {
+  reportBreakageLabel: "cookierestrictions",
   PREF_ENABLED: "network.cookie.cookieBehavior",
   PREF_ENABLED_VALUES: [
     // These values match the ones exposed under the Content Blocking section
     // of the Preferences UI.
     Ci.nsICookieService.BEHAVIOR_REJECT_FOREIGN,  // Block all third-party cookies
     Ci.nsICookieService.BEHAVIOR_REJECT_TRACKER,  // Block third-party cookies from trackers
   ],
   PREF_UI_ENABLED: "browser.contentblocking.rejecttrackers.control-center.ui.enabled",
@@ -411,16 +414,27 @@ var ContentBlocking = {
     body += `${FastBlock.PREF_UI_ENABLED}: ${Services.prefs.getBoolPref(FastBlock.PREF_UI_ENABLED)}\n`;
     body += `browser.fastblock.timeout: ${Services.prefs.getIntPref("browser.fastblock.timeout")}\n`;
 
     let comments = document.getElementById("identity-popup-breakageReportView-collection-comments");
     body += "\n**Comments**\n" + comments.value;
 
     formData.set("body", body);
 
+    let activatedBlockers = [];
+    for (let blocker of this.blockers) {
+      if (blocker.activated) {
+        activatedBlockers.push(blocker.reportBreakageLabel);
+      }
+    }
+
+    if (activatedBlockers.length) {
+      formData.set("labels", activatedBlockers.join(","));
+    }
+
     fetch(reportEndpoint, {
       method: "POST",
       credentials: "omit",
       body: formData,
     }).then(function(response) {
       if (!response.ok) {
         Cu.reportError(`Content Blocking report to ${reportEndpoint} failed with status ${response.status}`);
       }
@@ -466,19 +480,24 @@ var ContentBlocking = {
     // play it in full again and avoid choppiness.
     if (webProgress.isTopLevel) {
       this.iconBox.removeAttribute("animate");
     }
 
     let anyBlockerActivated = false;
 
     for (let blocker of this.blockers) {
+      // Store data on whether the blocker is activated in the current document for
+      // reporting it using the "report breakage" dialog. Under normal circumstances this
+      // dialog should only be able to open in the currently selected tab and onSecurityChange
+      // runs on tab switch, so we can avoid associating the data with the document directly.
+      blocker.activated = blocker.isBlockerActivated(state);
       blocker.categoryItem.classList.toggle("blocked", this.enabled && blocker.enabled);
       blocker.categoryItem.hidden = !blocker.visible;
-      anyBlockerActivated = anyBlockerActivated || blocker.isBlockerActivated(state);
+      anyBlockerActivated = anyBlockerActivated || blocker.activated;
     }
 
     // We consider the shield state "active" when some kind of blocking activity
     // occurs on the page.  Note that merely allowing the loading of content that
     // we could have blocked does not trigger the appearance of the shield.
     // This state will be overriden later if there's an exception set for this site.
     let active = this.enabled && anyBlockerActivated;
     let isAllowing = state & Ci.nsIWebProgressListener.STATE_LOADED_TRACKING_CONTENT;
--- a/browser/base/content/test/trackingUI/browser_trackingUI_report_breakage.js
+++ b/browser/base/content/test/trackingUI/browser_trackingUI_report_breakage.js
@@ -205,16 +205,18 @@ add_task(async function testReportBreaka
           "Content-Disposition: form-data; name=\"title\"\r\n\r\ntracking.example.org\r\n",
           "Content-Disposition: form-data; name=\"body\"\r\n\r\n" +
           `Full URL: ${reportURL + "?"}\r\n` +
           `userAgent: ${navigator.userAgent}\r\n\r\n` +
           "**Preferences**\r\n" +
           `${prefsBody}\r\n` +
           "**Comments**\r\n" +
           "This is a comment\r\n",
+          "Content-Disposition: form-data; name=\"labels\"\r\n\r\n" +
+          "trackingprotection\r\n",
           "",
         ], "Should send the correct form data");
 
         resolve();
       });
 
       let comments = document.getElementById("identity-popup-breakageReportView-collection-comments");
       comments.value = "This is a comment";
--- a/browser/themes/shared/incontentprefs/privacy.css
+++ b/browser/themes/shared/incontentprefs/privacy.css
@@ -127,18 +127,17 @@
   padding-inline-start: 4px;
   margin-inline-start: 25px !important;
 }
 
 #trackingProtectionMenu {
   margin-top: 0.75em;
 }
 
-#blockCookiesCBDeck:not([selectedIndex]),
-#blockCookiesCBDeck:not([selectedIndex="0"]) {
+#blockCookiesCBDeck[selectedIndex]:not([selectedIndex="0"]) {
   max-width: 444px;
 }
 
 #blockCookiesCBDeck:not([selectedIndex]) > .warning-description,
 #blockCookiesCBDeck[selectedIndex="0"] > .warning-description {
   display: none;
 }
 
--- a/devtools/.eslintrc.js
+++ b/devtools/.eslintrc.js
@@ -85,17 +85,16 @@ module.exports = {
     ],
     "rules": {
       "mozilla/var-only-at-top-level": "off",
     }
   }, {
     "files": [
       "client/framework/**",
       "client/scratchpad/**",
-      "client/shared/AppCacheUtils.jsm",
       "client/shared/widgets/*.jsm",
       "client/webide/**",
     ],
     "rules": {
       "no-shadow": "off",
     }
   }, {
     "files": [
--- a/devtools/client/aboutdebugging-new/src/actions/debug-targets.js
+++ b/devtools/client/aboutdebugging-new/src/actions/debug-targets.js
@@ -70,19 +70,18 @@ function inspectDebugTarget(type, id) {
       default: {
         console.error("Failed to inspect the debug target of " +
                       `type: ${ type } id: ${ id }`);
       }
     }
   };
 }
 
-function installTemporaryExtension() {
+function installTemporaryExtension(message) {
   return async (dispatch, getState) => {
-    const message = "Select Manifest File or Package (.xpi)";
     const file = await openTemporaryExtension(window, message);
     try {
       await AddonManager.installTemporaryAddon(file);
     } catch (e) {
       console.error(e);
     }
   };
 }
--- a/devtools/client/aboutdebugging-new/src/components/debugtarget/DebugTargetList.js
+++ b/devtools/client/aboutdebugging-new/src/components/debugtarget/DebugTargetList.js
@@ -4,16 +4,19 @@
 
 "use strict";
 
 const { createFactory, createRef, PureComponent } =
   require("devtools/client/shared/vendor/react");
 const dom = require("devtools/client/shared/vendor/react-dom-factories");
 const PropTypes = require("devtools/client/shared/vendor/react-prop-types");
 
+const FluentReact = require("devtools/client/shared/vendor/fluent-react");
+const Localized = createFactory(FluentReact.Localized);
+
 const DebugTargetItem = createFactory(require("./DebugTargetItem"));
 
 /**
  * This component displays list of debug target.
  */
 class DebugTargetList extends PureComponent {
   static get propTypes() {
     return {
@@ -43,32 +46,44 @@ class DebugTargetList extends PureCompon
   getSnapshotBeforeUpdate(prevProps) {
     if (this.props.isCollapsed !== prevProps.isCollapsed) {
       return this.listRef.current.clientHeight;
     }
 
     return null;
   }
 
+  renderEmptyList() {
+    return Localized(
+      {
+        id: "about-debugging-debug-target-list-empty"
+      },
+      dom.span(
+        {},
+        "Nothing yet."
+      )
+    );
+  }
+
   render() {
     const {
       actionComponent,
       detailComponent,
       dispatch,
       isCollapsed,
       targets,
     } = this.props;
 
     return dom.ul(
       {
         className: "debug-target-list js-debug-target-list" +
                    (isCollapsed ? " debug-target-list--collapsed" : ""),
         ref: this.listRef,
       },
       targets.length === 0
-        ? "Nothing yet."
+        ? this.renderEmptyList()
         : targets.map((target, key) =>
             DebugTargetItem({ actionComponent, detailComponent, dispatch, key, target })),
     );
   }
 }
 
 module.exports = DebugTargetList;
--- a/devtools/client/aboutdebugging-new/src/components/debugtarget/ExtensionDetail.js
+++ b/devtools/client/aboutdebugging-new/src/components/debugtarget/ExtensionDetail.js
@@ -1,24 +1,29 @@
 /* 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";
 
-const { PureComponent } = require("devtools/client/shared/vendor/react");
+const { createFactory, PureComponent } = require("devtools/client/shared/vendor/react");
 const dom = require("devtools/client/shared/vendor/react-dom-factories");
 const PropTypes = require("devtools/client/shared/vendor/react-prop-types");
 
+const FluentReact = require("devtools/client/shared/vendor/fluent-react");
+const Localized = createFactory(FluentReact.Localized);
+
 /**
  * This component displays detail information for extension.
  */
 class ExtensionDetail extends PureComponent {
   static get propTypes() {
     return {
+      // Provided by wrapping the component with FluentReact.withLocalization.
+      getString: PropTypes.func.isRequired,
       target: PropTypes.object.isRequired,
     };
   }
 
   renderField(key, name, value, title) {
     return [
       dom.dt({ key: `${ key }-dt` }, name),
       dom.dd(
@@ -33,39 +38,48 @@ class ExtensionDetail extends PureCompon
   }
 
   renderUUID() {
     const { target } = this.props;
     const { manifestURL, uuid } = target.details;
 
     const value = [
       uuid,
-      dom.a(
+      Localized(
         {
-          className: "extension-detail__manifest",
-          key: "manifest",
-          href: manifestURL,
-          target: "_blank",
+          id: "about-debugging-extension-manifest-link"
         },
-        "Manifest URL",
+        dom.a(
+          {
+            className: "extension-detail__manifest",
+            key: "manifest",
+            href: manifestURL,
+            target: "_blank",
+          },
+          "Manifest URL",
+        )
       )
     ];
 
-    return this.renderField("uuid", "Internal UUID", value, uuid);
+    const uuidName = this.props.getString("about-debugging-extension-uuid");
+    return this.renderField("uuid", uuidName, value, uuid);
   }
 
   render() {
     const { target } = this.props;
     const { id, details } = target;
     const { location, uuid } = details;
 
+    const locationName = this.props.getString("about-debugging-extension-location");
+    const idName = this.props.getString("about-debugging-extension-id");
+
     return dom.dl(
       {
         className: "extension-detail",
       },
-      location ? this.renderField("location", "Location", location) : null,
-      this.renderField("extension", "Extension ID", id),
+      location ? this.renderField("location", locationName, location) : null,
+      this.renderField("extension", idName, id),
       uuid ? this.renderUUID() : null,
     );
   }
 }
 
-module.exports = ExtensionDetail;
+module.exports = FluentReact.withLocalization(ExtensionDetail);
--- a/devtools/client/aboutdebugging-new/src/components/debugtarget/InspectAction.js
+++ b/devtools/client/aboutdebugging-new/src/components/debugtarget/InspectAction.js
@@ -1,18 +1,21 @@
 /* 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";
 
-const { PureComponent } = require("devtools/client/shared/vendor/react");
+const { createFactory, PureComponent } = require("devtools/client/shared/vendor/react");
 const dom = require("devtools/client/shared/vendor/react-dom-factories");
 const PropTypes = require("devtools/client/shared/vendor/react-prop-types");
 
+const FluentReact = require("devtools/client/shared/vendor/fluent-react");
+const Localized = createFactory(FluentReact.Localized);
+
 const Actions = require("../../actions/index");
 
 /**
  * This component provides inspect button.
  */
 class InspectAction extends PureComponent {
   static get propTypes() {
     return {
@@ -22,19 +25,24 @@ class InspectAction extends PureComponen
   }
 
   inspect() {
     const { dispatch, target } = this.props;
     dispatch(Actions.inspectDebugTarget(target.type, target.id));
   }
 
   render() {
-    return dom.button(
+    return Localized(
       {
-        onClick: e => this.inspect(),
-        className: "aboutdebugging-button",
+        id: "about-debugging-debug-target-inspect-button"
       },
-      "Inspect"
+      dom.button(
+        {
+          onClick: e => this.inspect(),
+          className: "aboutdebugging-button",
+        },
+        "Inspect"
+      )
     );
   }
 }
 
 module.exports = InspectAction;
--- a/devtools/client/aboutdebugging-new/src/components/debugtarget/ServiceWorkerAction.js
+++ b/devtools/client/aboutdebugging-new/src/components/debugtarget/ServiceWorkerAction.js
@@ -3,27 +3,31 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 const { createFactory, PureComponent } = require("devtools/client/shared/vendor/react");
 const dom = require("devtools/client/shared/vendor/react-dom-factories");
 const PropTypes = require("devtools/client/shared/vendor/react-prop-types");
 
+const FluentReact = require("devtools/client/shared/vendor/fluent-react");
+
 const InspectAction = createFactory(require("./InspectAction"));
 
 const Actions = require("../../actions/index");
 
 /**
  * This component displays buttons for service worker.
  */
 class ServiceWorkerAction extends PureComponent {
   static get propTypes() {
     return {
       dispatch: PropTypes.func.isRequired,
+      // Provided by wrapping the component with FluentReact.withLocalization.
+      getString: PropTypes.func.isRequired,
       target: PropTypes.object.isRequired,
     };
   }
 
   push() {
     const { dispatch, target } = this.props;
     dispatch(Actions.pushServiceWorker(target.id));
   }
@@ -33,26 +37,28 @@ class ServiceWorkerAction extends PureCo
     dispatch(Actions.startServiceWorker(target.details.registrationActor));
   }
 
   _renderAction() {
     const { dispatch, target } = this.props;
     const { isActive, isRunning } = target.details;
 
     if (!isRunning) {
-      return this._renderButton("Start", this.start.bind(this));
+      const startLabel = this.props.getString("about-debugging-worker-action-start");
+      return this._renderButton(startLabel, this.start.bind(this));
     }
 
     if (!isActive) {
       // Only debug button is available if the service worker is not active.
       return InspectAction({ dispatch, target });
     }
 
+    const pushLabel = this.props.getString("about-debugging-worker-action-push");
     return [
-      this._renderButton("Push", this.push.bind(this)),
+      this._renderButton(pushLabel, this.push.bind(this)),
       InspectAction({ dispatch, target }),
     ];
   }
 
   _renderButton(label, onClick) {
     return dom.button(
       {
         className: "aboutdebugging-button",
@@ -62,9 +68,9 @@ class ServiceWorkerAction extends PureCo
     );
   }
 
   render() {
     return dom.div({}, this._renderAction());
   }
 }
 
-module.exports = ServiceWorkerAction;
+module.exports = FluentReact.withLocalization(ServiceWorkerAction);
--- a/devtools/client/aboutdebugging-new/src/components/debugtarget/TemporaryExtensionAction.js
+++ b/devtools/client/aboutdebugging-new/src/components/debugtarget/TemporaryExtensionAction.js
@@ -3,16 +3,19 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 const { createFactory, PureComponent } = require("devtools/client/shared/vendor/react");
 const dom = require("devtools/client/shared/vendor/react-dom-factories");
 const PropTypes = require("devtools/client/shared/vendor/react-prop-types");
 
+const FluentReact = require("devtools/client/shared/vendor/fluent-react");
+const Localized = createFactory(FluentReact.Localized);
+
 const InspectAction = createFactory(require("./InspectAction"));
 
 const Actions = require("../../actions/index");
 
 /**
  * This component provides components that inspect/reload/remove temporary extension.
  */
 class TemporaryExtensionAction extends PureComponent {
@@ -34,27 +37,37 @@ class TemporaryExtensionAction extends P
   }
 
   render() {
     const { dispatch, target } = this.props;
 
     return dom.div(
       {},
       InspectAction({ dispatch, target }),
-      dom.button(
+      Localized(
         {
-          className: "aboutdebugging-button",
-          onClick: e => this.reload()
+          id: "about-debugging-tmp-extension-reload-button"
         },
-        "Reload",
+        dom.button(
+          {
+            className: "aboutdebugging-button",
+            onClick: e => this.reload()
+          },
+          "Reload",
+        )
       ),
-      dom.button(
+      Localized(
         {
-          className: "aboutdebugging-button",
-          onClick: e => this.remove()
+          id: "about-debugging-tmp-extension-remove-button"
         },
-        "Remove",
+        dom.button(
+          {
+            className: "aboutdebugging-button",
+            onClick: e => this.remove()
+          },
+          "Remove",
+        )
       ),
     );
   }
 }
 
 module.exports = TemporaryExtensionAction;
--- a/devtools/client/aboutdebugging-new/src/components/debugtarget/TemporaryExtensionInstaller.js
+++ b/devtools/client/aboutdebugging-new/src/components/debugtarget/TemporaryExtensionInstaller.js
@@ -1,38 +1,49 @@
 /* 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";
 
-const { PureComponent } = require("devtools/client/shared/vendor/react");
+const { createFactory, PureComponent } = require("devtools/client/shared/vendor/react");
 const dom = require("devtools/client/shared/vendor/react-dom-factories");
 const PropTypes = require("devtools/client/shared/vendor/react-prop-types");
 
+const FluentReact = require("devtools/client/shared/vendor/fluent-react");
+const Localized = createFactory(FluentReact.Localized);
+
 const Actions = require("../../actions/index");
 
 /**
  * This component provides an installer for temporary extension.
  */
 class TemporaryExtensionInstaller extends PureComponent {
   static get propTypes() {
     return {
       dispatch: PropTypes.func.isRequired,
+      // Provided by wrapping the component with FluentReact.withLocalization.
+      getString: PropTypes.func.isRequired,
     };
   }
 
   install() {
-    this.props.dispatch(Actions.installTemporaryExtension());
+    const message = this.props.getString("about-debugging-tmp-extension-install-message");
+    this.props.dispatch(Actions.installTemporaryExtension(message));
   }
 
   render() {
-    return dom.button(
+    return Localized(
       {
-        className: "aboutdebugging-button",
-        onClick: e => this.install()
+        id: "about-debugging-tmp-extension-install-button"
       },
-      "Load Temporary Add-on…"
+      dom.button(
+        {
+          className: "aboutdebugging-button",
+          onClick: e => this.install()
+        },
+        "Load Temporary Add-on…"
+      )
     );
   }
 }
 
-module.exports = TemporaryExtensionInstaller;
+module.exports = FluentReact.withLocalization(TemporaryExtensionInstaller);
--- a/devtools/client/aboutdebugging-new/tmp-locale/en-US/aboutdebugging.notftl
+++ b/devtools/client/aboutdebugging-new/tmp-locale/en-US/aboutdebugging.notftl
@@ -25,8 +25,60 @@ about-debugging-runtime-extensions = Ext
 # Title of the tabs category.
 about-debugging-runtime-tabs = Tabs
 # Title of the service workers category.
 about-debugging-runtime-service-workers = Service Workers
 # Title of the shared workers category.
 about-debugging-runtime-shared-workers = Shared Workers
 # Title of the other workers category.
 about-debugging-runtime-other-workers = Other Workers
+
+# Displayed in the categories of "runtime" pages that don't have any debug target to
+# show. Debug targets depend on the category (extensions, tabs, workers...).
+about-debugging-debug-target-list-empty = Nothing yet.
+
+# Text of a button displayed next to debug targets of "runtime" pages. Clicking on this
+# button will open a DevTools toolbox that will allow inspecting the target.
+# A target can be an addon, a tab, a worker...
+about-debugging-debug-target-inspect-button = Inspect
+
+# Text of a button displayed in the "This Firefox" page, in the Temporary Extension
+# section. Clicking on the button will open a file picker to load a temporary extension
+about-debugging-tmp-extension-install-button = Load Temporary Add-on…
+
+# Text of a button displayed for a temporary extension loaded in the "This Firefox" page.
+# Clicking on the button will reload the extension.
+about-debugging-tmp-extension-reload-button = Reload
+
+# Text of a button displayed for a temporary extension loaded in the "This Firefox" page.
+# Clicking on the button will uninstall the extension and remove it from the page.
+about-debugging-tmp-extension-remove-button = Remove
+
+# Message displayed in the file picker that opens to select a temporary extension to load
+# (triggered by the button using "about-debugging-tmp-extension-install-button")
+# manifest.json .xpi and .zip should not be localized.
+# Note: this message is only displayed in Windows and Linux platforms.
+about-debugging-tmp-extension-install-message = Select manifest.json file or .xpi/.zip archive
+
+# Text of a link displayed for extensions in "runtime" pages.
+# Clicking on the link should open the manifest file in a new tab.
+about-debugging-extension-manifest-link = Manifest URL
+
+# Text displayed for extensions in "runtime" pages, before displaying the extension's uuid.
+# UUIDs look like b293e463-481e-5148-a487-5aaf7a130429
+about-debugging-extension-uuid = Internal UUID
+
+# Text displayed for extensions (temporary extensions only) in "runtime" pages, before
+# displaying the location of the temporary extension.
+about-debugging-extension-location = Location
+
+# Text displayed for extensions in "runtime" pages, before displaying the extension's ID.
+# For instance "geckoprofiler@mozilla.com" or "{ed26ddcb-5611-4512-a89a-51b8db81cfb2}".
+about-debugging-extension-id = Extension ID
+
+# This string is displayed as a label of the button that pushes a test payload
+# to a service worker.
+# Notes, this relates to the "Push" API, which is normally not localized so it is
+# probably better to not localize it.
+about-debugging-worker-action-push = Push
+
+# This string is displayed as a label of the button that starts a service worker.
+about-debugging-worker-action-start = Start
--- a/devtools/client/debugger/new/dist/parser-worker.js
+++ b/devtools/client/debugger/new/dist/parser-worker.js
@@ -25906,33 +25906,48 @@ var _mapBindings2 = _interopRequireDefau
 
 var _mapAwaitExpression = __webpack_require__(3778);
 
 var _mapAwaitExpression2 = _interopRequireDefault(_mapAwaitExpression);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function mapExpression(expression, mappings, bindings, shouldMapBindings = true, shouldMapAwait = true) {
+  const mapped = {
+    originalExpression: false,
+    bindings: false,
+    await: false,
+  };
+
   try {
     if (mappings) {
+      const beforeOriginalExpression = expression;
       expression = (0, _mapOriginalExpression2.default)(expression, mappings);
+      mapped.originalExpression = beforeOriginalExpression !== expression;
     }
 
     if (shouldMapBindings) {
+      const beforeBindings = expression;
       expression = (0, _mapBindings2.default)(expression, bindings);
+      mapped.bindings = beforeBindings !== expression;
     }
 
     if (shouldMapAwait) {
+      const beforeAwait = expression;
       expression = (0, _mapAwaitExpression2.default)(expression);
+      mapped.await = beforeAwait !== expression;
     }
   } catch (e) {
     console.log(e);
   }
 
-  return expression;
+  return {
+    expression,
+    mapped,
+  };
 } /* 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/>. */
 
 /***/ }),
 
 /***/ 3756:
 /***/ (function(module, exports, __webpack_require__) {
@@ -46747,17 +46762,17 @@ function wrapExpression(ast) {
   const newAst = t.arrowFunctionExpression([], t.blockStatement(body), true);
   return (0, _generator2.default)(newAst).code;
 }
 
 function handleTopLevelAwait(expression) {
   const ast = hasTopLevelAwait(expression);
   if (ast) {
     const func = wrapExpression(ast);
-    return (0, _generator2.default)(_template2.default.ast(`(${func})().then(r => console.log(r));`)).code;
+    return (0, _generator2.default)(_template2.default.ast(`(${func})().then(console.log).catch(console.error)`)).code;
   }
 
   return expression;
 }
 
 /***/ }),
 
 /***/ 3779:
--- a/devtools/client/debugger/new/src/actions/expressions.js
+++ b/devtools/client/debugger/new/src/actions/expressions.js
@@ -186,17 +186,20 @@ function evaluateExpression(expression) 
       const {
         location
       } = frame;
       const source = (0, _selectors.getSourceFromId)(getState(), location.sourceId);
       const sourceId = source.id;
       const selectedSource = (0, _selectors.getSelectedSource)(getState());
 
       if (selectedSource && !(0, _devtoolsSourceMap.isGeneratedId)(sourceId) && !(0, _devtoolsSourceMap.isGeneratedId)(selectedSource.id)) {
-        input = await dispatch(getMappedExpression(input));
+        const mapResult = await dispatch(getMappedExpression(input));
+        if (mapResult !== null) {
+          input = mapResult.expression;
+        }
       }
     }
 
     const frameId = (0, _selectors.getSelectedFrameId)(getState());
     return dispatch({
       type: "EVALUATE_EXPRESSION",
       input: expression.input,
       [_promise.PROMISE]: client.evaluateInFrame((0, _expressions.wrapExpression)(input), frameId)
@@ -221,14 +224,14 @@ function getMappedExpression(expression)
     // because mapping an expression can be slow if the parser worker is
     // busy doing other work.
     //
     // 1. there are no mappings - we do not need to map original expressions
     // 2. does not contain `await` - we do not need to map top level awaits
     // 3. does not contain `=` - we do not need to map assignments
 
     if (!mappings && !expression.match(/(await|=)/)) {
-      return expression;
+      return null;
     }
 
     return parser.mapExpression(expression, mappings, bindings || [], _prefs.features.mapExpressionBindings, _prefs.features.mapAwaitExpression);
   };
 }
\ No newline at end of file
--- a/devtools/client/debugger/new/src/actions/preview.js
+++ b/devtools/client/debugger/new/src/actions/preview.js
@@ -92,17 +92,21 @@ function setPreview(expression, location
         if (!source) {
           return;
         }
 
         const sourceId = source.id;
         const selectedFrame = (0, _selectors.getSelectedFrame)(getState());
 
         if (location && !(0, _devtoolsSourceMap.isGeneratedId)(sourceId)) {
-          expression = await dispatch((0, _expressions.getMappedExpression)(expression));
+          const mapResult =
+            await dispatch((0, _expressions.getMappedExpression)(expression));
+          if (mapResult !== null) {
+            expression = mapResult.expression;
+          }
         }
 
         if (!selectedFrame) {
           return;
         }
 
         const {
           result
--- a/devtools/client/debugger/panel.js
+++ b/devtools/client/debugger/panel.js
@@ -129,17 +129,17 @@ DebuggerPanel.prototype = {
     });
   },
 
   // DebuggerPanel API
 
   getMappedExpression(expression) {
     // No-op implementation since this feature doesn't exist in the older
     // debugger implementation.
-    return expression;
+    return null;
   },
 
   isPaused() {
     let framesController = this.panelWin.DebuggerController.StackFrames;
     let thread = framesController.activeThread;
     return thread && thread.paused;
   },
 
--- a/devtools/client/framework/toolbox.js
+++ b/devtools/client/framework/toolbox.js
@@ -676,16 +676,31 @@ Toolbox.prototype = {
   get sourceMapService() {
     if (!Services.prefs.getBoolPref("devtools.source-map.client-service.enabled")) {
       return null;
     }
     return this._createSourceMapService();
   },
 
   /**
+   * A common access point for the client-side parser service that any panel can use.
+   */
+  get parserService() {
+    if (this._parserService) {
+      return this._parserService;
+    }
+
+    this._parserService =
+      this.browserRequire("devtools/client/debugger/new/src/workers/parser/index");
+    this._parserService
+      .start("resource://devtools/client/debugger/new/dist/parser-worker.js", this.win);
+    return this._parserService;
+  },
+
+  /**
    * Clients wishing to use source maps but that want the toolbox to
    * track the source and style sheet actor mapping can use this
    * source map service.  This is a higher-level service than the one
    * returned by |sourceMapService|, in that it automatically tracks
    * source and style sheet actor IDs.
    */
   get sourceMapURLService() {
     if (this._sourceMapURLService) {
@@ -2807,16 +2822,21 @@ Toolbox.prototype = {
       this._sourceMapURLService.destroy();
       this._sourceMapURLService = null;
     }
     if (this._sourceMapService) {
       this._sourceMapService.stopSourceMapWorker();
       this._sourceMapService = null;
     }
 
+    if (this._parserService) {
+      this._parserService.stop();
+      this._parserService = null;
+    }
+
     if (this.webconsolePanel) {
       this._saveSplitConsoleHeight();
       this.webconsolePanel.removeEventListener("resize",
         this._saveSplitConsoleHeight);
       this.webconsolePanel = null;
     }
     if (this.textBoxContextMenuPopup) {
       this.textBoxContextMenuPopup.removeEventListener("popupshowing",
--- a/devtools/client/webconsole/components/JSTerm.js
+++ b/devtools/client/webconsole/components/JSTerm.js
@@ -423,23 +423,36 @@ class JSTerm extends Component {
       this.inputNode.focus();
     }
   }
 
   /**
    * The JavaScript evaluation response handler.
    *
    * @private
-   * @param object response
+   * @param {Object} response
    *        The message received from the server.
+   * @param {Object} options
+   *        On options object that can contain the following properties:
+   *          - {Object} mapped: An object indicating if the input was modified by the
+   *                             parser worker.
    */
-  async _executeResultCallback(response) {
+  async _executeResultCallback(response, options = {}) {
     if (!this.hud) {
       return null;
     }
+
+    // If the expression was a top-level await that the parser-worker transformed, we
+    // don't want to show the result returned by the server as it's a Promise that was
+    // created on our end by wrapping the input in an instantly called async function
+    // (e.g. `await 42` -> `(async () => {return await 42})()`).
+    if (options && options.mapped && options.mapped.await) {
+      return null;
+    }
+
     if (response.error) {
       console.error("Evaluation error " + response.error + ": " + response.message);
       return null;
     }
     let errorMessage = response.exceptionMessage;
 
     // Wrap thrown strings in Error objects, so `throw "foo"` outputs "Error: foo"
     if (typeof response.exception === "string") {
@@ -541,28 +554,38 @@ class JSTerm extends Component {
     }
 
     const { ConsoleCommand } = require("devtools/client/webconsole/types");
     const cmdMessage = new ConsoleCommand({
       messageText: executeString,
     });
     this.hud.proxy.dispatchMessageAdd(cmdMessage);
 
+    let mappedExpressionRes = null;
+    try {
+      mappedExpressionRes = await this.hud.owner.getMappedExpression(executeString);
+    } catch (e) {
+      console.warn("Error when calling getMappedExpression", e);
+    }
+
+    executeString = mappedExpressionRes ? mappedExpressionRes.expression : executeString;
+
     const options = {
       frame: this.SELECTED_FRAME,
       selectedNodeActor,
     };
 
-    const mappedString = await this.hud.owner.getMappedExpression(executeString);
     // Even if requestEvaluation rejects (because of webConsoleClient.evaluateJSAsync),
     // we still need to pass the error response to executeResultCallback.
-    const onEvaluated = this.requestEvaluation(mappedString, options)
+    const onEvaluated = this.requestEvaluation(executeString, options)
       .then(res => res, res => res);
     const response = await onEvaluated;
-    return this._executeResultCallback(response);
+    return this._executeResultCallback(response, {
+      mapped: mappedExpressionRes ? mappedExpressionRes.mapped : null
+    });
   }
 
   /**
    * Request a JavaScript string evaluation from the server.
    *
    * @param string str
    *        String to execute.
    * @param object [options]
--- a/devtools/client/webconsole/test/mochitest/browser.ini
+++ b/devtools/client/webconsole/test/mochitest/browser.ini
@@ -198,16 +198,18 @@ skip-if = verify
 [browser_jsterm_autocomplete_inside_text.js]
 [browser_jsterm_autocomplete_native_getters.js]
 [browser_jsterm_autocomplete_nav_and_tab_key.js]
 [browser_jsterm_autocomplete_paste_undo.js]
 [browser_jsterm_autocomplete_return_key_no_selection.js]
 [browser_jsterm_autocomplete_return_key.js]
 [browser_jsterm_autocomplete_width.js]
 [browser_jsterm_autocomplete-properties-with-non-alphanumeric-names.js]
+[browser_jsterm_await_paused.js]
+[browser_jsterm_await.js]
 [browser_jsterm_completion_case_sensitivity.js]
 [browser_jsterm_completion.js]
 [browser_jsterm_content_defined_helpers.js]
 [browser_jsterm_copy_command.js]
 [browser_jsterm_ctrl_a_select_all.js]
 [browser_jsterm_ctrl_key_nav.js]
 skip-if = os != 'mac' # The tested ctrl+key shortcuts are OSX only
 [browser_jsterm_document_no_xray.js]
new file mode 100644
--- /dev/null
+++ b/devtools/client/webconsole/test/mochitest/browser_jsterm_await.js
@@ -0,0 +1,85 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+// Test that top-level await expression work as expected.
+
+"use strict";
+
+const TEST_URI = "data:text/html;charset=utf-8,Web Console test top-level await";
+
+add_task(async function() {
+  // Enable await mapping.
+  await pushPref("devtools.debugger.features.map-await-expression", true);
+
+  // Run test with legacy JsTerm
+  await pushPref("devtools.webconsole.jsterm.codeMirror", false);
+  await performTests();
+  // And then run it with the CodeMirror-powered one.
+  await pushPref("devtools.webconsole.jsterm.codeMirror", true);
+  await performTests();
+});
+
+async function performTests() {
+  const hud = await openNewTabAndConsole(TEST_URI);
+  const {jsterm} = hud;
+
+  info("Evaluate a top-level await expression");
+  let onMessage = waitForMessage(hud, "await1");
+  // We use "await" + 1 to not match the evaluated command message.
+  const simpleAwait = `await new Promise(r => setTimeout(() => r("await" + 1), 1000))`;
+  jsterm.execute(simpleAwait);
+  await onMessage;
+  // Check that the resulting promise of the async iife is not displayed.
+  let messages = hud.ui.outputNode.querySelectorAll(".message .message-body");
+  let messagesText = Array.from(messages).map(n => n.textContent).join(" - ");
+  is(messagesText, `${simpleAwait} - await1`,
+    "The output contains the the expected messages");
+
+  info("Check that assigning the result of a top-level await expression works");
+  onMessage = waitForMessage(hud, "await2");
+  jsterm.execute(`x = await new Promise(r => setTimeout(() => r("await" + 2), 1000))`);
+  await onMessage;
+
+  onMessage = waitForMessage(hud, `"-await2-"`);
+  jsterm.execute(`"-" + x + "-"`);
+  let message = await onMessage;
+  ok(message.node, "`x` was assigned as expected");
+
+  info("Check that awaiting for a rejecting promise displays an error");
+  onMessage = waitForMessage(hud, "await-rej", ".message.error");
+  jsterm.execute(`x = await new Promise((resolve,reject) =>
+    setTimeout(() => reject("await-" + "rej"), 1000))`);
+  message = await onMessage;
+  ok(message.node, "awaiting for a rejecting promise displays an error message");
+
+  info("Check that concurrent await expression work fine");
+  hud.ui.clearOutput();
+  const delays = [2000, 500, 1000, 1500];
+  const inputs = delays.map(delay => `await new Promise(
+    r => setTimeout(() => r("await-concurrent-" + ${delay}), ${delay}))`);
+
+  // Let's wait for the message that sould be displayed last.
+  onMessage = waitForMessage(hud, "await-concurrent-2000");
+  for (const input of inputs) {
+    jsterm.execute(input);
+  }
+  await onMessage;
+
+  messages = hud.ui.outputNode.querySelectorAll(".message .message-body");
+  messagesText = Array.from(messages).map(n => n.textContent);
+  const expectedMessages = [
+    ...inputs,
+    "await-concurrent-500",
+    "await-concurrent-1000",
+    "await-concurrent-1500",
+    "await-concurrent-2000",
+  ];
+  is(JSON.stringify(messagesText, null, 2), JSON.stringify(expectedMessages, null, 2),
+    "The output contains the the expected messages, in the expected order");
+
+  info("Check that a logged promise is still displayed as a promise");
+  onMessage = waitForMessage(hud, "Promise {");
+  jsterm.execute(`new Promise(r => setTimeout(() => r(1), 1000))`);
+  message = await onMessage;
+  ok(message, "Promise are displayed as expected");
+}
new file mode 100644
--- /dev/null
+++ b/devtools/client/webconsole/test/mochitest/browser_jsterm_await_paused.js
@@ -0,0 +1,62 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+// Test that top-level await expression work as expected when debugger is paused.
+
+"use strict";
+
+const TEST_URI =
+  `data:text/html;charset=utf-8,Web Console test top-level await when debugger paused`;
+
+add_task(async function() {
+  // Enable await mapping.
+  await pushPref("devtools.debugger.features.map-await-expression", true);
+
+  // Run test with legacy JsTerm
+  await pushPref("devtools.webconsole.jsterm.codeMirror", false);
+  await performTests();
+  // And then run it with the CodeMirror-powered one.
+  await pushPref("devtools.webconsole.jsterm.codeMirror", true);
+  await performTests();
+});
+
+async function performTests() {
+  const hud = await openNewTabAndConsole(TEST_URI);
+  const {jsterm} = hud;
+
+  const pauseExpression = `(() => {
+    var foo = "bar";
+    /* Will pause the script and open the debugger panel */
+    debugger;
+  })()`;
+  jsterm.execute(pauseExpression);
+
+  // wait for the debugger to be opened and paused.
+  const target = TargetFactory.forTab(gBrowser.selectedTab);
+  const toolbox = gDevTools.getToolbox(target);
+  const dbg = await waitFor(() => toolbox.getPanel("jsdebugger"));
+  await waitFor(() => dbg._selectors.isPaused(dbg._getState()));
+  await toolbox.toggleSplitConsole();
+
+  const onMessage = waitForMessage(hud, "res: bar");
+  const awaitExpression = `await new Promise(res => {
+    setTimeout(() => res("res: " + foo), 1000);
+  })`;
+  await jsterm.execute(awaitExpression);
+
+  // Click on the resume button to not be paused anymore.
+  dbg.panelWin.document.querySelector("button.resume").click();
+
+  await onMessage;
+  const messages = hud.ui.outputNode.querySelectorAll(".message .message-body");
+  const messagesText = Array.from(messages).map(n => n.textContent);
+  const expectedMessages = [
+    pauseExpression,
+    awaitExpression,
+    // The result of pauseExpression
+    "undefined",
+    "res: bar",
+  ];
+  is(JSON.stringify(messagesText, null, 2), JSON.stringify(expectedMessages, null, 2),
+    "The output contains the the expected messages, in the expected order");
+}
--- a/devtools/client/webconsole/webconsole.js
+++ b/devtools/client/webconsole/webconsole.js
@@ -221,28 +221,47 @@ WebConsole.prototype = {
 
     if (!panel) {
       return null;
     }
 
     return panel.getFrames();
   },
 
-  async getMappedExpression(expression) {
+  /**
+   * Given an expression, returns an object containing a new expression, mapped by the
+   * parser worker to provide additional feature for the user (top-level await,
+   * original languages mapping, …).
+   *
+   * @param {String} expression: The input to maybe map.
+   * @returns {Object|null}
+   *          Returns null if the input can't be mapped.
+   *          If it can, returns an object containing the following:
+   *            - {String} expression: The mapped expression
+   *            - {Object} mapped: An object containing the different mapping that could
+   *                               be done and if they were applied on the input.
+   *                               At the moment, contains `await`, `bindings` and
+   *                               `originalExpression`.
+   */
+  getMappedExpression(expression) {
     const toolbox = gDevTools.getToolbox(this.target);
     if (!toolbox) {
-      return expression;
-    }
-    const panel = toolbox.getPanel("jsdebugger");
-
-    if (!panel) {
-      return expression;
+      return null;
     }
 
-    return panel.getMappedExpression(expression);
+    const panel = toolbox.getPanel("jsdebugger");
+    if (panel) {
+      return panel.getMappedExpression(expression);
+    }
+
+    if (toolbox.parserService && expression.includes("await ")) {
+      return toolbox.parserService.mapExpression(expression);
+    }
+
+    return null;
   },
 
   /**
    * Retrieves the current selection from the Inspector, if such a selection
    * exists. This is used to pass the ID of the selected actor to the Web
    * Console server for the $0 helper.
    *
    * @return object|null
--- a/dom/media/MediaManager.cpp
+++ b/dom/media/MediaManager.cpp
@@ -2981,38 +2981,41 @@ MediaManager::GetUserMedia(nsPIDOMWindow
   p->Then([self, onSuccess, onFailure, windowID, c, windowListener,
            sourceListener, askPermission, prefs, isHTTPS, isHandlingUserInput,
            callID, principalInfo, isChrome, resistFingerprinting](MediaDeviceSet*& aDevices) mutable {
     LOG(("GetUserMedia: post enumeration pledge success callback starting"));
     // grab result
     auto devices = MakeRefPtr<Refcountable<UniquePtr<MediaDeviceSet>>>(aDevices);
 
     // Ensure that our windowID is still good.
-    if (!nsGlobalWindowInner::GetInnerWindowWithId(windowID)) {
-      LOG(("GetUserMedia: bad windowID found in post enumeration pledge "
-           " success callback! Bailing out!"));
+    if (!nsGlobalWindowInner::GetInnerWindowWithId(windowID) ||
+        !self->IsWindowListenerStillActive(windowListener)) {
+      LOG(("GetUserMedia: bad window (%" PRIu64 ") in post enumeration "
+           "success callback!", windowID));
       return;
     }
 
     // Apply any constraints. This modifies the passed-in list.
     RefPtr<PledgeChar> p2 = self->SelectSettings(c, isChrome, devices);
 
     p2->Then([self, onSuccess, onFailure, windowID, c,
               windowListener, sourceListener, askPermission, prefs, isHTTPS,
               isHandlingUserInput, callID, principalInfo, isChrome, devices,
               resistFingerprinting
              ](const char*& badConstraint) mutable {
       LOG(("GetUserMedia: starting post enumeration pledge2 success "
            "callback!"));
 
-      // Ensure that the captured 'this' pointer and our windowID are still good.
+      // Ensure that the window is still good.
       auto* globalWindow = nsGlobalWindowInner::GetInnerWindowWithId(windowID);
       RefPtr<nsPIDOMWindowInner> window = globalWindow ? globalWindow->AsInner()
                                                        : nullptr;
-      if (!MediaManager::Exists() || !window) {
+      if (!window || !self->IsWindowListenerStillActive(windowListener)) {
+        LOG(("GetUserMedia: bad window (%" PRIu64 ") in post enumeration "
+             "success callback 2!", windowID));
         return;
       }
 
       if (badConstraint) {
         LOG(("GetUserMedia: bad constraint found in post enumeration pledge2 "
              "success callback! Calling error handler!"));
         nsString constraint;
         constraint.AssignASCII(badConstraint);
--- a/dom/media/tests/mochitest/mochitest.ini
+++ b/dom/media/tests/mochitest/mochitest.ini
@@ -20,16 +20,17 @@ support-files =
   !/dom/canvas/test/webgl-mochitest/webgl-util.js
   !/dom/media/test/manifest.js
   !/dom/media/test/320x240.ogv
   !/dom/media/test/r11025_s16_c1.wav
   !/dom/media/test/bug461281.ogg
   !/dom/media/test/seek.webm
   !/dom/media/test/gizmo.mp4
 
+[test_1488832.html]
 [test_a_noOp.html]
 [test_dataChannel_basicAudio.html]
 skip-if = (android_version == '18') # Bug 962984 for debug, bug 963244 for opt
 [test_dataChannel_basicAudioVideo.html]
 skip-if = android_version == '18' # android(Bug 1189784, timeouts on 4.3 emulator)
 [test_dataChannel_basicAudioVideoNoBundle.html]
 skip-if = android_version == '18' # android(Bug 1189784, timeouts on 4.3 emulator)
 [test_dataChannel_basicAudioVideoCombined.html]
new file mode 100644
--- /dev/null
+++ b/dom/media/tests/mochitest/test_1488832.html
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<script type="application/javascript" src="mediaStreamPlayback.js"></script>
+</head>
+<body>
+<iframe id="testframe"></iframe>
+<script>
+"use strict";
+
+createHTML({
+  title: "gUM shutdown race",
+  bug: "1488832"
+});
+
+runTest(async () => {
+  testframe.srcdoc = `
+  <html>
+  <head>
+  <script>
+  function start() {
+    for (let i = 0; i < 16; i++) {
+      window.navigator.mediaDevices.getUserMedia({video: true})
+      setTimeout('location.reload()', 100)
+    }
+  }
+  document.addEventListener('DOMContentLoaded', start)
+  </` + `script>
+  </head>
+  </html>`;
+
+  await wait(10000);
+  testframe.srcdoc = "";
+});
+</script>
+</body>
+</html>
--- a/dom/media/webrtc/MediaEngineRemoteVideoSource.cpp
+++ b/dom/media/webrtc/MediaEngineRemoteVideoSource.cpp
@@ -182,19 +182,23 @@ MediaEngineRemoteVideoSource::Allocate(
     const nsString& aDeviceId,
     const mozilla::ipc::PrincipalInfo& aPrincipalInfo,
     AllocationHandle** aOutHandle,
     const char** aOutBadConstraint)
 {
   LOG((__PRETTY_FUNCTION__));
   AssertIsOnOwningThread();
 
-  MOZ_ASSERT(mInitDone);
   MOZ_ASSERT(mState == kReleased);
 
+  if (!mInitDone) {
+    LOG(("Init not done"));
+    return NS_ERROR_FAILURE;
+  }
+
   NormalizedConstraints constraints(aConstraints);
   webrtc::CaptureCapability newCapability;
   LOG(("ChooseCapability(kFitness) for mCapability (Allocate) ++"));
   if (!ChooseCapability(constraints, aPrefs, aDeviceId, newCapability, kFitness)) {
     *aOutBadConstraint =
       MediaConstraintsHelper::FindBadConstraint(constraints, this, aDeviceId);
     return NS_ERROR_FAILURE;
   }
@@ -287,18 +291,18 @@ MediaEngineRemoteVideoSource::SetTrack(c
 }
 
 nsresult
 MediaEngineRemoteVideoSource::Start(const RefPtr<const AllocationHandle>& aHandle)
 {
   LOG((__PRETTY_FUNCTION__));
   AssertIsOnOwningThread();
 
+  MOZ_ASSERT(mState == kAllocated || mState == kStopped);
   MOZ_ASSERT(mInitDone);
-  MOZ_ASSERT(mState == kAllocated || mState == kStopped);
   MOZ_ASSERT(mStream);
   MOZ_ASSERT(IsTrackIDExplicit(mTrackID));
 
   {
     MutexAutoLock lock(mMutex);
     mState = kStarted;
   }
 
--- a/js/xpconnect/src/xpcprivate.h
+++ b/js/xpconnect/src/xpcprivate.h
@@ -2933,16 +2933,22 @@ public:
     bool IsSameOrigin(nsIPrincipal* aOther) const;
 
     // Does the principal of compartment a subsume the principal of compartment b?
     static bool Subsumes(JS::Compartment* aCompA, JS::Compartment* aCompB);
     static bool SubsumesIgnoringFPD(JS::Compartment* aCompA, JS::Compartment* aCompB);
 
     bool MightBeWebContent() const;
 
+    // Note: this principal must not be used for subsumes/equality checks
+    // considering document.domain. See mOrigin.
+    mozilla::BasePrincipal* GetPrincipalIgnoringDocumentDomain() const {
+        return mOrigin;
+    }
+
     const mozilla::SiteIdentifier& SiteRef() const {
         return mSite;
     }
 
     bool HasChangedDocumentDomain() const {
         return mChangedDocumentDomain;
     }
     void SetChangedDocumentDomain() {
--- a/js/xpconnect/wrappers/XrayWrapper.cpp
+++ b/js/xpconnect/wrappers/XrayWrapper.cpp
@@ -1126,19 +1126,25 @@ CompartmentHasExclusiveExpandos(JSObject
 
 static inline JSObject*
 GetCachedXrayExpando(JSObject* wrapper);
 
 static inline void
 SetCachedXrayExpando(JSObject* holder, JSObject* expandoWrapper);
 
 static nsIPrincipal*
-ObjectPrincipal(JSObject* obj)
+WrapperPrincipal(JSObject* obj)
 {
-    return GetCompartmentPrincipal(js::GetObjectCompartment(obj));
+    // Use the principal stored in CompartmentOriginInfo. That works because
+    // consumers are only interested in the origin-ignoring-document.domain.
+    // See expandoObjectMatchesConsumer.
+    MOZ_ASSERT(IsXrayWrapper(obj));
+    JS::Compartment* comp = js::GetObjectCompartment(obj);
+    CompartmentPrivate* priv = CompartmentPrivate::Get(comp);
+    return priv->originInfo.GetPrincipalIgnoringDocumentDomain();
 }
 
 static nsIPrincipal*
 GetExpandoObjectPrincipal(JSObject* expandoObject)
 {
     Value v = JS_GetReservedSlot(expandoObject, JSSLOT_EXPANDO_ORIGIN);
     return static_cast<nsIPrincipal*>(v.toPrivate());
 }
@@ -1240,17 +1246,17 @@ XrayTraits::getExpandoObject(JSContext* 
     // usually the case.
     JSObject* chain = getExpandoChain(target);
     if (!chain) {
         return true;
     }
 
     bool isExclusive = CompartmentHasExclusiveExpandos(consumer);
     return getExpandoObjectInternal(cx, chain, isExclusive ? consumer : nullptr,
-                                    ObjectPrincipal(consumer), expandoObject);
+                                    WrapperPrincipal(consumer), expandoObject);
 }
 
 // Wrappers which have exclusive access to the expando on their target object
 // need to be kept alive as long as the target object exists. This is done by
 // keeping the expando in the expando chain on the target (even though it will
 // not be used while looking up the expando for the wrapper), and keeping a
 // strong reference from that expando to the wrapper itself, via the
 // JSSLOT_EXPANDO_EXCLUSIVE_WRAPPER_HOLDER reserved slot. This slot does not
@@ -1363,17 +1369,17 @@ XrayTraits::ensureExpandoObject(JSContex
     RootedObject expandoObject(cx);
     if (!getExpandoObject(cx, target, wrapper, &expandoObject)) {
         return nullptr;
     }
     if (!expandoObject) {
         bool isExclusive = CompartmentHasExclusiveExpandos(wrapper);
         expandoObject = attachExpandoObject(cx, target, isExclusive ? wrapper : nullptr,
                                             wrapperGlobal,
-                                            ObjectPrincipal(wrapper));
+                                            WrapperPrincipal(wrapper));
     }
     return expandoObject;
 }
 
 bool
 XrayTraits::cloneExpandoChain(JSContext* cx, HandleObject dst, HandleObject srcChain)
 {
     MOZ_ASSERT(js::IsObjectInContextCompartment(dst, cx));
@@ -1409,17 +1415,17 @@ XrayTraits::cloneExpandoChain(JSContext*
                 if (!JS_WrapObject(cx, &exclusiveWrapper)) {
                     return false;
                 }
                 exclusiveWrapperGlobal = JS::CurrentGlobalOrNull(cx);
             }
         } else {
             JSAutoRealm ar(cx, oldHead);
             movingIntoXrayCompartment =
-                expandoObjectMatchesConsumer(cx, oldHead, ObjectPrincipal(dst));
+                expandoObjectMatchesConsumer(cx, oldHead, GetObjectPrincipal(dst));
         }
 
         if (movingIntoXrayCompartment) {
             // Just copy properties directly onto dst.
             if (!JS_CopyPropertiesFrom(cx, dst, oldHead)) {
                 return false;
             }
         } else {
--- a/security/manager/ssl/StaticHPKPins.h
+++ b/security/manager/ssl/StaticHPKPins.h
@@ -1169,9 +1169,9 @@ static const TransportSecurityPreload kP
   { "za.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
   { "zh.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
 };
 
 // Pinning Preload List Length = 487;
 
 static const int32_t kUnknownId = -1;
 
-static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1545912152110000);
+static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1546257674801000);
--- a/security/manager/ssl/nsSTSPreloadList.inc
+++ b/security/manager/ssl/nsSTSPreloadList.inc
@@ -3,17 +3,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /*****************************************************************************/
 /* This is an automatically generated file. If you're not                    */
 /* nsSiteSecurityService.cpp, you shouldn't be #including it.                */
 /*****************************************************************************/
 
 #include <stdint.h>
-const PRTime gPreloadListExpirationTime = INT64_C(1548331345998000);
+const PRTime gPreloadListExpirationTime = INT64_C(1548676870522000);
 %%
 0-1.party, 1
 00100010.net, 1
 0010100.net, 1
 00120012.net, 1
 00130013.net, 1
 00140014.net, 1
 00150015.net, 1
@@ -440,17 +440,16 @@ 298da.com, 1
 2991236.com, 1
 2au.ru, 1
 2b3b.com, 1
 2bas.nl, 1
 2bcompany.ch, 1
 2bis10.de, 1
 2bitout.com, 1
 2bougie.com, 1
-2bouncy.com, 1
 2c-b.com, 1
 2c-d.com, 1
 2c-e.com, 1
 2c-t-2.com, 1
 2c-t-7.com, 1
 2c-t-8.com, 1
 2cash.ru, 1
 2cv-fahrer.de, 1
@@ -738,16 +737,17 @@ 4th-ave-studio.com, 1
 4thdc.com, 1
 4u.services, 1
 4u2ore.net, 1
 4vector.com, 1
 4vf.de, 1
 4web-hosting.com, 1
 4x.fi, 1
 4x4.lk, 1
+4xlabs.co, 1
 50.pe, 1
 5000yz.com, 1
 500103.com, 1
 500108.com, 1
 500a500.com, 1
 500b500.com, 1
 500c500.com, 1
 500d500.com, 1
@@ -1019,16 +1019,17 @@ 72ty.com, 1
 72ty.net, 1
 730433.com, 1
 731433.com, 1
 732433.com, 1
 735433.com, 1
 736433.com, 1
 738433.com, 1
 739433.com, 1
+73info.com, 0
 740833.com, 1
 741833.com, 1
 742833.com, 1
 743833.com, 1
 74th.jp, 1
 755k3.com, 1
 7570.com, 1
 762.ch, 1
@@ -1271,17 +1272,16 @@ aanbieders.ga, 1
 aandeautobody.com, 1
 aandkevents.co.uk, 1
 aanmpc.com, 1
 aaomidi.com, 1
 aapas.org.ar, 1
 aardvarksolutions.co.za, 1
 aariefhaafiz.com, 1
 aarkue.eu, 1
-aaron.cm, 0
 aaron.xin, 1
 aaronburt.co.uk, 1
 aaronhorler.com, 1
 aaronkimmig.de, 1
 aaronroyle.com, 1
 aaronsilber.me, 1
 aarvinproperties.com, 1
 aatf.us, 1
@@ -1354,17 +1354,16 @@ abmc.gov, 1
 abmledger.ca, 1
 abmtax.ca, 1
 abn-consultants.ie, 1
 abnehmen.com, 1
 abobuch.de, 1
 aboces.org, 1
 aboderenovation.co.uk, 1
 abolicionistas.com, 1
-abolition.co, 1
 abolition.net, 1
 abolitionism.ca, 1
 abolitionism.co.uk, 1
 abolitionism.com, 1
 abolitionism.in, 1
 abolitionism.net, 1
 abolitionism.us, 1
 abolitionist-project.com, 1
@@ -1428,16 +1427,17 @@ ac-admin.pl, 1
 ac-epmservices.com, 1
 ac-town.com, 1
 ac0g.dyndns.org, 1
 aca-creative.co.uk, 1
 academicexperts.us, 1
 academichealthscience.net, 1
 academie-de-police.ch, 1
 academytv.com.au, 1
+acadianapatios.com, 1
 acaeum.com, 1
 acampar.com.br, 1
 acaonegocios.com.br, 1
 acaptureservices.com, 1
 acara-yoga.de, 1
 acareer.in, 1
 acat.io, 1
 acbrussels-used.be, 1
@@ -1773,17 +1773,16 @@ advicepro.org.uk, 1
 advocate-europe.eu, 1
 advocaten-avocats.be, 1
 advocatenalkmaar.org, 1
 advocator.ca, 1
 advocoeurdehaan.nl, 1
 advokat-romanov.com, 1
 advtran.com, 1
 adware.pl, 1
-adwokatkosterka.pl, 1
 adwokatzdunek.pl, 1
 adws.io, 1
 adxperience.com, 1
 adzie.xyz, 1
 adzuna.at, 1
 adzuna.ca, 1
 adzuna.co.nz, 1
 adzuna.co.za, 1
@@ -2143,16 +2142,17 @@ airicy.com, 1
 airikai.com, 1
 airlinesettlement.com, 1
 airmail.cc, 1
 airmaxinflatables.com, 1
 airnow.gov, 1
 airpbx.com, 1
 airplay-inflatable-hire.co.uk, 1
 airplayradio.nl, 1
+airportlimototoronto.com, 1
 airpurifierproductsonline.com, 1
 airrestoration.ch, 1
 airsoft.ch, 1
 airtimerewards.co.uk, 1
 airvpn.org, 1
 airvuz.com, 1
 airwegobouncycastles.co.uk, 1
 airwolfthemes.com, 1
@@ -2164,17 +2164,16 @@ aistockcharts.com, 1
 aistrope.com, 1
 ait.com.ar, 1
 aiticon.com, 1
 aitosoftware.com, 1
 aiutodomestico.ch, 1
 aivd.lol, 1
 aivene.com, 1
 aiwdirect.com, 1
-aixxe.net, 1
 aizxxs.com, 1
 aizxxs.net, 1
 ajapaik.ee, 1
 ajarope.com, 1
 ajaxed.net, 1
 ajbouncycastles.co.uk, 1
 ajces.com, 1
 ajdiaz.me, 1
@@ -2408,30 +2407,33 @@ alienslab.net, 1
 alienstat.com, 1
 alignrs.com, 1
 aliim.gdn, 1
 alijammusic.com, 1
 alilialili.ga, 1
 alinasmusicstudio.com, 1
 alinode.com, 1
 aliorange.com, 1
+alisonisrealestate.com, 1
 alisonlitchfield.com, 1
 alistairstowing.com, 1
 alisync.com, 1
 aliwebstore.com, 1
 alix-board.de, 1
 alize-theatre.ch, 1
 aljaspod.com, 1
 aljaspod.hu, 1
 aljaspod.net, 1
 aljweb.com, 1
 all-connect.net, 0
 all-markup-news.com, 1
 all4hardware4u.de, 1
 allaboutfunuk.com, 1
+allaboutswing.co.uk, 1
+allaboutswing.com, 1
 allaboutthekink.org, 1
 allactioneventhire.co.uk, 1
 allamericanmuslim.com, 1
 allamericanprotection.net, 1
 allamericatrans.com, 1
 allangirvan.net, 1
 allarmi.roma.it, 1
 allbenjoy.de, 1
@@ -2837,16 +2839,17 @@ andreaskluge.eu, 1
 andreaskrasa.com, 1
 andreaslicht.nl, 1
 andreasolsson.se, 1
 andreasr.com, 1
 andree.cloud, 1
 andrefaber.nl, 1
 andrehansen.de, 1
 andrei-coman.com, 1
+andrei-nakov.org, 1
 andrejbenz.com, 1
 andreoliveira.io, 1
 andrepicard.de, 1
 andrespaz.com, 1
 andreundnina.de, 1
 andrew.fi, 1
 andrew.london, 1
 andrewbdesign.com, 1
@@ -3072,17 +3075,16 @@ antennista.pavia.it, 1
 antennista.roma.it, 1
 antennisti.milano.it, 1
 antennisti.roma.it, 1
 anteprima.info, 1
 anthedesign.fr, 1
 anthisis.tv, 1
 anthony-rouanet.com, 1
 anthony.codes, 1
-anthonyaires.com, 1
 anthonycarbonaro.com, 1
 anthonyfontanez.com, 1
 anthonygaidot.fr, 1
 anthonyvadala.me, 1
 anthropoid.ca, 1
 anti-bible.com, 1
 anti-radar.org, 1
 antibioticshome.com, 1
@@ -3115,17 +3117,17 @@ antonjuulnaber.dk, 1
 antons.io, 1
 antota.lt, 1
 antragsgruen.de, 1
 antraxx.ee, 1
 antroposofica.com.br, 1
 anttitenhunen.com, 1
 antyblokada.pl, 1
 anulowano.pl, 1
-anvartay.com, 1
+anvartay.com, 0
 anwaltsindex.com, 1
 anxietyspace.com, 1
 anxiolytics.com, 1
 any.pm, 0
 anyfood.fi, 1
 anymetrix.io, 1
 anynode.net, 1
 anyon.com, 1
@@ -3626,17 +3628,16 @@ asd.gov.au, 1
 asdyx.de, 1
 asec01.net, 1
 aseith.com, 1
 aseko.gr, 1
 asenno.com, 1
 aserver.co, 1
 asexualitat.cat, 1
 asgapps.co.za, 1
-asge-handel.de, 1
 ashd1.goip.de, 1
 ashd2.goip.de, 1
 ashd3.goip.de, 1
 ashleakunowski.com, 1
 ashleyadum.com, 1
 ashleyedisonuk.com, 1
 ashleyfoley.photography, 1
 ashlocklawgroup.com, 1
@@ -3878,16 +3879,17 @@ aubergegilly.ch, 1
 aubg.org, 1
 aubio.org, 1
 aubonmanger.fr, 1
 aucielrose.com, 1
 aucklandcastles.co.uk, 1
 aucubin.de, 1
 audialbuquerqueparts.com, 1
 audiblox.co.za, 1
+audiense.com, 0
 audio-detector.com, 1
 audiobookstudio.com, 1
 audiolibri.org, 1
 audiolot.com, 1
 audion.hr, 1
 audioonly.stream, 1
 audiophile.ch, 1
 audiophix.com, 1
@@ -4005,17 +4007,17 @@ automationpro.me, 1
 automotivegroup-usedcars.be, 1
 automotivemechanic.org, 1
 automoto-tom.net, 1
 autoosijek.com, 1
 autopapo.com.br, 1
 autoparts.im, 1
 autoparts.sh, 1
 autoparts.wf, 1
-autoprice.info, 1
+autoprice.info, 0
 autoprogconsortium.ga, 1
 autorando.com, 1
 autoschadeschreuder.nl, 1
 autoscuola.roma.it, 1
 autosecurityfinance.com, 1
 autoshinka72.ru, 1
 autoshopsolutions.com, 1
 autoshun.org, 1
@@ -4317,17 +4319,16 @@ b9888.net, 1
 b98886.com, 1
 b9889.net, 1
 b9920.com, 1
 b9930.com, 1
 b9948.com, 1
 b9948.net, 1
 b99520.com, 1
 b9960.com, 1
-b9970.com, 1
 b9980.com, 1
 b99881.com, 1
 b99882.com, 1
 b99883.com, 1
 b99885.com, 1
 b99886.com, 1
 b9best.cc, 1
 b9best.net, 1
@@ -4518,17 +4519,16 @@ bank, 1
 bank.simple.com, 0
 bankbranchlocator.com, 1
 bankcardoffer.com, 1
 bankcircle.co.in, 1
 bankee.us, 1
 bankerbuch.de, 1
 bankersonline.com, 1
 banketbesteld.nl, 1
-bankfreeoffers.com, 1
 bankgradesecurity.com, 1
 bankin.com, 1
 bankinter.pt, 1
 bankio.se, 1
 bankitt.network, 1
 banknet.gov, 1
 bankofdenton.com, 1
 bankofrealty.review, 1
@@ -4888,16 +4888,17 @@ beeswax-orgone.com, 1
 beetgroup.id, 1
 beethoveninlove.com, 1
 beetman.net, 1
 beeutifulparties.co.uk, 1
 beexfit.com, 1
 beezkneezcastles.co.uk, 1
 beeznest.com, 1
 befoodsafe.gov, 1
+beforesunrise.de, 1
 beframed.ch, 1
 befundonline.de, 1
 begabungsfoerderung.info, 1
 begbie.com, 1
 beginatzero.com, 1
 beginner.nl, 1
 beginwp.top, 1
 begoodny.co.il, 1
@@ -5474,16 +5475,17 @@ bioetco.ch, 1
 bioexploratorium.pl, 1
 biogecho.ch, 1
 biogecho.swiss, 1
 biogeist.de, 1
 biogeniq.ca, 1
 biohappiness.com, 1
 bioharmony.ca, 1
 biointelligence-explosion.com, 1
+bioknowme.com, 1
 bioligo.ch, 1
 biolindo.com, 0
 biologis.ch, 1
 biomasscore.com, 1
 biometrics.es, 1
 biomodra.cz, 1
 biopreferred.gov, 1
 biopsychiatry.com, 1
@@ -5651,17 +5653,16 @@ bizeau.ch, 1
 bizniskatalog.mk, 1
 biznpro.ru, 1
 bizstarter.cz, 1
 biztera.com, 1
 biztok.eu, 1
 biztouch.work, 1
 bizzi.tv, 1
 bjarnerest.de, 1
-bjgongyi.com, 1
 bjl5689.com, 1
 bjl5689.net, 1
 bjornhelmersson.se, 1
 bjornjohansen.no, 1
 bjrn.io, 1
 bjs.gov, 1
 bjsbouncycastles.com, 1
 bjtxl.cn, 1
@@ -5855,17 +5856,16 @@ bloggytalky.com, 1
 bloginbeeld.nl, 1
 bloglines.co.za, 1
 bloglogistics.com, 1
 blogom.at, 1
 blogpentrusuflet.ro, 1
 blogreen.org, 1
 blogthedayaway.com, 1
 blogtroterzy.pl, 1
-blok56.nl, 1
 blood4pets.tk, 1
 bloodsports.org, 1
 bloom-avenue.com, 1
 bltc.co.uk, 1
 bltc.com, 1
 bltc.net, 1
 bltc.org, 1
 bltc.org.uk, 1
@@ -6097,16 +6097,17 @@ booktracker-org.appspot.com, 1
 bookwitty.social, 1
 bool.be, 1
 boomersurf.com, 1
 boomshelf.com, 1
 boomshelf.org, 1
 boonbox.com, 1
 boonehenry.co.uk, 1
 booox.biz, 1
+booox.cc, 1
 booox.info, 1
 booox.net, 1
 booox.org, 1
 booox.pw, 1
 boop.gq, 1
 boop.pro, 1
 booq.org, 1
 booquiz.com, 1
@@ -6502,16 +6503,17 @@ bridgeglobalmarketing.com, 1
 bridgement.com, 1
 bridgeout.com, 1
 bridgevest.com, 1
 bridgingdirectory.com, 1
 brie.tech, 1
 briefassistant.com, 1
 briefhansa.de, 1
 briefvorlagen-papierformat.de, 1
+briggsleroux.com, 1
 brighouse-leisure.co.uk, 1
 brightday.bz, 1
 brightendofleasecleaning.com.au, 1
 brightfuturemadebyme.com, 1
 brightlifedirect.com, 1
 brightonbank.com, 1
 brightonbouncycastles.net, 1
 brightonchilli.org.uk, 1
@@ -6647,26 +6649,24 @@ bt123.xyz, 1
 bta.lv, 0
 btc2secure.com, 1
 btcarmory.com, 1
 btcbolsa.com, 1
 btcontract.com, 1
 btcp.space, 1
 btcpop.co, 1
 btcycle.org, 1
-btio.pw, 1
 btku.org, 1
 btmstore.com.br, 1
 btnissanparts.com, 1
 btorrent.xyz, 1
 btrb.ml, 1
 btsapem.com, 1
 btserv.de, 1
 btsoft.eu, 1
-btsow.com, 1
 bttc.co.uk, 1
 btth.live, 1
 btth.pl, 1
 btth.tv, 1
 btth.xyz, 1
 bttorj45.com, 1
 bturboo.com, 1
 bubba.cc, 1
@@ -6701,16 +6701,17 @@ budolfs.de, 1
 buehnenbande.ch, 0
 bueltge.de, 1
 buena.me, 1
 buergerdialog.net, 1
 buergerhaushalt.com, 1
 bueroplus.de, 1
 bueroschwarz.design, 1
 bueroshop24.de, 1
+buettgens.net, 1
 buffaloautomation.com, 1
 buffaloturf.com.au, 1
 buffetbouc.com, 1
 bug.blue, 1
 bug.ee, 1
 bugcrowd.com, 1
 bugginslab.co.uk, 1
 bugs.chromium.org, 1
@@ -6890,17 +6891,17 @@ by.cx, 1
 by1896.com, 1
 by1898.com, 1
 by1899.com, 1
 byange.pro, 1
 byatte.com, 1
 bydisk.com, 0
 byeskille.no, 1
 bygningsregistrering.dk, 1
-byiu.info, 1
+byiu.info, 0
 byji.com, 1
 bymark.co, 1
 bymike.co, 1
 bynder.com, 1
 bynet.cz, 1
 bynumlaw.net, 1
 bypass.kr, 1
 bypass.sh, 1
@@ -6912,17 +6913,16 @@ byronr.com, 1
 byrtz.de, 1
 bysb.net, 0
 byte-time.com, 1
 byte128.com, 1
 bytearts.net, 1
 bytebucket.org, 1
 bytecode.no, 1
 bytejail.com, 1
-bytelog.org, 1
 bytema.cz, 1
 bytema.eu, 1
 bytema.re, 1
 bytema.sk, 1
 bytemix.cloud, 1
 byteowls.com, 0
 bytepark.de, 1
 bytepen.com, 1
@@ -7112,17 +7112,16 @@ camconn.cc, 1
 camda.online, 1
 camdesign.pl, 1
 camel2243.com, 1
 camelservers.com, 1
 cameo-membership.uk, 1
 cameraviva.com.br, 1
 camerweb.es, 1
 camilomodzz.net, 1
-camjobs.net, 1
 camolist.com, 1
 camomile.desi, 1
 camp-pleinsoleil.ch, 1
 camp.co.uk, 1
 campaign-ad.com, 1
 campaign.gov.uk, 1
 campaignagent.com.au, 1
 campaignwiki.org, 1
@@ -7203,17 +7202,16 @@ canva-dev.com, 1
 canva.com, 1
 canx.org, 1
 canyoupwn.me, 1
 cao.gov, 1
 cao.la, 1
 caodecristachines.com.br, 1
 caodesantohumberto.com.br, 1
 caoshan60.com, 1
-capacent.is, 1
 capachitos.cl, 1
 capacityproject.org, 1
 capekeen.com, 1
 capellidipremoli.com, 1
 caphane.com, 1
 capimlimaoflores.com.br, 1
 capitainebaggy.ch, 1
 capital-match.com, 1
@@ -7886,16 +7884,17 @@ chatbotclic.com, 1
 chatbotclick.com, 1
 chatbots.email, 1
 chatbots.systems, 1
 chatear.social, 1
 chateau-belvoir.com, 1
 chateau-de-lisle.fr, 1
 chateaudestrainchamps.com, 1
 chatfacile.org, 1
+chatint.com, 1
 chatitaly.org, 1
 chatme.im, 0
 chatnbook.com, 1
 chatnederland.eu, 1
 chatsworthelectrical.com, 1
 chatt-gratis.net, 1
 chatt-gratis.org, 1
 chattanoogaface.com, 1
@@ -8308,17 +8307,17 @@ cirfi.com, 1
 ciri.com.co, 1
 cirope.com, 1
 cirrus0.de, 1
 cirugiasplasticas.com.mx, 1
 cirujanooral.com, 1
 cirurgicagervasio.com.br, 1
 cirurgicalucena.com.br, 1
 cirurgicasalutar.com.br, 1
-ciscodude.net, 0
+ciscodude.net, 1
 cisoaid.com, 1
 cisofy.com, 1
 cispeo.org, 1
 ciss.ltd, 1
 cisum-cycling.com, 1
 cisy.me, 1
 citationgurus.com, 1
 citcuit.in, 1
@@ -8959,21 +8958,24 @@ comocurarlagastritistratamientonatural.c
 comodesinflamarlashemorroides.org, 1
 comodo.nl, 1
 comodormirmasrapido.com, 1
 comodosslstore.com, 1
 comoeliminarlaspapulasperladasenelglande.com, 1
 comogene.com, 1
 comohacerelamoraunhombrenet.com, 1
 comohacerpara.com, 1
+comoimportar.net, 1
 comopuededejardefumar.net, 1
 comoquitarlacaspa24.com, 1
 comoquitarlasestriasrapidamente.com, 1
 comorecuperaratumujerpdf.com, 1
 comosatisfaceraunhombreenlacamaydejarloloco.com, 1
+comosecarabarriga.net, 1
+comoseduzir.net, 1
 comosefazisto.com.br, 1
 comp2go.com.au, 1
 compactchess.cc, 1
 compagnia-buffo.de, 1
 compagniemartin.com, 1
 comparatif-moto.fr, 1
 compareandrecycle.co.uk, 1
 compareandrecycle.com, 0
@@ -9005,30 +9007,28 @@ complt.xyz, 1
 compostatebien.com.ar, 1
 compoundingrxusa.com, 1
 compraneta.com, 0
 compreautomacao.com.br, 1
 compree.com, 1
 comprefitasadere.com.br, 1
 comprehensiveihc.com, 1
 compromised.com, 1
-compros.me, 1
 compservice.in.ua, 1
 comptrollerofthecurrency.gov, 1
 comptu.com, 1
 compubench.com, 1
 compucastell.ch, 1
 compucorner.mx, 1
 compuplast.cz, 1
 compusolve.nl, 1
 computehealth.com, 1
 computer-acquisti.com, 1
 computeracademy.co.za, 1
 computerassistance.co.uk, 1
-computerbas.nl, 1
 computerbase.de, 1
 computercraft.net, 1
 computeremergency.com.au, 0
 computerhilfe-feucht.de, 1
 computernetwerkwestland.nl, 1
 computerslotopschool.nl, 1
 computersystems.guru, 0
 comssa.org.au, 1
@@ -9073,17 +9073,16 @@ conexiontransporte.com, 1
 confiancefoundation.org, 1
 confidential.network, 1
 config.schokokeks.org, 0
 confiwall.de, 1
 conflux.tw, 1
 conformax.com.br, 1
 conformist.jp, 1
 confucio.cl, 1
-confuddledpenguin.com, 1
 cong5.net, 1
 congineer.com, 1
 congobunkering.com, 1
 conju.cat, 1
 conjugacao.com.br, 1
 conkret.ch, 1
 conkret.co.uk, 1
 conkret.de, 1
@@ -9355,17 +9354,17 @@ cotonmusic.ch, 1
 cotta.dk, 1
 cotwe-ge.ch, 1
 cougar.dating, 1
 coumoul.fr, 1
 counselling.network, 1
 counstellor.com, 1
 counter-team.ch, 1
 counterglobal.com, 1
-countermail.com, 1
+countermail.com, 0
 countermats.net, 1
 countersolutions.co.uk, 1
 countingto.one, 1
 countryattire.com, 1
 countrybrewer.com.au, 1
 countryfrog.uk, 1
 countryhouseresort.com, 1
 countybankdel.com, 1
@@ -9399,17 +9398,16 @@ cowboyim.com, 1
 coweo.cz, 1
 coxxs.me, 1
 coxxs.moe, 1
 cozitop.com.br, 1
 cozmaadrian.ro, 1
 cozo.me, 1
 cozyeggdesigns.com, 1
 cp-st-martin.be, 1
-cpahunt.com, 0
 cpaneltips.com, 1
 cpbanq.com, 1
 cpbapremiocaduceo.com.ar, 1
 cpcheats.co, 1
 cpd-education.co.uk, 1
 cphpvb.net, 1
 cplus.me, 1
 cplusplus.se, 1
@@ -9913,16 +9911,17 @@ cybercymru.co.uk, 1
 cyberduck.io, 1
 cyberdyne-industries.net, 1
 cyberexplained.info, 1
 cybergrx.com, 1
 cyberguerrilla.info, 1
 cyberguerrilla.org, 1
 cyberianhusky.com, 1
 cyberkov.com, 1
+cyberlab.kiev.ua, 0
 cyberlightapp.com, 1
 cybermeldpunt.nl, 1
 cyberoptic.de, 1
 cyberpeace.nl, 1
 cyberpioneer.net, 0
 cyberpubonline.com, 1
 cyberregister.nl, 1
 cyberregister.org, 1
@@ -10084,16 +10083,17 @@ daisakuikeda.org, 1
 daisidaniels.co.uk, 1
 daisy-peanut.com, 1
 daisypeanut.com, 1
 daiwai.de, 0
 daiweihu.com, 1
 daiyuu.jp, 1
 dak.org, 1
 daknob.net, 1
+daktarisys.com, 1
 daladubbeln.se, 1
 dalaran.city, 1
 dalb.in, 1
 dale-electric.com, 1
 dalek.co.nz, 1
 dalepresencia.com, 1
 dalfsennet.nl, 1
 dalingk.com, 1
@@ -10734,16 +10734,17 @@ denardbrewing.com, 1
 denbkh.ru, 1
 dengchangdong.com, 1
 dengode.eu, 1
 denimio.com, 1
 denimtoday.com, 1
 denis-martinez.photos, 1
 denisewakeman.com, 1
 denistruffaut.fr, 0
+deniszczuk.pl, 1
 denizdesign.co.uk, 1
 dennisang.com, 1
 dennisdoes.net, 0
 denniskoot.nl, 1
 dennismurphy.biz, 1
 dennispotter.eu, 1
 dennisvandenbos.nl, 1
 dennogumi.org, 1
@@ -10917,16 +10918,17 @@ devcu.net, 1
 devdesco.com, 1
 devdoodle.net, 1
 devel.cz, 1
 develerik.com, 0
 developer.android.com, 1
 developer.mydigipass.com, 0
 developerdan.com, 1
 developerfair.com, 1
+developermail.io, 0
 developers.facebook.com, 0
 developersclub.website, 1
 developfx.com, 1
 developmentaid.org, 1
 developmentsites.melbourne, 1
 develops.co.il, 1
 developyourelement.com, 1
 develux.com, 1
@@ -11149,16 +11151,17 @@ digital1st.co.uk, 1
 digital2web.com, 0
 digitalarchitecture.com, 1
 digitalbitbox.com, 1
 digitalbox.jp, 0
 digitalcash.cf, 1
 digitalcitizen.life, 1
 digitalcitizen.ro, 1
 digitalcloud.ovh, 1
+digitalcraftmarketing.co.uk, 1
 digitalcreationclass.com, 1
 digitalcuko.com, 1
 digitaldashboard.gov, 1
 digitaldatacenter.net, 1
 digitaldeli.com, 1
 digitaldeli.tv, 1
 digitaldeli.us, 1
 digitaldeliarchive.com, 1
@@ -11219,20 +11222,22 @@ dimmersnewburypark.com, 1
 dimmersoakpark.com, 1
 dimmersthousandoaks.com, 1
 dimmerswestlakevillage.com, 1
 dimonb.com, 1
 dimseklubben.dk, 1
 din-hkd.jp, 1
 dineachook.com.au, 1
 dinepont.fr, 1
+dingcc.me, 1
 dinge.xyz, 1
 dingelbob-schuhcreme.gq, 1
 dingsbums.shop, 1
 dingss.com, 1
+dinheirolucrar.com, 1
 dinkommunikasjon.no, 1
 dinmtb.dk, 1
 dinocarrozzeria.com, 1
 dinotopia.org.uk, 1
 dinotv.at, 1
 dintillat.fr, 1
 dintrafic.net, 1
 diodeled.com, 1
@@ -11721,17 +11726,16 @@ dosvientoselectric.com, 1
 dosvientoselectrical.com, 1
 dosvientoselectrician.com, 1
 dosvientosexteriorlighting.com, 1
 dosvientoslandscapelighting.com, 1
 dosvientoslighting.com, 1
 dosvientosoutdoorlighting.com, 1
 doswap.com, 1
 dosyauzantisi.com, 1
-dot.ro, 1
 dot42.no, 1
 dota2huds.com, 1
 dotacni-parazit.cz, 1
 dotbox.org, 1
 dotcircle.co, 1
 dotconnor.com, 1
 dotgov.gov, 1
 dothebangthingsalon.com, 1
@@ -11890,17 +11894,17 @@ dreamonkey.com, 1
 dreamrae.net, 1
 dreamtechie.com, 1
 dreax.win, 1
 drei01.com, 1
 drei01.de, 1
 dreid.org, 1
 dreischneidiger.de, 1
 dreiweiden.de, 1
-dreizwosechs.de, 1
+dreizwosechs.de, 0
 dress-cons.com, 1
 dressify.co, 1
 dressify.in, 1
 drevanbeale.com, 1
 drevo-door.cz, 1
 drew.beer, 1
 drew.red, 1
 drewapianostudio.com, 1
@@ -12150,16 +12154,17 @@ dusnan.com, 1
 dustplanet.de, 1
 dustri.org, 1
 dustycloth.com, 1
 dustygroove.com, 1
 dustyspokesbnb.ca, 1
 dutch.desi, 1
 dutch1.nl, 1
 dutchdare.nl, 1
+dutchessuganda.com, 1
 dutchforkrunners.com, 1
 dutchrank.nl, 1
 dutchwanderers.nl, 1
 dutchweballiance.nl, 1
 dv189.com, 1
 dvbris.co.uk, 1
 dvbris.com, 1
 dvdland.com.au, 1
@@ -12760,17 +12765,16 @@ elagplus.com, 1
 elainerock.com, 1
 elaon.de, 1
 elars.de, 1
 elarvee.xyz, 1
 elaxy-online.de, 1
 elb500ttl.nl, 1
 elbaal.gov, 1
 elbetech.net, 1
-elbohlyart.com, 1
 elcambiador.es, 1
 elcontadorsac.com, 1
 eldapoint.co.uk, 1
 elderoost.com, 1
 eldertons.co.uk, 1
 eldevo.com, 1
 eldietista.es, 1
 eldinhadzic.com, 1
@@ -12893,17 +12897,16 @@ elementarywave.com, 1
 elements.guide, 1
 elementshop.co.uk, 1
 elenatranslations.nl, 1
 elenorsmadness.org, 1
 elephants.net, 1
 elephpant.cz, 1
 elepover.com, 1
 elerizoentintado.es, 1
-elestanteliterario.com, 1
 eletesstilus.hu, 1
 elettricista-roma.org, 1
 eleusis-zur-verschwiegenheit.de, 1
 elevateandprosper.com, 1
 elevator.ee, 1
 elevatoraptitudetest.com, 1
 elexel.ru, 1
 elexprimidor.com, 1
@@ -13339,17 +13342,16 @@ eposwales.co.uk, 1
 eposyork.co.uk, 1
 eppelblei.lu, 1
 eppelduerferjugend.lu, 1
 eppelpress.lu, 1
 epreskripce.cz, 1
 epsilon.dk, 1
 epsorting.cz, 1
 epublibre.org, 1
-epulsar.ru, 1
 epyonsuniverse.net, 1
 eq-serve.com, 1
 eqorg.com, 1
 equalcloud.com, 1
 equallyy.com, 1
 equalparts.eu, 1
 equeim.ru, 1
 equidam.com, 1
@@ -13413,17 +13415,16 @@ erinn.io, 1
 erisrenee.com, 1
 erixschueler.de, 1
 erkaelderbarenaaben.dk, 1
 ernaehrungsberatung-rapperswil.ch, 1
 ernest.ly, 1
 eroimatome.com, 1
 eroma.com.au, 1
 eron.info, 1
-eroskines.com, 1
 eroticforce.com, 1
 erotpo.cz, 0
 erp-band.ru, 1
 erp.band, 1
 erpax.com, 1
 erpband.ru, 1
 erpcargo.com, 0
 erperium.com, 1
@@ -13816,17 +13817,16 @@ europeanpreppers.com, 1
 europeantimberconnectors.ca, 1
 europeantransportmanagement.com, 1
 europeanwineresource.com, 1
 europeos.es, 1
 europetravelservice.co.uk, 1
 europop.com, 1
 eurora.de, 1
 euroscot.de, 1
-euroservice.com.gr, 1
 euroshop.or.at, 1
 euroskano.nl, 1
 eurostrategy.vn.ua, 1
 eurotime.ua, 1
 eurotramp.com, 1
 eurotravelstar.eu, 1
 eurousa.us, 1
 eurovision.ie, 1
@@ -13914,17 +13914,16 @@ evilarmy.com, 1
 evilbeasts.ru, 1
 evilbunnyfufu.com, 1
 evilcult.me, 1
 evileden.com, 1
 evilized.de, 1
 evilmartians.com, 1
 evilness.nl, 1
 evilsite.cf, 1
-evilvolcanolairs.com, 1
 evion.nl, 1
 evlear.com, 1
 evoco.vc, 1
 evodation.com, 1
 evodation.org, 1
 evodia-spirits.de, 1
 evok.com.co, 0
 evokepk.com, 1
@@ -14038,16 +14037,17 @@ exploited.cz, 1
 exploitit.com.au, 1
 exploodo.rocks, 1
 exploravacations.in, 1
 exploremonero.com, 1
 exploringenderby.com, 1
 expo-america.ru, 1
 expo-asia.ru, 1
 expo-europe.ru, 1
+expo-larionov.org, 1
 expokohler.com, 1
 exponentialnews.net, 1
 expoort.co.uk, 1
 expoort.com, 1
 expoort.com.br, 1
 expoort.es, 1
 expoort.fr, 1
 expoort.it, 1
@@ -14271,16 +14271,17 @@ fakturi.com, 1
 fakturoid.cz, 1
 falaeapp.org, 1
 falaowang.com, 1
 falbros.com, 1
 falconfrag.com, 1
 falconvintners.com, 1
 falcoz.co, 1
 faldoria.de, 1
+falegname-roma.it, 1
 falkhusemann.de, 1
 falkus.net, 1
 fallenangeldrinks.co.uk, 1
 fallenangeldrinks.com, 1
 fallenangeldrinks.eu, 1
 fallenangelspirits.co.uk, 1
 fallenangelspirits.com, 1
 fallenmystic.com, 1
@@ -14893,17 +14894,16 @@ fishgen.no, 1
 fishserver.net, 1
 fishtacos.blog, 1
 fistu.la, 1
 fit-4u.ch, 1
 fit-mit-nina.com, 1
 fit-mit-system.eu, 1
 fit365.jp, 1
 fitchannel.com, 1
-fitfitup.com, 1
 fitinclass.com, 1
 fitkram.cz, 1
 fitmeat.at, 1
 fitness-challenge.co.uk, 1
 fitness.gov, 1
 fittelo.cz, 1
 fitzsim.org, 1
 fiuxy.bz, 1
@@ -15036,16 +15036,17 @@ flmortgagebank.com, 1
 floatationlocations.com, 1
 floaternet.com, 1
 flockbox.club, 1
 flocktofedora.org, 1
 floersheimer-openair.de, 1
 floffi.media, 1
 floj.tech, 1
 flokinet.is, 1
+floless.co.uk, 1
 flomeyer.de, 1
 floobits.com, 1
 flood.io, 1
 floorballpoint.cz, 1
 flooringnightmares.com, 1
 flooringsourcetx.com, 1
 floors4lessbay.com, 1
 floort.net, 0
@@ -15264,17 +15265,16 @@ forman.store, 1
 formapi.io, 1
 format-paysage.ch, 1
 formation-assureur.com, 1
 formation-mac.ch, 1
 formationseeker.com, 1
 formbetter.com, 1
 formini.dz, 1
 formkiq.com, 1
-formula-ot.ru, 1
 formulacionquimica.com, 1
 fornoreason.net.au, 1
 fornwall.net, 1
 foro.io, 0
 forodeespanol.com, 1
 forodieta.com, 1
 forologikidilosi.com.gr, 1
 forourselves.com, 1
@@ -15364,16 +15364,17 @@ foxhound.com.br, 1
 foxing.club, 1
 foxmay.co.uk, 1
 foxo.blue, 1
 foxontheinter.net, 1
 foxphotography.ch, 1
 foxquill.com, 1
 foxterrier.com.br, 1
 foxyslut.com, 1
+foyale.io, 1
 fpc.gov, 1
 fpersona.com, 1
 fpgradosuperior.com, 1
 fpki.sh, 1
 fptravelling.com, 0
 fpvr.org, 1
 fpy.cz, 1
 fr.search.yahoo.com, 0
@@ -15445,16 +15446,17 @@ frauenarzt-niendorf.de, 1
 frauenarzt-zinke.de, 1
 frauenlob.rocks, 1
 fraurichter.net, 1
 fraye.net, 1
 frbracch.it, 1
 frdl.ch, 1
 freaksites.dk, 1
 freaksports.com.au, 1
+freakyaweso.me, 1
 freakyawesome.com, 1
 frebi.org, 1
 frebib.co.uk, 1
 frebib.com, 1
 frebib.me, 1
 frebib.net, 1
 freddieonfire.tk, 0
 freddyfazbearspizzeria.com, 1
@@ -15624,16 +15626,17 @@ froehliche-hessen.de, 1
 frogatto.com, 1
 frogeye.fr, 1
 froggitt.com, 1
 frogsonamission.de, 1
 froh.co.jp, 1
 frokenblomma.se, 1
 frolov.net, 1
 frolova.org, 1
+from-the-net.com, 1
 fromix.de, 1
 fromlemaytoz.com, 1
 fromscratch.rocks, 1
 fromthesoutherncross.com, 1
 fronteers.nl, 0
 frontier-ad.co.jp, 1
 frontierdiscount.com, 1
 frontiers.nl, 1
@@ -15802,16 +15805,17 @@ funtime.kiev.ua, 1
 funtimebourne.co.uk, 1
 funtimeentertainment.co.uk, 1
 funtimesbouncycastles.co.uk, 1
 fur.red, 1
 furcity.me, 1
 furgo.love, 1
 furi.ga, 1
 furigana.info, 1
+furikake.xyz, 1
 furkancaliskan.com, 1
 furkot.com, 1
 furkot.de, 1
 furkot.es, 1
 furkot.fr, 1
 furkot.it, 1
 furkot.pl, 1
 furlan.co, 1
@@ -15852,16 +15856,17 @@ futurehack.io, 1
 futurenda.com, 1
 futureoceans.org, 1
 futuresonline.com, 1
 futuretimes.io, 1
 futurezone.at, 1
 futurope.com, 1
 fuwafuwa.moe, 1
 fuxwerk.de, 1
+fuyu.moe, 1
 fuzoku-sodan.com, 1
 fuzoku.jp, 1
 fuzzing-project.org, 1
 fveevaete.com, 1
 fwdx.net, 1
 fwest.ovh, 1
 fwest98.nl, 1
 fwest98.ovh, 1
@@ -16033,16 +16038,17 @@ gameplaysforkids.com, 1
 gamepreorders.com, 1
 gamequest.info, 1
 gamercredo.com, 1
 gamereader.de, 1
 gamerezo.com, 1
 gamerzdot.com, 1
 games4theworld.org, 1
 gamesaviour.com, 1
+gamesdepartment.co.uk, 1
 gameserver-sponsor.me, 1
 gameshowchallenge.ie, 1
 gamesided.com, 1
 gamesplanet.com, 1
 gamesputnik.ru, 1
 gamestats.gg, 1
 gameswitchers.uk, 1
 gametium.com, 1
@@ -16359,17 +16365,16 @@ geoport.al, 1
 georadar-algerie.com, 1
 george-brighton.co.uk, 1
 george-orwell.com, 1
 georgebrighton.co.uk, 1
 georgecolgrove.com, 1
 georgehalachev.com, 1
 georgemaschke.com, 1
 georgemaschke.net, 1
-georgeperez.me, 1
 georgescarryout.com, 1
 georgewbushlibrary.gov, 1
 georgiaautoglass.net, 1
 georgiaglassrepair.com, 1
 georgiastuartyoga.co.uk, 1
 georgioskontaxis.com, 1
 georgioskontaxis.net, 1
 georgioskontaxis.org, 1
@@ -16542,16 +16547,17 @@ ghou.me, 1
 ghowell.io, 1
 ghrelinblocker.info, 1
 ghrelinblocker.org, 1
 giac.org, 1
 giacomodrago.com, 1
 giacomodrago.it, 1
 giacomopelagatti.it, 1
 giaithich.net, 1
+giakki.eu, 0
 gianproperties.com, 1
 giant-panda.com, 1
 giant-tortoise.com, 1
 gianttree.de, 1
 giardinaggio.milano.it, 1
 giardinaggio.napoli.it, 1
 giardiniere.bologna.it, 1
 giardiniere.milano.it, 1
@@ -16911,16 +16917,17 @@ golfhausmallorca.com, 1
 golfpark-bostalsee.de, 1
 golfscape.com, 1
 golighthouse.com, 1
 golik.net.pl, 0
 golser.info, 1
 gomasy.jp, 1
 gomelchat.com, 1
 gomena.io, 1
+gomiblog.com, 1
 gommista.roma.it, 1
 gondawa.com, 1
 gongjianwei.com, 1
 gongjuhao.com, 1
 gonx.dk, 1
 goo.gl, 1
 good-tips.pro, 1
 gooday.life, 1
@@ -17254,17 +17261,17 @@ griyo.online, 1
 grizzlys.com, 1
 grmp.fr, 1
 groben-itsolutions.de, 1
 grocerybuild.com, 1
 grocock.me.uk, 1
 groenaquasolutions.nl, 1
 groenewoud.me, 1
 groentebesteld.nl, 1
-groenteclub.nl, 0
+groenteclub.nl, 1
 groentefruitzeep.com, 1
 groentefruitzeep.nl, 1
 groepjam-usedcars.be, 1
 grog.pw, 1
 grokker.com, 1
 groklearning.com, 1
 grolimur.ch, 1
 gronau-it-cloud-computing.de, 1
@@ -17555,17 +17562,16 @@ hacker.club, 1
 hacker.deals, 1
 hacker.holiday, 1
 hacker.im, 1
 hacker.one, 1
 hacker.parts, 1
 hacker1.com, 1
 hacker101.com, 1
 hackerchai.com, 1
-hackerco.com, 1
 hackereyes.com, 1
 hackergateway.com, 1
 hackerlite.xyz, 1
 hackernet.se, 1
 hackerone-ext-content.com, 1
 hackerone-user-content.com, 1
 hackerone.at, 1
 hackerone.com, 1
@@ -17772,17 +17778,17 @@ hardergayporn.com, 1
 hardertimes.com, 1
 hardesec.com, 1
 hardez.de, 1
 hardfalcon.net, 1
 hardforum.com, 1
 hardh.at, 1
 hardloopfysio.nl, 1
 hardrain980.com, 1
-hardtfrieden.de, 0
+hardtfrieden.de, 1
 hardtime.ru, 1
 hardwareschotte.de, 1
 haribilalic.com, 1
 harilova.fr, 1
 harion.fr, 1
 harisht.me, 0
 haritsa.co.id, 1
 harjitbhogal.com, 1
@@ -17951,16 +17957,17 @@ healtheals.com, 1
 healtheffectsofasbestos.com, 1
 healthery.com, 1
 healthfinder.gov, 1
 healthfoam.com, 1
 healthgames.co.uk, 1
 healthiercompany.com, 1
 healthiergenerations.co.uk, 1
 healthit.gov, 1
+healthlabs.com, 1
 healthmatchapp.com, 1
 healthplansamerica.org, 1
 healthstar-dev.io, 1
 healthstar.io, 1
 healththoroughfare.com, 1
 healthy-map.com, 1
 healthyandnaturalliving.com, 1
 healthybeterlife.click, 1
@@ -18376,16 +18383,17 @@ hitter.family, 1
 hitterfamily.com, 1
 hiv-symptome.de, 1
 hiv.com.tw, 1
 hiv.gov, 1
 hivatal-info.hu, 1
 hivatalinfo.hu, 1
 hiverlune.net, 1
 hiwiki.tk, 1
+hiyacar.co.uk, 1
 hiyobi.me, 1
 hiyuki2578.net, 1
 hizzacked.xxx, 1
 hj-mosaiques.be, 1
 hj.rs, 1
 hj2999.com, 1
 hj3455.com, 1
 hjartasmarta.se, 1
@@ -18653,16 +18661,17 @@ hostingpunt.be, 1
 hostingsolutions.cz, 1
 hostix.de, 1
 hostma.ma, 1
 hostme.co.il, 0
 hostmijnpagina.nl, 1
 hostmodern.com.au, 1
 hosts.cf, 1
 hostserv.org, 1
+hostworkz.com, 1
 hotcandlestick.com, 1
 hotchillibox.com, 1
 hotcoin.io, 1
 hotdoc.com.au, 1
 hotel-kronjuwel.de, 1
 hotel-le-vaisseau.ch, 1
 hotel-pension-sonnalp.eu, 1
 hotel-rosner.at, 1
@@ -18848,17 +18857,16 @@ huagati.com, 1
 huahinpropertylisting.com, 1
 huang-haitao.com, 1
 huang.nu, 1
 huangguancq.com, 1
 huangh.com, 1
 huangjiaint.com, 1
 huangjingjing.com, 1
 huangliangbo.com, 1
-huangting.me, 1
 huangzenghao.cn, 0
 huangzenghao.com, 1
 huaqian.art, 1
 huashan.co.uk, 1
 huaxueba.com, 1
 hub.org.ua, 1
 hub385.com, 1
 hubapi.com, 1
@@ -19490,17 +19498,16 @@ imaginair.es, 1
 imaginary.ca, 1
 imaginary.stream, 1
 imaginarymakings.me, 1
 imagine-programming.com, 1
 imaginetricks.com, 1
 imagr.io, 1
 imanageproducts.co.uk, 1
 imanageproducts.uk, 1
-imanesdeviaje.com, 1
 imanolbarba.net, 1
 imaple.org, 1
 imarkethost.co.uk, 1
 imask.ml, 1
 imawhale.com, 1
 imbianchino.roma.it, 1
 imbrian.org, 1
 imbushuo.net, 1
@@ -19543,17 +19550,16 @@ imlinan.net, 1
 immaterium.de, 1
 immatix.xyz, 1
 immersion-pictures.com, 1
 immersionwealth.com, 1
 immersivewebportal.com, 1
 immigrationdirect.com.au, 1
 immo-agentur.com, 1
 immo-passion.net, 1
-immobiliarecapitani.com, 1
 immobilien-badlippspringe.de, 1
 immobilien-in-istanbul.de, 1
 immobilien-wallat.de, 1
 immobilien-zirm.de, 1
 immobilier-nice.fr, 1
 immobilier92.net, 1
 immobiza.com, 0
 immortal.run, 1
@@ -19870,17 +19876,16 @@ innovativeideaz.org, 1
 innovum.cz, 0
 innsalzachsingles.de, 1
 innwan.com, 1
 inoa8.com, 1
 inobun.jp, 1
 inondation.ch, 1
 inorder.website, 1
 inovat.ma, 1
-inovatec.com, 1
 inovatecsystems.com, 1
 inpas.co.uk, 1
 inquant.de, 1
 ins-kreativ.de, 1
 ins.to, 1
 ins1gn1a.com, 1
 insane.zone, 1
 insblauehinein.nl, 1
@@ -20006,16 +20011,17 @@ interiorprofesional.com.ar, 1
 interisaudit.com, 1
 interlingvo.biz, 1
 intermax.nl, 1
 intermedinet.nl, 1
 internalkmc.com, 1
 international-arbitration-attorney.com, 1
 international-books.org, 1
 international-nash-day.com, 1
+internationalfashionjobs.com, 1
 internationalschoolnewyork.com, 1
 internationaltalento.it, 1
 internect.co.za, 1
 internet-aukcion.info, 1
 internet-software.eu, 1
 internetaanbieders.eu, 1
 internetbank.swedbank.se, 1
 internetbugbounty.com, 1
@@ -20207,17 +20213,16 @@ ipv6vpn.net, 1
 ipv6wallofshame.com, 1
 ipv8.net, 1
 iqboxy.com, 1
 iqsmn.org, 1
 ir1s.com, 1
 iramellor.com, 1
 iran-geo.com, 1
 iran-poll.org, 1
-irandp.net, 1
 iranian.lgbt, 1
 iranianholiday.com, 1
 iranjeunesse.com, 1
 irasandi.com, 1
 irayo.net, 1
 irc-results.com, 1
 ircmett.de, 1
 irdvb.com, 1
@@ -20350,17 +20355,17 @@ ispsoft.pro, 1
 ispweb.es, 1
 isqrl.de, 1
 israelbiblicalstudies.com, 1
 israelbizreg.com, 1
 israkurort.com, 1
 isreedyinthe.uk, 1
 isreedyinthe.us, 1
 isreedyintheuk.com, 1
-issa.org.pl, 1
+issa.org.pl, 0
 issasfrissa.se, 1
 isscouncil.com, 1
 issforum.org, 1
 issio.net, 1
 isslshop.com, 1
 issue.watch, 1
 issues.email, 1
 issuesofconcern.in, 1
@@ -20500,16 +20505,17 @@ itsstefan.eu, 1
 itstatic.tech, 1
 itswincer.com, 1
 ittop-gabon.com, 1
 itzap.com.au, 1
 iusedtosmoke.com, 1
 iuyos.com, 1
 ivact.co.jp, 1
 ivanbenito.com, 1
+ivanboi.com, 1
 ivancacic.com, 0
 ivanilla.org, 1
 ivanmeade.com, 1
 ivanpolchenko.com, 1
 ivaoru.org, 1
 ivfausland.de, 1
 ivfmeds.com, 1
 ivi-fertilite.fr, 1
@@ -20580,17 +20586,17 @@ j0ng.xyz, 1
 j0s.at, 1
 j0s.eu, 1
 j15h.nu, 1
 j2ee.cz, 1
 j2h.de, 1
 j3e.de, 1
 ja-dyck.de, 1
 ja-gps.com.au, 1
-ja-publications.agency, 0
+ja-publications.agency, 1
 ja.md, 1
 jaakkohannikainen.fi, 1
 jaalits.com, 1
 jaarvistech.com, 1
 jaaxypro.com, 1
 jaba.hosting, 1
 jababu.cz, 1
 jabbari.io, 1
@@ -20678,24 +20684,26 @@ jakubklimek.com, 1
 jakubtopic.cz, 1
 jakubvrba.cz, 1
 jala.co.jp, 1
 jaleo.cn, 1
 jalogisch.de, 1
 jamaat.hk, 1
 jamacha.org, 1
 jamalfi.bio, 1
+jamaware.org, 1
 jamberry.com.mx, 1
 jamberrynails.co.uk, 1
 james-bell.co.uk, 1
 james-digital.com, 1
 james-loewen.com, 1
 james.je, 1
 jamesachambers.com, 1
 jamesaimonetti.com, 1
+jamesandpame.la, 1
 jamesbillingham.com, 1
 jameschorlton.co.uk, 1
 jamesdorf.com, 1
 jamesevans.is, 1
 jamesgreenfield.com, 1
 jamesheald.com, 1
 jameshemmings.co.uk, 1
 jameshost.net, 1
@@ -21239,16 +21247,17 @@ johngo.tk, 0
 johnguant.com, 1
 johnkastler.net, 1
 johnmalloneemd.com, 0
 johnmcc.net, 1
 johnmcintosh.pro, 1
 johnmh.me, 1
 johnmichel.org, 1
 johnmorganpartnership.co.uk, 1
+johnno.be, 1
 johnnybet.com, 1
 johnnybsecure.com, 1
 johnroach.io, 1
 johnroberts.me, 1
 johnrockefeller.net, 1
 johnsanchez.io, 1
 johnsegovia.com, 1
 johnsonho.net, 1
@@ -21821,16 +21830,17 @@ kartacha.com, 1
 kartar.net, 0
 kartatopia.com, 1
 kartec.com, 1
 karten-verlag.de, 1
 kartonmodellbau.org, 1
 karula.org, 1
 karuneshjohri.com, 1
 karupp-did.net, 1
+kasadara.com, 1
 kasei.im, 1
 kashinavi.com, 1
 kashmirobserver.net, 1
 kasko.io, 1
 kasnoffskinclinic.com, 1
 kassa.at, 1
 kastankaoffice.cz, 1
 kastelruth.biz, 1
@@ -21863,17 +21873,16 @@ katnunn.co.uk, 1
 kato-yane.com, 1
 katrinjanke.de, 0
 katscastles.co.uk, 1
 kattelans.eu, 1
 katthewaffle.fr, 1
 katyl.info, 0
 katzenbrunnen-test.de, 1
 katzensklave.me, 1
-katzspeech.com, 1
 kau-boys.com, 1
 kau-boys.de, 1
 kaufberatung.community, 1
 kauperwood.ovh, 1
 kausta.me, 1
 kaverti.com, 1
 kavik.no, 1
 kavovary-kava.cz, 1
@@ -21963,16 +21972,17 @@ kein-design.de, 1
 kein-fidget-spinner-werden.de, 1
 keinanung.nl, 1
 keinefilterblase.de, 1
 keisaku.org, 1
 keishiando.com, 1
 keithlomax.com, 1
 keithws.net, 1
 kejar.id, 1
+kejibot.com, 1
 keke-shop.ch, 1
 kekgame.com, 1
 kekku.li, 1
 keksi.io, 1
 kekz.org, 1
 kela.jp, 1
 keldan.fo, 1
 kelderwijnen.nl, 1
@@ -22124,17 +22134,17 @@ kiano.net, 1
 kiapartscenter.net, 1
 kiapartsdepartment.com, 1
 kiapps.ovh, 1
 kibea.net, 1
 kibibit.net, 1
 kibriscicek.net, 1
 kick-in.nl, 1
 kickasscanadians.ca, 1
-kickedmycat.com, 0
+kickedmycat.com, 1
 kicou.info, 1
 kidbacker.com, 1
 kiddies.academy, 1
 kiddieschristian.academy, 1
 kiddieschristianacademy.co.za, 1
 kiddyboom.ua, 1
 kids-at-home.ch, 1
 kids-castles.com, 1
@@ -22222,17 +22232,16 @@ kingofthecastlecoventry.co.uk, 1
 kingofthecastlesentertainments.co.uk, 1
 kingofthecastlesouthwales.co.uk, 1
 kingofthecastlesrhyl.co.uk, 1
 kingpincages.com, 1
 kingstclinic.com, 1
 kingtecservices.com, 1
 kini24.ru, 1
 kinkenonline.com, 1
-kinnettmemorial.org, 1
 kinnikinnick.com, 1
 kinniyaonlus.com, 1
 kinocheck.de, 1
 kinohled.cz, 1
 kinomoto.me, 1
 kinomoto.ovh, 0
 kinos.nl, 1
 kinozal-tv.appspot.com, 1
@@ -23374,17 +23383,17 @@ le42mars.fr, 1
 leadbox.cz, 1
 leaderoftheresistance.com, 0
 leaderoftheresistance.net, 0
 leadgenie.me, 1
 leadinfo.com, 1
 leadingsalons.com, 1
 leadquest.nl, 1
 leafandseed.co.uk, 1
-leafans.tk, 1
+leafans.tk, 0
 leafinote.com, 1
 leakedminecraft.net, 1
 leakforums.net, 1
 leakreporter.net, 1
 leaks.directory, 1
 leamsigc.com, 1
 leanclub.org, 1
 leandre.cn, 1
@@ -23466,17 +23475,17 @@ lefebvristes.com, 1
 lefebvristes.fr, 1
 leflibustier.ru, 1
 lefonddeloeil.com, 1
 leftclick.cloud, 1
 leftclick.eu, 1
 lega-dental.com, 1
 legacy.bank, 1
 legadental.com, 1
-legaillart.fr, 0
+legaillart.fr, 1
 legal.farm, 1
 legalcontrol.info, 1
 legaleus.co.uk, 1
 legalrobot-uat.com, 1
 legalrobot.com, 1
 legaltip.eu, 1
 legatofmrc.fr, 1
 legendarycamera.com, 1
@@ -24249,17 +24258,16 @@ logbook.ch, 1
 logbot.info, 1
 logcat.info, 1
 logement-saisonnier.com, 1
 logement.com, 1
 logentries.com, 0
 logexplorer.net, 1
 logfile.at, 1
 logfile.ch, 1
-logfro.de, 1
 logic8.ml, 1
 logicchen.com, 1
 logiciel-entreprise-seurann.fr, 1
 logicio.ch, 0
 logicio.de, 0
 logicio.net, 0
 logicne-hise.si, 1
 logicoma.com, 1
@@ -24656,18 +24664,16 @@ luteijn.pro, 1
 lutizi.com, 0
 lutoma.org, 1
 luukdebruincv.nl, 1
 luukklene.nl, 1
 luuppi.fi, 1
 luvare.com, 1
 luvbridal.com.au, 1
 luxcraft.eng.br, 1
-luxescreenprotector.nl, 1
-luxofit.de, 1
 luxsci.com, 1
 luxurynsight.net, 1
 luxurytimepieces.net, 1
 luxuryweddingsindonesia.com, 1
 luxusnivoucher.cz, 1
 luxusnyvoucher.sk, 1
 luxvacuos.net, 1
 luxwatch.com, 1
@@ -24682,17 +24688,16 @@ lvrsystems.com, 1
 lw-addons.net, 1
 lwl-foej-bewerbung.de, 0
 lwl.moe, 1
 lwl12.com, 1
 lxd.cc, 1
 lxd.pm, 1
 lycee-saintjoseph-mesnieres.fr, 1
 lychankiet.name.vn, 0
-lycly.me, 1
 lydudlejning.net, 1
 lyfbits.com, 1
 lyftrideestimate.com, 1
 lykai.ca, 1
 lymia.moe, 1
 lynero.dk, 1
 lyness.io, 1
 lyngvaer.no, 1
@@ -25490,16 +25495,17 @@ mathijskingma.nl, 1
 mathis.com.tr, 1
 maths.network, 1
 mathsource.ga, 1
 mathspace.co, 1
 mathsweek.nz, 1
 mathsweek.org.nz, 1
 mathsweek.school.nz, 1
 mathys.io, 1
+matildajaneclothing.com, 1
 matjaz.it, 1
 matlabjo.ir, 1
 matlss.com, 1
 matok.me.uk, 1
 matome-surume.com, 1
 matomeathena.com, 1
 matoutepetiteboutique.com, 1
 matridiana.com, 1
@@ -25762,17 +25768,16 @@ mdxn.org, 1
 mdzservers.com, 1
 me-center.com, 1
 me-groups.com, 1
 me.net.nz, 1
 meadowfen.farm, 1
 meadowviewfarms.org, 1
 mealgoo.com, 1
 meamod.com, 0
-meanevo.com, 1
 meany.xyz, 1
 meap.xyz, 1
 measureyourpenis.today, 1
 meat.org.uk, 1
 meathealth.com, 1
 mebaneattorney.com, 1
 mebanesteakhouse.com, 1
 mecanicadom.com, 1
@@ -26112,31 +26117,34 @@ messenger.co.tz, 1
 messenger.com, 0
 messengerwebbrands.com, 1
 messer24.ch, 1
 messymom.com, 1
 mestazitrka.cz, 1
 mestr.es, 1
 mesvt.com, 1
 meta-db.com, 1
+meta-word.com, 1
 meta.sc, 1
 metachris.com, 1
 metacoda.com, 1
 metacode.biz, 1
 metadatawiki.com, 1
 metaether.net, 1
 metafurquest.net, 1
 metalu.ch, 1
 metanic.services, 1
 metanodo.com, 1
 metapeen.nl, 1
 metaregistrar.com, 1
 metasquare.com.au, 1
 metasquare.nyc, 1
 metaword.com, 1
+metaword.net, 1
+metaword.org, 1
 meteenonline.nl, 1
 meteo-parc.com, 1
 meteo-r.ovh, 1
 meteobox.co, 1
 meteobox.cz, 1
 meteobox.de, 1
 meteobox.es, 1
 meteobox.fr, 1
@@ -26320,17 +26328,16 @@ migueldominguez.ch, 1
 miguelmartinez.ch, 1
 miguelmenendez.pro, 1
 miguelmoura.com, 1
 miguia.tv, 1
 mihnea.net, 1
 mijcorijneveld.nl, 1
 mijn-financien.be, 1
 mijnavg.eu, 1
-mijnetickets.nl, 0
 mijnetz.nl, 1
 mijnkerstkaarten.be, 1
 mijnkinderkleding.com, 1
 mijnpartijhandel.nl, 1
 mijnreisoverzicht.nl, 1
 mijnsite.ovh, 1
 mijnstembureau.nl, 1
 mijntransacties.nl, 1
@@ -26549,31 +26556,31 @@ minitruckin.net, 1
 minitrucktalk.com, 1
 minkymoon.jp, 1
 minnesotakinkyyouth.org, 1
 minnesotamathcorps.org, 1
 minnesotareadingcorps.org, 1
 minnit.chat, 1
 minobar.com, 1
 minor.news, 1
-minorshadows.net, 1
 minpingvin.dk, 1
 minschuns.ch, 1
 mintclass.com, 1
 mintea-noua.ro, 1
 minto.cc, 1
 mintosherbs.com, 1
 mintrak2.com, 1
 mintse.com, 1
 minu.link, 1
 minube.co.cr, 1
 minux.info, 1
 mipapo.de, 1
 mipla.ch, 1
 miproximopaso.org, 1
+mipueblohoy.com, 1
 mipymesenlinea.com, 1
 mir.pe, 1
 mirabalphoto.es, 1
 miraheze.org, 1
 miraidenshi.com, 1
 miraiex.com, 1
 mirch.com, 1
 mirco-grams.de, 1
@@ -26668,17 +26675,16 @@ mivzakim.net, 1
 mivzakim.org, 1
 mivzakim.tv, 1
 mivzaklive.co.il, 1
 miweb.cr, 0
 mixinglight.com, 1
 mixnshake.com, 1
 mixposure.com, 1
 mixtafrica.com, 1
-mixtape.moe, 1
 mixx.com.hk, 1
 miya.io, 1
 miyako-kyoto.jp, 1
 miyatore.com, 1
 miyoshi-kikaku.co.jp, 1
 miyoshi-kikaku.com, 1
 miyugirls.com, 1
 mizipack.com, 1
@@ -26916,17 +26922,16 @@ momirfarooq.com, 1
 momjoyas.com, 1
 momo0v0.club, 1
 momozeit.de, 1
 momstableonline.com, 1
 momut.org, 1
 momy-genealogie.info, 1
 mon-agenda.org, 0
 mon-partage.fr, 1
-mon-trafic.com, 1
 mon22.ch, 1
 mona-antenna.com, 1
 mona-dress.com, 1
 monachatdeco.com, 1
 monaco-automaten.de, 1
 monad.io, 1
 monakasatmasr.com, 1
 monalisa.wtf, 1
@@ -26951,29 +26956,29 @@ moneypark.ch, 1
 moneytoday.se, 1
 mongla168.net, 1
 mongla88.net, 1
 mongolieenfrance.fr, 1
 monicabeckstrom.no, 1
 monique.io, 1
 moniquedekermadec.com, 1
 moniquemunhoz.com.br, 1
+monitman.com, 1
 monitman.solutions, 1
 monitorchain.com, 1
 monitori.ng, 1
 monitoring.kalisz.pl, 1
 monitzer.com, 1
 monix.io, 1
 monkay.de, 1
 monkeybusiness.agency, 1
 monkeydust.net, 1
 monkeyhill.us, 1
 monkeytek.ca, 1
 monkieteel.com, 1
-monkieteel.nl, 1
 monlabs.com, 1
 monloyer.quebec, 1
 monnyonle.hu, 1
 mono.cafe, 1
 mono0x.net, 1
 monobank.no, 1
 monochrometoys.com, 1
 monodukuri.com, 1
@@ -27068,16 +27073,17 @@ more-hikkoshi.com, 1
 more-terrain.de, 1
 moreal.co, 1
 moreapp.co.uk, 1
 morenci.ch, 1
 morepablo.com, 1
 morepay.cn, 1
 morepopcorn.co.nz, 1
 morespacestorage.com.au, 1
+moresw.com, 1
 morethanautodealers.com, 1
 morethancode.be, 1
 morethandigital.info, 1
 morfitronik.pl, 1
 morganino.eu, 1
 morganino.it, 1
 morgansleisure.co.uk, 1
 morgner.com, 1
@@ -27187,16 +27193,17 @@ mowalls.net, 1
 moy.cat, 1
 moyer.pub, 1
 moylen.eu, 1
 moyoo.net, 1
 moysovet.info, 1
 moyu.host, 1
 mozartgroup.hu, 1
 mozektevidi.net, 1
+mozgb.ru, 1
 mozilla.cz, 1
 mozzez.de, 1
 mozzilla.cz, 1
 mp3gratuiti.com, 1
 mpa-pro.fr, 1
 mpc-hc.org, 1
 mpcompliance.com, 1
 mpe.org, 1
@@ -28023,16 +28030,17 @@ nappynko.com, 1
 narada.com.ua, 1
 narakenkoland.net, 1
 naralogics.com, 1
 narardetval.se, 1
 narazaka.net, 1
 narduin.xyz, 1
 narenderchopra.com, 1
 narfation.org, 1
+nargele.eu, 1
 nargileh.nl, 1
 narindal.ch, 1
 narko.space, 1
 narmos.ch, 1
 naro.se, 1
 narodsovety.ru, 1
 naroska.name, 1
 narrativasdigitais.pt, 1
@@ -28225,16 +28233,17 @@ ncdesigns-studio.com, 1
 ncea.net.au, 1
 nchangfong.com, 1
 nchponline.org, 1
 ncic.gg, 1
 ncloud.freeddns.org, 1
 ncm-malerbetrieb.de, 1
 ncsc.gov.uk, 1
 ncsccs.com, 1
+nctx.co.uk, 1
 ndarville.com, 1
 ndbt.com, 1
 ndcpolipak.com, 1
 ndeoffshore.com, 1
 nder.be, 1
 ndfa.net, 1
 ndhlink.com, 1
 ndmath.club, 1
@@ -28333,17 +28342,16 @@ nemopret.dk, 1
 nemplex.win, 1
 nems.no, 1
 nemumu.com, 1
 nemunai.re, 1
 neo2shyalien.eu, 0
 neobits.nl, 1
 neocities.org, 1
 neoclick.io, 1
-neocoding.com, 1
 neocyd.com, 1
 neodrive.ch, 1
 neoedresources.org, 1
 neoeliteconsulting.com, 1
 neojo.org, 1
 neokobe.city, 1
 neolaudia.es, 1
 neolink.dk, 1
@@ -28418,17 +28426,16 @@ netducks.com, 1
 netducks.space, 1
 netera.se, 1
 neteraser.de, 1
 netexem.com, 1
 netfabb.com, 1
 netflixlife.com, 1
 netfog.de, 1
 netfuture.ch, 1
-netfxharmonics.com, 1
 nethackwiki.com, 1
 nethask.ru, 1
 nethostingtalk.com, 1
 nethruster.com, 1
 nethunter.top, 1
 netica.fr, 0
 netki.com, 1
 netlentes.com.br, 1
@@ -28632,16 +28639,17 @@ nfl.dedyn.io, 1
 nfl.duckdns.org, 1
 nflmocks.com, 1
 nfls.io, 1
 nflsic.org, 1
 nfluence.org, 1
 nframe.io, 1
 nfrost.me, 1
 nfsec.pl, 1
+nfz.moe, 1
 ng-musique.com, 1
 ngasembaru.com, 1
 ngc.gov, 0
 nghe.net, 1
 ngiemboon.net, 1
 nginxconfig.com, 1
 nginxconfig.io, 1
 nginxyii.tk, 1
@@ -28713,17 +28721,16 @@ nicolas-hoizey.com, 1
 nicolas-simond.com, 1
 nicolashess.de, 1
 nicolasiung.me, 1
 nicolaszambetti.ch, 1
 nicolaw.uk, 1
 nicolemathew.com, 1
 niconico.ooo, 1
 niconode.com, 0
-nicoobook.com, 1
 nicorevin.ru, 1
 nicsezcheckfbi.gov, 1
 nicul.in, 1
 nidro.de, 1
 nidsuber.ch, 1
 niederohmig.de, 1
 niehage.name, 1
 nielshoogenhout.be, 1
@@ -28758,17 +28765,16 @@ nigger.racing, 1
 night2stay.cn, 1
 night2stay.com, 1
 night2stay.de, 1
 night2stay.fr, 1
 night2stay.ru, 1
 nightbutterflies.com, 1
 nightfirec.at, 1
 nightfirecat.com, 1
-nightmoose.org, 1
 nightsi.de, 1
 nightstand.io, 1
 nightwinds.tk, 1
 nigt.cf, 1
 nihon-no-sake.net, 1
 nihseniorhealth.gov, 0
 nijiero-ch.com, 0
 nijikata.com, 1
@@ -29351,16 +29357,17 @@ observatory.se, 1
 obsessharness.com, 1
 obsidianirc.net, 1
 obsproject.com, 1
 obtima.org, 1
 obud.cz, 1
 obyvateleceska.cz, 1
 oc-minecraft.com, 1
 oc-sa.ch, 1
+ocad.com.au, 1
 ocapic.com, 1
 ocarupo.com, 1
 occ.gov, 1
 occasion-impro.com, 1
 occenterprises.org, 1
 occentus.net, 1
 occmon.net, 1
 occonnections.org, 1
@@ -29484,17 +29491,16 @@ ohhdeertrade.com, 1
 ohhere.xyz, 1
 ohiohealthfortune100.com, 1
 ohling.org, 1
 ohlmeier.com, 0
 ohlmeier.net, 0
 ohlmeier.org, 0
 ohmayonnaise.com, 1
 ohne-name.de, 1
-ohnemusik.com, 1
 ohnonotme.com, 1
 ohol.se, 1
 ohreally.de, 1
 ohsohairy.co.uk, 1
 ohyooo.com, 1
 oi-wiki.org, 0
 oiaio.cn, 1
 oilfieldinjury.attorney, 1
@@ -29503,21 +29509,25 @@ oinky.ddns.net, 1
 oirealtor.com, 1
 oisd.nl, 1
 oita-homes.com, 1
 ojaioliveoil.com, 1
 ojanaho.com, 1
 ojdip.net, 1
 ojomovies.com, 1
 ojp.gov, 1
+okad-center.de, 1
+okad.de, 1
+okad.eu, 1
 okakuro.org, 1
 okanaganrailtrail.ca, 1
 okashi.me, 1
 okay.cf, 1
 okay.coffee, 1
+okaz.de, 1
 okburrito.com, 1
 okchicas.com, 1
 okchousebuyer.com, 1
 okeeferanch.ca, 1
 okhrana.agency, 1
 okib.ca, 1
 okin-jp.net, 1
 okinawa-mag.net, 1
@@ -30070,17 +30080,16 @@ otinane.eu, 1
 otmns.net, 1
 otorrino.pt, 1
 otoy.com, 1
 otoya.space, 1
 otr.ie, 1
 otrm.de, 1
 otsfreestyle.jp, 1
 otsu.beer, 1
-ottoproject.io, 1
 ottoversand.at, 1
 otus-magnum.com, 1
 otvaracie-hodiny.sk, 1
 otya.me, 1
 ouaibe.qc.ca, 1
 ouattara.ch, 1
 ouestsolutions.com, 1
 ouglor.com, 1
@@ -30090,16 +30099,17 @@ oulunjujutsu.com, 1
 ouowo.gq, 1
 our-box.net, 1
 ourai.ws, 1
 ourchoice2016.com, 1
 ourcloud.at, 1
 ourcodinglives.com, 1
 ourdocuments.gov, 1
 ourevents.net, 1
+ourmaster.org, 1
 ouruglyfood.com, 1
 ourwedding.xyz, 1
 ourworldindata.org, 1
 outdoorfurniture.ie, 1
 outdoorimagingportal.com, 1
 outdoorlightingagoura.com, 1
 outdoorlightingagourahills.com, 1
 outdoorlightingcalabasas.com, 1
@@ -30223,17 +30233,16 @@ pacificpalisadeslandscapelighting.com, 1
 pacificpalisadeslighting.com, 1
 pacifictilkin-occasions.be, 1
 pacifique-web.nc, 1
 pack-haus.de, 1
 packagefactory.dk, 1
 packagingproject.management, 1
 packagist.org, 0
 packaware.com, 1
-packer.io, 1
 packetapp.ru, 1
 packetcrash.net, 1
 packetdigital.com, 1
 packetlinux.com, 1
 packshot-creator.com, 1
 pacoda.de, 0
 pact2017.nl, 1
 pactf-flag-4boxdpa21ogonzkcrs9p.com, 1
@@ -30849,16 +30858,17 @@ pennergold.net, 1
 pennington.io, 1
 pennyparkerpaper.com, 1
 penrithapartments.com.au, 1
 pens.com, 1
 pensacolawinterfest.org, 1
 pensador.com, 1
 pensador.info, 1
 pensioenfonds-ey.nl, 1
+pension-waldesruh.de, 1
 pensionpilot.ca, 1
 pensiunealido.ro, 1
 penslabyrinth.com, 1
 pentandra.com, 1
 pentest.blog, 1
 pentest.nl, 1
 pentesterlab.com, 1
 penticton.photography, 1
@@ -31222,17 +31232,16 @@ pieces-or.com, 1
 pieinsurance.com, 1
 piekacz.co.uk, 1
 piekacz.eu.org, 1
 piekacz.net, 1
 piekacz.tel, 1
 pieland.eu, 1
 pieldenaranja.com, 1
 piem.org, 1
-pieperhome.de, 1
 pieq.eu, 1
 pieq.eu.org, 1
 pier28.com, 1
 piercing-store.com, 1
 piercraft.com, 1
 pierre-denoblens.net, 1
 pierre-schmitz.com, 1
 pierrefv.com, 1
@@ -31286,16 +31295,17 @@ pinkapple.com, 1
 pinkbike.com, 1
 pinkbikecycle.com, 1
 pinkerton.io, 1
 pinkinked.com, 1
 pinkladyapples.co.uk, 1
 pinklecfest.org, 1
 pinklittlenotebook.com, 1
 pinkwalk.co.nz, 1
+pinkyf.com, 0
 pinkylam.me, 1
 pinnacleallergy.net, 1
 pinnaclelife.co.nz, 1
 pinnaclelife.nz, 1
 pinnacles.com, 1
 pinner.io, 1
 pinoydailytvshow.net, 1
 pinoyonlinetv.com, 1
@@ -31530,28 +31540,26 @@ pleaseuseansnisupportedbrowser.ml, 1
 pleasure-science.com, 1
 plegro.com, 1
 pleiades.com.tr, 1
 pleier-it.de, 0
 pleier.it, 0
 pleine-conscience.ch, 1
 plen.io, 1
 plenigo.com, 1
-plerion.net, 1
 plesse.pl, 1
 plexhome13.ddns.net, 1
 plexi.dyndns.tv, 1
 plexmark.tk, 1
 plexpy13.ddns.net, 1
 plextv.de, 1
 plinc.co, 1
 pliosoft.com, 1
 plissee-experte.de, 1
 plitu.de, 1
-plixer.com, 1
 plny.eu, 1
 plob.org, 1
 plochka.bg, 1
 plokko.com, 1
 plongee-phuket.fr, 1
 ploofer.com, 1
 plot.ly, 1
 plotbubble.com, 1
@@ -31569,17 +31577,16 @@ plumber-in-sandton.co.za, 1
 plumbermountedgecombe.co.za, 1
 plumberumhlangarocks.co.za, 1
 plumbingbenoni.co.za, 1
 plumbingcentral.com.au, 1
 plumbingglenvista.co.za, 1
 plumlocosoft.com, 1
 plumnet.ch, 1
 plumpie.net, 0
-plumplat.com, 1
 plur.com.au, 1
 plural.cafe, 1
 plurr.me, 1
 plus-5.com, 1
 plus.google.com, 1
 plus.sandbox.google.com, 1
 plus1s.site, 1
 plus1s.tk, 1
@@ -31624,17 +31631,16 @@ pmklaassen.com, 1
 pmnaish.co.uk, 1
 pmoreau.org, 1
 pmp-art.com, 1
 pmponline.de, 1
 pmsacorp.com, 1
 pmsf.eu, 1
 pmsfdev.com, 1
 pmt-documenten.nl, 1
-pn.id.lv, 1
 pnakosoft.com, 1
 pnakosoft.com.au, 1
 pneu01.fr, 1
 pneu74.fr, 1
 pneuhaus-lemp.ch, 1
 pneumonline.be, 1
 pnimmobilier.ch, 1
 pnmhomecheckup.com, 1
@@ -31940,17 +31946,16 @@ power-coonies.de, 1
 power-fit.org, 1
 power-flowengineer.com, 1
 power-meter.cc, 1
 power-tools24.com, 1
 powerball.shop, 1
 powercloud.technology, 1
 powerdent.net.br, 1
 poweredbyiris.nl, 1
-poweredbypurdy.com, 1
 powerentertainment.tv, 1
 powerfortunes.com, 1
 powergridess.com, 0
 powermatic7.com, 1
 powermeter.at, 1
 powermint.de, 1
 powerplaywashers.com, 1
 powerpointschool.com, 1
@@ -32095,16 +32100,17 @@ prettytunesapp.com, 1
 pretwolk.nl, 1
 pretzelx.com, 1
 prevenir.ch, 1
 preview-it-now.com, 1
 priceholic.com, 1
 priceremoval.net, 1
 pricesniffer.co, 1
 prideindomination.com, 1
+pridetechdesign.com, 0
 prielwurmjaeger.de, 1
 prifo.se, 1
 prijsvergelijken.ml, 1
 primaconsulting.net, 1
 primalbase.com, 1
 primalinea.pro, 1
 primates.com, 1
 primewho.org, 1
@@ -32128,16 +32134,17 @@ princovi.cz, 1
 prinice.org, 1
 printeknologies.com, 1
 printerleasing.be, 1
 printexpress.cloud, 1
 printf.de, 1
 printler.com, 1
 printmet.com, 1
 printsos.com, 1
+printus.de, 1
 prior-it.be, 1
 priorite-education.com, 1
 priorityelectric-agourahills.com, 1
 priorityelectric-calabasas.com, 1
 priorityelectric-camarillo.com, 1
 priorityelectric-dosvientos.com, 1
 priorityelectric-hiddenhills.com, 1
 priorityelectric-lakesherwood.com, 1
@@ -32628,17 +32635,17 @@ pusatinkubatorbayi.com, 1
 pushers.com.mx, 1
 pushphp.com, 1
 pushrax.com, 1
 pusichatka.ddns.net, 1
 put.moe, 1
 put.re, 1
 putatara.net, 1
 putman-it.nl, 1
-putney.io, 1
+putney.io, 0
 putomani.rs, 1
 putrock.be, 1
 puurwonengeldrop.nl, 0
 puxlit.net, 1
 puyallupnissanparts.com, 1
 puyblanc.info, 1
 puzz.gg, 1
 puzz.me, 1
@@ -32736,17 +32743,16 @@ qianqiao.me, 1
 qiaohong.org, 1
 qicomidadeverdade.com.br, 1
 qifu.me, 1
 qifu.org.cn, 1
 qikan.net, 0
 qiliang.wang, 1
 qingcao.org, 1
 qingpat.com, 1
-qingpei.me, 1
 qionouu.cn, 1
 qis.fr, 1
 qitarabutrans.com, 1
 qits.de, 0
 qiuri.org, 1
 qivonline.pt, 1
 qiwi.be, 1
 qixi.biz, 1
@@ -33163,16 +33169,17 @@ ravse.dk, 1
 rawdutch.nl, 1
 rawinfosec.com, 1
 rawr.sexy, 1
 rawsec.net, 1
 raxion.cf, 1
 raxion.tk, 1
 ray-home.de, 1
 ray-works.de, 1
+rayanitco.com, 1
 raycarruthersphotography.co.uk, 1
 rayiris.com, 1
 raykitchenware.com, 1
 raymcbride.com, 1
 raymd.de, 1
 raymii.org, 1
 raymondelooff.nl, 1
 raystark.com, 1
@@ -33331,17 +33338,17 @@ recon-networks.com, 1
 recordeuropa.com, 0
 recoveringspirit.com, 1
 recoveryonline.org, 1
 recreation.gov, 1
 recreoviral.com, 1
 recruitmade.jp, 1
 recruitsecuritytraining.co.uk, 1
 recruitsecuritytraining.com, 1
-rectecforum.com, 0
+rectecforum.com, 1
 rectoraudiparts.com, 1
 recuerdafilms.com, 1
 recuperodatiraidfastec.it, 1
 recurly.com, 1
 red-t-shirt.ru, 1
 red-trigger.net, 1
 red2fred2.com, 1
 redable.hosting, 1
@@ -33408,16 +33415,17 @@ redsquirrelcampsite.co.uk, 1
 redstickfestival.org, 1
 redstoner.com, 1
 redteam-pentesting.de, 1
 redwaterhost.com, 1
 redweek.com, 1
 redwoodpaddle.es, 1
 redwoodpaddle.pt, 1
 redzurl.com, 0
+reed-sensor.com, 1
 reedloden.com, 1
 reedyforkfarm.com, 1
 reegle.com, 1
 reepay.com, 1
 rees-carter.net, 1
 reesmichael1.com, 1
 reeson.at, 1
 reeson.de, 1
@@ -34397,17 +34405,16 @@ rsblake.net, 1
 rsgcard.com, 1
 rsingermd.com, 1
 rsl.gd, 1
 rsldb.com, 1
 rsm-intern.de, 1
 rsm-liga.de, 1
 rsmith.io, 1
 rsmmail.com, 1
-rsp-blogs.de, 1
 rsridentassist.com, 1
 rss.sh, 0
 rssr.se, 1
 rstsecuritygroup.co.uk, 1
 rsttraining.co.uk, 1
 rsvaachen.de, 1
 rsync.eu, 0
 rt22.ch, 1
@@ -34501,16 +34508,17 @@ rumplesinflatables.co.uk, 1
 rumtaste.com, 1
 rumtaste.de, 1
 run-forrest.run, 1
 run-it-direct.co.uk, 1
 runagain.ch, 1
 runcarina.com, 1
 rundumcolumn.xyz, 1
 runebet.com, 1
+runefake.com, 1
 runementors.com, 0
 runklesecurity.com, 1
 runnergrapher.com, 1
 runreport.fr, 1
 runschrauger.com, 1
 runvs.io, 1
 ruobiyi.com, 1
 ruobr.ru, 1
@@ -34786,16 +34794,17 @@ salmotierra-salvatierra.com, 1
 salon-claudia.ch, 1
 salon-minipli.de, 1
 salon.io, 0
 salon1.ee, 1
 salonasymetria.com, 1
 salonasymetria.pl, 1
 salonestella.it, 1
 salonsantebienetre.ch, 1
+salrosadohimalaia.com, 1
 salsa-straubing.de, 1
 saltbythesea.com, 1
 saltercane.com, 0
 saltireconservation.com, 1
 saltro.nl, 1
 saltstack.cz, 1
 salud.top, 0
 saludsexualmasculina.org, 1
@@ -34996,16 +35005,17 @@ saterdalen.net, 1
 satimagingcorp.com, 1
 satinn.pl, 1
 sativatunja.com, 1
 satmd.de, 1
 satoshinumbers.com, 1
 sattamatkachart.in, 1
 sattamatkamobi.mobi, 1
 saturn.pl, 1
+saturngames.co.uk, 1
 satyanarayana.xyz, 1
 saudavel.com.vc, 1
 saudeealimentos.com, 1
 saudeintimadamulher.com.br, 1
 saudenoclique.com.br, 1
 sauenytt.no, 1
 sauer-systems.net, 1
 sauerbrey.eu, 1
@@ -35075,16 +35085,17 @@ sbsavings.bank, 1
 sbsbaits.com, 1
 sbsnursery.co.uk, 1
 sbsrv.ml, 1
 sbssoft.ru, 1
 sbytes.info, 1
 sc5.jp, 1
 scaarus.com, 1
 scaffalature.roma.it, 1
+scaffoldhireeastrand.co.za, 1
 scalacollege.nl, 1
 scalaire.com, 1
 scalaire.fr, 1
 scalesbiolab.com, 1
 scaling.solutions, 1
 scallywagsbouncycastles.co.uk, 1
 scallywagskids.co.uk, 1
 scamblockplus.org, 1
@@ -35136,16 +35147,17 @@ schillers-friedberg.de, 1
 schimmel-test.info, 1
 schippendale.de, 1
 schippers-it.nl, 1
 schizoids.net, 1
 schlachter.ca, 1
 schlaf.guru, 1
 schlafguru.com, 1
 schlagenhauf.info, 1
+schlagma.de, 0
 schlarp.com, 1
 schlechtewitze.com, 1
 schlick.wedding, 1
 schlossereieder.at, 1
 schlossfuchs.de, 1
 schlueter-software.de, 1
 schmaeh-coaching.ch, 1
 schmelle.me, 1
@@ -35426,17 +35438,16 @@ sec-research.com, 1
 sec-wiki.com, 1
 sec.ec, 1
 sec.gd, 1
 sec.gov, 1
 sec.red, 1
 sec3ure.co.uk, 1
 sec44.com, 1
 sec455.com, 1
-sec4share.me, 1
 sec530.com, 1
 sec555.com, 1
 secbone.com, 1
 secboom.com, 1
 seccom.ch, 1
 secctexasgiving.org, 0
 secgui.de, 1
 sech.me, 1
@@ -36274,17 +36285,16 @@ silentexplosion.de, 1
 silentkernel.fr, 0
 silentundo.org, 1
 silerfamily.net, 1
 silicon-north.com, 1
 silicon-vision.com, 1
 siliconchip.me, 1
 silkebaekken.no, 1
 silkebeckmann.de, 1
-silkon.net, 1
 sillisalaatti.fi, 1
 sillysnapz.co.uk, 1
 silo.org.br, 1
 siloportem.net, 1
 silqueskineyeserum.com, 1
 silsha.me, 1
 silv.me, 1
 silvacor-ziegel.de, 1
@@ -36928,17 +36938,16 @@ sneakpod.de, 1
 sneakynote.com, 1
 sneakypaw.com, 1
 sneberger.cz, 0
 sneed.company, 1
 sneed.it, 1
 sneedit.com, 1
 sneedit.de, 1
 sneeuwhoogtes.eu, 1
-sneezry.com, 1
 snel4u.nl, 1
 snelbv.nl, 1
 snelshops.nl, 1
 snelwebshop.nl, 1
 snelxboxlivegold.nl, 1
 snerith.com, 1
 snfdata.com, 0
 sngallery.co.uk, 1
@@ -36988,16 +36997,17 @@ soaringtoglory.com, 1
 sobaya-gohei.com, 1
 sobeau.com, 1
 sobelift.com, 1
 sobersys.com, 1
 sobie.ch, 1
 sobieray.dyndns.org, 1
 soboleva-pr.com.ua, 1
 sobotkama.eu, 1
+sobreporcentagem.com, 1
 soc.net, 1
 socal-babes.com, 1
 soccorso-stradale.org, 1
 sochi-sochno.ru, 1
 soci.ml, 1
 sociability.dk, 1
 social-events.net, 0
 social-media-strategies.it, 1
@@ -37020,17 +37030,16 @@ socialworkout.net, 1
 socialworkout.org, 1
 socialworkout.tv, 1
 societe-chablaisienne-de-revetements.com, 1
 societe-chablaisienne-de-revetements.fr, 1
 societyhilldance.com, 1
 socioambiental.org, 1
 sociobiology.com, 1
 sociopathy.org, 1
-socketize.com, 1
 sockeye.io, 1
 sockscap64.com, 1
 socoastal.com, 1
 sodadigital.com.au, 1
 sodafilm.de, 1
 sodexam.pro, 1
 sodi.nl, 1
 sodiao.cc, 1
@@ -37132,17 +37141,16 @@ solvops.com, 1
 solymar.co, 1
 somaini.li, 1
 somali-derp.com, 1
 somaliagenda.com, 1
 somaliaonline.com, 1
 somanao.com, 1
 somcase.com.br, 1
 somecrazy.com, 1
-somepills.com, 1
 somersetscr.nhs.uk, 1
 somersetwellbeing.nhs.uk, 1
 somethingsimilar.com, 1
 sommefeldt.com, 1
 somosnoticia.com.br, 1
 sompani.com, 1
 somuchbetterwithage.com, 1
 somweyr.de, 1
@@ -37630,16 +37638,17 @@ stadionmanager.com, 1
 stadm.com, 1
 stadsbygd.info, 1
 stadt-apotheke-muensingen.de, 1
 stadtbuecherei-bad-wurzach.de, 1
 stadterneuerung-hwb.de, 1
 stadtgartenla.com, 1
 stadtpapa.de, 1
 stadtplan-ilmenau.de, 1
+staer.ro, 1
 staff.direct, 1
 staffordlabour.org.uk, 1
 stage-props-blank-guns.com, 0
 stage.wepay.com, 0
 stage4.ch, 1
 stageirites.com, 1
 stageirites.fr, 1
 stageirites.org, 1
@@ -37819,16 +37828,17 @@ stellen.ch, 1
 stelleninserate.de, 1
 stellenticket.de, 1
 stellmacher.name, 1
 stemapp.io, 1
 stembureauledenindenhaag.nl, 1
 stemsims.com, 1
 stening.co, 1
 stenzhorn-cloud.de, 1
+stepanvanek.cz, 1
 steph3n.me, 1
 stephan-matthiesen.de, 1
 stephane-huc.net, 0
 stephaniedeady.ie, 1
 stephanieschreiber.com, 1
 stephansurgicalarts.com, 1
 stephencreilly.com, 1
 stephenhaunts.com, 1
@@ -37988,17 +37998,16 @@ stonemanbrasil.com.br, 1
 stony.com, 1
 stonystratford.org, 1
 stopakwardhandshakes.org, 1
 stopbreakupnow.org, 1
 stopbullying.gov, 1
 stopfraud.gov, 0
 stopthethyroidmadness.com, 1
 storageideas.uk, 1
-storageshedsnc.com, 1
 stordbatlag.no, 1
 store10.de, 0
 storedsafe.com, 1
 storeit.co.uk, 1
 storgom.ua, 0
 storillo.com, 1
 storm-family.com, 1
 stormi.io, 1
@@ -38281,17 +38290,16 @@ summer.ga, 1
 summercampthailand.com, 1
 summershomes.com, 1
 sumoatm.com, 0
 sumthing.com, 1
 sun-leo.co.jp, 1
 sunboxstore.jp, 1
 sunbritetv.com, 1
 sunchasercats.com, 1
-sundanceusa.com, 1
 sundayfundayjapan.com, 1
 sundayrest.com, 1
 sundragon.se, 1
 suneilpatel.com, 1
 sunfeathers.net, 1
 sunfiregold.com, 1
 sunfireshop.com.br, 1
 sunflyer.cn, 0
@@ -38740,16 +38748,17 @@ taglioepiega.it, 1
 tagpay.com, 1
 tahavu.com, 1
 tahosa.co, 1
 tahosalodge.org, 1
 tai-in.com, 1
 tai-in.net, 1
 taichi-jade.com, 1
 taidu.news, 1
+tailpuff.net, 0
 tails.boum.org, 1
 taim.io, 1
 taimane.com, 1
 taiphanmem.net, 1
 taishon.nagoya, 1
 taitmacleod.com, 1
 taiwan.dating, 1
 taiwantour.info, 1
@@ -38853,17 +38862,16 @@ tapestries.tk, 1
 taplamvan.net, 1
 taplemon.at, 1
 taplemon.com, 1
 taprix.org, 1
 tapsnapp.co, 1
 taquilla.com, 1
 taqun.club, 1
 tar-mag.com, 1
-taranis.re, 1
 tarantul.org.ua, 1
 tarasecurity.co.uk, 1
 tarasecurity.com, 1
 tarasevich.by, 1
 tardis.io, 1
 tarek.link, 1
 targetbuilding.com, 1
 targetexecutivesearch.com, 1
@@ -38896,17 +38904,17 @@ tat2grl85.com, 1
 tatara.ne.jp, 1
 tateesq.com, 1
 tatildukkani.com, 1
 tatiloley.com, 1
 tatort-fanpage.de, 1
 tatsidou.gr, 1
 tattoo.dating, 1
 tattvaayoga.com, 1
-taunhanh.us, 1
+taunhanh.us, 0
 tavolaquadrada.com.br, 1
 tavsys.net, 1
 tax-guard.com, 1
 taxaroo.com, 1
 taxi-24std.de, 0
 taxi-chamonix.fr, 1
 taxi-collectif.ch, 1
 taxi-puck.pl, 1
@@ -39126,17 +39134,16 @@ teebeedee.org, 0
 teedb.de, 1
 teehaus-shila.de, 1
 teemperor.de, 1
 teemulintula.fi, 1
 teencounseling.com, 1
 teenerotic.net, 1
 teengirl.pub, 1
 teensexgo.com, 1
-teesypeesy.com, 1
 teeworlds-friends.de, 1
 tefek.cz, 1
 tege-elektronik.hu, 1
 tehcrayz.com, 1
 tehplace.club, 1
 tehrabbitt.com, 0
 tehrankey.ir, 1
 tehranperfume.com, 1
@@ -39144,17 +39151,16 @@ teixobactin.com, 1
 tejarat98.com, 1
 teknemodus.com.au, 1
 teknik.io, 1
 tekniskakustik.se, 1
 tekno.de, 1
 teknoforums.com, 1
 teknogeek.id, 1
 teknolit.com, 1
-tektoria.de, 0
 tektuts.com, 1
 tekuteku.jp, 1
 telamon.eu, 1
 telamon.fr, 1
 tele-alarme.ch, 1
 tele-assistance.ch, 1
 tele-online.com, 1
 telealarme.ch, 1
@@ -39484,16 +39490,17 @@ thecuppacakery.co.uk, 1
 thecuriouscat.net, 1
 thecuriousdev.com, 1
 thecurvyfashionista.com, 1
 thecustomdroid.com, 1
 thedailyupvote.com, 1
 thedark1337.com, 1
 thedarkartsandcrafts.com, 1
 thedebug.life, 1
+thederminstitute.com, 1
 thedevrycommonsbrasil.com, 0
 thediamondcenter.com, 1
 thediaryofadam.com, 1
 thedisc.nl, 1
 thediscovine.com, 1
 thedocumentrefinery.com, 1
 thedom.site, 1
 thedreamtravelgroup.co.uk, 1
@@ -39727,16 +39734,17 @@ theskingym.co.uk, 1
 thesled.net, 1
 thesmallbusinesswebsiteguy.com, 1
 thesmokingcuban.com, 1
 thesocialmediacentral.com, 1
 thesslstore.com, 1
 thestationatwillowgrove.com, 1
 thesteins.org, 0
 thestoneage.de, 1
+thestonegroup.de, 0
 thestory.ie, 1
 thestoryshack.com, 1
 thestral.pro, 1
 thestralbot.com, 1
 thestrategyagency.com.au, 1
 thestudyla.com, 1
 thestyle.city, 1
 thesuppercircle.com, 1
@@ -39851,17 +39859,17 @@ thomasduerlund.dk, 1
 thomasetsophie.fr, 1
 thomaseyck.com, 1
 thomasfoster.co, 1
 thomasgriffin.io, 1
 thomashunter.name, 0
 thomasmcfly.com, 1
 thomasmeester.nl, 0
 thomasmerritt.de, 1
-thomassen.sh, 0
+thomassen.sh, 1
 thomasstevensmusic.com, 1
 thomastimepieces.com.au, 1
 thomasverhelst.be, 1
 thomasvochten.com, 1
 thomaswoo.com, 1
 thompsonfamily.cloud, 1
 thomsonscleaning.co.uk, 1
 thomspooren.nl, 1
@@ -40293,17 +40301,16 @@ tokyovipper.com, 1
 tolboe.com, 1
 toleressea.fr, 1
 toles-sur-mesure.fr, 1
 tolle-wolke.de, 1
 tollfreeproxy.com, 1
 tollsjekk.no, 1
 tom-geiger.de, 1
 tom-kunze.de, 1
-tom-maxwell.com, 1
 tom.horse, 1
 tom.je, 1
 tomabrafix.de, 1
 tomahawk.ca, 1
 tomandmara.com, 1
 tomandshirley.com, 1
 tomarns.nl, 1
 tomasjacik.cz, 1
@@ -40754,16 +40761,17 @@ transsexualpantyhose.com, 1
 transverify.com, 1
 trappednerve.org, 1
 trashnothing.com, 1
 trashwagon.club, 1
 trask.no, 1
 traslocare.roma.it, 1
 traslochi-trasporti-facchinaggio.it, 1
 trasloco.milano.it, 1
+tratamentoparacelulite.net, 1
 trattamenti.biz, 1
 trattamento-cotto.it, 1
 trauer-beileid.de, 1
 trauertexte.info, 1
 traut.cloud, 1
 travador.com, 1
 travaux-toiture-idf.fr, 1
 travel-to-nature.ch, 1
@@ -40885,16 +40893,17 @@ tripsinc.com, 1
 trisect.eu, 1
 tristanfarkas.one, 1
 trixexpressweb.nl, 1
 triz.co.uk, 1
 trkpuls.tk, 1
 trockendock.ch, 1
 troedel-trolle.de, 1
 troedelhannes.at, 1
+troi.de, 1
 troianet.com.br, 1
 troisdorf-gestalten.de, 1
 trollingeffects.org, 1
 trollmoa.se, 1
 trollope-apollo.com, 1
 trollscave.xyz, 1
 trommelwirbel.com, 1
 tronatic-studio.com, 1
@@ -41045,17 +41054,16 @@ tubepro.de, 1
 tubetoon.com, 1
 tubetooncartoons.com, 1
 tubs4fun.co.uk, 1
 tubul.net, 1
 tucidi.net, 1
 tucnak.eu, 1
 tucny.com, 1
 tucsonfcu.com, 1
-tucsonpcrepair.com, 1
 tucuxi.org, 1
 tudiennhakhoa.com, 1
 tudorproject.org, 1
 tufashionista.com, 1
 tuffclassified.com, 1
 tuffsruffs.se, 1
 tufilo.com, 1
 tuincentersnaet.be, 1
@@ -41574,17 +41582,16 @@ univeril.com, 0
 univerpack.net, 1
 universal-happiness.com, 1
 universal.at, 1
 universalcarremote.com, 1
 universalpaymentgateway.com, 1
 universeinform.com, 1
 universogay.com, 1
 univitale.fr, 1
-unix.se, 1
 unixadm.org, 1
 unixattic.com, 1
 unixcorn.org, 0
 unixforum.org, 1
 unixfox.eu, 1
 unixtime.date, 1
 unkrn.com, 1
 unlax.com, 1
@@ -42007,17 +42014,16 @@ vashel.us, 1
 vasileruscior.ro, 1
 vasilikieleftheriou.com, 1
 vaskulitis-info.de, 1
 vasports.com.au, 1
 vasyharan.com, 1
 vat-eu.com, 1
 vat.direct, 1
 vatelecom.dk, 1
-vati.pw, 1
 vats.im, 1
 vatsalyagoel.com, 1
 vatsim-uk.co.uk, 1
 vatsim.uk, 1
 vattulainen.fi, 1
 vaud-fleurs.ch, 1
 vaughanrisher.com, 1
 vault21.net, 1
@@ -42397,17 +42403,17 @@ vinsetchampagne.fr, 1
 vintagebandfestival.org, 1
 vintagecaskandbarrel.com, 1
 vintagejeeps.net, 1
 vintagemakeupguide.com, 1
 vintageportgifts.co.uk, 1
 vintagesouthernpicks.com, 1
 vintagetrailerbuyers.com, 1
 vintazh.net, 1
-vinticom.ch, 0
+vinticom.ch, 1
 vintock.com, 1
 vinyculture.com, 1
 vinzite.com, 1
 violet-letter.delivery, 1
 violetraven.co.uk, 1
 violin4fun.nl, 1
 vionicbeach.com, 1
 vionicshoes.com, 1
@@ -42630,17 +42636,16 @@ volcano-vts.ru, 1
 volcano24.ru, 1
 volcanov.ru, 1
 volga.us, 1
 volgavibes.ru, 0
 voliere-info.nl, 0
 volker-gropp.de, 1
 volkergropp.de, 1
 volkerwesselstransfer.nl, 0
-volkerwesselswave.nl, 0
 volksvorschlagpmar.ch, 1
 vollans.id.au, 1
 voloevents.com, 1
 volta.io, 1
 volto.io, 1
 volunteeringmatters.org.uk, 1
 vomitb.in, 1
 von-lien-aluprofile.de, 1
@@ -44218,16 +44223,17 @@ www.dropbox.com, 1
 www.dropcam.com, 0
 www.entropia.de, 0
 www.eternalgoth.co.uk, 1
 www.etsy.com, 1
 www.evernote.com, 0
 www.facebook.com, 0
 www.fastmail.com, 1
 www.ft.com, 1
+www.gamesdepartment.co.uk, 1
 www.getcloak.com, 0
 www.gmail.com, 0
 www.googlemail.com, 0
 www.gov.uk, 0
 www.govt.nz, 1
 www.grc.com, 0
 www.healthcare.gov, 0
 www.heliosnet.com, 1
@@ -44289,17 +44295,16 @@ wypemagazine.se, 1
 wyrickstaxidermy.com, 1
 wyrihaximus.net, 1
 wyrimaps.net, 1
 wyssmuller.ch, 1
 wyu.cc, 1
 wyzwaniemilosci.com, 1
 wzfetish.com.br, 1
 wzfou.com, 1
-wzrd.in, 1
 wzyboy.org, 1
 x-lan.be, 1
 x-one.co.jp, 1
 x.io, 1
 x.st, 1
 x0r.be, 1
 x13.com, 1
 x1616.tk, 1
@@ -44423,17 +44428,16 @@ xin-in.com, 1
 xin-in.net, 1
 xing-in.net, 1
 xing.ml, 1
 xinj.com, 1
 xinnixdeuren-shop.be, 1
 xinuspeed.com, 1
 xinuspeedtest.com, 1
 xinuurl.com, 1
-xiongx.cn, 1
 xirion.net, 1
 xj8876.com, 1
 xjd.vision, 1
 xjf6.com, 1
 xjjeeps.com, 1
 xjoi.net, 1
 xjoin.de, 1
 xjpvictor.info, 1
@@ -44664,24 +44668,23 @@ xpenology-fr.net, 1
 xperidia.com, 1
 xpjcunkuan.com, 1
 xpletus.nl, 1
 xplore-dna.net, 1
 xpoc.pro, 1
 xposedornot.com, 1
 xps2pdf.co.uk, 1
 xps2pdf.info, 1
-xpwn.cz, 1
+xq55.com, 0
 xqin.net, 1
 xqk7.com, 1
 xr.cx, 1
 xrg.cz, 1
 xrippedhd.com, 1
 xrockx.de, 1
-xroot.org, 0
 xrwracing-france.com, 1
 xs2a.no, 1
 xs74.com, 1
 xscancun.com, 1
 xsec.me, 1
 xserownia.com.pl, 1
 xserownia.eu, 1
 xserownia.net, 1
@@ -44778,31 +44781,31 @@ yamaken.jp, 1
 yamashita-clinic.org, 1
 yame2.com, 1
 yamilafeinart.de, 1
 yamm.io, 1
 yanaduday.com, 1
 yanbao.xyz, 1
 yandere.moe, 1
 yangjingwen.cn, 1
+yangmaodang.org, 1
 yanngraf.ch, 1
 yanngraf.com, 1
 yannic.world, 1
 yannick.cloud, 1
 yannik-buerkle.de, 1
 yannikbloscheck.com, 1
 yannikhenke.de, 1
 yanovich.net, 1
 yanqiyu.info, 1
 yantrasthal.com, 1
 yao-in.com, 1
 yao-in.net, 1
 yaoidreams.com, 1
 yapbreak.fr, 1
-yarchives.jp, 1
 yarcom.ru, 0
 yarogneva.ru, 1
 yarravilletownhouses.com.au, 1
 yaru.one, 1
 yassine-ayari.com, 1
 yatesun.com, 1
 yatorie.net, 1
 yatstudios.com, 1
@@ -44875,17 +44878,17 @@ yenpape.com, 1
 yep-pro.ch, 1
 yepbitcoin.com, 1
 yephy.com, 1
 yesfone.com.br, 1
 yeshu.org, 1
 yesiammaisey.me, 1
 yeswecan.co.bw, 1
 yeswehack.com, 1
-yetanalytics.io, 1
+yetanalytics.io, 0
 yetii.net, 1
 yetishirt.com, 1
 yetzt.me, 0
 yeu.io, 1
 yex.nz, 1
 yex.trade, 1
 yeyi.site, 1
 yfengs.moe, 1
@@ -45140,17 +45143,16 @@ yue.la, 1
 yue2.net, 1
 yuema.net.cn, 1
 yugasun.com, 1
 yugege.cf, 1
 yuka.one, 1
 yukari.cafe, 1
 yukari.cloud, 1
 yuki-nagato.com, 1
-yuki-portfolio.com, 1
 yuki.xyz, 1
 yukimochi.com, 1
 yukimochi.io, 1
 yukimochi.jp, 1
 yukonconnector.com, 1
 yukonlip.com, 1
 yukontec.com, 1
 yum.beer, 1
@@ -45232,30 +45234,35 @@ zacharyschneider.com, 1
 zacharyseguin.ca, 1
 zachaysan.com, 1
 zachbolinger.com, 1
 zachborboa.com, 1
 zachgibbens.org, 1
 zachpeters.org, 1
 zachschneider.ca, 1
 zaclys.com, 0
-zadroweb.com, 1
 zaem.tv, 1
 zafirus.name, 1
 zaghyr.org, 1
 zahe.me, 1
 zahnarzt-duempten.de, 1
 zahnarzt-hofer.de, 1
 zahnarzt-kramer.ch, 1
+zaidan.de, 1
+zaidan.eu, 1
+zaidanfood.com, 1
+zaidanfood.eu, 1
+zaidanlebensmittelhandel.de, 1
 zajazd.biz, 1
 zakariya.blog, 1
 zakcutner.uk, 1
 zakladam.cz, 1
 zakmccrac.de, 1
 zakojifarm.jp, 1
+zakoncontrol.com, 0
 zakr.es, 1
 zakspartiesandevents.com, 1
 zalamea.ph, 1
 zalan.do, 1
 zaloghaz.ro, 1
 zalohovaniburian.cz, 1
 zalvus.com, 1
 zamalektoday.com, 1
@@ -45401,33 +45408,31 @@ zgrep.org, 1
 zh.search.yahoo.com, 0
 zhang-hao.com, 1
 zhang.nz, 1
 zhangfangzhou.com, 1
 zhangge.net, 1
 zhanghao.me, 1
 zhangheda.cf, 1
 zhangsidan.com, 1
-zhangsir.net, 1
 zhangyuhao.com, 1
 zhangzifan.com, 0
 zhaochen.xyz, 1
 zhaofeng.li, 1
 zhaoxixiangban.cc, 1
 zhcexo.com, 1
 zhen-chen.com, 1
 zhengjie.com, 1
 zhenmeish.com, 1
 zhenyan.org, 1
 zhi.ci, 1
 zhikin.com, 1
 zhiku8.com, 1
 zhima.io, 1
 zhitanska.com, 1
-zhiwei.me, 1
 zhl123.com, 1
 zhongzicili.ws, 1
 zhoujiashu.com, 1
 zhoushuo.me, 1
 zhoutiancai.cn, 1
 zhovner.com, 1
 zhthings.com, 1
 zhuihoude.com, 1
@@ -45618,17 +45623,16 @@ zundapp529.nl, 1
 zundappachterhoek.nl, 1
 zuolan.me, 0
 zup.me, 1
 zupago.com, 1
 zupago.pe, 1
 zuppy.pm, 1
 zuralski.net, 1
 zurgl.com, 0
-zurickrelogios.com.br, 1
 zurret.de, 1
 zusjesvandenbos.nl, 1
 zuviel.space, 1
 zuzumba.es, 1
 zvps.uk, 1
 zvxr.net, 1
 zvz.im, 1
 zwalcz-cellulit.com, 1
--- a/servo/components/style/properties/cascade.rs
+++ b/servo/components/style/properties/cascade.rs
@@ -15,16 +15,17 @@ use properties::{LonghandId, LonghandIdS
 use properties::{PropertyDeclaration, PropertyDeclarationId, DeclarationImportanceIterator};
 use properties::CASCADE_PROPERTY;
 use rule_cache::{RuleCache, RuleCacheConditions};
 use rule_tree::{CascadeLevel, StrongRuleNode};
 use selector_parser::PseudoElement;
 use servo_arc::Arc;
 use shared_lock::StylesheetGuards;
 use smallbitvec::SmallBitVec;
+use smallvec::SmallVec;
 use std::borrow::Cow;
 use std::cell::RefCell;
 use style_adjuster::StyleAdjuster;
 use values::computed;
 
 /// We split the cascade in two phases: 'early' properties, and 'late'
 /// properties.
 ///
@@ -235,20 +236,22 @@ where
                 parent_style.unwrap(),
                 parent_style_ignoring_first_line.unwrap()
             ) ||
             parent_style.unwrap().pseudo() == Some(PseudoElement::FirstLine)
     );
 
     let inherited_style = parent_style.unwrap_or(device.default_computed_values());
 
+    let mut declarations = SmallVec::<[(&_, CascadeLevel); 32]>::new();
     let custom_properties = {
         let mut builder = CustomPropertiesBuilder::new(inherited_style.custom_properties());
 
-        for (declaration, _cascade_level) in iter_declarations() {
+        for (declaration, cascade_level) in iter_declarations() {
+            declarations.push((declaration, cascade_level));
             if let PropertyDeclaration::Custom(ref declaration) = *declaration {
                 builder.cascade(&declaration.name, &declaration.value);
             }
         }
 
         builder.build()
     };
 
@@ -273,17 +276,17 @@ where
         quirks_mode,
         rule_cache_conditions: RefCell::new(rule_cache_conditions),
     };
 
     let using_cached_reset_properties = {
         let mut cascade = Cascade::new(&mut context, cascade_mode);
 
         cascade
-            .apply_properties::<EarlyProperties, I>(ApplyResetProperties::Yes, iter_declarations());
+            .apply_properties::<EarlyProperties, _>(ApplyResetProperties::Yes, declarations.iter().cloned());
 
         cascade.compute_visited_style_if_needed(
             element,
             parent_style,
             parent_style_ignoring_first_line,
             layout_parent_style,
             guards,
         );
@@ -292,17 +295,17 @@ where
             cascade.try_to_use_cached_reset_properties(rule_cache, guards);
 
         let apply_reset = if using_cached_reset_properties {
             ApplyResetProperties::No
         } else {
             ApplyResetProperties::Yes
         };
 
-        cascade.apply_properties::<LateProperties, I>(apply_reset, iter_declarations());
+        cascade.apply_properties::<LateProperties, _>(apply_reset, declarations.iter().cloned());
 
         using_cached_reset_properties
     };
 
     context.builder.clear_modified_reset();
 
     if matches!(cascade_mode, CascadeMode::Unvisited { .. }) {
         StyleAdjuster::new(&mut context.builder)
--- a/taskcluster/docker/funsize-update-generator/Pipfile.lock
+++ b/taskcluster/docker/funsize-update-generator/Pipfile.lock
@@ -115,16 +115,17 @@
                 "sha256:d5d8555d9bfc3f02385c1c37e9f998e2011f0db4f90e250e5bc0c0a85a813085",
                 "sha256:e55e22ac0a30023426564b1059b035973ec82186ddddbac867078435801c7801",
                 "sha256:e90f17980e6ab0f3c2f3730e56d1fe9bcba1891eeea58966e89d352492cc74f4",
                 "sha256:ecbb7b01409e9b782df5ded849c178a0aa7c906cf8c5a67368047daab282b184",
                 "sha256:ed01918d545a38998bfa5902c7c00e0fee90e957ce036a4000a88e3fe2264917",
                 "sha256:edabd457cd23a02965166026fd9bfd196f4324fe6032e866d0f3bd0301cd486f",
                 "sha256:fdf1c1dc5bafc32bc5d08b054f94d659422b05aba244d6be4ddc1c72d9aa70fb"
             ],
+            "markers": "python_version >= '2.7' and python_version != '3.0.*' and python_version != '3.2.*' and python_version != '3.1.*' and python_version != '3.3.*'",
             "version": "==1.11.5"
         },
         "chardet": {
             "hashes": [
                 "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae",
                 "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"
             ],
             "version": "==3.0.4"
@@ -159,16 +160,17 @@
                 "sha256:8a19e9f2fe69f6a44a5c156968d9fc8df56d09798d0c6a34ccc373bb186cee86",
                 "sha256:8d10113ca826a4c29d5b85b2c4e045ffa8bad74fb525ee0eceb1d38d4c70dfd6",
                 "sha256:be495b8ec5a939a7605274b6e59fbc35e76f5ad814ae010eb679529671c9e119",
                 "sha256:dc2d3f3b1548f4d11786616cf0f4415e25b0fbecb8a1d2cd8c07568f13fdde38",
                 "sha256:e4aecdd9d5a3d06c337894c9a6e2961898d3f64fe54ca920a72234a3de0f9cb3",
                 "sha256:e79ab4485b99eacb2166f3212218dd858258f374855e1568f728462b0e6ee0d9",
                 "sha256:f995d3667301e1754c57b04e0bae6f0fa9d710697a9f8d6712e8cca02550910f"
             ],
+            "markers": "python_version >= '2.7' and python_version != '3.0.*' and python_version != '3.2.*' and python_version != '3.1.*' and python_version != '3.3.*'",
             "version": "==2.3.1"
         },
         "datadog": {
             "hashes": [
                 "sha256:86cef95acd73543d18c417f1b0313c0a7274ed8f5ae9cceb46314f4e588085b1"
             ],
             "index": "pypi",
             "version": "==0.22.0"
@@ -211,19 +213,19 @@
             "hashes": [
                 "sha256:a933e3bb13da54383f9e8f35dc4f9cb9eb9b3b78c6b36f311254d6d0d92c6c7c"
             ],
             "markers": "python_version < '3.7'",
             "version": "==1.1.0"
         },
         "json-e": {
             "hashes": [
-                "sha256:d8c1ec3f5bbc7728c3a504ebe58829f283c64eca230871e4eefe974b4cdaae4a"
+                "sha256:de971441107b5df68c6ca06c486206db3c25f9881c1e353eabd53f4fb563b3be"
             ],
-            "version": "==2.7.0"
+            "version": "==2.7.1"
         },
         "jsonschema": {
             "hashes": [
                 "sha256:000e68abd33c972a5248544925a0cae7d1125f9bf6c58280d37546b946769a08",
                 "sha256:6ff5f3180870836cae40f06fa10419f557208175f13ad7bc26caa77beb1f6e02"
             ],
             "version": "==2.6.0"
         },
@@ -239,40 +241,48 @@
             "hashes": [
                 "sha256:b3f85ffa93a5c7d2f9cc591246ef9f8ac4a9fa716bfd5bae0377699a2d89d78c",
                 "sha256:e98b331d9fa9ece7b8be26094cbe2d57613ae882133cc755167268a984bc0ab3"
             ],
             "version": "==0.3.4"
         },
         "multidict": {
             "hashes": [
-                "sha256:3be539df400562f0e6c2089dd0b512150abd41189723405097ef1d11fd165658",
-                "sha256:4ec2ba081c710e8ddf12adf9867ea8969e12aa8f0d0cd8270c706538a622aecb",
-                "sha256:5d93048a352bf1318615a9d483a17c87f2f0f8ca2be0157ff353753de73e2636",
-                "sha256:728222ed41e57ef01b41282df7b15b80c3da7fb0e664c8898d2efb4d969ee7e8",
-                "sha256:7bbef78bf0b9b038f97e172a1a861e6c1a109be69592ed4ac0f2e9a23ec1fbd2",
-                "sha256:80fd036a56bcb9dd9ba63a55b884b67fa18b46b02400528cb4bd3e2cc98791fe",
-                "sha256:833fb16b7da8437ae067675e6e0a22cf0d5935d578fadd2a8474be702ade2cae",
-                "sha256:9cee5290ec55d17917fcb71bab853cc376c3e30d45a21d96dca106f72a46b357",
-                "sha256:b75218d23692e4e8ade6b7a1dd2de21ef0342e83057487b69e32732e93d5f769",
-                "sha256:c0be167d860667125d397152192c4bb084e91a07130a90aef7f927b23f73120f",
-                "sha256:c17d317dab455354ed6f95c42df84cc34b4bd9cace121fd4ee88307a16cc2482",
-                "sha256:d5432a55ded1d1df572960f0a4d87fe771d4238729392b8ca995e0e50021ae8f",
-                "sha256:d75a539aae854e19c79d39aa88d235c3eeead2cc37cdcb6c3fb193e4b0ba0b78",
-                "sha256:d8fd869eec069dd45831486cc074ad9f82051f317371f9e1e11ef83668e23bde",
-                "sha256:dc043e177e4bbc2539203af61e9b31c5f5de468df661ed52d9fa13bc868a1ce7",
-                "sha256:e1ab80f1aa32f97c1cbbfb47725292617a443538103a0c5d5a419eb9629c7415",
-                "sha256:e2e1e4b34ecf7f752594836ca338457945c2c1d4f928dd10e7c2319669af6c4e",
-                "sha256:e9bceec13f5ea83fc434daa703c22f7263a1a7d3d9d4d53330b103cc3cfa875d",
-                "sha256:f2d6d48932154807f6dddd093f6de0ef75356d330dda9df68c5106ccea8dda48",
-                "sha256:fe79338660331d3a4a6f5326300d0c0e0b5f47edfe32e1a0626aa7b2e2bf08c4",
-                "sha256:febbbf93912fdbe9455ac1673284df2f4561c5f075ef72aff90b445788feda96"
+                "sha256:05eeab69bf2b0664644c62bd92fabb045163e5b8d4376a31dfb52ce0210ced7b",
+                "sha256:0c85880efa7cadb18e3b5eef0aa075dc9c0a3064cbbaef2e20be264b9cf47a64",
+                "sha256:136f5a4a6a4adeacc4dc820b8b22f0a378fb74f326e259c54d1817639d1d40a0",
+                "sha256:14906ad3347c7d03e9101749b16611cf2028547716d0840838d3c5e2b3b0f2d3",
+                "sha256:1ade4a3b71b1bf9e90c5f3d034a87fe4949c087ef1f6cd727fdd766fe8bbd121",
+                "sha256:22939a00a511a59f9ecc0158b8db728afef57975ce3782b3a265a319d05b9b12",
+                "sha256:2b86b02d872bc5ba5b3a4530f6a7ba0b541458ab4f7c1429a12ac326231203f7",
+                "sha256:3c11e92c3dfc321014e22fb442bc9eb70e01af30d6ce442026b0c35723448c66",
+                "sha256:4ba3bd26f282b201fdbce351f1c5d17ceb224cbedb73d6e96e6ce391b354aacc",
+                "sha256:4c6e78d042e93751f60672989efbd6a6bc54213ed7ff695fff82784bbb9ea035",
+                "sha256:4d80d1901b89cc935a6cf5b9fd89df66565272722fe2e5473168927a9937e0ca",
+                "sha256:4fcf71d33178a00cc34a57b29f5dab1734b9ce0f1c97fb34666deefac6f92037",
+                "sha256:52f7670b41d4b4d97866ebc38121de8bcb9813128b7c4942b07794d08193c0ab",
+                "sha256:5368e2b7649a26b7253c6c9e53241248aab9da49099442f5be238fde436f18c9",
+                "sha256:5bb65fbb48999044938f0c0508e929b14a9b8bf4939d8263e9ea6691f7b54663",
+                "sha256:60672bb5577472800fcca1ac9dae232d1461db9f20f055184be8ce54b0052572",
+                "sha256:669e9be6d148fc0283f53e17dd140cde4dc7c87edac8319147edd5aa2a830771",
+                "sha256:6a0b7a804e8d1716aa2c72e73210b48be83d25ba9ec5cf52cf91122285707bb1",
+                "sha256:79034ea3da3cf2a815e3e52afdc1f6c1894468c98bdce5d2546fa2342585497f",
+                "sha256:79247feeef6abcc11137ad17922e865052f23447152059402fc320f99ff544bb",
+                "sha256:81671c2049e6bf42c7fd11a060f8bc58f58b7b3d6f3f951fc0b15e376a6a5a98",
+                "sha256:82ac4a5cb56cc9280d4ae52c2d2ebcd6e0668dd0f9ef17f0a9d7c82bd61e24fa",
+                "sha256:9436267dbbaa49dad18fbbb54f85386b0f5818d055e7b8e01d219661b6745279",
+                "sha256:94e4140bb1343115a1afd6d84ebf8fca5fb7bfb50e1c2cbd6f2fb5d3117ef102",
+                "sha256:a2cab366eae8a0ffe0813fd8e335cf0d6b9bb6c5227315f53bb457519b811537",
+                "sha256:a596019c3eafb1b0ae07db9f55a08578b43c79adb1fe1ab1fd818430ae59ee6f",
+                "sha256:e8848ae3cd6a784c29fae5055028bee9bffcc704d8bcad09bd46b42b44a833e2",
+                "sha256:e8a048bfd7d5a280f27527d11449a509ddedf08b58a09a24314828631c099306",
+                "sha256:f6dd28a0ac60e2426a6918f36f1b4e2620fc785a0de7654cd206ba842eee57fd"
             ],
             "markers": "python_version >= '3.4.1'",
-            "version": "==4.4.1"
+            "version": "==4.4.2"
         },
         "pexpect": {
             "hashes": [
                 "sha256:2a8e88259839571d1251d278476f3eec5db26deb73a70be5ed5dc5435e418aba",
                 "sha256:3fbd41d4caf27fa4a377bfd16fef87271099463e6fa73e92a52f92dfee5d425b"
             ],
             "version": "==4.6.0"
         },
@@ -280,19 +290,20 @@
             "hashes": [
                 "sha256:923f299cc5ad920c68f2bc0bc98b75b9f838b93b599941a6b63ddbc2476394c0",
                 "sha256:d7cc528d76e76342423ca640335bd3633420dc1366f258cb31d05e865ef5ca1f"
             ],
             "version": "==0.6.0"
         },
         "pycparser": {
             "hashes": [
-                "sha256:99a8ca03e29851d96616ad0404b4aad7d9ee16f25c9f9708a11faf2810f7b226"
+                "sha256:a988718abfad80b6b157acce7bf130a30876d27603738ac39f140993246b25b3"
             ],
-            "version": "==2.18"
+            "markers": "python_version >= '2.7' and python_version != '3.0.*' and python_version != '3.2.*' and python_version != '3.1.*' and python_version != '3.3.*'",
+            "version": "==2.19"
         },
         "python-dateutil": {
             "hashes": [
                 "sha256:1adb80e7a782c12e52ef9a8182bebeb73f1d7e24e374397af06fb4956c8dc5c0",
                 "sha256:e27001de32f627c22380a688bcc43ce83504a7bc5da472209b4c70f02829f0b8"
             ],
             "version": "==2.7.3"
         },
@@ -316,20 +327,20 @@
                 "sha256:d5eef459e30b09f5a098b9cea68bebfeb268697f78d647bd255a085371ac7f3f",
                 "sha256:e01d3203230e1786cd91ccfdc8f8454c8069c91bee3962ad93b87a4b2860f537",
                 "sha256:e170a9e6fcfd19021dd29845af83bb79236068bf5fd4df3327c1be18182b2531"
             ],
             "version": "==3.13"
         },
         "redo": {
             "hashes": [
-                "sha256:080e9eb34c42e2a09dbec48379b876ac1b64fd04483cef0a03af281cc9333bd3"
+                "sha256:90cc6b0f7f5cc3142d4ca574a183de811c0e06ecddf2f241408ef7a4b5a17ee4"
             ],
             "index": "pypi",
-            "version": "==1.7"
+            "version": "==2.0"
         },
         "requests": {
             "hashes": [
                 "sha256:63b52e3c866428a224f97cab011de738c36aec0185aa91cfacd418b5d58911d1",
                 "sha256:ec22d826a36ed72a7358ff3fe56cbd4ba69dd7a6718ffd450ff0e9df7a47ce6a"
             ],
             "index": "pypi",
             "version": "==2.19.1"
@@ -381,24 +392,25 @@
             "version": "==1.0.7"
         },
         "taskcluster": {
             "hashes": [
                 "sha256:27256511044346ac71a495d3c636f2add95c102b9b09f90d6fb1ea3e9949d311",
                 "sha256:99dd90bc1c566968868c8b07ede32f8e031cbccd52c7195a61e802679d461447",
                 "sha256:d0360063c1a3fcaaa514bb31c03954ba573d2b671df40a2ecfdfd9339cc8e93e"
             ],
+            "markers": "python_version >= '3.4.1'",
             "version": "==4.0.1"
         },
         "urllib3": {
             "hashes": [
                 "sha256:a68ac5e15e76e7e5dd2b8f94007233e01effe3e50e8daddf69acfd81cb686baf",
                 "sha256:b5725a0bd4ba422ab0e66e89e030c806576753ea3ee08554382c14e685d117b5"
             ],
-            "markers": "python_version < '4' and python_version != '3.1.*' and python_version != '3.0.*' and python_version != '3.3.*' and python_version != '3.2.*' and python_version >= '2.6'",
+            "markers": "python_version >= '2.6' and python_version != '3.0.*' and python_version != '3.2.*' and python_version < '4' and python_version != '3.1.*' and python_version != '3.3.*'",
             "version": "==1.23"
         },
         "virtualenv": {
             "hashes": [
                 "sha256:2ce32cd126117ce2c539f0134eb89de91a8413a29baac49cbab3eb50e2026669",
                 "sha256:ca07b4c0b54e14a91af9f34d0919790b016923d157afda5efdde55c96718f752"
             ],
             "markers": "python_version != '3.2.*' and python_version >= '2.7' and python_version != '3.1.*' and python_version != '3.0.*'",
@@ -411,13 +423,14 @@
                 "sha256:55369d95afaacf2fa6b49c84d18b51f1704a6560c432a0f9a1aeb23f7b971308",
                 "sha256:6c098b85442c8fe3303e708bbb775afd0f6b29f77612e8892627bcab4b939357",
                 "sha256:9182cd6f93412d32e009020a44d6d170d2093646464a88aeec2aef50592f8c78",
                 "sha256:c8cbc21bbfa1dd7d5386d48cc814fe3d35b80f60299cdde9279046f399c3b0d8",
                 "sha256:db6f70a4b09cde813a4807843abaaa60f3b15fb4a2a06f9ae9c311472662daa1",
                 "sha256:f17495e6fe3d377e3faac68121caef6f974fcb9e046bc075bcff40d8e5cc69a4",
                 "sha256:f85900b9cca0c67767bb61b2b9bd53208aaa7373dae633dbe25d179b4bf38aa7"
             ],
+            "markers": "python_version >= '3.4.1'",
             "version": "==1.2.6"
         }
     },
     "develop": {}
 }