diff --git a/README.md b/README.md
index 2cf1492cc..1d963d916 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# lodash v4.14.1
+# lodash v4.14.2
The [Lodash](https://lodash.com/) library exported as [Node.js](https://nodejs.org/) modules.
@@ -28,7 +28,7 @@ var chunk = require('lodash/chunk');
var extend = require('lodash/fp/extend');
```
-See the [package source](https://github.com/lodash/lodash/tree/4.14.1-npm) for more details.
+See the [package source](https://github.com/lodash/lodash/tree/4.14.2-npm) for more details.
**Note:**
Don’t assign values to the [special variable](http://nodejs.org/api/repl.html#repl_repl_features) `_` in the Node.js < 6 REPL.
@@ -36,5 +36,5 @@ Install [n_](https://www.npmjs.com/package/n_) for a REPL that includes `lodash`
## Support
-Tested in Chrome 50-51, Firefox 46-47, IE 9-11, Edge 13, Safari 8-9, Node.js 0.10-6, & PhantomJS 1.9.8.
+Tested in Chrome 51-52, Firefox 47-48, IE 9-11, Edge 14, Safari 8-9, Node.js 0.10-6, & PhantomJS 2.1.1.
Automated [browser](https://saucelabs.com/u/lodash) & [CI](https://travis-ci.org/lodash/lodash/) test runs are available.
diff --git a/_Reflect.js b/_Reflect.js
deleted file mode 100644
index 1de7475b8..000000000
--- a/_Reflect.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var root = require('./_root');
-
-/** Built-in value references. */
-var Reflect = root.Reflect;
-
-module.exports = Reflect;
diff --git a/_arrayLikeKeys.js b/_arrayLikeKeys.js
new file mode 100644
index 000000000..6f012cfd1
--- /dev/null
+++ b/_arrayLikeKeys.js
@@ -0,0 +1,38 @@
+var baseTimes = require('./_baseTimes'),
+ isArguments = require('./isArguments'),
+ isArray = require('./isArray'),
+ isIndex = require('./_isIndex'),
+ isString = require('./isString');
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
+/**
+ * Creates an array of the enumerable property names of the array-like `value`.
+ *
+ * @private
+ * @param {*} value The value to query.
+ * @param {boolean} inherited Specify returning inherited property names.
+ * @returns {Array} Returns the array of property names.
+ */
+function arrayLikeKeys(value, inherited) {
+ var result = (isArray(value) || isString(value) || isArguments(value))
+ ? baseTimes(value.length, String)
+ : [];
+
+ var length = result.length,
+ skipIndexes = !!length;
+
+ for (var key in value) {
+ if ((inherited || hasOwnProperty.call(value, key)) &&
+ !(skipIndexes && (key == 'length' || isIndex(key, length)))) {
+ result.push(key);
+ }
+ }
+ return result;
+}
+
+module.exports = arrayLikeKeys;
diff --git a/_assignValue.js b/_assignValue.js
index 35d49f04e..aa1dc78e1 100644
--- a/_assignValue.js
+++ b/_assignValue.js
@@ -8,7 +8,7 @@ var hasOwnProperty = objectProto.hasOwnProperty;
/**
* Assigns `value` to `key` of `object` if the existing value is not equivalent
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
+ * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
* for equality comparisons.
*
* @private
diff --git a/_baseConformsTo.js b/_baseConformsTo.js
index a72deda2d..e449cb84b 100644
--- a/_baseConformsTo.js
+++ b/_baseConformsTo.js
@@ -11,14 +11,13 @@ function baseConformsTo(object, source, props) {
if (object == null) {
return !length;
}
- var index = length;
- while (index--) {
- var key = props[index],
+ object = Object(object);
+ while (length--) {
+ var key = props[length],
predicate = source[key],
value = object[key];
- if ((value === undefined &&
- !(key in Object(object))) || !predicate(value)) {
+ if ((value === undefined && !(key in object)) || !predicate(value)) {
return false;
}
}
diff --git a/_baseDelay.js b/_baseDelay.js
index 1e4e69b68..f21087747 100644
--- a/_baseDelay.js
+++ b/_baseDelay.js
@@ -9,7 +9,7 @@ var FUNC_ERROR_TEXT = 'Expected a function';
* @param {Function} func The function to delay.
* @param {number} wait The number of milliseconds to delay invocation.
* @param {Array} args The arguments to provide to `func`.
- * @returns {number} Returns the timer id.
+ * @returns {number|Object} Returns the timer id or timeout object.
*/
function baseDelay(func, wait, args) {
if (typeof func != 'function') {
diff --git a/_baseGetTag.js b/_baseGetTag.js
index ce773623c..c8b9e394f 100644
--- a/_baseGetTag.js
+++ b/_baseGetTag.js
@@ -3,7 +3,7 @@ var objectProto = Object.prototype;
/**
* Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
diff --git a/_baseHas.js b/_baseHas.js
index 3d2e7bf74..1b730321c 100644
--- a/_baseHas.js
+++ b/_baseHas.js
@@ -1,5 +1,3 @@
-var getPrototype = require('./_getPrototype');
-
/** Used for built-in method references. */
var objectProto = Object.prototype;
@@ -15,12 +13,7 @@ var hasOwnProperty = objectProto.hasOwnProperty;
* @returns {boolean} Returns `true` if `key` exists, else `false`.
*/
function baseHas(object, key) {
- // Avoid a bug in IE 10-11 where objects with a [[Prototype]] of `null`,
- // that are composed entirely of index properties, return `false` for
- // `hasOwnProperty` checks of them.
- return object != null &&
- (hasOwnProperty.call(object, key) ||
- (typeof object == 'object' && key in object && getPrototype(object) === null));
+ return object != null && hasOwnProperty.call(object, key);
}
module.exports = baseHas;
diff --git a/_baseIsArrayBuffer.js b/_baseIsArrayBuffer.js
index a380bf7b2..024ec8514 100644
--- a/_baseIsArrayBuffer.js
+++ b/_baseIsArrayBuffer.js
@@ -7,7 +7,7 @@ var objectProto = Object.prototype;
/**
* Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
diff --git a/_baseIsDate.js b/_baseIsDate.js
index 01b7c72d4..9dacf9b15 100644
--- a/_baseIsDate.js
+++ b/_baseIsDate.js
@@ -8,7 +8,7 @@ var objectProto = Object.prototype;
/**
* Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
diff --git a/_baseIsNative.js b/_baseIsNative.js
index 4d7dd0773..39be77479 100644
--- a/_baseIsNative.js
+++ b/_baseIsNative.js
@@ -6,7 +6,7 @@ var isFunction = require('./isFunction'),
/**
* Used to match `RegExp`
- * [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns).
+ * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
*/
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
diff --git a/_baseIsRegExp.js b/_baseIsRegExp.js
index 6d10b42de..926fbb3bd 100644
--- a/_baseIsRegExp.js
+++ b/_baseIsRegExp.js
@@ -8,7 +8,7 @@ var objectProto = Object.prototype;
/**
* Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
diff --git a/_baseIsTypedArray.js b/_baseIsTypedArray.js
index 5d1e43bda..9e92756cb 100644
--- a/_baseIsTypedArray.js
+++ b/_baseIsTypedArray.js
@@ -49,7 +49,7 @@ var objectProto = Object.prototype;
/**
* Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
diff --git a/_baseKeys.js b/_baseKeys.js
index 2a27d5554..45e9e6f39 100644
--- a/_baseKeys.js
+++ b/_baseKeys.js
@@ -1,16 +1,30 @@
-var overArg = require('./_overArg');
+var isPrototype = require('./_isPrototype'),
+ nativeKeys = require('./_nativeKeys');
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeKeys = Object.keys;
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
/**
- * The base implementation of `_.keys` which doesn't skip the constructor
- * property of prototypes or treat sparse arrays as dense.
+ * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names.
*/
-var baseKeys = overArg(nativeKeys, Object);
+function baseKeys(object) {
+ if (!isPrototype(object)) {
+ return nativeKeys(object);
+ }
+ var result = [];
+ for (var key in Object(object)) {
+ if (hasOwnProperty.call(object, key) && key != 'constructor') {
+ result.push(key);
+ }
+ }
+ return result;
+}
module.exports = baseKeys;
diff --git a/_baseKeysIn.js b/_baseKeysIn.js
index 7455fd889..ea8a0a174 100644
--- a/_baseKeysIn.js
+++ b/_baseKeysIn.js
@@ -1,36 +1,33 @@
-var Reflect = require('./_Reflect'),
- iteratorToArray = require('./_iteratorToArray');
+var isObject = require('./isObject'),
+ isPrototype = require('./_isPrototype'),
+ nativeKeysIn = require('./_nativeKeysIn');
/** Used for built-in method references. */
var objectProto = Object.prototype;
-/** Built-in value references. */
-var enumerate = Reflect ? Reflect.enumerate : undefined,
- propertyIsEnumerable = objectProto.propertyIsEnumerable;
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
/**
- * The base implementation of `_.keysIn` which doesn't skip the constructor
- * property of prototypes or treat sparse arrays as dense.
+ * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names.
*/
function baseKeysIn(object) {
- object = object == null ? object : Object(object);
+ if (!isObject(object)) {
+ return nativeKeysIn(object);
+ }
+ var isProto = isPrototype(object),
+ result = [];
- var result = [];
for (var key in object) {
- result.push(key);
+ if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
+ result.push(key);
+ }
}
return result;
}
-// Fallback for IE < 9 with es6-shim.
-if (enumerate && !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf')) {
- baseKeysIn = function(object) {
- return iteratorToArray(enumerate(object));
- };
-}
-
module.exports = baseKeysIn;
diff --git a/_baseMerge.js b/_baseMerge.js
index e18d3bf75..dfb4b1527 100644
--- a/_baseMerge.js
+++ b/_baseMerge.js
@@ -1,11 +1,11 @@
var Stack = require('./_Stack'),
arrayEach = require('./_arrayEach'),
assignMergeValue = require('./_assignMergeValue'),
+ baseKeysIn = require('./_baseKeysIn'),
baseMergeDeep = require('./_baseMergeDeep'),
isArray = require('./isArray'),
isObject = require('./isObject'),
- isTypedArray = require('./isTypedArray'),
- keysIn = require('./keysIn');
+ isTypedArray = require('./isTypedArray');
/**
* The base implementation of `_.merge` without support for multiple sources.
@@ -23,7 +23,7 @@ function baseMerge(object, source, srcIndex, customizer, stack) {
return;
}
if (!(isArray(source) || isTypedArray(source))) {
- var props = keysIn(source);
+ var props = baseKeysIn(source);
}
arrayEach(props || source, function(srcValue, key) {
if (props) {
diff --git a/_baseSet.js b/_baseSet.js
index 34d63e568..a758a4f48 100644
--- a/_baseSet.js
+++ b/_baseSet.js
@@ -16,6 +16,9 @@ var assignValue = require('./_assignValue'),
* @returns {Object} Returns `object`.
*/
function baseSet(object, path, value, customizer) {
+ if (!isObject(object)) {
+ return object;
+ }
path = isKey(path, object) ? [path] : castPath(path);
var index = -1,
@@ -24,20 +27,19 @@ function baseSet(object, path, value, customizer) {
nested = object;
while (nested != null && ++index < length) {
- var key = toKey(path[index]);
- if (isObject(nested)) {
- var newValue = value;
- if (index != lastIndex) {
- var objValue = nested[key];
- newValue = customizer ? customizer(objValue, key, nested) : undefined;
- if (newValue === undefined) {
- newValue = objValue == null
- ? (isIndex(path[index + 1]) ? [] : {})
- : objValue;
- }
+ var key = toKey(path[index]),
+ newValue = value;
+
+ if (index != lastIndex) {
+ var objValue = nested[key];
+ newValue = customizer ? customizer(objValue, key, nested) : undefined;
+ if (newValue === undefined) {
+ newValue = isObject(objValue)
+ ? objValue
+ : (isIndex(path[index + 1]) ? [] : {});
}
- assignValue(nested, key, newValue);
}
+ assignValue(nested, key, newValue);
nested = nested[key];
}
return object;
diff --git a/_baseUnset.js b/_baseUnset.js
index 754eb063c..dda80fc19 100644
--- a/_baseUnset.js
+++ b/_baseUnset.js
@@ -1,10 +1,15 @@
-var baseHas = require('./_baseHas'),
- castPath = require('./_castPath'),
+var castPath = require('./_castPath'),
isKey = require('./_isKey'),
last = require('./last'),
parent = require('./_parent'),
toKey = require('./_toKey');
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
/**
* The base implementation of `_.unset`.
*
@@ -18,7 +23,7 @@ function baseUnset(object, path) {
object = parent(object, path);
var key = toKey(last(path));
- return !(object != null && baseHas(object, key)) || delete object[key];
+ return !(object != null && hasOwnProperty.call(object, key)) || delete object[key];
}
module.exports = baseUnset;
diff --git a/_createCtor.js b/_createCtor.js
index ee904f4ff..9047aa5fa 100644
--- a/_createCtor.js
+++ b/_createCtor.js
@@ -12,7 +12,7 @@ var baseCreate = require('./_baseCreate'),
function createCtor(Ctor) {
return function() {
// Use a `switch` statement to work with class constructors. See
- // http://ecma-international.org/ecma-262/6.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
+ // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
// for more details.
var args = arguments;
switch (args.length) {
diff --git a/_equalByTag.js b/_equalByTag.js
index d6baa0a55..07d8c8c00 100644
--- a/_equalByTag.js
+++ b/_equalByTag.js
@@ -75,7 +75,7 @@ function equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {
case regexpTag:
case stringTag:
// Coerce regexes to strings and treat strings, primitives and objects,
- // as equal. See http://www.ecma-international.org/ecma-262/6.0/#sec-regexp.prototype.tostring
+ // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
// for more details.
return object == (other + '');
diff --git a/_equalObjects.js b/_equalObjects.js
index 92646ed53..092cb3ff9 100644
--- a/_equalObjects.js
+++ b/_equalObjects.js
@@ -1,9 +1,14 @@
-var baseHas = require('./_baseHas'),
- keys = require('./keys');
+var keys = require('./keys');
/** Used to compose bitmasks for comparison styles. */
var PARTIAL_COMPARE_FLAG = 2;
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
/**
* A specialized version of `baseIsEqualDeep` for objects with support for
* partial deep comparisons.
@@ -31,7 +36,7 @@ function equalObjects(object, other, equalFunc, customizer, bitmask, stack) {
var index = objLength;
while (index--) {
var key = objProps[index];
- if (!(isPartial ? key in other : baseHas(other, key))) {
+ if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
return false;
}
}
diff --git a/_getLength.js b/_getLength.js
deleted file mode 100644
index 54071653a..000000000
--- a/_getLength.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var baseProperty = require('./_baseProperty');
-
-/**
- * Gets the "length" property value of `object`.
- *
- * **Note:** This function is used to avoid a
- * [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) that affects
- * Safari on at least iOS 8.1-8.3 ARM64.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {*} Returns the "length" value.
- */
-var getLength = baseProperty('length');
-
-module.exports = getLength;
diff --git a/_getPrototype.js b/_getPrototype.js
index 572479388..e80861212 100644
--- a/_getPrototype.js
+++ b/_getPrototype.js
@@ -1,15 +1,6 @@
var overArg = require('./_overArg');
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeGetPrototype = Object.getPrototypeOf;
-
-/**
- * Gets the `[[Prototype]]` of `value`.
- *
- * @private
- * @param {*} value The value to query.
- * @returns {null|Object} Returns the `[[Prototype]]`.
- */
-var getPrototype = overArg(nativeGetPrototype, Object);
+/** Built-in value references. */
+var getPrototype = overArg(Object.getPrototypeOf, Object);
module.exports = getPrototype;
diff --git a/_getTag.js b/_getTag.js
index af186020b..02928772e 100644
--- a/_getTag.js
+++ b/_getTag.js
@@ -20,7 +20,7 @@ var objectProto = Object.prototype;
/**
* Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
diff --git a/_indexKeys.js b/_indexKeys.js
deleted file mode 100644
index 0e2fc1048..000000000
--- a/_indexKeys.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var baseTimes = require('./_baseTimes'),
- isArguments = require('./isArguments'),
- isArray = require('./isArray'),
- isLength = require('./isLength'),
- isString = require('./isString');
-
-/**
- * Creates an array of index keys for `object` values of arrays,
- * `arguments` objects, and strings, otherwise `null` is returned.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array|null} Returns index keys, else `null`.
- */
-function indexKeys(object) {
- var length = object ? object.length : undefined;
- if (isLength(length) &&
- (isArray(object) || isString(object) || isArguments(object))) {
- return baseTimes(length, String);
- }
- return null;
-}
-
-module.exports = indexKeys;
diff --git a/_nativeKeys.js b/_nativeKeys.js
new file mode 100644
index 000000000..479a104a1
--- /dev/null
+++ b/_nativeKeys.js
@@ -0,0 +1,6 @@
+var overArg = require('./_overArg');
+
+/* Built-in method references for those with the same name as other `lodash` methods. */
+var nativeKeys = overArg(Object.keys, Object);
+
+module.exports = nativeKeys;
diff --git a/_nativeKeysIn.js b/_nativeKeysIn.js
new file mode 100644
index 000000000..00ee50594
--- /dev/null
+++ b/_nativeKeysIn.js
@@ -0,0 +1,20 @@
+/**
+ * This function is like
+ * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
+ * except that it includes inherited enumerable properties.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names.
+ */
+function nativeKeysIn(object) {
+ var result = [];
+ if (object != null) {
+ for (var key in Object(object)) {
+ result.push(key);
+ }
+ }
+ return result;
+}
+
+module.exports = nativeKeysIn;
diff --git a/_overArg.js b/_overArg.js
index f3c170a7a..651c5c55f 100644
--- a/_overArg.js
+++ b/_overArg.js
@@ -1,5 +1,5 @@
/**
- * Creates a function that invokes `func` with its first argument transformed.
+ * Creates a unary function that invokes `func` with its argument transformed.
*
* @private
* @param {Function} func The function to wrap.
diff --git a/assignIn.js b/assignIn.js
index e77aebf18..e663473a0 100644
--- a/assignIn.js
+++ b/assignIn.js
@@ -1,19 +1,7 @@
-var assignValue = require('./_assignValue'),
- copyObject = require('./_copyObject'),
+var copyObject = require('./_copyObject'),
createAssigner = require('./_createAssigner'),
- isArrayLike = require('./isArrayLike'),
- isPrototype = require('./_isPrototype'),
keysIn = require('./keysIn');
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Built-in value references. */
-var propertyIsEnumerable = objectProto.propertyIsEnumerable;
-
-/** Detect if properties shadowing those on `Object.prototype` are non-enumerable. */
-var nonEnumShadows = !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf');
-
/**
* This method is like `_.assign` except that it iterates over own and
* inherited source properties.
@@ -46,13 +34,7 @@ var nonEnumShadows = !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf');
* // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }
*/
var assignIn = createAssigner(function(object, source) {
- if (nonEnumShadows || isPrototype(source) || isArrayLike(source)) {
- copyObject(source, keysIn(source), object);
- return;
- }
- for (var key in source) {
- assignValue(object, key, source[key]);
- }
+ copyObject(source, keysIn(source), object);
});
module.exports = assignIn;
diff --git a/core.js b/core.js
index 99f6f66fc..f3b42c57e 100644
--- a/core.js
+++ b/core.js
@@ -13,7 +13,7 @@
var undefined;
/** Used as the semantic version number. */
- var VERSION = '4.14.1';
+ var VERSION = '4.14.2';
/** Used as the `TypeError` message for "Functions" methods. */
var FUNC_ERROR_TEXT = 'Expected a function';
@@ -195,7 +195,7 @@
}
/**
- * Creates a function that invokes `func` with its first argument transformed.
+ * Creates a unary function that invokes `func` with its argument transformed.
*
* @private
* @param {Function} func The function to wrap.
@@ -222,7 +222,7 @@
/**
* Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
@@ -236,7 +236,7 @@
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeIsFinite = root.isFinite,
- nativeKeys = Object.keys,
+ nativeKeys = overArg(Object.keys, Object),
nativeMax = Math.max;
/*------------------------------------------------------------------------*/
@@ -402,7 +402,7 @@
/**
* Assigns `value` to `key` of `object` if the existing value is not equivalent
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
+ * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
* for equality comparisons.
*
* @private
@@ -438,7 +438,7 @@
* @param {Function} func The function to delay.
* @param {number} wait The number of milliseconds to delay invocation.
* @param {Array} args The arguments to provide to `func`.
- * @returns {number} Returns the timer id.
+ * @returns {number|Object} Returns the timer id or timeout object.
*/
function baseDelay(func, wait, args) {
if (typeof func != 'function') {
@@ -746,34 +746,6 @@
return (typeof func == 'object' ? baseMatches : baseProperty)(func);
}
- /**
- * The base implementation of `_.keys` which doesn't skip the constructor
- * property of prototypes or treat sparse arrays as dense.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- */
- var baseKeys = overArg(nativeKeys, Object);
-
- /**
- * The base implementation of `_.keysIn` which doesn't skip the constructor
- * property of prototypes or treat sparse arrays as dense.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- */
- function baseKeysIn(object) {
- object = object == null ? object : Object(object);
-
- var result = [];
- for (var key in object) {
- result.push(key);
- }
- return result;
- }
-
/**
* The base implementation of `_.lt` which doesn't coerce arguments.
*
@@ -813,7 +785,7 @@
* @returns {Function} Returns the new spec function.
*/
function baseMatches(source) {
- var props = keys(source);
+ var props = nativeKeys(source);
return function(object) {
var length = props.length;
if (object == null) {
@@ -1116,7 +1088,7 @@
function createCtor(Ctor) {
return function() {
// Use a `switch` statement to work with class constructors. See
- // http://ecma-international.org/ecma-262/6.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
+ // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
// for more details.
var args = arguments;
var thisBinding = baseCreate(Ctor.prototype),
@@ -1281,7 +1253,7 @@
case regexpTag:
case stringTag:
// Coerce regexes to strings and treat strings, primitives and objects,
- // as equal. See http://www.ecma-international.org/ecma-262/6.0/#sec-regexp.prototype.tostring
+ // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
// for more details.
return object == (other + '');
@@ -1354,19 +1326,6 @@
return result;
}
- /**
- * Gets the "length" property value of `object`.
- *
- * **Note:** This function is used to avoid a
- * [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) that affects
- * Safari on at least iOS 8.1-8.3 ARM64.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {*} Returns the "length" value.
- */
- var getLength = baseProperty('length');
-
/**
* Checks if `value` is a flattenable `arguments` object or array.
*
@@ -1378,6 +1337,25 @@
return isArray(value) || isArguments(value);
}
+ /**
+ * This function is like
+ * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
+ * except that it includes inherited enumerable properties.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names.
+ */
+ function nativeKeysIn(object) {
+ var result = [];
+ if (object != null) {
+ for (var key in Object(object)) {
+ result.push(key);
+ }
+ }
+ return result;
+ }
+
/**
* Converts `value` to a string key if it's not a string or symbol.
*
@@ -1554,7 +1532,7 @@
/**
* Gets the index at which the first occurrence of `value` is found in `array`
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
+ * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
* for equality comparisons. If `fromIndex` is negative, it's used as the
* offset from the end of `array`.
*
@@ -1784,6 +1762,11 @@
* Iteration is stopped once `predicate` returns falsey. The predicate is
* invoked with three arguments: (value, index|key, collection).
*
+ * **Note:** This method returns `true` for
+ * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because
+ * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of
+ * elements of empty collections.
+ *
* @static
* @memberOf _
* @since 0.1.0
@@ -2048,7 +2031,7 @@
if (collection == null) {
return 0;
}
- collection = isArrayLike(collection) ? collection : keys(collection);
+ collection = isArrayLike(collection) ? collection : nativeKeys(collection);
return collection.length;
}
@@ -2342,12 +2325,12 @@
if (!isObject(value)) {
return value;
}
- return isArray(value) ? copyArray(value) : copyObject(value, keys(value));
+ return isArray(value) ? copyArray(value) : copyObject(value, nativeKeys(value));
}
/**
* Performs a
- * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
* comparison between two values to determine if they are equivalent.
*
* @static
@@ -2456,7 +2439,7 @@
* // => false
*/
function isArrayLike(value) {
- return value != null && isLength(getLength(value)) && !isFunction(value);
+ return value != null && isLength(value.length) && !isFunction(value);
}
/**
@@ -2568,7 +2551,7 @@
isFunction(value.splice) || isArguments(value))) {
return !value.length;
}
- return !keys(value).length;
+ return !nativeKeys(value).length;
}
/**
@@ -2587,8 +2570,7 @@
* @category Lang
* @param {*} value The value to compare.
* @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if the values are equivalent,
- * else `false`.
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
* @example
*
* var object = { 'a': 1 };
@@ -2615,8 +2597,7 @@
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a finite number,
- * else `false`.
+ * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.
* @example
*
* _.isFinite(3);
@@ -2663,16 +2644,15 @@
/**
* Checks if `value` is a valid array-like length.
*
- * **Note:** This function is loosely based on
- * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).
+ * **Note:** This method is loosely based on
+ * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a valid length,
- * else `false`.
+ * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
* @example
*
* _.isLength(3);
@@ -2694,7 +2674,7 @@
/**
* Checks if `value` is the
- * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)
+ * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
* of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
*
* @static
@@ -2933,7 +2913,7 @@
* Converts `value` to an integer.
*
* **Note:** This method is loosely based on
- * [`ToInteger`](http://www.ecma-international.org/ecma-262/6.0/#sec-tointeger).
+ * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
*
* @static
* @memberOf _
@@ -3045,7 +3025,7 @@
* // => { 'a': 1, 'c': 3 }
*/
var assign = createAssigner(function(object, source) {
- copyObject(source, keys(source), object);
+ copyObject(source, nativeKeys(source), object);
});
/**
@@ -3080,7 +3060,7 @@
* // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }
*/
var assignIn = createAssigner(function(object, source) {
- copyObject(source, keysIn(source), object);
+ copyObject(source, nativeKeysIn(source), object);
});
/**
@@ -3216,7 +3196,7 @@
* Creates an array of the own enumerable property names of `object`.
*
* **Note:** Non-object values are coerced to objects. See the
- * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)
+ * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
* for more details.
*
* @static
@@ -3240,7 +3220,7 @@
* _.keys('hi');
* // => ['0', '1']
*/
- var keys = baseKeys;
+ var keys = nativeKeys;
/**
* Creates an array of the own and inherited enumerable property names of `object`.
@@ -3265,7 +3245,7 @@
* _.keysIn(new Foo);
* // => ['a', 'b', 'c'] (iteration order is not guaranteed)
*/
- var keysIn = baseKeysIn;
+ var keysIn = nativeKeysIn;
/**
* Creates an object composed of the picked `object` properties.
@@ -3469,8 +3449,12 @@
* object and `source`, returning `true` if the given object has equivalent
* property values, else `false`.
*
- * **Note:** The created function supports comparing the same values as
- * `_.isEqual` is equivalent to `_.isMatch` with `source` partially applied.
+ * **Note:** The created function is equivalent to `_.isMatch` with `source`
+ * partially applied.
+ *
+ * Partial comparisons will match empty array and empty object `source`
+ * values against any array or object value, respectively. See `_.isEqual`
+ * for a list of supported value comparisons.
*
* @static
* @memberOf _
diff --git a/core.min.js b/core.min.js
index 3336ee8d3..39b38ecc4 100644
--- a/core.min.js
+++ b/core.min.js
@@ -3,26 +3,26 @@
* lodash (Custom Build) /license | Underscore.js 1.8.3 underscorejs.org/LICENSE
* Build: `lodash core -o ./dist/lodash.core.js`
*/
-;(function(){function n(n){n=null==n?n:Object(n);var t,r=[];for(t in n)r.push(t);return r}function t(n,t){return n.push.apply(n,t),n}function r(n){return function(t){return null==t?Z:t[n]}}function e(n,t,r,e,u){return u(n,function(n,u,o){r=e?(e=false,n):t(r,n,u,o)}),r}function u(n,t){return m(t,function(t){return n[t]})}function o(n){return n instanceof i?n:new i(n)}function i(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t}function c(n,t,r,e){return n===Z||J(n,an[r])&&!ln.call(e,r)?t:n;
-}function f(n){return V(n)?vn(n):{}}function a(n,t,r){if(typeof n!="function")throw new TypeError("Expected a function");return setTimeout(function(){n.apply(Z,r)},t)}function l(n,t){var r=true;return jn(n,function(n,e,u){return r=!!t(n,e,u)}),r}function p(n,t,r){for(var e=-1,u=n.length;++et}function g(n,t,r,e,u){return n===t||(null==n||null==t||!V(n)&&!H(t)?n!==n&&t!==t:_(n,t,g,r,e,u))}function _(n,t,r,e,u,o){var i=kn(n),c=kn(t),f="[object Array]",a="[object Array]";i||(f=sn.call(n),f="[object Arguments]"==f?"[object Object]":f),c||(a=sn.call(t),a="[object Arguments]"==a?"[object Object]":a);
-var l="[object Object]"==f&&true,c="[object Object]"==a&&true,a=f==a;o||(o=[]);var p=An(o,function(t){return t[0]==n}),s=An(o,function(n){return n[0]==t});if(p&&s)return p[1]==t;if(o.push([n,t]),o.push([t,n]),a&&!l){if(i)r=R(n,t,r,e,u,o);else n:{switch(f){case"[object Boolean]":case"[object Date]":case"[object Number]":r=J(+n,+t);break n;case"[object Error]":r=n.name==t.name&&n.message==t.message;break n;case"[object RegExp]":case"[object String]":r=n==t+"";break n}r=false}return o.pop(),r}return 2&u||(i=l&&ln.call(n,"__wrapped__"),
-f=c&&ln.call(t,"__wrapped__"),!i&&!f)?!!a&&(r=D(n,t,r,e,u,o),o.pop(),r):(i=i?n.value():n,f=f?t.value():t,r=r(i,f,e,u,o),o.pop(),r)}function j(n){return typeof n=="function"?n:null==n?X:(typeof n=="object"?O:r)(n)}function d(n,t){return nt&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Array(u);++ei))return false;for(var c=-1,f=true,a=1&u?[]:Z;++cr?_n(e+r,0):r:0,r=(r||0)-1;for(var u=t===t;++rarguments.length,jn)}function G(n,t){var r;if(typeof t!="function")throw new TypeError("Expected a function");return n=Nn(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=Z),r}}function J(n,t){
-return n===t||n!==n&&t!==t}function M(n){return H(n)&&P(n)&&ln.call(n,"callee")&&(!bn.call(n,"callee")||"[object Arguments]"==sn.call(n))}function P(n){var t;return(t=null!=n)&&(t=On(n),t=typeof t=="number"&&-1=t),t&&!U(n)}function U(n){return n=V(n)?sn.call(n):"","[object Function]"==n||"[object GeneratorFunction]"==n}function V(n){var t=typeof n;return!!n&&("object"==t||"function"==t)}function H(n){return!!n&&typeof n=="object"}function K(n){return typeof n=="number"||H(n)&&"[object Number]"==sn.call(n);
-}function L(n){return typeof n=="string"||!kn(n)&&H(n)&&"[object String]"==sn.call(n)}function Q(n){return typeof n=="string"?n:null==n?"":n+""}function W(n){return n?u(n,Dn(n)):[]}function X(n){return n}function Y(n,r,e){var u=Dn(r),o=b(r,u);null!=e||V(r)&&(o.length||!u.length)||(e=r,r=n,n=this,o=b(r,Dn(r)));var i=!(V(e)&&"chain"in e&&!e.chain),c=U(n);return jn(o,function(e){var u=r[e];n[e]=u,c&&(n.prototype[e]=function(){var r=this.__chain__;if(i||r){var e=n(this.__wrapped__);return(e.__actions__=w(this.__actions__)).push({
-func:u,args:arguments,thisArg:n}),e.__chain__=r,e}return u.apply(n,t([this.value()],arguments))})}),n}var Z,nn=1/0,tn=/[&<>"'`]/g,rn=RegExp(tn.source),en=typeof self=="object"&&self&&self.Object===Object&&self,un=typeof global=="object"&&global&&global.Object===Object&&global||en||Function("return this")(),on=(en=typeof exports=="object"&&exports&&!exports.nodeType&&exports)&&typeof module=="object"&&module&&!module.nodeType&&module,cn=function(n){return function(t){return null==n?Z:n[t]}}({"&":"&",
-"<":"<",">":">",'"':""","'":"'","`":"`"}),fn=Array.prototype,an=Object.prototype,ln=an.hasOwnProperty,pn=0,sn=an.toString,hn=un._,vn=Object.create,bn=an.propertyIsEnumerable,yn=un.isFinite,gn=Object.keys,_n=Math.max;i.prototype=f(o.prototype),i.prototype.constructor=i;var jn=function(n,t){return function(r,e){if(null==r)return r;if(!P(r))return n(r,e);for(var u=r.length,o=t?u:-1,i=Object(r);(t?o--:++or&&(r=_n(e+r,0));n:{for(t=j(t),e=n.length,r+=-1;++re||o&&c&&a||!u&&a||!i){r=1;break n}if(!o&&rt}function y(n,t,r,e,u){return n===t||(null==n||null==t||!V(n)&&!H(t)?n!==n&&t!==t:g(n,t,y,r,e,u))}function g(n,t,r,e,u,o){var i=wn(n),c=wn(t),f="[object Array]",a="[object Array]";i||(f=sn.call(n),f="[object Arguments]"==f?"[object Object]":f),c||(a=sn.call(t),a="[object Arguments]"==a?"[object Object]":a);var l="[object Object]"==f&&true,c="[object Object]"==a&&true,a=f==a;o||(o=[]);var p=On(o,function(t){return t[0]==n;
+}),s=On(o,function(n){return n[0]==t});if(p&&s)return p[1]==t;if(o.push([n,t]),o.push([t,n]),a&&!l){if(i)r=B(n,t,r,e,u,o);else n:{switch(f){case"[object Boolean]":case"[object Date]":case"[object Number]":r=J(+n,+t);break n;case"[object Error]":r=n.name==t.name&&n.message==t.message;break n;case"[object RegExp]":case"[object String]":r=n==t+"";break n}r=false}return o.pop(),r}return 2&u||(i=l&&ln.call(n,"__wrapped__"),f=c&&ln.call(t,"__wrapped__"),!i&&!f)?!!a&&(r=R(n,t,r,e,u,o),o.pop(),r):(i=i?n.value():n,
+f=f?t.value():t,r=r(i,f,e,u,o),o.pop(),r)}function _(n){return typeof n=="function"?n:null==n?X:(typeof n=="object"?m:t)(n)}function j(n,t){return nt&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Array(u);++ei))return false;for(var c=-1,f=true,a=1&u?[]:Z;++cr?_n(e+r,0):r:0,r=(r||0)-1;for(var u=t===t;++rarguments.length,jn)}function G(n,t){var r;if(typeof t!="function")throw new TypeError("Expected a function");return n=kn(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=Z),r}}function J(n,t){return n===t||n!==n&&t!==t}function M(n){
+return H(n)&&P(n)&&ln.call(n,"callee")&&(!bn.call(n,"callee")||"[object Arguments]"==sn.call(n))}function P(n){var t;return(t=null!=n)&&(t=n.length,t=typeof t=="number"&&-1=t),t&&!U(n)}function U(n){return n=V(n)?sn.call(n):"","[object Function]"==n||"[object GeneratorFunction]"==n}function V(n){var t=typeof n;return!!n&&("object"==t||"function"==t)}function H(n){return!!n&&typeof n=="object"}function K(n){return typeof n=="number"||H(n)&&"[object Number]"==sn.call(n)}
+function L(n){return typeof n=="string"||!wn(n)&&H(n)&&"[object String]"==sn.call(n)}function Q(n){return typeof n=="string"?n:null==n?"":n+""}function W(n){return n?e(n,Rn(n)):[]}function X(n){return n}function Y(t,r,e){var u=Rn(r),o=v(r,u);null!=e||V(r)&&(o.length||!u.length)||(e=r,r=t,t=this,o=v(r,Rn(r)));var i=!(V(e)&&"chain"in e&&!e.chain),c=U(t);return jn(o,function(e){var u=r[e];t[e]=u,c&&(t.prototype[e]=function(){var r=this.__chain__;if(i||r){var e=t(this.__wrapped__);return(e.__actions__=E(this.__actions__)).push({
+func:u,args:arguments,thisArg:t}),e.__chain__=r,e}return u.apply(t,n([this.value()],arguments))})}),t}var Z,nn=1/0,tn=/[&<>"'`]/g,rn=RegExp(tn.source),en=typeof self=="object"&&self&&self.Object===Object&&self,un=typeof global=="object"&&global&&global.Object===Object&&global||en||Function("return this")(),on=(en=typeof exports=="object"&&exports&&!exports.nodeType&&exports)&&typeof module=="object"&&module&&!module.nodeType&&module,cn=function(n){return function(t){return null==n?Z:n[t]}}({"&":"&",
+"<":"<",">":">",'"':""","'":"'","`":"`"}),fn=Array.prototype,an=Object.prototype,ln=an.hasOwnProperty,pn=0,sn=an.toString,hn=un._,vn=Object.create,bn=an.propertyIsEnumerable,yn=un.isFinite,gn=function(n,t){return function(r){return n(t(r))}}(Object.keys,Object),_n=Math.max;o.prototype=c(u.prototype),o.prototype.constructor=o;var jn=function(n,t){return function(r,e){if(null==r)return r;if(!P(r))return n(r,e);for(var u=r.length,o=t?u:-1,i=Object(r);(t?o--:++or&&(r=_n(e+r,0));n:{for(t=_(t),e=n.length,r+=-1;++re||o&&c&&a||!u&&a||!i){r=1;break n}if(!o&&r [1, 2]
*/
function initial(array) {
- return dropRight(array, 1);
+ var length = array ? array.length : 0;
+ return length ? baseSlice(array, 0, -1) : [];
}
module.exports = initial;
diff --git a/intersection.js b/intersection.js
index 20c0a4084..b56d4dd32 100644
--- a/intersection.js
+++ b/intersection.js
@@ -5,7 +5,7 @@ var arrayMap = require('./_arrayMap'),
/**
* Creates an array of unique values that are included in all given arrays
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
+ * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
* for equality comparisons. The order of result values is determined by the
* order they occur in the first array.
*
diff --git a/isArguments.js b/isArguments.js
index a96e244ba..4ffe05c71 100644
--- a/isArguments.js
+++ b/isArguments.js
@@ -11,7 +11,7 @@ var hasOwnProperty = objectProto.hasOwnProperty;
/**
* Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
diff --git a/isArrayLike.js b/isArrayLike.js
index 189a611f0..0f9668056 100644
--- a/isArrayLike.js
+++ b/isArrayLike.js
@@ -1,5 +1,4 @@
-var getLength = require('./_getLength'),
- isFunction = require('./isFunction'),
+var isFunction = require('./isFunction'),
isLength = require('./isLength');
/**
@@ -28,7 +27,7 @@ var getLength = require('./_getLength'),
* // => false
*/
function isArrayLike(value) {
- return value != null && isLength(getLength(value)) && !isFunction(value);
+ return value != null && isLength(value.length) && !isFunction(value);
}
module.exports = isArrayLike;
diff --git a/isBoolean.js b/isBoolean.js
index b9083211c..45cbdc1ce 100644
--- a/isBoolean.js
+++ b/isBoolean.js
@@ -8,7 +8,7 @@ var objectProto = Object.prototype;
/**
* Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
diff --git a/isElement.js b/isElement.js
index 67aca5dc7..62cdb062e 100644
--- a/isElement.js
+++ b/isElement.js
@@ -9,8 +9,7 @@ var isObjectLike = require('./isObjectLike'),
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a DOM element,
- * else `false`.
+ * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.
* @example
*
* _.isElement(document.body);
diff --git a/isEmpty.js b/isEmpty.js
index 9d4649690..40c5ba488 100644
--- a/isEmpty.js
+++ b/isEmpty.js
@@ -5,8 +5,9 @@ var getTag = require('./_getTag'),
isBuffer = require('./isBuffer'),
isFunction = require('./isFunction'),
isObjectLike = require('./isObjectLike'),
+ isPrototype = require('./_isPrototype'),
isString = require('./isString'),
- keys = require('./keys');
+ nativeKeys = require('./_nativeKeys');
/** `Object#toString` result references. */
var mapTag = '[object Map]',
@@ -69,12 +70,14 @@ function isEmpty(value) {
return !value.size;
}
}
+ var isProto = isPrototype(value);
for (var key in value) {
- if (hasOwnProperty.call(value, key)) {
+ if (hasOwnProperty.call(value, key) &&
+ !(isProto && key == 'constructor')) {
return false;
}
}
- return !(nonEnumShadows && keys(value).length);
+ return !(nonEnumShadows && nativeKeys(value).length);
}
module.exports = isEmpty;
diff --git a/isEqual.js b/isEqual.js
index bd694dcf2..8a5412621 100644
--- a/isEqual.js
+++ b/isEqual.js
@@ -16,8 +16,7 @@ var baseIsEqual = require('./_baseIsEqual');
* @category Lang
* @param {*} value The value to compare.
* @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if the values are equivalent,
- * else `false`.
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
* @example
*
* var object = { 'a': 1 };
diff --git a/isEqualWith.js b/isEqualWith.js
index a442b248f..fb83d5010 100644
--- a/isEqualWith.js
+++ b/isEqualWith.js
@@ -13,8 +13,7 @@ var baseIsEqual = require('./_baseIsEqual');
* @param {*} value The value to compare.
* @param {*} other The other value to compare.
* @param {Function} [customizer] The function to customize comparisons.
- * @returns {boolean} Returns `true` if the values are equivalent,
- * else `false`.
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
* @example
*
* function isGreeting(value) {
diff --git a/isError.js b/isError.js
index b4a93aebe..85884b520 100644
--- a/isError.js
+++ b/isError.js
@@ -8,7 +8,7 @@ var objectProto = Object.prototype;
/**
* Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
@@ -22,8 +22,7 @@ var objectToString = objectProto.toString;
* @since 3.0.0
* @category Lang
* @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an error object,
- * else `false`.
+ * @returns {boolean} Returns `true` if `value` is an error object, else `false`.
* @example
*
* _.isError(new Error);
diff --git a/isFinite.js b/isFinite.js
index 66af20699..601842bc4 100644
--- a/isFinite.js
+++ b/isFinite.js
@@ -14,8 +14,7 @@ var nativeIsFinite = root.isFinite;
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a finite number,
- * else `false`.
+ * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.
* @example
*
* _.isFinite(3);
diff --git a/isFunction.js b/isFunction.js
index 115f4667f..7c0882b23 100644
--- a/isFunction.js
+++ b/isFunction.js
@@ -9,7 +9,7 @@ var objectProto = Object.prototype;
/**
* Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
diff --git a/isLength.js b/isLength.js
index cd9b25721..3a95caa96 100644
--- a/isLength.js
+++ b/isLength.js
@@ -4,16 +4,15 @@ var MAX_SAFE_INTEGER = 9007199254740991;
/**
* Checks if `value` is a valid array-like length.
*
- * **Note:** This function is loosely based on
- * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).
+ * **Note:** This method is loosely based on
+ * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a valid length,
- * else `false`.
+ * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
* @example
*
* _.isLength(3);
diff --git a/isMatch.js b/isMatch.js
index 32fc5fb50..9773a18cd 100644
--- a/isMatch.js
+++ b/isMatch.js
@@ -5,8 +5,12 @@ var baseIsMatch = require('./_baseIsMatch'),
* Performs a partial deep comparison between `object` and `source` to
* determine if `object` contains equivalent property values.
*
- * **Note:** This method supports comparing the same values as `_.isEqual`
- * and is equivalent to `_.matches` when `source` is partially applied.
+ * **Note:** This method is equivalent to `_.matches` when `source` is
+ * partially applied.
+ *
+ * Partial comparisons will match empty array and empty object `source`
+ * values against any array or object value, respectively. See `_.isEqual`
+ * for a list of supported value comparisons.
*
* @static
* @memberOf _
diff --git a/isNumber.js b/isNumber.js
index aa6148836..b8662920e 100644
--- a/isNumber.js
+++ b/isNumber.js
@@ -8,7 +8,7 @@ var objectProto = Object.prototype;
/**
* Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
diff --git a/isObject.js b/isObject.js
index d16542f8b..4f96dd0a2 100644
--- a/isObject.js
+++ b/isObject.js
@@ -1,6 +1,6 @@
/**
* Checks if `value` is the
- * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)
+ * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
* of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
*
* @static
diff --git a/isPlainObject.js b/isPlainObject.js
index 13a90e7d0..fb48e44b3 100644
--- a/isPlainObject.js
+++ b/isPlainObject.js
@@ -19,7 +19,7 @@ var objectCtorString = funcToString.call(Object);
/**
* Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
@@ -33,8 +33,7 @@ var objectToString = objectProto.toString;
* @since 0.8.0
* @category Lang
* @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a plain object,
- * else `false`.
+ * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
* @example
*
* function Foo() {
diff --git a/isSafeInteger.js b/isSafeInteger.js
index a780afb6b..2a48526e1 100644
--- a/isSafeInteger.js
+++ b/isSafeInteger.js
@@ -15,8 +15,7 @@ var MAX_SAFE_INTEGER = 9007199254740991;
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a safe integer,
- * else `false`.
+ * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.
* @example
*
* _.isSafeInteger(3);
diff --git a/isString.js b/isString.js
index b9d4f24fe..7b8be86ce 100644
--- a/isString.js
+++ b/isString.js
@@ -9,7 +9,7 @@ var objectProto = Object.prototype;
/**
* Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
diff --git a/isSymbol.js b/isSymbol.js
index 060d97f17..aef51150f 100644
--- a/isSymbol.js
+++ b/isSymbol.js
@@ -8,7 +8,7 @@ var objectProto = Object.prototype;
/**
* Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
diff --git a/isWeakSet.js b/isWeakSet.js
index a018f53c0..290164b4b 100644
--- a/isWeakSet.js
+++ b/isWeakSet.js
@@ -8,7 +8,7 @@ var objectProto = Object.prototype;
/**
* Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
diff --git a/keys.js b/keys.js
index 186a4fedd..d143c7186 100644
--- a/keys.js
+++ b/keys.js
@@ -1,15 +1,12 @@
-var baseHas = require('./_baseHas'),
+var arrayLikeKeys = require('./_arrayLikeKeys'),
baseKeys = require('./_baseKeys'),
- indexKeys = require('./_indexKeys'),
- isArrayLike = require('./isArrayLike'),
- isIndex = require('./_isIndex'),
- isPrototype = require('./_isPrototype');
+ isArrayLike = require('./isArrayLike');
/**
* Creates an array of the own enumerable property names of `object`.
*
* **Note:** Non-object values are coerced to objects. See the
- * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)
+ * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
* for more details.
*
* @static
@@ -34,23 +31,7 @@ var baseHas = require('./_baseHas'),
* // => ['0', '1']
*/
function keys(object) {
- var isProto = isPrototype(object);
- if (!(isProto || isArrayLike(object))) {
- return baseKeys(object);
- }
- var indexes = indexKeys(object),
- skipIndexes = !!indexes,
- result = indexes || [],
- length = result.length;
-
- for (var key in object) {
- if (baseHas(object, key) &&
- !(skipIndexes && (key == 'length' || isIndex(key, length))) &&
- !(isProto && key == 'constructor')) {
- result.push(key);
- }
- }
- return result;
+ return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
}
module.exports = keys;
diff --git a/keysIn.js b/keysIn.js
index d2fb91cb3..a62308f2c 100644
--- a/keysIn.js
+++ b/keysIn.js
@@ -1,13 +1,6 @@
-var baseKeysIn = require('./_baseKeysIn'),
- indexKeys = require('./_indexKeys'),
- isIndex = require('./_isIndex'),
- isPrototype = require('./_isPrototype');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
+var arrayLikeKeys = require('./_arrayLikeKeys'),
+ baseKeysIn = require('./_baseKeysIn'),
+ isArrayLike = require('./isArrayLike');
/**
* Creates an array of the own and inherited enumerable property names of `object`.
@@ -33,23 +26,7 @@ var hasOwnProperty = objectProto.hasOwnProperty;
* // => ['a', 'b', 'c'] (iteration order is not guaranteed)
*/
function keysIn(object) {
- var index = -1,
- isProto = isPrototype(object),
- props = baseKeysIn(object),
- propsLength = props.length,
- indexes = indexKeys(object),
- skipIndexes = !!indexes,
- result = indexes || [],
- length = result.length;
-
- while (++index < propsLength) {
- var key = props[index];
- if (!(skipIndexes && (key == 'length' || isIndex(key, length))) &&
- !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
- result.push(key);
- }
- }
- return result;
+ return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
}
module.exports = keysIn;
diff --git a/lodash.js b/lodash.js
index 22e73749b..47e584660 100644
--- a/lodash.js
+++ b/lodash.js
@@ -12,7 +12,7 @@
var undefined;
/** Used as the semantic version number. */
- var VERSION = '4.14.1';
+ var VERSION = '4.14.2';
/** Used as the size to enable large array optimizations. */
var LARGE_ARRAY_SIZE = 200;
@@ -134,7 +134,7 @@
/**
* Used to match `RegExp`
- * [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns).
+ * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
*/
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g,
reHasRegExpChar = RegExp(reRegExpChar.source);
@@ -157,7 +157,7 @@
/**
* Used to match
- * [ES template delimiters](http://ecma-international.org/ecma-262/6.0/#sec-template-literal-lexical-components).
+ * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).
*/
var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
@@ -266,9 +266,9 @@
var contextProps = [
'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',
'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',
- 'Promise', 'Reflect', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError',
- 'Uint8Array', 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',
- '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'
+ 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',
+ 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', '_', 'clearTimeout',
+ 'isFinite', 'parseInt', 'setTimeout'
];
/** Used to make template sourceURLs easier to identify. */
@@ -1129,7 +1129,7 @@
}
/**
- * Creates a function that invokes `func` with its first argument transformed.
+ * Creates a unary function that invokes `func` with its argument transformed.
*
* @private
* @param {Function} func The function to wrap.
@@ -1282,7 +1282,6 @@
/** Built-in constructor references. */
var Array = context.Array,
- Date = context.Date,
Error = context.Error,
Math = context.Math,
RegExp = context.RegExp,
@@ -1316,7 +1315,7 @@
/**
* Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
@@ -1332,29 +1331,28 @@
/** Built-in value references. */
var Buffer = moduleExports ? context.Buffer : undefined,
- Reflect = context.Reflect,
Symbol = context.Symbol,
Uint8Array = context.Uint8Array,
- enumerate = Reflect ? Reflect.enumerate : undefined,
+ getPrototype = overArg(Object.getPrototypeOf, Object),
iteratorSymbol = Symbol ? Symbol.iterator : undefined,
objectCreate = context.Object.create,
propertyIsEnumerable = objectProto.propertyIsEnumerable,
splice = arrayProto.splice,
spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;
- /** Built-in method references that are mockable. */
- var clearTimeout = function(id) { return context.clearTimeout.call(root, id); },
- setTimeout = function(func, wait) { return context.setTimeout.call(root, func, wait); };
+ /** Mocked built-ins. */
+ var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,
+ ctxNow = context.Date && context.Date.now !== root.Date.now && context.Date.now,
+ ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeCeil = Math.ceil,
nativeFloor = Math.floor,
- nativeGetPrototype = Object.getPrototypeOf,
nativeGetSymbols = Object.getOwnPropertySymbols,
nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,
nativeIsFinite = context.isFinite,
nativeJoin = arrayProto.join,
- nativeKeys = Object.keys,
+ nativeKeys = overArg(Object.keys, Object),
nativeMax = Math.max,
nativeMin = Math.min,
nativeParseInt = context.parseInt,
@@ -2201,6 +2199,31 @@
/*------------------------------------------------------------------------*/
+ /**
+ * Creates an array of the enumerable property names of the array-like `value`.
+ *
+ * @private
+ * @param {*} value The value to query.
+ * @param {boolean} inherited Specify returning inherited property names.
+ * @returns {Array} Returns the array of property names.
+ */
+ function arrayLikeKeys(value, inherited) {
+ var result = (isArray(value) || isString(value) || isArguments(value))
+ ? baseTimes(value.length, String)
+ : [];
+
+ var length = result.length,
+ skipIndexes = !!length;
+
+ for (var key in value) {
+ if ((inherited || hasOwnProperty.call(value, key)) &&
+ !(skipIndexes && (key == 'length' || isIndex(key, length)))) {
+ result.push(key);
+ }
+ }
+ return result;
+ }
+
/**
* Used by `_.defaults` to customize its `_.assignIn` use.
*
@@ -2237,7 +2260,7 @@
/**
* Assigns `value` to `key` of `object` if the existing value is not equivalent
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
+ * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
* for equality comparisons.
*
* @private
@@ -2445,14 +2468,13 @@
if (object == null) {
return !length;
}
- var index = length;
- while (index--) {
- var key = props[index],
+ object = Object(object);
+ while (length--) {
+ var key = props[length],
predicate = source[key],
value = object[key];
- if ((value === undefined &&
- !(key in Object(object))) || !predicate(value)) {
+ if ((value === undefined && !(key in object)) || !predicate(value)) {
return false;
}
}
@@ -2479,7 +2501,7 @@
* @param {Function} func The function to delay.
* @param {number} wait The number of milliseconds to delay invocation.
* @param {Array} args The arguments to provide to `func`.
- * @returns {number} Returns the timer id.
+ * @returns {number|Object} Returns the timer id or timeout object.
*/
function baseDelay(func, wait, args) {
if (typeof func != 'function') {
@@ -2824,12 +2846,7 @@
* @returns {boolean} Returns `true` if `key` exists, else `false`.
*/
function baseHas(object, key) {
- // Avoid a bug in IE 10-11 where objects with a [[Prototype]] of `null`,
- // that are composed entirely of index properties, return `false` for
- // `hasOwnProperty` checks of them.
- return object != null &&
- (hasOwnProperty.call(object, key) ||
- (typeof object == 'object' && key in object && getPrototype(object) === null));
+ return object != null && hasOwnProperty.call(object, key);
}
/**
@@ -3203,40 +3220,47 @@
}
/**
- * The base implementation of `_.keys` which doesn't skip the constructor
- * property of prototypes or treat sparse arrays as dense.
+ * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names.
*/
- var baseKeys = overArg(nativeKeys, Object);
+ function baseKeys(object) {
+ if (!isPrototype(object)) {
+ return nativeKeys(object);
+ }
+ var result = [];
+ for (var key in Object(object)) {
+ if (hasOwnProperty.call(object, key) && key != 'constructor') {
+ result.push(key);
+ }
+ }
+ return result;
+ }
/**
- * The base implementation of `_.keysIn` which doesn't skip the constructor
- * property of prototypes or treat sparse arrays as dense.
+ * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names.
*/
function baseKeysIn(object) {
- object = object == null ? object : Object(object);
+ if (!isObject(object)) {
+ return nativeKeysIn(object);
+ }
+ var isProto = isPrototype(object),
+ result = [];
- var result = [];
for (var key in object) {
- result.push(key);
+ if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
+ result.push(key);
+ }
}
return result;
}
- // Fallback for IE < 9 with es6-shim.
- if (enumerate && !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf')) {
- baseKeysIn = function(object) {
- return iteratorToArray(enumerate(object));
- };
- }
-
/**
* The base implementation of `_.lt` which doesn't coerce arguments.
*
@@ -3321,7 +3345,7 @@
return;
}
if (!(isArray(source) || isTypedArray(source))) {
- var props = keysIn(source);
+ var props = baseKeysIn(source);
}
arrayEach(props || source, function(srcValue, key) {
if (props) {
@@ -3688,6 +3712,9 @@
* @returns {Object} Returns `object`.
*/
function baseSet(object, path, value, customizer) {
+ if (!isObject(object)) {
+ return object;
+ }
path = isKey(path, object) ? [path] : castPath(path);
var index = -1,
@@ -3696,20 +3723,19 @@
nested = object;
while (nested != null && ++index < length) {
- var key = toKey(path[index]);
- if (isObject(nested)) {
- var newValue = value;
- if (index != lastIndex) {
- var objValue = nested[key];
- newValue = customizer ? customizer(objValue, key, nested) : undefined;
- if (newValue === undefined) {
- newValue = objValue == null
- ? (isIndex(path[index + 1]) ? [] : {})
- : objValue;
- }
+ var key = toKey(path[index]),
+ newValue = value;
+
+ if (index != lastIndex) {
+ var objValue = nested[key];
+ newValue = customizer ? customizer(objValue, key, nested) : undefined;
+ if (newValue === undefined) {
+ newValue = isObject(objValue)
+ ? objValue
+ : (isIndex(path[index + 1]) ? [] : {});
}
- assignValue(nested, key, newValue);
}
+ assignValue(nested, key, newValue);
nested = nested[key];
}
return object;
@@ -4002,7 +4028,7 @@
object = parent(object, path);
var key = toKey(last(path));
- return !(object != null && baseHas(object, key)) || delete object[key];
+ return !(object != null && hasOwnProperty.call(object, key)) || delete object[key];
}
/**
@@ -4157,6 +4183,16 @@
return (!start && end >= length) ? array : baseSlice(array, start, end);
}
+ /**
+ * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).
+ *
+ * @private
+ * @param {number|Object} id The timer id or timeout object of the timer to clear.
+ */
+ var clearTimeout = ctxClearTimeout || function(id) {
+ return root.clearTimeout(id);
+ };
+
/**
* Creates a clone of `buffer`.
*
@@ -4650,7 +4686,7 @@
function createCtor(Ctor) {
return function() {
// Use a `switch` statement to work with class constructors. See
- // http://ecma-international.org/ecma-262/6.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
+ // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
// for more details.
var args = arguments;
switch (args.length) {
@@ -5338,7 +5374,7 @@
case regexpTag:
case stringTag:
// Coerce regexes to strings and treat strings, primitives and objects,
- // as equal. See http://www.ecma-international.org/ecma-262/6.0/#sec-regexp.prototype.tostring
+ // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
// for more details.
return object == (other + '');
@@ -5400,7 +5436,7 @@
var index = objLength;
while (index--) {
var key = objProps[index];
- if (!(isPartial ? key in other : baseHas(other, key))) {
+ if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
return false;
}
}
@@ -5536,19 +5572,6 @@
return arguments.length ? result(arguments[0], arguments[1]) : result;
}
- /**
- * Gets the "length" property value of `object`.
- *
- * **Note:** This function is used to avoid a
- * [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) that affects
- * Safari on at least iOS 8.1-8.3 ARM64.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {*} Returns the "length" value.
- */
- var getLength = baseProperty('length');
-
/**
* Gets the data for `map`.
*
@@ -5597,15 +5620,6 @@
return baseIsNative(value) ? value : undefined;
}
- /**
- * Gets the `[[Prototype]]` of `value`.
- *
- * @private
- * @param {*} value The value to query.
- * @returns {null|Object} Returns the `[[Prototype]]`.
- */
- var getPrototype = overArg(nativeGetPrototype, Object);
-
/**
* Creates an array of the own enumerable symbol properties of `object`.
*
@@ -5818,23 +5832,6 @@
}
}
- /**
- * Creates an array of index keys for `object` values of arrays,
- * `arguments` objects, and strings, otherwise `null` is returned.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array|null} Returns index keys, else `null`.
- */
- function indexKeys(object) {
- var length = object ? object.length : undefined;
- if (isLength(length) &&
- (isArray(object) || isString(object) || isArguments(object))) {
- return baseTimes(length, String);
- }
- return null;
- }
-
/**
* Inserts wrapper `details` in a comment at the top of the `source` body.
*
@@ -6119,6 +6116,25 @@
return objValue;
}
+ /**
+ * This function is like
+ * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
+ * except that it includes inherited enumerable properties.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names.
+ */
+ function nativeKeysIn(object) {
+ var result = [];
+ if (object != null) {
+ for (var key in Object(object)) {
+ result.push(key);
+ }
+ }
+ return result;
+ }
+
/**
* Gets the parent value at `path` of `object`.
*
@@ -6187,6 +6203,18 @@
};
}());
+ /**
+ * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).
+ *
+ * @private
+ * @param {Function} func The function to delay.
+ * @param {number} wait The number of milliseconds to delay invocation.
+ * @returns {number|Object} Returns the timer id or timeout object.
+ */
+ var setTimeout = ctxSetTimeout || function(func, wait) {
+ return root.setTimeout(func, wait);
+ };
+
/**
* Sets the `toString` method of `wrapper` to mimic the source of `reference`
* with wrapper details in a comment at the top of the source body.
@@ -6407,7 +6435,7 @@
/**
* Creates an array of `array` values not included in the other given arrays
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
+ * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
* for equality comparisons. The order of result values is determined by the
* order they occur in the first array.
*
@@ -6910,7 +6938,7 @@
/**
* Gets the index at which the first occurrence of `value` is found in `array`
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
+ * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
* for equality comparisons. If `fromIndex` is negative, it's used as the
* offset from the end of `array`.
*
@@ -6958,12 +6986,13 @@
* // => [1, 2]
*/
function initial(array) {
- return dropRight(array, 1);
+ var length = array ? array.length : 0;
+ return length ? baseSlice(array, 0, -1) : [];
}
/**
* Creates an array of unique values that are included in all given arrays
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
+ * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
* for equality comparisons. The order of result values is determined by the
* order they occur in the first array.
*
@@ -7167,7 +7196,7 @@
/**
* Removes all given values from `array` using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
* for equality comparisons.
*
* **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`
@@ -7636,7 +7665,8 @@
* // => [2, 3]
*/
function tail(array) {
- return drop(array, 1);
+ var length = array ? array.length : 0;
+ return length ? baseSlice(array, 1, length) : [];
}
/**
@@ -7793,7 +7823,7 @@
/**
* Creates an array of unique values, in order, from all given arrays using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
* for equality comparisons.
*
* @static
@@ -7874,7 +7904,7 @@
/**
* Creates a duplicate-free version of an array, using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
* for equality comparisons, in which only the first occurrence of each
* element is kept.
*
@@ -8019,7 +8049,7 @@
/**
* Creates an array excluding all given values using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
* for equality comparisons.
*
* **Note:** Unlike `_.pull`, this method returns a new array.
@@ -8590,6 +8620,11 @@
* Iteration is stopped once `predicate` returns falsey. The predicate is
* invoked with three arguments: (value, index|key, collection).
*
+ * **Note:** This method returns `true` for
+ * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because
+ * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of
+ * elements of empty collections.
+ *
* @static
* @memberOf _
* @since 0.1.0
@@ -8907,7 +8942,7 @@
/**
* Checks if `value` is in `collection`. If `collection` is a string, it's
* checked for a substring of `value`, otherwise
- * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
* is used for equality comparisons. If `fromIndex` is negative, it's used as
* the offset from the end of `collection`.
*
@@ -9375,7 +9410,7 @@
return collection.size;
}
}
- return keys(collection).length;
+ return baseKeys(collection).length;
}
/**
@@ -9487,9 +9522,9 @@
* }, _.now());
* // => Logs the number of milliseconds it took for the deferred invocation.
*/
- function now() {
- return Date.now();
- }
+ var now = ctxNow || function() {
+ return root.Date.now();
+ };
/*------------------------------------------------------------------------*/
@@ -10030,7 +10065,7 @@
* **Note:** The cache is exposed as the `cache` property on the memoized
* function. Its creation may be customized by replacing the `_.memoize.Cache`
* constructor with one whose instances implement the
- * [`Map`](http://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-map-prototype-object)
+ * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
* method interface of `delete`, `get`, `has`, and `set`.
*
* @static
@@ -10330,7 +10365,7 @@
/**
* Creates a function that invokes `func` with the `this` binding of the
* create function and an array of arguments much like
- * [`Function#apply`](http://www.ecma-international.org/ecma-262/6.0/#sec-function.prototype.apply).
+ * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).
*
* **Note:** This method is based on the
* [spread operator](https://mdn.io/spread_operator).
@@ -10677,7 +10712,7 @@
/**
* Performs a
- * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
* comparison between two values to determine if they are equivalent.
*
* @static
@@ -10857,7 +10892,7 @@
* // => false
*/
function isArrayLike(value) {
- return value != null && isLength(getLength(value)) && !isFunction(value);
+ return value != null && isLength(value.length) && !isFunction(value);
}
/**
@@ -10957,8 +10992,7 @@
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a DOM element,
- * else `false`.
+ * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.
* @example
*
* _.isElement(document.body);
@@ -11016,12 +11050,14 @@
return !value.size;
}
}
+ var isProto = isPrototype(value);
for (var key in value) {
- if (hasOwnProperty.call(value, key)) {
+ if (hasOwnProperty.call(value, key) &&
+ !(isProto && key == 'constructor')) {
return false;
}
}
- return !(nonEnumShadows && keys(value).length);
+ return !(nonEnumShadows && nativeKeys(value).length);
}
/**
@@ -11040,8 +11076,7 @@
* @category Lang
* @param {*} value The value to compare.
* @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if the values are equivalent,
- * else `false`.
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
* @example
*
* var object = { 'a': 1 };
@@ -11070,8 +11105,7 @@
* @param {*} value The value to compare.
* @param {*} other The other value to compare.
* @param {Function} [customizer] The function to customize comparisons.
- * @returns {boolean} Returns `true` if the values are equivalent,
- * else `false`.
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
* @example
*
* function isGreeting(value) {
@@ -11105,8 +11139,7 @@
* @since 3.0.0
* @category Lang
* @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an error object,
- * else `false`.
+ * @returns {boolean} Returns `true` if `value` is an error object, else `false`.
* @example
*
* _.isError(new Error);
@@ -11134,8 +11167,7 @@
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a finite number,
- * else `false`.
+ * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.
* @example
*
* _.isFinite(3);
@@ -11212,16 +11244,15 @@
/**
* Checks if `value` is a valid array-like length.
*
- * **Note:** This function is loosely based on
- * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).
+ * **Note:** This method is loosely based on
+ * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a valid length,
- * else `false`.
+ * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
* @example
*
* _.isLength(3);
@@ -11243,7 +11274,7 @@
/**
* Checks if `value` is the
- * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)
+ * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
* of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
*
* @static
@@ -11322,8 +11353,12 @@
* Performs a partial deep comparison between `object` and `source` to
* determine if `object` contains equivalent property values.
*
- * **Note:** This method supports comparing the same values as `_.isEqual`
- * and is equivalent to `_.matches` when `source` is partially applied.
+ * **Note:** This method is equivalent to `_.matches` when `source` is
+ * partially applied.
+ *
+ * Partial comparisons will match empty array and empty object `source`
+ * values against any array or object value, respectively. See `_.isEqual`
+ * for a list of supported value comparisons.
*
* @static
* @memberOf _
@@ -11536,8 +11571,7 @@
* @since 0.8.0
* @category Lang
* @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a plain object,
- * else `false`.
+ * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
* @example
*
* function Foo() {
@@ -11601,8 +11635,7 @@
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a safe integer,
- * else `false`.
+ * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.
* @example
*
* _.isSafeInteger(3);
@@ -11896,7 +11929,7 @@
* Converts `value` to an integer.
*
* **Note:** This method is loosely based on
- * [`ToInteger`](http://www.ecma-international.org/ecma-262/6.0/#sec-tointeger).
+ * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
*
* @static
* @memberOf _
@@ -11930,7 +11963,7 @@
* array-like object.
*
* **Note:** This method is based on
- * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).
+ * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
*
* @static
* @memberOf _
@@ -12159,13 +12192,7 @@
* // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }
*/
var assignIn = createAssigner(function(object, source) {
- if (nonEnumShadows || isPrototype(source) || isArrayLike(source)) {
- copyObject(source, keysIn(source), object);
- return;
- }
- for (var key in source) {
- assignValue(object, key, source[key]);
- }
+ copyObject(source, keysIn(source), object);
});
/**
@@ -12774,7 +12801,7 @@
* Creates an array of the own enumerable property names of `object`.
*
* **Note:** Non-object values are coerced to objects. See the
- * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)
+ * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
* for more details.
*
* @static
@@ -12799,23 +12826,7 @@
* // => ['0', '1']
*/
function keys(object) {
- var isProto = isPrototype(object);
- if (!(isProto || isArrayLike(object))) {
- return baseKeys(object);
- }
- var indexes = indexKeys(object),
- skipIndexes = !!indexes,
- result = indexes || [],
- length = result.length;
-
- for (var key in object) {
- if (baseHas(object, key) &&
- !(skipIndexes && (key == 'length' || isIndex(key, length))) &&
- !(isProto && key == 'constructor')) {
- result.push(key);
- }
- }
- return result;
+ return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
}
/**
@@ -12842,23 +12853,7 @@
* // => ['a', 'b', 'c'] (iteration order is not guaranteed)
*/
function keysIn(object) {
- var index = -1,
- isProto = isPrototype(object),
- props = baseKeysIn(object),
- propsLength = props.length,
- indexes = indexKeys(object),
- skipIndexes = !!indexes,
- result = indexes || [],
- length = result.length;
-
- while (++index < propsLength) {
- var key = props[index];
- if (!(skipIndexes && (key == 'length' || isIndex(key, length))) &&
- !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
- result.push(key);
- }
- }
- return result;
+ return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
}
/**
@@ -15038,8 +15033,12 @@
* object and `source`, returning `true` if the given object has equivalent
* property values, else `false`.
*
- * **Note:** The created function supports comparing the same values as
- * `_.isEqual` is equivalent to `_.isMatch` with `source` partially applied.
+ * **Note:** The created function is equivalent to `_.isMatch` with `source`
+ * partially applied.
+ *
+ * Partial comparisons will match empty array and empty object `source`
+ * values against any array or object value, respectively. See `_.isEqual`
+ * for a list of supported value comparisons.
*
* @static
* @memberOf _
@@ -15066,7 +15065,9 @@
* value at `path` of a given object to `srcValue`, returning `true` if the
* object value is equivalent, else `false`.
*
- * **Note:** This method supports comparing the same values as `_.isEqual`.
+ * **Note:** Partial comparisons will match empty array and empty object
+ * `srcValue` values against any array or object value, respectively. See
+ * `_.isEqual` for a list of supported value comparisons.
*
* @static
* @memberOf _
diff --git a/lodash.min.js b/lodash.min.js
index 5c282e70a..744569f44 100644
--- a/lodash.min.js
+++ b/lodash.min.js
@@ -5,126 +5,125 @@
;(function(){function t(t,n){return t.set(n[0],n[1]),t}function n(t,n){return t.add(n),t}function r(t,n,r){switch(r.length){case 0:return t.call(n);case 1:return t.call(n,r[0]);case 2:return t.call(n,r[0],r[1]);case 3:return t.call(n,r[0],r[1],r[2])}return t.apply(n,r)}function e(t,n,r,e){for(var u=-1,o=t?t.length:0;++u=n?t:n)),t}function dn(t,n,r,e,o,i,f){var c;if(e&&(c=i?e(t,o,i,f):e(t)),c!==P)return c;if(!cu(t))return t;if(o=Zi(t)){if(c=he(t),!n)return Wr(t,c)}else{var a=St(t),l="[object Function]"==a||"[object GeneratorFunction]"==a;if(Vi(t))return kr(t,n);if("[object Object]"==a||"[object Arguments]"==a||l&&!i){if(C(t))return i?t:{};if(c=pe(l?{}:t),
-!n)return Mr(t,_n(c,t))}else{if(!$t[a])return i?t:{};c=_e(t,a,dn,n)}}if(f||(f=new cn),i=f.get(t))return i;if(f.set(t,c),!o)var s=r?Wn(t,mu,ri):mu(t);return u(s||t,function(u,o){s&&(o=u,u=t[o]),sn(c,o,dn(u,n,r,e,o,t,f))}),c}function yn(t){var n=mu(t);return function(r){return bn(r,t,n)}}function bn(t,n,r){var e=r.length;if(null==t)return!e;for(;e--;){var u=r[e],o=n[u],i=t[u];if(i===P&&!(u in Object(t))||!o(i))return false}return true}function xn(t){return cu(t)?co(t):{}}function jn(t,n,r){if(typeof t!="function")throw new Pu("Expected a function");
-return Rt(function(){t.apply(P,r)},n)}function wn(t,n,r,e){var u=-1,o=c,i=true,f=t.length,s=[],h=n.length;if(!f)return s;r&&(n=l(n,S(r))),e?(o=a,i=false):200<=n.length&&(o=I,i=false,n=new Yt(n));t:for(;++un}function Mn(t,n){return null!=t&&(Yu.call(t,n)||typeof t=="object"&&n in t&&null===ni(t))}function Cn(t,n){return null!=t&&n in Object(t)}function Ln(t,n,r){for(var e=r?a:c,u=t[0].length,o=t.length,i=o,f=Du(o),s=1/0,h=[];i--;){var p=t[i];i&&n&&(p=l(p,S(n))),s=wo(p.length,s),f[i]=!r&&(n||120<=u&&120<=p.length)?new Yt(i&&p):P}var p=t[0],_=-1,v=f[0];t:for(;++_n?r:0,de(n,r)?t[n]:P}function nr(t,n,r){var e=-1;return n=l(n.length?n:[Wu],S(fe())),t=Yn(t,function(t){return{a:l(n,function(n){return n(t)}),b:++e,c:t}}),A(t,function(t,n){var e;t:{e=-1;for(var u=t.a,o=n.a,i=u.length,f=r.length;++e=f?c:c*("desc"==r[e]?-1:1);break t}}e=t.b-n.b}return e})}function rr(t,n){return t=Object(t),er(t,n,function(n,r){
-return r in t})}function er(t,n,r){for(var e=-1,u=n.length,o={};++en||9007199254740991n&&(n=-n>u?0:u+n),r=r>u?u:r,0>r&&(r+=u),u=n>r?0:r-n>>>0,n>>>=0,r=Du(u);++e=u){for(;e>>1,i=t[o];null!==i&&!pu(i)&&(r?i<=n:i=e?t:sr(t,n,r)}function kr(t,n){
-if(n)return t.slice();var r=new t.constructor(t.length);return t.copy(r),r}function Er(t){var n=new t.constructor(t.byteLength);return new oo(n).set(new oo(t)),n}function Sr(t,n){if(t!==n){var r=t!==P,e=null===t,u=t===t,o=pu(t),i=n!==P,f=null===n,c=n===n,a=pu(n);if(!f&&!a&&!o&&t>n||o&&i&&c&&!f&&!a||e&&i&&c||!r&&c||!u)return 1;if(!e&&!o&&!a&&tu?P:o,u=1),n=Object(n);++ei&&f[0]!==a&&f[i-1]!==a?[]:D(f,a),
-i-=c.length,ir?r?cr(n,t):n:(r=cr(n,ho(t/T(n))),Lt.test(n)?Or(r.match(Mt),0,t).join(""):r.slice(0,t))}function Yr(t,n,e,u){
-function o(){for(var n=-1,c=arguments.length,a=-1,l=u.length,s=Du(l+c),h=this&&this!==Vt&&this instanceof o?f:t;++an||e)&&(1&t&&(o[2]=h[2],n|=1&r?0:4),(r=h[3])&&(e=o[3],o[3]=e?Rr(e,r,h[4]):r,o[4]=e?D(o[3],"__lodash_placeholder__"):h[4]),
-(r=h[5])&&(e=o[5],o[5]=e?Ir(e,r,h[6]):r,o[6]=e?D(o[5],"__lodash_placeholder__"):h[6]),(r=h[7])&&(o[7]=r),128&t&&(o[8]=null==o[8]?h[8]:wo(o[8],h[8])),null==o[9]&&(o[9]=h[9]),o[0]=h[0],o[1]=n),t=o[0],n=o[1],r=o[2],e=o[3],u=o[4],f=o[9]=null==o[9]?c?0:t.length:jo(o[9]-a,0),!f&&24&n&&(n&=-25),ii((h?Ho:oi)(n&&1!=n?8==n||16==n?Nr(t,n,f):32!=n&&33!=n||u.length?qr.apply(P,o):Yr(t,n,r,e):Dr(t,n,r),o),t,n)}function ee(t,n,r,e,u,o){var i=2&u,f=t.length,c=n.length;if(f!=c&&!(i&&c>f))return false;if((c=o.get(t))&&o.get(n))return c==n;
-var c=-1,a=true,l=1&u?new Yt:P;for(o.set(t,n),o.set(n,t);++cn?0:n,e)):[]}function Ie(t,n,r){var e=t?t.length:0;return e?(n=r||n===P?1:gu(n),n=e-n,sr(t,0,0>n?0:n)):[]}function We(t,n,r){var e=t?t.length:0;
-return e?(r=null==r?0:gu(r),0>r&&(r=jo(e+r,0)),g(t,fe(n,3),r)):-1}function Be(t,n,r){var e=t?t.length:0;if(!e)return-1;var u=e-1;return r!==P&&(u=gu(r),u=0>r?jo(e+u,0):wo(u,e-1)),g(t,fe(n,3),u,true)}function Me(t){return t&&t.length?t[0]:P}function Ce(t){var n=t?t.length:0;return n?t[n-1]:P}function Le(t,n){return t&&t.length&&n&&n.length?or(t,n):t}function ze(t){return t?ko.call(t):t}function Ue(t){if(!t||!t.length)return[];var n=0;return t=f(t,function(t){if(eu(t))return n=jo(t.length,n),true}),k(n,function(n){
-return l(t,j(n))})}function De(t,n){if(!t||!t.length)return[];var e=Ue(t);return null==n?e:l(e,function(t){return r(n,P,t)})}function $e(t){return t=It(t),t.__chain__=true,t}function Fe(t,n){return n(t)}function Te(){return this}function Ne(t,n){return(Zi(t)?u:Vo)(t,fe(n,3))}function Pe(t,n){return(Zi(t)?o:Ko)(t,fe(n,3))}function Ze(t,n){return(Zi(t)?l:Yn)(t,fe(n,3))}function qe(t,n,r){var e=-1,u=_u(t),o=u.length,i=o-1;for(n=(r?ye(t,n,r):n===P)?1:gn(gu(n),0,o);++e=t&&(n=P),r}}function Je(t,n,r){return n=r?P:n,t=re(t,8,P,P,P,P,P,n),t.placeholder=Je.placeholder,t}function Ye(t,n,r){return n=r?P:n,t=re(t,16,P,P,P,P,P,n),t.placeholder=Ye.placeholder,t}function He(t,n,r){function e(n){
-var r=c,e=a;return c=a=P,_=n,s=t.apply(e,r)}function u(t){var r=t-p;return t-=_,p===P||r>=n||0>r||g&&t>=l}function o(){var t=Ve();if(u(t))return i(t);var r;r=t-_,t=n-(t-p),r=g?wo(t,l-r):t,h=Rt(o,r)}function i(t){return h=P,d&&c?e(t):(c=a=P,s)}function f(){var t=Ve(),r=u(t);if(c=arguments,a=this,p=t,r){if(h===P)return _=t=p,h=Rt(o,n),v?e(t):s;if(g)return h=Rt(o,n),e(p)}return h===P&&(h=Rt(o,n)),s}var c,a,l,s,h,p,_=0,v=false,g=false,d=true;if(typeof t!="function")throw new Pu("Expected a function");return n=yu(n)||0,
-cu(r)&&(v=!!r.leading,l=(g="maxWait"in r)?jo(yu(r.maxWait)||0,n):l,d="trailing"in r?!!r.trailing:d),f.cancel=function(){h!==P&&w.clearTimeout.call(Vt,h),_=0,c=p=a=h=P},f.flush=function(){return h===P?s:i(Ve())},f}function Qe(t,n){function r(){var e=arguments,u=n?n.apply(this,e):e[0],o=r.cache;return o.has(u)?o.get(u):(e=t.apply(this,e),r.cache=o.set(u,e),e)}if(typeof t!="function"||n&&typeof n!="function")throw new Pu("Expected a function");return r.cache=new(Qe.Cache||Gt),r}function Xe(t){if(typeof t!="function")throw new Pu("Expected a function");
-return function(){var n=arguments;switch(n.length){case 0:return!t.call(this);case 1:return!t.call(this,n[0]);case 2:return!t.call(this,n[0],n[1]);case 3:return!t.call(this,n[0],n[1],n[2])}return!t.apply(this,n)}}function tu(t,n){return t===n||t!==t&&n!==n}function nu(t){return eu(t)&&Yu.call(t,"callee")&&(!ao.call(t,"callee")||"[object Arguments]"==Xu.call(t))}function ru(t){return null!=t&&fu(ti(t))&&!ou(t)}function eu(t){return au(t)&&ru(t)}function uu(t){return!!au(t)&&("[object Error]"==Xu.call(t)||typeof t.message=="string"&&typeof t.name=="string");
-}function ou(t){return t=cu(t)?Xu.call(t):"","[object Function]"==t||"[object GeneratorFunction]"==t}function iu(t){return typeof t=="number"&&t==gu(t)}function fu(t){return typeof t=="number"&&-1=t}function cu(t){var n=typeof t;return!!t&&("object"==n||"function"==n)}function au(t){return!!t&&typeof t=="object"}function lu(t){return typeof t=="number"||au(t)&&"[object Number]"==Xu.call(t)}function su(t){return!(!au(t)||"[object Object]"!=Xu.call(t)||C(t))&&(t=ni(t),null===t||(t=Yu.call(t,"constructor")&&t.constructor,
-typeof t=="function"&&t instanceof t&&Ju.call(t)==Qu))}function hu(t){return typeof t=="string"||!Zi(t)&&au(t)&&"[object String]"==Xu.call(t)}function pu(t){return typeof t=="symbol"||au(t)&&"[object Symbol]"==Xu.call(t)}function _u(t){if(!t)return[];if(ru(t))return hu(t)?t.match(Mt):Wr(t);if(fo&&t[fo])return L(t[fo]());var n=St(t);return("[object Map]"==n?z:"[object Set]"==n?$:ku)(t)}function vu(t){return t?(t=yu(t),t===Z||t===-Z?1.7976931348623157e308*(0>t?-1:1):t===t?t:0):0===t?t:0}function gu(t){
-t=vu(t);var n=t%1;return t===t?n?t-n:t:0}function du(t){return t?gn(gu(t),0,4294967295):0}function yu(t){if(typeof t=="number")return t;if(pu(t))return q;if(cu(t)&&(t=ou(t.valueOf)?t.valueOf():t,t=cu(t)?t+"":t),typeof t!="string")return 0===t?t:+t;t=t.replace(at,"");var n=jt.test(t);return n||mt.test(t)?Pt(t.slice(2),n?2:8):xt.test(t)?q:+t}function bu(t){return Br(t,Au(t))}function xu(t){return null==t?"":dr(t)}function ju(t,n,r){return t=null==t?P:In(t,n),t===P?r:t}function wu(t,n){return null!=t&&se(t,n,Cn);
-}function mu(t){var n=je(t);if(!n&&!ru(t))return Yo(t);var r,e=ve(t),u=!!e,e=e||[],o=e.length;for(r in t)!Mn(t,r)||u&&("length"==r||de(r,o))||n&&"constructor"==r||e.push(r);return e}function Au(t){for(var n=-1,r=je(t),e=Gn(t),u=e.length,o=ve(t),i=!!o,o=o||[],f=o.length;++nt)&&(t==n.length-1?n.pop():lo.call(n,t,1),true)},Kt.prototype.get=function(t){var n=this.__data__;return t=hn(n,t),0>t?P:n[t][1]},Kt.prototype.has=function(t){return-1e?r.push([t,n]):r[e][1]=n,this},Gt.prototype.clear=function(){this.__data__={hash:new qt,map:new(Ro||Kt),string:new qt}},Gt.prototype.delete=function(t){return ce(this,t).delete(t)},Gt.prototype.get=function(t){return ce(this,t).get(t);
-},Gt.prototype.has=function(t){return ce(this,t).has(t)},Gt.prototype.set=function(t,n){return ce(this,t).set(t,n),this},Yt.prototype.add=Yt.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},Yt.prototype.has=function(t){return this.__data__.has(t)},cn.prototype.clear=function(){this.__data__=new Kt},cn.prototype.delete=function(t){return this.__data__.delete(t)},cn.prototype.get=function(t){return this.__data__.get(t)},cn.prototype.has=function(t){return this.__data__.has(t);
-},cn.prototype.set=function(t,n){var r=this.__data__;if(r instanceof Kt){if(r=r.__data__,!Ro||199>r.length)return r.push([t,n]),this;r=this.__data__=new Gt(r)}return r.set(t,n),this};var Vo=zr(En),Ko=zr(Sn,true),Go=Ur(),Jo=Ur(true),Yo=U(xo);io&&!ao.call({valueOf:1},"valueOf")&&(Gn=function(t){return L(io(t))});var Ho=Lo?function(t,n){return Lo.set(t,n),t}:Wu,Qo=Wo&&1/$(new Wo([,-0]))[1]==Z?function(t){return new Wo(t)}:Cu,Xo=Lo?function(t){return Lo.get(t)}:Cu,ti=j("length"),ni=U(_o),ri=vo?U(vo):zu,ei=vo?function(t){
-for(var n=[];t;)s(n,ri(t)),t=ni(t);return n}:zu;(So&&"[object DataView]"!=St(new So(new ArrayBuffer(1)))||Ro&&"[object Map]"!=St(new Ro)||Io&&"[object Promise]"!=St(Io.resolve())||Wo&&"[object Set]"!=St(new Wo)||Bo&&"[object WeakMap]"!=St(new Bo))&&(St=function(t){var n=Xu.call(t);if(t=(t="[object Object]"==n?t.constructor:P)?ke(t):P)switch(t){case Do:return"[object DataView]";case $o:return"[object Map]";case Fo:return"[object Promise]";case To:return"[object Set]";case No:return"[object WeakMap]";
-}return n});var ui=Ku?ou:Uu,oi=function(){var t=0,n=0;return function(r,e){var u=Ve(),o=16-(u-n);if(n=u,0=n}),Zi=Du.isArray,qi=Ht?S(Ht):Dn,Vi=go||Uu,Ki=Qt?S(Qt):$n,Gi=Xt?S(Xt):Tn,Ji=tn?S(tn):Zn,Yi=nn?S(nn):qn,Hi=rn?S(rn):Vn,Qi=Qr(Jn),Xi=Qr(function(t,n){return t<=n}),tf=Lr(function(t,n){if(zo||je(n)||ru(n))Br(n,mu(n),t);else for(var r in n)Yu.call(n,r)&&sn(t,r,n[r])}),nf=Lr(function(t,n){
-if(zo||je(n)||ru(n))Br(n,Au(n),t);else for(var r in n)sn(t,r,n[r])}),rf=Lr(function(t,n,r,e){Br(n,Au(n),t,e)}),ef=Lr(function(t,n,r,e){Br(n,mu(n),t,e)}),uf=ar(function(t,n){return vn(t,kn(n,1))}),of=ar(function(t){return t.push(P,an),r(rf,P,t)}),ff=ar(function(t){return t.push(P,me),r(hf,P,t)}),cf=Vr(function(t,n,r){t[n]=r},Iu(Wu)),af=Vr(function(t,n,r){Yu.call(t,n)?t[n].push(r):t[n]=[r]},fe),lf=ar(Un),sf=Lr(function(t,n,r){Xn(t,n,r)}),hf=Lr(function(t,n,r,e){Xn(t,n,r,e)}),pf=ar(function(t,n){return null==t?{}:(n=l(kn(n,1),Oe),
-rr(t,wn(Wn(t,Au,ei),n)))}),_f=ar(function(t,n){return null==t?{}:rr(t,l(kn(n,1),Oe))}),vf=ne(mu),gf=ne(Au),df=Fr(function(t,n,r){return n=n.toLowerCase(),t+(r?Eu(n):n)}),yf=Fr(function(t,n,r){return t+(r?"-":"")+n.toLowerCase()}),bf=Fr(function(t,n,r){return t+(r?" ":"")+n.toLowerCase()}),xf=$r("toLowerCase"),jf=Fr(function(t,n,r){return t+(r?"_":"")+n.toLowerCase()}),wf=Fr(function(t,n,r){return t+(r?" ":"")+Af(n)}),mf=Fr(function(t,n,r){return t+(r?" ":"")+n.toUpperCase()}),Af=$r("toUpperCase"),Of=ar(function(t,n){
-try{return r(t,P,n)}catch(t){return uu(t)?t:new Fu(t)}}),kf=ar(function(t,n){return u(kn(n,1),function(n){n=Oe(n),t[n]=Ci(t[n],t)}),t}),Ef=Zr(),Sf=Zr(true),Rf=ar(function(t,n){return function(r){return Un(r,t,n)}}),If=ar(function(t,n){return function(r){return Un(t,r,n)}}),Wf=Gr(l),Bf=Gr(i),Mf=Gr(_),Cf=Hr(),Lf=Hr(true),zf=Kr(function(t,n){return t+n},0),Uf=te("ceil"),Df=Kr(function(t,n){return t/n},1),$f=te("floor"),Ff=Kr(function(t,n){return t*n},1),Tf=te("round"),Nf=Kr(function(t,n){return t-n},0);return It.after=function(t,n){
-if(typeof n!="function")throw new Pu("Expected a function");return t=gu(t),function(){if(1>--t)return n.apply(this,arguments)}},It.ary=Ke,It.assign=tf,It.assignIn=nf,It.assignInWith=rf,It.assignWith=ef,It.at=uf,It.before=Ge,It.bind=Ci,It.bindAll=kf,It.bindKey=Li,It.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Zi(t)?t:[t]},It.chain=$e,It.chunk=function(t,n,r){if(n=(r?ye(t,n,r):n===P)?1:jo(gu(n),0),r=t?t.length:0,!r||1>n)return[];for(var e=0,u=0,o=Du(ho(r/n));er&&(r=-r>u?0:u+r),e=e===P||e>u?u:gu(e),0>e&&(e+=u),e=r>e?0:du(e);r>>0,r?(t=xu(t))&&(typeof n=="string"||null!=n&&!Ji(n))&&(n=dr(n),""==n&&Lt.test(t))?Or(t.match(Mt),0,r):Eo.call(t,n,r):[]},It.spread=function(t,n){if(typeof t!="function")throw new Pu("Expected a function");return n=n===P?0:jo(gu(n),0),ar(function(e){var u=e[n];return e=Or(e,0,n),u&&s(e,u),r(t,this,e)})},It.tail=function(t){return Re(t,1)},It.take=function(t,n,r){return t&&t.length?(n=r||n===P?1:gu(n),
-sr(t,0,0>n?0:n)):[]},It.takeRight=function(t,n,r){var e=t?t.length:0;return e?(n=r||n===P?1:gu(n),n=e-n,sr(t,0>n?0:n,e)):[]},It.takeRightWhile=function(t,n){return t&&t.length?br(t,fe(n,3),false,true):[]},It.takeWhile=function(t,n){return t&&t.length?br(t,fe(n,3)):[]},It.tap=function(t,n){return n(t),t},It.throttle=function(t,n,r){var e=true,u=true;if(typeof t!="function")throw new Pu("Expected a function");return cu(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),He(t,n,{leading:e,maxWait:n,
-trailing:u})},It.thru=Fe,It.toArray=_u,It.toPairs=vf,It.toPairsIn=gf,It.toPath=function(t){return Zi(t)?l(t,Oe):pu(t)?[t]:Wr(fi(t))},It.toPlainObject=bu,It.transform=function(t,n,r){var e=Zi(t)||Hi(t);if(n=fe(n,4),null==r)if(e||cu(t)){var o=t.constructor;r=e?Zi(t)?new o:[]:ou(o)?xn(ni(t)):{}}else r={};return(e?u:En)(t,function(t,e,u){return n(r,t,e,u)}),r},It.unary=function(t){return Ke(t,1)},It.union=gi,It.unionBy=di,It.unionWith=yi,It.uniq=function(t){return t&&t.length?yr(t):[]},It.uniqBy=function(t,n){
-return t&&t.length?yr(t,fe(n,2)):[]},It.uniqWith=function(t,n){return t&&t.length?yr(t,P,n):[]},It.unset=function(t,n){var r;if(null==t)r=true;else{r=t;var e=n,e=be(e,r)?[e]:Ar(e);r=Ae(r,e),e=Oe(Ce(e)),r=!(null!=r&&Mn(r,e))||delete r[e]}return r},It.unzip=Ue,It.unzipWith=De,It.update=function(t,n,r){return null==t?t:lr(t,n,(typeof r=="function"?r:Wu)(In(t,n)),void 0)},It.updateWith=function(t,n,r,e){return e=typeof e=="function"?e:P,null!=t&&(t=lr(t,n,(typeof r=="function"?r:Wu)(In(t,n)),e)),t},It.values=ku,
-It.valuesIn=function(t){return null==t?[]:R(t,Au(t))},It.without=bi,It.words=Ru,It.wrap=function(t,n){return n=null==n?Wu:n,$i(n,t)},It.xor=xi,It.xorBy=ji,It.xorWith=wi,It.zip=mi,It.zipObject=function(t,n){return wr(t||[],n||[],sn)},It.zipObjectDeep=function(t,n){return wr(t||[],n||[],lr)},It.zipWith=Ai,It.entries=vf,It.entriesIn=gf,It.extend=nf,It.extendWith=rf,Mu(It,It),It.add=zf,It.attempt=Of,It.camelCase=df,It.capitalize=Eu,It.ceil=Uf,It.clamp=function(t,n,r){return r===P&&(r=n,n=P),r!==P&&(r=yu(r),
-r=r===r?r:0),n!==P&&(n=yu(n),n=n===n?n:0),gn(yu(t),n,r)},It.clone=function(t){return dn(t,false,true)},It.cloneDeep=function(t){return dn(t,true,true)},It.cloneDeepWith=function(t,n){return dn(t,true,true,n)},It.cloneWith=function(t,n){return dn(t,false,true,n)},It.conformsTo=function(t,n){return null==n||bn(t,n,mu(n))},It.deburr=Su,It.defaultTo=function(t,n){return null==t||t!==t?n:t},It.divide=Df,It.endsWith=function(t,n,r){t=xu(t),n=dr(n);var e=t.length,e=r=r===P?e:gn(gu(r),0,e);return r-=n.length,0<=r&&t.slice(r,e)==n;
-},It.eq=tu,It.escape=function(t){return(t=xu(t))&&X.test(t)?t.replace(H,un):t},It.escapeRegExp=function(t){return(t=xu(t))&&ct.test(t)?t.replace(ft,"\\$&"):t},It.every=function(t,n,r){var e=Zi(t)?i:mn;return r&&ye(t,n,r)&&(n=P),e(t,fe(n,3))},It.find=Ei,It.findIndex=We,It.findKey=function(t,n){return v(t,fe(n,3),En)},It.findLast=Si,It.findLastIndex=Be,It.findLastKey=function(t,n){return v(t,fe(n,3),Sn)},It.floor=$f,It.forEach=Ne,It.forEachRight=Pe,It.forIn=function(t,n){return null==t?t:Go(t,fe(n,3),Au);
-},It.forInRight=function(t,n){return null==t?t:Jo(t,fe(n,3),Au)},It.forOwn=function(t,n){return t&&En(t,fe(n,3))},It.forOwnRight=function(t,n){return t&&Sn(t,fe(n,3))},It.get=ju,It.gt=Ni,It.gte=Pi,It.has=function(t,n){return null!=t&&se(t,n,Mn)},It.hasIn=wu,It.head=Me,It.identity=Wu,It.includes=function(t,n,r,e){return t=ru(t)?t:ku(t),r=r&&!e?gu(r):0,e=t.length,0>r&&(r=jo(e+r,0)),hu(t)?r<=e&&-1r&&(r=jo(e+r,0)),d(t,n,r)):-1},It.inRange=function(t,n,r){return n=vu(n),r===P?(r=n,n=0):r=vu(r),t=yu(t),t>=wo(n,r)&&t=t},It.isSet=Yi,It.isString=hu,
-It.isSymbol=pu,It.isTypedArray=Hi,It.isUndefined=function(t){return t===P},It.isWeakMap=function(t){return au(t)&&"[object WeakMap]"==St(t)},It.isWeakSet=function(t){return au(t)&&"[object WeakSet]"==Xu.call(t)},It.join=function(t,n){return t?bo.call(t,n):""},It.kebabCase=yf,It.last=Ce,It.lastIndexOf=function(t,n,r){var e=t?t.length:0;if(!e)return-1;var u=e;if(r!==P&&(u=gu(r),u=(0>u?jo(e+u,0):wo(u,e-1))+1),n!==n)return g(t,b,u-1,true);for(;u--;)if(t[u]===n)return u;return-1},It.lowerCase=bf,It.lowerFirst=xf,
-It.lt=Qi,It.lte=Xi,It.max=function(t){return t&&t.length?An(t,Wu,Bn):P},It.maxBy=function(t,n){return t&&t.length?An(t,fe(n,2),Bn):P},It.mean=function(t){return x(t,Wu)},It.meanBy=function(t,n){return x(t,fe(n,2))},It.min=function(t){return t&&t.length?An(t,Wu,Jn):P},It.minBy=function(t,n){return t&&t.length?An(t,fe(n,2),Jn):P},It.stubArray=zu,It.stubFalse=Uu,It.stubObject=function(){return{}},It.stubString=function(){return""},It.stubTrue=function(){return true},It.multiply=Ff,It.nth=function(t,n){
-return t&&t.length?tr(t,gu(n)):P},It.noConflict=function(){return Vt._===this&&(Vt._=to),this},It.noop=Cu,It.now=Ve,It.pad=function(t,n,r){t=xu(t);var e=(n=gu(n))?T(t):0;return!n||e>=n?t:(n=(n-e)/2,Jr(po(n),r)+t+Jr(ho(n),r))},It.padEnd=function(t,n,r){t=xu(t);var e=(n=gu(n))?T(t):0;return n&&en){var e=t;t=n,n=e}return r||t%1||n%1?(r=Ao(),wo(t+r*(n-t+Nt("1e-"+((r+"").length-1))),n)):fr(t,n)},It.reduce=function(t,n,r){var e=Zi(t)?h:m,u=3>arguments.length;return e(t,fe(n,4),r,u,Vo)},It.reduceRight=function(t,n,r){var e=Zi(t)?p:m,u=3>arguments.length;return e(t,fe(n,4),r,u,Ko)},It.repeat=function(t,n,r){
-return n=(r?ye(t,n,r):n===P)?1:gu(n),cr(xu(t),n)},It.replace=function(){var t=arguments,n=xu(t[0]);return 3>t.length?n:Oo.call(n,t[1],t[2])},It.result=function(t,n,r){n=be(n,t)?[n]:Ar(n);var e=-1,u=n.length;for(u||(t=P,u=1);++et||9007199254740991=o)return t;if(o=r-T(e),1>o)return e;if(r=i?Or(i,0,o).join(""):t.slice(0,o),u===P)return r+e;if(i&&(o+=r.length-o),Ji(u)){if(t.slice(o).search(u)){var f=r;for(u.global||(u=Nu(u.source,xu(yt.exec(u))+"g")),
-u.lastIndex=0;i=u.exec(f);)var c=i.index;r=r.slice(0,c===P?o:c)}}else t.indexOf(dr(u),o)!=o&&(u=r.lastIndexOf(u),-1u.__dir__?"Right":"")}),u},Zt.prototype[t+"Right"]=function(n){return this.reverse()[t](n).reverse()}}),u(["filter","map","takeWhile"],function(t,n){var r=n+1,e=1==r||3==r;Zt.prototype[t]=function(t){var n=this.clone();return n.__iteratees__.push({
-iteratee:fe(t,3),type:r}),n.__filtered__=n.__filtered__||e,n}}),u(["head","last"],function(t,n){var r="take"+(n?"Right":"");Zt.prototype[t]=function(){return this[r](1).value()[0]}}),u(["initial","tail"],function(t,n){var r="drop"+(n?"":"Right");Zt.prototype[t]=function(){return this.__filtered__?new Zt(this):this[r](1)}}),Zt.prototype.compact=function(){return this.filter(Wu)},Zt.prototype.find=function(t){return this.filter(t).head()},Zt.prototype.findLast=function(t){return this.reverse().find(t);
-},Zt.prototype.invokeMap=ar(function(t,n){return typeof t=="function"?new Zt(this):this.map(function(r){return Un(r,t,n)})}),Zt.prototype.reject=function(t){return this.filter(Xe(fe(t)))},Zt.prototype.slice=function(t,n){t=gu(t);var r=this;return r.__filtered__&&(0n)?new Zt(r):(0>t?r=r.takeRight(-t):t&&(r=r.drop(t)),n!==P&&(n=gu(n),r=0>n?r.dropRight(-n):r.take(n-t)),r)},Zt.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},Zt.prototype.toArray=function(){return this.take(4294967295);
-},En(Zt.prototype,function(t,n){var r=/^(?:filter|find|map|reject)|While$/.test(n),e=/^(?:head|last)$/.test(n),u=It[e?"take"+("last"==n?"Right":""):n],o=e||/^find/.test(n);u&&(It.prototype[n]=function(){function n(t){return t=u.apply(It,s([t],f)),e&&h?t[0]:t}var i=this.__wrapped__,f=e?[1]:arguments,c=i instanceof Zt,a=f[0],l=c||Zi(i);l&&r&&typeof a=="function"&&1!=a.length&&(c=l=false);var h=this.__chain__,p=!!this.__actions__.length,a=o&&!h,c=c&&!p;return!o&&l?(i=c?i:new Zt(this),i=t.apply(i,f),i.__actions__.push({
-func:Fe,args:[n],thisArg:P}),new Tt(i,h)):a&&c?t.apply(this,f):(i=this.thru(n),a?e?i.value()[0]:i.value():i)})}),u("pop push shift sort splice unshift".split(" "),function(t){var n=Zu[t],r=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",e=/^(?:pop|shift)$/.test(t);It.prototype[t]=function(){var t=arguments;if(e&&!this.__chain__){var u=this.value();return n.apply(Zi(u)?u:[],t)}return this[r](function(r){return n.apply(Zi(r)?r:[],t)})}}),En(Zt.prototype,function(t,n){var r=It[n];if(r){var e=r.name+"";
-(Uo[e]||(Uo[e]=[])).push({name:n,func:r})}}),Uo[qr(P,2).name]=[{name:"wrapper",func:P}],Zt.prototype.clone=function(){var t=new Zt(this.__wrapped__);return t.__actions__=Wr(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Wr(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Wr(this.__views__),t},Zt.prototype.reverse=function(){if(this.__filtered__){var t=new Zt(this);t.__dir__=-1,t.__filtered__=true}else t=this.clone(),t.__dir__*=-1;return t;
-},Zt.prototype.value=function(){var t,n=this.__wrapped__.value(),r=this.__dir__,e=Zi(n),u=0>r,o=e?n.length:0;t=o;for(var i=this.__views__,f=0,c=-1,a=i.length;++co||o==t&&a==t)return xr(n,this.__actions__);e=[];t:for(;t--&&c=this.__values__.length,n=t?P:this.__values__[this.__index__++];return{done:t,value:n}},It.prototype.plant=function(t){
-for(var n,r=this;r instanceof Ft;){var e=Se(r);e.__index__=0,e.__values__=P,n?u.__wrapped__=e:n=e;var u=e,r=r.__wrapped__}return u.__wrapped__=t,n},It.prototype.reverse=function(){var t=this.__wrapped__;return t instanceof Zt?(this.__actions__.length&&(t=new Zt(this)),t=t.reverse(),t.__actions__.push({func:Fe,args:[ze],thisArg:P}),new Tt(t,this.__chain__)):this.thru(ze)},It.prototype.toJSON=It.prototype.valueOf=It.prototype.value=function(){return xr(this.__wrapped__,this.__actions__)},It.prototype.first=It.prototype.head,
-fo&&(It.prototype[fo]=Te),It}var P,Z=1/0,q=NaN,V=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],K=/\b__p\+='';/g,G=/\b(__p\+=)''\+/g,J=/(__e\(.*?\)|\b__t\))\+'';/g,Y=/&(?:amp|lt|gt|quot|#39|#96);/g,H=/[&<>"'`]/g,Q=RegExp(Y.source),X=RegExp(H.source),tt=/<%-([\s\S]+?)%>/g,nt=/<%([\s\S]+?)%>/g,rt=/<%=([\s\S]+?)%>/g,et=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ut=/^\w*$/,ot=/^\./,it=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ft=/[\\^$.*+?()[\]{}|]/g,ct=RegExp(ft.source),at=/^\s+|\s+$/g,lt=/^\s+/,st=/\s+$/,ht=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,pt=/\{\n\/\* \[wrapped with (.+)\] \*/,_t=/,? & /,vt=/[a-zA-Z0-9]+/g,gt=/\\(\\)?/g,dt=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,yt=/\w*$/,bt=/^0x/i,xt=/^[-+]0x[0-9a-f]+$/i,jt=/^0b[01]+$/i,wt=/^\[object .+?Constructor\]$/,mt=/^0o[0-7]+$/i,At=/^(?:0|[1-9]\d*)$/,Ot=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,kt=/($^)/,Et=/['\n\r\u2028\u2029\\]/g,St="[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?)*",Rt="(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])"+St,It="(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]?|[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])",Wt=RegExp("['\u2019]","g"),Bt=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]","g"),Mt=RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|"+It+St,"g"),Ct=RegExp(["[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+(?:['\u2019](?:d|ll|m|re|s|t|ve))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde]|$)|(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde](?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])|$)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?(?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:d|ll|m|re|s|t|ve))?|[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?|\\d+",Rt].join("|"),"g"),Lt=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0\\ufe0e\\ufe0f]"),zt=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Ut="Array Buffer DataView Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Map Math Object Promise Reflect RegExp Set String Symbol TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap _ clearTimeout isFinite parseInt setTimeout".split(" "),Dt={};
-Dt["[object Float32Array]"]=Dt["[object Float64Array]"]=Dt["[object Int8Array]"]=Dt["[object Int16Array]"]=Dt["[object Int32Array]"]=Dt["[object Uint8Array]"]=Dt["[object Uint8ClampedArray]"]=Dt["[object Uint16Array]"]=Dt["[object Uint32Array]"]=true,Dt["[object Arguments]"]=Dt["[object Array]"]=Dt["[object ArrayBuffer]"]=Dt["[object Boolean]"]=Dt["[object DataView]"]=Dt["[object Date]"]=Dt["[object Error]"]=Dt["[object Function]"]=Dt["[object Map]"]=Dt["[object Number]"]=Dt["[object Object]"]=Dt["[object RegExp]"]=Dt["[object Set]"]=Dt["[object String]"]=Dt["[object WeakMap]"]=false;
-var $t={};$t["[object Arguments]"]=$t["[object Array]"]=$t["[object ArrayBuffer]"]=$t["[object DataView]"]=$t["[object Boolean]"]=$t["[object Date]"]=$t["[object Float32Array]"]=$t["[object Float64Array]"]=$t["[object Int8Array]"]=$t["[object Int16Array]"]=$t["[object Int32Array]"]=$t["[object Map]"]=$t["[object Number]"]=$t["[object Object]"]=$t["[object RegExp]"]=$t["[object Set]"]=$t["[object String]"]=$t["[object Symbol]"]=$t["[object Uint8Array]"]=$t["[object Uint8ClampedArray]"]=$t["[object Uint16Array]"]=$t["[object Uint32Array]"]=true,
-$t["[object Error]"]=$t["[object Function]"]=$t["[object WeakMap]"]=false;var Ft,Tt={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Nt=parseFloat,Pt=parseInt,Zt=typeof global=="object"&&global&&global.Object===Object&&global,qt=typeof self=="object"&&self&&self.Object===Object&&self,Vt=Zt||qt||Function("return this")(),Kt=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Gt=Kt&&typeof module=="object"&&module&&!module.nodeType&&module,Jt=Gt&&Gt.exports===Kt,Yt=Jt&&Zt.h;
-t:{try{Ft=Yt&&Yt.f("util");break t}catch(t){}Ft=void 0}var Ht=Ft&&Ft.isArrayBuffer,Qt=Ft&&Ft.isDate,Xt=Ft&&Ft.isMap,tn=Ft&&Ft.isRegExp,nn=Ft&&Ft.isSet,rn=Ft&&Ft.isTypedArray,en=w({"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i",
-"\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss"}),un=w({"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"}),on=w({"&":"&","<":"<",">":">",""":'"',"'":"'",
-"`":"`"}),fn=N();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(Vt._=fn, define(function(){return fn})):Gt?((Gt.exports=fn)._=fn,Kt._=fn):Vt._=fn}).call(this);
\ No newline at end of file
+return-1}function y(t,n,r,e){--r;for(var u=t.length;++r=n?t:n)),t}function gn(t,n,r,e,o,i,f){var c;if(e&&(c=i?e(t,o,i,f):e(t)),c!==N)return c;if(!uu(t))return t;if(o=Fi(t)){if(c=he(t),!n)return Wr(t,c)}else{var a=Et(t),l="[object Function]"==a||"[object GeneratorFunction]"==a;if(Ni(t))return kr(t,n);if("[object Object]"==a||"[object Arguments]"==a||l&&!i){if(C(t))return i?t:{};if(c=pe(l?{}:t),!n)return Mr(t,pn(c,t));
+}else{if(!Ut[a])return i?t:{};c=_e(t,a,gn,n)}}if(f||(f=new Jt),i=f.get(t))return i;if(f.set(t,c),!o)var s=r?Rn(t,bu,Yo):bu(t);return u(s||t,function(u,o){s&&(o=u,u=t[o]),ln(c,o,gn(u,n,r,e,o,t,f))}),c}function dn(t){var n=bu(t);return function(r){return yn(r,t,n)}}function yn(t,n,r){var e=r.length;if(null==t)return!e;for(t=Object(t);e--;){var u=r[e],o=n[u],i=t[u];if(i===N&&!(u in t)||!o(i))return false}return true}function bn(t){return uu(t)?ro(t):{}}function xn(t,n,r){if(typeof t!="function")throw new Uu("Expected a function");
+return ti(function(){t.apply(N,r)},n)}function jn(t,n,r,e){var u=-1,o=c,i=true,f=t.length,s=[],h=n.length;if(!f)return s;r&&(n=l(n,S(r))),e?(o=a,i=false):200<=n.length&&(o=R,i=false,n=new Kt(n));t:for(;++un}function Bn(t,n){return null!=t&&qu.call(t,n)}function Mn(t,n){return null!=t&&n in Object(t)}function Cn(t,n,r){for(var e=r?a:c,u=t[0].length,o=t.length,i=o,f=Cu(o),s=1/0,h=[];i--;){var p=t[i];i&&n&&(p=l(p,S(n))),s=yo(p.length,s),f[i]=!r&&(n||120<=u&&120<=p.length)?new Kt(i&&p):N}var p=t[0],_=-1,v=f[0];t:for(;++_n?r:0,ge(n,r)?t[n]:N}function nr(t,n,r){var e=-1;return n=l(n.length?n:[Eu],S(fe())),t=Yn(t,function(t){return{a:l(n,function(n){return n(t)}),b:++e,c:t}}),A(t,function(t,n){var e;t:{e=-1;for(var u=t.a,o=n.a,i=u.length,f=r.length;++e=f?c:c*("desc"==r[e]?-1:1);break t}}e=t.b-n.b}return e})}function rr(t,n){return t=Object(t),er(t,n,function(n,r){return r in t})}function er(t,n,r){for(var e=-1,u=n.length,o={};++en||9007199254740991n&&(n=-n>u?0:u+n),r=r>u?u:r,0>r&&(r+=u),u=n>r?0:r-n>>>0,n>>>=0,r=Cu(u);++e=u){for(;e>>1,i=t[o];null!==i&&!au(i)&&(r?i<=n:i=e?t:sr(t,n,r)}function kr(t,n){if(n)return t.slice();var r=new t.constructor(t.length);return t.copy(r),r}function Er(t){var n=new t.constructor(t.byteLength);return new Xu(n).set(new Xu(t)),n}function Sr(t,n){if(t!==n){var r=t!==N,e=null===t,u=t===t,o=au(t),i=n!==N,f=null===n,c=n===n,a=au(n);if(!f&&!a&&!o&&t>n||o&&i&&c&&!f&&!a||e&&i&&c||!r&&c||!u)return 1;if(!e&&!o&&!a&&tu?N:o,u=1),n=Object(n);++ei&&f[0]!==a&&f[i-1]!==a?[]:z(f,a),i-=c.length,ir?r?cr(n,t):n:(r=cr(n,ao(t/F(n))),
+Ct.test(n)?Or(r.match(Bt),0,t).join(""):r.slice(0,t))}function Yr(t,n,e,u){function o(){for(var n=-1,c=arguments.length,a=-1,l=u.length,s=Cu(l+c),h=this&&this!==qt&&this instanceof o?f:t;++an||e)&&(1&t&&(o[2]=h[2],
+n|=1&r?0:4),(r=h[3])&&(e=o[3],o[3]=e?Ir(e,r,h[4]):r,o[4]=e?z(o[3],"__lodash_placeholder__"):h[4]),(r=h[5])&&(e=o[5],o[5]=e?Rr(e,r,h[6]):r,o[6]=e?z(o[5],"__lodash_placeholder__"):h[6]),(r=h[7])&&(o[7]=r),128&t&&(o[8]=null==o[8]?h[8]:yo(o[8],h[8])),null==o[9]&&(o[9]=h[9]),o[0]=h[0],o[1]=n),t=o[0],n=o[1],r=o[2],e=o[3],u=o[4],f=o[9]=null==o[9]?c?0:t.length:go(o[9]-a,0),!f&&24&n&&(n&=-25),ni((h?Vo:Xo)(n&&1!=n?8==n||16==n?Nr(t,n,f):32!=n&&33!=n||u.length?qr.apply(N,o):Yr(t,n,r,e):Ur(t,n,r),o),t,n)}function ee(t,n,r,e,u,o){
+var i=2&u,f=t.length,c=n.length;if(f!=c&&!(i&&c>f))return false;if((c=o.get(t))&&o.get(n))return c==n;var c=-1,a=true,l=1&u?new Kt:N;for(o.set(t,n),o.set(n,t);++cr&&(r=go(e+r,0)),g(t,fe(n,3),r)):-1}function Ie(t,n,r){var e=t?t.length:0;if(!e)return-1;var u=e-1;return r!==N&&(u=hu(r),u=0>r?go(e+u,0):yo(u,e-1)),
+g(t,fe(n,3),u,true)}function Re(t){return t&&t.length?t[0]:N}function We(t){var n=t?t.length:0;return n?t[n-1]:N}function Be(t,n){return t&&t.length&&n&&n.length?or(t,n):t}function Me(t){return t?mo.call(t):t}function Ce(t){if(!t||!t.length)return[];var n=0;return t=f(t,function(t){if(Xe(t))return n=go(t.length,n),true}),k(n,function(n){return l(t,j(n))})}function Le(t,n){if(!t||!t.length)return[];var e=Ce(t);return null==n?e:l(e,function(t){return r(n,N,t)})}function De(t){return t=St(t),t.__chain__=true,
+t}function ze(t,n){return n(t)}function Ue(){return this}function $e(t,n){return(Fi(t)?u:No)(t,fe(n,3))}function Fe(t,n){return(Fi(t)?o:Po)(t,fe(n,3))}function Te(t,n){return(Fi(t)?l:Yn)(t,fe(n,3))}function Ne(t,n,r){var e=-1,u=lu(t),o=u.length,i=o-1;for(n=(r?de(t,n,r):n===N)?1:vn(hu(n),0,o);++e=t&&(n=N),r}}function qe(t,n,r){return n=r?N:n,t=re(t,8,N,N,N,N,N,n),t.placeholder=qe.placeholder,t}function Ve(t,n,r){return n=r?N:n,t=re(t,16,N,N,N,N,N,n),t.placeholder=Ve.placeholder,t}function Ke(t,n,r){function e(n){var r=c,e=a;return c=a=N,_=n,s=t.apply(e,r)}function u(t){var r=t-p;return t-=_,p===N||r>=n||0>r||g&&t>=l}function o(){var t=Ii();if(u(t))return i(t);var r,e=ti;r=t-_,t=n-(t-p),r=g?yo(t,l-r):t,h=e(o,r)}function i(t){
+return h=N,d&&c?e(t):(c=a=N,s)}function f(){var t=Ii(),r=u(t);if(c=arguments,a=this,p=t,r){if(h===N)return _=t=p,h=ti(o,n),v?e(t):s;if(g)return h=ti(o,n),e(p)}return h===N&&(h=ti(o,n)),s}var c,a,l,s,h,p,_=0,v=false,g=false,d=true;if(typeof t!="function")throw new Uu("Expected a function");return n=_u(n)||0,uu(r)&&(v=!!r.leading,l=(g="maxWait"in r)?go(_u(r.maxWait)||0,n):l,d="trailing"in r?!!r.trailing:d),f.cancel=function(){h!==N&&Ko(h),_=0,c=p=a=h=N},f.flush=function(){return h===N?s:i(Ii())},f}function Ge(t,n){
+function r(){var e=arguments,u=n?n.apply(this,e):e[0],o=r.cache;return o.has(u)?o.get(u):(e=t.apply(this,e),r.cache=o.set(u,e),e)}if(typeof t!="function"||n&&typeof n!="function")throw new Uu("Expected a function");return r.cache=new(Ge.Cache||Vt),r}function Je(t){if(typeof t!="function")throw new Uu("Expected a function");return function(){var n=arguments;switch(n.length){case 0:return!t.call(this);case 1:return!t.call(this,n[0]);case 2:return!t.call(this,n[0],n[1]);case 3:return!t.call(this,n[0],n[1],n[2]);
+}return!t.apply(this,n)}}function Ye(t,n){return t===n||t!==t&&n!==n}function He(t){return Xe(t)&&qu.call(t,"callee")&&(!eo.call(t,"callee")||"[object Arguments]"==Gu.call(t))}function Qe(t){return null!=t&&eu(t.length)&&!nu(t)}function Xe(t){return ou(t)&&Qe(t)}function tu(t){return!!ou(t)&&("[object Error]"==Gu.call(t)||typeof t.message=="string"&&typeof t.name=="string")}function nu(t){return t=uu(t)?Gu.call(t):"","[object Function]"==t||"[object GeneratorFunction]"==t}function ru(t){return typeof t=="number"&&t==hu(t);
+}function eu(t){return typeof t=="number"&&-1=t}function uu(t){var n=typeof t;return!!t&&("object"==n||"function"==n)}function ou(t){return!!t&&typeof t=="object"}function iu(t){return typeof t=="number"||ou(t)&&"[object Number]"==Gu.call(t)}function fu(t){return!(!ou(t)||"[object Object]"!=Gu.call(t)||C(t))&&(t=to(t),null===t||(t=qu.call(t,"constructor")&&t.constructor,typeof t=="function"&&t instanceof t&&Zu.call(t)==Ku))}function cu(t){return typeof t=="string"||!Fi(t)&&ou(t)&&"[object String]"==Gu.call(t);
+}function au(t){return typeof t=="symbol"||ou(t)&&"[object Symbol]"==Gu.call(t)}function lu(t){if(!t)return[];if(Qe(t))return cu(t)?t.match(Bt):Wr(t);if(no&&t[no]){t=t[no]();for(var n,r=[];!(n=t.next()).done;)r.push(n.value);return r}return n=Et(t),("[object Map]"==n?L:"[object Set]"==n?U:mu)(t)}function su(t){return t?(t=_u(t),t===P||t===-P?1.7976931348623157e308*(0>t?-1:1):t===t?t:0):0===t?t:0}function hu(t){t=su(t);var n=t%1;return t===t?n?t-n:t:0}function pu(t){return t?vn(hu(t),0,4294967295):0;
+}function _u(t){if(typeof t=="number")return t;if(au(t))return Z;if(uu(t)&&(t=nu(t.valueOf)?t.valueOf():t,t=uu(t)?t+"":t),typeof t!="string")return 0===t?t:+t;t=t.replace(ct,"");var n=xt.test(t);return n||mt.test(t)?Nt(t.slice(2),n?2:8):bt.test(t)?Z:+t}function vu(t){return Br(t,xu(t))}function gu(t){return null==t?"":dr(t)}function du(t,n,r){return t=null==t?N:In(t,n),t===N?r:t}function yu(t,n){return null!=t&&se(t,n,Mn)}function bu(t){return Qe(t)?fn(t):Kn(t)}function xu(t){return Qe(t)?fn(t,true):Gn(t);
+}function ju(t,n){return null==t?{}:er(t,Rn(t,xu,Ho),fe(n))}function mu(t){return t?I(t,bu(t)):[]}function wu(t){return xf(gu(t).toLowerCase())}function Au(t){return(t=gu(t))&&t.replace(At,rn).replace(Wt,"")}function Ou(t,n,r){return t=gu(t),n=r?N:n,n===N&&(n=Lt.test(t)?Mt:_t),t.match(n)||[]}function ku(t){return function(){return t}}function Eu(t){return t}function Su(t){return Vn(typeof t=="function"?t:gn(t,true))}function Iu(t,n,r){var e=bu(n),o=Sn(n,e);null!=r||uu(n)&&(o.length||!e.length)||(r=n,
+n=t,t=this,o=Sn(n,bu(n)));var i=!(uu(r)&&"chain"in r&&!r.chain),f=nu(t);return u(o,function(r){var e=n[r];t[r]=e,f&&(t.prototype[r]=function(){var n=this.__chain__;if(i||n){var r=t(this.__wrapped__);return(r.__actions__=Wr(this.__actions__)).push({func:e,args:arguments,thisArg:t}),r.__chain__=n,r}return e.apply(t,s([this.value()],arguments))})}),t}function Ru(){}function Wu(t){return ye(t)?j(Ae(t)):ur(t)}function Bu(){return[]}function Mu(){return false}m=m?on.defaults({},m,on.pick(qt,Dt)):qt;var Cu=m.Array,Lu=m.Error,Du=m.Math,zu=m.RegExp,Uu=m.TypeError,$u=m.Array.prototype,Fu=m.Object.prototype,Tu=m.String.prototype,Nu=m["__core-js_shared__"],Pu=function(){
+var t=/[^.]+$/.exec(Nu&&Nu.keys&&Nu.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),Zu=m.Function.prototype.toString,qu=Fu.hasOwnProperty,Vu=0,Ku=Zu.call(Object),Gu=Fu.toString,Ju=qt._,Yu=zu("^"+Zu.call(qu).replace(it,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Hu=Gt?m.Buffer:N,Qu=m.Symbol,Xu=m.Uint8Array,to=D(Object.getPrototypeOf),no=Qu?Qu.iterator:N,ro=m.Object.create,eo=Fu.propertyIsEnumerable,uo=$u.splice,oo=Qu?Qu.isConcatSpreadable:N,io=m.clearTimeout!==qt.clearTimeout&&m.clearTimeout,fo=m.Date&&m.Date.now!==qt.Date.now&&m.Date.now,co=m.setTimeout!==qt.setTimeout&&m.setTimeout,ao=Du.ceil,lo=Du.floor,so=Object.getOwnPropertySymbols,ho=Hu?Hu.isBuffer:N,po=m.isFinite,_o=$u.join,vo=D(Object.keys),go=Du.max,yo=Du.min,bo=m.parseInt,xo=Du.random,jo=Tu.replace,mo=$u.reverse,wo=Tu.split,Ao=le(m,"DataView"),Oo=le(m,"Map"),ko=le(m,"Promise"),Eo=le(m,"Set"),So=le(m,"WeakMap"),Io=le(m.Object,"create"),Ro=function(){
+var t=le(m.Object,"defineProperty"),n=le.name;return n&&2t)&&(t==n.length-1?n.pop():uo.call(n,t,1),true)},Zt.prototype.get=function(t){var n=this.__data__;return t=sn(n,t),0>t?N:n[t][1]},Zt.prototype.has=function(t){return-1e?r.push([t,n]):r[e][1]=n,this},Vt.prototype.clear=function(){this.__data__={hash:new Pt,map:new(Oo||Zt),string:new Pt}},Vt.prototype.delete=function(t){return ce(this,t).delete(t)},Vt.prototype.get=function(t){return ce(this,t).get(t);
+},Vt.prototype.has=function(t){return ce(this,t).has(t)},Vt.prototype.set=function(t,n){return ce(this,t).set(t,n),this},Kt.prototype.add=Kt.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},Kt.prototype.has=function(t){return this.__data__.has(t)},Jt.prototype.clear=function(){this.__data__=new Zt},Jt.prototype.delete=function(t){return this.__data__.delete(t)},Jt.prototype.get=function(t){return this.__data__.get(t)},Jt.prototype.has=function(t){return this.__data__.has(t);
+},Jt.prototype.set=function(t,n){var r=this.__data__;if(r instanceof Zt){if(r=r.__data__,!Oo||199>r.length)return r.push([t,n]),this;r=this.__data__=new Vt(r)}return r.set(t,n),this};var No=Dr(kn),Po=Dr(En,true),Zo=zr(),qo=zr(true),Vo=Wo?function(t,n){return Wo.set(t,n),t}:Eu,Ko=io||function(t){return qt.clearTimeout(t)},Go=Eo&&1/U(new Eo([,-0]))[1]==P?function(t){return new Eo(t)}:Ru,Jo=Wo?function(t){return Wo.get(t)}:Ru,Yo=so?D(so):Bu,Ho=so?function(t){for(var n=[];t;)s(n,Yo(t)),t=to(t);return n}:Bu;
+(Ao&&"[object DataView]"!=Et(new Ao(new ArrayBuffer(1)))||Oo&&"[object Map]"!=Et(new Oo)||ko&&"[object Promise]"!=Et(ko.resolve())||Eo&&"[object Set]"!=Et(new Eo)||So&&"[object WeakMap]"!=Et(new So))&&(Et=function(t){var n=Gu.call(t);if(t=(t="[object Object]"==n?t.constructor:N)?Oe(t):N)switch(t){case Co:return"[object DataView]";case Lo:return"[object Map]";case Do:return"[object Promise]";case zo:return"[object Set]";case Uo:return"[object WeakMap]"}return n});var Qo=Nu?nu:Mu,Xo=function(){var t=0,n=0;
+return function(r,e){var u=Ii(),o=16-(u-n);if(n=u,0=n}),Fi=Cu.isArray,Ti=Yt?S(Yt):zn,Ni=ho||Mu,Pi=Ht?S(Ht):Un,Zi=Qt?S(Qt):Fn,qi=Xt?S(Xt):Pn,Vi=tn?S(tn):Zn,Ki=nn?S(nn):qn,Gi=Qr(Jn),Ji=Qr(function(t,n){return t<=n}),Yi=Lr(function(t,n){if(Bo||xe(n)||Qe(n))Br(n,bu(n),t);else for(var r in n)qu.call(n,r)&&ln(t,r,n[r]);
+}),Hi=Lr(function(t,n){Br(n,xu(n),t)}),Qi=Lr(function(t,n,r,e){Br(n,xu(n),t,e)}),Xi=Lr(function(t,n,r,e){Br(n,bu(n),t,e)}),tf=ar(function(t,n){return _n(t,On(n,1))}),nf=ar(function(t){return t.push(N,cn),r(Qi,N,t)}),rf=ar(function(t){return t.push(N,me),r(cf,N,t)}),ef=Vr(function(t,n,r){t[n]=r},ku(Eu)),uf=Vr(function(t,n,r){qu.call(t,n)?t[n].push(r):t[n]=[r]},fe),of=ar(Dn),ff=Lr(function(t,n,r){Xn(t,n,r)}),cf=Lr(function(t,n,r,e){Xn(t,n,r,e)}),af=ar(function(t,n){return null==t?{}:(n=l(On(n,1),Ae),
+rr(t,jn(Rn(t,xu,Ho),n)))}),lf=ar(function(t,n){return null==t?{}:rr(t,l(On(n,1),Ae))}),sf=ne(bu),hf=ne(xu),pf=Fr(function(t,n,r){return n=n.toLowerCase(),t+(r?wu(n):n)}),_f=Fr(function(t,n,r){return t+(r?"-":"")+n.toLowerCase()}),vf=Fr(function(t,n,r){return t+(r?" ":"")+n.toLowerCase()}),gf=$r("toLowerCase"),df=Fr(function(t,n,r){return t+(r?"_":"")+n.toLowerCase()}),yf=Fr(function(t,n,r){return t+(r?" ":"")+xf(n)}),bf=Fr(function(t,n,r){return t+(r?" ":"")+n.toUpperCase()}),xf=$r("toUpperCase"),jf=ar(function(t,n){
+try{return r(t,N,n)}catch(t){return tu(t)?t:new Lu(t)}}),mf=ar(function(t,n){return u(On(n,1),function(n){n=Ae(n),t[n]=Ri(t[n],t)}),t}),wf=Zr(),Af=Zr(true),Of=ar(function(t,n){return function(r){return Dn(r,t,n)}}),kf=ar(function(t,n){return function(r){return Dn(t,r,n)}}),Ef=Gr(l),Sf=Gr(i),If=Gr(_),Rf=Hr(),Wf=Hr(true),Bf=Kr(function(t,n){return t+n},0),Mf=te("ceil"),Cf=Kr(function(t,n){return t/n},1),Lf=te("floor"),Df=Kr(function(t,n){return t*n},1),zf=te("round"),Uf=Kr(function(t,n){return t-n},0);return St.after=function(t,n){
+if(typeof n!="function")throw new Uu("Expected a function");return t=hu(t),function(){if(1>--t)return n.apply(this,arguments)}},St.ary=Pe,St.assign=Yi,St.assignIn=Hi,St.assignInWith=Qi,St.assignWith=Xi,St.at=tf,St.before=Ze,St.bind=Ri,St.bindAll=mf,St.bindKey=Wi,St.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Fi(t)?t:[t]},St.chain=De,St.chunk=function(t,n,r){if(n=(r?de(t,n,r):n===N)?1:go(hu(n),0),r=t?t.length:0,!r||1>n)return[];for(var e=0,u=0,o=Cu(ao(r/n));en?0:n,e)):[]},St.dropRight=function(t,n,r){var e=t?t.length:0;return e?(n=r||n===N?1:hu(n),n=e-n,sr(t,0,0>n?0:n)):[]},St.dropRightWhile=function(t,n){
+return t&&t.length?br(t,fe(n,3),true,true):[]},St.dropWhile=function(t,n){return t&&t.length?br(t,fe(n,3),true):[]},St.fill=function(t,n,r,e){var u=t?t.length:0;if(!u)return[];for(r&&typeof r!="number"&&de(t,n,r)&&(r=0,e=u),u=t.length,r=hu(r),0>r&&(r=-r>u?0:u+r),e=e===N||e>u?u:hu(e),0>e&&(e+=u),e=r>e?0:pu(e);r>>0,r?(t=gu(t))&&(typeof n=="string"||null!=n&&!qi(n))&&(n=dr(n),""==n&&Ct.test(t))?Or(t.match(Bt),0,r):wo.call(t,n,r):[]},St.spread=function(t,n){if(typeof t!="function")throw new Uu("Expected a function");return n=n===N?0:go(hu(n),0),ar(function(e){
+var u=e[n];return e=Or(e,0,n),u&&s(e,u),r(t,this,e)})},St.tail=function(t){var n=t?t.length:0;return n?sr(t,1,n):[]},St.take=function(t,n,r){return t&&t.length?(n=r||n===N?1:hu(n),sr(t,0,0>n?0:n)):[]},St.takeRight=function(t,n,r){var e=t?t.length:0;return e?(n=r||n===N?1:hu(n),n=e-n,sr(t,0>n?0:n,e)):[]},St.takeRightWhile=function(t,n){return t&&t.length?br(t,fe(n,3),false,true):[]},St.takeWhile=function(t,n){return t&&t.length?br(t,fe(n,3)):[]},St.tap=function(t,n){return n(t),t},St.throttle=function(t,n,r){
+var e=true,u=true;if(typeof t!="function")throw new Uu("Expected a function");return uu(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),Ke(t,n,{leading:e,maxWait:n,trailing:u})},St.thru=ze,St.toArray=lu,St.toPairs=sf,St.toPairsIn=hf,St.toPath=function(t){return Fi(t)?l(t,Ae):au(t)?[t]:Wr(ri(t))},St.toPlainObject=vu,St.transform=function(t,n,r){var e=Fi(t)||Ki(t);if(n=fe(n,4),null==r)if(e||uu(t)){var o=t.constructor;r=e?Fi(t)?new o:[]:nu(o)?bn(to(t)):{}}else r={};return(e?u:kn)(t,function(t,e,u){
+return n(r,t,e,u)}),r},St.unary=function(t){return Pe(t,1)},St.union=si,St.unionBy=hi,St.unionWith=pi,St.uniq=function(t){return t&&t.length?yr(t):[]},St.uniqBy=function(t,n){return t&&t.length?yr(t,fe(n,2)):[]},St.uniqWith=function(t,n){return t&&t.length?yr(t,N,n):[]},St.unset=function(t,n){var r;if(null==t)r=true;else{r=t;var e=n,e=ye(e,r)?[e]:Ar(e);r=we(r,e),e=Ae(We(e)),r=!(null!=r&&qu.call(r,e))||delete r[e]}return r},St.unzip=Ce,St.unzipWith=Le,St.update=function(t,n,r){return null==t?t:lr(t,n,(typeof r=="function"?r:Eu)(In(t,n)),void 0);
+},St.updateWith=function(t,n,r,e){return e=typeof e=="function"?e:N,null!=t&&(t=lr(t,n,(typeof r=="function"?r:Eu)(In(t,n)),e)),t},St.values=mu,St.valuesIn=function(t){return null==t?[]:I(t,xu(t))},St.without=_i,St.words=Ou,St.wrap=function(t,n){return n=null==n?Eu:n,Li(n,t)},St.xor=vi,St.xorBy=gi,St.xorWith=di,St.zip=yi,St.zipObject=function(t,n){return mr(t||[],n||[],ln)},St.zipObjectDeep=function(t,n){return mr(t||[],n||[],lr)},St.zipWith=bi,St.entries=sf,St.entriesIn=hf,St.extend=Hi,St.extendWith=Qi,
+Iu(St,St),St.add=Bf,St.attempt=jf,St.camelCase=pf,St.capitalize=wu,St.ceil=Mf,St.clamp=function(t,n,r){return r===N&&(r=n,n=N),r!==N&&(r=_u(r),r=r===r?r:0),n!==N&&(n=_u(n),n=n===n?n:0),vn(_u(t),n,r)},St.clone=function(t){return gn(t,false,true)},St.cloneDeep=function(t){return gn(t,true,true)},St.cloneDeepWith=function(t,n){return gn(t,true,true,n)},St.cloneWith=function(t,n){return gn(t,false,true,n)},St.conformsTo=function(t,n){return null==n||yn(t,n,bu(n))},St.deburr=Au,St.defaultTo=function(t,n){return null==t||t!==t?n:t;
+},St.divide=Cf,St.endsWith=function(t,n,r){t=gu(t),n=dr(n);var e=t.length,e=r=r===N?e:vn(hu(r),0,e);return r-=n.length,0<=r&&t.slice(r,e)==n},St.eq=Ye,St.escape=function(t){return(t=gu(t))&&Q.test(t)?t.replace(Y,en):t},St.escapeRegExp=function(t){return(t=gu(t))&&ft.test(t)?t.replace(it,"\\$&"):t},St.every=function(t,n,r){var e=Fi(t)?i:mn;return r&&de(t,n,r)&&(n=N),e(t,fe(n,3))},St.find=mi,St.findIndex=Se,St.findKey=function(t,n){return v(t,fe(n,3),kn)},St.findLast=wi,St.findLastIndex=Ie,St.findLastKey=function(t,n){
+return v(t,fe(n,3),En)},St.floor=Lf,St.forEach=$e,St.forEachRight=Fe,St.forIn=function(t,n){return null==t?t:Zo(t,fe(n,3),xu)},St.forInRight=function(t,n){return null==t?t:qo(t,fe(n,3),xu)},St.forOwn=function(t,n){return t&&kn(t,fe(n,3))},St.forOwnRight=function(t,n){return t&&En(t,fe(n,3))},St.get=du,St.gt=Ui,St.gte=$i,St.has=function(t,n){return null!=t&&se(t,n,Bn)},St.hasIn=yu,St.head=Re,St.identity=Eu,St.includes=function(t,n,r,e){return t=Qe(t)?t:mu(t),r=r&&!e?hu(r):0,e=t.length,0>r&&(r=go(e+r,0)),
+cu(t)?r<=e&&-1r&&(r=go(e+r,0)),d(t,n,r)):-1},St.inRange=function(t,n,r){return n=su(n),r===N?(r=n,n=0):r=su(r),t=_u(t),t>=yo(n,r)&&t=t},St.isSet=Vi,St.isString=cu,St.isSymbol=au,St.isTypedArray=Ki,St.isUndefined=function(t){return t===N},St.isWeakMap=function(t){return ou(t)&&"[object WeakMap]"==Et(t)},St.isWeakSet=function(t){return ou(t)&&"[object WeakSet]"==Gu.call(t)},St.join=function(t,n){return t?_o.call(t,n):""},St.kebabCase=_f,St.last=We,St.lastIndexOf=function(t,n,r){var e=t?t.length:0;if(!e)return-1;var u=e;if(r!==N&&(u=hu(r),
+u=(0>u?go(e+u,0):yo(u,e-1))+1),n!==n)return g(t,b,u-1,true);for(;u--;)if(t[u]===n)return u;return-1},St.lowerCase=vf,St.lowerFirst=gf,St.lt=Gi,St.lte=Ji,St.max=function(t){return t&&t.length?wn(t,Eu,Wn):N},St.maxBy=function(t,n){return t&&t.length?wn(t,fe(n,2),Wn):N},St.mean=function(t){return x(t,Eu)},St.meanBy=function(t,n){return x(t,fe(n,2))},St.min=function(t){return t&&t.length?wn(t,Eu,Jn):N},St.minBy=function(t,n){return t&&t.length?wn(t,fe(n,2),Jn):N},St.stubArray=Bu,St.stubFalse=Mu,St.stubObject=function(){
+return{}},St.stubString=function(){return""},St.stubTrue=function(){return true},St.multiply=Df,St.nth=function(t,n){return t&&t.length?tr(t,hu(n)):N},St.noConflict=function(){return qt._===this&&(qt._=Ju),this},St.noop=Ru,St.now=Ii,St.pad=function(t,n,r){t=gu(t);var e=(n=hu(n))?F(t):0;return!n||e>=n?t:(n=(n-e)/2,Jr(lo(n),r)+t+Jr(ao(n),r))},St.padEnd=function(t,n,r){t=gu(t);var e=(n=hu(n))?F(t):0;return n&&en){var e=t;t=n,n=e}return r||t%1||n%1?(r=xo(),yo(t+r*(n-t+Tt("1e-"+((r+"").length-1))),n)):fr(t,n)},St.reduce=function(t,n,r){var e=Fi(t)?h:w,u=3>arguments.length;return e(t,fe(n,4),r,u,No);
+},St.reduceRight=function(t,n,r){var e=Fi(t)?p:w,u=3>arguments.length;return e(t,fe(n,4),r,u,Po)},St.repeat=function(t,n,r){return n=(r?de(t,n,r):n===N)?1:hu(n),cr(gu(t),n)},St.replace=function(){var t=arguments,n=gu(t[0]);return 3>t.length?n:jo.call(n,t[1],t[2])},St.result=function(t,n,r){n=ye(n,t)?[n]:Ar(n);var e=-1,u=n.length;for(u||(t=N,u=1);++et||9007199254740991=o)return t;if(o=r-F(e),1>o)return e;if(r=i?Or(i,0,o).join(""):t.slice(0,o),u===N)return r+e;
+if(i&&(o+=r.length-o),qi(u)){if(t.slice(o).search(u)){var f=r;for(u.global||(u=zu(u.source,gu(dt.exec(u))+"g")),u.lastIndex=0;i=u.exec(f);)var c=i.index;r=r.slice(0,c===N?o:c)}}else t.indexOf(dr(u),o)!=o&&(u=r.lastIndexOf(u),-1u.__dir__?"Right":"")}),u},Ft.prototype[t+"Right"]=function(n){return this.reverse()[t](n).reverse();
+}}),u(["filter","map","takeWhile"],function(t,n){var r=n+1,e=1==r||3==r;Ft.prototype[t]=function(t){var n=this.clone();return n.__iteratees__.push({iteratee:fe(t,3),type:r}),n.__filtered__=n.__filtered__||e,n}}),u(["head","last"],function(t,n){var r="take"+(n?"Right":"");Ft.prototype[t]=function(){return this[r](1).value()[0]}}),u(["initial","tail"],function(t,n){var r="drop"+(n?"":"Right");Ft.prototype[t]=function(){return this.__filtered__?new Ft(this):this[r](1)}}),Ft.prototype.compact=function(){
+return this.filter(Eu)},Ft.prototype.find=function(t){return this.filter(t).head()},Ft.prototype.findLast=function(t){return this.reverse().find(t)},Ft.prototype.invokeMap=ar(function(t,n){return typeof t=="function"?new Ft(this):this.map(function(r){return Dn(r,t,n)})}),Ft.prototype.reject=function(t){return this.filter(Je(fe(t)))},Ft.prototype.slice=function(t,n){t=hu(t);var r=this;return r.__filtered__&&(0n)?new Ft(r):(0>t?r=r.takeRight(-t):t&&(r=r.drop(t)),n!==N&&(n=hu(n),r=0>n?r.dropRight(-n):r.take(n-t)),
+r)},Ft.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},Ft.prototype.toArray=function(){return this.take(4294967295)},kn(Ft.prototype,function(t,n){var r=/^(?:filter|find|map|reject)|While$/.test(n),e=/^(?:head|last)$/.test(n),u=St[e?"take"+("last"==n?"Right":""):n],o=e||/^find/.test(n);u&&(St.prototype[n]=function(){function n(t){return t=u.apply(St,s([t],f)),e&&h?t[0]:t}var i=this.__wrapped__,f=e?[1]:arguments,c=i instanceof Ft,a=f[0],l=c||Fi(i);l&&r&&typeof a=="function"&&1!=a.length&&(c=l=false);
+var h=this.__chain__,p=!!this.__actions__.length,a=o&&!h,c=c&&!p;return!o&&l?(i=c?i:new Ft(this),i=t.apply(i,f),i.__actions__.push({func:ze,args:[n],thisArg:N}),new $t(i,h)):a&&c?t.apply(this,f):(i=this.thru(n),a?e?i.value()[0]:i.value():i)})}),u("pop push shift sort splice unshift".split(" "),function(t){var n=$u[t],r=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",e=/^(?:pop|shift)$/.test(t);St.prototype[t]=function(){var t=arguments;if(e&&!this.__chain__){var u=this.value();return n.apply(Fi(u)?u:[],t);
+}return this[r](function(r){return n.apply(Fi(r)?r:[],t)})}}),kn(Ft.prototype,function(t,n){var r=St[n];if(r){var e=r.name+"";(Mo[e]||(Mo[e]=[])).push({name:n,func:r})}}),Mo[qr(N,2).name]=[{name:"wrapper",func:N}],Ft.prototype.clone=function(){var t=new Ft(this.__wrapped__);return t.__actions__=Wr(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Wr(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Wr(this.__views__),t},Ft.prototype.reverse=function(){
+if(this.__filtered__){var t=new Ft(this);t.__dir__=-1,t.__filtered__=true}else t=this.clone(),t.__dir__*=-1;return t},Ft.prototype.value=function(){var t,n=this.__wrapped__.value(),r=this.__dir__,e=Fi(n),u=0>r,o=e?n.length:0;t=o;for(var i=this.__views__,f=0,c=-1,a=i.length;++co||o==t&&a==t)return xr(n,this.__actions__);e=[];t:for(;t--&&c=this.__values__.length,n=t?N:this.__values__[this.__index__++];
+return{done:t,value:n}},St.prototype.plant=function(t){for(var n,r=this;r instanceof It;){var e=Ee(r);e.__index__=0,e.__values__=N,n?u.__wrapped__=e:n=e;var u=e,r=r.__wrapped__}return u.__wrapped__=t,n},St.prototype.reverse=function(){var t=this.__wrapped__;return t instanceof Ft?(this.__actions__.length&&(t=new Ft(this)),t=t.reverse(),t.__actions__.push({func:ze,args:[Me],thisArg:N}),new $t(t,this.__chain__)):this.thru(Me)},St.prototype.toJSON=St.prototype.valueOf=St.prototype.value=function(){return xr(this.__wrapped__,this.__actions__);
+},St.prototype.first=St.prototype.head,no&&(St.prototype[no]=Ue),St}var N,P=1/0,Z=NaN,q=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],V=/\b__p\+='';/g,K=/\b(__p\+=)''\+/g,G=/(__e\(.*?\)|\b__t\))\+'';/g,J=/&(?:amp|lt|gt|quot|#39|#96);/g,Y=/[&<>"'`]/g,H=RegExp(J.source),Q=RegExp(Y.source),X=/<%-([\s\S]+?)%>/g,tt=/<%([\s\S]+?)%>/g,nt=/<%=([\s\S]+?)%>/g,rt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,et=/^\w*$/,ut=/^\./,ot=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,it=/[\\^$.*+?()[\]{}|]/g,ft=RegExp(it.source),ct=/^\s+|\s+$/g,at=/^\s+/,lt=/\s+$/,st=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,ht=/\{\n\/\* \[wrapped with (.+)\] \*/,pt=/,? & /,_t=/[a-zA-Z0-9]+/g,vt=/\\(\\)?/g,gt=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,dt=/\w*$/,yt=/^0x/i,bt=/^[-+]0x[0-9a-f]+$/i,xt=/^0b[01]+$/i,jt=/^\[object .+?Constructor\]$/,mt=/^0o[0-7]+$/i,wt=/^(?:0|[1-9]\d*)$/,At=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,Ot=/($^)/,kt=/['\n\r\u2028\u2029\\]/g,Et="[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?)*",St="(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])"+Et,It="(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]?|[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])",Rt=RegExp("['\u2019]","g"),Wt=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]","g"),Bt=RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|"+It+Et,"g"),Mt=RegExp(["[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+(?:['\u2019](?:d|ll|m|re|s|t|ve))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde]|$)|(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde](?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])|$)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?(?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:d|ll|m|re|s|t|ve))?|[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?|\\d+",St].join("|"),"g"),Ct=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0\\ufe0e\\ufe0f]"),Lt=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Dt="Array Buffer DataView Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Map Math Object Promise RegExp Set String Symbol TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap _ clearTimeout isFinite parseInt setTimeout".split(" "),zt={};
+zt["[object Float32Array]"]=zt["[object Float64Array]"]=zt["[object Int8Array]"]=zt["[object Int16Array]"]=zt["[object Int32Array]"]=zt["[object Uint8Array]"]=zt["[object Uint8ClampedArray]"]=zt["[object Uint16Array]"]=zt["[object Uint32Array]"]=true,zt["[object Arguments]"]=zt["[object Array]"]=zt["[object ArrayBuffer]"]=zt["[object Boolean]"]=zt["[object DataView]"]=zt["[object Date]"]=zt["[object Error]"]=zt["[object Function]"]=zt["[object Map]"]=zt["[object Number]"]=zt["[object Object]"]=zt["[object RegExp]"]=zt["[object Set]"]=zt["[object String]"]=zt["[object WeakMap]"]=false;
+var Ut={};Ut["[object Arguments]"]=Ut["[object Array]"]=Ut["[object ArrayBuffer]"]=Ut["[object DataView]"]=Ut["[object Boolean]"]=Ut["[object Date]"]=Ut["[object Float32Array]"]=Ut["[object Float64Array]"]=Ut["[object Int8Array]"]=Ut["[object Int16Array]"]=Ut["[object Int32Array]"]=Ut["[object Map]"]=Ut["[object Number]"]=Ut["[object Object]"]=Ut["[object RegExp]"]=Ut["[object Set]"]=Ut["[object String]"]=Ut["[object Symbol]"]=Ut["[object Uint8Array]"]=Ut["[object Uint8ClampedArray]"]=Ut["[object Uint16Array]"]=Ut["[object Uint32Array]"]=true,
+Ut["[object Error]"]=Ut["[object Function]"]=Ut["[object WeakMap]"]=false;var $t,Ft={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Tt=parseFloat,Nt=parseInt,Pt=typeof global=="object"&&global&&global.Object===Object&&global,Zt=typeof self=="object"&&self&&self.Object===Object&&self,qt=Pt||Zt||Function("return this")(),Vt=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Kt=Vt&&typeof module=="object"&&module&&!module.nodeType&&module,Gt=Kt&&Kt.exports===Vt,Jt=Gt&&Pt.g;
+t:{try{$t=Jt&&Jt.f("util");break t}catch(t){}$t=void 0}var Yt=$t&&$t.isArrayBuffer,Ht=$t&&$t.isDate,Qt=$t&&$t.isMap,Xt=$t&&$t.isRegExp,tn=$t&&$t.isSet,nn=$t&&$t.isTypedArray,rn=m({"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i",
+"\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss"}),en=m({"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"}),un=m({"&":"&","<":"<",">":">",""":'"',"'":"'",
+"`":"`"}),on=T();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(qt._=on, define(function(){return on})):Kt?((Kt.exports=on)._=on,Vt._=on):qt._=on}).call(this);
\ No newline at end of file
diff --git a/matches.js b/matches.js
index 834d4729b..d34e98e9b 100644
--- a/matches.js
+++ b/matches.js
@@ -6,8 +6,12 @@ var baseClone = require('./_baseClone'),
* object and `source`, returning `true` if the given object has equivalent
* property values, else `false`.
*
- * **Note:** The created function supports comparing the same values as
- * `_.isEqual` is equivalent to `_.isMatch` with `source` partially applied.
+ * **Note:** The created function is equivalent to `_.isMatch` with `source`
+ * partially applied.
+ *
+ * Partial comparisons will match empty array and empty object `source`
+ * values against any array or object value, respectively. See `_.isEqual`
+ * for a list of supported value comparisons.
*
* @static
* @memberOf _
diff --git a/matchesProperty.js b/matchesProperty.js
index 4496442cb..ff8f2dffc 100644
--- a/matchesProperty.js
+++ b/matchesProperty.js
@@ -6,7 +6,9 @@ var baseClone = require('./_baseClone'),
* value at `path` of a given object to `srcValue`, returning `true` if the
* object value is equivalent, else `false`.
*
- * **Note:** This method supports comparing the same values as `_.isEqual`.
+ * **Note:** Partial comparisons will match empty array and empty object
+ * `srcValue` values against any array or object value, respectively. See
+ * `_.isEqual` for a list of supported value comparisons.
*
* @static
* @memberOf _
diff --git a/memoize.js b/memoize.js
index 54e461400..97aa18285 100644
--- a/memoize.js
+++ b/memoize.js
@@ -13,7 +13,7 @@ var FUNC_ERROR_TEXT = 'Expected a function';
* **Note:** The cache is exposed as the `cache` property on the memoized
* function. Its creation may be customized by replacing the `_.memoize.Cache`
* constructor with one whose instances implement the
- * [`Map`](http://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-map-prototype-object)
+ * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
* method interface of `delete`, `get`, `has`, and `set`.
*
* @static
diff --git a/now.js b/now.js
index 5ad305033..44a05623f 100644
--- a/now.js
+++ b/now.js
@@ -1,3 +1,5 @@
+var root = require('./_root');
+
/**
* Gets the timestamp of the number of milliseconds that have elapsed since
* the Unix epoch (1 January 1970 00:00:00 UTC).
@@ -14,8 +16,8 @@
* }, _.now());
* // => Logs the number of milliseconds it took for the deferred invocation.
*/
-function now() {
- return Date.now();
-}
+var now = function() {
+ return root.Date.now();
+};
module.exports = now;
diff --git a/package.json b/package.json
index affd3022c..99f876c11 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "lodash",
- "version": "4.14.1",
+ "version": "4.14.2",
"description": "Lodash modular utilities.",
"keywords": "modules, stdlib, util",
"homepage": "https://lodash.com/",
diff --git a/pull.js b/pull.js
index c136c06e8..a2efcb5e1 100644
--- a/pull.js
+++ b/pull.js
@@ -3,7 +3,7 @@ var baseRest = require('./_baseRest'),
/**
* Removes all given values from `array` using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
* for equality comparisons.
*
* **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`
diff --git a/size.js b/size.js
index 2e414ab47..cb63f5e96 100644
--- a/size.js
+++ b/size.js
@@ -1,8 +1,8 @@
-var getTag = require('./_getTag'),
+var baseKeys = require('./_baseKeys'),
+ getTag = require('./_getTag'),
isArrayLike = require('./isArrayLike'),
isObjectLike = require('./isObjectLike'),
isString = require('./isString'),
- keys = require('./keys'),
stringSize = require('./_stringSize');
/** `Object#toString` result references. */
@@ -44,7 +44,7 @@ function size(collection) {
return collection.size;
}
}
- return keys(collection).length;
+ return baseKeys(collection).length;
}
module.exports = size;
diff --git a/spread.js b/spread.js
index c537dfa9b..9b70db6cc 100644
--- a/spread.js
+++ b/spread.js
@@ -13,7 +13,7 @@ var nativeMax = Math.max;
/**
* Creates a function that invokes `func` with the `this` binding of the
* create function and an array of arguments much like
- * [`Function#apply`](http://www.ecma-international.org/ecma-262/6.0/#sec-function.prototype.apply).
+ * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).
*
* **Note:** This method is based on the
* [spread operator](https://mdn.io/spread_operator).
diff --git a/tail.js b/tail.js
index 459a8a379..9964be528 100644
--- a/tail.js
+++ b/tail.js
@@ -1,4 +1,4 @@
-var drop = require('./drop');
+var baseSlice = require('./_baseSlice');
/**
* Gets all but the first element of `array`.
@@ -15,7 +15,8 @@ var drop = require('./drop');
* // => [2, 3]
*/
function tail(array) {
- return drop(array, 1);
+ var length = array ? array.length : 0;
+ return length ? baseSlice(array, 1, length) : [];
}
module.exports = tail;
diff --git a/template.js b/template.js
index 03d20e591..c1a523c57 100644
--- a/template.js
+++ b/template.js
@@ -17,7 +17,7 @@ var reEmptyStringLeading = /\b__p \+= '';/g,
/**
* Used to match
- * [ES template delimiters](http://ecma-international.org/ecma-262/6.0/#sec-template-literal-lexical-components).
+ * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).
*/
var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
diff --git a/toInteger.js b/toInteger.js
index 49fd28dc7..c6aadf8f9 100644
--- a/toInteger.js
+++ b/toInteger.js
@@ -4,7 +4,7 @@ var toFinite = require('./toFinite');
* Converts `value` to an integer.
*
* **Note:** This method is loosely based on
- * [`ToInteger`](http://www.ecma-international.org/ecma-262/6.0/#sec-tointeger).
+ * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
*
* @static
* @memberOf _
diff --git a/toLength.js b/toLength.js
index 9aac9f6d5..be8f2a744 100644
--- a/toLength.js
+++ b/toLength.js
@@ -9,7 +9,7 @@ var MAX_ARRAY_LENGTH = 4294967295;
* array-like object.
*
* **Note:** This method is based on
- * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).
+ * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
*
* @static
* @memberOf _
diff --git a/union.js b/union.js
index d448d8be2..e676dfe49 100644
--- a/union.js
+++ b/union.js
@@ -5,7 +5,7 @@ var baseFlatten = require('./_baseFlatten'),
/**
* Creates an array of unique values, in order, from all given arrays using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
* for equality comparisons.
*
* @static
diff --git a/uniq.js b/uniq.js
index 0e99ee932..52e5d512a 100644
--- a/uniq.js
+++ b/uniq.js
@@ -2,7 +2,7 @@ var baseUniq = require('./_baseUniq');
/**
* Creates a duplicate-free version of an array, using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
* for equality comparisons, in which only the first occurrence of each
* element is kept.
*
diff --git a/without.js b/without.js
index 13cc11fc0..3a28e8ae4 100644
--- a/without.js
+++ b/without.js
@@ -4,7 +4,7 @@ var baseDifference = require('./_baseDifference'),
/**
* Creates an array excluding all given values using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
* for equality comparisons.
*
* **Note:** Unlike `_.pull`, this method returns a new array.