Bug 1531350 - [release 128] [ast] Migrate AST reducer off of immutable (#7982). r=dwalsh
authorErrietta Kostala <errietta@users.noreply.github.com>
Thu, 28 Feb 2019 14:37:46 -0500
changeset 520008 b6811a8e2c6eec0336ab462e8f46d3c800041416
parent 520007 9560b0da49d4316b8f543f51d9eb133d0b38ace8
child 520009 50a280e9bdff9b24ea36720450896e9137fc677c
push id10862
push userffxbld-merge
push dateMon, 11 Mar 2019 13:01:11 +0000
treeherdermozilla-beta@a2e7f5c935da [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersdwalsh
bugs1531350
milestone67.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 1531350 - [release 128] [ast] Migrate AST reducer off of immutable (#7982). r=dwalsh
devtools/client/debugger/new/dist/parser-worker.js
devtools/client/debugger/new/dist/pretty-print-worker.js
devtools/client/debugger/new/dist/vendors.js
devtools/client/debugger/new/src/actions/ast/setInScopeLines.js
devtools/client/debugger/new/src/actions/types/ASTAction.js
devtools/client/debugger/new/src/reducers/ast.js
devtools/client/debugger/new/src/reducers/types.js
devtools/client/shared/source-map/worker.js
--- a/devtools/client/debugger/new/dist/parser-worker.js
+++ b/devtools/client/debugger/new/dist/parser-worker.js
@@ -598,19 +598,19 @@ var _removeTypeDuplicates = _interopRequ
 var _getBindingIdentifiers = _interopRequireDefault(__webpack_require__(146));
 
 var _getOuterBindingIdentifiers = _interopRequireDefault(__webpack_require__(660));
 
 var _traverse = _interopRequireDefault(__webpack_require__(661));
 
 var _traverseFast = _interopRequireDefault(__webpack_require__(339));
 
-var _shallowEqual = _interopRequireDefault(__webpack_require__(238));
-
-var _is = _interopRequireDefault(__webpack_require__(250));
+var _shallowEqual = _interopRequireDefault(__webpack_require__(239));
+
+var _is = _interopRequireDefault(__webpack_require__(251));
 
 var _isBinding = _interopRequireDefault(__webpack_require__(662));
 
 var _isBlockScoped = _interopRequireDefault(__webpack_require__(663));
 
 var _isImmutable = _interopRequireDefault(__webpack_require__(664));
 
 var _isLet = _interopRequireDefault(__webpack_require__(341));
@@ -620,17 +620,17 @@ var _isNode = _interopRequireDefault(__w
 var _isNodesEquivalent = _interopRequireDefault(__webpack_require__(665));
 
 var _isReferenced = _interopRequireDefault(__webpack_require__(666));
 
 var _isScope = _interopRequireDefault(__webpack_require__(667));
 
 var _isSpecifierDefault = _interopRequireDefault(__webpack_require__(668));
 
-var _isType = _interopRequireDefault(__webpack_require__(251));
+var _isType = _interopRequireDefault(__webpack_require__(252));
 
 var _isValidES3Identifier = _interopRequireDefault(__webpack_require__(669));
 
 var _isValidIdentifier = _interopRequireDefault(__webpack_require__(115));
 
 var _isVar = _interopRequireDefault(__webpack_require__(670));
 
 var _matchesPattern = _interopRequireDefault(__webpack_require__(308));
@@ -947,17 +947,17 @@ exports.isJSX = isJSX;
 exports.isPrivate = isPrivate;
 exports.isTSTypeElement = isTSTypeElement;
 exports.isTSType = isTSType;
 exports.isNumberLiteral = isNumberLiteral;
 exports.isRegexLiteral = isRegexLiteral;
 exports.isRestProperty = isRestProperty;
 exports.isSpreadProperty = isSpreadProperty;
 
-var _shallowEqual = _interopRequireDefault(__webpack_require__(238));
+var _shallowEqual = _interopRequireDefault(__webpack_require__(239));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function isArrayExpression(node, opts) {
   if (!node) return false;
   const nodeType = node.type;
 
   if (nodeType === "ArrayExpression") {
@@ -6825,19 +6825,19 @@ function _toFastProperties() {
 
   _toFastProperties = function () {
     return data;
   };
 
   return data;
 }
 
-__webpack_require__(249);
-
-__webpack_require__(252);
+__webpack_require__(250);
+
+__webpack_require__(253);
 
 __webpack_require__(620);
 
 __webpack_require__(621);
 
 __webpack_require__(622);
 
 __webpack_require__(623);
@@ -7170,17 +7170,17 @@ exports.assertEach = assertEach;
 exports.assertOneOf = assertOneOf;
 exports.assertNodeType = assertNodeType;
 exports.assertNodeOrValueType = assertNodeOrValueType;
 exports.assertValueType = assertValueType;
 exports.chain = chain;
 exports.default = defineType;
 exports.DEPRECATED_KEYS = exports.BUILDER_KEYS = exports.NODE_FIELDS = exports.FLIPPED_ALIAS_KEYS = exports.ALIAS_KEYS = exports.VISITOR_KEYS = void 0;
 
-var _is = _interopRequireDefault(__webpack_require__(250));
+var _is = _interopRequireDefault(__webpack_require__(251));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 const VISITOR_KEYS = {};
 exports.VISITOR_KEYS = VISITOR_KEYS;
 const ALIAS_KEYS = {};
 exports.ALIAS_KEYS = ALIAS_KEYS;
 const FLIPPED_ALIAS_KEYS = {};
@@ -7694,17 +7694,17 @@ module.exports = objectToString;
 /* 110 */,
 /* 111 */,
 /* 112 */,
 /* 113 */,
 /* 114 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var DataView = __webpack_require__(601),
-    Map = __webpack_require__(240),
+    Map = __webpack_require__(241),
     Promise = __webpack_require__(602),
     Set = __webpack_require__(322),
     WeakMap = __webpack_require__(603),
     baseGetTag = __webpack_require__(35),
     toSource = __webpack_require__(310);
 
 /** `Object#toString` result references. */
 var mapTag = '[object Map]',
@@ -7877,17 +7877,17 @@ function cloneNode(node, deep = true) {
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
 
 var base64VLQ = __webpack_require__(118);
 var util = __webpack_require__(41);
 var ArraySet = __webpack_require__(119).ArraySet;
-var MappingList = __webpack_require__(258).MappingList;
+var MappingList = __webpack_require__(259).MappingList;
 
 /**
  * An instance of the SourceMapGenerator represents a source map which is
  * being built incrementally. You may pass an object with the following
  * properties:
  *
  *   - file: The filename of the generated source.
  *   - sourceRoot: A root for all relative URLs in this source map.
@@ -8326,17 +8326,17 @@ exports.SourceMapGenerator = SourceMapGe
  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-var base64 = __webpack_require__(257);
+var base64 = __webpack_require__(258);
 
 // A single base 64 digit can contain 6 bits of data. For the base 64 variable
 // length quantities we use in the source map spec, the first bit is the sign,
 // the next four bits are the actual value, and the 6th bit is the
 // continuation bit. The continuation bit tells us whether there are more
 // digits in this value following this digit.
 //
 //   Continuation
@@ -8936,17 +8936,17 @@ function isPrototype(value) {
 module.exports = isPrototype;
 
 
 /***/ }),
 /* 145 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var isFunction = __webpack_require__(309),
-    isLength = __webpack_require__(245);
+    isLength = __webpack_require__(246);
 
 /**
  * Checks if `value` is array-like. A value is considered array-like if it's
  * not a function and has a `value.length` that's an integer greater than or
  * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
  *
  * @static
  * @memberOf _
@@ -9455,19 +9455,19 @@ module.exports = toInteger;
  *
  * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
  * @license  MIT
  */
 /* eslint-disable no-proto */
 
 
 
-var base64 = __webpack_require__(264)
-var ieee754 = __webpack_require__(265)
-var isArray = __webpack_require__(266)
+var base64 = __webpack_require__(265)
+var ieee754 = __webpack_require__(266)
+var isArray = __webpack_require__(267)
 
 exports.Buffer = Buffer
 exports.SlowBuffer = SlowBuffer
 exports.INSPECT_MAX_BYTES = 50
 
 /**
  * If `Buffer.TYPED_ARRAY_SUPPORT`:
  *   === true    Use Uint8Array implementation (fastest)
@@ -11350,17 +11350,18 @@ module.exports = toKey;
 /* 229 */,
 /* 230 */,
 /* 231 */,
 /* 232 */,
 /* 233 */,
 /* 234 */,
 /* 235 */,
 /* 236 */,
-/* 237 */
+/* 237 */,
+/* 238 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -11757,17 +11758,17 @@ function getSymbols(sourceId) {
 
   const symbols = extractSymbols(sourceId);
 
   symbolDeclarations.set(sourceId, symbols);
   return symbols;
 }
 
 /***/ }),
-/* 238 */
+/* 239 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -11781,17 +11782,17 @@ function shallowEqual(actual, expected) 
       return false;
     }
   }
 
   return true;
 }
 
 /***/ }),
-/* 239 */
+/* 240 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var ListCache = __webpack_require__(134),
     stackClear = __webpack_require__(563),
     stackDelete = __webpack_require__(564),
     stackGet = __webpack_require__(565),
     stackHas = __webpack_require__(566),
     stackSet = __webpack_require__(567);
@@ -11814,30 +11815,30 @@ Stack.prototype['delete'] = stackDelete;
 Stack.prototype.get = stackGet;
 Stack.prototype.has = stackHas;
 Stack.prototype.set = stackSet;
 
 module.exports = Stack;
 
 
 /***/ }),
-/* 240 */
+/* 241 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var getNative = __webpack_require__(64),
     root = __webpack_require__(21);
 
 /* Built-in method references that are verified to be native. */
 var Map = getNative(root, 'Map');
 
 module.exports = Map;
 
 
 /***/ }),
-/* 241 */
+/* 242 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var mapCacheClear = __webpack_require__(572),
     mapCacheDelete = __webpack_require__(579),
     mapCacheGet = __webpack_require__(581),
     mapCacheHas = __webpack_require__(582),
     mapCacheSet = __webpack_require__(583);
 
@@ -11865,17 +11866,17 @@ MapCache.prototype['delete'] = mapCacheD
 MapCache.prototype.get = mapCacheGet;
 MapCache.prototype.has = mapCacheHas;
 MapCache.prototype.set = mapCacheSet;
 
 module.exports = MapCache;
 
 
 /***/ }),
-/* 242 */
+/* 243 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseIsArguments = __webpack_require__(588),
     isObjectLike = __webpack_require__(29);
 
 /** Used for built-in method references. */
 var objectProto = Object.prototype;
 
@@ -11907,17 +11908,17 @@ var isArguments = baseIsArguments(functi
   return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
     !propertyIsEnumerable.call(value, 'callee');
 };
 
 module.exports = isArguments;
 
 
 /***/ }),
-/* 243 */
+/* 244 */
 /***/ (function(module, exports) {
 
 /** Used as references for various `Number` constants. */
 var MAX_SAFE_INTEGER = 9007199254740991;
 
 /** Used to detect unsigned integer values. */
 var reIsUint = /^(?:0|[1-9]\d*)$/;
 
@@ -11938,17 +11939,17 @@ function isIndex(value, length) {
       (type != 'symbol' && reIsUint.test(value))) &&
         (value > -1 && value % 1 == 0 && value < length);
 }
 
 module.exports = isIndex;
 
 
 /***/ }),
-/* 244 */
+/* 245 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseIsTypedArray = __webpack_require__(590),
     baseUnary = __webpack_require__(142),
     nodeUtil = __webpack_require__(143);
 
 /* Node.js helper references. */
 var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
@@ -11971,17 +11972,17 @@ var nodeIsTypedArray = nodeUtil && nodeU
  * // => false
  */
 var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
 
 module.exports = isTypedArray;
 
 
 /***/ }),
-/* 245 */
+/* 246 */
 /***/ (function(module, exports) {
 
 /** Used as references for various `Number` constants. */
 var MAX_SAFE_INTEGER = 9007199254740991;
 
 /**
  * Checks if `value` is a valid array-like length.
  *
@@ -12012,17 +12013,17 @@ function isLength(value) {
   return typeof value == 'number' &&
     value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
 }
 
 module.exports = isLength;
 
 
 /***/ }),
-/* 246 */
+/* 247 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var arrayFilter = __webpack_require__(598),
     stubArray = __webpack_require__(317);
 
 /** Used for built-in method references. */
 var objectProto = Object.prototype;
 
@@ -12048,29 +12049,29 @@ var getSymbols = !nativeGetSymbols ? stu
     return propertyIsEnumerable.call(object, symbol);
   });
 };
 
 module.exports = getSymbols;
 
 
 /***/ }),
-/* 247 */
+/* 248 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var overArg = __webpack_require__(315);
 
 /** Built-in value references. */
 var getPrototype = overArg(Object.getPrototypeOf, Object);
 
 module.exports = getPrototype;
 
 
 /***/ }),
-/* 248 */
+/* 249 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var Uint8Array = __webpack_require__(323);
 
 /**
  * Creates a clone of `arrayBuffer`.
  *
  * @private
@@ -12082,17 +12083,17 @@ function cloneArrayBuffer(arrayBuffer) {
   new Uint8Array(result).set(new Uint8Array(arrayBuffer));
   return result;
 }
 
 module.exports = cloneArrayBuffer;
 
 
 /***/ }),
-/* 249 */
+/* 250 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -12804,47 +12805,47 @@ exports.patternLikeCommon = patternLikeC
     },
     body: {
       validate: (0, _utils.assertNodeType)("BlockStatement", "Statement")
     }
   }
 });
 
 /***/ }),
-/* 250 */
+/* 251 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = is;
 
-var _shallowEqual = _interopRequireDefault(__webpack_require__(238));
-
-var _isType = _interopRequireDefault(__webpack_require__(251));
+var _shallowEqual = _interopRequireDefault(__webpack_require__(239));
+
+var _isType = _interopRequireDefault(__webpack_require__(252));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function is(type, node, opts) {
   if (!node) return false;
   const matches = (0, _isType.default)(node.type, type);
   if (!matches) return false;
 
   if (typeof opts === "undefined") {
     return true;
   } else {
     return (0, _shallowEqual.default)(node, opts);
   }
 }
 
 /***/ }),
-/* 251 */
+/* 252 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -12864,30 +12865,30 @@ function isType(nodeType, targetType) {
       if (nodeType === alias) return true;
     }
   }
 
   return false;
 }
 
 /***/ }),
-/* 252 */
+/* 253 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.classMethodOrDeclareMethodCommon = exports.classMethodOrPropertyCommon = void 0;
 
 var _utils = _interopRequireWildcard(__webpack_require__(56));
 
-var _core = __webpack_require__(249);
+var _core = __webpack_require__(250);
 
 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; } }
 
 (0, _utils.default)("AssignmentPattern", {
   visitor: ["left", "right"],
   builder: ["left", "right"],
   aliases: ["Pattern", "PatternLike", "LVal"],
   fields: Object.assign({}, _core.patternLikeCommon, {
@@ -13255,17 +13256,17 @@ exports.classMethodOrDeclareMethodCommon
     argument: {
       optional: true,
       validate: (0, _utils.assertNodeType)("Expression")
     }
   }
 });
 
 /***/ }),
-/* 253 */
+/* 254 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -13285,17 +13286,17 @@ function _interopRequireDefault(obj) { r
 
 function inherit(key, child, parent) {
   if (child && parent) {
     child[key] = (0, _uniq().default)([].concat(child[key], parent[key]).filter(Boolean));
   }
 }
 
 /***/ }),
-/* 254 */
+/* 255 */
 /***/ (function(module, exports) {
 
 /**
  * The base implementation of `_.findIndex` and `_.findLastIndex` without
  * support for iteratee shorthands.
  *
  * @private
  * @param {Array} array The array to inspect.
@@ -13315,17 +13316,17 @@ function baseFindIndex(array, predicate,
   }
   return -1;
 }
 
 module.exports = baseFindIndex;
 
 
 /***/ }),
-/* 255 */
+/* 256 */
 /***/ (function(module, exports) {
 
 /**
  * Converts `set` to an array of its values.
  *
  * @private
  * @param {Object} set The set to convert.
  * @returns {Array} Returns the values.
@@ -13339,31 +13340,31 @@ function setToArray(set) {
   });
   return result;
 }
 
 module.exports = setToArray;
 
 
 /***/ }),
-/* 256 */
+/* 257 */
 /***/ (function(module, exports, __webpack_require__) {
 
 /*
  * Copyright 2009-2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE.txt or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
 exports.SourceMapGenerator = __webpack_require__(117).SourceMapGenerator;
-exports.SourceMapConsumer = __webpack_require__(259).SourceMapConsumer;
-exports.SourceNode = __webpack_require__(262).SourceNode;
-
-
-/***/ }),
-/* 257 */
+exports.SourceMapConsumer = __webpack_require__(260).SourceMapConsumer;
+exports.SourceNode = __webpack_require__(263).SourceNode;
+
+
+/***/ }),
+/* 258 */
 /***/ (function(module, exports) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
@@ -13426,17 +13427,17 @@ exports.decode = function (charCode) {
   }
 
   // Invalid base64 digit.
   return -1;
 };
 
 
 /***/ }),
-/* 258 */
+/* 259 */
 /***/ (function(module, exports, __webpack_require__) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2014 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
@@ -13511,31 +13512,31 @@ MappingList.prototype.toArray = function
   }
   return this._array;
 };
 
 exports.MappingList = MappingList;
 
 
 /***/ }),
-/* 259 */
+/* 260 */
 /***/ (function(module, exports, __webpack_require__) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
 
 var util = __webpack_require__(41);
-var binarySearch = __webpack_require__(260);
+var binarySearch = __webpack_require__(261);
 var ArraySet = __webpack_require__(119).ArraySet;
 var base64VLQ = __webpack_require__(118);
-var quickSort = __webpack_require__(261).quickSort;
+var quickSort = __webpack_require__(262).quickSort;
 
 function SourceMapConsumer(aSourceMap) {
   var sourceMap = aSourceMap;
   if (typeof aSourceMap === 'string') {
     sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
   }
 
   return sourceMap.sections != null
@@ -14599,17 +14600,17 @@ IndexedSourceMapConsumer.prototype._pars
     quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);
     quickSort(this.__originalMappings, util.compareByOriginalPositions);
   };
 
 exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;
 
 
 /***/ }),
-/* 260 */
+/* 261 */
 /***/ (function(module, exports) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
@@ -14716,17 +14717,17 @@ exports.search = function search(aNeedle
     --index;
   }
 
   return index;
 };
 
 
 /***/ }),
-/* 261 */
+/* 262 */
 /***/ (function(module, exports) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
@@ -14836,17 +14837,17 @@ function doQuickSort(ary, comparator, p,
  *        Function to use to compare two items.
  */
 exports.quickSort = function (ary, comparator) {
   doQuickSort(ary, comparator, 0, ary.length - 1);
 };
 
 
 /***/ }),
-/* 262 */
+/* 263 */
 /***/ (function(module, exports, __webpack_require__) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
@@ -15255,17 +15256,17 @@ SourceNode.prototype.toStringWithSourceM
 
   return { code: generated.code, map: map };
 };
 
 exports.SourceNode = SourceNode;
 
 
 /***/ }),
-/* 263 */
+/* 264 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -15439,17 +15440,17 @@ function BigIntLiteral(node) {
     this.token(raw);
     return;
   }
 
   this.token(node.value);
 }
 
 /***/ }),
-/* 264 */
+/* 265 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 exports.byteLength = byteLength
 exports.toByteArray = toByteArray
 exports.fromByteArray = fromByteArray
@@ -15597,17 +15598,17 @@ function fromByteArray (uint8) {
     )
   }
 
   return parts.join('')
 }
 
 
 /***/ }),
-/* 265 */
+/* 266 */
 /***/ (function(module, exports) {
 
 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
   var e, m
   var eLen = (nBytes * 8) - mLen - 1
   var eMax = (1 << eLen) - 1
   var eBias = eMax >> 1
   var nBits = -7
@@ -15687,28 +15688,28 @@ exports.write = function (buffer, value,
   eLen += mLen
   for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
 
   buffer[offset + i - d] |= s * 128
 }
 
 
 /***/ }),
-/* 266 */
+/* 267 */
 /***/ (function(module, exports) {
 
 var toString = {}.toString;
 
 module.exports = Array.isArray || function (arr) {
   return toString.call(arr) == '[object Array]';
 };
 
 
 /***/ }),
-/* 267 */
+/* 268 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var isArray = __webpack_require__(22),
     isSymbol = __webpack_require__(51);
 
 /** Used to match property names within property paths. */
 var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
     reIsPlainProp = /^\w*$/;
@@ -15733,17 +15734,16 @@ function isKey(value, object) {
   return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
     (object != null && value in Object(object));
 }
 
 module.exports = isKey;
 
 
 /***/ }),
-/* 268 */,
 /* 269 */,
 /* 270 */,
 /* 271 */,
 /* 272 */,
 /* 273 */,
 /* 274 */,
 /* 275 */,
 /* 276 */,
@@ -15983,21 +15983,21 @@ function baseAssignValue(object, key, va
 module.exports = baseAssignValue;
 
 
 /***/ }),
 /* 313 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseTimes = __webpack_require__(587),
-    isArguments = __webpack_require__(242),
+    isArguments = __webpack_require__(243),
     isArray = __webpack_require__(22),
     isBuffer = __webpack_require__(141),
-    isIndex = __webpack_require__(243),
-    isTypedArray = __webpack_require__(244);
+    isIndex = __webpack_require__(244),
+    isTypedArray = __webpack_require__(245);
 
 /** Used for built-in method references. */
 var objectProto = Object.prototype;
 
 /** Used to check objects for own properties. */
 var hasOwnProperty = objectProto.hasOwnProperty;
 
 /**
@@ -16162,18 +16162,18 @@ function stubArray() {
 module.exports = stubArray;
 
 
 /***/ }),
 /* 318 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var arrayPush = __webpack_require__(319),
-    getPrototype = __webpack_require__(247),
-    getSymbols = __webpack_require__(246),
+    getPrototype = __webpack_require__(248),
+    getSymbols = __webpack_require__(247),
     stubArray = __webpack_require__(317);
 
 /* Built-in method references for those with the same name as other `lodash` methods. */
 var nativeGetSymbols = Object.getOwnPropertySymbols;
 
 /**
  * Creates an array of the own and inherited enumerable symbols of `object`.
  *
@@ -16219,17 +16219,17 @@ function arrayPush(array, values) {
 module.exports = arrayPush;
 
 
 /***/ }),
 /* 320 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseGetAllKeys = __webpack_require__(321),
-    getSymbols = __webpack_require__(246),
+    getSymbols = __webpack_require__(247),
     keys = __webpack_require__(140);
 
 /**
  * Creates an array of own enumerable property names and symbols of `object`.
  *
  * @private
  * @param {Object} object The object to query.
  * @returns {Array} Returns the array of property names and symbols.
@@ -16611,29 +16611,29 @@ function addComments(node, type, comment
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = inheritInnerComments;
 
-var _inherit = _interopRequireDefault(__webpack_require__(253));
+var _inherit = _interopRequireDefault(__webpack_require__(254));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function inheritInnerComments(child, parent) {
   (0, _inherit.default)("innerComments", child, parent);
 }
 
 /***/ }),
 /* 331 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var MapCache = __webpack_require__(241),
+var MapCache = __webpack_require__(242),
     setCacheAdd = __webpack_require__(634),
     setCacheHas = __webpack_require__(635);
 
 /**
  *
  * Creates an array cache object to store unique values.
  *
  * @private
@@ -16683,17 +16683,17 @@ module.exports = cacheHas;
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = inheritLeadingComments;
 
-var _inherit = _interopRequireDefault(__webpack_require__(253));
+var _inherit = _interopRequireDefault(__webpack_require__(254));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function inheritLeadingComments(child, parent) {
   (0, _inherit.default)("leadingComments", child, parent);
 }
 
 /***/ }),
@@ -16730,17 +16730,17 @@ function inheritsComments(child, parent)
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = inheritTrailingComments;
 
-var _inherit = _interopRequireDefault(__webpack_require__(253));
+var _inherit = _interopRequireDefault(__webpack_require__(254));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function inheritTrailingComments(child, parent) {
   (0, _inherit.default)("trailingComments", child, parent);
 }
 
 /***/ }),
@@ -17077,22 +17077,22 @@ class SimplePath {
 }
 
 /***/ }),
 /* 343 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseKeys = __webpack_require__(314),
     getTag = __webpack_require__(114),
-    isArguments = __webpack_require__(242),
+    isArguments = __webpack_require__(243),
     isArray = __webpack_require__(22),
     isArrayLike = __webpack_require__(145),
     isBuffer = __webpack_require__(141),
     isPrototype = __webpack_require__(144),
-    isTypedArray = __webpack_require__(244);
+    isTypedArray = __webpack_require__(245);
 
 /** `Object#toString` result references. */
 var mapTag = '[object Map]',
     setTag = '[object Set]';
 
 /** Used for built-in method references. */
 var objectProto = Object.prototype;
 
@@ -17774,17 +17774,17 @@ function baseGet(object, path) {
 module.exports = baseGet;
 
 
 /***/ }),
 /* 351 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var isArray = __webpack_require__(22),
-    isKey = __webpack_require__(267),
+    isKey = __webpack_require__(268),
     stringToPath = __webpack_require__(702),
     toString = __webpack_require__(69);
 
 /**
  * Casts `value` to a path array if it's not one.
  *
  * @private
  * @param {*} value The value to inspect.
@@ -18253,17 +18253,17 @@ module.exports = __webpack_require__(550
 
 /***/ }),
 /* 550 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-var _getSymbols = __webpack_require__(237);
+var _getSymbols = __webpack_require__(238);
 
 var _ast = __webpack_require__(49);
 
 var _getScopes = __webpack_require__(348);
 
 var _getScopes2 = _interopRequireDefault(_getScopes);
 
 var _sources = __webpack_require__(344);
@@ -18531,17 +18531,17 @@ function clone(value) {
 
 module.exports = clone;
 
 
 /***/ }),
 /* 557 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Stack = __webpack_require__(239),
+var Stack = __webpack_require__(240),
     arrayEach = __webpack_require__(584),
     assignValue = __webpack_require__(311),
     baseAssign = __webpack_require__(586),
     baseAssignIn = __webpack_require__(592),
     cloneBuffer = __webpack_require__(595),
     copyArray = __webpack_require__(596),
     copySymbols = __webpack_require__(597),
     copySymbolsIn = __webpack_require__(599),
@@ -18933,18 +18933,18 @@ function stackHas(key) {
 module.exports = stackHas;
 
 
 /***/ }),
 /* 567 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var ListCache = __webpack_require__(134),
-    Map = __webpack_require__(240),
-    MapCache = __webpack_require__(241);
+    Map = __webpack_require__(241),
+    MapCache = __webpack_require__(242);
 
 /** Used as the size to enable large array optimizations. */
 var LARGE_ARRAY_SIZE = 200;
 
 /**
  * Sets the stack `key` to `value`.
  *
  * @private
@@ -19084,17 +19084,17 @@ module.exports = getValue;
 
 
 /***/ }),
 /* 572 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var Hash = __webpack_require__(573),
     ListCache = __webpack_require__(134),
-    Map = __webpack_require__(240);
+    Map = __webpack_require__(241);
 
 /**
  * Removes all key-value entries from the map.
  *
  * @private
  * @name clear
  * @memberOf MapCache
  */
@@ -19545,17 +19545,17 @@ function stubFalse() {
 module.exports = stubFalse;
 
 
 /***/ }),
 /* 590 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseGetTag = __webpack_require__(35),
-    isLength = __webpack_require__(245),
+    isLength = __webpack_require__(246),
     isObjectLike = __webpack_require__(29);
 
 /** `Object#toString` result references. */
 var argsTag = '[object Arguments]',
     arrayTag = '[object Array]',
     boolTag = '[object Boolean]',
     dateTag = '[object Date]',
     errorTag = '[object Error]',
@@ -19779,17 +19779,17 @@ function copyArray(source, array) {
 module.exports = copyArray;
 
 
 /***/ }),
 /* 597 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var copyObject = __webpack_require__(139),
-    getSymbols = __webpack_require__(246);
+    getSymbols = __webpack_require__(247);
 
 /**
  * Copies own symbols of `source` to `object`.
  *
  * @private
  * @param {Object} source The object to copy symbols from.
  * @param {Object} [object={}] The object to copy symbols to.
  * @returns {Object} Returns `object`.
@@ -19947,17 +19947,17 @@ function initCloneArray(array) {
 
 module.exports = initCloneArray;
 
 
 /***/ }),
 /* 605 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var cloneArrayBuffer = __webpack_require__(248),
+var cloneArrayBuffer = __webpack_require__(249),
     cloneDataView = __webpack_require__(606),
     cloneRegExp = __webpack_require__(607),
     cloneSymbol = __webpack_require__(608),
     cloneTypedArray = __webpack_require__(609);
 
 /** `Object#toString` result references. */
 var boolTag = '[object Boolean]',
     dateTag = '[object Date]',
@@ -20030,17 +20030,17 @@ function initCloneByTag(object, tag, isD
 
 module.exports = initCloneByTag;
 
 
 /***/ }),
 /* 606 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var cloneArrayBuffer = __webpack_require__(248);
+var cloneArrayBuffer = __webpack_require__(249);
 
 /**
  * Creates a clone of `dataView`.
  *
  * @private
  * @param {Object} dataView The data view to clone.
  * @param {boolean} [isDeep] Specify a deep clone.
  * @returns {Object} Returns the cloned data view.
@@ -20099,17 +20099,17 @@ function cloneSymbol(symbol) {
 
 module.exports = cloneSymbol;
 
 
 /***/ }),
 /* 609 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var cloneArrayBuffer = __webpack_require__(248);
+var cloneArrayBuffer = __webpack_require__(249);
 
 /**
  * Creates a clone of `typedArray`.
  *
  * @private
  * @param {Object} typedArray The typed array to clone.
  * @param {boolean} [isDeep] Specify a deep clone.
  * @returns {Object} Returns the cloned typed array.
@@ -20122,17 +20122,17 @@ function cloneTypedArray(typedArray, isD
 module.exports = cloneTypedArray;
 
 
 /***/ }),
 /* 610 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseCreate = __webpack_require__(611),
-    getPrototype = __webpack_require__(247),
+    getPrototype = __webpack_require__(248),
     isPrototype = __webpack_require__(144);
 
 /**
  * Initializes an object clone.
  *
  * @private
  * @param {Object} object The object to clone.
  * @returns {Object} Returns the initialized clone.
@@ -21275,17 +21275,17 @@ function _interopRequireWildcard(obj) { 
 /* 623 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 var _utils = _interopRequireWildcard(__webpack_require__(56));
 
-var _es = __webpack_require__(252);
+var _es = __webpack_require__(253);
 
 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; } }
 
 (0, _utils.default)("AwaitExpression", {
   builder: ["argument"],
   visitor: ["argument"],
   aliases: ["Expression", "Terminatorless"],
   fields: {
@@ -21451,19 +21451,19 @@ function _interopRequireWildcard(obj) { 
 /* 624 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 var _utils = _interopRequireWildcard(__webpack_require__(56));
 
-var _core = __webpack_require__(249);
-
-var _es = __webpack_require__(252);
+var _core = __webpack_require__(250);
+
+var _es = __webpack_require__(253);
 
 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; } }
 
 const bool = (0, _utils.assertValueType)("boolean");
 const tSFunctionTypeAnnotationCommon = {
   returnType: {
     validate: (0, _utils.assertNodeType)("TSTypeAnnotation", "Noop"),
     optional: true
@@ -22129,17 +22129,17 @@ exports.assertJSX = assertJSX;
 exports.assertPrivate = assertPrivate;
 exports.assertTSTypeElement = assertTSTypeElement;
 exports.assertTSType = assertTSType;
 exports.assertNumberLiteral = assertNumberLiteral;
 exports.assertRegexLiteral = assertRegexLiteral;
 exports.assertRestProperty = assertRestProperty;
 exports.assertSpreadProperty = assertSpreadProperty;
 
-var _is = _interopRequireDefault(__webpack_require__(250));
+var _is = _interopRequireDefault(__webpack_require__(251));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function assert(type, node, opts) {
   if (!(0, _is.default)(type, node, opts)) {
     throw new Error(`Expected type "${type}" with option ${JSON.stringify(opts)}, but instead got "${node.type}".`);
   }
 }
@@ -23346,17 +23346,17 @@ module.exports = uniq;
 /* 633 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var SetCache = __webpack_require__(331),
     arrayIncludes = __webpack_require__(636),
     arrayIncludesWith = __webpack_require__(640),
     cacheHas = __webpack_require__(332),
     createSet = __webpack_require__(641),
-    setToArray = __webpack_require__(255);
+    setToArray = __webpack_require__(256);
 
 /** Used as the size to enable large array optimizations. */
 var LARGE_ARRAY_SIZE = 200;
 
 /**
  * The base implementation of `_.uniqBy` without support for iteratee shorthands.
  *
  * @private
@@ -23487,17 +23487,17 @@ function arrayIncludes(array, value) {
 
 module.exports = arrayIncludes;
 
 
 /***/ }),
 /* 637 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var baseFindIndex = __webpack_require__(254),
+var baseFindIndex = __webpack_require__(255),
     baseIsNaN = __webpack_require__(638),
     strictIndexOf = __webpack_require__(639);
 
 /**
  * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
  *
  * @private
  * @param {Array} array The array to inspect.
@@ -23590,17 +23590,17 @@ module.exports = arrayIncludesWith;
 
 
 /***/ }),
 /* 641 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var Set = __webpack_require__(322),
     noop = __webpack_require__(642),
-    setToArray = __webpack_require__(255);
+    setToArray = __webpack_require__(256);
 
 /** Used as references for various `Number` constants. */
 var INFINITY = 1 / 0;
 
 /**
  * Creates a set object of `values`.
  *
  * @private
@@ -24179,17 +24179,17 @@ function valueToNode(value) {
   throw new Error("don't know how to turn this value into a node");
 }
 
 /***/ }),
 /* 654 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseGetTag = __webpack_require__(35),
-    getPrototype = __webpack_require__(247),
+    getPrototype = __webpack_require__(248),
     isObjectLike = __webpack_require__(29);
 
 /** `Object#toString` result references. */
 var objectTag = '[object Object]';
 
 /** Used for built-in method references. */
 var funcProto = Function.prototype,
     objectProto = Object.prototype;
@@ -24528,17 +24528,17 @@ function isBlockScoped(node) {
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = isImmutable;
 
-var _isType = _interopRequireDefault(__webpack_require__(251));
+var _isType = _interopRequireDefault(__webpack_require__(252));
 
 var _generated = __webpack_require__(19);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function isImmutable(node) {
   if ((0, _isType.default)(node.type, "Immutable")) return true;
 
@@ -45837,17 +45837,17 @@ exports.tokTypes = types;
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = void 0;
 
 function _sourceMap() {
-  const data = _interopRequireDefault(__webpack_require__(256));
+  const data = _interopRequireDefault(__webpack_require__(257));
 
   _sourceMap = function () {
     return data;
   };
 
   return data;
 }
 
@@ -46667,17 +46667,17 @@ module.exports = baseRepeat;
 
 
 /***/ }),
 /* 683 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var eq = __webpack_require__(136),
     isArrayLike = __webpack_require__(145),
-    isIndex = __webpack_require__(243),
+    isIndex = __webpack_require__(244),
     isObject = __webpack_require__(55);
 
 /**
  * Checks if the given arguments are from an iteratee call.
  *
  * @private
  * @param {*} value The potential iteratee value argument.
  * @param {*} index The potential iteratee index or key argument.
@@ -47502,17 +47502,17 @@ Object.keys(_modules).forEach(function (
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _modules[key];
     }
   });
 });
 
-var _types = __webpack_require__(263);
+var _types = __webpack_require__(264);
 
 Object.keys(_types).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _types[key];
     }
@@ -48990,17 +48990,17 @@ function t() {
     return data;
   };
 
   return data;
 }
 
 var _modules = __webpack_require__(346);
 
-var _types2 = __webpack_require__(263);
+var _types2 = __webpack_require__(264);
 
 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; } }
 
 function AnyTypeAnnotation() {
   this.word("any");
 }
 
 function ArrayTypeAnnotation(node) {
@@ -49562,17 +49562,17 @@ exports.Directive = Directive;
 exports.InterpreterDirective = InterpreterDirective;
 Object.defineProperty(exports, "DirectiveLiteral", {
   enumerable: true,
   get: function () {
     return _types.StringLiteral;
   }
 });
 
-var _types = __webpack_require__(263);
+var _types = __webpack_require__(264);
 
 function File(node) {
   if (node.program) {
     this.print(node.program.interpreter, node);
   }
 
   this.print(node.program, node);
 }
@@ -51316,17 +51316,17 @@ var _findIndex = __webpack_require__(705
 var _findIndex2 = _interopRequireDefault(_findIndex);
 
 var _findLastIndex = __webpack_require__(722);
 
 var _findLastIndex2 = _interopRequireDefault(_findLastIndex);
 
 var _contains = __webpack_require__(357);
 
-var _getSymbols = __webpack_require__(237);
+var _getSymbols = __webpack_require__(238);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 function findSymbols(source) {
@@ -51498,17 +51498,17 @@ function memoizeCapped(func) {
 
 module.exports = memoizeCapped;
 
 
 /***/ }),
 /* 704 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var MapCache = __webpack_require__(241);
+var MapCache = __webpack_require__(242);
 
 /** Error message constants. */
 var FUNC_ERROR_TEXT = 'Expected a function';
 
 /**
  * Creates a function that memoizes the result of `func`. If `resolver` is
  * provided, it determines the cache key for storing the result based on the
  * arguments provided to the memoized function. By default, the first argument
@@ -51577,17 +51577,17 @@ memoize.Cache = MapCache;
 
 module.exports = memoize;
 
 
 /***/ }),
 /* 705 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var baseFindIndex = __webpack_require__(254),
+var baseFindIndex = __webpack_require__(255),
     baseIteratee = __webpack_require__(352),
     toInteger = __webpack_require__(149);
 
 /* Built-in method references for those with the same name as other `lodash` methods. */
 var nativeMax = Math.max;
 
 /**
  * This method is like `_.find` except that it returns the index of the first
@@ -51666,17 +51666,17 @@ function baseMatches(source) {
 
 module.exports = baseMatches;
 
 
 /***/ }),
 /* 707 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Stack = __webpack_require__(239),
+var Stack = __webpack_require__(240),
     baseIsEqual = __webpack_require__(353);
 
 /** Used to compose bitmasks for value comparisons. */
 var COMPARE_PARTIAL_FLAG = 1,
     COMPARE_UNORDERED_FLAG = 2;
 
 /**
  * The base implementation of `_.isMatch` without support for iteratee shorthands.
@@ -51734,24 +51734,24 @@ function baseIsMatch(object, source, mat
 
 module.exports = baseIsMatch;
 
 
 /***/ }),
 /* 708 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Stack = __webpack_require__(239),
+var Stack = __webpack_require__(240),
     equalArrays = __webpack_require__(354),
     equalByTag = __webpack_require__(710),
     equalObjects = __webpack_require__(712),
     getTag = __webpack_require__(114),
     isArray = __webpack_require__(22),
     isBuffer = __webpack_require__(141),
-    isTypedArray = __webpack_require__(244);
+    isTypedArray = __webpack_require__(245);
 
 /** Used to compose bitmasks for value comparisons. */
 var COMPARE_PARTIAL_FLAG = 1;
 
 /** `Object#toString` result references. */
 var argsTag = '[object Arguments]',
     arrayTag = '[object Array]',
     objectTag = '[object Object]';
@@ -51857,17 +51857,17 @@ module.exports = arraySome;
 /* 710 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var Symbol = __webpack_require__(28),
     Uint8Array = __webpack_require__(323),
     eq = __webpack_require__(136),
     equalArrays = __webpack_require__(354),
     mapToArray = __webpack_require__(711),
-    setToArray = __webpack_require__(255);
+    setToArray = __webpack_require__(256);
 
 /** Used to compose bitmasks for value comparisons. */
 var COMPARE_PARTIAL_FLAG = 1,
     COMPARE_UNORDERED_FLAG = 2;
 
 /** `Object#toString` result references. */
 var boolTag = '[object Boolean]',
     dateTag = '[object Date]',
@@ -52122,17 +52122,17 @@ module.exports = getMatchData;
 
 /***/ }),
 /* 714 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseIsEqual = __webpack_require__(353),
     get = __webpack_require__(349),
     hasIn = __webpack_require__(715),
-    isKey = __webpack_require__(267),
+    isKey = __webpack_require__(268),
     isStrictComparable = __webpack_require__(355),
     matchesStrictComparable = __webpack_require__(356),
     toKey = __webpack_require__(151);
 
 /** Used to compose bitmasks for value comparisons. */
 var COMPARE_PARTIAL_FLAG = 1,
     COMPARE_UNORDERED_FLAG = 2;
 
@@ -52218,20 +52218,20 @@ function baseHasIn(object, key) {
 module.exports = baseHasIn;
 
 
 /***/ }),
 /* 717 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var castPath = __webpack_require__(351),
-    isArguments = __webpack_require__(242),
+    isArguments = __webpack_require__(243),
     isArray = __webpack_require__(22),
-    isIndex = __webpack_require__(243),
-    isLength = __webpack_require__(245),
+    isIndex = __webpack_require__(244),
+    isLength = __webpack_require__(246),
     toKey = __webpack_require__(151);
 
 /**
  * Checks if `path` exists on `object`.
  *
  * @private
  * @param {Object} object The object to query.
  * @param {Array|string} path The path to check.
@@ -52291,17 +52291,17 @@ module.exports = identity;
 
 
 /***/ }),
 /* 719 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseProperty = __webpack_require__(720),
     basePropertyDeep = __webpack_require__(721),
-    isKey = __webpack_require__(267),
+    isKey = __webpack_require__(268),
     toKey = __webpack_require__(151);
 
 /**
  * Creates a function that returns the value at `path` of a given object.
  *
  * @static
  * @memberOf _
  * @since 2.4.0
@@ -52369,17 +52369,17 @@ function basePropertyDeep(path) {
 
 module.exports = basePropertyDeep;
 
 
 /***/ }),
 /* 722 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var baseFindIndex = __webpack_require__(254),
+var baseFindIndex = __webpack_require__(255),
     baseIteratee = __webpack_require__(352),
     toInteger = __webpack_require__(149);
 
 /* Built-in method references for those with the same name as other `lodash` methods. */
 var nativeMax = Math.max,
     nativeMin = Math.min;
 
 /**
@@ -52584,17 +52584,17 @@ Object.defineProperty(exports, "__esModu
   value: true
 });
 exports.getFramework = getFramework;
 
 var _types = __webpack_require__(12);
 
 var t = _interopRequireWildcard(_types);
 
-var _getSymbols = __webpack_require__(237);
+var _getSymbols = __webpack_require__(238);
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 function getFramework(sourceId) {
--- a/devtools/client/debugger/new/dist/pretty-print-worker.js
+++ b/devtools/client/debugger/new/dist/pretty-print-worker.js
@@ -83,17 +83,17 @@ return /******/ (function(modules) { // 
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
 
 var base64VLQ = __webpack_require__(118);
 var util = __webpack_require__(41);
 var ArraySet = __webpack_require__(119).ArraySet;
-var MappingList = __webpack_require__(258).MappingList;
+var MappingList = __webpack_require__(259).MappingList;
 
 /**
  * An instance of the SourceMapGenerator represents a source map which is
  * being built incrementally. You may pass an object with the following
  * properties:
  *
  *   - file: The filename of the generated source.
  *   - sourceRoot: A root for all relative URLs in this source map.
@@ -533,17 +533,17 @@ exports.SourceMapGenerator = SourceMapGe
  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-var base64 = __webpack_require__(257);
+var base64 = __webpack_require__(258);
 
 // A single base 64 digit can contain 6 bits of data. For the base 64 variable
 // length quantities we use in the source map spec, the first bit is the sign,
 // the next four bits are the actual value, and the 6th bit is the
 // continuation bit. The continuation bit tells us whether there are more
 // digits in this value following this digit.
 //
 //   Continuation
@@ -813,32 +813,32 @@ function networkRequest(url, opts) {
     return Promise.reject(`request failed with status ${res.status}`);
   });
 }
 
 module.exports = networkRequest;
 
 /***/ }),
 
-/***/ 256:
+/***/ 257:
 /***/ (function(module, exports, __webpack_require__) {
 
 /*
  * Copyright 2009-2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE.txt or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
 exports.SourceMapGenerator = __webpack_require__(117).SourceMapGenerator;
-exports.SourceMapConsumer = __webpack_require__(259).SourceMapConsumer;
-exports.SourceNode = __webpack_require__(262).SourceNode;
+exports.SourceMapConsumer = __webpack_require__(260).SourceMapConsumer;
+exports.SourceNode = __webpack_require__(263).SourceNode;
 
 
 /***/ }),
 
-/***/ 257:
+/***/ 258:
 /***/ (function(module, exports) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
@@ -902,17 +902,17 @@ exports.decode = function (charCode) {
 
   // Invalid base64 digit.
   return -1;
 };
 
 
 /***/ }),
 
-/***/ 258:
+/***/ 259:
 /***/ (function(module, exports, __webpack_require__) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2014 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
@@ -988,31 +988,209 @@ MappingList.prototype.toArray = function
   return this._array;
 };
 
 exports.MappingList = MappingList;
 
 
 /***/ }),
 
-/***/ 259:
+/***/ 26:
+/***/ (function(module, exports) {
+
+function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
+
+function WorkerDispatcher() {
+  this.msgId = 1;
+  this.worker = null;
+} /* This Source Code Form is subject to the terms of the Mozilla Public
+   * License, v. 2.0. If a copy of the MPL was not distributed with this
+   * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
+
+WorkerDispatcher.prototype = {
+  start(url, win = window) {
+    this.worker = new win.Worker(url);
+    this.worker.onerror = () => {
+      console.error(`Error in worker ${url}`);
+    };
+  },
+
+  stop() {
+    if (!this.worker) {
+      return;
+    }
+
+    this.worker.terminate();
+    this.worker = null;
+  },
+
+  task(method, { queue = false } = {}) {
+    const calls = [];
+    const push = args => {
+      return new Promise((resolve, reject) => {
+        if (queue && calls.length === 0) {
+          Promise.resolve().then(flush);
+        }
+
+        calls.push([args, resolve, reject]);
+
+        if (!queue) {
+          flush();
+        }
+      });
+    };
+
+    const flush = () => {
+      const items = calls.slice();
+      calls.length = 0;
+
+      if (!this.worker) {
+        return;
+      }
+
+      const id = this.msgId++;
+      this.worker.postMessage({
+        id,
+        method,
+        calls: items.map(item => item[0])
+      });
+
+      const listener = ({ data: result }) => {
+        if (result.id !== id) {
+          return;
+        }
+
+        if (!this.worker) {
+          return;
+        }
+
+        this.worker.removeEventListener("message", listener);
+
+        result.results.forEach((resultData, i) => {
+          const [, resolve, reject] = items[i];
+
+          if (resultData.error) {
+            reject(resultData.error);
+          } else {
+            resolve(resultData.response);
+          }
+        });
+      };
+
+      this.worker.addEventListener("message", listener);
+    };
+
+    return (...args) => push(args);
+  },
+
+  invoke(method, ...args) {
+    return this.task(method)(...args);
+  }
+};
+
+function workerHandler(publicInterface) {
+  return function (msg) {
+    const { id, method, calls } = msg.data;
+
+    Promise.all(calls.map(args => {
+      try {
+        const response = publicInterface[method].apply(undefined, args);
+        if (response instanceof Promise) {
+          return response.then(val => ({ response: val }),
+          // Error can't be sent via postMessage, so be sure to
+          // convert to string.
+          err => ({ error: err.toString() }));
+        }
+        return { response };
+      } catch (error) {
+        // Error can't be sent via postMessage, so be sure to convert to
+        // string.
+        return { error: error.toString() };
+      }
+    })).then(results => {
+      self.postMessage({ id, results });
+    });
+  };
+}
+
+function streamingWorkerHandler(publicInterface, { timeout = 100 } = {}, worker = self) {
+  let streamingWorker = (() => {
+    var _ref = _asyncToGenerator(function* (id, tasks) {
+      let isWorking = true;
+
+      const timeoutId = setTimeout(function () {
+        isWorking = false;
+      }, timeout);
+
+      const results = [];
+      while (tasks.length !== 0 && isWorking) {
+        const { callback, context, args } = tasks.shift();
+        const result = yield callback.call(context, args);
+        results.push(result);
+      }
+      worker.postMessage({ id, status: "pending", data: results });
+      clearTimeout(timeoutId);
+
+      if (tasks.length !== 0) {
+        yield streamingWorker(id, tasks);
+      }
+    });
+
+    return function streamingWorker(_x, _x2) {
+      return _ref.apply(this, arguments);
+    };
+  })();
+
+  return (() => {
+    var _ref2 = _asyncToGenerator(function* (msg) {
+      const { id, method, args } = msg.data;
+      const workerMethod = publicInterface[method];
+      if (!workerMethod) {
+        console.error(`Could not find ${method} defined in worker.`);
+      }
+      worker.postMessage({ id, status: "start" });
+
+      try {
+        const tasks = workerMethod(args);
+        yield streamingWorker(id, tasks);
+        worker.postMessage({ id, status: "done" });
+      } catch (error) {
+        worker.postMessage({ id, status: "error", error });
+      }
+    });
+
+    return function (_x3) {
+      return _ref2.apply(this, arguments);
+    };
+  })();
+}
+
+module.exports = {
+  WorkerDispatcher,
+  workerHandler,
+  streamingWorkerHandler
+};
+
+/***/ }),
+
+/***/ 260:
 /***/ (function(module, exports, __webpack_require__) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
 
 var util = __webpack_require__(41);
-var binarySearch = __webpack_require__(260);
+var binarySearch = __webpack_require__(261);
 var ArraySet = __webpack_require__(119).ArraySet;
 var base64VLQ = __webpack_require__(118);
-var quickSort = __webpack_require__(261).quickSort;
+var quickSort = __webpack_require__(262).quickSort;
 
 function SourceMapConsumer(aSourceMap) {
   var sourceMap = aSourceMap;
   if (typeof aSourceMap === 'string') {
     sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
   }
 
   return sourceMap.sections != null
@@ -2077,195 +2255,17 @@ IndexedSourceMapConsumer.prototype._pars
     quickSort(this.__originalMappings, util.compareByOriginalPositions);
   };
 
 exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;
 
 
 /***/ }),
 
-/***/ 26:
-/***/ (function(module, exports) {
-
-function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
-
-function WorkerDispatcher() {
-  this.msgId = 1;
-  this.worker = null;
-} /* This Source Code Form is subject to the terms of the Mozilla Public
-   * License, v. 2.0. If a copy of the MPL was not distributed with this
-   * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
-
-WorkerDispatcher.prototype = {
-  start(url, win = window) {
-    this.worker = new win.Worker(url);
-    this.worker.onerror = () => {
-      console.error(`Error in worker ${url}`);
-    };
-  },
-
-  stop() {
-    if (!this.worker) {
-      return;
-    }
-
-    this.worker.terminate();
-    this.worker = null;
-  },
-
-  task(method, { queue = false } = {}) {
-    const calls = [];
-    const push = args => {
-      return new Promise((resolve, reject) => {
-        if (queue && calls.length === 0) {
-          Promise.resolve().then(flush);
-        }
-
-        calls.push([args, resolve, reject]);
-
-        if (!queue) {
-          flush();
-        }
-      });
-    };
-
-    const flush = () => {
-      const items = calls.slice();
-      calls.length = 0;
-
-      if (!this.worker) {
-        return;
-      }
-
-      const id = this.msgId++;
-      this.worker.postMessage({
-        id,
-        method,
-        calls: items.map(item => item[0])
-      });
-
-      const listener = ({ data: result }) => {
-        if (result.id !== id) {
-          return;
-        }
-
-        if (!this.worker) {
-          return;
-        }
-
-        this.worker.removeEventListener("message", listener);
-
-        result.results.forEach((resultData, i) => {
-          const [, resolve, reject] = items[i];
-
-          if (resultData.error) {
-            reject(resultData.error);
-          } else {
-            resolve(resultData.response);
-          }
-        });
-      };
-
-      this.worker.addEventListener("message", listener);
-    };
-
-    return (...args) => push(args);
-  },
-
-  invoke(method, ...args) {
-    return this.task(method)(...args);
-  }
-};
-
-function workerHandler(publicInterface) {
-  return function (msg) {
-    const { id, method, calls } = msg.data;
-
-    Promise.all(calls.map(args => {
-      try {
-        const response = publicInterface[method].apply(undefined, args);
-        if (response instanceof Promise) {
-          return response.then(val => ({ response: val }),
-          // Error can't be sent via postMessage, so be sure to
-          // convert to string.
-          err => ({ error: err.toString() }));
-        }
-        return { response };
-      } catch (error) {
-        // Error can't be sent via postMessage, so be sure to convert to
-        // string.
-        return { error: error.toString() };
-      }
-    })).then(results => {
-      self.postMessage({ id, results });
-    });
-  };
-}
-
-function streamingWorkerHandler(publicInterface, { timeout = 100 } = {}, worker = self) {
-  let streamingWorker = (() => {
-    var _ref = _asyncToGenerator(function* (id, tasks) {
-      let isWorking = true;
-
-      const timeoutId = setTimeout(function () {
-        isWorking = false;
-      }, timeout);
-
-      const results = [];
-      while (tasks.length !== 0 && isWorking) {
-        const { callback, context, args } = tasks.shift();
-        const result = yield callback.call(context, args);
-        results.push(result);
-      }
-      worker.postMessage({ id, status: "pending", data: results });
-      clearTimeout(timeoutId);
-
-      if (tasks.length !== 0) {
-        yield streamingWorker(id, tasks);
-      }
-    });
-
-    return function streamingWorker(_x, _x2) {
-      return _ref.apply(this, arguments);
-    };
-  })();
-
-  return (() => {
-    var _ref2 = _asyncToGenerator(function* (msg) {
-      const { id, method, args } = msg.data;
-      const workerMethod = publicInterface[method];
-      if (!workerMethod) {
-        console.error(`Could not find ${method} defined in worker.`);
-      }
-      worker.postMessage({ id, status: "start" });
-
-      try {
-        const tasks = workerMethod(args);
-        yield streamingWorker(id, tasks);
-        worker.postMessage({ id, status: "done" });
-      } catch (error) {
-        worker.postMessage({ id, status: "error", error });
-      }
-    });
-
-    return function (_x3) {
-      return _ref2.apply(this, arguments);
-    };
-  })();
-}
-
-module.exports = {
-  WorkerDispatcher,
-  workerHandler,
-  streamingWorkerHandler
-};
-
-/***/ }),
-
-/***/ 260:
+/***/ 261:
 /***/ (function(module, exports) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
@@ -2373,17 +2373,17 @@ exports.search = function search(aNeedle
   }
 
   return index;
 };
 
 
 /***/ }),
 
-/***/ 261:
+/***/ 262:
 /***/ (function(module, exports) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
@@ -2494,17 +2494,17 @@ function doQuickSort(ary, comparator, p,
  */
 exports.quickSort = function (ary, comparator) {
   doQuickSort(ary, comparator, 0, ary.length - 1);
 };
 
 
 /***/ }),
 
-/***/ 262:
+/***/ 263:
 /***/ (function(module, exports, __webpack_require__) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
@@ -3429,17 +3429,17 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WE
     module.exports = factory();
   } else {
     root.prettyFast = factory();
   }
 }(this, function () {
   "use strict";
 
   var acorn = this.acorn || __webpack_require__(734);
-  var sourceMap = this.sourceMap || __webpack_require__(256);
+  var sourceMap = this.sourceMap || __webpack_require__(257);
   var SourceNode = sourceMap.SourceNode;
 
   // If any of these tokens are seen before a "[" token, we know that "[" token
   // is the start of an array literal, rather than a property access.
   //
   // The only exception is "}", which would need to be disambiguated by
   // parsing. The majority of the time, an open bracket following a closing
   // curly is going to be an array literal, so we brush the complication under
--- a/devtools/client/debugger/new/dist/vendors.js
+++ b/devtools/client/debugger/new/dist/vendors.js
@@ -1088,17 +1088,17 @@ var _propTypes2 = _interopRequireDefault
 var _react = __webpack_require__(1);
 
 var _react2 = _interopRequireDefault(_react);
 
 var _tab = __webpack_require__(110);
 
 var _tab2 = _interopRequireDefault(_tab);
 
-var _tabList = __webpack_require__(223);
+var _tabList = __webpack_require__(224);
 
 var _tabList2 = _interopRequireDefault(_tabList);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
 function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
@@ -1247,21 +1247,21 @@ exports.default = Tab;
 var _propTypes = __webpack_require__(0);
 
 var _propTypes2 = _interopRequireDefault(_propTypes);
 
 var _react = __webpack_require__(1);
 
 var _react2 = _interopRequireDefault(_react);
 
-var _ref2 = __webpack_require__(221);
+var _ref2 = __webpack_require__(222);
 
 var _ref3 = _interopRequireDefault(_ref2);
 
-var _tab = __webpack_require__(222);
+var _tab = __webpack_require__(223);
 
 var _tab2 = _interopRequireDefault(_tab);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function Tab(_ref) {
   var accessibleId = _ref.accessibleId,
       active = _ref.active,
@@ -1423,31 +1423,31 @@ TabPanels.defaultProps = {
 }).call(this);
 
 
 /***/ }),
 
 /***/ 131:
 /***/ (function(module, exports, __webpack_require__) {
 
-const SplitBox = __webpack_require__(215);
+const SplitBox = __webpack_require__(216);
 
 module.exports = SplitBox;
 
 /***/ }),
 
 /***/ 132:
 /***/ (function(module, exports, __webpack_require__) {
 
 /* WEBPACK VAR INJECTION */(function(process) {(function() {
   var Query, defaultPathSeparator, filter, matcher, parseOptions, pathScorer, preparedQueryCache, scorer;
 
-  filter = __webpack_require__(227);
-
-  matcher = __webpack_require__(228);
+  filter = __webpack_require__(228);
+
+  matcher = __webpack_require__(229);
 
   scorer = __webpack_require__(48);
 
   pathScorer = __webpack_require__(63);
 
   Query = __webpack_require__(112);
 
   preparedQueryCache = null;
@@ -1558,17 +1558,17 @@ module.exports = SplitBox;
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 
-var _Svg = __webpack_require__(232);
+var _Svg = __webpack_require__(233);
 
 var _Svg2 = _interopRequireDefault(_Svg);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 exports.default = _Svg2.default; /* 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/>. */
@@ -3417,17 +3417,17 @@ module.exports = __WEBPACK_EXTERNAL_MODU
 
 /***/ 20:
 /***/ (function(module, exports) {
 
 module.exports = __WEBPACK_EXTERNAL_MODULE_20__;
 
 /***/ }),
 
-/***/ 212:
+/***/ 213:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 exports.__esModule = true;
 exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = undefined;
 
@@ -3438,19 +3438,19 @@ var PropTypes = _interopRequireWildcard(
 var _react = __webpack_require__(1);
 
 var _react2 = _interopRequireDefault(_react);
 
 var _reactDom = __webpack_require__(24);
 
 var _reactDom2 = _interopRequireDefault(_reactDom);
 
-var _reactLifecyclesCompat = __webpack_require__(213);
-
-var _PropTypes = __webpack_require__(214);
+var _reactLifecyclesCompat = __webpack_require__(214);
+
+var _PropTypes = __webpack_require__(215);
 
 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)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
 function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
 
 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
@@ -4021,17 +4021,17 @@ Transition.EXITED = 1;
 Transition.ENTERING = 2;
 Transition.ENTERED = 3;
 Transition.EXITING = 4;
 
 exports.default = (0, _reactLifecyclesCompat.polyfill)(Transition);
 
 /***/ }),
 
-/***/ 213:
+/***/ 214:
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
 Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "polyfill", function() { return polyfill; });
 /**
  * Copyright (c) 2013-present, Facebook, Inc.
  *
@@ -4189,17 +4189,17 @@ function polyfill(Component) {
   return Component;
 }
 
 
 
 
 /***/ }),
 
-/***/ 214:
+/***/ 215:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 exports.__esModule = true;
 exports.classNamesShape = exports.timeoutsShape = undefined;
 exports.transitionTimeout = transitionTimeout;
@@ -4246,31 +4246,31 @@ var classNamesShape = exports.classNames
   enterActive: _propTypes2.default.string,
   exit: _propTypes2.default.string,
   exitDone: _propTypes2.default.string,
   exitActive: _propTypes2.default.string
 })]);
 
 /***/ }),
 
-/***/ 215:
+/***/ 216:
 /***/ (function(module, exports, __webpack_require__) {
 
 /* 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 React = __webpack_require__(1);
 const ReactDOM = __webpack_require__(24);
-const Draggable = React.createFactory(__webpack_require__(216));
+const Draggable = React.createFactory(__webpack_require__(217));
 const { Component } = React;
 const PropTypes = __webpack_require__(0);
 const dom = __webpack_require__(2);
 
-__webpack_require__(217);
+__webpack_require__(218);
 
 /**
  * This component represents a Splitter. The splitter supports vertical
  * as well as horizontal mode.
  */
 class SplitBox extends Component {
   static get propTypes() {
     return {
@@ -4504,17 +4504,17 @@ class SplitBox extends Component {
     }, endPanel) : null);
   }
 }
 
 module.exports = SplitBox;
 
 /***/ }),
 
-/***/ 216:
+/***/ 217:
 /***/ (function(module, exports, __webpack_require__) {
 
 /* 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 React = __webpack_require__(1);
 const ReactDOM = __webpack_require__(24);
@@ -4577,24 +4577,24 @@ class Draggable extends Component {
     });
   }
 }
 
 module.exports = Draggable;
 
 /***/ }),
 
-/***/ 217:
+/***/ 218:
 /***/ (function(module, exports) {
 
 // removed by extract-text-webpack-plugin
 
 /***/ }),
 
-/***/ 220:
+/***/ 221:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -4621,30 +4621,30 @@ var _tab = __webpack_require__(110);
 
 Object.defineProperty(exports, 'Tab', {
   enumerable: true,
   get: function get() {
     return _interopRequireDefault(_tab).default;
   }
 });
 
-var _tabs = __webpack_require__(224);
+var _tabs = __webpack_require__(225);
 
 Object.defineProperty(exports, 'Tabs', {
   enumerable: true,
   get: function get() {
     return _interopRequireDefault(_tabs).default;
   }
 });
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 /***/ }),
 
-/***/ 221:
+/***/ 222:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -4654,31 +4654,31 @@ var _propTypes = __webpack_require__(0);
 var _propTypes2 = _interopRequireDefault(_propTypes);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 exports.default = _propTypes2.default.object;
 
 /***/ }),
 
-/***/ 222:
-/***/ (function(module, exports) {
-
-// removed by extract-text-webpack-plugin
-
-/***/ }),
-
 /***/ 223:
 /***/ (function(module, exports) {
 
 // removed by extract-text-webpack-plugin
 
 /***/ }),
 
 /***/ 224:
+/***/ (function(module, exports) {
+
+// removed by extract-text-webpack-plugin
+
+/***/ }),
+
+/***/ 225:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -4688,17 +4688,17 @@ var _createClass = function () { functio
 var _propTypes = __webpack_require__(0);
 
 var _propTypes2 = _interopRequireDefault(_propTypes);
 
 var _react = __webpack_require__(1);
 
 var _react2 = _interopRequireDefault(_react);
 
-var _uniqueId = __webpack_require__(225);
+var _uniqueId = __webpack_require__(226);
 
 var _uniqueId2 = _interopRequireDefault(_uniqueId);
 
 var _tabList = __webpack_require__(109);
 
 var _tabList2 = _interopRequireDefault(_tabList);
 
 var _tabPanels = __webpack_require__(111);
@@ -4773,17 +4773,17 @@ Tabs.propTypes = {
 Tabs.defaultProps = {
   children: null,
   className: undefined,
   onActivateTab: function onActivateTab() {}
 };
 
 /***/ }),
 
-/***/ 225:
+/***/ 226:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -4792,24 +4792,24 @@ var counter = 0;
 
 function uniqueId() {
   counter += 1;
   return "$rac$" + counter;
 }
 
 /***/ }),
 
-/***/ 226:
+/***/ 227:
 /***/ (function(module, exports) {
 
 // removed by extract-text-webpack-plugin
 
 /***/ }),
 
-/***/ 227:
+/***/ 228:
 /***/ (function(module, exports, __webpack_require__) {
 
 (function() {
   var Query, pathScorer, pluckCandidates, scorer, sortCandidates;
 
   scorer = __webpack_require__(48);
 
   pathScorer = __webpack_require__(63);
@@ -4856,17 +4856,17 @@ function uniqueId() {
     return candidates;
   };
 
 }).call(this);
 
 
 /***/ }),
 
-/***/ 228:
+/***/ 229:
 /***/ (function(module, exports, __webpack_require__) {
 
 (function() {
   var basenameMatch, computeMatch, isMatch, isWordStart, match, mergeMatches, scoreAcronyms, scoreCharacter, scoreConsecutives, _ref;
 
   _ref = __webpack_require__(48), isMatch = _ref.isMatch, isWordStart = _ref.isWordStart, scoreConsecutives = _ref.scoreConsecutives, scoreCharacter = _ref.scoreCharacter, scoreAcronyms = _ref.scoreAcronyms;
 
   exports.match = match = function(string, query, options) {
@@ -5078,38 +5078,38 @@ function uniqueId() {
     return matches;
   };
 
 }).call(this);
 
 
 /***/ }),
 
-/***/ 232:
+/***/ 233:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-var _svgInlineReact = __webpack_require__(233);
+var _svgInlineReact = __webpack_require__(234);
 
 var _svgInlineReact2 = _interopRequireDefault(_svgInlineReact);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 /* 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 React = __webpack_require__(1);
 
 
 const svg = {
-  breakpoint: __webpack_require__(235),
-  "column-marker": __webpack_require__(236)
+  breakpoint: __webpack_require__(236),
+  "column-marker": __webpack_require__(237)
 };
 
 function Svg({ name, className, onClick, "aria-label": ariaLabel }) {
   if (!svg[name]) {
     const error = `Unknown SVG: ${name}`;
     console.warn(error);
     return null;
   }
@@ -5125,17 +5125,17 @@ function Svg({ name, className, onClick,
 }
 
 Svg.displayName = "Svg";
 
 module.exports = Svg;
 
 /***/ }),
 
-/***/ 233:
+/***/ 234:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
     value: true
 });
@@ -5145,17 +5145,17 @@ var _extends = Object.assign || function
 var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
 
 var _react = __webpack_require__(1);
 
 var _react2 = _interopRequireDefault(_react);
 
 var _propTypes = __webpack_require__(0);
 
-var _util = __webpack_require__(234);
+var _util = __webpack_require__(235);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
 
 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
 function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
@@ -5224,17 +5224,17 @@ InlineSVG.defaultProps = {
 InlineSVG.propTypes = {
     src: _propTypes.string.isRequired,
     element: _propTypes.string,
     raw: _propTypes.bool
 };
 
 /***/ }),
 
-/***/ 234:
+/***/ 235:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
     value: true
 });
@@ -5285,24 +5285,24 @@ function getSVGFromSource(src) {
 // get <svg /> element props
 function extractSVGProps(src) {
     var map = getSVGFromSource(src).attributes;
     return map.length > 0 ? serializeAttrs(map) : null;
 }
 
 /***/ }),
 
-/***/ 235:
+/***/ 236:
 /***/ (function(module, exports) {
 
 module.exports = "<!-- This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. --><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 60 15\"><path d=\"M53.07.5H1.5c-.54 0-1 .46-1 1v12c0 .54.46 1 1 1h51.57c.58 0 1.15-.26 1.53-.7l4.7-6.3-4.7-6.3c-.38-.44-.95-.7-1.53-.7z\"></path></svg>"
 
 /***/ }),
 
-/***/ 236:
+/***/ 237:
 /***/ (function(module, exports) {
 
 module.exports = "<!-- This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. --><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 11 13\"><path d=\"M5.07.5H1.5c-.54 0-1 .46-1 1v10c0 .54.46 1 1 1h3.57c.58 0 1.15-.26 1.53-.7l3.7-5.3-3.7-5.3C6.22.76 5.65.5 5.07.5z\"></path></svg>"
 
 /***/ }),
 
 /***/ 24:
 /***/ (function(module, exports) {
@@ -5746,17 +5746,17 @@ function inToolbox() {
     return window.parent.document.documentURI == "about:devtools-toolbox";
   } catch (e) {
     // If `window` is not available, it's very likely that we are in the toolbox.
     return true;
   }
 }
 
 if (!inToolbox()) {
-  __webpack_require__(226);
+  __webpack_require__(227);
 }
 
 function createPopup(doc) {
   let popup = doc.createElement("menupopup");
   popup.className = "landing-popup";
   if (popup.openPopupAtScreen) {
     return popup;
   }
@@ -7391,21 +7391,21 @@ var devtoolsModules = _interopRequireWil
 var _devtoolsUtils = __webpack_require__(16);
 
 var devtoolsUtils = _interopRequireWildcard(_devtoolsUtils);
 
 var _fuzzaldrinPlus = __webpack_require__(132);
 
 var fuzzaldrinPlus = _interopRequireWildcard(_fuzzaldrinPlus);
 
-var _Transition = __webpack_require__(212);
+var _Transition = __webpack_require__(213);
 
 var transition = _interopRequireWildcard(_Transition);
 
-var _tabs = __webpack_require__(220);
+var _tabs = __webpack_require__(221);
 
 var reactAriaComponentsTabs = _interopRequireWildcard(_tabs);
 
 var _reselect = __webpack_require__(31);
 
 var reselect = _interopRequireWildcard(_reselect);
 
 var _classnames = __webpack_require__(6);
--- a/devtools/client/debugger/new/src/actions/ast/setInScopeLines.js
+++ b/devtools/client/debugger/new/src/actions/ast/setInScopeLines.js
@@ -4,20 +4,20 @@
 
 // @flow
 
 import { getOutOfScopeLocations, getSelectedSource } from "../../selectors";
 import { getSourceLineCount } from "../../utils/source";
 
 import { range, flatMap, uniq, without } from "lodash";
 
-import type { ASTLocation } from "../../types";
+import type { AstLocation } from "../../workers/parser";
 import type { ThunkArgs } from "../types";
 
-function getOutOfScopeLines(outOfScopeLocations: ASTLocation[]) {
+function getOutOfScopeLines(outOfScopeLocations: ?(AstLocation[])) {
   if (!outOfScopeLocations) {
     return null;
   }
 
   return uniq(
     flatMap(outOfScopeLocations, location =>
       range(location.start.line, location.end.line)
     )
--- a/devtools/client/debugger/new/src/actions/types/ASTAction.js
+++ b/devtools/client/debugger/new/src/actions/types/ASTAction.js
@@ -17,17 +17,17 @@ export type ASTAction =
       SymbolDeclarations
     >
   | {|
       +type: "OUT_OF_SCOPE_LOCATIONS",
       +locations: ?(AstLocation[])
     |}
   | {|
       +type: "IN_SCOPE_LINES",
-      +lines: AstLocation[]
+      +lines: number[]
     |}
   | PromiseAction<
       {|
         +type: "SET_PREVIEW"
       |},
       {
         expression: string,
         result: any,
--- a/devtools/client/debugger/new/src/reducers/ast.js
+++ b/devtools/client/debugger/new/src/reducers/ast.js
@@ -4,148 +4,144 @@
 
 // @flow
 
 /**
  * Ast reducer
  * @module reducers/ast
  */
 
-import * as I from "immutable";
-import makeRecord from "../utils/makeRecord";
-
 import type { AstLocation, SymbolDeclarations } from "../workers/parser";
 
-import type { Map } from "immutable";
 import type { Source } from "../types";
 import type { Action, DonePromiseAction } from "../actions/types";
-import type { Record } from "../utils/makeRecord";
 
 type EmptyLinesType = number[];
 
 export type Symbols = SymbolDeclarations | {| loading: true |};
-export type SymbolsMap = Map<string, Symbols>;
-export type EmptyLinesMap = Map<string, EmptyLinesType>;
+export type EmptyLinesMap = { [k: string]: EmptyLinesType };
+export type SymbolsMap = { [k: string]: Symbols };
 
 export type SourceMetaDataType = {
   framework: ?string
 };
 
-export type SourceMetaDataMap = Map<string, SourceMetaDataType>;
+export type SourceMetaDataMap = { [k: string]: SourceMetaDataType };
 
 export type Preview =
   | {| updating: true |}
   | null
   | {|
       updating: false,
       expression: string,
       location: AstLocation,
       cursorPos: any,
       tokenPos: AstLocation,
       result: Object
     |};
 
 export type ASTState = {
-  symbols: SymbolsMap,
-  emptyLines: EmptyLinesMap,
-  outOfScopeLocations: ?Array<AstLocation>,
-  inScopeLines: ?Array<Number>,
-  preview: Preview,
-  sourceMetaData: SourceMetaDataMap
+  +symbols: SymbolsMap,
+  +emptyLines: EmptyLinesMap,
+  +outOfScopeLocations: ?Array<AstLocation>,
+  +inScopeLines: ?Array<number>,
+  +preview: Preview,
+  +sourceMetaData: SourceMetaDataMap
 };
 
-export function initialASTState(): Record<ASTState> {
-  return makeRecord({
-    symbols: I.Map(),
-    emptyLines: I.Map(),
+export function initialASTState(): ASTState {
+  return {
+    symbols: {},
+    emptyLines: {},
     outOfScopeLocations: null,
     inScopeLines: null,
     preview: null,
-    sourceMetaData: I.Map()
-  })();
+    sourceMetaData: {}
+  };
 }
 
-function update(
-  state: Record<ASTState> = initialASTState(),
-  action: Action
-): Record<ASTState> {
+function update(state: ASTState = initialASTState(), action: Action): ASTState {
   switch (action.type) {
     case "SET_SYMBOLS": {
       const { sourceId } = action;
       if (action.status === "start") {
-        return state.setIn(["symbols", sourceId], { loading: true });
+        return {
+          ...state,
+          symbols: { ...state.symbols, [sourceId]: { loading: true } }
+        };
       }
 
       const value = ((action: any): DonePromiseAction).value;
-      return state.setIn(["symbols", sourceId], value);
+      return {
+        ...state,
+        symbols: { ...state.symbols, [sourceId]: value }
+      };
     }
 
     case "OUT_OF_SCOPE_LOCATIONS": {
-      return state.set("outOfScopeLocations", action.locations);
+      return { ...state, outOfScopeLocations: action.locations };
     }
 
     case "IN_SCOPE_LINES": {
-      return state.set("inScopeLines", action.lines);
+      return { ...state, inScopeLines: action.lines };
     }
 
     case "CLEAR_SELECTION": {
-      return state.set("preview", null);
+      return { ...state, preview: null };
     }
 
     case "SET_PREVIEW": {
       if (action.status == "start") {
-        return state.set("preview", { updating: true });
+        return { ...state, preview: { updating: true } };
       }
 
       if (!action.value) {
-        return state.set("preview", null);
+        return { ...state, preview: null };
       }
 
       // NOTE: if the preview does not exist, it has been cleared
-      if (state.get("preview")) {
-        return state.set("preview", {
-          ...action.value,
-          updating: false
-        });
+      if (state.preview) {
+        return { ...state, preview: { ...action.value, updating: false } };
       }
 
       return state;
     }
 
     case "RESUME": {
-      return state.set("outOfScopeLocations", null);
+      return { ...state, outOfScopeLocations: null };
     }
 
     case "NAVIGATE": {
       return initialASTState();
     }
 
     case "SET_SOURCE_METADATA": {
-      return state.setIn(
-        ["sourceMetaData", action.sourceId],
-        action.sourceMetaData
-      );
+      const { sourceId, sourceMetaData } = action;
+      return {
+        ...state,
+        sourceMetaData: { ...state.sourceMetaData, [sourceId]: sourceMetaData }
+      };
     }
 
     default: {
       return state;
     }
   }
 }
 
 // NOTE: we'd like to have the app state fully typed
 // https://github.com/firefox-devtools/debugger/blob/master/src/reducers/sources.js#L179-L185
-type OuterState = { ast: Record<ASTState> };
+type OuterState = { ast: ASTState };
 
 export function getSymbols(state: OuterState, source: ?Source): ?Symbols {
   if (!source) {
     return null;
   }
 
-  return state.ast.symbols.get(source.id) || null;
+  return state.ast.symbols[source.id] || null;
 }
 
 export function hasSymbols(state: OuterState, source: Source): boolean {
   const symbols = getSymbols(state, source);
 
   if (!symbols) {
     return false;
   }
@@ -157,52 +153,52 @@ export function isSymbolsLoading(state: 
   const symbols = getSymbols(state, source);
   if (!symbols) {
     return false;
   }
 
   return symbols.loading;
 }
 
+export function getOutOfScopeLocations(state: OuterState) {
+  return state.ast.outOfScopeLocations;
+}
+
+export function getPreview(state: OuterState) {
+  return state.ast.preview;
+}
+
 export function isEmptyLineInSource(
   state: OuterState,
   line: number,
   selectedSourceId: string
 ) {
   const emptyLines = getEmptyLines(state, selectedSourceId);
   return emptyLines && emptyLines.includes(line);
 }
 
-export function getOutOfScopeLocations(state: OuterState) {
-  return state.ast.get("outOfScopeLocations");
-}
-
-export function getPreview(state: OuterState) {
-  return state.ast.get("preview");
-}
-
 const emptySourceMetaData = {};
 export function getSourceMetaData(state: OuterState, sourceId: string) {
-  return state.ast.sourceMetaData.get(sourceId) || emptySourceMetaData;
+  return state.ast.sourceMetaData[sourceId] || emptySourceMetaData;
 }
 
 export function hasSourceMetaData(state: OuterState, sourceId: string) {
-  return state.ast.hasIn(["sourceMetaData", sourceId]);
+  return state.ast.sourceMetaData[sourceId];
 }
 
 export function getInScopeLines(state: OuterState) {
-  return state.ast.get("inScopeLines");
+  return state.ast.inScopeLines;
 }
 
 export function isLineInScope(state: OuterState, line: number) {
-  const linesInScope = state.ast.get("inScopeLines");
+  const linesInScope = state.ast.inScopeLines;
   return linesInScope && linesInScope.includes(line);
 }
 
 export function getEmptyLines(state: OuterState, sourceId: string) {
   if (!sourceId) {
     return null;
   }
 
-  return state.ast.emptyLines.get(sourceId);
+  return state.ast.emptyLines[sourceId];
 }
 
 export default update;
--- a/devtools/client/debugger/new/src/reducers/types.js
+++ b/devtools/client/debugger/new/src/reducers/types.js
@@ -19,17 +19,17 @@ import type { PendingBreakpointsState } 
 import type { ProjectTextSearchState } from "./project-text-search";
 import type { Record } from "../utils/makeRecord";
 import type { SourcesState } from "./sources";
 import type { TabList } from "./tabs";
 import type { UIState } from "./ui";
 import type { QuickOpenState } from "./quick-open";
 
 export type State = {
-  ast: Record<ASTState>,
+  ast: ASTState,
   breakpoints: BreakpointsState,
   expressions: Record<ExpressionState>,
   debuggee: DebuggeeState,
   fileSearch: Record<FileSearchState>,
   pause: PauseState,
   pendingBreakpoints: PendingBreakpointsState,
   projectTextSearch: ProjectTextSearchState,
   sources: SourcesState,
--- a/devtools/client/shared/source-map/worker.js
+++ b/devtools/client/shared/source-map/worker.js
@@ -84,19 +84,19 @@ return /******/ (function(modules) { // 
  *
  * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
  * @license  MIT
  */
 /* eslint-disable no-proto */
 
 
 
-var base64 = __webpack_require__(264)
-var ieee754 = __webpack_require__(265)
-var isArray = __webpack_require__(266)
+var base64 = __webpack_require__(265)
+var ieee754 = __webpack_require__(266)
+var isArray = __webpack_require__(267)
 
 exports.Buffer = Buffer
 exports.SlowBuffer = SlowBuffer
 exports.INSPECT_MAX_BYTES = 50
 
 /**
  * If `Buffer.TYPED_ARRAY_SUPPORT`:
  *   === true    Use Uint8Array implementation (fastest)
@@ -2698,17 +2698,17 @@ function streamingWorkerHandler(publicIn
 module.exports = {
   WorkerDispatcher,
   workerHandler,
   streamingWorkerHandler
 };
 
 /***/ }),
 
-/***/ 264:
+/***/ 265:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 exports.byteLength = byteLength
 exports.toByteArray = toByteArray
 exports.fromByteArray = fromByteArray
@@ -2857,17 +2857,17 @@ function fromByteArray (uint8) {
   }
 
   return parts.join('')
 }
 
 
 /***/ }),
 
-/***/ 265:
+/***/ 266:
 /***/ (function(module, exports) {
 
 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
   var e, m
   var eLen = (nBytes * 8) - mLen - 1
   var eMax = (1 << eLen) - 1
   var eBias = eMax >> 1
   var nBits = -7
@@ -2948,29 +2948,29 @@ exports.write = function (buffer, value,
   for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
 
   buffer[offset + i - d] |= s * 128
 }
 
 
 /***/ }),
 
-/***/ 266:
+/***/ 267:
 /***/ (function(module, exports) {
 
 var toString = {}.toString;
 
 module.exports = Array.isArray || function (arr) {
   return toString.call(arr) == '[object Array]';
 };
 
 
 /***/ }),
 
-/***/ 268:
+/***/ 269:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 /* 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/>. */
@@ -4708,17 +4708,17 @@ module.exports = {
 /***/ }),
 
 /***/ 369:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-const { getSourceMap } = __webpack_require__(268); /* This Source Code Form is subject to the terms of the Mozilla Public
+const { getSourceMap } = __webpack_require__(269); /* This Source Code Form is subject to the terms of the Mozilla Public
                                                           * License, v. 2.0. If a copy of the MPL was not distributed with this
                                                           * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 /* eslint camelcase: 0*/
 
 const { generatedToOriginalId } = __webpack_require__(67);
 
 const xScopes = new Map();
@@ -6972,17 +6972,17 @@ const {
   fetchSourceMap,
   hasOriginalURL,
   clearOriginalURLs
 } = __webpack_require__(757);
 const {
   getSourceMap,
   setSourceMap,
   clearSourceMaps: clearSourceMapsRequests
-} = __webpack_require__(268);
+} = __webpack_require__(269);
 const {
   originalToGeneratedId,
   generatedToOriginalId,
   isGeneratedId,
   isOriginalId,
   getContentType
 } = __webpack_require__(67);
 const { clearWasmXScopes } = __webpack_require__(369);
@@ -12937,17 +12937,17 @@ module.exports = assert;
 "use strict";
 
 
 /* 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 { networkRequest } = __webpack_require__(16);
-const { getSourceMap, setSourceMap } = __webpack_require__(268);
+const { getSourceMap, setSourceMap } = __webpack_require__(269);
 const { WasmRemap } = __webpack_require__(758);
 const { SourceMapConsumer } = __webpack_require__(152);
 const { convertToJSON } = __webpack_require__(759);
 const { createConsumer } = __webpack_require__(367);
 
 // URLs which have been seen in a completed source map request.
 const originalURLs = new Set();