Bug 1455887 - Update Debugger Frontend v43. r=jdescottes
authorJason Laster <jason.laster.11@gmail.com>
Sun, 22 Apr 2018 18:16:17 +0200
changeset 468531 ebdbae0764b8b7dcd221351d357ba55db1320e11
parent 468530 116a49e26695aab8fb9c5b241da2067c3c7cd8a8
child 468532 91694a86688d7a2d7ecc0c00bda3286527d0c365
push id9165
push userasasaki@mozilla.com
push dateThu, 26 Apr 2018 21:04:54 +0000
treeherdermozilla-beta@064c3804de2e [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjdescottes
bugs1455887
milestone61.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1455887 - Update Debugger Frontend v43. r=jdescottes MozReview-Commit-ID: EI8UAJgHRwW
devtools/client/debugger/new/README.mozilla
devtools/client/debugger/new/debugger.css
devtools/client/debugger/new/debugger.js
devtools/client/debugger/new/parser-worker.js
devtools/client/debugger/new/test/mochitest/browser.ini
devtools/client/debugger/new/test/mochitest/browser_dbg-babel-scopes.js
devtools/client/debugger/new/test/mochitest/browser_dbg-breakpoints-toggle.js
devtools/client/debugger/new/test/mochitest/examples/babel/fixtures/imported-bindings/input.js
devtools/client/debugger/new/test/mochitest/examples/babel/fixtures/imported-bindings/output.js
devtools/client/debugger/new/test/mochitest/examples/babel/fixtures/imported-bindings/output.js.map
devtools/client/debugger/new/test/mochitest/examples/babel/fixtures/webpack-modules-es6/input.js
devtools/client/debugger/new/test/mochitest/examples/babel/fixtures/webpack-modules-es6/output.js
devtools/client/debugger/new/test/mochitest/examples/babel/fixtures/webpack-modules-es6/output.js.map
devtools/client/debugger/new/test/mochitest/examples/babel/fixtures/webpack-modules/input.js
devtools/client/debugger/new/test/mochitest/examples/babel/fixtures/webpack-modules/output.js
devtools/client/debugger/new/test/mochitest/examples/babel/fixtures/webpack-modules/output.js.map
devtools/client/debugger/new/test/mochitest/examples/babel/webpack.config.js
devtools/client/jar.mn
devtools/client/locales/en-US/debugger.properties
devtools/client/preferences/debugger.js
devtools/client/themes/images/debugger/disable-pausing.svg
--- a/devtools/client/debugger/new/README.mozilla
+++ b/devtools/client/debugger/new/README.mozilla
@@ -1,13 +1,13 @@
 This is the debugger.html project output.
 See https://github.com/devtools-html/debugger.html
 
-Version 42.0
+Version 43.0
 
-Comparison: https://github.com/devtools-html/debugger.html/compare/release-41...release-42
+Comparison: https://github.com/devtools-html/debugger.html/compare/release-42...release-43
 
 Packages:
 - babel-plugin-transform-es2015-modules-commonjs @6.26.0
 - babel-preset-react @6.24.1
 - react @16.2.0
 - react-dom @16.2.0
 - webpack @3.11.0
--- a/devtools/client/debugger/new/debugger.css
+++ b/devtools/client/debugger/new/debugger.css
@@ -913,16 +913,20 @@ html[dir="rtl"] .tree-node img.arrow {
   border-radius: 2px;
   display: flex;
   flex-direction: row;
   justify-content: center;
   align-items: center;
   padding: 0;
 }
 
+.close-btn:focus {
+  outline: none;
+}
+
 .close-btn .close {
   mask: url("chrome://devtools/skin/images/debugger/close.svg") no-repeat;
   mask-size: 100%;
   background-color: var(--theme-comment);
   width: 8px;
   height: 8px;
   transition: all 0.15s ease-in-out;
   padding: 0;
@@ -2866,29 +2870,32 @@ debug-expression-error {
 }
 
 .breakpoints-list .breakpoint-heading,
 .breakpoints-list .breakpoint {
   font-size: 12px;
   color: var(--theme-content-color1);
   position: relative;
   transition: all 0.25s ease;
-  padding: 0.5em 1em 0.5em 0.5em;
 }
 
 .breakpoints-list .breakpoint-heading,
 .breakpoints-list .breakpoint,
 .breakpoints-exceptions {
   padding: 0.5em 1em 0.5em 0.5em;
 }
 
 .breakpoints-exceptions-caught {
   padding: 0 1em 0.5em 2em;
 }
 
+html[dir="rtl"] .breakpoints-exceptions-caught {
+  padding: 0 2em 0.5em 1em;
+}
+
 .breakpoints-exceptions-options:not(.empty) {
   border-bottom: 1px solid var(--theme-splitter-color);
 }
 
 .breakpoints-exceptions input,
 .breakpoints-exceptions-caught input {
   padding-inline-start: 2px;
   margin-inline-start: 0;
@@ -3431,28 +3438,33 @@ html[dir="rtl"] .breakpoints-list .break
 :root.theme-dark {
   --accordion-header-background: #222225;
   --disclosure-arrow: #7f7f81;
 }
 
 .accordion {
   background-color: var(--theme-sidebar-background);
   width: 100%;
+  list-style-type: none;
+  padding: 0px;
+  margin-top: 0px;
 }
 
 .accordion ._header {
   background-color: var(--accordion-header-background);
   border-bottom: 1px solid var(--theme-splitter-color);
   display: flex;
   font-size: 12px;
   padding: 4px;
   transition: all 0.25s ease;
   width: 100%;
   height: 24px;
   align-items: center;
+  margin: 0px;
+  font-weight: normal;
 
   -webkit-user-select: none;
   -moz-user-select: none;
   -ms-user-select: none;
   -o-user-select: none;
   user-select: none;
   cursor: default;
 }
@@ -3533,17 +3545,18 @@ img.stepOut,
 img.resume,
 img.rewind,
 img.reverseStepOver,
 img.reverseStepIn,
 img.reverseStepOut,
 img.replay-previous,
 img.replay-next,
 img.resume,
-img.shortcuts {
+img.shortcuts,
+img.skipPausing {
   background-color: var(--theme-body-color);
 }
 
 .command-bar img.pause {
   mask: url("chrome://devtools/skin/images/debugger/pause.svg") no-repeat;
 }
 
 .command-bar img.stepOver {
@@ -3615,16 +3628,25 @@ img.shortcuts {
 .command-bar .replay-active {
   color: var(--theme-highlight-blue);
 }
 
 .command-bar .subSettings {
   float: right;
 }
 
+.command-bar .skipPausing {
+  mask: url("chrome://devtools/skin/images/debugger/disable-pausing.svg") no-repeat;
+  mask-size: 100%;
+}
+
+.command-bar .active .skipPausing {
+   background-color: var(--theme-highlight-blue);
+}
+
 .bottom {
   border-bottom: none;
   background-color: var(--theme-body-background);
   border-top: 1px solid var(--theme-splitter-color);
   flex: 0 0 25px;
 }
 
 .command-bar.bottom {
--- a/devtools/client/debugger/new/debugger.js
+++ b/devtools/client/debugger/new/debugger.js
@@ -3225,27 +3225,27 @@ function createPendingBreakpoint(bp) {
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.replaceOriginalVariableName = exports.getPausePoints = exports.getFramework = exports.mapOriginalExpression = exports.hasSyntaxError = exports.clearSources = exports.setSource = exports.hasSource = exports.getNextStep = exports.clearASTs = exports.clearScopes = exports.clearSymbols = exports.findOutOfScopeLocations = exports.getScopes = exports.getSymbols = exports.getClosestExpression = exports.stopParserWorker = exports.startParserWorker = undefined;
+exports.replaceOriginalVariableName = exports.getPausePoints = exports.getFramework = exports.mapOriginalExpression = exports.hasSyntaxError = exports.clearSources = exports.setSource = exports.hasSource = exports.getNextStep = exports.clearASTs = exports.clearScopes = exports.clearSymbols = exports.findOutOfScopeLocations = exports.getScopes = exports.getSymbols = exports.getClosestExpression = exports.stop = exports.start = undefined;
 
 var _devtoolsUtils = __webpack_require__(1363);
 
 const { WorkerDispatcher } = _devtoolsUtils.workerUtils; /* This Source Code Form is subject to the terms of the Mozilla Public
                                                           * License, v. 2.0. If a copy of the MPL was not distributed with this
                                                           * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 const dispatcher = new WorkerDispatcher();
-const startParserWorker = exports.startParserWorker = dispatcher.start.bind(dispatcher);
-const stopParserWorker = exports.stopParserWorker = dispatcher.stop.bind(dispatcher);
+const start = exports.start = dispatcher.start.bind(dispatcher);
+const stop = exports.stop = dispatcher.stop.bind(dispatcher);
 
 const getClosestExpression = exports.getClosestExpression = dispatcher.task("getClosestExpression");
 const getSymbols = exports.getSymbols = dispatcher.task("getSymbols");
 const getScopes = exports.getScopes = dispatcher.task("getScopes");
 const findOutOfScopeLocations = exports.findOutOfScopeLocations = dispatcher.task("findOutOfScopeLocations");
 const clearSymbols = exports.clearSymbols = dispatcher.task("clearSymbols");
 const clearScopes = exports.clearScopes = dispatcher.task("clearScopes");
 const clearASTs = exports.clearASTs = dispatcher.task("clearASTs");
@@ -5547,16 +5547,17 @@ exports.getGeneratedFrameScope = getGene
 exports.getOriginalFrameScope = getOriginalFrameScope;
 exports.getFrameScopes = getFrameScopes;
 exports.getFrameScope = getFrameScope;
 exports.getSelectedScope = getSelectedScope;
 exports.getSelectedScopeMappings = getSelectedScopeMappings;
 exports.getSelectedFrameId = getSelectedFrameId;
 exports.getTopFrame = getTopFrame;
 exports.getDebuggeeUrl = getDebuggeeUrl;
+exports.getSkipPausing = getSkipPausing;
 exports.getChromeScopes = getChromeScopes;
 
 var _reselect = __webpack_require__(993);
 
 var _devtoolsSourceMap = __webpack_require__(1360);
 
 var _prefs = __webpack_require__(226);
 
@@ -5574,17 +5575,18 @@ const createPauseState = exports.createP
     mappings: {}
   },
   loadedObjects: {},
   shouldPauseOnExceptions: _prefs.prefs.pauseOnExceptions,
   shouldIgnoreCaughtExceptions: _prefs.prefs.ignoreCaughtExceptions,
   canRewind: false,
   debuggeeUrl: "",
   command: null,
-  previousLocation: null
+  previousLocation: null,
+  skipPausing: _prefs.prefs.skipPausing
 });
 
 const emptyPauseState = {
   frames: null,
   frameScopes: {
     generated: {},
     original: {},
     mappings: {}
@@ -5719,16 +5721,24 @@ function update(state = createPauseState
 
     case "EVALUATE_EXPRESSION":
       return _extends({}, state, {
         command: action.status === "start" ? "expression" : null
       });
 
     case "NAVIGATE":
       return _extends({}, state, emptyPauseState, { debuggeeUrl: action.url });
+
+    case "TOGGLE_SKIP_PAUSING":
+      {
+        const { skipPausing } = action;
+        _prefs.prefs.skipPausing = skipPausing;
+
+        return _extends({}, state, { skipPausing });
+      }
   }
 
   return state;
 }
 
 function buildPreviousLocation(state, action) {
   const { frames, previousLocation } = state;
 
@@ -5876,16 +5886,20 @@ const getSelectedFrame = exports.getSele
   }
   return frames.find(frame => frame.id == selectedFrameId);
 });
 
 function getDebuggeeUrl(state) {
   return state.pause.debuggeeUrl;
 }
 
+function getSkipPausing(state) {
+  return state.pause.skipPausing;
+}
+
 // NOTE: currently only used for chrome
 function getChromeScopes(state) {
   const frame = getSelectedFrame(state);
   return frame ? frame.scopeChain : undefined;
 }
 
 exports.default = update;
 
@@ -5895,30 +5909,29 @@ exports.default = update;
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.findSourceMatches = exports.searchSources = exports.getMatches = exports.stopSearchWorker = exports.startSearchWorker = undefined;
+exports.findSourceMatches = exports.getMatches = exports.stop = exports.start = undefined;
 
 var _devtoolsUtils = __webpack_require__(1363);
 
 const { WorkerDispatcher } = _devtoolsUtils.workerUtils; /* This Source Code Form is subject to the terms of the Mozilla Public
                                                           * License, v. 2.0. If a copy of the MPL was not distributed with this
                                                           * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 const dispatcher = new WorkerDispatcher();
-const startSearchWorker = exports.startSearchWorker = dispatcher.start.bind(dispatcher);
-const stopSearchWorker = exports.stopSearchWorker = dispatcher.stop.bind(dispatcher);
+const start = exports.start = dispatcher.start.bind(dispatcher);
+const stop = exports.stop = dispatcher.stop.bind(dispatcher);
 
 const getMatches = exports.getMatches = dispatcher.task("getMatches");
-const searchSources = exports.searchSources = dispatcher.task("searchSources");
 const findSourceMatches = exports.findSourceMatches = dispatcher.task("findSourceMatches");
 
 /***/ }),
 
 /***/ 1396:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -6339,22 +6352,25 @@ var _selectors = __webpack_require__(359
 async function getGeneratedLocation(state, source, location, sourceMaps) {
   if (!sourceMaps.isOriginalId(location.sourceId)) {
     return location;
   }
 
   const { line, sourceId, column } = await sourceMaps.getGeneratedLocation(location, source);
 
   const generatedSource = (0, _selectors.getSource)(state, sourceId);
-  const sourceUrl = generatedSource.get("url");
+  if (!generatedSource) {
+    return location;
+  }
+
   return {
     line,
     sourceId,
     column: column === 0 ? undefined : column,
-    sourceUrl
+    sourceUrl: generatedSource.url
   };
 } /* 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/>. */
 
 /***/ }),
 
 /***/ 1398:
@@ -9050,20 +9066,26 @@ var _reactDom = __webpack_require__(4);
 var _reactDom2 = _interopRequireDefault(_reactDom);
 
 var _devtoolsConfig = __webpack_require__(1355);
 
 var _devtoolsSourceMap = __webpack_require__(1360);
 
 var _search = __webpack_require__(1395);
 
+var search = _interopRequireWildcard(_search);
+
 var _prettyPrint = __webpack_require__(1431);
 
+var prettyPrint = _interopRequireWildcard(_prettyPrint);
+
 var _parser = __webpack_require__(1365);
 
+var parser = _interopRequireWildcard(_parser);
+
 var _createStore = __webpack_require__(1658);
 
 var _createStore2 = _interopRequireDefault(_createStore);
 
 var _reducers = __webpack_require__(1516);
 
 var _reducers2 = _interopRequireDefault(_reducers);
 
@@ -9113,29 +9135,30 @@ function bootstrapStore(client, { servic
   return { store, actions, selectors };
 }
 
 function bootstrapWorkers() {
   if (!(0, _devtoolsConfig.isFirefoxPanel)()) {
     // When used in Firefox, the toolbox manages the source map worker.
     (0, _devtoolsSourceMap.startSourceMapWorker)((0, _devtoolsConfig.getValue)("workers.sourceMapURL"));
   }
-  (0, _prettyPrint.startPrettyPrintWorker)((0, _devtoolsConfig.getValue)("workers.prettyPrintURL"));
-  (0, _parser.startParserWorker)((0, _devtoolsConfig.getValue)("workers.parserURL"));
-  (0, _search.startSearchWorker)((0, _devtoolsConfig.getValue)("workers.searchURL"));
+  prettyPrint.start((0, _devtoolsConfig.getValue)("workers.prettyPrintURL"));
+  parser.start((0, _devtoolsConfig.getValue)("workers.parserURL"));
+  search.start((0, _devtoolsConfig.getValue)("workers.searchURL"));
+  return { prettyPrint, parser, search };
 }
 
 function teardownWorkers() {
   if (!(0, _devtoolsConfig.isFirefoxPanel)()) {
     // When used in Firefox, the toolbox manages the source map worker.
     (0, _devtoolsSourceMap.stopSourceMapWorker)();
   }
-  (0, _prettyPrint.stopPrettyPrintWorker)();
-  (0, _parser.stopParserWorker)();
-  (0, _search.stopSearchWorker)();
+  prettyPrint.stop();
+  parser.stop();
+  search.stop();
 }
 
 function bootstrapApp(store) {
   if ((0, _devtoolsConfig.isFirefoxPanel)()) {
     renderPanel(_App2.default, store);
   } else {
     const { renderRoot } = __webpack_require__(52);
     renderRoot(_react2.default, _reactDom2.default, _App2.default, store);
@@ -9156,17 +9179,17 @@ function updatePrefs(state) {
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.stopPrettyPrintWorker = exports.startPrettyPrintWorker = undefined;
+exports.stop = exports.start = undefined;
 exports.prettyPrint = prettyPrint;
 
 var _devtoolsUtils = __webpack_require__(1363);
 
 var _source = __webpack_require__(1356);
 
 var _assert = __webpack_require__(1384);
 
@@ -9174,18 +9197,18 @@ var _assert2 = _interopRequireDefault(_a
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 const { WorkerDispatcher } = _devtoolsUtils.workerUtils; /* This Source Code Form is subject to the terms of the Mozilla Public
                                                           * License, v. 2.0. If a copy of the MPL was not distributed with this
                                                           * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 const dispatcher = new WorkerDispatcher();
-const startPrettyPrintWorker = exports.startPrettyPrintWorker = dispatcher.start.bind(dispatcher);
-const stopPrettyPrintWorker = exports.stopPrettyPrintWorker = dispatcher.stop.bind(dispatcher);
+const start = exports.start = dispatcher.start.bind(dispatcher);
+const stop = exports.stop = dispatcher.stop.bind(dispatcher);
 const _prettyPrint = dispatcher.task("prettyPrint");
 
 async function prettyPrint({ source, url }) {
   const indent = 2;
 
   (0, _assert2.default)((0, _source.isJavaScript)(source), "Can't prettify non-javascript files.");
 
   return await _prettyPrint({
@@ -12303,32 +12326,32 @@ exports.register = function (window) {};
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.onConnect = undefined;
 
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /* 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 _firefox = __webpack_require__(1500);
 
 var firefox = _interopRequireWildcard(_firefox);
 
 var _prefs = __webpack_require__(226);
 
 var _dbg = __webpack_require__(2246);
 
 var _bootstrap = __webpack_require__(1430);
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
-/* 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/>. */
-
 function loadFromPrefs(actions) {
   const { pauseOnExceptions, ignoreCaughtExceptions } = _prefs.prefs;
   if (pauseOnExceptions || ignoreCaughtExceptions) {
     return actions.pauseOnExceptions(pauseOnExceptions, ignoreCaughtExceptions);
   }
 }
 
 async function onConnect(connection, { services, toolboxActions }) {
@@ -12338,24 +12361,25 @@ async function onConnect(connection, { s
   }
 
   const commands = firefox.clientCommands;
   const { store, actions, selectors } = (0, _bootstrap.bootstrapStore)(commands, {
     services,
     toolboxActions
   });
 
-  (0, _bootstrap.bootstrapWorkers)();
+  const workers = (0, _bootstrap.bootstrapWorkers)();
   await firefox.onConnect(connection, actions);
   await loadFromPrefs(actions);
 
   (0, _dbg.setupHelper)({
     store,
     actions,
     selectors,
+    workers: _extends({}, workers, services),
     connection,
     client: firefox.clientCommands
   });
 
   (0, _bootstrap.bootstrapApp)(store);
   return { store, actions, selectors, client: commands };
 }
 
@@ -12699,16 +12723,24 @@ function disablePrettyPrint(sourceId) {
   const sourceClient = threadClient.source({ actor: sourceId });
   return sourceClient.disablePrettyPrint();
 }
 
 async function setPausePoints(sourceId, pausePoints) {
   return sendPacket({ to: sourceId, type: "setPausePoints", pausePoints });
 }
 
+async function setSkipPausing(shouldSkip) {
+  return threadClient.request({
+    skip: shouldSkip,
+    to: threadClient.actor,
+    type: "skipPausing"
+  });
+}
+
 function interrupt() {
   return threadClient.interrupt();
 }
 
 function eventListeners() {
   return threadClient.eventListeners();
 }
 
@@ -12797,17 +12829,18 @@ const clientCommands = {
   getProperties,
   getFrameScopes,
   pauseOnExceptions,
   prettyPrint,
   disablePrettyPrint,
   fetchSources,
   fetchWorkers,
   sendPacket,
-  setPausePoints
+  setPausePoints,
+  setSkipPausing
 };
 
 exports.setupCommands = setupCommands;
 exports.clientCommands = clientCommands;
 
 /***/ }),
 
 /***/ 1502:
@@ -17520,31 +17553,26 @@ class Editor extends _react.PureComponen
     }
 
     this.setState({ editor });
     (0, _editor.setEditor)(editor);
     return editor;
   }
 
   componentDidMount() {
-    const editor = this.setupEditor();
-
-    const { selectedSource } = this.props;
     const { shortcuts } = this.context;
 
     const searchAgainKey = L10N.getStr("sourceSearch.search.again.key2");
     const searchAgainPrevKey = L10N.getStr("sourceSearch.search.againPrev.key2");
 
     shortcuts.on(L10N.getStr("toggleBreakpoint.key"), this.onToggleBreakpoint);
     shortcuts.on(L10N.getStr("toggleCondPanel.key"), this.onToggleConditionalPanel);
     shortcuts.on("Esc", this.onEscape);
     shortcuts.on(searchAgainPrevKey, this.onSearchAgain);
     shortcuts.on(searchAgainKey, this.onSearchAgain);
-
-    (0, _editor.updateDocument)(editor, selectedSource);
   }
 
   componentWillUnmount() {
     if (this.state.editor) {
       this.state.editor.destroy();
       this.setState({ editor: null });
     }
 
@@ -17553,22 +17581,28 @@ class Editor extends _react.PureComponen
     const shortcuts = this.context.shortcuts;
     shortcuts.off(L10N.getStr("toggleBreakpoint.key"));
     shortcuts.off(L10N.getStr("toggleCondPanel.key"));
     shortcuts.off(searchAgainPrevKey);
     shortcuts.off(searchAgainKey);
   }
 
   componentDidUpdate(prevProps, prevState) {
+    const { selectedSource } = this.props;
     // NOTE: when devtools are opened, the editor is not set when
     // the source loads so we need to wait until the editor is
     // set to update the text and size.
-    if (!prevState.editor && this.state.editor) {
-      this.setText(this.props);
-      this.setSize(this.props);
+    if (!prevState.editor && selectedSource) {
+      if (!this.state.editor) {
+        const editor = this.setupEditor();
+        (0, _editor.updateDocument)(editor, selectedSource);
+      } else {
+        this.setText(this.props);
+        this.setSize(this.props);
+      }
     }
   }
 
   getCurrentLine() {
     const { codeMirror } = this.state.editor;
     const { selectedSource } = this.props;
     const line = (0, _editor.getCursorLine)(codeMirror);
 
@@ -17670,16 +17704,17 @@ class Editor extends _react.PureComponen
 
   setText(props) {
     const { selectedSource, symbols } = props;
 
     if (!this.state.editor) {
       return;
     }
 
+    // check if we previously had a selected source
     if (!selectedSource) {
       return this.clearEditor();
     }
 
     if (!(0, _source.isLoaded)(selectedSource)) {
       return (0, _editor.showLoading)(this.state.editor);
     }
 
@@ -22900,17 +22935,17 @@ class SecondaryPanes extends _react.Comp
     const {
       toggleAllBreakpoints,
       breakpoints,
       breakpointsDisabled,
       breakpointsLoading
     } = this.props;
     const isIndeterminate = !breakpointsDisabled && breakpoints.some(x => x.disabled);
 
-    if (breakpoints.size == 0) {
+    if (_prefs.features.skipPausing || breakpoints.size == 0) {
       return null;
     }
 
     const inputProps = {
       type: "checkbox",
       "aria-label": breakpointsDisabled ? L10N.getStr("breakpoints.enable") : L10N.getStr("breakpoints.disable"),
       className: "breakpoints-toggle",
       disabled: breakpointsLoading,
@@ -23618,17 +23653,17 @@ class Expressions extends _react.Compone
 
   render() {
     const { expressions, showInput } = this.props;
 
     return _react2.default.createElement(
       "ul",
       { className: "pane expressions-list" },
       expressions.map(this.renderExpression),
-      showInput && this.renderNewExpressionInput()
+      (showInput || !expressions.size) && this.renderNewExpressionInput()
     );
   }
 }
 
 exports.default = (0, _reactRedux.connect)(state => ({
   expressions: (0, _selectors.getExpressions)(state),
   expressionError: (0, _selectors.getExpressionError)(state)
 }), _actions2.default)(Expressions);
@@ -24289,20 +24324,20 @@ function _interopRequireDefault(obj) { r
 class Accordion extends _react.Component {
   constructor(props) {
     super(props);
 
     this.renderContainer = (item, i) => {
       const { opened } = item;
 
       return _react2.default.createElement(
-        "div",
-        { className: item.className, key: i },
+        "li",
+        { role: "listitem", className: item.className, key: i },
         _react2.default.createElement(
-          "div",
+          "h2",
           {
             className: "_header",
             tabIndex: "0",
             onClick: () => this.handleHeaderClick(i)
           },
           _react2.default.createElement(_Svg2.default, { name: "arrow", className: opened ? "expanded" : "" }),
           item.header,
           item.buttons ? _react2.default.createElement(
@@ -24336,18 +24371,18 @@ class Accordion extends _react.Component
 
     // We force an update because otherwise the accordion
     // would not re-render
     this.forceUpdate();
   }
 
   render() {
     return _react2.default.createElement(
-      "div",
-      { className: "accordion" },
+      "ul",
+      { role: "list", className: "accordion" },
       this.props.items.map(this.renderContainer)
     );
   }
 } /* 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/>. */
 
 exports.default = Accordion;
@@ -24590,46 +24625,68 @@ class CommandBar extends _react.Componen
       _react2.default.createElement(
         "span",
         { className: activeNext },
         total
       )
     );
   }
 
+  renderSkipPausingButton() {
+    const { skipPausing, toggleSkipPausing } = this.props;
+
+    if (!_prefs.features.skipPausing) {
+      return null;
+    }
+
+    return _react2.default.createElement(
+      "button",
+      {
+        className: (0, _classnames2.default)("command-bar-button", {
+          active: skipPausing
+        }),
+        title: L10N.getStr("skipPausingTooltip"),
+        onClick: toggleSkipPausing
+      },
+      _react2.default.createElement("img", { className: "skipPausing" })
+    );
+  }
+
   render() {
     return _react2.default.createElement(
       "div",
       {
         className: (0, _classnames2.default)("command-bar", {
           vertical: !this.props.horizontal
         })
       },
       this.renderPauseButton(),
       this.renderStepButtons(),
       this.renderTimeTravelButtons(),
       _react2.default.createElement("div", { className: "filler" }),
       this.replayPreviousButton(),
       this.renderStepPosition(),
-      this.replayNextButton()
+      this.replayNextButton(),
+      this.renderSkipPausingButton()
     );
   }
 }
 
 CommandBar.contextTypes = {
   shortcuts: _propTypes2.default.object
 };
 
 exports.default = (0, _reactRedux.connect)(state => {
   return {
     isPaused: (0, _selectors.isPaused)(state),
     history: (0, _selectors.getHistory)(state),
     historyPosition: (0, _selectors.getHistoryPosition)(state),
     isWaitingOnBreak: (0, _selectors.getIsWaitingOnBreak)(state),
-    canRewind: (0, _selectors.getCanRewind)(state)
+    canRewind: (0, _selectors.getCanRewind)(state),
+    skipPausing: (0, _selectors.getSkipPausing)(state)
   };
 }, dispatch => (0, _redux.bindActionCreators)(_actions2.default, dispatch))(CommandBar);
 
 /***/ }),
 
 /***/ 1609:
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -25130,16 +25187,31 @@ function _interopRequireDefault(obj) { r
  * 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/>. */
 
 class Tabs extends _react.PureComponent {
 
   constructor(props) {
     super(props);
 
+    this.updateHiddenTabs = () => {
+      if (!this.refs.sourceTabs) {
+        return;
+      }
+      const { selectedSource, tabSources, moveTab } = this.props;
+      const sourceTabEls = this.refs.sourceTabs.children;
+      const hiddenTabs = (0, _tabs.getHiddenTabs)(tabSources, sourceTabEls);
+
+      if ((0, _ui.isVisible)() && hiddenTabs.indexOf(selectedSource) !== -1) {
+        return moveTab(selectedSource.url, 0);
+      }
+
+      this.setState({ hiddenTabs });
+    };
+
     this.renderDropdownSource = source => {
       const { selectSpecificSource } = this.props;
       const filename = (0, _source.getFilename)(source.toJS());
 
       const onClick = () => selectSpecificSource(source.id);
       return _react2.default.createElement(
         "li",
         { key: source.id, onClick: onClick },
@@ -25160,42 +25232,29 @@ class Tabs extends _react.PureComponent 
 
   componentDidUpdate(prevProps) {
     if (!(prevProps === this.props)) {
       this.updateHiddenTabs();
     }
   }
 
   componentDidMount() {
-    this.updateHiddenTabs();
+    window.requestIdleCallback(this.updateHiddenTabs);
     window.addEventListener("resize", this.onResize);
   }
 
   componentWillUnmount() {
     window.removeEventListener("resize", this.onResize);
   }
 
   /*
    * Updates the hiddenSourceTabs state, by
    * finding the source tabs which are wrapped and are not on the top row.
    */
-  updateHiddenTabs() {
-    if (!this.refs.sourceTabs) {
-      return;
-    }
-    const { selectedSource, tabSources, moveTab } = this.props;
-    const sourceTabEls = this.refs.sourceTabs.children;
-    const hiddenTabs = (0, _tabs.getHiddenTabs)(tabSources, sourceTabEls);
-
-    if ((0, _ui.isVisible)() && hiddenTabs.indexOf(selectedSource) !== -1) {
-      return moveTab(selectedSource.url, 0);
-    }
-
-    this.setState({ hiddenTabs });
-  }
+
 
   toggleSourcesDropdown(e) {
     this.setState(prevState => ({
       dropdownShown: !prevState.dropdownShown
     }));
   }
 
   getIconClass(source) {
@@ -26844,16 +26903,25 @@ var _selectFrame = __webpack_require__(1
 
 Object.defineProperty(exports, "selectFrame", {
   enumerable: true,
   get: function () {
     return _selectFrame.selectFrame;
   }
 });
 
+var _skipPausing = __webpack_require__(3640);
+
+Object.defineProperty(exports, "toggleSkipPausing", {
+  enumerable: true,
+  get: function () {
+    return _skipPausing.toggleSkipPausing;
+  }
+});
+
 /***/ }),
 
 /***/ 164:
 /***/ (function(module, exports, __webpack_require__) {
 
 (function() {
   var computeScore, countDir, file_coeff, getExtension, getExtensionScore, isMatch, scorePath, scoreSize, tau_depth, _ref;
 
@@ -34309,32 +34377,34 @@ if (isDevelopment()) {
   pref("devtools.debugger.pending-selected-location", "{}");
   pref("devtools.debugger.pending-breakpoints", "{}");
   pref("devtools.debugger.expressions", "[]");
   pref("devtools.debugger.file-search-case-sensitive", false);
   pref("devtools.debugger.file-search-whole-word", false);
   pref("devtools.debugger.file-search-regex-match", false);
   pref("devtools.debugger.project-directory-root", "");
   pref("devtools.debugger.prefs-schema-version", "1.0.1");
+  pref("devtools.debugger.skip-pausing", false);
   pref("devtools.debugger.features.workers", true);
   pref("devtools.debugger.features.async-stepping", true);
   pref("devtools.debugger.features.wasm", true);
   pref("devtools.debugger.features.shortcuts", true);
   pref("devtools.debugger.features.root", true);
   pref("devtools.debugger.features.column-breakpoints", false);
   pref("devtools.debugger.features.map-scopes", true);
   pref("devtools.debugger.features.remove-command-bar-options", true);
   pref("devtools.debugger.features.code-coverage", false);
   pref("devtools.debugger.features.event-listeners", false);
   pref("devtools.debugger.features.code-folding", false);
   pref("devtools.debugger.features.outline", true);
   pref("devtools.debugger.features.column-breakpoints", true);
   pref("devtools.debugger.features.replay", true);
   pref("devtools.debugger.features.pause-points", true);
   pref("devtools.debugger.features.component-stack", true);
+  pref("devtools.debugger.features.skip-pausing", false);
 }
 
 const prefs = new PrefsHelper("devtools", {
   alphabetizeOutline: ["Bool", "debugger.alphabetize-outline"],
   autoPrettyPrint: ["Bool", "debugger.auto-pretty-print"],
   clientSourceMapsEnabled: ["Bool", "source-map.client-service.enabled"],
   pauseOnExceptions: ["Bool", "debugger.pause-on-exceptions"],
   ignoreCaughtExceptions: ["Bool", "debugger.ignore-caught-exceptions"],
@@ -34352,17 +34422,18 @@ const prefs = new PrefsHelper("devtools"
   tabsBlackBoxed: ["Json", "debugger.tabsBlackBoxed", []],
   pendingSelectedLocation: ["Json", "debugger.pending-selected-location", {}],
   pendingBreakpoints: ["Json", "debugger.pending-breakpoints", {}],
   expressions: ["Json", "debugger.expressions", []],
   fileSearchCaseSensitive: ["Bool", "debugger.file-search-case-sensitive"],
   fileSearchWholeWord: ["Bool", "debugger.file-search-whole-word"],
   fileSearchRegexMatch: ["Bool", "debugger.file-search-regex-match"],
   debuggerPrefsSchemaVersion: ["Char", "debugger.prefs-schema-version"],
-  projectDirectoryRoot: ["Char", "debugger.project-directory-root", ""]
+  projectDirectoryRoot: ["Char", "debugger.project-directory-root", ""],
+  skipPausing: ["Bool", "debugger.skip-pausing"]
 });
 /* harmony export (immutable) */ __webpack_exports__["prefs"] = prefs;
 
 
 const features = new PrefsHelper("devtools.debugger.features", {
   asyncStepping: ["Bool", "async-stepping"],
   wasm: ["Bool", "wasm"],
   shortcuts: ["Bool", "shortcuts"],
@@ -34372,17 +34443,18 @@ const features = new PrefsHelper("devtoo
   removeCommandBarOptions: ["Bool", "remove-command-bar-options"],
   workers: ["Bool", "workers"],
   codeCoverage: ["Bool", "code-coverage"],
   eventListeners: ["Bool", "event-listeners"],
   outline: ["Bool", "outline"],
   codeFolding: ["Bool", "code-folding"],
   replay: ["Bool", "replay"],
   pausePoints: ["Bool", "pause-points"],
-  componentStack: ["Bool", "component-stack"]
+  componentStack: ["Bool", "component-stack"],
+  skipPausing: ["Bool", "skip-pausing"]
 });
 /* harmony export (immutable) */ __webpack_exports__["features"] = features;
 
 
 if (prefs.debuggerPrefsSchemaVersion !== prefsSchemaVersion) {
   // clear pending Breakpoints
   prefs.pendingBreakpoints = {};
   prefs.debuggerPrefsSchemaVersion = prefsSchemaVersion;
@@ -34656,155 +34728,163 @@ function locColumn(loc) {
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /* 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/>. */
-
-// eslint-disable-next-line max-len
-
-
 exports.findGeneratedBindingFromPosition = findGeneratedBindingFromPosition;
 
 var _locColumn = __webpack_require__(2349);
 
 var _filtering = __webpack_require__(3635);
 
 var _firefox = __webpack_require__(1500);
 
-async function findGeneratedBindingFromPosition(sourceMaps, client, source, pos, name, type, generatedAstBindings) {
-  const range = await getGeneratedLocationRange(pos, source, type, sourceMaps);
-
-  if (range) {
-    let result;
-    if (type === "import") {
-      result = await findGeneratedImportReference(type, generatedAstBindings, _extends({
-        type: pos.type
-      }, range));
-    } else {
-      result = await findGeneratedReference(type, generatedAstBindings, _extends({
-        type: pos.type
-      }, range));
-    }
-
-    if (result) {
-      return result;
-    }
-  }
-
-  if (type === "import" && pos.type === "decl") {
-    let importRange = range;
-    if (!importRange) {
-      // If the imported name itself does not map to a useful range, fall back
-      // to resolving the bindinding using the location of the overall
-      // import declaration.
-      importRange = await getGeneratedLocationRange({
-        type: pos.type,
-        start: pos.declaration.start,
-        end: pos.declaration.end
-      }, source, type, sourceMaps);
-
-      if (!importRange) {
-        return null;
-      }
-    }
-
+/* 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/>. */
+
+async function findGeneratedBindingFromPosition(sourceMaps, client, source, pos, name, bindingType, generatedAstBindings) {
+  const locationType = pos.type;
+
+  const generatedRanges = await getGeneratedLocationRanges(source, pos, bindingType, locationType, sourceMaps);
+  const applicableBindings = filterApplicableBindings(generatedAstBindings, generatedRanges);
+
+  let result;
+  if (bindingType === "import") {
+    result = await findGeneratedImportReference(applicableBindings);
+  } else {
+    result = await findGeneratedReference(applicableBindings);
+  }
+
+  if (result) {
+    return result;
+  }
+
+  if (bindingType === "import" && pos.type === "decl") {
     const importName = pos.importName;
     if (typeof importName !== "string") {
       // Should never happen, just keeping Flow happy.
       return null;
     }
 
-    return await findGeneratedImportDeclaration(generatedAstBindings, _extends({
-      importName
-    }, importRange));
+    let applicableImportBindings = applicableBindings;
+    if (generatedRanges.length === 0) {
+      // If the imported name itself does not map to a useful range, fall back
+      // to resolving the bindinding using the location of the overall
+      // import declaration.
+      const importRanges = await getGeneratedLocationRanges(source, pos.declaration, bindingType, locationType, sourceMaps);
+      applicableImportBindings = filterApplicableBindings(generatedAstBindings, importRanges);
+
+      if (applicableImportBindings.length === 0) {
+        return null;
+      }
+    }
+
+    return await findGeneratedImportDeclaration(applicableImportBindings, importName);
   }
 
   return null;
 }
-
-function filterApplicableBindings(bindings, mapped) {
-  // Any binding overlapping a part of the mapping range.
-  return (0, _filtering.filterSortedArray)(bindings, binding => {
-    if (positionCmp(binding.loc.end, mapped.start) <= 0) {
-      return -1;
-    }
-    if (positionCmp(binding.loc.start, mapped.end) >= 0) {
-      return 1;
-    }
-
-    return 0;
-  });
+// eslint-disable-next-line max-len
+
+
+function filterApplicableBindings(bindings, ranges) {
+  const result = [];
+  for (const range of ranges) {
+    // Any binding overlapping a part of the mapping range.
+    const filteredBindings = (0, _filtering.filterSortedArray)(bindings, binding => {
+      if (positionCmp(binding.loc.end, range.start) <= 0) {
+        return -1;
+      }
+      if (positionCmp(binding.loc.start, range.end) >= 0) {
+        return 1;
+      }
+
+      return 0;
+    });
+
+    let firstInRange = true;
+    let firstOnLine = true;
+    let line = -1;
+
+    for (const binding of filteredBindings) {
+      if (binding.loc.start.line === line) {
+        firstOnLine = false;
+      } else {
+        line = binding.loc.start.line;
+        firstOnLine = true;
+      }
+
+      result.push({
+        binding,
+        range,
+        firstOnLine,
+        firstInRange
+      });
+
+      firstInRange = false;
+    }
+  }
+
+  return result;
 }
 
 /**
  * Given a mapped range over the generated source, attempt to resolve a real
  * binding descriptor that can be used to access the value.
  */
-async function findGeneratedReference(type, generatedAstBindings, mapped) {
-  const bindings = filterApplicableBindings(generatedAstBindings, mapped);
-
-  let lineStart = true;
-  let line = -1;
-
-  return bindings.reduce(async (acc, val, i) => {
-    const accVal = await acc;
-    if (accVal) {
-      return accVal;
-    }
-
-    if (val.loc.start.line === line) {
-      lineStart = false;
-    } else {
-      line = val.loc.start.line;
-      lineStart = true;
-    }
-
-    return mapBindingReferenceToDescriptor(val, mapped, lineStart);
-  }, null);
-}
-
-async function findGeneratedImportReference(type, generatedAstBindings, mapped) {
-  let bindings = filterApplicableBindings(generatedAstBindings, mapped);
-
+async function findGeneratedReference(applicableBindings) {
+  for (const applicable of applicableBindings) {
+    const result = await mapBindingReferenceToDescriptor(applicable);
+    if (result) {
+      return result;
+    }
+  }
+  return null;
+}
+
+async function findGeneratedImportReference(applicableBindings) {
   // When wrapped, for instance as `Object(ns.default)`, the `Object` binding
   // will be the first in the list. To avoid resolving `Object` as the
   // value of the import itself, we potentially skip the first binding.
-  if (bindings.length > 1 && !bindings[0].loc.meta && bindings[1].loc.meta) {
-    bindings = bindings.slice(1);
-  }
-
-  return bindings.reduce(async (acc, val) => {
-    const accVal = await acc;
-    if (accVal) {
-      return accVal;
-    }
-
-    return mapImportReferenceToDescriptor(val, mapped);
-  }, null);
+  applicableBindings = applicableBindings.filter((applicable, i) => {
+    if (!applicable.firstInRange || applicable.binding.loc.type !== "ref" || applicable.binding.loc.meta) {
+      return true;
+    }
+
+    const next = i + 1 < applicableBindings.length ? applicableBindings[i + 1] : null;
+
+    return !next || next.binding.loc.type !== "ref" || !next.binding.loc.meta;
+  });
+
+  for (const applicable of applicableBindings) {
+    const result = await mapImportReferenceToDescriptor(applicable);
+    if (result) {
+      return result;
+    }
+  }
+
+  return null;
 }
 
 /**
  * Given a mapped range over the generated source and the name of the imported
  * value that is referenced, attempt to resolve a binding descriptor for
  * the import's value.
  */
-async function findGeneratedImportDeclaration(generatedAstBindings, mapped) {
-  const bindings = filterApplicableBindings(generatedAstBindings, mapped);
-
+async function findGeneratedImportDeclaration(applicableBindings, importName) {
   let result = null;
 
-  for (const binding of bindings) {
+  for (const _ref of applicableBindings) {
+    const { binding } = _ref;
+
     if (binding.loc.type !== "decl") {
       continue;
     }
 
     const namespaceDesc = await binding.desc();
     if (isPrimitiveValue(namespaceDesc)) {
       continue;
     }
@@ -34820,18 +34900,18 @@ async function findGeneratedImportDeclar
       result = {
         name: binding.name,
         desc: namespaceDesc,
         expression: binding.name
       };
       continue;
     }
 
-    const desc = await readDescriptorProperty(namespaceDesc, mapped.importName);
-    const expression = `${binding.name}.${mapped.importName}`;
+    const desc = await readDescriptorProperty(namespaceDesc, importName);
+    const expression = `${binding.name}.${importName}`;
 
     if (desc) {
       result = {
         name: binding.name,
         desc,
         expression
       };
       break;
@@ -34840,44 +34920,52 @@ async function findGeneratedImportDeclar
 
   return result;
 }
 
 /**
  * Given a generated binding, and a range over the generated code, statically
  * check if the given binding matches the range.
  */
-async function mapBindingReferenceToDescriptor(binding, mapped, isFirst) {
+async function mapBindingReferenceToDescriptor({
+  binding,
+  range,
+  firstInRange,
+  firstOnLine
+}) {
   // Allow the mapping to point anywhere within the generated binding
   // location to allow for less than perfect sourcemaps. Since you also
   // need at least one character between identifiers, we also give one
   // characters of space at the front the generated binding in order
   // to increase the probability of finding the right mapping.
-  if (mapped.start.line === binding.loc.start.line && (
+  if (range.start.line === binding.loc.start.line && (
   // If a binding is the first on a line, Babel will extend the mapping to
   // include the whitespace between the newline and the binding. To handle
   // that, we skip the range requirement for starting location.
-  isFirst || (0, _locColumn.locColumn)(mapped.start) >= (0, _locColumn.locColumn)(binding.loc.start)) && (0, _locColumn.locColumn)(mapped.start) <= (0, _locColumn.locColumn)(binding.loc.end)) {
+  firstInRange || firstOnLine || (0, _locColumn.locColumn)(range.start) >= (0, _locColumn.locColumn)(binding.loc.start)) && (0, _locColumn.locColumn)(range.start) <= (0, _locColumn.locColumn)(binding.loc.end)) {
     return {
       name: binding.name,
       desc: await binding.desc(),
       expression: binding.name
     };
   }
 
   return null;
 }
 
 /**
  * Given an generated binding, and a range over the generated code, statically
  * evaluate accessed properties within the mapped range to resolve the actual
  * imported value.
  */
-async function mapImportReferenceToDescriptor(binding, mapped) {
-  if (mapped.type !== "ref") {
+async function mapImportReferenceToDescriptor({
+  binding,
+  range
+}) {
+  if (binding.loc.type !== "ref") {
     return null;
   }
 
   // Expression matches require broader searching because sourcemaps usage
   // varies in how they map certain things. For instance given
   //
   //   import { bar } from "mod";
   //   bar();
@@ -34898,31 +34986,31 @@ async function mapImportReferenceToDescr
   // Unfortunately, Webpack also has a tendancy to over-map past the call
   // expression to the start of the next line, at least when there isn't
   // anything else on that line that is mapped, e.g.
   //
   //   Object(foo.bar)()
   //   ^^^^^^^^^^^^^^^^^
   //   ^                 // wrapped to column 0 of next line
 
-  if (!mappingContains(mapped, binding.loc)) {
+  if (!mappingContains(range, binding.loc)) {
     return null;
   }
 
   let expression = binding.name;
   let desc = await binding.desc();
 
   if (binding.loc.type === "ref") {
     const { meta } = binding.loc;
 
     // Limit to 2 simple property or inherits operartions, since it would
     // just be more work to search more and it is very unlikely that
     // bindings would be mapped to more than a single member + inherits
     // wrapper.
-    for (let op = meta, index = 0; op && mappingContains(mapped, op) && desc && index < 2; index++, op = op && op.parent) {
+    for (let op = meta, index = 0; op && mappingContains(range, op) && desc && index < 2; index++, op = op && op.parent) {
       // Calling could potentially trigger side-effects, which would not
       // be ideal for this case.
       if (op.type === "call") {
         return null;
       }
 
       if (op.type === "inherit") {
         continue;
@@ -34993,66 +35081,77 @@ function positionCmp(p1, p2) {
       return 0;
     }
     return l1 < l2 ? -1 : 1;
   }
 
   return p1.line < p2.line ? -1 : 1;
 }
 
-async function getGeneratedLocationRange(pos, source, type, sourceMaps) {
-  const endPosition = await sourceMaps.getGeneratedLocation(pos.end, source);
-  const startPosition = await sourceMaps.getGeneratedLocation(pos.start, source);
-  const ranges = await sourceMaps.getGeneratedRanges(pos.start, source);
-  if (ranges.length === 0) {
-    return null;
-  }
+async function getGeneratedLocationRanges(source, {
+  start,
+  end
+}, bindingType, locationType, sourceMaps) {
+  const endPosition = await sourceMaps.getGeneratedLocation(end, source);
+  const startPosition = await sourceMaps.getGeneratedLocation(start, source);
 
   // If the start and end positions collapse into eachother, it means that
   // the range in the original content didn't _start_ at the start position.
   // Since this likely means that the range doesn't logically apply to this
   // binding location, we skip it.
   if (positionCmp(startPosition, endPosition) === 0) {
-    return null;
-  }
-
-  const start = {
-    line: ranges[0].line,
-    column: ranges[0].columnStart
-  };
-  const end = {
-    line: ranges[0].line,
-    // SourceMapConsumer's 'lastColumn' is inclusive, so we add 1 to make
-    // it exclusive like all other locations.
-    column: ranges[0].columnEnd + 1
-  };
-
-  // Expand the range over any following ranges if they are contiguous.
-  for (let i = 1; i < ranges.length; i++) {
-    const range = ranges[i];
-    if (end.column !== Infinity || range.line !== end.line + 1 || range.columnStart !== 0) {
-      break;
-    }
-    end.line = range.line;
-    end.column = range.columnEnd + 1;
-  }
+    return [];
+  }
+
+  const ranges = await sourceMaps.getGeneratedRanges(start, source);
+
+  const resultRanges = ranges.reduce((acc, mapRange) => {
+    const range = {
+      start: {
+        line: mapRange.line,
+        column: mapRange.columnStart
+      },
+      end: {
+        line: mapRange.line,
+        // SourceMapConsumer's 'lastColumn' is inclusive, so we add 1 to make
+        // it exclusive like all other locations.
+        column: mapRange.columnEnd + 1
+      }
+    };
+
+    const previous = acc[acc.length - 1];
+
+    if (previous && (previous.end.line === range.start.line && previous.end.column === range.start.column || previous.end.line + 1 === range.start.line && previous.end.column === Infinity && range.start.column === 0)) {
+      previous.end.line = range.end.line;
+      previous.end.column = range.end.column;
+    } else {
+      acc.push(range);
+    }
+
+    return acc;
+  }, []);
 
   // When searching for imports, we expand the range to up to the next available
   // mapping to allow for import declarations that are composed of multiple
   // variable statements, where the later ones are entirely unmapped.
   // Babel 6 produces imports in this style, e.g.
   //
   // var _mod = require("mod"); // mapped from import statement
   // var _mod2 = interop(_mod); // entirely unmapped
-  if (type === "import" && pos.type === "decl" && endPosition.line > end.line) {
-    end.line = endPosition.line;
-    end.column = endPosition.column;
-  }
-
-  return { start, end };
+  if (bindingType === "import" && locationType === "decl") {
+    for (const range of resultRanges) {
+      if (mappingContains(range, { start: startPosition, end: startPosition }) && positionCmp(range.end, endPosition) < 0) {
+        range.end.line = endPosition.line;
+        range.end.column = endPosition.column;
+        break;
+      }
+    }
+  }
+
+  return resultRanges;
 }
 
 /***/ }),
 
 /***/ 2359:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -38843,17 +38942,17 @@ class FrameworkComponent extends _react.
         dimTopLevelWindow: true,
         createObjectClient: grip => (0, _firefox.createObjectClient)(grip)
       })
     );
   }
 
   render() {
     const { selectedFrame } = this.props;
-    if ((0, _preview.isReactComponent)(selectedFrame.this)) {
+    if (selectedFrame && (0, _preview.isReactComponent)(selectedFrame.this)) {
       return this.renderReactComponent();
     }
 
     return null;
   }
 }
 
 exports.default = (0, _reactRedux.connect)(state => {
@@ -39177,20 +39276,24 @@ function findInsertionLocation(array, ca
       right = mid;
     } else {
       left = mid + 1;
     }
   }
 
   // Ensure the value is the start of any set of matches.
   let i = left;
-  while (i > 0 && callback(array[i]) >= 0) {
-    i--;
-  }
-  return i + 1;
+  if (i < array.length) {
+    while (i > 0 && callback(array[i]) >= 0) {
+      i--;
+    }
+    return i + 1;
+  }
+
+  return i;
 }
 
 function filterSortedArray(array, callback) {
   const start = findInsertionLocation(array, callback);
 
   const results = [];
   for (let i = start; i < array.length && callback(array[i]) === 0; i++) {
     results.push(array[i]);
@@ -39807,16 +39910,50 @@ exports.default = (0, _reactRedux.connec
 
 /***/ 364:
 /***/ (function(module, exports) {
 
 module.exports = "<!-- 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/. --><svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 33 12\"><path id=\"base-path\" d=\"M27.1,0H1C0.4,0,0,0.4,0,1v10c0,0.6,0.4,1,1,1h26.1 c0.6,0,1.2-0.3,1.5-0.7L33,6l-4.4-5.3C28.2,0.3,27.7,0,27.1,0z\"></path></svg>"
 
 /***/ }),
 
+/***/ 3640:
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.toggleSkipPausing = toggleSkipPausing;
+
+var _selectors = __webpack_require__(3590);
+
+/**
+ * @memberof actions/pause
+ * @static
+ */
+/* 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/>. */
+
+function toggleSkipPausing() {
+  return async ({ dispatch, client, getState, sourceMaps }) => {
+    const skipPausing = !(0, _selectors.getSkipPausing)(getState());
+
+    // NOTE: enable this when we land the endpoint in m-c
+    // await client.setSkipPausing(skipPausing);
+
+    dispatch({ type: "TOGGLE_SKIP_PAUSING", skipPausing });
+  };
+}
+
+/***/ }),
+
 /***/ 365:
 /***/ (function(module, exports) {
 
 module.exports = "<!-- 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/. --><svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\"><g fill-rule=\"evenodd\"><path d=\"M1.5 14.042h4.095a.5.5 0 0 0 0-1H1.5a.5.5 0 1 0 0 1zM7.983 2a.5.5 0 0 1 .517.5v7.483l3.136-3.326a.5.5 0 1 1 .728.686l-4 4.243a.499.499 0 0 1-.73-.004L3.635 7.343a.5.5 0 0 1 .728-.686L7.5 9.983V3H1.536C1.24 3 1 2.776 1 2.5s.24-.5.536-.5h6.447zM10.5 14.042h4.095a.5.5 0 0 0 0-1H10.5a.5.5 0 1 0 0 1z\"></path></g></svg>"
 
 /***/ }),
 
 /***/ 366:
--- a/devtools/client/debugger/new/parser-worker.js
+++ b/devtools/client/debugger/new/parser-worker.js
@@ -1317,17 +1317,17 @@ function isAwaitExpression(path) {
 }
 
 function isYieldExpression(path) {
   const { node, parent } = path;
   return t.isYieldExpression(node) || t.isYieldExpression(parent.init) || t.isYieldExpression(parent);
 }
 
 function isObjectShorthand(parent) {
-  return t.isProperty(parent) && parent.key.start == parent.value.start && parent.key.loc.identifierName === parent.value.loc.identifierName;
+  return t.isObjectProperty(parent) && parent.key.start == parent.value.start && parent.key.loc.identifierName === parent.value.loc.identifierName;
 }
 
 function getObjectExpressionValue(node) {
   const { value } = node;
 
   if (t.isIdentifier(value)) {
     return value.name;
   }
@@ -19623,16 +19623,29 @@ const scopeCollectionVisitor = {
       }
 
       freeVariables.push({
         type: "ref",
         start: fromBabelLocation(node.loc.start, state.sourceId),
         end: fromBabelLocation(node.loc.end, state.sourceId),
         meta: buildMetaBindings(state.sourceId, node, ancestors)
       });
+    } else if (isOpeningJSXIdentifier(node, ancestors)) {
+      let freeVariables = state.freeVariables.get(node.name);
+      if (!freeVariables) {
+        freeVariables = [];
+        state.freeVariables.set(node.name, freeVariables);
+      }
+
+      freeVariables.push({
+        type: "ref",
+        start: fromBabelLocation(node.loc.start, state.sourceId),
+        end: fromBabelLocation(node.loc.end, state.sourceId),
+        meta: buildMetaBindings(state.sourceId, node, ancestors)
+      });
     } else if (t.isThisExpression(node)) {
       let freeVariables = state.freeVariables.get("this");
       if (!freeVariables) {
         freeVariables = [];
         state.freeVariables.set("this", freeVariables);
       }
 
       freeVariables.push({
@@ -19699,16 +19712,34 @@ const scopeCollectionVisitor = {
         }
 
         refs.push(...value);
       }
     }
   }
 };
 
+function isOpeningJSXIdentifier(node, ancestors) {
+  if (!t.isJSXIdentifier(node)) {
+    return false;
+  }
+
+  for (let i = ancestors.length - 1; i >= 0; i--) {
+    const { node: parent, key } = ancestors[i];
+
+    if (t.isJSXOpeningElement(parent) && key === "name") {
+      return true;
+    } else if (!t.isJSXMemberExpression(parent) || key !== "object") {
+      break;
+    }
+  }
+
+  return false;
+}
+
 function buildMetaBindings(sourceId, node, ancestors, parentIndex = ancestors.length - 1) {
   if (parentIndex <= 1) {
     return null;
   }
   const parent = ancestors[parentIndex].node;
   const grandparent = ancestors[parentIndex - 1].node;
 
   // Consider "0, foo" to be equivalent to "foo".
@@ -21226,19 +21257,18 @@ function onEnter(node, ancestors, state)
   }
 
   if (isAssignment(node)) {
     // We only want to pause at literal assignments `var a = foo()`
     const value = node.right || node.init;
 
     if (isCall(value) || t.isFunction(parentNode)) {
       return addEmptyPoint(state, startLocation);
-    } else {
-      return addStopPoint(state, startLocation);
-    }
+    }
+    return addStopPoint(state, startLocation);
   }
 
   if (isCall(node)) {
     let location = startLocation;
 
     // When functions are chained, we want to use the property location
     // e.g `foo().bar()`
     if (t.isMemberExpression(node.callee)) {
--- a/devtools/client/debugger/new/test/mochitest/browser.ini
+++ b/devtools/client/debugger/new/test/mochitest/browser.ini
@@ -149,17 +149,16 @@ skip-if = (os == "win" && ccov) # Bug 14
 [browser_dbg-babel-scopes.js]
 skip-if = ccov # Bug 1441545
 [browser_dbg-babel-stepping.js]
 [browser_dbg-babel-preview.js]
 skip-if = (os == "win" && ccov) # Bug 1448523
 [browser_dbg-breaking.js]
 [browser_dbg-breaking-from-console.js]
 [browser_dbg-breakpoints.js]
-[browser_dbg-breakpoints-toggle.js]
 [browser_dbg-breakpoints-reloading.js]
 [browser_dbg-breakpoints-cond.js]
 [browser_dbg-browser-content-toolbox.js]
 skip-if = !e10s # This test is only valid in e10s
 [browser_dbg-call-stack.js]
 [browser_dbg-scopes.js]
 [browser_dbg-chrome-create.js]
 [browser_dbg-chrome-debugging.js]
--- a/devtools/client/debugger/new/test/mochitest/browser_dbg-babel-scopes.js
+++ b/devtools/client/debugger/new/test/mochitest/browser_dbg-babel-scopes.js
@@ -98,17 +98,17 @@ add_task(async function() {
   // No '<this>' binding here because Babel does not currently general
   // the current mappings for 'this' bindings.
   await breakpointScopes(
     dbg,
     "this-arguments-bindings",
     { line: 8, column: 6 },
     [
       "arrow",
-      ["argArrow", "(unmapped)"],
+      ["argArrow", '"arrow-arg"'],
       "Block",
       "arrow()",
       "fn",
       ["arg", '"arg-value"'],
       ["arguments", "Arguments"],
       "root",
       "fn()",
       "Module",
@@ -127,16 +127,17 @@ add_task(async function() {
     ["anAliased2", '"an-original2"'],
     ["anAliased3", '"an-original3"'],
     ["aNamed", '"a-named"'],
     ["aNamed2", '"a-named2"'],
     ["aNamed3", '"a-named3"'],
     ["aNamespace", "{\u2026}"],
     ["aNamespace2", "{\u2026}"],
     ["aNamespace3", "{\u2026}"],
+    ["example", "(optimized away)"],
     ["optimizedOut", "(optimized away)"],
     "root()"
   ]);
 
   await breakpointScopes(dbg, "classes", { line: 12, column: 6 }, [
     "Block",
     ["three", "3"],
     ["two", "2"],
@@ -279,16 +280,17 @@ add_task(async function() {
     ["anAliased2", "Getter"],
     ["anAliased3", "Getter"],
     ["aNamed", "Getter"],
     ["aNamed2", "Getter"],
     ["aNamed3", "Getter"],
     ["aNamespace", "{\u2026}"],
     ["aNamespace2", "{\u2026}"],
     ["aNamespace3", "{\u2026}"],
+    ["example", "(optimized away)"],
     ["optimizedOut", "(optimized away)"],
     "root()"
   ]);
 
   await breakpointScopes(dbg, "webpack-modules-es6", { line: 20, column: 2 }, [
     "Module",
     ["aDefault", '"a-default"'],
     ["aDefault2", '"a-default2"'],
@@ -297,16 +299,17 @@ add_task(async function() {
     ["anAliased2", '"an-original2"'],
     ["anAliased3", '"an-original3"'],
     ["aNamed", '"a-named"'],
     ["aNamed2", '"a-named2"'],
     ["aNamed3", '"a-named3"'],
     ["aNamespace", "{\u2026}"],
     ["aNamespace2", "{\u2026}"],
     ["aNamespace3", "{\u2026}"],
+    ["example", "(optimized away)"],
     ["optimizedOut", "(optimized away)"],
     "root()"
   ]);
 
   await breakpointScopes(dbg, "webpack-standalone", { line: 11, column: 0 }, [
     "Block",
     ["<this>", '"this-value"'],
     ["arg", '"arg-value"'],
deleted file mode 100644
--- a/devtools/client/debugger/new/test/mochitest/browser_dbg-breakpoints-toggle.js
+++ /dev/null
@@ -1,89 +0,0 @@
-function toggleBreakpoint(dbg, index) {
-  const bp = findAllElements(dbg, "breakpointItems")[index];
-  const input = bp.querySelector("input");
-  input.click();
-}
-
-async function removeBreakpoint(dbg, index) {
-  const removed = waitForDispatch(dbg, "REMOVE_BREAKPOINT");
-  const bp = findAllElements(dbg, "breakpointItems")[index];
-  bp.querySelector(".close-btn").click();
-  await removed;
-}
-
-async function disableBreakpoint(dbg, index) {
-  const disabled = waitForDispatch(dbg, "DISABLE_BREAKPOINT");
-  toggleBreakpoint(dbg, index);
-  await disabled;
-}
-
-async function enableBreakpoint(dbg, index) {
-  const enabled = waitForDispatch(dbg, "ENABLE_BREAKPOINT");
-  toggleBreakpoint(dbg, index);
-  await enabled;
-}
-
-function toggleBreakpoints(dbg, count) {
-  clickElement(dbg, "toggleBreakpoints");
-}
-
-function disableBreakpoints(dbg, count) {
-  const toggled = waitForDispatch(dbg, "DISABLE_ALL_BREAKPOINTS", count);
-  toggleBreakpoints(dbg);
-  return toggled;
-}
-
-function enableBreakpoints(dbg, count) {
-  const enabled = waitForDispatch(dbg, "ENABLE_ALL_BREAKPOINTS", count);
-  toggleBreakpoints(dbg);
-  return enabled;
-}
-
-function findBreakpoint(dbg, url, line) {
-  const { selectors: { getBreakpoint }, getState } = dbg;
-  const source = findSource(dbg, url);
-  return getBreakpoint(getState(), { sourceId: source.id, line });
-}
-
-function findBreakpoints(dbg) {
-  const { selectors: { getBreakpoints }, getState } = dbg;
-  return getBreakpoints(getState());
-}
-
-// toggle all breakpoints
-add_task(async function() {
-  const dbg = await initDebugger("doc-scripts.html", "simple2");
-
-  // Create two breakpoints
-  await selectSource(dbg, "simple2");
-  await addBreakpoint(dbg, "simple2", 3);
-  await addBreakpoint(dbg, "simple2", 5);
-
-  // Disable all of the breakpoints
-  await disableBreakpoints(dbg, 1);
-  let bp1 = findBreakpoint(dbg, "simple2", 3);
-  let bp2 = findBreakpoint(dbg, "simple2", 5);
-
-  if (!bp2) {
-    debugger;
-  }
-
-  is(bp1.disabled, true, "first breakpoint is disabled");
-  is(bp2.disabled, true, "second breakpoint is disabled");
-
-  // Enable all of the breakpoints
-  await enableBreakpoints(dbg, 1);
-  bp1 = findBreakpoint(dbg, "simple2", 3);
-  bp2 = findBreakpoint(dbg, "simple2", 5);
-
-  is(bp1.disabled, false, "first breakpoint is enabled");
-  is(bp2.disabled, false, "second breakpoint is enabled");
-
-  // Remove the breakpoints
-  await removeBreakpoint(dbg, 0);
-  await removeBreakpoint(dbg, 0);
-
-  const bps = findBreakpoints(dbg);
-
-  is(bps.size, 0, "breakpoints are removed");
-});
--- a/devtools/client/debugger/new/test/mochitest/examples/babel/fixtures/imported-bindings/input.js
+++ b/devtools/client/debugger/new/test/mochitest/examples/babel/fixtures/imported-bindings/input.js
@@ -36,8 +36,15 @@ export default function root() {
 
     console.log(new aDefault3());
     console.log(new anAliased3());
     console.log(new aNamed3());
     console.log(new anAliased3());
     console.log(new aNamespace3());
   } catch (e) {}
 }
+
+export function example(){}
+
+// The build harness sets the wrong global, so just override it.
+Promise.resolve().then(() => {
+  window.importedBindings = root;
+});
--- a/devtools/client/debugger/new/test/mochitest/examples/babel/fixtures/imported-bindings/output.js
+++ b/devtools/client/debugger/new/test/mochitest/examples/babel/fixtures/imported-bindings/output.js
@@ -70,16 +70,17 @@ var importedBindings =
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = root;
+exports.example = example;
 
 var _mod = __webpack_require__(1);
 
 var _mod2 = _interopRequireDefault(_mod);
 
 var _mod3 = __webpack_require__(2);
 
 var _mod4 = __webpack_require__(3);
@@ -142,17 +143,23 @@ function root() {
 
     console.log(new _mod12.default());
     console.log(new _mod14.original());
     console.log(new _mod13.aNamed3());
     console.log(new _mod14.original());
     console.log(new aNamespace3());
   } catch (e) {}
 }
-module.exports = exports["default"];
+
+function example() {}
+
+// The build harness sets the wrong global, so just override it.
+Promise.resolve().then(function () {
+  window.importedBindings = root;
+});
 
 /***/ }),
 /* 1 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
--- a/devtools/client/debugger/new/test/mochitest/examples/babel/fixtures/imported-bindings/output.js.map
+++ b/devtools/client/debugger/new/test/mochitest/examples/babel/fixtures/imported-bindings/output.js.map
@@ -1,1 +1,1 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap e0180c76a41bdd7a8eae","webpack:///./fixtures/imported-bindings/input.js","webpack:///./fixtures/imported-bindings/src/mod1.js","webpack:///./fixtures/imported-bindings/src/mod2.js","webpack:///./fixtures/imported-bindings/src/mod3.js","webpack:///./fixtures/imported-bindings/src/mod4.js","webpack:///./fixtures/imported-bindings/src/mod5.js","webpack:///./fixtures/imported-bindings/src/mod6.js","webpack:///./fixtures/imported-bindings/src/mod7.js","webpack:///./fixtures/imported-bindings/src/mod8.js","webpack:///./fixtures/imported-bindings/src/mod9.js","webpack:///./fixtures/imported-bindings/src/mod10.js","webpack:///./fixtures/imported-bindings/src/mod11.js","webpack:///./fixtures/imported-bindings/src/mod12.js","webpack:///./fixtures/imported-bindings/src/optimized-out.js"],"names":["root","aNamespace","aNamespace2","aNamespace3","console","log","e","aNamed","original","aNamed2","aNamed3","optimizedOut"],"mappings":";;AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;;;;;;;;;;;kBC3CwBA,I;;AAlBxB;;;;AACA;;AACA;;AACA;;IAAYC,U;;AAEZ;;;;AACA;;AACA;;AACA;;IAAYC,W;;AAEZ;;;;AACA;;AACA;;AACA;;IAAYC,W;;AAEZ;;;;;;;;AACA;;AAEe,SAASH,IAAT,GAAgB;AAC7BI,UAAQC,GAAR,CAAY,YAAZ,EAA0BL,IAA1B;;AAEAI,UAAQC,GAAR;AACAD,UAAQC,GAAR;AACAD,UAAQC,GAAR;AACAD,UAAQC,GAAR;AACAD,UAAQC,GAAR,CAAYJ,UAAZ;;AAEA,MAAI;AACF;AACA;AACAG,YAAQC,GAAR,CAAY,oBAAZ;AACAD,YAAQC,GAAR,CAAY,qBAAZ;AACAD,YAAQC,GAAR,CAAY,oBAAZ;AACAD,YAAQC,GAAR,CAAY,qBAAZ;AACAD,YAAQC,GAAR,CAAYH,aAAZ;;AAEAE,YAAQC,GAAR,CAAY,oBAAZ;AACAD,YAAQC,GAAR,CAAY,qBAAZ;AACAD,YAAQC,GAAR,CAAY,oBAAZ;AACAD,YAAQC,GAAR,CAAY,qBAAZ;AACAD,YAAQC,GAAR,CAAY,IAAIF,WAAJ,EAAZ;AACD,GAdD,CAcE,OAAOG,CAAP,EAAU,CAAE;AACf;;;;;;;;;;;;;kBC1Cc,W;;;;;;;;;;;;;ACAR,IAAMC,0BAAS,SAAf,C;;;;;;;;;;;;ACAA,IAAMC,8BAAW,aAAjB,C;;;;;;;;;;;;kBCAQ,W;AACR,IAAMD,0BAAS,SAAf,C;;;;;;;;;;;;kBCDQ,Y;;;;;;;;;;;;;ACAR,IAAME,4BAAU,UAAhB,C;;;;;;;;;;;;ACAA,IAAMD,8BAAW,cAAjB,C;;;;;;;;;;;;kBCAQ,Y;AACR,IAAMD,0BAAS,UAAf,C;;;;;;;;;;;;kBCDQ,Y;;;;;;;;;;;;;ACAR,IAAMG,4BAAU,UAAhB,C;;;;;;;;;;;;ACAA,IAAMF,8BAAW,cAAjB,C;;;;;;;;;;;;kBCAQ,Y;AACR,IAAMD,0BAAS,UAAf,C;;;;;;;;;;;;kBCDiBI,Y;AAAT,SAASA,YAAT,GAAwB,CAAE","file":"fixtures/imported-bindings/output.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap e0180c76a41bdd7a8eae","import aDefault from \"./src/mod1\";\nimport { aNamed } from \"./src/mod2\";\nimport { original as anAliased } from \"./src/mod3\";\nimport * as aNamespace from \"./src/mod4\";\n\nimport aDefault2 from \"./src/mod5\";\nimport { aNamed2 } from \"./src/mod6\";\nimport { original as anAliased2 } from \"./src/mod7\";\nimport * as aNamespace2 from \"./src/mod8\";\n\nimport aDefault3 from \"./src/mod9\";\nimport { aNamed3 } from \"./src/mod10\";\nimport { original as anAliased3 } from \"./src/mod11\";\nimport * as aNamespace3 from \"./src/mod12\";\n\nimport optimizedOut from \"./src/optimized-out\";\noptimizedOut();\n\nexport default function root() {\n  console.log(\"pause here\", root);\n\n  console.log(aDefault);\n  console.log(anAliased);\n  console.log(aNamed);\n  console.log(anAliased);\n  console.log(aNamespace);\n\n  try {\n    // None of these are callable in this code, but we still want to make sure\n    // they map properly even if the only reference is in a call expressions.\n    console.log(aDefault2());\n    console.log(anAliased2());\n    console.log(aNamed2());\n    console.log(anAliased2());\n    console.log(aNamespace2());\n\n    console.log(new aDefault3());\n    console.log(new anAliased3());\n    console.log(new aNamed3());\n    console.log(new anAliased3());\n    console.log(new aNamespace3());\n  } catch (e) {}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/imported-bindings/input.js","export default \"a-default\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/imported-bindings/src/mod1.js","export const aNamed = \"a-named\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/imported-bindings/src/mod2.js","export const original = \"an-original\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/imported-bindings/src/mod3.js","export default \"a-default\";\nexport const aNamed = \"a-named\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/imported-bindings/src/mod4.js","export default \"a-default2\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/imported-bindings/src/mod5.js","export const aNamed2 = \"a-named2\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/imported-bindings/src/mod6.js","export const original = \"an-original2\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/imported-bindings/src/mod7.js","export default \"a-default2\";\nexport const aNamed = \"a-named2\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/imported-bindings/src/mod8.js","export default \"a-default3\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/imported-bindings/src/mod9.js","export const aNamed3 = \"a-named3\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/imported-bindings/src/mod10.js","export const original = \"an-original3\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/imported-bindings/src/mod11.js","export default \"a-default3\";\nexport const aNamed = \"a-named3\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/imported-bindings/src/mod12.js","export default function optimizedOut() {}\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/imported-bindings/src/optimized-out.js"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap 10c0c41335992ab33745","webpack:///./fixtures/imported-bindings/input.js","webpack:///./fixtures/imported-bindings/src/mod1.js","webpack:///./fixtures/imported-bindings/src/mod2.js","webpack:///./fixtures/imported-bindings/src/mod3.js","webpack:///./fixtures/imported-bindings/src/mod4.js","webpack:///./fixtures/imported-bindings/src/mod5.js","webpack:///./fixtures/imported-bindings/src/mod6.js","webpack:///./fixtures/imported-bindings/src/mod7.js","webpack:///./fixtures/imported-bindings/src/mod8.js","webpack:///./fixtures/imported-bindings/src/mod9.js","webpack:///./fixtures/imported-bindings/src/mod10.js","webpack:///./fixtures/imported-bindings/src/mod11.js","webpack:///./fixtures/imported-bindings/src/mod12.js","webpack:///./fixtures/imported-bindings/src/optimized-out.js"],"names":["root","example","aNamespace","aNamespace2","aNamespace3","console","log","e","Promise","resolve","then","window","importedBindings","aNamed","original","aNamed2","aNamed3","optimizedOut"],"mappings":";;AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;;;;;;;;;;;kBC3CwBA,I;QA0BRC,O,GAAAA,O;;AA5ChB;;;;AACA;;AACA;;AACA;;IAAYC,U;;AAEZ;;;;AACA;;AACA;;AACA;;IAAYC,W;;AAEZ;;;;AACA;;AACA;;AACA;;IAAYC,W;;AAEZ;;;;;;;;AACA;;AAEe,SAASJ,IAAT,GAAgB;AAC7BK,UAAQC,GAAR,CAAY,YAAZ,EAA0BN,IAA1B;;AAEAK,UAAQC,GAAR;AACAD,UAAQC,GAAR;AACAD,UAAQC,GAAR;AACAD,UAAQC,GAAR;AACAD,UAAQC,GAAR,CAAYJ,UAAZ;;AAEA,MAAI;AACF;AACA;AACAG,YAAQC,GAAR,CAAY,oBAAZ;AACAD,YAAQC,GAAR,CAAY,qBAAZ;AACAD,YAAQC,GAAR,CAAY,oBAAZ;AACAD,YAAQC,GAAR,CAAY,qBAAZ;AACAD,YAAQC,GAAR,CAAYH,aAAZ;;AAEAE,YAAQC,GAAR,CAAY,oBAAZ;AACAD,YAAQC,GAAR,CAAY,qBAAZ;AACAD,YAAQC,GAAR,CAAY,oBAAZ;AACAD,YAAQC,GAAR,CAAY,qBAAZ;AACAD,YAAQC,GAAR,CAAY,IAAIF,WAAJ,EAAZ;AACD,GAdD,CAcE,OAAOG,CAAP,EAAU,CAAE;AACf;;AAEM,SAASN,OAAT,GAAkB,CAAE;;AAE3B;AACAO,QAAQC,OAAR,GAAkBC,IAAlB,CAAuB,YAAM;AAC3BC,SAAOC,gBAAP,GAA0BZ,IAA1B;AACD,CAFD,E;;;;;;;;;;;;kBC/Ce,W;;;;;;;;;;;;;ACAR,IAAMa,0BAAS,SAAf,C;;;;;;;;;;;;ACAA,IAAMC,8BAAW,aAAjB,C;;;;;;;;;;;;kBCAQ,W;AACR,IAAMD,0BAAS,SAAf,C;;;;;;;;;;;;kBCDQ,Y;;;;;;;;;;;;;ACAR,IAAME,4BAAU,UAAhB,C;;;;;;;;;;;;ACAA,IAAMD,8BAAW,cAAjB,C;;;;;;;;;;;;kBCAQ,Y;AACR,IAAMD,0BAAS,UAAf,C;;;;;;;;;;;;kBCDQ,Y;;;;;;;;;;;;;ACAR,IAAMG,4BAAU,UAAhB,C;;;;;;;;;;;;ACAA,IAAMF,8BAAW,cAAjB,C;;;;;;;;;;;;kBCAQ,Y;AACR,IAAMD,0BAAS,UAAf,C;;;;;;;;;;;;kBCDiBI,Y;AAAT,SAASA,YAAT,GAAwB,CAAE","file":"fixtures/imported-bindings/output.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 10c0c41335992ab33745","import aDefault from \"./src/mod1\";\nimport { aNamed } from \"./src/mod2\";\nimport { original as anAliased } from \"./src/mod3\";\nimport * as aNamespace from \"./src/mod4\";\n\nimport aDefault2 from \"./src/mod5\";\nimport { aNamed2 } from \"./src/mod6\";\nimport { original as anAliased2 } from \"./src/mod7\";\nimport * as aNamespace2 from \"./src/mod8\";\n\nimport aDefault3 from \"./src/mod9\";\nimport { aNamed3 } from \"./src/mod10\";\nimport { original as anAliased3 } from \"./src/mod11\";\nimport * as aNamespace3 from \"./src/mod12\";\n\nimport optimizedOut from \"./src/optimized-out\";\noptimizedOut();\n\nexport default function root() {\n  console.log(\"pause here\", root);\n\n  console.log(aDefault);\n  console.log(anAliased);\n  console.log(aNamed);\n  console.log(anAliased);\n  console.log(aNamespace);\n\n  try {\n    // None of these are callable in this code, but we still want to make sure\n    // they map properly even if the only reference is in a call expressions.\n    console.log(aDefault2());\n    console.log(anAliased2());\n    console.log(aNamed2());\n    console.log(anAliased2());\n    console.log(aNamespace2());\n\n    console.log(new aDefault3());\n    console.log(new anAliased3());\n    console.log(new aNamed3());\n    console.log(new anAliased3());\n    console.log(new aNamespace3());\n  } catch (e) {}\n}\n\nexport function example(){}\n\n// The build harness sets the wrong global, so just override it.\nPromise.resolve().then(() => {\n  window.importedBindings = root;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/imported-bindings/input.js","export default \"a-default\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/imported-bindings/src/mod1.js","export const aNamed = \"a-named\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/imported-bindings/src/mod2.js","export const original = \"an-original\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/imported-bindings/src/mod3.js","export default \"a-default\";\nexport const aNamed = \"a-named\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/imported-bindings/src/mod4.js","export default \"a-default2\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/imported-bindings/src/mod5.js","export const aNamed2 = \"a-named2\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/imported-bindings/src/mod6.js","export const original = \"an-original2\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/imported-bindings/src/mod7.js","export default \"a-default2\";\nexport const aNamed = \"a-named2\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/imported-bindings/src/mod8.js","export default \"a-default3\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/imported-bindings/src/mod9.js","export const aNamed3 = \"a-named3\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/imported-bindings/src/mod10.js","export const original = \"an-original3\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/imported-bindings/src/mod11.js","export default \"a-default3\";\nexport const aNamed = \"a-named3\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/imported-bindings/src/mod12.js","export default function optimizedOut() {}\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/imported-bindings/src/optimized-out.js"],"sourceRoot":""}
\ No newline at end of file
--- a/devtools/client/debugger/new/test/mochitest/examples/babel/fixtures/webpack-modules-es6/input.js
+++ b/devtools/client/debugger/new/test/mochitest/examples/babel/fixtures/webpack-modules-es6/input.js
@@ -37,12 +37,14 @@ export default function root() {
     console.log(new aDefault3());
     console.log(new anAliased3());
     console.log(new aNamed3());
     console.log(new anAliased3());
     console.log(new aNamespace3());
   } catch (e) {}
 }
 
+export function example(){}
+
 // The build harness sets the wrong global, so just override it.
 Promise.resolve().then(() => {
   window.webpackModulesEs6 = root;
 });
--- a/devtools/client/debugger/new/test/mochitest/examples/babel/fixtures/webpack-modules-es6/output.js
+++ b/devtools/client/debugger/new/test/mochitest/examples/babel/fixtures/webpack-modules-es6/output.js
@@ -66,16 +66,17 @@ var webpackModulesEs6 =
 /************************************************************************/
 /******/ ([
 /* 0 */
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
 Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
 /* harmony export (immutable) */ __webpack_exports__["default"] = root;
+/* harmony export (immutable) */ __webpack_exports__["example"] = example;
 /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_mod1__ = __webpack_require__(1);
 /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_mod2__ = __webpack_require__(2);
 /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_mod3__ = __webpack_require__(3);
 /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__src_mod4__ = __webpack_require__(4);
 /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__src_mod5__ = __webpack_require__(5);
 /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__src_mod6__ = __webpack_require__(6);
 /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__src_mod7__ = __webpack_require__(7);
 /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__src_mod8__ = __webpack_require__(8);
@@ -123,16 +124,18 @@ function root() {
     console.log(new __WEBPACK_IMPORTED_MODULE_8__src_mod9__["a" /* default */]());
     console.log(new __WEBPACK_IMPORTED_MODULE_10__src_mod11__["a" /* original */]());
     console.log(new __WEBPACK_IMPORTED_MODULE_9__src_mod10__["a" /* aNamed3 */]());
     console.log(new __WEBPACK_IMPORTED_MODULE_10__src_mod11__["a" /* original */]());
     console.log(new __WEBPACK_IMPORTED_MODULE_11__src_mod12__());
   } catch (e) {}
 }
 
+function example() {}
+
 // The build harness sets the wrong global, so just override it.
 Promise.resolve().then(() => {
   window.webpackModulesEs6 = root;
 });
 
 /***/ }),
 /* 1 */
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
--- a/devtools/client/debugger/new/test/mochitest/examples/babel/fixtures/webpack-modules-es6/output.js.map
+++ b/devtools/client/debugger/new/test/mochitest/examples/babel/fixtures/webpack-modules-es6/output.js.map
@@ -1,1 +1,1 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap 40e34282a100f811763e","webpack:///./fixtures/webpack-modules-es6/input.js","webpack:///./fixtures/webpack-modules-es6/src/mod1.js","webpack:///./fixtures/webpack-modules-es6/src/mod2.js","webpack:///./fixtures/webpack-modules-es6/src/mod3.js","webpack:///./fixtures/webpack-modules-es6/src/mod4.js","webpack:///./fixtures/webpack-modules-es6/src/mod5.js","webpack:///./fixtures/webpack-modules-es6/src/mod6.js","webpack:///./fixtures/webpack-modules-es6/src/mod7.js","webpack:///./fixtures/webpack-modules-es6/src/mod8.js","webpack:///./fixtures/webpack-modules-es6/src/mod9.js","webpack:///./fixtures/webpack-modules-es6/src/mod10.js","webpack:///./fixtures/webpack-modules-es6/src/mod11.js","webpack:///./fixtures/webpack-modules-es6/src/mod12.js","webpack:///./fixtures/webpack-modules-es6/src/optimized-out.js"],"names":["optimizedOut","root","console","log","aDefault2","anAliased2","aNamed2","aNamespace2","e","Promise","resolve","then","window","webpackModulesEs6","aNamed","original","aNamed3"],"mappings":";;AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;;AC7DA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,4EAAAA;;AAEe,SAASC,IAAT,GAAgB;AAC7BC,UAAQC,GAAR,CAAY,YAAZ,EAA0BF,IAA1B;;AAEAC,UAAQC,GAAR,CAAY,0DAAZ;AACAD,UAAQC,GAAR,CAAY,2DAAZ;AACAD,UAAQC,GAAR,CAAY,yDAAZ;AACAD,UAAQC,GAAR,CAAY,2DAAZ;AACAD,UAAQC,GAAR,CAAY,uCAAZ;;AAEA,MAAI;AACF;AACA;AACAD,YAAQC,GAAR,CAAY,kEAAAC,EAAZ;AACAF,YAAQC,GAAR,CAAY,mEAAAE,EAAZ;AACAH,YAAQC,GAAR,CAAY,kEAAAG,EAAZ;AACAJ,YAAQC,GAAR,CAAY,mEAAAE,EAAZ;AACAH,YAAQC,GAAR,CAAY,uCAAAI,EAAZ;;AAEAL,YAAQC,GAAR,CAAY,IAAI,0DAAJ,EAAZ;AACAD,YAAQC,GAAR,CAAY,IAAI,6DAAJ,EAAZ;AACAD,YAAQC,GAAR,CAAY,IAAI,2DAAJ,EAAZ;AACAD,YAAQC,GAAR,CAAY,IAAI,6DAAJ,EAAZ;AACAD,YAAQC,GAAR,CAAY,IAAI,yCAAJ,EAAZ;AACD,GAdD,CAcE,OAAOK,CAAP,EAAU,CAAE;AACf;;AAED;AACAC,QAAQC,OAAR,GAAkBC,IAAlB,CAAuB,MAAM;AAC3BC,SAAOC,iBAAP,GAA2BZ,IAA3B;AACD,CAFD,E;;;;;;;AC7CA,yDAAe,WAAf,E;;;;;;;ACAO,MAAMa,SAAS,SAAf,C;;;;;;;;;ACAA,MAAMC,WAAW,aAAjB,C;;;;;;;;;;ACAP,+DAAe,WAAf;AACO,MAAMD,SAAS,SAAf,C;;;;;;;;;ACDP,yDAAe,YAAf,E;;;;;;;ACAO,MAAMR,UAAU,UAAhB,C;;;;;;;;;ACAA,MAAMS,WAAW,cAAjB,C;;;;;;;;;;ACAP,+DAAe,YAAf;AACO,MAAMD,SAAS,UAAf,C;;;;;;;;;ACDP,yDAAe,YAAf,E;;;;;;;ACAO,MAAME,UAAU,UAAhB,C;;;;;;;;;ACAA,MAAMD,WAAW,cAAjB,C;;;;;;;;;;ACAP,+DAAe,YAAf;AACO,MAAMD,SAAS,UAAf,C;;;;;;;;;;ACDQ,SAASd,YAAT,GAAwB,CAAE,C","file":"fixtures/webpack-modules-es6/output.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 40e34282a100f811763e","import aDefault from \"./src/mod1\";\nimport { aNamed } from \"./src/mod2\";\nimport { original as anAliased } from \"./src/mod3\";\nimport * as aNamespace from \"./src/mod4\";\n\nimport aDefault2 from \"./src/mod5\";\nimport { aNamed2 } from \"./src/mod6\";\nimport { original as anAliased2 } from \"./src/mod7\";\nimport * as aNamespace2 from \"./src/mod8\";\n\nimport aDefault3 from \"./src/mod9\";\nimport { aNamed3 } from \"./src/mod10\";\nimport { original as anAliased3 } from \"./src/mod11\";\nimport * as aNamespace3 from \"./src/mod12\";\n\nimport optimizedOut from \"./src/optimized-out\";\noptimizedOut();\n\nexport default function root() {\n  console.log(\"pause here\", root);\n\n  console.log(aDefault);\n  console.log(anAliased);\n  console.log(aNamed);\n  console.log(anAliased);\n  console.log(aNamespace);\n\n  try {\n    // None of these are callable in this code, but we still want to make sure\n    // they map properly even if the only reference is in a call expressions.\n    console.log(aDefault2());\n    console.log(anAliased2());\n    console.log(aNamed2());\n    console.log(anAliased2());\n    console.log(aNamespace2());\n\n    console.log(new aDefault3());\n    console.log(new anAliased3());\n    console.log(new aNamed3());\n    console.log(new anAliased3());\n    console.log(new aNamespace3());\n  } catch (e) {}\n}\n\n// The build harness sets the wrong global, so just override it.\nPromise.resolve().then(() => {\n  window.webpackModulesEs6 = root;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules-es6/input.js","export default \"a-default\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules-es6/src/mod1.js","export const aNamed = \"a-named\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules-es6/src/mod2.js","export const original = \"an-original\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules-es6/src/mod3.js","export default \"a-default\";\nexport const aNamed = \"a-named\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules-es6/src/mod4.js","export default \"a-default2\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules-es6/src/mod5.js","export const aNamed2 = \"a-named2\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules-es6/src/mod6.js","export const original = \"an-original2\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules-es6/src/mod7.js","export default \"a-default2\";\nexport const aNamed = \"a-named2\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules-es6/src/mod8.js","export default \"a-default3\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules-es6/src/mod9.js","export const aNamed3 = \"a-named3\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules-es6/src/mod10.js","export const original = \"an-original3\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules-es6/src/mod11.js","export default \"a-default3\";\nexport const aNamed = \"a-named3\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules-es6/src/mod12.js","export default function optimizedOut() {}\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules-es6/src/optimized-out.js"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap ce5a3febd2184465bc3b","webpack:///./fixtures/webpack-modules-es6/input.js","webpack:///./fixtures/webpack-modules-es6/src/mod1.js","webpack:///./fixtures/webpack-modules-es6/src/mod2.js","webpack:///./fixtures/webpack-modules-es6/src/mod3.js","webpack:///./fixtures/webpack-modules-es6/src/mod4.js","webpack:///./fixtures/webpack-modules-es6/src/mod5.js","webpack:///./fixtures/webpack-modules-es6/src/mod6.js","webpack:///./fixtures/webpack-modules-es6/src/mod7.js","webpack:///./fixtures/webpack-modules-es6/src/mod8.js","webpack:///./fixtures/webpack-modules-es6/src/mod9.js","webpack:///./fixtures/webpack-modules-es6/src/mod10.js","webpack:///./fixtures/webpack-modules-es6/src/mod11.js","webpack:///./fixtures/webpack-modules-es6/src/mod12.js","webpack:///./fixtures/webpack-modules-es6/src/optimized-out.js"],"names":["optimizedOut","root","console","log","aDefault2","anAliased2","aNamed2","aNamespace2","e","example","Promise","resolve","then","window","webpackModulesEs6","aNamed","original","aNamed3"],"mappings":";;AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AC7DA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,4EAAAA;;AAEe,SAASC,IAAT,GAAgB;AAC7BC,UAAQC,GAAR,CAAY,YAAZ,EAA0BF,IAA1B;;AAEAC,UAAQC,GAAR,CAAY,0DAAZ;AACAD,UAAQC,GAAR,CAAY,2DAAZ;AACAD,UAAQC,GAAR,CAAY,yDAAZ;AACAD,UAAQC,GAAR,CAAY,2DAAZ;AACAD,UAAQC,GAAR,CAAY,uCAAZ;;AAEA,MAAI;AACF;AACA;AACAD,YAAQC,GAAR,CAAY,kEAAAC,EAAZ;AACAF,YAAQC,GAAR,CAAY,mEAAAE,EAAZ;AACAH,YAAQC,GAAR,CAAY,kEAAAG,EAAZ;AACAJ,YAAQC,GAAR,CAAY,mEAAAE,EAAZ;AACAH,YAAQC,GAAR,CAAY,uCAAAI,EAAZ;;AAEAL,YAAQC,GAAR,CAAY,IAAI,0DAAJ,EAAZ;AACAD,YAAQC,GAAR,CAAY,IAAI,6DAAJ,EAAZ;AACAD,YAAQC,GAAR,CAAY,IAAI,2DAAJ,EAAZ;AACAD,YAAQC,GAAR,CAAY,IAAI,6DAAJ,EAAZ;AACAD,YAAQC,GAAR,CAAY,IAAI,yCAAJ,EAAZ;AACD,GAdD,CAcE,OAAOK,CAAP,EAAU,CAAE;AACf;;AAEM,SAASC,OAAT,GAAkB,CAAE;;AAE3B;AACAC,QAAQC,OAAR,GAAkBC,IAAlB,CAAuB,MAAM;AAC3BC,SAAOC,iBAAP,GAA2Bb,IAA3B;AACD,CAFD,E;;;;;;;AC/CA,yDAAe,WAAf,E;;;;;;;ACAO,MAAMc,SAAS,SAAf,C;;;;;;;;;ACAA,MAAMC,WAAW,aAAjB,C;;;;;;;;;;ACAP,+DAAe,WAAf;AACO,MAAMD,SAAS,SAAf,C;;;;;;;;;ACDP,yDAAe,YAAf,E;;;;;;;ACAO,MAAMT,UAAU,UAAhB,C;;;;;;;;;ACAA,MAAMU,WAAW,cAAjB,C;;;;;;;;;;ACAP,+DAAe,YAAf;AACO,MAAMD,SAAS,UAAf,C;;;;;;;;;ACDP,yDAAe,YAAf,E;;;;;;;ACAO,MAAME,UAAU,UAAhB,C;;;;;;;;;ACAA,MAAMD,WAAW,cAAjB,C;;;;;;;;;;ACAP,+DAAe,YAAf;AACO,MAAMD,SAAS,UAAf,C;;;;;;;;;;ACDQ,SAASf,YAAT,GAAwB,CAAE,C","file":"fixtures/webpack-modules-es6/output.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap ce5a3febd2184465bc3b","import aDefault from \"./src/mod1\";\nimport { aNamed } from \"./src/mod2\";\nimport { original as anAliased } from \"./src/mod3\";\nimport * as aNamespace from \"./src/mod4\";\n\nimport aDefault2 from \"./src/mod5\";\nimport { aNamed2 } from \"./src/mod6\";\nimport { original as anAliased2 } from \"./src/mod7\";\nimport * as aNamespace2 from \"./src/mod8\";\n\nimport aDefault3 from \"./src/mod9\";\nimport { aNamed3 } from \"./src/mod10\";\nimport { original as anAliased3 } from \"./src/mod11\";\nimport * as aNamespace3 from \"./src/mod12\";\n\nimport optimizedOut from \"./src/optimized-out\";\noptimizedOut();\n\nexport default function root() {\n  console.log(\"pause here\", root);\n\n  console.log(aDefault);\n  console.log(anAliased);\n  console.log(aNamed);\n  console.log(anAliased);\n  console.log(aNamespace);\n\n  try {\n    // None of these are callable in this code, but we still want to make sure\n    // they map properly even if the only reference is in a call expressions.\n    console.log(aDefault2());\n    console.log(anAliased2());\n    console.log(aNamed2());\n    console.log(anAliased2());\n    console.log(aNamespace2());\n\n    console.log(new aDefault3());\n    console.log(new anAliased3());\n    console.log(new aNamed3());\n    console.log(new anAliased3());\n    console.log(new aNamespace3());\n  } catch (e) {}\n}\n\nexport function example(){}\n\n// The build harness sets the wrong global, so just override it.\nPromise.resolve().then(() => {\n  window.webpackModulesEs6 = root;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules-es6/input.js","export default \"a-default\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules-es6/src/mod1.js","export const aNamed = \"a-named\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules-es6/src/mod2.js","export const original = \"an-original\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules-es6/src/mod3.js","export default \"a-default\";\nexport const aNamed = \"a-named\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules-es6/src/mod4.js","export default \"a-default2\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules-es6/src/mod5.js","export const aNamed2 = \"a-named2\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules-es6/src/mod6.js","export const original = \"an-original2\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules-es6/src/mod7.js","export default \"a-default2\";\nexport const aNamed = \"a-named2\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules-es6/src/mod8.js","export default \"a-default3\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules-es6/src/mod9.js","export const aNamed3 = \"a-named3\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules-es6/src/mod10.js","export const original = \"an-original3\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules-es6/src/mod11.js","export default \"a-default3\";\nexport const aNamed = \"a-named3\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules-es6/src/mod12.js","export default function optimizedOut() {}\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules-es6/src/optimized-out.js"],"sourceRoot":""}
\ No newline at end of file
--- a/devtools/client/debugger/new/test/mochitest/examples/babel/fixtures/webpack-modules/input.js
+++ b/devtools/client/debugger/new/test/mochitest/examples/babel/fixtures/webpack-modules/input.js
@@ -37,12 +37,14 @@ export default function root() {
     console.log(new aDefault3());
     console.log(new anAliased3());
     console.log(new aNamed3());
     console.log(new anAliased3());
     console.log(new aNamespace3());
   } catch (e) {}
 }
 
+export function example(){}
+
 // The build harness sets the wrong global, so just override it.
 Promise.resolve().then(() => {
   window.webpackModules = root;
 });
--- a/devtools/client/debugger/new/test/mochitest/examples/babel/fixtures/webpack-modules/output.js
+++ b/devtools/client/debugger/new/test/mochitest/examples/babel/fixtures/webpack-modules/output.js
@@ -66,16 +66,17 @@ var webpackModules =
 /************************************************************************/
 /******/ ([
 /* 0 */
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
 Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
 /* harmony export (immutable) */ __webpack_exports__["default"] = root;
+/* harmony export (immutable) */ __webpack_exports__["example"] = example;
 /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_mod1__ = __webpack_require__(1);
 /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_mod2__ = __webpack_require__(2);
 /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_mod3__ = __webpack_require__(3);
 /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__src_mod4__ = __webpack_require__(4);
 /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__src_mod5__ = __webpack_require__(5);
 /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__src_mod6__ = __webpack_require__(6);
 /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__src_mod7__ = __webpack_require__(7);
 /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__src_mod8__ = __webpack_require__(8);
@@ -123,16 +124,18 @@ function root() {
     console.log(new __WEBPACK_IMPORTED_MODULE_8__src_mod9__["a" /* default */]());
     console.log(new __WEBPACK_IMPORTED_MODULE_10__src_mod11__["a" /* original */]());
     console.log(new __WEBPACK_IMPORTED_MODULE_9__src_mod10__["a" /* aNamed3 */]());
     console.log(new __WEBPACK_IMPORTED_MODULE_10__src_mod11__["a" /* original */]());
     console.log(new __WEBPACK_IMPORTED_MODULE_11__src_mod12__());
   } catch (e) {}
 }
 
+function example() {}
+
 // The build harness sets the wrong global, so just override it.
 Promise.resolve().then(function () {
   window.webpackModules = root;
 });
 
 /***/ }),
 /* 1 */
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
--- a/devtools/client/debugger/new/test/mochitest/examples/babel/fixtures/webpack-modules/output.js.map
+++ b/devtools/client/debugger/new/test/mochitest/examples/babel/fixtures/webpack-modules/output.js.map
@@ -1,1 +1,1 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap 597c2efe7e8569674750","webpack:///./fixtures/webpack-modules/input.js","webpack:///./fixtures/webpack-modules/src/mod1.js","webpack:///./fixtures/webpack-modules/src/mod2.js","webpack:///./fixtures/webpack-modules/src/mod3.js","webpack:///./fixtures/webpack-modules/src/mod4.js","webpack:///./fixtures/webpack-modules/src/mod5.js","webpack:///./fixtures/webpack-modules/src/mod6.js","webpack:///./fixtures/webpack-modules/src/mod7.js","webpack:///./fixtures/webpack-modules/src/mod8.js","webpack:///./fixtures/webpack-modules/src/mod9.js","webpack:///./fixtures/webpack-modules/src/mod10.js","webpack:///./fixtures/webpack-modules/src/mod11.js","webpack:///./fixtures/webpack-modules/src/mod12.js","webpack:///./fixtures/webpack-modules/src/optimized-out.js"],"names":["optimizedOut","root","console","log","aDefault2","anAliased2","aNamed2","aNamespace2","e","Promise","resolve","then","window","webpackModules","aNamed","original","aNamed3"],"mappings":";;AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;;AC7DA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,4EAAAA;;AAEe,SAASC,IAAT,GAAgB;AAC7BC,UAAQC,GAAR,CAAY,YAAZ,EAA0BF,IAA1B;;AAEAC,UAAQC,GAAR,CAAY,0DAAZ;AACAD,UAAQC,GAAR,CAAY,2DAAZ;AACAD,UAAQC,GAAR,CAAY,yDAAZ;AACAD,UAAQC,GAAR,CAAY,2DAAZ;AACAD,UAAQC,GAAR,CAAY,uCAAZ;;AAEA,MAAI;AACF;AACA;AACAD,YAAQC,GAAR,CAAY,kEAAAC,EAAZ;AACAF,YAAQC,GAAR,CAAY,mEAAAE,EAAZ;AACAH,YAAQC,GAAR,CAAY,kEAAAG,EAAZ;AACAJ,YAAQC,GAAR,CAAY,mEAAAE,EAAZ;AACAH,YAAQC,GAAR,CAAY,uCAAAI,EAAZ;;AAEAL,YAAQC,GAAR,CAAY,IAAI,0DAAJ,EAAZ;AACAD,YAAQC,GAAR,CAAY,IAAI,6DAAJ,EAAZ;AACAD,YAAQC,GAAR,CAAY,IAAI,2DAAJ,EAAZ;AACAD,YAAQC,GAAR,CAAY,IAAI,6DAAJ,EAAZ;AACAD,YAAQC,GAAR,CAAY,IAAI,yCAAJ,EAAZ;AACD,GAdD,CAcE,OAAOK,CAAP,EAAU,CAAE;AACf;;AAED;AACAC,QAAQC,OAAR,GAAkBC,IAAlB,CAAuB,YAAM;AAC3BC,SAAOC,cAAP,GAAwBZ,IAAxB;AACD,CAFD,E;;;;;;;AC7CA,yDAAe,WAAf,E;;;;;;;;ACAO,IAAMa,SAAS,SAAf,C;;;;;;;;ACAA,IAAMC,WAAW,aAAjB,C;;;;;;;;;ACAP,+DAAe,WAAf;AACO,IAAMD,SAAS,SAAf,C;;;;;;;ACDP,yDAAe,YAAf,E;;;;;;;;ACAO,IAAMR,UAAU,UAAhB,C;;;;;;;;ACAA,IAAMS,WAAW,cAAjB,C;;;;;;;;;ACAP,+DAAe,YAAf;AACO,IAAMD,SAAS,UAAf,C;;;;;;;ACDP,yDAAe,YAAf,E;;;;;;;;ACAO,IAAME,UAAU,UAAhB,C;;;;;;;;ACAA,IAAMD,WAAW,cAAjB,C;;;;;;;;;ACAP,+DAAe,YAAf;AACO,IAAMD,SAAS,UAAf,C;;;;;;;;ACDQ,SAASd,YAAT,GAAwB,CAAE,C","file":"fixtures/webpack-modules/output.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 597c2efe7e8569674750","import aDefault from \"./src/mod1\";\nimport { aNamed } from \"./src/mod2\";\nimport { original as anAliased } from \"./src/mod3\";\nimport * as aNamespace from \"./src/mod4\";\n\nimport aDefault2 from \"./src/mod5\";\nimport { aNamed2 } from \"./src/mod6\";\nimport { original as anAliased2 } from \"./src/mod7\";\nimport * as aNamespace2 from \"./src/mod8\";\n\nimport aDefault3 from \"./src/mod9\";\nimport { aNamed3 } from \"./src/mod10\";\nimport { original as anAliased3 } from \"./src/mod11\";\nimport * as aNamespace3 from \"./src/mod12\";\n\nimport optimizedOut from \"./src/optimized-out\";\noptimizedOut();\n\nexport default function root() {\n  console.log(\"pause here\", root);\n\n  console.log(aDefault);\n  console.log(anAliased);\n  console.log(aNamed);\n  console.log(anAliased);\n  console.log(aNamespace);\n\n  try {\n    // None of these are callable in this code, but we still want to make sure\n    // they map properly even if the only reference is in a call expressions.\n    console.log(aDefault2());\n    console.log(anAliased2());\n    console.log(aNamed2());\n    console.log(anAliased2());\n    console.log(aNamespace2());\n\n    console.log(new aDefault3());\n    console.log(new anAliased3());\n    console.log(new aNamed3());\n    console.log(new anAliased3());\n    console.log(new aNamespace3());\n  } catch (e) {}\n}\n\n// The build harness sets the wrong global, so just override it.\nPromise.resolve().then(() => {\n  window.webpackModules = root;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules/input.js","export default \"a-default\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules/src/mod1.js","export const aNamed = \"a-named\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules/src/mod2.js","export const original = \"an-original\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules/src/mod3.js","export default \"a-default\";\nexport const aNamed = \"a-named\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules/src/mod4.js","export default \"a-default2\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules/src/mod5.js","export const aNamed2 = \"a-named2\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules/src/mod6.js","export const original = \"an-original2\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules/src/mod7.js","export default \"a-default2\";\nexport const aNamed = \"a-named2\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules/src/mod8.js","export default \"a-default3\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules/src/mod9.js","export const aNamed3 = \"a-named3\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules/src/mod10.js","export const original = \"an-original3\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules/src/mod11.js","export default \"a-default3\";\nexport const aNamed = \"a-named3\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules/src/mod12.js","export default function optimizedOut() {}\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules/src/optimized-out.js"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap bc0f05c10dc0e0831af0","webpack:///./fixtures/webpack-modules/input.js","webpack:///./fixtures/webpack-modules/src/mod1.js","webpack:///./fixtures/webpack-modules/src/mod2.js","webpack:///./fixtures/webpack-modules/src/mod3.js","webpack:///./fixtures/webpack-modules/src/mod4.js","webpack:///./fixtures/webpack-modules/src/mod5.js","webpack:///./fixtures/webpack-modules/src/mod6.js","webpack:///./fixtures/webpack-modules/src/mod7.js","webpack:///./fixtures/webpack-modules/src/mod8.js","webpack:///./fixtures/webpack-modules/src/mod9.js","webpack:///./fixtures/webpack-modules/src/mod10.js","webpack:///./fixtures/webpack-modules/src/mod11.js","webpack:///./fixtures/webpack-modules/src/mod12.js","webpack:///./fixtures/webpack-modules/src/optimized-out.js"],"names":["optimizedOut","root","console","log","aDefault2","anAliased2","aNamed2","aNamespace2","e","example","Promise","resolve","then","window","webpackModules","aNamed","original","aNamed3"],"mappings":";;AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AC7DA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,4EAAAA;;AAEe,SAASC,IAAT,GAAgB;AAC7BC,UAAQC,GAAR,CAAY,YAAZ,EAA0BF,IAA1B;;AAEAC,UAAQC,GAAR,CAAY,0DAAZ;AACAD,UAAQC,GAAR,CAAY,2DAAZ;AACAD,UAAQC,GAAR,CAAY,yDAAZ;AACAD,UAAQC,GAAR,CAAY,2DAAZ;AACAD,UAAQC,GAAR,CAAY,uCAAZ;;AAEA,MAAI;AACF;AACA;AACAD,YAAQC,GAAR,CAAY,kEAAAC,EAAZ;AACAF,YAAQC,GAAR,CAAY,mEAAAE,EAAZ;AACAH,YAAQC,GAAR,CAAY,kEAAAG,EAAZ;AACAJ,YAAQC,GAAR,CAAY,mEAAAE,EAAZ;AACAH,YAAQC,GAAR,CAAY,uCAAAI,EAAZ;;AAEAL,YAAQC,GAAR,CAAY,IAAI,0DAAJ,EAAZ;AACAD,YAAQC,GAAR,CAAY,IAAI,6DAAJ,EAAZ;AACAD,YAAQC,GAAR,CAAY,IAAI,2DAAJ,EAAZ;AACAD,YAAQC,GAAR,CAAY,IAAI,6DAAJ,EAAZ;AACAD,YAAQC,GAAR,CAAY,IAAI,yCAAJ,EAAZ;AACD,GAdD,CAcE,OAAOK,CAAP,EAAU,CAAE;AACf;;AAEM,SAASC,OAAT,GAAkB,CAAE;;AAE3B;AACAC,QAAQC,OAAR,GAAkBC,IAAlB,CAAuB,YAAM;AAC3BC,SAAOC,cAAP,GAAwBb,IAAxB;AACD,CAFD,E;;;;;;;AC/CA,yDAAe,WAAf,E;;;;;;;;ACAO,IAAMc,SAAS,SAAf,C;;;;;;;;ACAA,IAAMC,WAAW,aAAjB,C;;;;;;;;;ACAP,+DAAe,WAAf;AACO,IAAMD,SAAS,SAAf,C;;;;;;;ACDP,yDAAe,YAAf,E;;;;;;;;ACAO,IAAMT,UAAU,UAAhB,C;;;;;;;;ACAA,IAAMU,WAAW,cAAjB,C;;;;;;;;;ACAP,+DAAe,YAAf;AACO,IAAMD,SAAS,UAAf,C;;;;;;;ACDP,yDAAe,YAAf,E;;;;;;;;ACAO,IAAME,UAAU,UAAhB,C;;;;;;;;ACAA,IAAMD,WAAW,cAAjB,C;;;;;;;;;ACAP,+DAAe,YAAf;AACO,IAAMD,SAAS,UAAf,C;;;;;;;;ACDQ,SAASf,YAAT,GAAwB,CAAE,C","file":"fixtures/webpack-modules/output.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap bc0f05c10dc0e0831af0","import aDefault from \"./src/mod1\";\nimport { aNamed } from \"./src/mod2\";\nimport { original as anAliased } from \"./src/mod3\";\nimport * as aNamespace from \"./src/mod4\";\n\nimport aDefault2 from \"./src/mod5\";\nimport { aNamed2 } from \"./src/mod6\";\nimport { original as anAliased2 } from \"./src/mod7\";\nimport * as aNamespace2 from \"./src/mod8\";\n\nimport aDefault3 from \"./src/mod9\";\nimport { aNamed3 } from \"./src/mod10\";\nimport { original as anAliased3 } from \"./src/mod11\";\nimport * as aNamespace3 from \"./src/mod12\";\n\nimport optimizedOut from \"./src/optimized-out\";\noptimizedOut();\n\nexport default function root() {\n  console.log(\"pause here\", root);\n\n  console.log(aDefault);\n  console.log(anAliased);\n  console.log(aNamed);\n  console.log(anAliased);\n  console.log(aNamespace);\n\n  try {\n    // None of these are callable in this code, but we still want to make sure\n    // they map properly even if the only reference is in a call expressions.\n    console.log(aDefault2());\n    console.log(anAliased2());\n    console.log(aNamed2());\n    console.log(anAliased2());\n    console.log(aNamespace2());\n\n    console.log(new aDefault3());\n    console.log(new anAliased3());\n    console.log(new aNamed3());\n    console.log(new anAliased3());\n    console.log(new aNamespace3());\n  } catch (e) {}\n}\n\nexport function example(){}\n\n// The build harness sets the wrong global, so just override it.\nPromise.resolve().then(() => {\n  window.webpackModules = root;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules/input.js","export default \"a-default\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules/src/mod1.js","export const aNamed = \"a-named\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules/src/mod2.js","export const original = \"an-original\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules/src/mod3.js","export default \"a-default\";\nexport const aNamed = \"a-named\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules/src/mod4.js","export default \"a-default2\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules/src/mod5.js","export const aNamed2 = \"a-named2\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules/src/mod6.js","export const original = \"an-original2\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules/src/mod7.js","export default \"a-default2\";\nexport const aNamed = \"a-named2\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules/src/mod8.js","export default \"a-default3\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules/src/mod9.js","export const aNamed3 = \"a-named3\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules/src/mod10.js","export const original = \"an-original3\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules/src/mod11.js","export default \"a-default3\";\nexport const aNamed = \"a-named3\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules/src/mod12.js","export default function optimizedOut() {}\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/webpack-modules/src/optimized-out.js"],"sourceRoot":""}
\ No newline at end of file
--- a/devtools/client/debugger/new/test/mochitest/examples/babel/webpack.config.js
+++ b/devtools/client/debugger/new/test/mochitest/examples/babel/webpack.config.js
@@ -1,24 +1,26 @@
 const fs = require("fs");
 const path = require("path");
 const _ = require("lodash");
 
 const fixtures = path.join(__dirname, "fixtures");
 
 const tests = fs.readdirSync(fixtures).map(name => {
+  if (name[0] === ".") return;
+
   const dirname = path.relative(__dirname, path.join(fixtures, name));
 
   return {
     name: _.camelCase(name),
     dirname,
     input: `./${path.join(dirname, "input.js")}`,
     output: path.join(dirname, "output.js")
   };
-});
+}).filter(Boolean);
 
 const html = path.join(__dirname, "..", "doc-babel.html");
 
 fs.writeFileSync(
   html,
   fs.readFileSync(html, "utf8").replace(
     /\n\s*<!-- INJECTED-START[\s\S]*INJECTED-END -->\n/,
     `
--- a/devtools/client/jar.mn
+++ b/devtools/client/jar.mn
@@ -267,16 +267,17 @@ devtools.jar:
 
     # Debugger
     skin/images/debugger/arrow.svg (themes/images/debugger/arrow.svg)
     skin/images/debugger/back.svg (themes/images/debugger/back.svg)
     skin/images/debugger/blackBox.svg (themes/images/debugger/blackBox.svg)
     skin/images/debugger/breakpoint.svg (themes/images/debugger/breakpoint.svg)
     skin/images/debugger/close.svg (themes/images/debugger/close.svg)
     skin/images/debugger/coffeescript.svg (themes/images/debugger/coffeescript.svg)
+    skin/images/debugger/disable-pausing.svg (themes/images/debugger/disable-pausing.svg)
     skin/images/debugger/domain.svg (themes/images/debugger/domain.svg)
     skin/images/debugger/extension.svg (themes/images/debugger/extension.svg)
     skin/images/debugger/file.svg (themes/images/debugger/file.svg)
     skin/images/debugger/folder.svg (themes/images/debugger/folder.svg)
     skin/images/debugger/forward.svg (themes/images/debugger/forward.svg)
     skin/images/debugger/javascript.svg (themes/images/debugger/javascript.svg)
     skin/images/debugger/pause.svg (themes/images/debugger/pause.svg)
     skin/images/debugger/prettyPrint.svg (themes/images/debugger/prettyPrint.svg)
--- a/devtools/client/locales/en-US/debugger.properties
+++ b/devtools/client/locales/en-US/debugger.properties
@@ -76,16 +76,20 @@ stepOverTooltip=Step over %S
 # LOCALIZATION NOTE (stepInTooltip): The label that is displayed on the
 # button that steps into a function call.
 stepInTooltip=Step in %S
 
 # LOCALIZATION NOTE (stepOutTooltip): The label that is displayed on the
 # button that steps out of a function call.
 stepOutTooltip=Step out %S
 
+# LOCALIZATION NOTE (skipPausingTooltip): The tooltip text for disabling all
+# breakpoints and pausing triggers
+skipPausingTooltip=Skip all pausing
+
 # LOCALIZATION NOTE (pauseButtonItem): The label that is displayed for the dropdown pause
 # list item when the debugger is in a running state.
 pauseButtonItem=Pause on Next Statement
 
 # LOCALIZATION NOTE (ignoreExceptionsItem): The pause on exceptions button description
 # when the debugger will not pause on exceptions.
 ignoreExceptionsItem=Ignore exceptions
 
--- a/devtools/client/preferences/debugger.js
+++ b/devtools/client/preferences/debugger.js
@@ -39,26 +39,28 @@ pref("devtools.debugger.end-panel-collap
 pref("devtools.debugger.tabs", "[]");
 pref("devtools.debugger.tabsBlackBoxed", "[]");
 pref("devtools.debugger.pending-selected-location", "{}");
 pref("devtools.debugger.pending-breakpoints", "{}");
 pref("devtools.debugger.expressions", "[]");
 pref("devtools.debugger.file-search-case-sensitive", false);
 pref("devtools.debugger.file-search-whole-word", false);
 pref("devtools.debugger.file-search-regex-match", false);
-pref("devtools.debugger.features.async-stepping", true);
 pref("devtools.debugger.project-directory-root", "");
+pref("devtools.debugger.skip-pausing", false);
 
 pref("devtools.debugger.features.wasm", true);
 pref("devtools.debugger.features.shortcuts", true);
 pref("devtools.debugger.features.root", true);
 pref("devtools.debugger.features.column-breakpoints", false);
 pref("devtools.debugger.features.chrome-scopes", false);
 pref("devtools.debugger.features.map-scopes", true);
 pref("devtools.debugger.features.remove-command-bar-options", false);
 pref("devtools.debugger.features.workers", true);
 pref("devtools.debugger.features.code-coverage", false);
 pref("devtools.debugger.features.event-listeners", false);
 pref("devtools.debugger.features.code-folding", false);
 pref("devtools.debugger.features.outline", true);
 pref("devtools.debugger.features.replay", false);
 pref("devtools.debugger.features.pause-points", true);
 pref("devtools.debugger.features.component-stack", false);
+pref("devtools.debugger.features.async-stepping", true);
+pref("devtools.debugger.features.skip-pausing", false);
new file mode 100644
--- /dev/null
+++ b/devtools/client/themes/images/debugger/disable-pausing.svg
@@ -0,0 +1,1 @@
+<svg height="16" viewBox="0 0 15 16" width="15" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" transform="translate(0 1)"><path d="m1.5 13.5 10-13" stroke="#000" stroke-linecap="square"/><path d="m7.58013626 3-.75408823 1h-4.82604803c-.53612439 0-.77556634.12770238-.9020017.32999894-.07178403.11485445-.0979983.24068295-.0979983.27000106v4.8c0 .02931811.02621427.15514661.0979983.27000106.12643536.20229656.36587731.32999894.9020017.32999894h.30151865l-.73328118.9724077c-1.56823747-.2118785-1.56823747-1.5724077-1.56823747-1.5724077v-4.8s0-1.6 2-1.6zm3.94638894.52652517 3.4734748 3.47347483-4 4h-5.10913424l.75408823-1h3.94083241l3-3-2.6672362-2.66723627z" fill="#000" fill-rule="nonzero"/></g></svg>
\ No newline at end of file