Bug 1479812 - Update Debugger Frontend v77. r=dwalsh
☠☠ backed out by 8a2c6fc4d09e ☠ ☠
authorJason Laster <jason.laster.11@gmail.com>
Wed, 01 Aug 2018 15:42:00 -0400
changeset 429718 6e508c90723834f3e242d06e063a114ea1bba637
parent 429717 bfa19e6f240792564d99c2f85c92354c0f1c84e4
child 429719 aee91e7da807e596dc18e0286500dcfd98b05c09
push id34372
push usernerli@mozilla.com
push dateThu, 02 Aug 2018 08:55:28 +0000
treeherdermozilla-central@bd79b07f57a3 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersdwalsh
bugs1479812
milestone63.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 1479812 - Update Debugger Frontend v77. r=dwalsh
devtools/client/debugger/new/README.mozilla
devtools/client/debugger/new/dist/debugger.css
devtools/client/debugger/new/src/actions/pause/pauseOnExceptions.js
devtools/client/debugger/new/src/actions/sources/newSources.js
devtools/client/debugger/new/src/actions/sources/prettyPrint.js
devtools/client/debugger/new/src/components/Editor/Tab.js
devtools/client/debugger/new/src/components/SecondaryPanes/Breakpoints/index.js
devtools/client/debugger/new/src/reducers/pending-breakpoints.js
devtools/client/debugger/new/src/utils/bootstrap.js
devtools/client/debugger/new/src/utils/source.js
devtools/client/debugger/new/test/mochitest/browser.ini
devtools/client/debugger/new/test/mochitest/browser_dbg-sourcemapped-breakpoint-console.js
devtools/client/debugger/new/test/mochitest/browser_dbg-sourcemapped-scopes.js
devtools/client/debugger/new/test/mochitest/browser_dbg-sourcemaps-bogus.js
devtools/client/debugger/new/test/mochitest/examples/doc-sourcemapped.html
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/build.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/parcel/index.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/parcel/package.json
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/parcel/yarn.lock
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/rollup-babel7/index.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/rollup-babel7/package.json
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/rollup-babel7/yarn.lock
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/webpack3-babel7/index.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/webpack3-babel7/package.json
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/webpack3-babel7/yarn.lock
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/webpack4-babel6/index.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/webpack4-babel6/package.json
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/webpack4-babel6/yarn.lock
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/webpack4-babel7/index.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/webpack4-babel7/package.json
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/webpack4-babel7/yarn.lock
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/webpack4/index.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/webpack4/package.json
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/webpack4/yarn.lock
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/babel-bindings-with-flow.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/babel-bindings-with-flow.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/babel-flowtype-bindings.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/babel-flowtype-bindings.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/classes.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/classes.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/esmodules-cjs.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/esmodules-cjs.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/esmodules-es6.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/esmodules-es6.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/esmodules.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/esmodules.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/eval-maps.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/eval-maps.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/for-loops.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/for-loops.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/for-of.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/for-of.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/functions.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/functions.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/lex-and-nonlex.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/lex-and-nonlex.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/line-start-bindings-es6.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/line-start-bindings-es6.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/modules-cjs.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/modules-cjs.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/out-of-order-declarations-cjs.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/out-of-order-declarations-cjs.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/shadowed-vars.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/shadowed-vars.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/step-over-for-of-array-closure.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/step-over-for-of-array-closure.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/step-over-for-of-array.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/step-over-for-of-array.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/step-over-for-of-closure.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/step-over-for-of-closure.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/step-over-for-of.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/step-over-for-of.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/step-over-function-params.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/step-over-function-params.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/step-over-regenerator-await.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/step-over-regenerator-await.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/switches.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/switches.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/this-arguments-bindings.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/this-arguments-bindings.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/try-catches.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/try-catches.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/type-module.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/type-module.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/type-script-cjs.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/type-script-cjs.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/typescript-classes.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/typescript-classes.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/webpack-functions.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/webpack-functions.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/webpack-line-mappings.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/parcel/webpack-line-mappings.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/babel-bindings-with-flow.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/babel-bindings-with-flow.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/babel-flowtype-bindings.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/babel-flowtype-bindings.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/classes.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/classes.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/esmodules-es6.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/esmodules-es6.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/esmodules.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/esmodules.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/eval-maps.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/eval-maps.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/for-loops.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/for-loops.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/for-of.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/for-of.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/functions.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/functions.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/lex-and-nonlex.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/lex-and-nonlex.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/line-start-bindings-es6.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/line-start-bindings-es6.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/shadowed-vars.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/shadowed-vars.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/step-over-for-of-array-closure.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/step-over-for-of-array-closure.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/step-over-for-of-array.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/step-over-for-of-array.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/step-over-for-of-closure.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/step-over-for-of-closure.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/step-over-for-of.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/step-over-for-of.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/step-over-function-params.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/step-over-function-params.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/step-over-regenerator-await.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/step-over-regenerator-await.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/switches.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/switches.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/this-arguments-bindings.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/this-arguments-bindings.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/try-catches.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/try-catches.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/type-module.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/type-module.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/webpack-functions.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/webpack-functions.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/webpack-line-mappings.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel7/webpack-line-mappings.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/babel-bindings-with-flow.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/babel-bindings-with-flow.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/babel-flowtype-bindings.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/babel-flowtype-bindings.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/classes.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/classes.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/esmodules-cjs.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/esmodules-cjs.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/esmodules-es6.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/esmodules-es6.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/esmodules.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/esmodules.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/eval-maps.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/eval-maps.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/for-loops.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/for-loops.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/for-of.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/for-of.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/functions.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/functions.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/lex-and-nonlex.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/lex-and-nonlex.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/line-start-bindings-es6.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/line-start-bindings-es6.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/modules-cjs.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/modules-cjs.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/out-of-order-declarations-cjs.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/out-of-order-declarations-cjs.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/shadowed-vars.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/shadowed-vars.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/step-over-for-of-array-closure.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/step-over-for-of-array-closure.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/step-over-for-of-array.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/step-over-for-of-array.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/step-over-for-of-closure.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/step-over-for-of-closure.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/step-over-for-of.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/step-over-for-of.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/step-over-function-params.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/step-over-function-params.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/step-over-regenerator-await.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/step-over-regenerator-await.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/switches.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/switches.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/this-arguments-bindings.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/this-arguments-bindings.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/try-catches.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/try-catches.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/type-module.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/type-module.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/type-script-cjs.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/type-script-cjs.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/webpack-functions.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/webpack-functions.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/webpack-line-mappings.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel7/webpack-line-mappings.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/babel-bindings-with-flow.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/babel-bindings-with-flow.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/babel-flowtype-bindings.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/babel-flowtype-bindings.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/classes.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/classes.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/esmodules-cjs.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/esmodules-cjs.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/esmodules-es6.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/esmodules-es6.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/esmodules.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/esmodules.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/eval-maps.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/eval-maps.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/for-loops.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/for-loops.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/for-of.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/for-of.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/functions.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/functions.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/lex-and-nonlex.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/lex-and-nonlex.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/line-start-bindings-es6.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/line-start-bindings-es6.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/modules-cjs.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/modules-cjs.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/out-of-order-declarations-cjs.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/out-of-order-declarations-cjs.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/shadowed-vars.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/shadowed-vars.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/step-over-for-of-array-closure.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/step-over-for-of-array-closure.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/step-over-for-of-array.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/step-over-for-of-array.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/step-over-for-of-closure.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/step-over-for-of-closure.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/step-over-for-of.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/step-over-for-of.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/step-over-function-params.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/step-over-function-params.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/step-over-regenerator-await.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/step-over-regenerator-await.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/switches.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/switches.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/this-arguments-bindings.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/this-arguments-bindings.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/try-catches.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/try-catches.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/type-module.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/type-module.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/type-script-cjs.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/type-script-cjs.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/webpack-functions.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/webpack-functions.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/webpack-line-mappings.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel6/webpack-line-mappings.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/babel-bindings-with-flow.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/babel-bindings-with-flow.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/babel-flowtype-bindings.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/babel-flowtype-bindings.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/classes.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/classes.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/esmodules-cjs.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/esmodules-cjs.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/esmodules-es6.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/esmodules-es6.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/esmodules.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/esmodules.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/eval-maps.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/eval-maps.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/for-loops.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/for-loops.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/for-of.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/for-of.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/functions.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/functions.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/lex-and-nonlex.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/lex-and-nonlex.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/line-start-bindings-es6.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/line-start-bindings-es6.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/modules-cjs.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/modules-cjs.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/out-of-order-declarations-cjs.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/out-of-order-declarations-cjs.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/shadowed-vars.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/shadowed-vars.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/step-over-for-of-array-closure.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/step-over-for-of-array-closure.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/step-over-for-of-array.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/step-over-for-of-array.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/step-over-for-of-closure.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/step-over-for-of-closure.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/step-over-for-of.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/step-over-for-of.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/step-over-function-params.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/step-over-function-params.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/step-over-regenerator-await.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/step-over-regenerator-await.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/switches.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/switches.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/this-arguments-bindings.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/this-arguments-bindings.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/try-catches.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/try-catches.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/type-module.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/type-module.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/type-script-cjs.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/type-script-cjs.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/webpack-functions.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/webpack-functions.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/webpack-line-mappings.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4-babel7/webpack-line-mappings.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/classes.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/classes.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/esmodules-cjs.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/esmodules-cjs.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/esmodules-es6.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/esmodules-es6.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/esmodules.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/esmodules.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/eval-maps.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/eval-maps.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/for-loops.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/for-loops.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/for-of.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/for-of.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/functions.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/functions.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/lex-and-nonlex.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/lex-and-nonlex.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/line-start-bindings-es6.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/line-start-bindings-es6.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/modules-cjs.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/modules-cjs.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/out-of-order-declarations-cjs.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/out-of-order-declarations-cjs.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/shadowed-vars.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/shadowed-vars.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/step-over-for-of-array-closure.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/step-over-for-of-array-closure.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/step-over-for-of-array.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/step-over-for-of-array.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/step-over-for-of-closure.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/step-over-for-of-closure.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/step-over-for-of.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/step-over-for-of.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/step-over-function-params.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/step-over-function-params.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/step-over-regenerator-await.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/step-over-regenerator-await.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/switches.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/switches.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/this-arguments-bindings.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/this-arguments-bindings.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/try-catches.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/try-catches.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/type-module.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/type-module.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/type-script-cjs.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/type-script-cjs.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/typescript-classes.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/typescript-classes.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/webpack-functions.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/webpack-functions.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/webpack-line-mappings.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack4/webpack-line-mappings.js.map
devtools/client/shared/components/reps/reps.js
--- 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 76
+Version 77
 
-Comparison: https://github.com/devtools-html/debugger.html/compare/release-75...release-76
+Comparison: https://github.com/devtools-html/debugger.html/compare/release-76...release-77
 
 Packages:
 - babel-plugin-transform-es2015-modules-commonjs @6.26.2
 - babel-preset-react @6.24.1
 - react @16.4.1
 - react-dom @16.4.1
 - webpack @3.11.0
--- a/devtools/client/debugger/new/dist/debugger.css
+++ b/devtools/client/debugger/new/dist/debugger.css
@@ -1507,16 +1507,17 @@ html .toggle-button.end.vertical svg {
 
 .source-outline-tabs .tab.active path,
 .source-outline-tabs .tab:hover path {
   fill: var(--theme-body-color);
 }
 
 .source-outline-panel {
   flex: 1;
+  overflow: auto;
 }
 
 .sources-list .managed-tree .tree .node img.blackBox {
   mask: url("chrome://devtools/skin/images/debugger/blackBox.svg") no-repeat;
   mask-size: 100%;
   background-color: var(--theme-highlight-blue);
   width: 13px;
   height: 13px;
@@ -3000,16 +3001,21 @@ debug-expression-error {
 .breakpoints-list .breakpoint-heading {
   text-overflow: ellipsis;
   overflow: hidden;
   display: flex;
   width: 100%;
   align-items: center;
 }
 
+.breakpoints-list .breakpoint-heading .filename span {
+  opacity: 0.7;
+  padding-left: 4px;
+}
+
 /* temporary until we refactor the sources tree and tab icon styles */
 .breakpoints-list .breakpoint-heading .source-icon.file {
   top: 0;
 }
 
 .breakpoints-list .breakpoint-heading,
 .breakpoints-list .breakpoint {
   font-size: 12px;
@@ -4189,16 +4195,21 @@ html[dir="rtl"] img.moreTabs {
 .source-tab .filename {
   white-space: nowrap;
   text-overflow: ellipsis;
   overflow: hidden;
   padding: 0 4px;
   align-self: center;
 }
 
+.source-tab .filename span {
+  opacity: 0.7;
+  padding-left: 4px;
+}
+
 .source-tab .close-btn {
   visibility: hidden;
   line-height: 0;
 }
 
 .source-tab.active .close-btn {
   visibility: visible;
 }
--- a/devtools/client/debugger/new/src/actions/pause/pauseOnExceptions.js
+++ b/devtools/client/debugger/new/src/actions/pause/pauseOnExceptions.js
@@ -2,30 +2,40 @@
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.pauseOnExceptions = pauseOnExceptions;
 
 var _promise = require("../utils/middleware/promise");
 
+var _telemetry = require("../../utils/telemetry");
+
 /* 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/>. */
 
 /**
  *
  * @memberof actions/pause
  * @static
  */
 function pauseOnExceptions(shouldPauseOnExceptions, shouldPauseOnCaughtExceptions) {
   return ({
     dispatch,
     client
   }) => {
+    /* eslint-disable camelcase */
+    (0, _telemetry.recordEvent)("pause_on_exceptions", {
+      exceptions: shouldPauseOnExceptions,
+      // There's no "n" in the key below (#1463117)
+      caught_exceptio: shouldPauseOnCaughtExceptions
+    });
+    /* eslint-enable camelcase */
+
     return dispatch({
       type: "PAUSE_ON_EXCEPTIONS",
       shouldPauseOnExceptions,
       shouldPauseOnCaughtExceptions,
       [_promise.PROMISE]: client.pauseOnExceptions(shouldPauseOnExceptions, shouldPauseOnCaughtExceptions)
     });
   };
 }
\ No newline at end of file
--- a/devtools/client/debugger/new/src/actions/sources/newSources.js
+++ b/devtools/client/debugger/new/src/actions/sources/newSources.js
@@ -111,17 +111,18 @@ function checkSelectedSource(sourceId) {
       return;
     }
 
     const pendingUrl = pendingLocation.url;
     const rawPendingUrl = (0, _source.getRawSourceURL)(pendingUrl);
 
     if (rawPendingUrl === source.url) {
       if ((0, _source.isPrettyURL)(pendingUrl)) {
-        return await dispatch((0, _prettyPrint.togglePrettyPrint)(source.id));
+        const prettySource = await dispatch((0, _prettyPrint.togglePrettyPrint)(source.id));
+        return dispatch(checkPendingBreakpoints(prettySource.id));
       }
 
       await dispatch((0, _sources.selectLocation)({ ...pendingLocation,
         sourceId: source.id
       }));
     }
   };
 }
@@ -130,24 +131,23 @@ function checkPendingBreakpoints(sourceI
   return async ({
     dispatch,
     getState
   }) => {
     // source may have been modified by selectLocation
     const source = (0, _selectors.getSourceFromId)(getState(), sourceId);
     const pendingBreakpoints = (0, _selectors.getPendingBreakpointsForSource)(getState(), source.url);
 
-    if (!pendingBreakpoints.size) {
+    if (pendingBreakpoints.length === 0) {
       return;
     } // load the source text if there is a pending breakpoint for it
 
 
     await dispatch((0, _loadSourceText.loadSourceText)(source));
-    const breakpoints = pendingBreakpoints.valueSeq().toJS();
-    await Promise.all(breakpoints.map(bp => dispatch((0, _breakpoints.syncBreakpoint)(sourceId, bp))));
+    await Promise.all(pendingBreakpoints.map(bp => dispatch((0, _breakpoints.syncBreakpoint)(sourceId, bp))));
   };
 }
 
 function restoreBlackBoxedSources(sources) {
   return async ({
     dispatch
   }) => {
     const tabs = (0, _selectors.getBlackBoxList)();
--- a/devtools/client/debugger/new/src/actions/sources/prettyPrint.js
+++ b/devtools/client/debugger/new/src/actions/sources/prettyPrint.js
@@ -129,13 +129,14 @@ function togglePrettyPrint(sourceId) {
       }));
     }
 
     const newPrettySource = await dispatch(createPrettySource(sourceId));
     await dispatch((0, _breakpoints.remapBreakpoints)(sourceId));
     await dispatch((0, _pause.mapFrames)());
     await dispatch((0, _ast.setPausePoints)(newPrettySource.id));
     await dispatch((0, _ast.setSymbols)(newPrettySource.id));
-    return dispatch((0, _sources.selectLocation)({ ...options.location,
+    dispatch((0, _sources.selectLocation)({ ...options.location,
       sourceId: newPrettySource.id
     }));
+    return newPrettySource;
   };
 }
\ No newline at end of file
--- a/devtools/client/debugger/new/src/components/Editor/Tab.js
+++ b/devtools/client/debugger/new/src/components/Editor/Tab.js
@@ -129,17 +129,18 @@ class Tab extends _react.PureComponent {
     return this.props.activeSearch === "source";
   }
 
   render() {
     const {
       selectedSource,
       selectSpecificSource,
       closeTab,
-      source
+      source,
+      tabSources
     } = this.props;
     const sourceId = source.id;
     const active = selectedSource && sourceId == selectedSource.id && !this.isProjectSearchEnabled() && !this.isSourceSearchEnabled();
     const isPrettyCode = (0, _source.isPretty)(source);
 
     function onClickClose(e) {
       e.stopPropagation();
       closeTab(source.url);
@@ -155,28 +156,29 @@ class Tab extends _react.PureComponent {
 
       return selectSpecificSource(sourceId);
     }
 
     const className = (0, _classnames2.default)("source-tab", {
       active,
       pretty: isPrettyCode
     });
+    const path = (0, _source.getDisplayPath)(source, tabSources);
     return _react2.default.createElement("div", {
       className: className,
       key: sourceId,
       onMouseUp: handleTabClick,
       onContextMenu: e => this.onTabContextMenu(e, sourceId),
       title: (0, _source.getFileURL)(source)
     }, _react2.default.createElement(_SourceIcon2.default, {
       source: source,
       shouldHide: icon => ["file", "javascript"].includes(icon)
     }), _react2.default.createElement("div", {
       className: "filename"
-    }, (0, _source.getTruncatedFileName)(source)), _react2.default.createElement(_Button.CloseButton, {
+    }, (0, _source.getTruncatedFileName)(source), path && _react2.default.createElement("span", null, `../${path}/..`)), _react2.default.createElement(_Button.CloseButton, {
       handleClick: onClickClose,
       tooltip: L10N.getStr("sourceTabs.closeTabButtonTooltip")
     }));
   }
 
 }
 
 const mapStateToProps = (state, {
--- a/devtools/client/debugger/new/src/components/SecondaryPanes/Breakpoints/index.js
+++ b/devtools/client/debugger/new/src/components/SecondaryPanes/Breakpoints/index.js
@@ -67,32 +67,42 @@ class Breakpoints extends _react.Compone
       })
     }, exceptionsBox, shouldPauseOnExceptions ? ignoreCaughtBox : null);
   }
 
   renderBreakpoints() {
     const {
       breakpointSources
     } = this.props;
-    return [...breakpointSources.map(({
+    const sources = [...breakpointSources.map(({
       source,
       breakpoints
-    }) => [_react2.default.createElement("div", {
-      className: "breakpoint-heading",
-      title: (0, _source.getRawSourceURL)(source.url),
-      key: source.url,
-      onClick: () => this.props.selectSource(source.id)
-    }, _react2.default.createElement(_SourceIcon2.default, {
-      source: source,
-      shouldHide: icon => ["file", "javascript"].includes(icon)
-    }), (0, _source.getTruncatedFileName)(source)), ...breakpoints.map(breakpoint => _react2.default.createElement(_Breakpoint2.default, {
-      breakpoint: breakpoint,
-      source: source,
-      key: (0, _breakpoint.makeLocationId)(breakpoint.location)
-    }))])];
+    }) => source)];
+    return [...breakpointSources.map(({
+      source,
+      breakpoints,
+      i
+    }) => {
+      const path = (0, _source.getDisplayPath)(source, sources);
+      return [_react2.default.createElement("div", {
+        className: "breakpoint-heading",
+        title: (0, _source.getRawSourceURL)(source.url),
+        key: source.url,
+        onClick: () => this.props.selectSource(source.id)
+      }, _react2.default.createElement(_SourceIcon2.default, {
+        source: source,
+        shouldHide: icon => ["file", "javascript"].includes(icon)
+      }), _react2.default.createElement("div", {
+        className: "filename"
+      }, (0, _source.getTruncatedFileName)(source), path && _react2.default.createElement("span", null, `../${path}/..`))), ...breakpoints.map(breakpoint => _react2.default.createElement(_Breakpoint2.default, {
+        breakpoint: breakpoint,
+        source: source,
+        key: (0, _breakpoint.makeLocationId)(breakpoint.location)
+      }))];
+    })];
   }
 
   render() {
     return _react2.default.createElement("div", {
       className: "pane breakpoints-list"
     }, this.renderExceptionsOptions(), this.renderBreakpoints());
   }
 
--- a/devtools/client/debugger/new/src/reducers/pending-breakpoints.js
+++ b/devtools/client/debugger/new/src/reducers/pending-breakpoints.js
@@ -1,55 +1,38 @@
 "use strict";
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.initialPendingBreakpointsState = initialPendingBreakpointsState;
 exports.getPendingBreakpoints = getPendingBreakpoints;
+exports.getPendingBreakpointList = getPendingBreakpointList;
 exports.getPendingBreakpointsForSource = getPendingBreakpointsForSource;
 
-var _immutable = require("devtools/client/shared/vendor/immutable");
-
-var I = _interopRequireWildcard(_immutable);
-
-var _makeRecord = require("../utils/makeRecord");
-
-var _makeRecord2 = _interopRequireDefault(_makeRecord);
-
 var _breakpoint = require("../utils/breakpoint/index");
 
 var _prefs = require("../utils/prefs");
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-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)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { 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/>. */
 
 /**
  * Pending breakpoints reducer
  * @module reducers/pending-breakpoints
  */
 function initialPendingBreakpointsState() {
-  return (0, _makeRecord2.default)({
-    pendingBreakpoints: restorePendingBreakpoints()
-  })();
+  return restorePendingBreakpoints();
 }
 
 function update(state = initialPendingBreakpointsState(), action) {
   switch (action.type) {
     case "ADD_BREAKPOINT":
       {
-        if (action.breakpoint.hidden) {
-          return state;
-        }
-
         return addBreakpoint(state, action);
       }
 
     case "SYNC_BREAKPOINT":
       {
         return syncBreakpoint(state, action);
       }
 
@@ -87,90 +70,111 @@ function update(state = initialPendingBr
         return removeBreakpoint(state, action);
       }
   }
 
   return state;
 }
 
 function addBreakpoint(state, action) {
-  if (action.status !== "done") {
+  if (action.breakpoint.hidden || action.status !== "done") {
     return state;
   } // when the action completes, we can commit the breakpoint
 
 
   const {
     breakpoint
   } = action.value;
   const locationId = (0, _breakpoint.makePendingLocationId)(breakpoint.location);
   const pendingBreakpoint = (0, _breakpoint.createPendingBreakpoint)(breakpoint);
-  return state.setIn(["pendingBreakpoints", locationId], pendingBreakpoint);
+  return { ...state,
+    [locationId]: pendingBreakpoint
+  };
 }
 
 function syncBreakpoint(state, action) {
   const {
     breakpoint,
     previousLocation
   } = action;
 
   if (previousLocation) {
-    state = state.deleteIn(["pendingBreakpoints", (0, _breakpoint.makePendingLocationId)(previousLocation)]);
+    const previousLocationId = (0, _breakpoint.makePendingLocationId)(previousLocation);
+    state = deleteBreakpoint(state, previousLocationId);
   }
 
   if (!breakpoint) {
     return state;
   }
 
   const locationId = (0, _breakpoint.makePendingLocationId)(breakpoint.location);
   const pendingBreakpoint = (0, _breakpoint.createPendingBreakpoint)(breakpoint);
-  return state.setIn(["pendingBreakpoints", locationId], pendingBreakpoint);
+  return { ...state,
+    [locationId]: pendingBreakpoint
+  };
 }
 
 function updateBreakpoint(state, action) {
   const {
     breakpoint
   } = action;
   const locationId = (0, _breakpoint.makePendingLocationId)(breakpoint.location);
   const pendingBreakpoint = (0, _breakpoint.createPendingBreakpoint)(breakpoint);
-  return state.setIn(["pendingBreakpoints", locationId], pendingBreakpoint);
+  return { ...state,
+    [locationId]: pendingBreakpoint
+  };
 }
 
 function updateAllBreakpoints(state, action) {
   const {
     breakpoints
   } = action;
   breakpoints.forEach(breakpoint => {
     const locationId = (0, _breakpoint.makePendingLocationId)(breakpoint.location);
-    state = state.setIn(["pendingBreakpoints", locationId], breakpoint);
+    const pendingBreakpoint = (0, _breakpoint.createPendingBreakpoint)(breakpoint);
+    state = { ...state,
+      [locationId]: pendingBreakpoint
+    };
   });
   return state;
 }
 
 function removeBreakpoint(state, action) {
   const {
     breakpoint
   } = action;
   const locationId = (0, _breakpoint.makePendingLocationId)(breakpoint.location);
-  const pendingBp = state.pendingBreakpoints.get(locationId);
+  const pendingBp = state[locationId];
 
   if (!pendingBp && action.status == "start") {
-    return state.set("pendingBreakpoints", I.Map());
+    return {};
   }
 
-  return state.deleteIn(["pendingBreakpoints", locationId]);
+  return deleteBreakpoint(state, locationId);
+}
+
+function deleteBreakpoint(state, locationId) {
+  state = { ...state
+  };
+  delete state[locationId];
+  return state;
 } // Selectors
 // TODO: these functions should be moved out of the reducer
 
 
 function getPendingBreakpoints(state) {
-  return state.pendingBreakpoints.pendingBreakpoints;
+  return state.pendingBreakpoints;
+}
+
+function getPendingBreakpointList(state) {
+  return Object.values(getPendingBreakpoints(state));
 }
 
 function getPendingBreakpointsForSource(state, sourceUrl) {
-  const pendingBreakpoints = state.pendingBreakpoints.pendingBreakpoints || I.Map();
-  return pendingBreakpoints.filter(pendingBreakpoint => pendingBreakpoint.location.sourceUrl === sourceUrl);
+  return getPendingBreakpointList(state).filter(pendingBreakpoint => pendingBreakpoint.location.sourceUrl === sourceUrl);
 }
 
 function restorePendingBreakpoints() {
-  return I.Map(_prefs.prefs.pendingBreakpoints);
+  return { ..._prefs.prefs.pendingBreakpoints
+  };
 }
 
 exports.default = update;
\ No newline at end of file
--- a/devtools/client/debugger/new/src/utils/bootstrap.js
+++ b/devtools/client/debugger/new/src/utils/bootstrap.js
@@ -141,15 +141,18 @@ function bootstrapApp(store) {
     const {
       renderRoot
     } = require("devtools/shared/flags");
 
     renderRoot(_react2.default, _reactDom2.default, _App2.default, store);
   }
 }
 
-function updatePrefs(state) {
-  const pendingBreakpoints = selectors.getPendingBreakpoints(state);
+let currentPendingBreakpoints;
 
-  if (_prefs.prefs.pendingBreakpoints !== pendingBreakpoints) {
-    _prefs.prefs.pendingBreakpoints = pendingBreakpoints;
+function updatePrefs(state) {
+  let previousPendingBreakpoints = currentPendingBreakpoints;
+  currentPendingBreakpoints = selectors.getPendingBreakpoints(state);
+
+  if (previousPendingBreakpoints && currentPendingBreakpoints !== previousPendingBreakpoints) {
+    _prefs.prefs.pendingBreakpoints = currentPendingBreakpoints;
   }
 }
\ No newline at end of file
--- a/devtools/client/debugger/new/src/utils/source.js
+++ b/devtools/client/debugger/new/src/utils/source.js
@@ -18,16 +18,17 @@ exports.isJavaScript = isJavaScript;
 exports.isPretty = isPretty;
 exports.isPrettyURL = isPrettyURL;
 exports.isThirdParty = isThirdParty;
 exports.getPrettySourceURL = getPrettySourceURL;
 exports.getRawSourceURL = getRawSourceURL;
 exports.getFormattedSourceId = getFormattedSourceId;
 exports.getFilename = getFilename;
 exports.getTruncatedFileName = getTruncatedFileName;
+exports.getDisplayPath = getDisplayPath;
 exports.getFileURL = getFileURL;
 exports.getSourcePath = getSourcePath;
 exports.getSourceLineCount = getSourceLineCount;
 exports.getMode = getMode;
 exports.isLoaded = isLoaded;
 exports.isLoading = isLoading;
 exports.getTextAtPosition = getTextAtPosition;
 exports.getSourceClassnames = getSourceClassnames;
@@ -179,16 +180,50 @@ function getFilename(source) {
  * @memberof utils/source
  * @static
  */
 
 
 function getTruncatedFileName(source, length = 30) {
   return (0, _text.truncateMiddleText)(getFilename(source), length);
 }
+/* Gets path for files with same filename for editor tabs, breakpoints, etc.
+ * Pass the source, and list of other sources
+ *
+ * @memberof utils/source
+ * @static
+ */
+
+
+function getDisplayPath(mySource, sources) {
+  const filename = getFilename(mySource); // Find sources that have the same filename, but different paths
+  // as the original source
+
+  const similarSources = sources.filter(source => mySource.url != source.url && filename == getFilename(source));
+
+  if (similarSources.length == 0) {
+    return undefined;
+  } // get an array of source path directories e.g. ['a/b/c.html'] => [['b', 'a']]
+
+
+  const paths = [mySource, ...similarSources].map(source => (0, _sourcesTree.getURL)(source).path.split("/").reverse().slice(1)); // create an array of similar path directories and one dis-similar directory
+  // for example [`a/b/c.html`, `a1/b/c.html`] => ['b', 'a']
+  // where 'b' is the similar directory and 'a' is the dis-similar directory.
+
+  let similar = true;
+  const displayPath = [];
+
+  for (let i = 0; similar && i < paths[0].length; i++) {
+    const [dir, ...dirs] = paths.map(path => path[i]);
+    displayPath.push(dir);
+    similar = dirs.includes(dir);
+  }
+
+  return displayPath.reverse().join("/");
+}
 /**
  * Gets a readable source URL for display purposes.
  * If the source does not have a URL, the source ID will be returned instead.
  *
  * @memberof utils/source
  * @static
  */
 
--- a/devtools/client/debugger/new/test/mochitest/browser.ini
+++ b/devtools/client/debugger/new/test/mochitest/browser.ini
@@ -5,16 +5,74 @@ skip-if = (os == 'linux' && debug && bit
 support-files =
   head.js
   helpers.js
   !/devtools/client/commandline/test/helpers.js
   !/devtools/client/shared/test/shared-head.js
   !/devtools/client/shared/test/telemetry-test-helpers.js
   ## START-SOURCEMAPPED-FIXTURES - Generated by examples/sourcemapped/build.js
   examples/sourcemapped/polyfill-bundle.js
+  examples/sourcemapped/output/parcel/babel-bindings-with-flow.js
+  examples/sourcemapped/output/parcel/babel-bindings-with-flow.map
+  examples/sourcemapped/output/parcel/babel-flowtype-bindings.js
+  examples/sourcemapped/output/parcel/babel-flowtype-bindings.map
+  examples/sourcemapped/output/parcel/classes.js
+  examples/sourcemapped/output/parcel/classes.map
+  examples/sourcemapped/output/parcel/esmodules.js
+  examples/sourcemapped/output/parcel/esmodules.map
+  examples/sourcemapped/output/parcel/esmodules-cjs.js
+  examples/sourcemapped/output/parcel/esmodules-cjs.map
+  examples/sourcemapped/output/parcel/esmodules-es6.js
+  examples/sourcemapped/output/parcel/esmodules-es6.map
+  examples/sourcemapped/output/parcel/eval-maps.js
+  examples/sourcemapped/output/parcel/eval-maps.map
+  examples/sourcemapped/output/parcel/for-loops.js
+  examples/sourcemapped/output/parcel/for-loops.map
+  examples/sourcemapped/output/parcel/for-of.js
+  examples/sourcemapped/output/parcel/for-of.map
+  examples/sourcemapped/output/parcel/functions.js
+  examples/sourcemapped/output/parcel/functions.map
+  examples/sourcemapped/output/parcel/lex-and-nonlex.js
+  examples/sourcemapped/output/parcel/lex-and-nonlex.map
+  examples/sourcemapped/output/parcel/line-start-bindings-es6.js
+  examples/sourcemapped/output/parcel/line-start-bindings-es6.map
+  examples/sourcemapped/output/parcel/modules-cjs.js
+  examples/sourcemapped/output/parcel/modules-cjs.map
+  examples/sourcemapped/output/parcel/out-of-order-declarations-cjs.js
+  examples/sourcemapped/output/parcel/out-of-order-declarations-cjs.map
+  examples/sourcemapped/output/parcel/shadowed-vars.js
+  examples/sourcemapped/output/parcel/shadowed-vars.map
+  examples/sourcemapped/output/parcel/step-over-for-of.js
+  examples/sourcemapped/output/parcel/step-over-for-of.map
+  examples/sourcemapped/output/parcel/step-over-for-of-array.js
+  examples/sourcemapped/output/parcel/step-over-for-of-array.map
+  examples/sourcemapped/output/parcel/step-over-for-of-array-closure.js
+  examples/sourcemapped/output/parcel/step-over-for-of-array-closure.map
+  examples/sourcemapped/output/parcel/step-over-for-of-closure.js
+  examples/sourcemapped/output/parcel/step-over-for-of-closure.map
+  examples/sourcemapped/output/parcel/step-over-function-params.js
+  examples/sourcemapped/output/parcel/step-over-function-params.map
+  examples/sourcemapped/output/parcel/step-over-regenerator-await.js
+  examples/sourcemapped/output/parcel/step-over-regenerator-await.map
+  examples/sourcemapped/output/parcel/switches.js
+  examples/sourcemapped/output/parcel/switches.map
+  examples/sourcemapped/output/parcel/this-arguments-bindings.js
+  examples/sourcemapped/output/parcel/this-arguments-bindings.map
+  examples/sourcemapped/output/parcel/try-catches.js
+  examples/sourcemapped/output/parcel/try-catches.map
+  examples/sourcemapped/output/parcel/type-module.js
+  examples/sourcemapped/output/parcel/type-module.map
+  examples/sourcemapped/output/parcel/type-script-cjs.js
+  examples/sourcemapped/output/parcel/type-script-cjs.map
+  examples/sourcemapped/output/parcel/typescript-classes.js
+  examples/sourcemapped/output/parcel/typescript-classes.map
+  examples/sourcemapped/output/parcel/webpack-functions.js
+  examples/sourcemapped/output/parcel/webpack-functions.map
+  examples/sourcemapped/output/parcel/webpack-line-mappings.js
+  examples/sourcemapped/output/parcel/webpack-line-mappings.map
   examples/sourcemapped/output/webpack3/classes.js
   examples/sourcemapped/output/webpack3/classes.js.map
   examples/sourcemapped/output/webpack3/esmodules.js
   examples/sourcemapped/output/webpack3/esmodules.js.map
   examples/sourcemapped/output/webpack3/esmodules-cjs.js
   examples/sourcemapped/output/webpack3/esmodules-cjs.js.map
   examples/sourcemapped/output/webpack3/esmodules-es6.js
   examples/sourcemapped/output/webpack3/esmodules-es6.js.map
@@ -115,16 +173,238 @@ support-files =
   examples/sourcemapped/output/webpack3-babel6/type-module.js
   examples/sourcemapped/output/webpack3-babel6/type-module.js.map
   examples/sourcemapped/output/webpack3-babel6/type-script-cjs.js
   examples/sourcemapped/output/webpack3-babel6/type-script-cjs.js.map
   examples/sourcemapped/output/webpack3-babel6/webpack-functions.js
   examples/sourcemapped/output/webpack3-babel6/webpack-functions.js.map
   examples/sourcemapped/output/webpack3-babel6/webpack-line-mappings.js
   examples/sourcemapped/output/webpack3-babel6/webpack-line-mappings.js.map
+  examples/sourcemapped/output/webpack3-babel7/babel-bindings-with-flow.js
+  examples/sourcemapped/output/webpack3-babel7/babel-bindings-with-flow.js.map
+  examples/sourcemapped/output/webpack3-babel7/babel-flowtype-bindings.js
+  examples/sourcemapped/output/webpack3-babel7/babel-flowtype-bindings.js.map
+  examples/sourcemapped/output/webpack3-babel7/classes.js
+  examples/sourcemapped/output/webpack3-babel7/classes.js.map
+  examples/sourcemapped/output/webpack3-babel7/esmodules.js
+  examples/sourcemapped/output/webpack3-babel7/esmodules.js.map
+  examples/sourcemapped/output/webpack3-babel7/esmodules-cjs.js
+  examples/sourcemapped/output/webpack3-babel7/esmodules-cjs.js.map
+  examples/sourcemapped/output/webpack3-babel7/esmodules-es6.js
+  examples/sourcemapped/output/webpack3-babel7/esmodules-es6.js.map
+  examples/sourcemapped/output/webpack3-babel7/eval-maps.js
+  examples/sourcemapped/output/webpack3-babel7/eval-maps.js.map
+  examples/sourcemapped/output/webpack3-babel7/for-loops.js
+  examples/sourcemapped/output/webpack3-babel7/for-loops.js.map
+  examples/sourcemapped/output/webpack3-babel7/for-of.js
+  examples/sourcemapped/output/webpack3-babel7/for-of.js.map
+  examples/sourcemapped/output/webpack3-babel7/functions.js
+  examples/sourcemapped/output/webpack3-babel7/functions.js.map
+  examples/sourcemapped/output/webpack3-babel7/lex-and-nonlex.js
+  examples/sourcemapped/output/webpack3-babel7/lex-and-nonlex.js.map
+  examples/sourcemapped/output/webpack3-babel7/line-start-bindings-es6.js
+  examples/sourcemapped/output/webpack3-babel7/line-start-bindings-es6.js.map
+  examples/sourcemapped/output/webpack3-babel7/modules-cjs.js
+  examples/sourcemapped/output/webpack3-babel7/modules-cjs.js.map
+  examples/sourcemapped/output/webpack3-babel7/out-of-order-declarations-cjs.js
+  examples/sourcemapped/output/webpack3-babel7/out-of-order-declarations-cjs.js.map
+  examples/sourcemapped/output/webpack3-babel7/shadowed-vars.js
+  examples/sourcemapped/output/webpack3-babel7/shadowed-vars.js.map
+  examples/sourcemapped/output/webpack3-babel7/step-over-for-of.js
+  examples/sourcemapped/output/webpack3-babel7/step-over-for-of.js.map
+  examples/sourcemapped/output/webpack3-babel7/step-over-for-of-array.js
+  examples/sourcemapped/output/webpack3-babel7/step-over-for-of-array.js.map
+  examples/sourcemapped/output/webpack3-babel7/step-over-for-of-array-closure.js
+  examples/sourcemapped/output/webpack3-babel7/step-over-for-of-array-closure.js.map
+  examples/sourcemapped/output/webpack3-babel7/step-over-for-of-closure.js
+  examples/sourcemapped/output/webpack3-babel7/step-over-for-of-closure.js.map
+  examples/sourcemapped/output/webpack3-babel7/step-over-function-params.js
+  examples/sourcemapped/output/webpack3-babel7/step-over-function-params.js.map
+  examples/sourcemapped/output/webpack3-babel7/step-over-regenerator-await.js
+  examples/sourcemapped/output/webpack3-babel7/step-over-regenerator-await.js.map
+  examples/sourcemapped/output/webpack3-babel7/switches.js
+  examples/sourcemapped/output/webpack3-babel7/switches.js.map
+  examples/sourcemapped/output/webpack3-babel7/this-arguments-bindings.js
+  examples/sourcemapped/output/webpack3-babel7/this-arguments-bindings.js.map
+  examples/sourcemapped/output/webpack3-babel7/try-catches.js
+  examples/sourcemapped/output/webpack3-babel7/try-catches.js.map
+  examples/sourcemapped/output/webpack3-babel7/type-module.js
+  examples/sourcemapped/output/webpack3-babel7/type-module.js.map
+  examples/sourcemapped/output/webpack3-babel7/type-script-cjs.js
+  examples/sourcemapped/output/webpack3-babel7/type-script-cjs.js.map
+  examples/sourcemapped/output/webpack3-babel7/webpack-functions.js
+  examples/sourcemapped/output/webpack3-babel7/webpack-functions.js.map
+  examples/sourcemapped/output/webpack3-babel7/webpack-line-mappings.js
+  examples/sourcemapped/output/webpack3-babel7/webpack-line-mappings.js.map
+  examples/sourcemapped/output/webpack4/classes.js
+  examples/sourcemapped/output/webpack4/classes.js.map
+  examples/sourcemapped/output/webpack4/esmodules.js
+  examples/sourcemapped/output/webpack4/esmodules.js.map
+  examples/sourcemapped/output/webpack4/esmodules-cjs.js
+  examples/sourcemapped/output/webpack4/esmodules-cjs.js.map
+  examples/sourcemapped/output/webpack4/esmodules-es6.js
+  examples/sourcemapped/output/webpack4/esmodules-es6.js.map
+  examples/sourcemapped/output/webpack4/eval-maps.js
+  examples/sourcemapped/output/webpack4/eval-maps.js.map
+  examples/sourcemapped/output/webpack4/for-loops.js
+  examples/sourcemapped/output/webpack4/for-loops.js.map
+  examples/sourcemapped/output/webpack4/for-of.js
+  examples/sourcemapped/output/webpack4/for-of.js.map
+  examples/sourcemapped/output/webpack4/functions.js
+  examples/sourcemapped/output/webpack4/functions.js.map
+  examples/sourcemapped/output/webpack4/lex-and-nonlex.js
+  examples/sourcemapped/output/webpack4/lex-and-nonlex.js.map
+  examples/sourcemapped/output/webpack4/line-start-bindings-es6.js
+  examples/sourcemapped/output/webpack4/line-start-bindings-es6.js.map
+  examples/sourcemapped/output/webpack4/modules-cjs.js
+  examples/sourcemapped/output/webpack4/modules-cjs.js.map
+  examples/sourcemapped/output/webpack4/out-of-order-declarations-cjs.js
+  examples/sourcemapped/output/webpack4/out-of-order-declarations-cjs.js.map
+  examples/sourcemapped/output/webpack4/shadowed-vars.js
+  examples/sourcemapped/output/webpack4/shadowed-vars.js.map
+  examples/sourcemapped/output/webpack4/step-over-for-of.js
+  examples/sourcemapped/output/webpack4/step-over-for-of.js.map
+  examples/sourcemapped/output/webpack4/step-over-for-of-array.js
+  examples/sourcemapped/output/webpack4/step-over-for-of-array.js.map
+  examples/sourcemapped/output/webpack4/step-over-for-of-array-closure.js
+  examples/sourcemapped/output/webpack4/step-over-for-of-array-closure.js.map
+  examples/sourcemapped/output/webpack4/step-over-for-of-closure.js
+  examples/sourcemapped/output/webpack4/step-over-for-of-closure.js.map
+  examples/sourcemapped/output/webpack4/step-over-function-params.js
+  examples/sourcemapped/output/webpack4/step-over-function-params.js.map
+  examples/sourcemapped/output/webpack4/step-over-regenerator-await.js
+  examples/sourcemapped/output/webpack4/step-over-regenerator-await.js.map
+  examples/sourcemapped/output/webpack4/switches.js
+  examples/sourcemapped/output/webpack4/switches.js.map
+  examples/sourcemapped/output/webpack4/this-arguments-bindings.js
+  examples/sourcemapped/output/webpack4/this-arguments-bindings.js.map
+  examples/sourcemapped/output/webpack4/try-catches.js
+  examples/sourcemapped/output/webpack4/try-catches.js.map
+  examples/sourcemapped/output/webpack4/type-module.js
+  examples/sourcemapped/output/webpack4/type-module.js.map
+  examples/sourcemapped/output/webpack4/type-script-cjs.js
+  examples/sourcemapped/output/webpack4/type-script-cjs.js.map
+  examples/sourcemapped/output/webpack4/typescript-classes.js
+  examples/sourcemapped/output/webpack4/typescript-classes.js.map
+  examples/sourcemapped/output/webpack4/webpack-functions.js
+  examples/sourcemapped/output/webpack4/webpack-functions.js.map
+  examples/sourcemapped/output/webpack4/webpack-line-mappings.js
+  examples/sourcemapped/output/webpack4/webpack-line-mappings.js.map
+  examples/sourcemapped/output/webpack4-babel6/babel-bindings-with-flow.js
+  examples/sourcemapped/output/webpack4-babel6/babel-bindings-with-flow.js.map
+  examples/sourcemapped/output/webpack4-babel6/babel-flowtype-bindings.js
+  examples/sourcemapped/output/webpack4-babel6/babel-flowtype-bindings.js.map
+  examples/sourcemapped/output/webpack4-babel6/classes.js
+  examples/sourcemapped/output/webpack4-babel6/classes.js.map
+  examples/sourcemapped/output/webpack4-babel6/esmodules.js
+  examples/sourcemapped/output/webpack4-babel6/esmodules.js.map
+  examples/sourcemapped/output/webpack4-babel6/esmodules-cjs.js
+  examples/sourcemapped/output/webpack4-babel6/esmodules-cjs.js.map
+  examples/sourcemapped/output/webpack4-babel6/esmodules-es6.js
+  examples/sourcemapped/output/webpack4-babel6/esmodules-es6.js.map
+  examples/sourcemapped/output/webpack4-babel6/eval-maps.js
+  examples/sourcemapped/output/webpack4-babel6/eval-maps.js.map
+  examples/sourcemapped/output/webpack4-babel6/for-loops.js
+  examples/sourcemapped/output/webpack4-babel6/for-loops.js.map
+  examples/sourcemapped/output/webpack4-babel6/for-of.js
+  examples/sourcemapped/output/webpack4-babel6/for-of.js.map
+  examples/sourcemapped/output/webpack4-babel6/functions.js
+  examples/sourcemapped/output/webpack4-babel6/functions.js.map
+  examples/sourcemapped/output/webpack4-babel6/lex-and-nonlex.js
+  examples/sourcemapped/output/webpack4-babel6/lex-and-nonlex.js.map
+  examples/sourcemapped/output/webpack4-babel6/line-start-bindings-es6.js
+  examples/sourcemapped/output/webpack4-babel6/line-start-bindings-es6.js.map
+  examples/sourcemapped/output/webpack4-babel6/modules-cjs.js
+  examples/sourcemapped/output/webpack4-babel6/modules-cjs.js.map
+  examples/sourcemapped/output/webpack4-babel6/out-of-order-declarations-cjs.js
+  examples/sourcemapped/output/webpack4-babel6/out-of-order-declarations-cjs.js.map
+  examples/sourcemapped/output/webpack4-babel6/shadowed-vars.js
+  examples/sourcemapped/output/webpack4-babel6/shadowed-vars.js.map
+  examples/sourcemapped/output/webpack4-babel6/step-over-for-of.js
+  examples/sourcemapped/output/webpack4-babel6/step-over-for-of.js.map
+  examples/sourcemapped/output/webpack4-babel6/step-over-for-of-array.js
+  examples/sourcemapped/output/webpack4-babel6/step-over-for-of-array.js.map
+  examples/sourcemapped/output/webpack4-babel6/step-over-for-of-array-closure.js
+  examples/sourcemapped/output/webpack4-babel6/step-over-for-of-array-closure.js.map
+  examples/sourcemapped/output/webpack4-babel6/step-over-for-of-closure.js
+  examples/sourcemapped/output/webpack4-babel6/step-over-for-of-closure.js.map
+  examples/sourcemapped/output/webpack4-babel6/step-over-function-params.js
+  examples/sourcemapped/output/webpack4-babel6/step-over-function-params.js.map
+  examples/sourcemapped/output/webpack4-babel6/step-over-regenerator-await.js
+  examples/sourcemapped/output/webpack4-babel6/step-over-regenerator-await.js.map
+  examples/sourcemapped/output/webpack4-babel6/switches.js
+  examples/sourcemapped/output/webpack4-babel6/switches.js.map
+  examples/sourcemapped/output/webpack4-babel6/this-arguments-bindings.js
+  examples/sourcemapped/output/webpack4-babel6/this-arguments-bindings.js.map
+  examples/sourcemapped/output/webpack4-babel6/try-catches.js
+  examples/sourcemapped/output/webpack4-babel6/try-catches.js.map
+  examples/sourcemapped/output/webpack4-babel6/type-module.js
+  examples/sourcemapped/output/webpack4-babel6/type-module.js.map
+  examples/sourcemapped/output/webpack4-babel6/type-script-cjs.js
+  examples/sourcemapped/output/webpack4-babel6/type-script-cjs.js.map
+  examples/sourcemapped/output/webpack4-babel6/webpack-functions.js
+  examples/sourcemapped/output/webpack4-babel6/webpack-functions.js.map
+  examples/sourcemapped/output/webpack4-babel6/webpack-line-mappings.js
+  examples/sourcemapped/output/webpack4-babel6/webpack-line-mappings.js.map
+  examples/sourcemapped/output/webpack4-babel7/babel-bindings-with-flow.js
+  examples/sourcemapped/output/webpack4-babel7/babel-bindings-with-flow.js.map
+  examples/sourcemapped/output/webpack4-babel7/babel-flowtype-bindings.js
+  examples/sourcemapped/output/webpack4-babel7/babel-flowtype-bindings.js.map
+  examples/sourcemapped/output/webpack4-babel7/classes.js
+  examples/sourcemapped/output/webpack4-babel7/classes.js.map
+  examples/sourcemapped/output/webpack4-babel7/esmodules.js
+  examples/sourcemapped/output/webpack4-babel7/esmodules.js.map
+  examples/sourcemapped/output/webpack4-babel7/esmodules-cjs.js
+  examples/sourcemapped/output/webpack4-babel7/esmodules-cjs.js.map
+  examples/sourcemapped/output/webpack4-babel7/esmodules-es6.js
+  examples/sourcemapped/output/webpack4-babel7/esmodules-es6.js.map
+  examples/sourcemapped/output/webpack4-babel7/eval-maps.js
+  examples/sourcemapped/output/webpack4-babel7/eval-maps.js.map
+  examples/sourcemapped/output/webpack4-babel7/for-loops.js
+  examples/sourcemapped/output/webpack4-babel7/for-loops.js.map
+  examples/sourcemapped/output/webpack4-babel7/for-of.js
+  examples/sourcemapped/output/webpack4-babel7/for-of.js.map
+  examples/sourcemapped/output/webpack4-babel7/functions.js
+  examples/sourcemapped/output/webpack4-babel7/functions.js.map
+  examples/sourcemapped/output/webpack4-babel7/lex-and-nonlex.js
+  examples/sourcemapped/output/webpack4-babel7/lex-and-nonlex.js.map
+  examples/sourcemapped/output/webpack4-babel7/line-start-bindings-es6.js
+  examples/sourcemapped/output/webpack4-babel7/line-start-bindings-es6.js.map
+  examples/sourcemapped/output/webpack4-babel7/modules-cjs.js
+  examples/sourcemapped/output/webpack4-babel7/modules-cjs.js.map
+  examples/sourcemapped/output/webpack4-babel7/out-of-order-declarations-cjs.js
+  examples/sourcemapped/output/webpack4-babel7/out-of-order-declarations-cjs.js.map
+  examples/sourcemapped/output/webpack4-babel7/shadowed-vars.js
+  examples/sourcemapped/output/webpack4-babel7/shadowed-vars.js.map
+  examples/sourcemapped/output/webpack4-babel7/step-over-for-of.js
+  examples/sourcemapped/output/webpack4-babel7/step-over-for-of.js.map
+  examples/sourcemapped/output/webpack4-babel7/step-over-for-of-array.js
+  examples/sourcemapped/output/webpack4-babel7/step-over-for-of-array.js.map
+  examples/sourcemapped/output/webpack4-babel7/step-over-for-of-array-closure.js
+  examples/sourcemapped/output/webpack4-babel7/step-over-for-of-array-closure.js.map
+  examples/sourcemapped/output/webpack4-babel7/step-over-for-of-closure.js
+  examples/sourcemapped/output/webpack4-babel7/step-over-for-of-closure.js.map
+  examples/sourcemapped/output/webpack4-babel7/step-over-function-params.js
+  examples/sourcemapped/output/webpack4-babel7/step-over-function-params.js.map
+  examples/sourcemapped/output/webpack4-babel7/step-over-regenerator-await.js
+  examples/sourcemapped/output/webpack4-babel7/step-over-regenerator-await.js.map
+  examples/sourcemapped/output/webpack4-babel7/switches.js
+  examples/sourcemapped/output/webpack4-babel7/switches.js.map
+  examples/sourcemapped/output/webpack4-babel7/this-arguments-bindings.js
+  examples/sourcemapped/output/webpack4-babel7/this-arguments-bindings.js.map
+  examples/sourcemapped/output/webpack4-babel7/try-catches.js
+  examples/sourcemapped/output/webpack4-babel7/try-catches.js.map
+  examples/sourcemapped/output/webpack4-babel7/type-module.js
+  examples/sourcemapped/output/webpack4-babel7/type-module.js.map
+  examples/sourcemapped/output/webpack4-babel7/type-script-cjs.js
+  examples/sourcemapped/output/webpack4-babel7/type-script-cjs.js.map
+  examples/sourcemapped/output/webpack4-babel7/webpack-functions.js
+  examples/sourcemapped/output/webpack4-babel7/webpack-functions.js.map
+  examples/sourcemapped/output/webpack4-babel7/webpack-line-mappings.js
+  examples/sourcemapped/output/webpack4-babel7/webpack-line-mappings.js.map
   examples/sourcemapped/output/rollup/classes.js
   examples/sourcemapped/output/rollup/classes.js.map
   examples/sourcemapped/output/rollup/esmodules.js
   examples/sourcemapped/output/rollup/esmodules.js.map
   examples/sourcemapped/output/rollup/esmodules-es6.js
   examples/sourcemapped/output/rollup/esmodules-es6.js.map
   examples/sourcemapped/output/rollup/eval-maps.js
   examples/sourcemapped/output/rollup/eval-maps.js.map
@@ -209,16 +489,64 @@ support-files =
   examples/sourcemapped/output/rollup-babel6/try-catches.js
   examples/sourcemapped/output/rollup-babel6/try-catches.js.map
   examples/sourcemapped/output/rollup-babel6/type-module.js
   examples/sourcemapped/output/rollup-babel6/type-module.js.map
   examples/sourcemapped/output/rollup-babel6/webpack-functions.js
   examples/sourcemapped/output/rollup-babel6/webpack-functions.js.map
   examples/sourcemapped/output/rollup-babel6/webpack-line-mappings.js
   examples/sourcemapped/output/rollup-babel6/webpack-line-mappings.js.map
+  examples/sourcemapped/output/rollup-babel7/babel-bindings-with-flow.js
+  examples/sourcemapped/output/rollup-babel7/babel-bindings-with-flow.js.map
+  examples/sourcemapped/output/rollup-babel7/babel-flowtype-bindings.js
+  examples/sourcemapped/output/rollup-babel7/babel-flowtype-bindings.js.map
+  examples/sourcemapped/output/rollup-babel7/classes.js
+  examples/sourcemapped/output/rollup-babel7/classes.js.map
+  examples/sourcemapped/output/rollup-babel7/esmodules.js
+  examples/sourcemapped/output/rollup-babel7/esmodules.js.map
+  examples/sourcemapped/output/rollup-babel7/esmodules-es6.js
+  examples/sourcemapped/output/rollup-babel7/esmodules-es6.js.map
+  examples/sourcemapped/output/rollup-babel7/eval-maps.js
+  examples/sourcemapped/output/rollup-babel7/eval-maps.js.map
+  examples/sourcemapped/output/rollup-babel7/for-loops.js
+  examples/sourcemapped/output/rollup-babel7/for-loops.js.map
+  examples/sourcemapped/output/rollup-babel7/for-of.js
+  examples/sourcemapped/output/rollup-babel7/for-of.js.map
+  examples/sourcemapped/output/rollup-babel7/functions.js
+  examples/sourcemapped/output/rollup-babel7/functions.js.map
+  examples/sourcemapped/output/rollup-babel7/lex-and-nonlex.js
+  examples/sourcemapped/output/rollup-babel7/lex-and-nonlex.js.map
+  examples/sourcemapped/output/rollup-babel7/line-start-bindings-es6.js
+  examples/sourcemapped/output/rollup-babel7/line-start-bindings-es6.js.map
+  examples/sourcemapped/output/rollup-babel7/shadowed-vars.js
+  examples/sourcemapped/output/rollup-babel7/shadowed-vars.js.map
+  examples/sourcemapped/output/rollup-babel7/step-over-for-of.js
+  examples/sourcemapped/output/rollup-babel7/step-over-for-of.js.map
+  examples/sourcemapped/output/rollup-babel7/step-over-for-of-array.js
+  examples/sourcemapped/output/rollup-babel7/step-over-for-of-array.js.map
+  examples/sourcemapped/output/rollup-babel7/step-over-for-of-array-closure.js
+  examples/sourcemapped/output/rollup-babel7/step-over-for-of-array-closure.js.map
+  examples/sourcemapped/output/rollup-babel7/step-over-for-of-closure.js
+  examples/sourcemapped/output/rollup-babel7/step-over-for-of-closure.js.map
+  examples/sourcemapped/output/rollup-babel7/step-over-function-params.js
+  examples/sourcemapped/output/rollup-babel7/step-over-function-params.js.map
+  examples/sourcemapped/output/rollup-babel7/step-over-regenerator-await.js
+  examples/sourcemapped/output/rollup-babel7/step-over-regenerator-await.js.map
+  examples/sourcemapped/output/rollup-babel7/switches.js
+  examples/sourcemapped/output/rollup-babel7/switches.js.map
+  examples/sourcemapped/output/rollup-babel7/this-arguments-bindings.js
+  examples/sourcemapped/output/rollup-babel7/this-arguments-bindings.js.map
+  examples/sourcemapped/output/rollup-babel7/try-catches.js
+  examples/sourcemapped/output/rollup-babel7/try-catches.js.map
+  examples/sourcemapped/output/rollup-babel7/type-module.js
+  examples/sourcemapped/output/rollup-babel7/type-module.js.map
+  examples/sourcemapped/output/rollup-babel7/webpack-functions.js
+  examples/sourcemapped/output/rollup-babel7/webpack-functions.js.map
+  examples/sourcemapped/output/rollup-babel7/webpack-line-mappings.js
+  examples/sourcemapped/output/rollup-babel7/webpack-line-mappings.js.map
   ## END-SOURCEMAPPED-FIXTURES
   examples/ember/quickstart/dist/index.html
   examples/ember/quickstart/dist/assets/quickstart.css
   examples/ember/quickstart/dist/assets/quickstart.js
   examples/ember/quickstart/dist/assets/quickstart.map
   examples/ember/quickstart/dist/assets/vendor.css
   examples/ember/quickstart/dist/assets/vendor.js
   examples/ember/quickstart/dist/assets/vendor.map
--- a/devtools/client/debugger/new/test/mochitest/browser_dbg-sourcemapped-breakpoint-console.js
+++ b/devtools/client/debugger/new/test/mochitest/browser_dbg-sourcemapped-breakpoint-console.js
@@ -1,8 +1,15 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+// This test can be really slow on debug platforms and should be split.
+requestLongerTimeout(3);
+
+ async function evalInConsol
 async function evalInConsoleAtPoint(
   dbg,
   target,
   fixture,
   { line, column },
   statements
 ) {
   const filename = `${target}://./${fixture}/input.`;
--- a/devtools/client/debugger/new/test/mochitest/browser_dbg-sourcemapped-scopes.js
+++ b/devtools/client/debugger/new/test/mochitest/browser_dbg-sourcemapped-scopes.js
@@ -1,17 +1,58 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 // This test can be really slow on debug platforms and should be split.
 requestLongerTimeout(20);
 
 // Tests loading sourcemapped sources for Babel's compile output.
 
+const ACTIVE_TARGETS = new Set([
+  // "webpack3",
+  "webpack3-babel6",
+  // "webpack3-babel7",
+  // "webpack4",
+  // "webpack4-babel6",
+  // "webpack4-babel7",
+  "rollup",
+  // "rollup-babel6",
+  // "rollup-babel7",
+  "parcel",
+]);
+
+const ACTIVE_FIXTURES = [
+  testBabelBindingsWithFlow,
+  testBabelFlowtypeBindings,
+  testEvalMaps,
+  testForOf,
+  testShadowedVars,
+  testLineStartBindingsES6,
+  testThisArgumentsBindings,
+  testClasses,
+  testForLoops,
+  testFunctions,
+  testSwitches,
+  testTryCatches,
+  testLexAndNonlex,
+  testTypescriptClasses,
+  testTypeModule,
+  testTypeScriptCJS,
+  testOutOfOrderDeclarationsCJS,
+  testModulesCJS,
+  testWebpackLineMappings,
+  testWebpackFunctions,
+  testESModules,
+  testESModulesCJS,
+  testESModulesES6,
+];
+
 async function breakpointScopes(dbg, target, fixture, { line, column }, scopes) {
+  if (!ACTIVE_TARGETS.has(target)) return;
+
   const filename = `${target}://./${fixture}/input.`;
   const fnName = pairToFnName(target, fixture);
 
   await invokeWithBreakpoint(
     dbg,
     fnName,
     filename,
     { line, column },
@@ -23,89 +64,101 @@ async function breakpointScopes(dbg, tar
   ok(true, `Ran tests for ${fixture} at line ${line} column ${column}`);
 }
 
 add_task(async function() {
   await pushPref("devtools.debugger.features.map-scopes", true);
 
   const dbg = await initDebugger("doc-sourcemapped.html");
 
-  await testBabelBindingsWithFlow(dbg);
-  await testBabelFlowtypeBindings(dbg);
-  await testEvalMaps(dbg);
-  await testForOf(dbg);
-  await testShadowedVars(dbg);
-  await testLineStartBindingsES6(dbg);
-  await testThisArgumentsBindings(dbg);
-  await testClasses(dbg);
-  await testForLoops(dbg);
-  await testFunctions(dbg);
-  await testSwitches(dbg);
-  await testTryCatches(dbg);
-  await testLexAndNonlex(dbg);
-  await testTypescriptClasses(dbg);
-  await testTypeModule(dbg);
-  await testTypeScriptCJS(dbg);
-  await testOutOfOrderDeclarationsCJS(dbg);
-  await testCommonJS(dbg);
-  await testWebpackLineMappings(dbg);
-  await testWebpackFunctions(dbg);
-  await testESModules(dbg);
-  await testESModulesCJS(dbg);
-  await testESModulesES6(dbg);
+  for (const fixture of ACTIVE_FIXTURES) {
+    await fixture(dbg);
+  }
 });
 
 function targetToFlags(target) {
   const isRollup = target.startsWith("rollup");
   const isWebpack = target.startsWith("webpack");
-  const hasBabel = target.includes("-babel");
+  const isParcel = target.startsWith("parcel");
+  const hasBabel = target.includes("-babel") || isParcel;
+  const isWebpack4 = target.startsWith("webpack4");
 
   // Rollup removes lots of things as dead code, so they are marked as optimized out.
   const rollupOptimized = isRollup ? "(optimized away)" : null;
   const webpackImportGetter = isWebpack ? "Getter" : null;
+  const webpack4ImportGetter = isWebpack4 ? "Getter" : null;
   const maybeLineStart = hasBabel ? col => col : col => 0;
+  const defaultExport = isWebpack4
+      ? name => `${name}()`
+      : name => [name, "(optimized away)"];
 
-  return { isRollup, isWebpack, rollupOptimized, webpackImportGetter, maybeLineStart };
+  return {
+    isRollup,
+    isWebpack,
+    isParcel,
+    rollupOptimized,
+    webpackImportGetter,
+    webpack4ImportGetter,
+    maybeLineStart,
+    defaultExport,
+  };
 }
 function pairToFnName(target, fixture) {
   return (target + "-" + fixture).replace(/-([a-z])/g, (s, c) => c.toUpperCase());
 }
 
+function runtimeFunctionName(target, fixture) {
+  // Webpack 4 appears to output it's bundles in such a way that Spidermonkey
+  if (target === "webpack4") return "js";
+
+  return pairToFnName(target, fixture);
+}
+
 function webpackModule(target, fixture, optimizedOut) {
   return [
-    pairToFnName(target, fixture),
+    runtimeFunctionName(target, fixture),
     ["__webpack_exports__", optimizedOut ? "(optimized away)" : "{\u2026}"],
     optimizedOut ? ["__webpack_require__", "(optimized away)"] : "__webpack_require__()",
     ["arguments", optimizedOut ? "(unavailable)" : "Arguments"],
   ];
 }
 
 async function testBabelBindingsWithFlow(dbg) {
   // Flow is not available on the non-babel builds.
   for (const target of [
+    "parcel",
     "rollup-babel6",
+    "rollup-babel7",
     "webpack3-babel6",
+    "webpack3-babel7",
+    "webpack4-babel6",
+    "webpack4-babel7",
   ]) {
     const { webpackImportGetter } = targetToFlags(target);
 
     await breakpointScopes(dbg, target, "babel-bindings-with-flow", { line: 9, column: 2 }, [
       "root",
       ["value", '"a-named"'],
       "Module",
       ["aNamed", webpackImportGetter || '"a-named"'],
       "root()",
     ]);
   }
 }
 
 async function testBabelFlowtypeBindings(dbg) {
   // Flow is not available on the non-babel builds.
   for (const target of [
+    "parcel",
     "rollup-babel6",
+    "rollup-babel7",
     "webpack3-babel6",
+    "webpack3-babel7",
+    "webpack4-babel6",
+    "webpack4-babel7",
   ]) {
     const { webpackImportGetter } = targetToFlags(target);
 
     await breakpointScopes(
       dbg,
       target,
       "babel-flowtype-bindings",
       { line: 9, column: 2 },
@@ -119,166 +172,212 @@ async function testBabelFlowtypeBindings
   }
 }
 
 async function testEvalMaps(dbg) {
   // At times, this test has been a bit flakey due to the inlined source map
   // never loading. I'm not sure what causes that. If we observe flakiness in CI,
   // we should consider disabling this test for now.
 
-  await breakpointScopes(dbg, "webpack3", "eval-maps", { line: 14, column: 0 }, [
-    "Block",
-    ["<this>", "Window"],
-    ["three", "5"],
-    ["two", "4"],
-    "Block",
-    ["three", "3"],
-    ["two", "2"],
-    "Block",
-    ["arguments", "Arguments"],
-    ["one", "1"],
-    ...webpackModule("webpack3", "eval-maps", true /* optimized out */),
-    ["module", "(optimized away)"],
-    "root",
-  ]);
+  for (const target of [
+    "webpack3",
+    "webpack4",
+  ]) {
+    const { defaultExport } = targetToFlags(target);
+
+    await breakpointScopes(dbg, target, "eval-maps", { line: 14, column: 0 }, [
+      "Block",
+      ["<this>", "Window"],
+      ["three", "5"],
+      ["two", "4"],
+      "Block",
+      ["three", "3"],
+      ["two", "2"],
+      "Block",
+      ["arguments", "Arguments"],
+      ["one", "1"],
+      ...webpackModule(target, "eval-maps", true /* optimized out */),
+      ["module", "(optimized away)"],
+      defaultExport("root"),
+    ]);
+  }
 
   for (const target of [
+    "parcel",
     "rollup",
     "rollup-babel6",
+    "rollup-babel7",
     "webpack3-babel6",
+    "webpack3-babel7",
+    "webpack4-babel6",
+    "webpack4-babel7",
   ]) {
-    const { rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
+    const { defaultExport, rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
 
     await breakpointScopes(dbg, target, "eval-maps", { line: 14, column: maybeLineStart(4) }, [
       "Block",
       ["three", "5"],
       ["two", "4"],
       "Function Body",
       ["three", rollupOptimized || "3"],
       ["two", rollupOptimized || "2"],
       "root",
       ["one", "1"],
       "Module",
-      "root",
+      defaultExport("root"),
     ]);
   }
 }
 
 async function testForOf(dbg) {
-  await breakpointScopes(dbg, "webpack3", "for-of", { line: 5, column: 0 }, [
-    "Block",
-    ["<this>", "Window"],
-    ["x", "1"],
-    "Block",
-    ["arguments", "Arguments"],
-    "doThing()",
-    "Block",
-    "mod",
-    ...webpackModule("webpack3", "for-of", true /* optimizedOut */),
-    "forOf",
-    "module"
-  ]);
+  for (const target of [
+    "webpack3",
+    "webpack4",
+  ]) {
+    const { defaultExport } = targetToFlags(target);
+
+    await breakpointScopes(dbg, target, "for-of", { line: 5, column: 0 }, [
+      "Block",
+      ["<this>", "Window"],
+      ["x", "1"],
+      "Block",
+      ["arguments", "Arguments"],
+      "doThing()",
+      "Block",
+      "mod",
+      ...webpackModule(target, "for-of", true /* optimizedOut */),
+      defaultExport("forOf"),
+      "module"
+    ]);
+  }
 
   for (const target of [
+    "parcel",
     "rollup",
     "rollup-babel6",
+    "rollup-babel7",
     "webpack3-babel6",
+    "webpack3-babel7",
+    "webpack4-babel6",
+    "webpack4-babel7",
   ]) {
-    const { rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
+    const { defaultExport, rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
 
     await breakpointScopes(dbg, target, "for-of", { line: 5, column: maybeLineStart(4) }, [
       "For",
       ["x", "1"],
       "forOf",
       "doThing()",
       "Module",
-      "forOf",
+      defaultExport("forOf"),
       "mod"
     ]);
   }
 }
 
 async function testShadowedVars(dbg) {
-  await breakpointScopes(dbg, "webpack3", "shadowed-vars", { line: 18, column: 0 }, [
-    "Block",
-    ["<this>", "Window"],
-    ["aConst", '"const3"'],
-    ["aLet", '"let3"'],
-
-    "Block",
-    ["aConst", '"const2"'],
-    ["aLet", '"let2"'],
-    "Outer()",
+  for (const target of [
+    "webpack3",
+    "webpack4",
+  ]) {
+    await breakpointScopes(dbg, target, "shadowed-vars", { line: 18, column: 0 }, [
+      "Block",
+      ["<this>", "Window"],
+      ["aConst", '"const3"'],
+      ["aLet", '"let3"'],
 
-    "Block",
-    ["aConst", '"const1"'],
-    ["aLet", '"let1"'],
-    "Outer()",
+      "Block",
+      ["aConst", '"const2"'],
+      ["aLet", '"let2"'],
+      "Outer()",
 
-    "Block",
-    ["arguments", "Arguments"],
-    ["aVar", '"var3"'],
+      "Block",
+      ["aConst", '"const1"'],
+      ["aLet", '"let1"'],
+      "Outer()",
 
-    ...webpackModule("webpack3", "shadowed-vars", true /* optimizedOut */),
-    ["module", "(optimized away)"],
-  ]);
+      "Block",
+      ["arguments", "Arguments"],
+      ["aVar", '"var3"'],
+
+      ...webpackModule(target, "shadowed-vars", true /* optimizedOut */),
+      ["module", "(optimized away)"],
+    ]);
+  }
 
   for (const target of [
+    "parcel",
     "rollup",
     "rollup-babel6",
+    "rollup-babel7",
     "webpack3-babel6",
+    "webpack3-babel7",
+    "webpack4-babel6",
+    "webpack4-babel7",
   ]) {
-    const { rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
+    const { isParcel, rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
 
     await breakpointScopes(dbg, target, "shadowed-vars", { line: 18, column: maybeLineStart(6) }, [
       "Block",
       ["aConst", rollupOptimized || '"const3"'],
       ["aLet", rollupOptimized || '"let3"'],
       "Block",
       ["aConst", rollupOptimized || '"const2"'],
       ["aLet", rollupOptimized || '"let2"'],
-      rollupOptimized ? ["Outer", rollupOptimized ] : "Outer:_Outer()",
+      isParcel ?
+        "Outer()" :
+        rollupOptimized ? ["Outer", rollupOptimized ] : "Outer:_Outer()",
       "Function Body",
       ["aConst", rollupOptimized || '"const1"'],
       ["aLet", rollupOptimized || '"let1"'],
       rollupOptimized ? ["Outer", rollupOptimized ] : "Outer()",
       "default",
       ["aVar", rollupOptimized || '"var3"']
     ]);
   }
 }
 
 async function testLineStartBindingsES6(dbg) {
-  await breakpointScopes(
-    dbg,
+  for (const target of [
     "webpack3",
-    "line-start-bindings-es6",
-    { line: 19, column: 0 },
-    [
-      "Block",
-      ["<this>", "{\u2026}"],
-      ["one", "1"],
-      ["two", "2"],
-      "Block",
-      ["arguments", "Arguments"],
+    "webpack4",
+  ]) {
+    await breakpointScopes(
+      dbg,
+      target,
+      "line-start-bindings-es6",
+      { line: 19, column: 0 },
+      [
+        "Block",
+        ["<this>", "{\u2026}"],
+        ["one", "1"],
+        ["two", "2"],
+        "Block",
+        ["arguments", "Arguments"],
 
-      "Block",
-      ["aFunc", "(optimized away)"],
-      ["arguments", "(unavailable)"],
+        "Block",
+        ["aFunc", "(optimized away)"],
+        ["arguments", "(unavailable)"],
 
-      ...webpackModule("webpack3", "line-start-bindings-es6", true /* optimizedOut */),
-      ["module", "(optimized away)"],
-      "root()"
-    ]
-  );
+        ...webpackModule(target, "line-start-bindings-es6", true /* optimizedOut */),
+        ["module", "(optimized away)"],
+        "root()"
+      ]
+    );
+  }
 
   for (const target of [
+    "parcel",
     "rollup",
     "rollup-babel6",
+    "rollup-babel7",
     "webpack3-babel6",
+    "webpack3-babel7",
+    "webpack4-babel6",
+    "webpack4-babel7",
   ]) {
     const { rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
 
     await breakpointScopes(
       dbg,
       target,
       "line-start-bindings-es6",
       { line: 19, column: maybeLineStart(4) },
@@ -292,77 +391,87 @@ async function testLineStartBindingsES6(
         "Module",
         "root()"
       ]
     );
   }
 }
 
 async function testThisArgumentsBindings(dbg) {
-  await breakpointScopes(
-    dbg,
+  for (const target of [
     "webpack3",
-    "this-arguments-bindings",
-    { line: 4, column: 0 },
-    [
-      "Block",
-      ["<this>", '"this-value"'],
-      ["arrow", "(uninitialized)"],
-      "fn",
-      ["arg", '"arg-value"'],
-      ["arguments", "Arguments"],
-      "root",
-      ["arguments", "Arguments"],
-      "fn()",
-      ...webpackModule("webpack3", "this-arguments-bindings", true /* optimizedOut */),
-      ["module", "(optimized away)"],
-      "root()"
-    ]
-  );
+    "webpack4",
+  ]) {
+    await breakpointScopes(
+      dbg,
+      target,
+      "this-arguments-bindings",
+      { line: 4, column: 0 },
+      [
+        "Block",
+        ["<this>", '"this-value"'],
+        ["arrow", "(uninitialized)"],
+        "fn",
+        ["arg", '"arg-value"'],
+        ["arguments", "Arguments"],
+        "root",
+        ["arguments", "Arguments"],
+        "fn()",
+        ...webpackModule(target, "this-arguments-bindings", true /* optimizedOut */),
+        ["module", "(optimized away)"],
+        "root()"
+      ]
+    );
 
-  await breakpointScopes(
-    dbg,
-    "webpack3",
-    "this-arguments-bindings",
-    { line: 8, column: 0 },
-    [
-      "Block",
-      ["<this>", '"this-value"'],
-      ["argArrow", '"arrow-arg"'],
-      ["arguments", "Arguments"],
-      "Block",
-      ["arrow", "(optimized away)"],
-      "fn",
-      ["arg", '"arg-value"'],
-      ["arguments", "Arguments"],
-      "root",
-      ["arguments", "Arguments"],
-      "fn()",
-      ...webpackModule("webpack3", "this-arguments-bindings", true /* optimizedOut */),
-      ["module", "(optimized away)"],
-      "root()"
-    ]
-  );
+    await breakpointScopes(
+      dbg,
+      target,
+      "this-arguments-bindings",
+      { line: 8, column: 0 },
+      [
+        "Block",
+        ["<this>", '"this-value"'],
+        ["argArrow", '"arrow-arg"'],
+        ["arguments", "Arguments"],
+        "Block",
+        ["arrow", "(optimized away)"],
+        "fn",
+        ["arg", '"arg-value"'],
+        ["arguments", "Arguments"],
+        "root",
+        ["arguments", "Arguments"],
+        "fn()",
+        ...webpackModule(target, "this-arguments-bindings", true /* optimizedOut */),
+        ["module", "(optimized away)"],
+        "root()"
+      ]
+    );
+  }
 
   for (const target of [
+    "parcel",
     "rollup",
     "rollup-babel6",
+    "rollup-babel7",
     "webpack3-babel6",
+    "webpack3-babel7",
+    "webpack4-babel6",
+    "webpack4-babel7",
   ]) {
-    const { rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
+    const { isParcel, rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
 
     await breakpointScopes(
       dbg,
       target,
       "this-arguments-bindings",
       { line: 4, column: maybeLineStart(4) },
       [
         "Function Body",
         ["<this>", '"this-value"'],
-        ["arrow", target === "rollup" ? "(uninitialized)" : "undefined"],
+        ["arrow", (target === "rollup" || isParcel) ? "(uninitialized)" : "undefined"],
         "fn",
         ["arg", '"arg-value"'],
         ["arguments", "Arguments"],
         "root",
         "fn()",
         "Module",
         "root()"
       ]
@@ -373,81 +482,91 @@ async function testThisArgumentsBindings
       target,
       "this-arguments-bindings",
       { line: 8, column: maybeLineStart(6) },
       [
         "arrow",
         ["<this>", '"this-value"'],
         ["argArrow", '"arrow-arg"'],
         "Function Body",
-        target === "rollup" ? ["arrow", "(optimized away)"] : "arrow()",
+        (target === "rollup" || isParcel) ? ["arrow", "(optimized away)"] : "arrow()",
         "fn",
         ["arg", '"arg-value"'],
         ["arguments", "Arguments"],
         "root",
         "fn()",
         "Module",
         "root()"
       ]
     );
   }
 }
 
 async function testClasses(dbg) {
-  await breakpointScopes(dbg, "webpack3", "classes", { line: 6, column: 0 }, [
-    "Block",
-    ["<this>", "{}"],
-    ["arguments", "Arguments"],
-    "Block",
-    ["Thing", "(optimized away)"],
-    "Block",
-    "Another()",
-    ["one", "1"],
-    "Thing()",
-    "Block",
-    ["arguments", "(unavailable)"],
-    ...webpackModule("webpack3", "classes", true /* optimizedOut */),
-    ["module", "(optimized away)"],
-    "root()"
-  ]);
+  for (const target of [
+    "webpack3",
+    "webpack4",
+  ]) {
+    await breakpointScopes(dbg, target, "classes", { line: 6, column: 0 }, [
+      "Block",
+      ["<this>", "{}"],
+      ["arguments", "Arguments"],
+      "Block",
+      ["Thing", "(optimized away)"],
+      "Block",
+      "Another()",
+      ["one", "1"],
+      "Thing()",
+      "Block",
+      ["arguments", "(unavailable)"],
+      ...webpackModule(target, "classes", true /* optimizedOut */),
+      ["module", "(optimized away)"],
+      "root()"
+    ]);
 
-  await breakpointScopes(dbg, "webpack3", "classes", { line: 16, column: 0 }, [
-    "Block",
-    ["<this>", "{}"],
-    ["three", "3"],
-    ["two", "2"],
-    "Block",
-    ["arguments", "Arguments"],
-    "Block",
-    "Another()",
-    "Block",
-    "Another()",
-    ["one", "1"],
-    "Thing()",
-    "Block",
-    ["arguments", "(unavailable)"],
-    ...webpackModule("webpack3", "classes", true /* optimizedOut */),
-    ["module", "(optimized away)"],
-    "root()"
-  ]);
+    await breakpointScopes(dbg, target, "classes", { line: 16, column: 0 }, [
+      "Block",
+      ["<this>", "{}"],
+      ["three", "3"],
+      ["two", "2"],
+      "Block",
+      ["arguments", "Arguments"],
+      "Block",
+      "Another()",
+      "Block",
+      "Another()",
+      ["one", "1"],
+      "Thing()",
+      "Block",
+      ["arguments", "(unavailable)"],
+      ...webpackModule(target, "classes", true /* optimizedOut */),
+      ["module", "(optimized away)"],
+      "root()"
+    ]);
+  }
 
   for (const target of [
+    "parcel",
     "rollup",
     "rollup-babel6",
+    "rollup-babel7",
     "webpack3-babel6",
+    "webpack3-babel7",
+    "webpack4-babel6",
+    "webpack4-babel7",
   ]) {
-    const { rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
+    const { isParcel, rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
 
     await breakpointScopes(dbg, target, "classes", { line: 6, column: maybeLineStart(6) }, [
       "Class",
-      target === "rollup" ? ["Thing", "(optimized away)"] : "Thing()",
+      (target === "rollup" || isParcel) ? ["Thing", "(optimized away)"] : "Thing()",
       "Function Body",
       "Another()",
       "one",
-      target === "rollup" ? ["Thing", "(optimized away)"] : "Thing()",
+      (target === "rollup" || isParcel) ? ["Thing", "(optimized away)"] : "Thing()",
       "Module",
       "root()"
     ]);
 
     await breakpointScopes(dbg, target, "classes", { line: 16, column: maybeLineStart(6) }, [
       "Function Body",
       ["three", rollupOptimized || "3"],
       ["two", rollupOptimized || "2"],
@@ -459,57 +578,67 @@ async function testClasses(dbg) {
       "Thing()",
       "Module",
       "root()"
     ]);
   }
 }
 
 async function testForLoops(dbg) {
-  await breakpointScopes(dbg, "webpack3", "for-loops", { line: 5, column: 0 }, [
-    "Block",
-    ["<this>", "Window"],
-    ["i", "1"],
-    "Block",
-    ["i", "0"],
-    "Block",
-    ["arguments", "Arguments"],
-    ...webpackModule("webpack3", "for-loops", true /* optimizedOut */),
-    ["module", "(optimized away)"],
-    "root()"
-  ]);
-  await breakpointScopes(dbg, "webpack3", "for-loops", { line: 9, column: 0 }, [
-    "Block",
-    ["<this>", "Window"],
-    ["i", '"2"'],
-    "Block",
-    ["i", "0"],
-    "Block",
-    ["arguments", "Arguments"],
-    ...webpackModule("webpack3", "for-loops", true /* optimizedOut */),
-    ["module", "(optimized away)"],
-    "root()"
-  ]);
-  await breakpointScopes(dbg, "webpack3", "for-loops", { line: 13, column: 0 }, [
-    "Block",
-    ["<this>", "Window"],
-    ["i", "3"],
-    "Block",
-    ["i", "0"],
-    "Block",
-    ["arguments", "Arguments"],
-    ...webpackModule("webpack3", "for-loops", true /* optimizedOut */),
-    ["module", "(optimized away)"],
-    "root()"
-  ]);
+  for (const target of [
+    "webpack3",
+    "webpack4",
+  ]) {
+    await breakpointScopes(dbg, target, "for-loops", { line: 5, column: 0 }, [
+      "Block",
+      ["<this>", "Window"],
+      ["i", "1"],
+      "Block",
+      ["i", "0"],
+      "Block",
+      ["arguments", "Arguments"],
+      ...webpackModule(target, "for-loops", true /* optimizedOut */),
+      ["module", "(optimized away)"],
+      "root()"
+    ]);
+    await breakpointScopes(dbg, target, "for-loops", { line: 9, column: 0 }, [
+      "Block",
+      ["<this>", "Window"],
+      ["i", '"2"'],
+      "Block",
+      ["i", "0"],
+      "Block",
+      ["arguments", "Arguments"],
+      ...webpackModule(target, "for-loops", true /* optimizedOut */),
+      ["module", "(optimized away)"],
+      "root()"
+    ]);
+    await breakpointScopes(dbg, target, "for-loops", { line: 13, column: 0 }, [
+      "Block",
+      ["<this>", "Window"],
+      ["i", "3"],
+      "Block",
+      ["i", "0"],
+      "Block",
+      ["arguments", "Arguments"],
+      ...webpackModule(target, "for-loops", true /* optimizedOut */),
+      ["module", "(optimized away)"],
+      "root()"
+    ]);
+  }
 
   for (const target of [
+    "parcel",
     "rollup",
     "rollup-babel6",
+    "rollup-babel7",
     "webpack3-babel6",
+    "webpack3-babel7",
+    "webpack4-babel6",
+    "webpack4-babel7",
   ]) {
     const { rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
 
     await breakpointScopes(dbg, target, "for-loops", { line: 5, column: maybeLineStart(4) }, [
       "For",
       ["i", "1"],
       "Function Body",
       ["i", rollupOptimized || "0"],
@@ -531,102 +660,122 @@ async function testForLoops(dbg) {
       ["i", rollupOptimized || "0"],
       "Module",
       "root()"
     ]);
   }
 }
 
 async function testFunctions(dbg) {
-  await breakpointScopes(dbg, "webpack3", "functions", { line: 6, column: 0 }, [
-    "Block",
-    ["<this>", "(optimized away)"],
-    ["arguments", "Arguments"],
-    ["p3", "undefined"],
-    "Block",
-    "arrow()",
-    "inner",
-    ["arguments", "Arguments"],
-    ["p2", "undefined"],
-    "Block",
-    "inner()",
-    "Block",
-    ["inner", "(optimized away)"],
-    "decl",
-    ["arguments", "Arguments"],
-    ["p1", "undefined"],
-    "root",
-    ["arguments", "Arguments"],
-    "decl()",
-    ...webpackModule("webpack3", "functions", true /* optimizedOut */),
-    ["module", "(optimized away)"],
-    "root()"
-  ]);
+  for (const target of [
+    "webpack3",
+    "webpack4",
+  ]) {
+    await breakpointScopes(dbg, target, "functions", { line: 6, column: 0 }, [
+      "Block",
+      ["<this>", "(optimized away)"],
+      ["arguments", "Arguments"],
+      ["p3", "undefined"],
+      "Block",
+      "arrow()",
+      "inner",
+      ["arguments", "Arguments"],
+      ["p2", "undefined"],
+      "Block",
+      "inner()",
+      "Block",
+      ["inner", "(optimized away)"],
+      "decl",
+      ["arguments", "Arguments"],
+      ["p1", "undefined"],
+      "root",
+      ["arguments", "Arguments"],
+      "decl()",
+      ...webpackModule(target, "functions", true /* optimizedOut */),
+      ["module", "(optimized away)"],
+      "root()"
+    ]);
+  }
 
   for (const target of [
+    "parcel",
     "rollup",
     "rollup-babel6",
+    "rollup-babel7",
     "webpack3-babel6",
+    "webpack3-babel7",
+    "webpack4-babel6",
+    "webpack4-babel7",
   ]) {
-    const { rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
+    const { isParcel, rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
 
     await breakpointScopes(dbg, target, "functions", { line: 6, column: maybeLineStart(8) }, [
       "arrow",
       ["p3", "undefined"],
       "Function Body",
       "arrow()",
       "inner",
       ["p2", "undefined"],
       "Function Expression",
       "inner()",
       "Function Body",
-      target === "rollup" ? ["inner", "(optimized away)"] : "inner()",
+      (target === "rollup" || isParcel) ? ["inner", "(optimized away)"] : "inner()",
       "decl",
       ["p1", "undefined"],
       "root",
       "decl()",
       "Module",
       "root()"
     ]);
   }
 }
 
 async function testSwitches(dbg) {
-  await breakpointScopes(dbg, "webpack3", "switches", { line: 7, column: 0 }, [
-    "Block",
-    ["<this>", "Window"],
-    ["val", "2"],
-    "Block",
-    ["val", "1"],
-    "Block",
-    ["arguments", "Arguments"],
-    ...webpackModule("webpack3", "switches", true /* optimizedOut */),
-    ["module", "(optimized away)"],
-    "root()"
-  ]);
+  for (const target of [
+    "webpack3",
+    "webpack4",
+  ]) {
+    await breakpointScopes(dbg, target, "switches", { line: 7, column: 0 }, [
+      "Block",
+      ["<this>", "Window"],
+      ["val", "2"],
+      "Block",
+      ["val", "1"],
+      "Block",
+      ["arguments", "Arguments"],
+      ...webpackModule(target, "switches", true /* optimizedOut */),
+      ["module", "(optimized away)"],
+      "root()"
+    ]);
 
-  await breakpointScopes(dbg, "webpack3", "switches", { line: 10, column: 0 }, [
-    "Block",
-    ["<this>", "Window"],
-    ["val", "3"],
-    "Block",
-    ["val", "2"],
-    "Block",
-    ["val", "1"],
-    "Block",
-    ["arguments", "Arguments"],
-    ...webpackModule("webpack3", "switches", true /* optimizedOut */),
-    ["module", "(optimized away)"],
-    "root()"
-  ]);
+    await breakpointScopes(dbg, target, "switches", { line: 10, column: 0 }, [
+      "Block",
+      ["<this>", "Window"],
+      ["val", "3"],
+      "Block",
+      ["val", "2"],
+      "Block",
+      ["val", "1"],
+      "Block",
+      ["arguments", "Arguments"],
+      ...webpackModule(target, "switches", true /* optimizedOut */),
+      ["module", "(optimized away)"],
+      "root()"
+    ]);
+  }
 
   for (const target of [
+    "parcel",
     "rollup",
     "rollup-babel6",
+    "rollup-babel7",
     "webpack3-babel6",
+    "webpack3-babel7",
+    "webpack4-babel6",
+    "webpack4-babel7",
   ]) {
     const { rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
 
     await breakpointScopes(dbg, target, "switches", { line: 7, column: maybeLineStart(6) }, [
       "Switch",
       ["val", rollupOptimized || "2"],
       "Function Body",
       ["val", rollupOptimized || "1"],
@@ -643,35 +792,45 @@ async function testSwitches(dbg) {
       ["val", rollupOptimized || "1"],
       "Module",
       "root()"
     ]);
   }
 }
 
 async function testTryCatches(dbg) {
-  await breakpointScopes(dbg, "webpack3", "try-catches", { line: 8, column: 0 }, [
-    "Block",
-    ["<this>", "Window"],
-    ["two", "2"],
-    "Block",
-    ["err", '"AnError"'],
-    "Block",
-    ["one", "1"],
-    "Block",
-    ["arguments", "Arguments"],
-    ...webpackModule("webpack3", "try-catches", true /* optimizedOut */),
-    ["module", "(optimized away)"],
-    "root()"
-  ]);
+  for (const target of [
+    "webpack3",
+    "webpack4",
+  ]) {
+    await breakpointScopes(dbg, target, "try-catches", { line: 8, column: 0 }, [
+      "Block",
+      ["<this>", "Window"],
+      ["two", "2"],
+      "Block",
+      ["err", '"AnError"'],
+      "Block",
+      ["one", "1"],
+      "Block",
+      ["arguments", "Arguments"],
+      ...webpackModule(target, "try-catches", true /* optimizedOut */),
+      ["module", "(optimized away)"],
+      "root()"
+    ]);
+  }
 
   for (const target of [
+    "parcel",
     "rollup",
     "rollup-babel6",
+    "rollup-babel7",
     "webpack3-babel6",
+    "webpack3-babel7",
+    "webpack4-babel6",
+    "webpack4-babel7",
   ]) {
     const { rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
 
     await breakpointScopes(dbg, target, "try-catches", { line: 8, column: maybeLineStart(4) }, [
       "Block",
       ["two", rollupOptimized || "2"],
       "Catch",
       ["err", '"AnError"'],
@@ -679,139 +838,177 @@ async function testTryCatches(dbg) {
       ["one", rollupOptimized || "1"],
       "Module",
       "root()"
     ]);
   }
 }
 
 async function testLexAndNonlex(dbg) {
-  await breakpointScopes(dbg, "webpack3", "lex-and-nonlex", { line: 3, column: 0 }, [
-    "Block",
-    ["<this>", "undefined"],
-    ["arguments", "Arguments"],
-    "Block",
-    "Thing()",
-    "Block",
-    ["arguments", "(unavailable)"],
-    ["someHelper", "(optimized away)"],
-    ...webpackModule("webpack3", "lex-and-nonlex", true /* optimizedOut */),
-    ["module", "(optimized away)"],
-    "root()"
-  ]);
+  for (const target of [
+    "webpack3",
+    "webpack4",
+  ]) {
+    await breakpointScopes(dbg, target, "lex-and-nonlex", { line: 3, column: 0 }, [
+      "Block",
+      ["<this>", "undefined"],
+      ["arguments", "Arguments"],
+      "Block",
+      "Thing()",
+      "Block",
+      ["arguments", "(unavailable)"],
+      ["someHelper", "(optimized away)"],
+      ...webpackModule(target, "lex-and-nonlex", true /* optimizedOut */),
+      ["module", "(optimized away)"],
+      "root()"
+    ]);
+  }
 
   for (const target of [
+    "parcel",
     "rollup",
     "rollup-babel6",
+    "rollup-babel7",
     "webpack3-babel6",
+    "webpack3-babel7",
+    "webpack4-babel6",
+    "webpack4-babel7",
   ]) {
-    const { rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
+    const { isParcel, rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
 
     await breakpointScopes(dbg, target, "lex-and-nonlex", { line: 3, column: maybeLineStart(4) }, [
       "Function Body",
       "Thing()",
       "root",
-      target === "rollup" ? ["someHelper", "(optimized away)"] : "someHelper()",
+      (target === "rollup" || isParcel) ? ["someHelper", "(optimized away)"] : "someHelper()",
       "Module",
       "root()"
     ]);
   }
 }
 
 async function testTypescriptClasses(dbg) {
   // Typescript is not available on the Babel builds.
   for (const target of [
+    "parcel",
     "webpack3",
+    "webpack4",
     "rollup",
   ]) {
-    const { isRollup, rollupOptimized } = targetToFlags(target);
+    const { isRollup, isParcel, rollupOptimized } = targetToFlags(target);
 
     await breakpointScopes(dbg, target, "typescript-classes", { line: 50, column: 2 }, [
       "Module",
       "AnotherThing()",
       "AppComponent()",
       "decoratorFactory()",
       rollupOptimized ? ["def", rollupOptimized] : "def()",
       rollupOptimized ? ["ExportedOther", rollupOptimized] : "ExportedOther()",
       rollupOptimized ? ["ExpressionClass", rollupOptimized] : "ExpressionClass:Foo()",
       "fn()",
       // Rollup optimizes out the 'ns' reference here, but when it does, it leave a mapping
       // pointed at a location that is super weird, so it ends up being unmapped instead
       // be "(optimized out)".
-      ["ns", isRollup ? "(unmapped)" : "{\u2026}"],
+      // Parcel converts the "ns;" mapping into a single full-line mapping, for some reason.
+      // That may have to do with https://github.com/parcel-bundler/parcel/pull/1755#discussion_r205584159
+      // though it's not 100% clear.
+      ["ns", (isRollup || isParcel) ? "(unmapped)" : "{\u2026}"],
       "SubDecl()",
       "SubVar:SubExpr()"
     ]);
   }
 }
 
 async function testTypeModule(dbg) {
-  await breakpointScopes(dbg, "webpack3", "type-module", { line: 7, column: 0 }, [
-    "Block",
-    ["<this>", "Window"],
-    ["arguments", "Arguments"],
-    "Block",
-    ["alsoModuleScoped", "2"],
-    ...webpackModule("webpack3", "type-module", true /* optimizedOut */),
-    ["module", "(optimized away)"],
-    ["moduleScoped", "1"],
-    "thirdModuleScoped()"
-  ]);
+  for (const target of [
+    "webpack3",
+    "webpack4",
+  ]) {
+    await breakpointScopes(dbg, target, "type-module", { line: 7, column: 0 }, [
+      "Block",
+      ["<this>", "Window"],
+      ["arguments", "Arguments"],
+      "Block",
+      ["alsoModuleScoped", "2"],
+      ...webpackModule(target, "type-module", true /* optimizedOut */),
+      ["module", "(optimized away)"],
+      ["moduleScoped", "1"],
+      "thirdModuleScoped()"
+    ]);
+  }
 
   for (const target of [
+    "parcel",
     "rollup",
     "rollup-babel6",
+    "rollup-babel7",
     "webpack3-babel6",
+    "webpack3-babel7",
+    "webpack4-babel6",
+    "webpack4-babel7",
   ]) {
     const { rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
 
     await breakpointScopes(dbg, target, "type-module", { line: 7, column: maybeLineStart(2) }, [
       "Module",
       ["alsoModuleScoped", "2"],
       ["moduleScoped", "1"],
       "thirdModuleScoped()"
     ]);
   }
 }
 
 async function testTypeScriptCJS(dbg) {
-  await breakpointScopes(dbg, "webpack3", "type-script-cjs", { line: 7, column: 0 }, [
-    "Block",
-    ["<this>", "Window"],
-    ["arguments", "Arguments"],
-    "Block",
-    "alsoModuleScopes",
+  for (const target of [
+    "webpack3",
+    "webpack4",
+  ]) {
+    await breakpointScopes(dbg, target, "type-script-cjs", { line: 7, column: 0 }, [
+      "Block",
+      ["<this>", "Window"],
+      ["arguments", "Arguments"],
+      "Block",
+      "alsoModuleScopes",
 
-    "webpack3TypeScriptCjs",
-    ["arguments", "(unavailable)"],
-    ["exports", "(optimized away)"],
-    ["module", "(optimized away)"],
-    "moduleScoped",
-    "nonModules",
-    "thirdModuleScoped",
-  ]);
+      runtimeFunctionName(target, "type-script-cjs"),
+      ["arguments", "(unavailable)"],
+      ["exports", "(optimized away)"],
+      ["module", "(optimized away)"],
+      "moduleScoped",
+      "nonModules",
+      "thirdModuleScoped",
+    ]);
+  }
 
   // CJS does not work on Rollup.
   for (const target of [
+    "parcel",
     "webpack3-babel6",
+    "webpack3-babel7",
+    "webpack4-babel6",
+    "webpack4-babel7",
   ]) {
     await breakpointScopes(dbg, target, "type-script-cjs", { line: 7, column: 2 }, [
       "Module",
       "alsoModuleScopes",
       "moduleScoped",
       "nonModules",
       "thirdModuleScoped",
     ]);
   }
 }
 
 async function testOutOfOrderDeclarationsCJS(dbg) {
   // CJS does not work on Rollup.
   for (const target of [
+    "parcel",
     "webpack3-babel6",
+    "webpack3-babel7",
+    "webpack4-babel6",
+    "webpack4-babel7",
   ]) {
     await breakpointScopes(
       dbg,
       target,
       "out-of-order-declarations-cjs",
       { line: 8, column: 4 },
       [
         "callback",
@@ -824,42 +1021,51 @@ async function testOutOfOrderDeclaration
         "Module",
 
         // This value is currently optimized away, which isn't 100% accurate.
         // Because import declarations is the last thing in the file, our current
         // logic doesn't cover _both_ 'var' statements that it generates,
         // making us use the first, optimized-out binding. Given that imports
         // are almost never the last thing in a file though, this is probably not
         // a huge deal for now.
-        ["aDefault", "(optimized away)"],
+        ["aDefault", target.match(/webpack(3|4)-babel7/) ? '"a-default"' : "(optimized away)"],
         ["root", "(optimized away)"],
         ["val", "(optimized away)"]
       ]
     );
   }
 }
 
-async function testCommonJS(dbg) {
-  await breakpointScopes(dbg, "webpack3", "modules-cjs", { line: 7, column: 0 }, [
-    "Block",
-    ["<this>", "Window"],
-    ["arguments", "Arguments"],
-    "Block",
-    ["alsoModuleScoped", "2"],
-    "webpack3ModulesCjs",
-    ["arguments", "(unavailable)"],
-    ["exports", "(optimized away)"],
-    ["module", "(optimized away)"],
-    ["moduleScoped", "1"],
-    "thirdModuleScoped()"
-  ]);
+async function testModulesCJS(dbg) {
+  for (const target of [
+    "webpack3",
+    "webpack4",
+  ]) {
+    await breakpointScopes(dbg, target, "modules-cjs", { line: 7, column: 0 }, [
+      "Block",
+      ["<this>", "Window"],
+      ["arguments", "Arguments"],
+      "Block",
+      ["alsoModuleScoped", "2"],
+      runtimeFunctionName(target, "modules-cjs"),
+      ["arguments", "(unavailable)"],
+      ["exports", "(optimized away)"],
+      ["module", "(optimized away)"],
+      ["moduleScoped", "1"],
+      "thirdModuleScoped()"
+    ]);
+  }
 
   // CJS does not work on Rollup.
   for (const target of [
+    "parcel",
     "webpack3-babel6",
+    "webpack3-babel7",
+    "webpack4-babel6",
+    "webpack4-babel7",
   ]) {
     await breakpointScopes(dbg, target, "modules-cjs", { line: 7, column: 2 }, [
       "Module",
       ["alsoModuleScoped", "2"],
       ["moduleScoped", "1"],
       "thirdModuleScoped()"
     ]);
   }
@@ -881,53 +1087,90 @@ async function testWebpackLineMappings(d
       ["someName", "(optimized away)"],
       "Block",
       ["two", "2"],
       "Block",
       ["one", "1"],
       "root",
       ["arguments", "Arguments"],
       "fn:someName()",
-      "webpack3WebpackLineMappings",
+      runtimeFunctionName("webpack3", "webpack-line-mappings"),
       ["__webpack_exports__", "(optimized away)"],
       ["__WEBPACK_IMPORTED_MODULE_0__src_mod1__", "{\u2026}"],
       ["__webpack_require__", "(optimized away)"],
       ["arguments", "(unavailable)"],
       ["module", "(optimized away)"],
       "root()"
     ]
   );
+
+  await breakpointScopes(
+    dbg,
+    "webpack4",
+    "webpack-line-mappings",
+    { line: 11, column: 0 },
+    [
+      "Block",
+      ["<this>", '"this-value"'],
+      ["arg", '"arg-value"'],
+      ["arguments", "Arguments"],
+      ["inner", "undefined"],
+      "Block",
+      ["someName", "(optimized away)"],
+      "Block",
+      ["two", "2"],
+      "Block",
+      ["one", "1"],
+      "root",
+      ["arguments", "Arguments"],
+      "fn:someName()",
+      runtimeFunctionName("webpack4", "webpack-line-mappings"),
+      ["__webpack_exports__", "(optimized away)"],
+      ["__webpack_require__", "(optimized away)"],
+      ["_src_mod1__WEBPACK_IMPORTED_MODULE_0__", "{\u2026}"],
+      ["arguments", "(unavailable)"],
+      ["module", "(optimized away)"],
+      "root()"
+    ]
+  );
 }
 
 async function testWebpackFunctions(dbg) {
-  await breakpointScopes(dbg, "webpack3", "webpack-functions", { line: 4, column: 0 }, [
-    "Block",
-    ["<this>", "{\u2026}"],
-    ["arguments", "Arguments"],
-    ["x", "4"],
-    "webpack3WebpackFunctions",
-    ["__webpack_exports__", "(optimized away)"],
-    ["__webpack_require__", "(optimized away)"],
-    ["arguments", "(unavailable)"],
-    ["module", "{\u2026}"],
-    ["root", "(optimized away)"]
-  ]);
+  for (const target of [
+    "webpack3",
+    "webpack4",
+  ]) {
+    const { defaultExport } = targetToFlags(target);
+
+    await breakpointScopes(dbg, target, "webpack-functions", { line: 4, column: 0 }, [
+      "Block",
+      ["<this>", "{\u2026}"],
+      ["arguments", "Arguments"],
+      ["x", "4"],
+      runtimeFunctionName(target, "webpack-functions"),
+      ["__webpack_exports__", "(optimized away)"],
+      ["__webpack_require__", "(optimized away)"],
+      ["arguments", "(unavailable)"],
+      ["module", "{\u2026}"],
+      defaultExport("root")
+    ]);
+  }
 }
 
 async function testESModules(dbg) {
   await breakpointScopes(
     dbg,
     "webpack3",
     "esmodules",
     { line: 20, column: 0 },
     [
       "Block",
       ["<this>", "Window"],
       ["arguments", "Arguments"],
-      pairToFnName("webpack3", "esmodules"),
+      runtimeFunctionName("webpack3", "esmodules"),
       "__webpack_exports__",
       "__WEBPACK_IMPORTED_MODULE_0__src_mod1__",
       "__WEBPACK_IMPORTED_MODULE_1__src_mod2__",
       "__WEBPACK_IMPORTED_MODULE_10__src_optimized_out__",
       "__WEBPACK_IMPORTED_MODULE_2__src_mod3__",
       "__WEBPACK_IMPORTED_MODULE_3__src_mod4__",
       "__WEBPACK_IMPORTED_MODULE_4__src_mod5__",
       "__WEBPACK_IMPORTED_MODULE_5__src_mod6__",
@@ -938,21 +1181,55 @@ async function testESModules(dbg) {
       "__webpack_require__",
       "arguments",
       "example",
       "module",
       "root()",
     ]
   );
 
+  await breakpointScopes(
+    dbg,
+    "webpack4",
+    "esmodules",
+    { line: 20, column: 0 },
+    [
+      "Block",
+      ["<this>", "Window"],
+      ["arguments", "Arguments"],
+      runtimeFunctionName("webpack4", "esmodules"),
+      "__webpack_exports__",
+      "__webpack_require__",
+      "_src_mod1__WEBPACK_IMPORTED_MODULE_0__",
+      "_src_mod10__WEBPACK_IMPORTED_MODULE_8__",
+      "_src_mod11__WEBPACK_IMPORTED_MODULE_9__",
+      "_src_mod2__WEBPACK_IMPORTED_MODULE_1__",
+      "_src_mod3__WEBPACK_IMPORTED_MODULE_2__",
+      "_src_mod4__WEBPACK_IMPORTED_MODULE_3__",
+      "_src_mod5__WEBPACK_IMPORTED_MODULE_4__",
+      "_src_mod6__WEBPACK_IMPORTED_MODULE_5__",
+      "_src_mod7__WEBPACK_IMPORTED_MODULE_6__",
+      "_src_mod9__WEBPACK_IMPORTED_MODULE_7__",
+      "_src_optimized_out__WEBPACK_IMPORTED_MODULE_10__",
+      "arguments",
+      "example()",
+      "module",
+      "root()",
+    ]
+  );
+
   for (const target of [
+    "parcel",
     "rollup",
     "webpack3-babel6",
+    "webpack3-babel7",
+    "webpack4-babel6",
+    "webpack4-babel7",
   ]) {
-    const { webpackImportGetter, maybeLineStart } = targetToFlags(target);
+    const { defaultExport, webpackImportGetter, maybeLineStart } = targetToFlags(target);
 
     await breakpointScopes(
       dbg,
       target,
       "esmodules",
       { line: 20, column: maybeLineStart(2) },
       [
         "Module",
@@ -964,67 +1241,72 @@ async function testESModules(dbg) {
         ["anAliased3", webpackImportGetter || '"an-original3"'],
         ["aNamed", webpackImportGetter || '"a-named"'],
         ["aNamed2", webpackImportGetter || '"a-named2"'],
         ["aNamed3", webpackImportGetter || '"a-named3"'],
         ["aNamespace", "{\u2026}"],
         ["anotherNamed", webpackImportGetter || '"a-named"'],
         ["anotherNamed2", webpackImportGetter || '"a-named2"'],
         ["anotherNamed3", webpackImportGetter || '"a-named3"'],
-        ["example", "(optimized away)"],
+        defaultExport("example"),
         ["optimizedOut", "(optimized away)"],
         "root()"
       ]
     );
   }
 
-  // This test currently bails out because Babel does not map function calls
-  // fully and includes the () of the call in the range of the identifier.
-  // this means that Rollup, has to map locations for calls to imports,
-  // it can fail. This will be addressed in Babel eventually.
-  await breakpointScopes(
-    dbg,
+  for (const target of [
     "rollup-babel6",
-    "esmodules",
-    { line: 20, column: 2 },
-    [
-      "root",
-      ["<this>", "Window"],
-      ["arguments", "Arguments"],
-      "rollupBabel6Esmodules",
-      ["aDefault", '"a-default"'],
-      ["aDefault2", '"a-default2"'],
-      ["aDefault3", '"a-default3"'],
-      ["aNamed", '"a-named"'],
-      ["aNamed$1", '(optimized away)'],
-      ["aNamed2", '"a-named2"'],
-      ["aNamed3", '"a-named3"'],
-      ["aNamespace", "{\u2026}"],
-      ["arguments", "(unavailable)"],
-      ["mod4", "(optimized away)"],
-      ["original", '"an-original"'],
-      ["original$1", '"an-original2"'],
-      ["original$2", '"an-original3"'],
-      "root()"
-    ]
-  );
+    "rollup-babel7",
+  ]) {
+    // This test currently bails out because Babel does not map function calls
+    // fully and includes the () of the call in the range of the identifier.
+    // this means that Rollup, has to map locations for calls to imports,
+    // it can fail. This will be addressed in Babel eventually.
+    await breakpointScopes(
+      dbg,
+      target,
+      "esmodules",
+      { line: 20, column: 2 },
+      [
+        "root",
+        ["<this>", "Window"],
+        ["arguments", "Arguments"],
+        runtimeFunctionName(target, "esmodules"),
+        ["aDefault", '"a-default"'],
+        ["aDefault2", '"a-default2"'],
+        ["aDefault3", '"a-default3"'],
+        ["aNamed", '"a-named"'],
+        ["aNamed$1", '(optimized away)'],
+        ["aNamed2", '"a-named2"'],
+        ["aNamed3", '"a-named3"'],
+        ["aNamespace", "{\u2026}"],
+        ["arguments", "(unavailable)"],
+        ["mod4", "(optimized away)"],
+        ["original", '"an-original"'],
+        ["original$1", '"an-original2"'],
+        ["original$2", '"an-original3"'],
+        "root()"
+      ]
+    );
+  }
 }
 
 
 async function testESModulesCJS(dbg) {
   await breakpointScopes(
     dbg,
     "webpack3",
     "esmodules-cjs",
     { line: 20, column: 0 },
     [
       "Block",
       ["<this>", "Window"],
       ["arguments", "Arguments"],
-      pairToFnName("webpack3", "esmodules-cjs"),
+      runtimeFunctionName("webpack3", "esmodules-cjs"),
       "__webpack_exports__",
       "__WEBPACK_IMPORTED_MODULE_0__src_mod1__",
       "__WEBPACK_IMPORTED_MODULE_1__src_mod2__",
       "__WEBPACK_IMPORTED_MODULE_10__src_optimized_out__",
       "__WEBPACK_IMPORTED_MODULE_2__src_mod3__",
       "__WEBPACK_IMPORTED_MODULE_3__src_mod4__",
       "__WEBPACK_IMPORTED_MODULE_4__src_mod5__",
       "__WEBPACK_IMPORTED_MODULE_5__src_mod6__",
@@ -1035,19 +1317,53 @@ async function testESModulesCJS(dbg) {
       "__webpack_require__",
       "arguments",
       "example",
       "module",
       "root()",
     ]
   );
 
+  await breakpointScopes(
+    dbg,
+    "webpack4",
+    "esmodules-cjs",
+    { line: 20, column: 0 },
+    [
+      "Block",
+      ["<this>", "Window"],
+      ["arguments", "Arguments"],
+      runtimeFunctionName("webpack4", "esmodules-cjs"),
+      "__webpack_exports__",
+      "__webpack_require__",
+      "_src_mod1__WEBPACK_IMPORTED_MODULE_0__",
+      "_src_mod10__WEBPACK_IMPORTED_MODULE_8__",
+      "_src_mod11__WEBPACK_IMPORTED_MODULE_9__",
+      "_src_mod2__WEBPACK_IMPORTED_MODULE_1__",
+      "_src_mod3__WEBPACK_IMPORTED_MODULE_2__",
+      "_src_mod4__WEBPACK_IMPORTED_MODULE_3__",
+      "_src_mod5__WEBPACK_IMPORTED_MODULE_4__",
+      "_src_mod6__WEBPACK_IMPORTED_MODULE_5__",
+      "_src_mod7__WEBPACK_IMPORTED_MODULE_6__",
+      "_src_mod9__WEBPACK_IMPORTED_MODULE_7__",
+      "_src_optimized_out__WEBPACK_IMPORTED_MODULE_10__",
+      "arguments",
+      "example()",
+      "module",
+      "root()",
+    ]
+  );
+
   // CJS does not work on Rollup.
   for (const target of [
+    "parcel",
     "webpack3-babel6",
+    "webpack3-babel7",
+    "webpack4-babel6",
+    "webpack4-babel7",
   ]) {
     await breakpointScopes(
       dbg,
       target,
       "esmodules-cjs",
       { line: 20, column: 2 },
       [
       "Module",
@@ -1077,17 +1393,17 @@ async function testESModulesES6(dbg) {
     dbg,
     "webpack3",
     "esmodules-es6",
     { line: 20, column: 0 },
     [
       "Block",
       ["<this>", "Window"],
       ["arguments", "Arguments"],
-      pairToFnName("webpack3", "esmodules-es6"),
+      runtimeFunctionName("webpack3", "esmodules-es6"),
       "__webpack_exports__",
       "__WEBPACK_IMPORTED_MODULE_0__src_mod1__",
       "__WEBPACK_IMPORTED_MODULE_1__src_mod2__",
       "__WEBPACK_IMPORTED_MODULE_10__src_optimized_out__",
       "__WEBPACK_IMPORTED_MODULE_2__src_mod3__",
       "__WEBPACK_IMPORTED_MODULE_3__src_mod4__",
       "__WEBPACK_IMPORTED_MODULE_4__src_mod5__",
       "__WEBPACK_IMPORTED_MODULE_5__src_mod6__",
@@ -1098,76 +1414,115 @@ async function testESModulesES6(dbg) {
       "__webpack_require__",
       "arguments",
       "example",
       "module",
       "root()",
     ]
   );
 
+  await breakpointScopes(
+    dbg,
+    "webpack4",
+    "esmodules-es6",
+    { line: 20, column: 0 },
+    [
+      "Block",
+      ["<this>", "Window"],
+      ["arguments", "Arguments"],
+      runtimeFunctionName("webpack4", "esmodules-es6"),
+      "__webpack_exports__",
+      "__webpack_require__",
+      "_src_mod1__WEBPACK_IMPORTED_MODULE_0__",
+      "_src_mod10__WEBPACK_IMPORTED_MODULE_8__",
+      "_src_mod11__WEBPACK_IMPORTED_MODULE_9__",
+      "_src_mod2__WEBPACK_IMPORTED_MODULE_1__",
+      "_src_mod3__WEBPACK_IMPORTED_MODULE_2__",
+      "_src_mod4__WEBPACK_IMPORTED_MODULE_3__",
+      "_src_mod5__WEBPACK_IMPORTED_MODULE_4__",
+      "_src_mod6__WEBPACK_IMPORTED_MODULE_5__",
+      "_src_mod7__WEBPACK_IMPORTED_MODULE_6__",
+      "_src_mod9__WEBPACK_IMPORTED_MODULE_7__",
+      "_src_optimized_out__WEBPACK_IMPORTED_MODULE_10__",
+      "arguments",
+      "example()",
+      "module",
+      "root()",
+    ]
+  );
+
   for (const target of [
+    "parcel",
     "rollup",
     "webpack3-babel6",
+    "webpack3-babel7",
+    "webpack4-babel6",
+    "webpack4-babel7",
   ]) {
-    const { maybeLineStart } = targetToFlags(target);
+    const { defaultExport, webpack4ImportGetter, maybeLineStart } = targetToFlags(target);
 
     await breakpointScopes(
       dbg,
       target,
       "esmodules-es6",
       { line: 20, column: maybeLineStart(2) },
       [
         "Module",
         ["aDefault", '"a-default"'],
         ["aDefault2", '"a-default2"'],
         ["aDefault3", '"a-default3"'],
-        ["anAliased", '"an-original"'],
-        ["anAliased2", '"an-original2"'],
-        ["anAliased3", '"an-original3"'],
-        ["aNamed", '"a-named"'],
-        ["aNamed2", '"a-named2"'],
-        ["aNamed3", '"a-named3"'],
+        ["anAliased", webpack4ImportGetter || '"an-original"'],
+        ["anAliased2", webpack4ImportGetter || '"an-original2"'],
+        ["anAliased3", webpack4ImportGetter || '"an-original3"'],
+        ["aNamed", webpack4ImportGetter || '"a-named"'],
+        ["aNamed2", webpack4ImportGetter || '"a-named2"'],
+        ["aNamed3", webpack4ImportGetter || '"a-named3"'],
         ["aNamespace", "{\u2026}"],
-        ["anotherNamed", '"a-named"'],
-        ["anotherNamed2", '"a-named2"'],
-        ["anotherNamed3", '"a-named3"'],
-        ["example", "(optimized away)"],
+        ["anotherNamed", webpack4ImportGetter || '"a-named"'],
+        ["anotherNamed2", webpack4ImportGetter || '"a-named2"'],
+        ["anotherNamed3", webpack4ImportGetter || '"a-named3"'],
+        defaultExport("example"),
         ["optimizedOut", "(optimized away)"],
         "root()"
       ]
     );
   }
 
-  // This test currently bails out because Babel does not map function calls
-  // fully and includes the () of the call in the range of the identifier.
-  // this means that Rollup, has to map locations for calls to imports,
-  // it can fail. This will be addressed in Babel eventually.
-  await breakpointScopes(
-    dbg,
+  for (const target of [
     "rollup-babel6",
-    "esmodules-es6",
-    { line: 20, column: 2 },
-    [
-      "root",
-      ["<this>", "Window"],
-      ["arguments", "Arguments"],
+    "rollup-babel7",
+  ]) {
+    // This test currently bails out because Babel does not map function calls
+    // fully and includes the () of the call in the range of the identifier.
+    // this means that Rollup, has to map locations for calls to imports,
+    // it can fail. This will be addressed in Babel eventually.
+    await breakpointScopes(
+      dbg,
+      target,
+      "esmodules-es6",
+      { line: 20, column: 2 },
+      [
+        "root",
+        ["<this>", "Window"],
+        ["arguments", "Arguments"],
 
-      "Block",
-      ["aNamed", '"a-named"'],
-      ["aNamed$1", "undefined"],
-      ["aNamed2", '"a-named2"'],
-      ["aNamed3", '"a-named3"'],
-      ["original", '"an-original"'],
-      ["original$1", '"an-original2"'],
-      ["original$2", '"an-original3"'],
+        "Block",
+        ["aNamed", '"a-named"'],
+        ["aNamed$1", "undefined"],
+        ["aNamed2", '"a-named2"'],
+        ["aNamed3", '"a-named3"'],
+        ["original", '"an-original"'],
+        ["original$1", '"an-original2"'],
+        ["original$2", '"an-original3"'],
 
-      "rollupBabel6EsmodulesEs6",
-      ["aDefault", '"a-default"'],
-      ["aDefault2", '"a-default2"'],
-      ["aDefault3", '"a-default3"'],
+        runtimeFunctionName(target, "esmodules-es6"),
+        ["aDefault", '"a-default"'],
+        ["aDefault2", '"a-default2"'],
+        ["aDefault3", '"a-default3"'],
 
-      ["aNamespace", "{\u2026}"],
-      ["arguments", "(unavailable)"],
-      ["mod4", "(optimized away)"],
-      "root()"
-    ]
-  );
+        ["aNamespace", "{\u2026}"],
+        ["arguments", "(unavailable)"],
+        ["mod4", "(optimized away)"],
+        "root()"
+      ]
+    );
+  }
 }
--- a/devtools/client/debugger/new/test/mochitest/browser_dbg-sourcemaps-bogus.js
+++ b/devtools/client/debugger/new/test/mochitest/browser_dbg-sourcemaps-bogus.js
@@ -2,27 +2,23 @@
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 // Test that an error while loading a sourcemap does not break
 // debugging.
 requestLongerTimeout(2);
 
 add_task(async function() {
   // NOTE: the CORS call makes the test run times inconsistent
-  const dbg = await initDebugger("doc-sourcemap-bogus.html");
-  const {
-    selectors: { getSourceCount },
-    getState
-  } = dbg;
+  const dbg = await initDebugger("doc-sourcemap-bogus.html", "bogus-map.js");
 
   await selectSource(dbg, "bogus-map.js");
 
   // We should still be able to set breakpoints and pause in the
   // generated source.
   await addBreakpoint(dbg, "bogus-map.js", 4);
   invokeInTab("runCode");
   await waitForPaused(dbg);
   assertPausedLocation(dbg);
 
   // Make sure that only the single generated source exists. The
   // sourcemap failed to download.
-  is(getSourceCount(getState()), 1, "Only 1 source exists");
+  is(dbg.selectors.getSourceCount(dbg.getState()), 1, "Only 1 source exists");
 });
--- a/devtools/client/debugger/new/test/mochitest/examples/doc-sourcemapped.html
+++ b/devtools/client/debugger/new/test/mochitest/examples/doc-sourcemapped.html
@@ -7,17 +7,77 @@
     <meta charset="UTF-8">
     <script src="sourcemapped/polyfill-bundle.js"></script>
   </head>
   <body>
     <!-- INJECTED-START -->
     <!--
       Content generated by examples/sourcemapped/build.js.
       Run "yarn build" to update.
-    --><h2>webpack3</h2>
+    -->
+    <h2>parcel</h2>
+    <script src="sourcemapped/output/parcel/babel-bindings-with-flow.js"></script>
+    <button onclick="parcelBabelBindingsWithFlow()">Run babel-bindings-with-flow</button>
+    <script src="sourcemapped/output/parcel/babel-flowtype-bindings.js"></script>
+    <button onclick="parcelBabelFlowtypeBindings()">Run babel-flowtype-bindings</button>
+    <script src="sourcemapped/output/parcel/classes.js"></script>
+    <button onclick="parcelClasses()">Run classes</button>
+    <script src="sourcemapped/output/parcel/esmodules.js"></script>
+    <button onclick="parcelEsmodules()">Run esmodules</button>
+    <script src="sourcemapped/output/parcel/esmodules-cjs.js"></script>
+    <button onclick="parcelEsmodulesCjs()">Run esmodules-cjs</button>
+    <script src="sourcemapped/output/parcel/esmodules-es6.js"></script>
+    <button onclick="parcelEsmodulesEs6()">Run esmodules-es6</button>
+    <script src="sourcemapped/output/parcel/eval-maps.js"></script>
+    <button onclick="parcelEvalMaps()">Run eval-maps</button>
+    <script src="sourcemapped/output/parcel/for-loops.js"></script>
+    <button onclick="parcelForLoops()">Run for-loops</button>
+    <script src="sourcemapped/output/parcel/for-of.js"></script>
+    <button onclick="parcelForOf()">Run for-of</button>
+    <script src="sourcemapped/output/parcel/functions.js"></script>
+    <button onclick="parcelFunctions()">Run functions</button>
+    <script src="sourcemapped/output/parcel/lex-and-nonlex.js"></script>
+    <button onclick="parcelLexAndNonlex()">Run lex-and-nonlex</button>
+    <script src="sourcemapped/output/parcel/line-start-bindings-es6.js"></script>
+    <button onclick="parcelLineStartBindingsEs6()">Run line-start-bindings-es6</button>
+    <script src="sourcemapped/output/parcel/modules-cjs.js"></script>
+    <button onclick="parcelModulesCjs()">Run modules-cjs</button>
+    <script src="sourcemapped/output/parcel/out-of-order-declarations-cjs.js"></script>
+    <button onclick="parcelOutOfOrderDeclarationsCjs()">Run out-of-order-declarations-cjs</button>
+    <script src="sourcemapped/output/parcel/shadowed-vars.js"></script>
+    <button onclick="parcelShadowedVars()">Run shadowed-vars</button>
+    <script src="sourcemapped/output/parcel/step-over-for-of.js"></script>
+    <button onclick="parcelStepOverForOf()">Run step-over-for-of</button>
+    <script src="sourcemapped/output/parcel/step-over-for-of-array.js"></script>
+    <button onclick="parcelStepOverForOfArray()">Run step-over-for-of-array</button>
+    <script src="sourcemapped/output/parcel/step-over-for-of-array-closure.js"></script>
+    <button onclick="parcelStepOverForOfArrayClosure()">Run step-over-for-of-array-closure</button>
+    <script src="sourcemapped/output/parcel/step-over-for-of-closure.js"></script>
+    <button onclick="parcelStepOverForOfClosure()">Run step-over-for-of-closure</button>
+    <script src="sourcemapped/output/parcel/step-over-function-params.js"></script>
+    <button onclick="parcelStepOverFunctionParams()">Run step-over-function-params</button>
+    <script src="sourcemapped/output/parcel/step-over-regenerator-await.js"></script>
+    <button onclick="parcelStepOverRegeneratorAwait()">Run step-over-regenerator-await</button>
+    <script src="sourcemapped/output/parcel/switches.js"></script>
+    <button onclick="parcelSwitches()">Run switches</button>
+    <script src="sourcemapped/output/parcel/this-arguments-bindings.js"></script>
+    <button onclick="parcelThisArgumentsBindings()">Run this-arguments-bindings</button>
+    <script src="sourcemapped/output/parcel/try-catches.js"></script>
+    <button onclick="parcelTryCatches()">Run try-catches</button>
+    <script src="sourcemapped/output/parcel/type-module.js"></script>
+    <button onclick="parcelTypeModule()">Run type-module</button>
+    <script src="sourcemapped/output/parcel/type-script-cjs.js"></script>
+    <button onclick="parcelTypeScriptCjs()">Run type-script-cjs</button>
+    <script src="sourcemapped/output/parcel/typescript-classes.js"></script>
+    <button onclick="parcelTypescriptClasses()">Run typescript-classes</button>
+    <script src="sourcemapped/output/parcel/webpack-functions.js"></script>
+    <button onclick="parcelWebpackFunctions()">Run webpack-functions</button>
+    <script src="sourcemapped/output/parcel/webpack-line-mappings.js"></script>
+    <button onclick="parcelWebpackLineMappings()">Run webpack-line-mappings</button>
+    <h2>webpack3</h2>
     <script src="sourcemapped/output/webpack3/classes.js"></script>
     <button onclick="webpack3Classes()">Run classes</button>
     <script src="sourcemapped/output/webpack3/esmodules.js"></script>
     <button onclick="webpack3Esmodules()">Run esmodules</button>
     <script src="sourcemapped/output/webpack3/esmodules-cjs.js"></script>
     <button onclick="webpack3EsmodulesCjs()">Run esmodules-cjs</button>
     <script src="sourcemapped/output/webpack3/esmodules-es6.js"></script>
     <button onclick="webpack3EsmodulesEs6()">Run esmodules-es6</button>
@@ -61,17 +121,18 @@
     <button onclick="webpack3TypeModule()">Run type-module</button>
     <script src="sourcemapped/output/webpack3/type-script-cjs.js"></script>
     <button onclick="webpack3TypeScriptCjs()">Run type-script-cjs</button>
     <script src="sourcemapped/output/webpack3/typescript-classes.js"></script>
     <button onclick="webpack3TypescriptClasses()">Run typescript-classes</button>
     <script src="sourcemapped/output/webpack3/webpack-functions.js"></script>
     <button onclick="webpack3WebpackFunctions()">Run webpack-functions</button>
     <script src="sourcemapped/output/webpack3/webpack-line-mappings.js"></script>
-    <button onclick="webpack3WebpackLineMappings()">Run webpack-line-mappings</button><h2>webpack3-babel6</h2>
+    <button onclick="webpack3WebpackLineMappings()">Run webpack-line-mappings</button>
+    <h2>webpack3-babel6</h2>
     <script src="sourcemapped/output/webpack3-babel6/babel-bindings-with-flow.js"></script>
     <button onclick="webpack3Babel6BabelBindingsWithFlow()">Run babel-bindings-with-flow</button>
     <script src="sourcemapped/output/webpack3-babel6/babel-flowtype-bindings.js"></script>
     <button onclick="webpack3Babel6BabelFlowtypeBindings()">Run babel-flowtype-bindings</button>
     <script src="sourcemapped/output/webpack3-babel6/classes.js"></script>
     <button onclick="webpack3Babel6Classes()">Run classes</button>
     <script src="sourcemapped/output/webpack3-babel6/esmodules.js"></script>
     <button onclick="webpack3Babel6Esmodules()">Run esmodules</button>
@@ -117,17 +178,244 @@
     <button onclick="webpack3Babel6TryCatches()">Run try-catches</button>
     <script src="sourcemapped/output/webpack3-babel6/type-module.js"></script>
     <button onclick="webpack3Babel6TypeModule()">Run type-module</button>
     <script src="sourcemapped/output/webpack3-babel6/type-script-cjs.js"></script>
     <button onclick="webpack3Babel6TypeScriptCjs()">Run type-script-cjs</button>
     <script src="sourcemapped/output/webpack3-babel6/webpack-functions.js"></script>
     <button onclick="webpack3Babel6WebpackFunctions()">Run webpack-functions</button>
     <script src="sourcemapped/output/webpack3-babel6/webpack-line-mappings.js"></script>
-    <button onclick="webpack3Babel6WebpackLineMappings()">Run webpack-line-mappings</button><h2>rollup</h2>
+    <button onclick="webpack3Babel6WebpackLineMappings()">Run webpack-line-mappings</button>
+    <h2>webpack3-babel7</h2>
+    <script src="sourcemapped/output/webpack3-babel7/babel-bindings-with-flow.js"></script>
+    <button onclick="webpack3Babel7BabelBindingsWithFlow()">Run babel-bindings-with-flow</button>
+    <script src="sourcemapped/output/webpack3-babel7/babel-flowtype-bindings.js"></script>
+    <button onclick="webpack3Babel7BabelFlowtypeBindings()">Run babel-flowtype-bindings</button>
+    <script src="sourcemapped/output/webpack3-babel7/classes.js"></script>
+    <button onclick="webpack3Babel7Classes()">Run classes</button>
+    <script src="sourcemapped/output/webpack3-babel7/esmodules.js"></script>
+    <button onclick="webpack3Babel7Esmodules()">Run esmodules</button>
+    <script src="sourcemapped/output/webpack3-babel7/esmodules-cjs.js"></script>
+    <button onclick="webpack3Babel7EsmodulesCjs()">Run esmodules-cjs</button>
+    <script src="sourcemapped/output/webpack3-babel7/esmodules-es6.js"></script>
+    <button onclick="webpack3Babel7EsmodulesEs6()">Run esmodules-es6</button>
+    <script src="sourcemapped/output/webpack3-babel7/eval-maps.js"></script>
+    <button onclick="webpack3Babel7EvalMaps()">Run eval-maps</button>
+    <script src="sourcemapped/output/webpack3-babel7/for-loops.js"></script>
+    <button onclick="webpack3Babel7ForLoops()">Run for-loops</button>
+    <script src="sourcemapped/output/webpack3-babel7/for-of.js"></script>
+    <button onclick="webpack3Babel7ForOf()">Run for-of</button>
+    <script src="sourcemapped/output/webpack3-babel7/functions.js"></script>
+    <button onclick="webpack3Babel7Functions()">Run functions</button>
+    <script src="sourcemapped/output/webpack3-babel7/lex-and-nonlex.js"></script>
+    <button onclick="webpack3Babel7LexAndNonlex()">Run lex-and-nonlex</button>
+    <script src="sourcemapped/output/webpack3-babel7/line-start-bindings-es6.js"></script>
+    <button onclick="webpack3Babel7LineStartBindingsEs6()">Run line-start-bindings-es6</button>
+    <script src="sourcemapped/output/webpack3-babel7/modules-cjs.js"></script>
+    <button onclick="webpack3Babel7ModulesCjs()">Run modules-cjs</button>
+    <script src="sourcemapped/output/webpack3-babel7/out-of-order-declarations-cjs.js"></script>
+    <button onclick="webpack3Babel7OutOfOrderDeclarationsCjs()">Run out-of-order-declarations-cjs</button>
+    <script src="sourcemapped/output/webpack3-babel7/shadowed-vars.js"></script>
+    <button onclick="webpack3Babel7ShadowedVars()">Run shadowed-vars</button>
+    <script src="sourcemapped/output/webpack3-babel7/step-over-for-of.js"></script>
+    <button onclick="webpack3Babel7StepOverForOf()">Run step-over-for-of</button>
+    <script src="sourcemapped/output/webpack3-babel7/step-over-for-of-array.js"></script>
+    <button onclick="webpack3Babel7StepOverForOfArray()">Run step-over-for-of-array</button>
+    <script src="sourcemapped/output/webpack3-babel7/step-over-for-of-array-closure.js"></script>
+    <button onclick="webpack3Babel7StepOverForOfArrayClosure()">Run step-over-for-of-array-closure</button>
+    <script src="sourcemapped/output/webpack3-babel7/step-over-for-of-closure.js"></script>
+    <button onclick="webpack3Babel7StepOverForOfClosure()">Run step-over-for-of-closure</button>
+    <script src="sourcemapped/output/webpack3-babel7/step-over-function-params.js"></script>
+    <button onclick="webpack3Babel7StepOverFunctionParams()">Run step-over-function-params</button>
+    <script src="sourcemapped/output/webpack3-babel7/step-over-regenerator-await.js"></script>
+    <button onclick="webpack3Babel7StepOverRegeneratorAwait()">Run step-over-regenerator-await</button>
+    <script src="sourcemapped/output/webpack3-babel7/switches.js"></script>
+    <button onclick="webpack3Babel7Switches()">Run switches</button>
+    <script src="sourcemapped/output/webpack3-babel7/this-arguments-bindings.js"></script>
+    <button onclick="webpack3Babel7ThisArgumentsBindings()">Run this-arguments-bindings</button>
+    <script src="sourcemapped/output/webpack3-babel7/try-catches.js"></script>
+    <button onclick="webpack3Babel7TryCatches()">Run try-catches</button>
+    <script src="sourcemapped/output/webpack3-babel7/type-module.js"></script>
+    <button onclick="webpack3Babel7TypeModule()">Run type-module</button>
+    <script src="sourcemapped/output/webpack3-babel7/type-script-cjs.js"></script>
+    <button onclick="webpack3Babel7TypeScriptCjs()">Run type-script-cjs</button>
+    <script src="sourcemapped/output/webpack3-babel7/webpack-functions.js"></script>
+    <button onclick="webpack3Babel7WebpackFunctions()">Run webpack-functions</button>
+    <script src="sourcemapped/output/webpack3-babel7/webpack-line-mappings.js"></script>
+    <button onclick="webpack3Babel7WebpackLineMappings()">Run webpack-line-mappings</button>
+    <h2>webpack4</h2>
+    <script src="sourcemapped/output/webpack4/classes.js"></script>
+    <button onclick="webpack4Classes()">Run classes</button>
+    <script src="sourcemapped/output/webpack4/esmodules.js"></script>
+    <button onclick="webpack4Esmodules()">Run esmodules</button>
+    <script src="sourcemapped/output/webpack4/esmodules-cjs.js"></script>
+    <button onclick="webpack4EsmodulesCjs()">Run esmodules-cjs</button>
+    <script src="sourcemapped/output/webpack4/esmodules-es6.js"></script>
+    <button onclick="webpack4EsmodulesEs6()">Run esmodules-es6</button>
+    <script src="sourcemapped/output/webpack4/eval-maps.js"></script>
+    <button onclick="webpack4EvalMaps()">Run eval-maps</button>
+    <script src="sourcemapped/output/webpack4/for-loops.js"></script>
+    <button onclick="webpack4ForLoops()">Run for-loops</button>
+    <script src="sourcemapped/output/webpack4/for-of.js"></script>
+    <button onclick="webpack4ForOf()">Run for-of</button>
+    <script src="sourcemapped/output/webpack4/functions.js"></script>
+    <button onclick="webpack4Functions()">Run functions</button>
+    <script src="sourcemapped/output/webpack4/lex-and-nonlex.js"></script>
+    <button onclick="webpack4LexAndNonlex()">Run lex-and-nonlex</button>
+    <script src="sourcemapped/output/webpack4/line-start-bindings-es6.js"></script>
+    <button onclick="webpack4LineStartBindingsEs6()">Run line-start-bindings-es6</button>
+    <script src="sourcemapped/output/webpack4/modules-cjs.js"></script>
+    <button onclick="webpack4ModulesCjs()">Run modules-cjs</button>
+    <script src="sourcemapped/output/webpack4/out-of-order-declarations-cjs.js"></script>
+    <button onclick="webpack4OutOfOrderDeclarationsCjs()">Run out-of-order-declarations-cjs</button>
+    <script src="sourcemapped/output/webpack4/shadowed-vars.js"></script>
+    <button onclick="webpack4ShadowedVars()">Run shadowed-vars</button>
+    <script src="sourcemapped/output/webpack4/step-over-for-of.js"></script>
+    <button onclick="webpack4StepOverForOf()">Run step-over-for-of</button>
+    <script src="sourcemapped/output/webpack4/step-over-for-of-array.js"></script>
+    <button onclick="webpack4StepOverForOfArray()">Run step-over-for-of-array</button>
+    <script src="sourcemapped/output/webpack4/step-over-for-of-array-closure.js"></script>
+    <button onclick="webpack4StepOverForOfArrayClosure()">Run step-over-for-of-array-closure</button>
+    <script src="sourcemapped/output/webpack4/step-over-for-of-closure.js"></script>
+    <button onclick="webpack4StepOverForOfClosure()">Run step-over-for-of-closure</button>
+    <script src="sourcemapped/output/webpack4/step-over-function-params.js"></script>
+    <button onclick="webpack4StepOverFunctionParams()">Run step-over-function-params</button>
+    <script src="sourcemapped/output/webpack4/step-over-regenerator-await.js"></script>
+    <button onclick="webpack4StepOverRegeneratorAwait()">Run step-over-regenerator-await</button>
+    <script src="sourcemapped/output/webpack4/switches.js"></script>
+    <button onclick="webpack4Switches()">Run switches</button>
+    <script src="sourcemapped/output/webpack4/this-arguments-bindings.js"></script>
+    <button onclick="webpack4ThisArgumentsBindings()">Run this-arguments-bindings</button>
+    <script src="sourcemapped/output/webpack4/try-catches.js"></script>
+    <button onclick="webpack4TryCatches()">Run try-catches</button>
+    <script src="sourcemapped/output/webpack4/type-module.js"></script>
+    <button onclick="webpack4TypeModule()">Run type-module</button>
+    <script src="sourcemapped/output/webpack4/type-script-cjs.js"></script>
+    <button onclick="webpack4TypeScriptCjs()">Run type-script-cjs</button>
+    <script src="sourcemapped/output/webpack4/typescript-classes.js"></script>
+    <button onclick="webpack4TypescriptClasses()">Run typescript-classes</button>
+    <script src="sourcemapped/output/webpack4/webpack-functions.js"></script>
+    <button onclick="webpack4WebpackFunctions()">Run webpack-functions</button>
+    <script src="sourcemapped/output/webpack4/webpack-line-mappings.js"></script>
+    <button onclick="webpack4WebpackLineMappings()">Run webpack-line-mappings</button>
+    <h2>webpack4-babel6</h2>
+    <script src="sourcemapped/output/webpack4-babel6/babel-bindings-with-flow.js"></script>
+    <button onclick="webpack4Babel6BabelBindingsWithFlow()">Run babel-bindings-with-flow</button>
+    <script src="sourcemapped/output/webpack4-babel6/babel-flowtype-bindings.js"></script>
+    <button onclick="webpack4Babel6BabelFlowtypeBindings()">Run babel-flowtype-bindings</button>
+    <script src="sourcemapped/output/webpack4-babel6/classes.js"></script>
+    <button onclick="webpack4Babel6Classes()">Run classes</button>
+    <script src="sourcemapped/output/webpack4-babel6/esmodules.js"></script>
+    <button onclick="webpack4Babel6Esmodules()">Run esmodules</button>
+    <script src="sourcemapped/output/webpack4-babel6/esmodules-cjs.js"></script>
+    <button onclick="webpack4Babel6EsmodulesCjs()">Run esmodules-cjs</button>
+    <script src="sourcemapped/output/webpack4-babel6/esmodules-es6.js"></script>
+    <button onclick="webpack4Babel6EsmodulesEs6()">Run esmodules-es6</button>
+    <script src="sourcemapped/output/webpack4-babel6/eval-maps.js"></script>
+    <button onclick="webpack4Babel6EvalMaps()">Run eval-maps</button>
+    <script src="sourcemapped/output/webpack4-babel6/for-loops.js"></script>
+    <button onclick="webpack4Babel6ForLoops()">Run for-loops</button>
+    <script src="sourcemapped/output/webpack4-babel6/for-of.js"></script>
+    <button onclick="webpack4Babel6ForOf()">Run for-of</button>
+    <script src="sourcemapped/output/webpack4-babel6/functions.js"></script>
+    <button onclick="webpack4Babel6Functions()">Run functions</button>
+    <script src="sourcemapped/output/webpack4-babel6/lex-and-nonlex.js"></script>
+    <button onclick="webpack4Babel6LexAndNonlex()">Run lex-and-nonlex</button>
+    <script src="sourcemapped/output/webpack4-babel6/line-start-bindings-es6.js"></script>
+    <button onclick="webpack4Babel6LineStartBindingsEs6()">Run line-start-bindings-es6</button>
+    <script src="sourcemapped/output/webpack4-babel6/modules-cjs.js"></script>
+    <button onclick="webpack4Babel6ModulesCjs()">Run modules-cjs</button>
+    <script src="sourcemapped/output/webpack4-babel6/out-of-order-declarations-cjs.js"></script>
+    <button onclick="webpack4Babel6OutOfOrderDeclarationsCjs()">Run out-of-order-declarations-cjs</button>
+    <script src="sourcemapped/output/webpack4-babel6/shadowed-vars.js"></script>
+    <button onclick="webpack4Babel6ShadowedVars()">Run shadowed-vars</button>
+    <script src="sourcemapped/output/webpack4-babel6/step-over-for-of.js"></script>
+    <button onclick="webpack4Babel6StepOverForOf()">Run step-over-for-of</button>
+    <script src="sourcemapped/output/webpack4-babel6/step-over-for-of-array.js"></script>
+    <button onclick="webpack4Babel6StepOverForOfArray()">Run step-over-for-of-array</button>
+    <script src="sourcemapped/output/webpack4-babel6/step-over-for-of-array-closure.js"></script>
+    <button onclick="webpack4Babel6StepOverForOfArrayClosure()">Run step-over-for-of-array-closure</button>
+    <script src="sourcemapped/output/webpack4-babel6/step-over-for-of-closure.js"></script>
+    <button onclick="webpack4Babel6StepOverForOfClosure()">Run step-over-for-of-closure</button>
+    <script src="sourcemapped/output/webpack4-babel6/step-over-function-params.js"></script>
+    <button onclick="webpack4Babel6StepOverFunctionParams()">Run step-over-function-params</button>
+    <script src="sourcemapped/output/webpack4-babel6/step-over-regenerator-await.js"></script>
+    <button onclick="webpack4Babel6StepOverRegeneratorAwait()">Run step-over-regenerator-await</button>
+    <script src="sourcemapped/output/webpack4-babel6/switches.js"></script>
+    <button onclick="webpack4Babel6Switches()">Run switches</button>
+    <script src="sourcemapped/output/webpack4-babel6/this-arguments-bindings.js"></script>
+    <button onclick="webpack4Babel6ThisArgumentsBindings()">Run this-arguments-bindings</button>
+    <script src="sourcemapped/output/webpack4-babel6/try-catches.js"></script>
+    <button onclick="webpack4Babel6TryCatches()">Run try-catches</button>
+    <script src="sourcemapped/output/webpack4-babel6/type-module.js"></script>
+    <button onclick="webpack4Babel6TypeModule()">Run type-module</button>
+    <script src="sourcemapped/output/webpack4-babel6/type-script-cjs.js"></script>
+    <button onclick="webpack4Babel6TypeScriptCjs()">Run type-script-cjs</button>
+    <script src="sourcemapped/output/webpack4-babel6/webpack-functions.js"></script>
+    <button onclick="webpack4Babel6WebpackFunctions()">Run webpack-functions</button>
+    <script src="sourcemapped/output/webpack4-babel6/webpack-line-mappings.js"></script>
+    <button onclick="webpack4Babel6WebpackLineMappings()">Run webpack-line-mappings</button>
+    <h2>webpack4-babel7</h2>
+    <script src="sourcemapped/output/webpack4-babel7/babel-bindings-with-flow.js"></script>
+    <button onclick="webpack4Babel7BabelBindingsWithFlow()">Run babel-bindings-with-flow</button>
+    <script src="sourcemapped/output/webpack4-babel7/babel-flowtype-bindings.js"></script>
+    <button onclick="webpack4Babel7BabelFlowtypeBindings()">Run babel-flowtype-bindings</button>
+    <script src="sourcemapped/output/webpack4-babel7/classes.js"></script>
+    <button onclick="webpack4Babel7Classes()">Run classes</button>
+    <script src="sourcemapped/output/webpack4-babel7/esmodules.js"></script>
+    <button onclick="webpack4Babel7Esmodules()">Run esmodules</button>
+    <script src="sourcemapped/output/webpack4-babel7/esmodules-cjs.js"></script>
+    <button onclick="webpack4Babel7EsmodulesCjs()">Run esmodules-cjs</button>
+    <script src="sourcemapped/output/webpack4-babel7/esmodules-es6.js"></script>
+    <button onclick="webpack4Babel7EsmodulesEs6()">Run esmodules-es6</button>
+    <script src="sourcemapped/output/webpack4-babel7/eval-maps.js"></script>
+    <button onclick="webpack4Babel7EvalMaps()">Run eval-maps</button>
+    <script src="sourcemapped/output/webpack4-babel7/for-loops.js"></script>
+    <button onclick="webpack4Babel7ForLoops()">Run for-loops</button>
+    <script src="sourcemapped/output/webpack4-babel7/for-of.js"></script>
+    <button onclick="webpack4Babel7ForOf()">Run for-of</button>
+    <script src="sourcemapped/output/webpack4-babel7/functions.js"></script>
+    <button onclick="webpack4Babel7Functions()">Run functions</button>
+    <script src="sourcemapped/output/webpack4-babel7/lex-and-nonlex.js"></script>
+    <button onclick="webpack4Babel7LexAndNonlex()">Run lex-and-nonlex</button>
+    <script src="sourcemapped/output/webpack4-babel7/line-start-bindings-es6.js"></script>
+    <button onclick="webpack4Babel7LineStartBindingsEs6()">Run line-start-bindings-es6</button>
+    <script src="sourcemapped/output/webpack4-babel7/modules-cjs.js"></script>
+    <button onclick="webpack4Babel7ModulesCjs()">Run modules-cjs</button>
+    <script src="sourcemapped/output/webpack4-babel7/out-of-order-declarations-cjs.js"></script>
+    <button onclick="webpack4Babel7OutOfOrderDeclarationsCjs()">Run out-of-order-declarations-cjs</button>
+    <script src="sourcemapped/output/webpack4-babel7/shadowed-vars.js"></script>
+    <button onclick="webpack4Babel7ShadowedVars()">Run shadowed-vars</button>
+    <script src="sourcemapped/output/webpack4-babel7/step-over-for-of.js"></script>
+    <button onclick="webpack4Babel7StepOverForOf()">Run step-over-for-of</button>
+    <script src="sourcemapped/output/webpack4-babel7/step-over-for-of-array.js"></script>
+    <button onclick="webpack4Babel7StepOverForOfArray()">Run step-over-for-of-array</button>
+    <script src="sourcemapped/output/webpack4-babel7/step-over-for-of-array-closure.js"></script>
+    <button onclick="webpack4Babel7StepOverForOfArrayClosure()">Run step-over-for-of-array-closure</button>
+    <script src="sourcemapped/output/webpack4-babel7/step-over-for-of-closure.js"></script>
+    <button onclick="webpack4Babel7StepOverForOfClosure()">Run step-over-for-of-closure</button>
+    <script src="sourcemapped/output/webpack4-babel7/step-over-function-params.js"></script>
+    <button onclick="webpack4Babel7StepOverFunctionParams()">Run step-over-function-params</button>
+    <script src="sourcemapped/output/webpack4-babel7/step-over-regenerator-await.js"></script>
+    <button onclick="webpack4Babel7StepOverRegeneratorAwait()">Run step-over-regenerator-await</button>
+    <script src="sourcemapped/output/webpack4-babel7/switches.js"></script>
+    <button onclick="webpack4Babel7Switches()">Run switches</button>
+    <script src="sourcemapped/output/webpack4-babel7/this-arguments-bindings.js"></script>
+    <button onclick="webpack4Babel7ThisArgumentsBindings()">Run this-arguments-bindings</button>
+    <script src="sourcemapped/output/webpack4-babel7/try-catches.js"></script>
+    <button onclick="webpack4Babel7TryCatches()">Run try-catches</button>
+    <script src="sourcemapped/output/webpack4-babel7/type-module.js"></script>
+    <button onclick="webpack4Babel7TypeModule()">Run type-module</button>
+    <script src="sourcemapped/output/webpack4-babel7/type-script-cjs.js"></script>
+    <button onclick="webpack4Babel7TypeScriptCjs()">Run type-script-cjs</button>
+    <script src="sourcemapped/output/webpack4-babel7/webpack-functions.js"></script>
+    <button onclick="webpack4Babel7WebpackFunctions()">Run webpack-functions</button>
+    <script src="sourcemapped/output/webpack4-babel7/webpack-line-mappings.js"></script>
+    <button onclick="webpack4Babel7WebpackLineMappings()">Run webpack-line-mappings</button>
+    <h2>rollup</h2>
     <script src="sourcemapped/output/rollup/classes.js"></script>
     <button onclick="rollupClasses()">Run classes</button>
     <script src="sourcemapped/output/rollup/esmodules.js"></script>
     <button onclick="rollupEsmodules()">Run esmodules</button>
     <script src="sourcemapped/output/rollup/esmodules-es6.js"></script>
     <button onclick="rollupEsmodulesEs6()">Run esmodules-es6</button>
     <script src="sourcemapped/output/rollup/eval-maps.js"></script>
     <button onclick="rollupEvalMaps()">Run eval-maps</button>
@@ -163,17 +451,18 @@
     <button onclick="rollupTryCatches()">Run try-catches</button>
     <script src="sourcemapped/output/rollup/type-module.js"></script>
     <button onclick="rollupTypeModule()">Run type-module</button>
     <script src="sourcemapped/output/rollup/typescript-classes.js"></script>
     <button onclick="rollupTypescriptClasses()">Run typescript-classes</button>
     <script src="sourcemapped/output/rollup/webpack-functions.js"></script>
     <button onclick="rollupWebpackFunctions()">Run webpack-functions</button>
     <script src="sourcemapped/output/rollup/webpack-line-mappings.js"></script>
-    <button onclick="rollupWebpackLineMappings()">Run webpack-line-mappings</button><h2>rollup-babel6</h2>
+    <button onclick="rollupWebpackLineMappings()">Run webpack-line-mappings</button>
+    <h2>rollup-babel6</h2>
     <script src="sourcemapped/output/rollup-babel6/babel-bindings-with-flow.js"></script>
     <button onclick="rollupBabel6BabelBindingsWithFlow()">Run babel-bindings-with-flow</button>
     <script src="sourcemapped/output/rollup-babel6/babel-flowtype-bindings.js"></script>
     <button onclick="rollupBabel6BabelFlowtypeBindings()">Run babel-flowtype-bindings</button>
     <script src="sourcemapped/output/rollup-babel6/classes.js"></script>
     <button onclick="rollupBabel6Classes()">Run classes</button>
     <script src="sourcemapped/output/rollup-babel6/esmodules.js"></script>
     <button onclick="rollupBabel6Esmodules()">Run esmodules</button>
@@ -212,11 +501,60 @@
     <script src="sourcemapped/output/rollup-babel6/try-catches.js"></script>
     <button onclick="rollupBabel6TryCatches()">Run try-catches</button>
     <script src="sourcemapped/output/rollup-babel6/type-module.js"></script>
     <button onclick="rollupBabel6TypeModule()">Run type-module</button>
     <script src="sourcemapped/output/rollup-babel6/webpack-functions.js"></script>
     <button onclick="rollupBabel6WebpackFunctions()">Run webpack-functions</button>
     <script src="sourcemapped/output/rollup-babel6/webpack-line-mappings.js"></script>
     <button onclick="rollupBabel6WebpackLineMappings()">Run webpack-line-mappings</button>
+    <h2>rollup-babel7</h2>
+    <script src="sourcemapped/output/rollup-babel7/babel-bindings-with-flow.js"></script>
+    <button onclick="rollupBabel7BabelBindingsWithFlow()">Run babel-bindings-with-flow</button>
+    <script src="sourcemapped/output/rollup-babel7/babel-flowtype-bindings.js"></script>
+    <button onclick="rollupBabel7BabelFlowtypeBindings()">Run babel-flowtype-bindings</button>
+    <script src="sourcemapped/output/rollup-babel7/classes.js"></script>
+    <button onclick="rollupBabel7Classes()">Run classes</button>
+    <script src="sourcemapped/output/rollup-babel7/esmodules.js"></script>
+    <button onclick="rollupBabel7Esmodules()">Run esmodules</button>
+    <script src="sourcemapped/output/rollup-babel7/esmodules-es6.js"></script>
+    <button onclick="rollupBabel7EsmodulesEs6()">Run esmodules-es6</button>
+    <script src="sourcemapped/output/rollup-babel7/eval-maps.js"></script>
+    <button onclick="rollupBabel7EvalMaps()">Run eval-maps</button>
+    <script src="sourcemapped/output/rollup-babel7/for-loops.js"></script>
+    <button onclick="rollupBabel7ForLoops()">Run for-loops</button>
+    <script src="sourcemapped/output/rollup-babel7/for-of.js"></script>
+    <button onclick="rollupBabel7ForOf()">Run for-of</button>
+    <script src="sourcemapped/output/rollup-babel7/functions.js"></script>
+    <button onclick="rollupBabel7Functions()">Run functions</button>
+    <script src="sourcemapped/output/rollup-babel7/lex-and-nonlex.js"></script>
+    <button onclick="rollupBabel7LexAndNonlex()">Run lex-and-nonlex</button>
+    <script src="sourcemapped/output/rollup-babel7/line-start-bindings-es6.js"></script>
+    <button onclick="rollupBabel7LineStartBindingsEs6()">Run line-start-bindings-es6</button>
+    <script src="sourcemapped/output/rollup-babel7/shadowed-vars.js"></script>
+    <button onclick="rollupBabel7ShadowedVars()">Run shadowed-vars</button>
+    <script src="sourcemapped/output/rollup-babel7/step-over-for-of.js"></script>
+    <button onclick="rollupBabel7StepOverForOf()">Run step-over-for-of</button>
+    <script src="sourcemapped/output/rollup-babel7/step-over-for-of-array.js"></script>
+    <button onclick="rollupBabel7StepOverForOfArray()">Run step-over-for-of-array</button>
+    <script src="sourcemapped/output/rollup-babel7/step-over-for-of-array-closure.js"></script>
+    <button onclick="rollupBabel7StepOverForOfArrayClosure()">Run step-over-for-of-array-closure</button>
+    <script src="sourcemapped/output/rollup-babel7/step-over-for-of-closure.js"></script>
+    <button onclick="rollupBabel7StepOverForOfClosure()">Run step-over-for-of-closure</button>
+    <script src="sourcemapped/output/rollup-babel7/step-over-function-params.js"></script>
+    <button onclick="rollupBabel7StepOverFunctionParams()">Run step-over-function-params</button>
+    <script src="sourcemapped/output/rollup-babel7/step-over-regenerator-await.js"></script>
+    <button onclick="rollupBabel7StepOverRegeneratorAwait()">Run step-over-regenerator-await</button>
+    <script src="sourcemapped/output/rollup-babel7/switches.js"></script>
+    <button onclick="rollupBabel7Switches()">Run switches</button>
+    <script src="sourcemapped/output/rollup-babel7/this-arguments-bindings.js"></script>
+    <button onclick="rollupBabel7ThisArgumentsBindings()">Run this-arguments-bindings</button>
+    <script src="sourcemapped/output/rollup-babel7/try-catches.js"></script>
+    <button onclick="rollupBabel7TryCatches()">Run try-catches</button>
+    <script src="sourcemapped/output/rollup-babel7/type-module.js"></script>
+    <button onclick="rollupBabel7TypeModule()">Run type-module</button>
+    <script src="sourcemapped/output/rollup-babel7/webpack-functions.js"></script>
+    <button onclick="rollupBabel7WebpackFunctions()">Run webpack-functions</button>
+    <script src="sourcemapped/output/rollup-babel7/webpack-line-mappings.js"></script>
+    <button onclick="rollupBabel7WebpackLineMappings()">Run webpack-line-mappings</button>
     <!-- INJECTED-END -->
   </body>
 </html>
--- a/devtools/client/debugger/new/test/mochitest/examples/sourcemapped/build.js
+++ b/devtools/client/debugger/new/test/mochitest/examples/sourcemapped/build.js
@@ -22,20 +22,26 @@ const tests = fs
     const inputJS = path.join(fixturesFolder, name, "input.js");
 
     return [name, fs.existsSync(inputTS) ? inputTS : inputJS];
   })
   .filter(Boolean);
 
 (async function() {
   const targets = [
+    await require("./builds/parcel")(tests, __dirname),
     await require("./builds/webpack3")(tests, __dirname),
     await require("./builds/webpack3-babel6")(tests, __dirname),
+    await require("./builds/webpack3-babel7")(tests, __dirname),
+    await require("./builds/webpack4")(tests, __dirname),
+    await require("./builds/webpack4-babel6")(tests, __dirname),
+    await require("./builds/webpack4-babel7")(tests, __dirname),
     await require("./builds/rollup")(tests, __dirname),
-    await require("./builds/rollup-babel6")(tests, __dirname)
+    await require("./builds/rollup-babel6")(tests, __dirname),
+    await require("./builds/rollup-babel7")(tests, __dirname)
   ];
 
   await util.promisify(webpack)({
     context: __dirname,
     entry: "babel-polyfill",
     output: {
       filename: "polyfill-bundle.js"
     },
@@ -51,17 +57,17 @@ const tests = fs
       /\n\s*<!-- INJECTED-START[\s\S]*INJECTED-END -->/,
       `
     <!-- INJECTED-START -->
     <!--
       Content generated by examples/sourcemapped/build.js.
       Run "yarn build" to update.
     -->${targets
       .map(({ target, fixtures }) => {
-        return `<h2>${target}</h2>${fixtures
+        return `\n    <h2>${target}</h2>${fixtures
           .map(
             ({ name, testFnName, scriptPath }) =>
               `\n    <script src="${path.relative(
                 examplesDir,
                 scriptPath
               )}"></script>` +
               `\n    <button onclick="${testFnName}()">Run ${name}</button>`
           )
@@ -90,9 +96,11 @@ const tests = fs
     fs.readFileSync(browserINI, "utf8").replace(
       /\n *## START-SOURCEMAPPED-FIXTURES[\s\S]*## END-SOURCEMAPPED-FIXTURES/,
       `
   ## START-SOURCEMAPPED-FIXTURES - Generated by examples/sourcemapped/build.js
   ${assets.map(asset => path.relative(mochitestRoot, asset)).join("\n  ")}
   ## END-SOURCEMAPPED-FIXTURES`
     )
   );
+
+  console.log("DONE - If node is still running, just hit Ctrl+C. Parcel leaves things running for some reason.")
 })();
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/parcel/index.js
@@ -0,0 +1,69 @@
+/* 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 path = require("path");
+const util = require("util");
+const fs = require("fs");
+const _ = require("lodash");
+const Bundler = require("parcel-bundler");
+const convertSourceMap = require("convert-source-map");
+
+const TARGET_NAME = "parcel";
+
+module.exports = exports = async function(tests, dirname) {
+  const fixtures = [];
+  for (const [name, input] of tests) {
+    const testFnName = _.camelCase(`${TARGET_NAME}-${name}`);
+    const evalMaps = name.match(/-eval/);
+
+    console.log(`Building ${TARGET_NAME} test ${name}`);
+
+    const scriptPath = path.join(dirname, "output", TARGET_NAME, `${name}.js`);
+    const bundler = new Bundler(input, {
+      global: testFnName,
+      hmr: false,
+      watch: false,
+      logLevel: 0,
+      publicURL: ".",
+
+      outDir: path.dirname(scriptPath),
+      outFile: path.basename(scriptPath),
+    });
+
+    await bundler.bundle();
+
+    let code = fs.readFileSync(scriptPath, "utf8");
+
+    // Parcel doesn't offer a way to explicitly export the default property
+    // of the default object.
+    code += `\n;${testFnName} = ${testFnName}.default;`;
+    fs.writeFileSync(scriptPath, code);
+
+
+    const mapMatch = convertSourceMap.mapFileCommentRegex.exec(code);
+    const mapPath = path.resolve(path.dirname(scriptPath), mapMatch[1] || mapMatch[2]);
+
+    const map = JSON.parse(fs.readFileSync(mapPath, "utf8"));
+    map.sourceRoot = undefined;
+    map.sources = map.sources.map(source =>
+      source.replace(/^/, `${TARGET_NAME}://./${name}/`)
+    );
+    fs.writeFileSync(mapPath, JSON.stringify(map));
+
+    fixtures.push({
+      name,
+      testFnName,
+      scriptPath,
+      assets: [
+        scriptPath,
+        `${path.join(path.dirname(scriptPath), path.basename(scriptPath, path.extname(scriptPath)))}.map`,
+      ]
+    });
+  }
+
+  return {
+    target: TARGET_NAME,
+    fixtures
+  };
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/parcel/package.json
@@ -0,0 +1,6 @@
+{
+  "dependencies": {
+    "convert-source-map": "^1.5.1",
+    "parcel-bundler": "^1.9.7"
+  }
+}
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/parcel/yarn.lock
@@ -0,0 +1,4128 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@mrmlnc/readdir-enhanced@^2.2.1":
+  version "2.2.1"
+  resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde"
+  dependencies:
+    call-me-maybe "^1.0.1"
+    glob-to-regexp "^0.3.0"
+
+"@nodelib/fs.stat@^1.0.1":
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.0.tgz#50c1e2260ac0ed9439a181de3725a0168d59c48a"
+
+abbrev@1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
+
+acorn@^5.0.0:
+  version "5.7.1"
+  resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.1.tgz#f095829297706a7c9776958c0afc8930a9b9d9d8"
+
+alphanum-sort@^1.0.0, alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
+
+ansi-regex@^2.0.0:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
+
+ansi-regex@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
+
+ansi-styles@^2.2.1:
+  version "2.2.1"
+  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
+
+ansi-styles@^3.2.1:
+  version "3.2.1"
+  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+  dependencies:
+    color-convert "^1.9.0"
+
+ansi-to-html@^0.6.4:
+  version "0.6.6"
+  resolved "https://registry.yarnpkg.com/ansi-to-html/-/ansi-to-html-0.6.6.tgz#58a8d04b87ec9a85e3ad273c12a5fbc7147b9c42"
+  dependencies:
+    entities "^1.1.1"
+
+anymatch@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
+  dependencies:
+    micromatch "^3.1.4"
+    normalize-path "^2.1.1"
+
+aproba@^1.0.3:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
+
+are-we-there-yet@~1.1.2:
+  version "1.1.5"
+  resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
+  dependencies:
+    delegates "^1.0.0"
+    readable-stream "^2.0.6"
+
+argparse@^1.0.7:
+  version "1.0.10"
+  resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
+  dependencies:
+    sprintf-js "~1.0.2"
+
+arr-diff@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
+
+arr-flatten@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
+
+arr-union@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
+
+array-unique@^0.3.2:
+  version "0.3.2"
+  resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
+
+asn1.js@^4.0.0:
+  version "4.10.1"
+  resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0"
+  dependencies:
+    bn.js "^4.0.0"
+    inherits "^2.0.1"
+    minimalistic-assert "^1.0.0"
+
+assert@^1.1.1:
+  version "1.4.1"
+  resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
+  dependencies:
+    util "0.10.3"
+
+assign-symbols@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
+
+async-each@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
+
+async-limiter@~1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8"
+
+atob@^2.1.1:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.1.tgz#ae2d5a729477f289d60dd7f96a6314a22dd6c22a"
+
+autoprefixer@^6.3.1:
+  version "6.7.7"
+  resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014"
+  dependencies:
+    browserslist "^1.7.6"
+    caniuse-db "^1.0.30000634"
+    normalize-range "^0.1.2"
+    num2fraction "^1.2.2"
+    postcss "^5.2.16"
+    postcss-value-parser "^3.2.3"
+
+babel-code-frame@^6.26.0:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
+  dependencies:
+    chalk "^1.1.3"
+    esutils "^2.0.2"
+    js-tokens "^3.0.2"
+
+babel-core@^6.25.0, babel-core@^6.26.0:
+  version "6.26.3"
+  resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207"
+  dependencies:
+    babel-code-frame "^6.26.0"
+    babel-generator "^6.26.0"
+    babel-helpers "^6.24.1"
+    babel-messages "^6.23.0"
+    babel-register "^6.26.0"
+    babel-runtime "^6.26.0"
+    babel-template "^6.26.0"
+    babel-traverse "^6.26.0"
+    babel-types "^6.26.0"
+    babylon "^6.18.0"
+    convert-source-map "^1.5.1"
+    debug "^2.6.9"
+    json5 "^0.5.1"
+    lodash "^4.17.4"
+    minimatch "^3.0.4"
+    path-is-absolute "^1.0.1"
+    private "^0.1.8"
+    slash "^1.0.0"
+    source-map "^0.5.7"
+
+babel-generator@^6.25.0, babel-generator@^6.26.0:
+  version "6.26.1"
+  resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90"
+  dependencies:
+    babel-messages "^6.23.0"
+    babel-runtime "^6.26.0"
+    babel-types "^6.26.0"
+    detect-indent "^4.0.0"
+    jsesc "^1.3.0"
+    lodash "^4.17.4"
+    source-map "^0.5.7"
+    trim-right "^1.0.1"
+
+babel-helper-builder-binary-assignment-operator-visitor@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664"
+  dependencies:
+    babel-helper-explode-assignable-expression "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-helper-builder-react-jsx@^6.24.1:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz#39ff8313b75c8b65dceff1f31d383e0ff2a408a0"
+  dependencies:
+    babel-runtime "^6.26.0"
+    babel-types "^6.26.0"
+    esutils "^2.0.2"
+
+babel-helper-call-delegate@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d"
+  dependencies:
+    babel-helper-hoist-variables "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-helper-define-map@^6.24.1:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f"
+  dependencies:
+    babel-helper-function-name "^6.24.1"
+    babel-runtime "^6.26.0"
+    babel-types "^6.26.0"
+    lodash "^4.17.4"
+
+babel-helper-explode-assignable-expression@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-helper-function-name@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9"
+  dependencies:
+    babel-helper-get-function-arity "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-helper-get-function-arity@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-helper-hoist-variables@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-helper-optimise-call-expression@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-helper-regex@^6.24.1:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72"
+  dependencies:
+    babel-runtime "^6.26.0"
+    babel-types "^6.26.0"
+    lodash "^4.17.4"
+
+babel-helper-remap-async-to-generator@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b"
+  dependencies:
+    babel-helper-function-name "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-helper-replace-supers@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a"
+  dependencies:
+    babel-helper-optimise-call-expression "^6.24.1"
+    babel-messages "^6.23.0"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-helpers@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+
+babel-messages@^6.23.0:
+  version "6.23.0"
+  resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-check-es2015-constants@^6.22.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-syntax-async-functions@^6.8.0:
+  version "6.13.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95"
+
+babel-plugin-syntax-exponentiation-operator@^6.8.0:
+  version "6.13.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de"
+
+babel-plugin-syntax-jsx@^6.8.0:
+  version "6.18.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946"
+
+babel-plugin-syntax-trailing-function-commas@^6.22.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3"
+
+babel-plugin-transform-async-to-generator@^6.22.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761"
+  dependencies:
+    babel-helper-remap-async-to-generator "^6.24.1"
+    babel-plugin-syntax-async-functions "^6.8.0"
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-arrow-functions@^6.22.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-block-scoped-functions@^6.22.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-block-scoping@^6.23.0:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f"
+  dependencies:
+    babel-runtime "^6.26.0"
+    babel-template "^6.26.0"
+    babel-traverse "^6.26.0"
+    babel-types "^6.26.0"
+    lodash "^4.17.4"
+
+babel-plugin-transform-es2015-classes@^6.23.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db"
+  dependencies:
+    babel-helper-define-map "^6.24.1"
+    babel-helper-function-name "^6.24.1"
+    babel-helper-optimise-call-expression "^6.24.1"
+    babel-helper-replace-supers "^6.24.1"
+    babel-messages "^6.23.0"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-computed-properties@^6.22.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+
+babel-plugin-transform-es2015-destructuring@^6.23.0:
+  version "6.23.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-duplicate-keys@^6.22.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-for-of@^6.23.0:
+  version "6.23.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-function-name@^6.22.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b"
+  dependencies:
+    babel-helper-function-name "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-literals@^6.22.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154"
+  dependencies:
+    babel-plugin-transform-es2015-modules-commonjs "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+
+babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1, babel-plugin-transform-es2015-modules-commonjs@^6.26.0:
+  version "6.26.2"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3"
+  dependencies:
+    babel-plugin-transform-strict-mode "^6.24.1"
+    babel-runtime "^6.26.0"
+    babel-template "^6.26.0"
+    babel-types "^6.26.0"
+
+babel-plugin-transform-es2015-modules-systemjs@^6.23.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23"
+  dependencies:
+    babel-helper-hoist-variables "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+
+babel-plugin-transform-es2015-modules-umd@^6.23.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468"
+  dependencies:
+    babel-plugin-transform-es2015-modules-amd "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+
+babel-plugin-transform-es2015-object-super@^6.22.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d"
+  dependencies:
+    babel-helper-replace-supers "^6.24.1"
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-parameters@^6.23.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b"
+  dependencies:
+    babel-helper-call-delegate "^6.24.1"
+    babel-helper-get-function-arity "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-shorthand-properties@^6.22.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-spread@^6.22.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-sticky-regex@^6.22.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc"
+  dependencies:
+    babel-helper-regex "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-template-literals@^6.22.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-typeof-symbol@^6.23.0:
+  version "6.23.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-unicode-regex@^6.22.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9"
+  dependencies:
+    babel-helper-regex "^6.24.1"
+    babel-runtime "^6.22.0"
+    regexpu-core "^2.0.0"
+
+babel-plugin-transform-exponentiation-operator@^6.22.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e"
+  dependencies:
+    babel-helper-builder-binary-assignment-operator-visitor "^6.24.1"
+    babel-plugin-syntax-exponentiation-operator "^6.8.0"
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-react-jsx@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3"
+  dependencies:
+    babel-helper-builder-react-jsx "^6.24.1"
+    babel-plugin-syntax-jsx "^6.8.0"
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-regenerator@^6.22.0:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f"
+  dependencies:
+    regenerator-transform "^0.10.0"
+
+babel-plugin-transform-strict-mode@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-preset-env@^1.7.0:
+  version "1.7.0"
+  resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a"
+  dependencies:
+    babel-plugin-check-es2015-constants "^6.22.0"
+    babel-plugin-syntax-trailing-function-commas "^6.22.0"
+    babel-plugin-transform-async-to-generator "^6.22.0"
+    babel-plugin-transform-es2015-arrow-functions "^6.22.0"
+    babel-plugin-transform-es2015-block-scoped-functions "^6.22.0"
+    babel-plugin-transform-es2015-block-scoping "^6.23.0"
+    babel-plugin-transform-es2015-classes "^6.23.0"
+    babel-plugin-transform-es2015-computed-properties "^6.22.0"
+    babel-plugin-transform-es2015-destructuring "^6.23.0"
+    babel-plugin-transform-es2015-duplicate-keys "^6.22.0"
+    babel-plugin-transform-es2015-for-of "^6.23.0"
+    babel-plugin-transform-es2015-function-name "^6.22.0"
+    babel-plugin-transform-es2015-literals "^6.22.0"
+    babel-plugin-transform-es2015-modules-amd "^6.22.0"
+    babel-plugin-transform-es2015-modules-commonjs "^6.23.0"
+    babel-plugin-transform-es2015-modules-systemjs "^6.23.0"
+    babel-plugin-transform-es2015-modules-umd "^6.23.0"
+    babel-plugin-transform-es2015-object-super "^6.22.0"
+    babel-plugin-transform-es2015-parameters "^6.23.0"
+    babel-plugin-transform-es2015-shorthand-properties "^6.22.0"
+    babel-plugin-transform-es2015-spread "^6.22.0"
+    babel-plugin-transform-es2015-sticky-regex "^6.22.0"
+    babel-plugin-transform-es2015-template-literals "^6.22.0"
+    babel-plugin-transform-es2015-typeof-symbol "^6.23.0"
+    babel-plugin-transform-es2015-unicode-regex "^6.22.0"
+    babel-plugin-transform-exponentiation-operator "^6.22.0"
+    babel-plugin-transform-regenerator "^6.22.0"
+    browserslist "^3.2.6"
+    invariant "^2.2.2"
+    semver "^5.3.0"
+
+babel-register@^6.26.0:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071"
+  dependencies:
+    babel-core "^6.26.0"
+    babel-runtime "^6.26.0"
+    core-js "^2.5.0"
+    home-or-tmp "^2.0.0"
+    lodash "^4.17.4"
+    mkdirp "^0.5.1"
+    source-map-support "^0.4.15"
+
+babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
+  dependencies:
+    core-js "^2.4.0"
+    regenerator-runtime "^0.11.0"
+
+babel-template@^6.24.1, babel-template@^6.26.0:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02"
+  dependencies:
+    babel-runtime "^6.26.0"
+    babel-traverse "^6.26.0"
+    babel-types "^6.26.0"
+    babylon "^6.18.0"
+    lodash "^4.17.4"
+
+babel-traverse@^6.24.1, babel-traverse@^6.26.0:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee"
+  dependencies:
+    babel-code-frame "^6.26.0"
+    babel-messages "^6.23.0"
+    babel-runtime "^6.26.0"
+    babel-types "^6.26.0"
+    babylon "^6.18.0"
+    debug "^2.6.8"
+    globals "^9.18.0"
+    invariant "^2.2.2"
+    lodash "^4.17.4"
+
+babel-types@^6.15.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497"
+  dependencies:
+    babel-runtime "^6.26.0"
+    esutils "^2.0.2"
+    lodash "^4.17.4"
+    to-fast-properties "^1.0.3"
+
+babylon-walk@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/babylon-walk/-/babylon-walk-1.0.2.tgz#3b15a5ddbb482a78b4ce9c01c8ba181702d9d6ce"
+  dependencies:
+    babel-runtime "^6.11.6"
+    babel-types "^6.15.0"
+    lodash.clone "^4.5.0"
+
+babylon@^6.17.4, babylon@^6.18.0:
+  version "6.18.0"
+  resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
+
+balanced-match@^0.4.2:
+  version "0.4.2"
+  resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
+
+balanced-match@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
+
+base64-js@^1.0.2:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3"
+
+base@^0.11.1:
+  version "0.11.2"
+  resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
+  dependencies:
+    cache-base "^1.0.1"
+    class-utils "^0.3.5"
+    component-emitter "^1.2.1"
+    define-property "^1.0.0"
+    isobject "^3.0.1"
+    mixin-deep "^1.2.0"
+    pascalcase "^0.1.1"
+
+binary-extensions@^1.0.0:
+  version "1.11.0"
+  resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205"
+
+bindings@~1.2.1:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11"
+
+bluebird@^3.0.5:
+  version "3.5.1"
+  resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
+
+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
+  version "4.11.8"
+  resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
+
+boolbase@^1.0.0, boolbase@~1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
+
+brace-expansion@^1.1.7:
+  version "1.1.11"
+  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+  dependencies:
+    balanced-match "^1.0.0"
+    concat-map "0.0.1"
+
+braces@^2.3.0, braces@^2.3.1:
+  version "2.3.2"
+  resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
+  dependencies:
+    arr-flatten "^1.1.0"
+    array-unique "^0.3.2"
+    extend-shallow "^2.0.1"
+    fill-range "^4.0.0"
+    isobject "^3.0.1"
+    repeat-element "^1.1.2"
+    snapdragon "^0.8.1"
+    snapdragon-node "^2.0.1"
+    split-string "^3.0.2"
+    to-regex "^3.0.1"
+
+brfs@^1.2.0:
+  version "1.6.1"
+  resolved "https://registry.yarnpkg.com/brfs/-/brfs-1.6.1.tgz#b78ce2336d818e25eea04a0947cba6d4fb8849c3"
+  dependencies:
+    quote-stream "^1.0.1"
+    resolve "^1.1.5"
+    static-module "^2.2.0"
+    through2 "^2.0.0"
+
+brorand@^1.0.1:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
+
+browserify-aes@^1.0.0, browserify-aes@^1.0.4:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
+  dependencies:
+    buffer-xor "^1.0.3"
+    cipher-base "^1.0.0"
+    create-hash "^1.1.0"
+    evp_bytestokey "^1.0.3"
+    inherits "^2.0.1"
+    safe-buffer "^5.0.1"
+
+browserify-cipher@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0"
+  dependencies:
+    browserify-aes "^1.0.4"
+    browserify-des "^1.0.0"
+    evp_bytestokey "^1.0.0"
+
+browserify-des@^1.0.0:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c"
+  dependencies:
+    cipher-base "^1.0.1"
+    des.js "^1.0.0"
+    inherits "^2.0.1"
+    safe-buffer "^5.1.2"
+
+browserify-rsa@^4.0.0:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
+  dependencies:
+    bn.js "^4.1.0"
+    randombytes "^2.0.1"
+
+browserify-sign@^4.0.0:
+  version "4.0.4"
+  resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298"
+  dependencies:
+    bn.js "^4.1.1"
+    browserify-rsa "^4.0.0"
+    create-hash "^1.1.0"
+    create-hmac "^1.1.2"
+    elliptic "^6.0.0"
+    inherits "^2.0.1"
+    parse-asn1 "^5.0.0"
+
+browserify-zlib@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f"
+  dependencies:
+    pako "~1.0.5"
+
+browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6:
+  version "1.7.7"
+  resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9"
+  dependencies:
+    caniuse-db "^1.0.30000639"
+    electron-to-chromium "^1.2.7"
+
+browserslist@^3.2.6:
+  version "3.2.8"
+  resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6"
+  dependencies:
+    caniuse-lite "^1.0.30000844"
+    electron-to-chromium "^1.3.47"
+
+browserslist@^4.0.0:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.0.1.tgz#61c05ce2a5843c7d96166408bc23d58b5416e818"
+  dependencies:
+    caniuse-lite "^1.0.30000865"
+    electron-to-chromium "^1.3.52"
+    node-releases "^1.0.0-alpha.10"
+
+buffer-equal@0.0.1:
+  version "0.0.1"
+  resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b"
+
+buffer-from@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.0.tgz#87fcaa3a298358e0ade6e442cfce840740d1ad04"
+
+buffer-xor@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
+
+buffer@^4.3.0:
+  version "4.9.1"
+  resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
+  dependencies:
+    base64-js "^1.0.2"
+    ieee754 "^1.1.4"
+    isarray "^1.0.0"
+
+builtin-status-codes@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
+
+cache-base@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
+  dependencies:
+    collection-visit "^1.0.0"
+    component-emitter "^1.2.1"
+    get-value "^2.0.6"
+    has-value "^1.0.0"
+    isobject "^3.0.1"
+    set-value "^2.0.0"
+    to-object-path "^0.3.0"
+    union-value "^1.0.0"
+    unset-value "^1.0.0"
+
+call-me-maybe@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b"
+
+caniuse-api@^1.5.2:
+  version "1.6.1"
+  resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c"
+  dependencies:
+    browserslist "^1.3.6"
+    caniuse-db "^1.0.30000529"
+    lodash.memoize "^4.1.2"
+    lodash.uniq "^4.5.0"
+
+caniuse-api@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0"
+  dependencies:
+    browserslist "^4.0.0"
+    caniuse-lite "^1.0.0"
+    lodash.memoize "^4.1.2"
+    lodash.uniq "^4.5.0"
+
+caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
+  version "1.0.30000871"
+  resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000871.tgz#f1995c1fe31892649a7605957a80c92518423d4d"
+
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000865:
+  version "1.0.30000865"
+  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000865.tgz#70026616e8afe6e1442f8bb4e1092987d81a2f25"
+
+chalk@^1.1.3:
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
+  dependencies:
+    ansi-styles "^2.2.1"
+    escape-string-regexp "^1.0.2"
+    has-ansi "^2.0.0"
+    strip-ansi "^3.0.0"
+    supports-color "^2.0.0"
+
+chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1, chalk@^2.4.1:
+  version "2.4.1"
+  resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e"
+  dependencies:
+    ansi-styles "^3.2.1"
+    escape-string-regexp "^1.0.5"
+    supports-color "^5.3.0"
+
+chokidar@^2.0.3:
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26"
+  dependencies:
+    anymatch "^2.0.0"
+    async-each "^1.0.0"
+    braces "^2.3.0"
+    glob-parent "^3.1.0"
+    inherits "^2.0.1"
+    is-binary-path "^1.0.0"
+    is-glob "^4.0.0"
+    lodash.debounce "^4.0.8"
+    normalize-path "^2.1.1"
+    path-is-absolute "^1.0.0"
+    readdirp "^2.0.0"
+    upath "^1.0.5"
+  optionalDependencies:
+    fsevents "^1.2.2"
+
+chownr@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181"
+
+cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
+  dependencies:
+    inherits "^2.0.1"
+    safe-buffer "^5.0.1"
+
+clap@^1.0.9:
+  version "1.2.3"
+  resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51"
+  dependencies:
+    chalk "^1.1.3"
+
+class-utils@^0.3.5:
+  version "0.3.6"
+  resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
+  dependencies:
+    arr-union "^3.1.0"
+    define-property "^0.2.5"
+    isobject "^3.0.0"
+    static-extend "^0.1.1"
+
+cli-cursor@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
+  dependencies:
+    restore-cursor "^2.0.0"
+
+cli-spinners@^1.1.0:
+  version "1.3.1"
+  resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a"
+
+clone@^1.0.2:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
+
+clone@^2.1.1:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb"
+
+clones@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/clones/-/clones-1.1.0.tgz#87e904132d6140c5c0b72006c08c0d05bd7b63b3"
+
+coa@~1.0.1:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd"
+  dependencies:
+    q "^1.1.2"
+
+coa@~2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.1.tgz#f3f8b0b15073e35d70263fb1042cb2c023db38af"
+  dependencies:
+    q "^1.1.2"
+
+code-point-at@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
+
+collection-visit@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
+  dependencies:
+    map-visit "^1.0.0"
+    object-visit "^1.0.0"
+
+color-convert@^1.3.0, color-convert@^1.9.0, color-convert@^1.9.1:
+  version "1.9.2"
+  resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.2.tgz#49881b8fba67df12a96bdf3f56c0aab9e7913147"
+  dependencies:
+    color-name "1.1.1"
+
+color-name@1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689"
+
+color-name@^1.0.0:
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+
+color-string@^0.3.0:
+  version "0.3.0"
+  resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991"
+  dependencies:
+    color-name "^1.0.0"
+
+color-string@^1.5.2:
+  version "1.5.2"
+  resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.2.tgz#26e45814bc3c9a7cbd6751648a41434514a773a9"
+  dependencies:
+    color-name "^1.0.0"
+    simple-swizzle "^0.2.2"
+
+color@^0.11.0:
+  version "0.11.4"
+  resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764"
+  dependencies:
+    clone "^1.0.2"
+    color-convert "^1.3.0"
+    color-string "^0.3.0"
+
+color@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/color/-/color-3.0.0.tgz#d920b4328d534a3ac8295d68f7bd4ba6c427be9a"
+  dependencies:
+    color-convert "^1.9.1"
+    color-string "^1.5.2"
+
+colormin@^1.0.5:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133"
+  dependencies:
+    color "^0.11.0"
+    css-color-names "0.0.4"
+    has "^1.0.1"
+
+colors@~1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
+
+command-exists@^1.2.6:
+  version "1.2.7"
+  resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.7.tgz#16828f0c3ff2b0c58805861ef211b64fc15692a8"
+
+commander@^2.11.0, commander@^2.9.0, commander@~2.16.0:
+  version "2.16.0"
+  resolved "https://registry.yarnpkg.com/commander/-/commander-2.16.0.tgz#f16390593996ceb4f3eeb020b31d78528f7f8a50"
+
+commander@~2.13.0:
+  version "2.13.0"
+  resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c"
+
+component-emitter@^1.2.1:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
+
+concat-map@0.0.1:
+  version "0.0.1"
+  resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+
+concat-stream@~1.6.0:
+  version "1.6.2"
+  resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
+  dependencies:
+    buffer-from "^1.0.0"
+    inherits "^2.0.3"
+    readable-stream "^2.2.2"
+    typedarray "^0.0.6"
+
+config-chain@~1.1.5:
+  version "1.1.11"
+  resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.11.tgz#aba09747dfbe4c3e70e766a6e41586e1859fc6f2"
+  dependencies:
+    ini "^1.3.4"
+    proto-list "~1.2.1"
+
+console-browserify@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
+  dependencies:
+    date-now "^0.1.4"
+
+console-control-strings@^1.0.0, console-control-strings@~1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+
+constants-browserify@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
+
+convert-source-map@^1.5.1:
+  version "1.5.1"
+  resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5"
+
+copy-descriptor@^0.1.0:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
+
+core-js@^2.4.0, core-js@^2.5.0:
+  version "2.5.7"
+  resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e"
+
+core-util-is@~1.0.0:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+
+cosmiconfig@^5.0.0:
+  version "5.0.5"
+  resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.5.tgz#a809e3c2306891ce17ab70359dc8bdf661fe2cd0"
+  dependencies:
+    is-directory "^0.3.1"
+    js-yaml "^3.9.0"
+    parse-json "^4.0.0"
+
+create-ecdh@^4.0.0:
+  version "4.0.3"
+  resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff"
+  dependencies:
+    bn.js "^4.1.0"
+    elliptic "^6.0.0"
+
+create-hash@^1.1.0, create-hash@^1.1.2:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
+  dependencies:
+    cipher-base "^1.0.1"
+    inherits "^2.0.1"
+    md5.js "^1.3.4"
+    ripemd160 "^2.0.1"
+    sha.js "^2.4.0"
+
+create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
+  version "1.1.7"
+  resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
+  dependencies:
+    cipher-base "^1.0.3"
+    create-hash "^1.1.0"
+    inherits "^2.0.1"
+    ripemd160 "^2.0.0"
+    safe-buffer "^5.0.1"
+    sha.js "^2.4.8"
+
+cross-spawn@^6.0.4:
+  version "6.0.5"
+  resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
+  dependencies:
+    nice-try "^1.0.4"
+    path-key "^2.0.1"
+    semver "^5.5.0"
+    shebang-command "^1.2.0"
+    which "^1.2.9"
+
+crypto-browserify@^3.11.0:
+  version "3.12.0"
+  resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
+  dependencies:
+    browserify-cipher "^1.0.0"
+    browserify-sign "^4.0.0"
+    create-ecdh "^4.0.0"
+    create-hash "^1.1.0"
+    create-hmac "^1.1.0"
+    diffie-hellman "^5.0.0"
+    inherits "^2.0.1"
+    pbkdf2 "^3.0.3"
+    public-encrypt "^4.0.0"
+    randombytes "^2.0.0"
+    randomfill "^1.0.3"
+
+css-color-names@0.0.4, css-color-names@^0.0.4:
+  version "0.0.4"
+  resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
+
+css-declaration-sorter@^3.0.0:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-3.0.1.tgz#d0e3056b0fd88dc1ea9dceff435adbe9c702a7f8"
+  dependencies:
+    postcss "^6.0.0"
+    timsort "^0.3.0"
+
+css-select-base-adapter@~0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.0.tgz#0102b3d14630df86c3eb9fa9f5456270106cf990"
+
+css-select@~1.3.0-rc0:
+  version "1.3.0-rc0"
+  resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.3.0-rc0.tgz#6f93196aaae737666ea1036a8cb14a8fcb7a9231"
+  dependencies:
+    boolbase "^1.0.0"
+    css-what "2.1"
+    domutils "1.5.1"
+    nth-check "^1.0.1"
+
+css-tree@1.0.0-alpha.29:
+  version "1.0.0-alpha.29"
+  resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz#3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39"
+  dependencies:
+    mdn-data "~1.1.0"
+    source-map "^0.5.3"
+
+css-tree@1.0.0-alpha25:
+  version "1.0.0-alpha25"
+  resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha25.tgz#1bbfabfbf6eeef4f01d9108ff2edd0be2fe35597"
+  dependencies:
+    mdn-data "^1.0.0"
+    source-map "^0.5.3"
+
+css-unit-converter@^1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996"
+
+css-url-regex@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/css-url-regex/-/css-url-regex-1.1.0.tgz#83834230cc9f74c457de59eebd1543feeb83b7ec"
+
+css-what@2.1:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd"
+
+cssnano-preset-default@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.0.tgz#c334287b4f7d49fb2d170a92f9214655788e3b6b"
+  dependencies:
+    css-declaration-sorter "^3.0.0"
+    cssnano-util-raw-cache "^4.0.0"
+    postcss "^6.0.0"
+    postcss-calc "^6.0.0"
+    postcss-colormin "^4.0.0"
+    postcss-convert-values "^4.0.0"
+    postcss-discard-comments "^4.0.0"
+    postcss-discard-duplicates "^4.0.0"
+    postcss-discard-empty "^4.0.0"
+    postcss-discard-overridden "^4.0.0"
+    postcss-merge-longhand "^4.0.0"
+    postcss-merge-rules "^4.0.0"
+    postcss-minify-font-values "^4.0.0"
+    postcss-minify-gradients "^4.0.0"
+    postcss-minify-params "^4.0.0"
+    postcss-minify-selectors "^4.0.0"
+    postcss-normalize-charset "^4.0.0"
+    postcss-normalize-display-values "^4.0.0"
+    postcss-normalize-positions "^4.0.0"
+    postcss-normalize-repeat-style "^4.0.0"
+    postcss-normalize-string "^4.0.0"
+    postcss-normalize-timing-functions "^4.0.0"
+    postcss-normalize-unicode "^4.0.0"
+    postcss-normalize-url "^4.0.0"
+    postcss-normalize-whitespace "^4.0.0"
+    postcss-ordered-values "^4.0.0"
+    postcss-reduce-initial "^4.0.0"
+    postcss-reduce-transforms "^4.0.0"
+    postcss-svgo "^4.0.0"
+    postcss-unique-selectors "^4.0.0"
+
+cssnano-util-get-arguments@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f"
+
+cssnano-util-get-match@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d"
+
+cssnano-util-raw-cache@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.0.tgz#be0a2856e25f185f5f7a2bcc0624e28b7f179a9f"
+  dependencies:
+    postcss "^6.0.0"
+
+cssnano-util-same-parent@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.0.tgz#d2a3de1039aa98bc4ec25001fa050330c2a16dac"
+
+cssnano@^3.4.0:
+  version "3.10.0"
+  resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38"
+  dependencies:
+    autoprefixer "^6.3.1"
+    decamelize "^1.1.2"
+    defined "^1.0.0"
+    has "^1.0.1"
+    object-assign "^4.0.1"
+    postcss "^5.0.14"
+    postcss-calc "^5.2.0"
+    postcss-colormin "^2.1.8"
+    postcss-convert-values "^2.3.4"
+    postcss-discard-comments "^2.0.4"
+    postcss-discard-duplicates "^2.0.1"
+    postcss-discard-empty "^2.0.1"
+    postcss-discard-overridden "^0.1.1"
+    postcss-discard-unused "^2.2.1"
+    postcss-filter-plugins "^2.0.0"
+    postcss-merge-idents "^2.1.5"
+    postcss-merge-longhand "^2.0.1"
+    postcss-merge-rules "^2.0.3"
+    postcss-minify-font-values "^1.0.2"
+    postcss-minify-gradients "^1.0.1"
+    postcss-minify-params "^1.0.4"
+    postcss-minify-selectors "^2.0.4"
+    postcss-normalize-charset "^1.1.0"
+    postcss-normalize-url "^3.0.7"
+    postcss-ordered-values "^2.1.0"
+    postcss-reduce-idents "^2.2.2"
+    postcss-reduce-initial "^1.0.0"
+    postcss-reduce-transforms "^1.0.3"
+    postcss-svgo "^2.1.1"
+    postcss-unique-selectors "^2.0.2"
+    postcss-value-parser "^3.2.3"
+    postcss-zindex "^2.0.1"
+
+cssnano@^4.0.0:
+  version "4.0.4"
+  resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.0.4.tgz#8a397b5e307e06fd7e361bf11344b1cff8749a86"
+  dependencies:
+    cosmiconfig "^5.0.0"
+    cssnano-preset-default "^4.0.0"
+    is-resolvable "^1.0.0"
+    postcss "^6.0.0"
+
+csso@^3.5.0:
+  version "3.5.1"
+  resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b"
+  dependencies:
+    css-tree "1.0.0-alpha.29"
+
+csso@~2.3.1:
+  version "2.3.2"
+  resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85"
+  dependencies:
+    clap "^1.0.9"
+    source-map "^0.5.3"
+
+date-now@^0.1.4:
+  version "0.1.4"
+  resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
+
+deasync@^0.1.13:
+  version "0.1.13"
+  resolved "https://registry.yarnpkg.com/deasync/-/deasync-0.1.13.tgz#815c2b69bbd1117cae570152cd895661c09f20ea"
+  dependencies:
+    bindings "~1.2.1"
+    nan "^2.0.7"
+
+debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9:
+  version "2.6.9"
+  resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+  dependencies:
+    ms "2.0.0"
+
+decamelize@^1.1.2:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+
+decode-uri-component@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
+
+deep-extend@^0.6.0:
+  version "0.6.0"
+  resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
+
+deep-is@~0.1.3:
+  version "0.1.3"
+  resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
+
+defaults@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d"
+  dependencies:
+    clone "^1.0.2"
+
+define-properties@^1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94"
+  dependencies:
+    foreach "^2.0.5"
+    object-keys "^1.0.8"
+
+define-property@^0.2.5:
+  version "0.2.5"
+  resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
+  dependencies:
+    is-descriptor "^0.1.0"
+
+define-property@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
+  dependencies:
+    is-descriptor "^1.0.0"
+
+define-property@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
+  dependencies:
+    is-descriptor "^1.0.2"
+    isobject "^3.0.1"
+
+defined@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
+
+delegates@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
+
+depd@~1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
+
+des.js@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
+  dependencies:
+    inherits "^2.0.1"
+    minimalistic-assert "^1.0.0"
+
+destroy@~1.0.4:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
+
+detect-indent@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
+  dependencies:
+    repeating "^2.0.0"
+
+detect-libc@^1.0.2:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
+
+diffie-hellman@^5.0.0:
+  version "5.0.3"
+  resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
+  dependencies:
+    bn.js "^4.1.0"
+    miller-rabin "^4.0.0"
+    randombytes "^2.0.0"
+
+dom-serializer@0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
+  dependencies:
+    domelementtype "~1.1.1"
+    entities "~1.1.1"
+
+domain-browser@^1.1.1:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
+
+domelementtype@1, domelementtype@^1.3.0:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2"
+
+domelementtype@~1.1.1:
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b"
+
+domhandler@^2.3.0:
+  version "2.4.2"
+  resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
+  dependencies:
+    domelementtype "1"
+
+domutils@1.5.1:
+  version "1.5.1"
+  resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
+  dependencies:
+    dom-serializer "0"
+    domelementtype "1"
+
+domutils@^1.5.1:
+  version "1.7.0"
+  resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
+  dependencies:
+    dom-serializer "0"
+    domelementtype "1"
+
+dot-prop@^4.1.1:
+  version "4.2.0"
+  resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57"
+  dependencies:
+    is-obj "^1.0.0"
+
+dotenv@^5.0.0:
+  version "5.0.1"
+  resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef"
+
+duplexer2@~0.1.4:
+  version "0.1.4"