diff --git a/README.md b/README.md
index 14980db1a..b4141a253 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# lodash v4.12.0
+# lodash v4.13.0
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.12.0-npm) for more details.
+See the [package source](https://github.com/lodash/lodash/tree/4.13.0-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.
diff --git a/_arrayAggregator.js b/_arrayAggregator.js
index 562eeb392..7ca498a86 100644
--- a/_arrayAggregator.js
+++ b/_arrayAggregator.js
@@ -2,7 +2,7 @@
* A specialized version of `baseAggregator` for arrays.
*
* @private
- * @param {Array} array The array to iterate over.
+ * @param {Array} [array] The array to iterate over.
* @param {Function} setter The function to set `accumulator` values.
* @param {Function} iteratee The iteratee to transform keys.
* @param {Object} accumulator The initial aggregated object.
@@ -10,7 +10,7 @@
*/
function arrayAggregator(array, setter, iteratee, accumulator) {
var index = -1,
- length = array.length;
+ length = array ? array.length : 0;
while (++index < length) {
var value = array[index];
diff --git a/_arrayEach.js b/_arrayEach.js
index c302e6313..5f770bcbe 100644
--- a/_arrayEach.js
+++ b/_arrayEach.js
@@ -3,13 +3,13 @@
* iteratee shorthands.
*
* @private
- * @param {Array} array The array to iterate over.
+ * @param {Array} [array] The array to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @returns {Array} Returns `array`.
*/
function arrayEach(array, iteratee) {
var index = -1,
- length = array.length;
+ length = array ? array.length : 0;
while (++index < length) {
if (iteratee(array[index], index, array) === false) {
diff --git a/_arrayEachRight.js b/_arrayEachRight.js
index 531858538..72e780ca0 100644
--- a/_arrayEachRight.js
+++ b/_arrayEachRight.js
@@ -3,12 +3,12 @@
* iteratee shorthands.
*
* @private
- * @param {Array} array The array to iterate over.
+ * @param {Array} [array] The array to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @returns {Array} Returns `array`.
*/
function arrayEachRight(array, iteratee) {
- var length = array.length;
+ var length = array ? array.length : 0;
while (length--) {
if (iteratee(array[length], length, array) === false) {
diff --git a/_arrayEvery.js b/_arrayEvery.js
index 8d89fb102..f4fb4254d 100644
--- a/_arrayEvery.js
+++ b/_arrayEvery.js
@@ -3,14 +3,14 @@
* iteratee shorthands.
*
* @private
- * @param {Array} array The array to iterate over.
+ * @param {Array} [array] The array to iterate over.
* @param {Function} predicate The function invoked per iteration.
* @returns {boolean} Returns `true` if all elements pass the predicate check,
* else `false`.
*/
function arrayEvery(array, predicate) {
var index = -1,
- length = array.length;
+ length = array ? array.length : 0;
while (++index < length) {
if (!predicate(array[index], index, array)) {
diff --git a/_arrayFilter.js b/_arrayFilter.js
index 7b61ba6f9..b904fda62 100644
--- a/_arrayFilter.js
+++ b/_arrayFilter.js
@@ -3,13 +3,13 @@
* iteratee shorthands.
*
* @private
- * @param {Array} array The array to iterate over.
+ * @param {Array} [array] The array to iterate over.
* @param {Function} predicate The function invoked per iteration.
* @returns {Array} Returns the new filtered array.
*/
function arrayFilter(array, predicate) {
var index = -1,
- length = array.length,
+ length = array ? array.length : 0,
resIndex = 0,
result = [];
diff --git a/_arrayIncludes.js b/_arrayIncludes.js
index 9574f5d1b..cf9c1f0fc 100644
--- a/_arrayIncludes.js
+++ b/_arrayIncludes.js
@@ -5,12 +5,13 @@ var baseIndexOf = require('./_baseIndexOf');
* specifying an index to search from.
*
* @private
- * @param {Array} array The array to search.
+ * @param {Array} [array] The array to search.
* @param {*} target The value to search for.
* @returns {boolean} Returns `true` if `target` is found, else `false`.
*/
function arrayIncludes(array, value) {
- return !!array.length && baseIndexOf(array, value, 0) > -1;
+ var length = array ? array.length : 0;
+ return !!length && baseIndexOf(array, value, 0) > -1;
}
module.exports = arrayIncludes;
diff --git a/_arrayIncludesWith.js b/_arrayIncludesWith.js
index 88ea23719..d08356a86 100644
--- a/_arrayIncludesWith.js
+++ b/_arrayIncludesWith.js
@@ -2,14 +2,14 @@
* This function is like `arrayIncludes` except that it accepts a comparator.
*
* @private
- * @param {Array} array The array to search.
+ * @param {Array} [array] The array to search.
* @param {*} target The value to search for.
* @param {Function} comparator The comparator invoked per element.
* @returns {boolean} Returns `true` if `target` is found, else `false`.
*/
function arrayIncludesWith(array, value, comparator) {
var index = -1,
- length = array.length;
+ length = array ? array.length : 0;
while (++index < length) {
if (comparator(value, array[index])) {
diff --git a/_arrayMap.js b/_arrayMap.js
index 73b29cfa4..748bdbe6d 100644
--- a/_arrayMap.js
+++ b/_arrayMap.js
@@ -3,13 +3,13 @@
* shorthands.
*
* @private
- * @param {Array} array The array to iterate over.
+ * @param {Array} [array] The array to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @returns {Array} Returns the new mapped array.
*/
function arrayMap(array, iteratee) {
var index = -1,
- length = array.length,
+ length = array ? array.length : 0,
result = Array(length);
while (++index < length) {
diff --git a/_arrayReduce.js b/_arrayReduce.js
index 41bea2cf0..57c8727ab 100644
--- a/_arrayReduce.js
+++ b/_arrayReduce.js
@@ -3,7 +3,7 @@
* iteratee shorthands.
*
* @private
- * @param {Array} array The array to iterate over.
+ * @param {Array} [array] The array to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @param {*} [accumulator] The initial value.
* @param {boolean} [initAccum] Specify using the first element of `array` as
@@ -12,7 +12,7 @@
*/
function arrayReduce(array, iteratee, accumulator, initAccum) {
var index = -1,
- length = array.length;
+ length = array ? array.length : 0;
if (initAccum && length) {
accumulator = array[++index];
diff --git a/_arrayReduceRight.js b/_arrayReduceRight.js
index 038e0fa78..4c85ee630 100644
--- a/_arrayReduceRight.js
+++ b/_arrayReduceRight.js
@@ -3,7 +3,7 @@
* iteratee shorthands.
*
* @private
- * @param {Array} array The array to iterate over.
+ * @param {Array} [array] The array to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @param {*} [accumulator] The initial value.
* @param {boolean} [initAccum] Specify using the last element of `array` as
@@ -11,7 +11,7 @@
* @returns {*} Returns the accumulated value.
*/
function arrayReduceRight(array, iteratee, accumulator, initAccum) {
- var length = array.length;
+ var length = array ? array.length : 0;
if (initAccum && length) {
accumulator = array[--length];
}
diff --git a/_arraySome.js b/_arraySome.js
index e6e657b8f..9b6e5d17c 100644
--- a/_arraySome.js
+++ b/_arraySome.js
@@ -3,14 +3,14 @@
* shorthands.
*
* @private
- * @param {Array} array The array to iterate over.
+ * @param {Array} [array] The array to iterate over.
* @param {Function} predicate The function invoked per iteration.
* @returns {boolean} Returns `true` if any element passes the predicate check,
* else `false`.
*/
function arraySome(array, predicate) {
var index = -1,
- length = array.length;
+ length = array ? array.length : 0;
while (++index < length) {
if (predicate(array[index], index, array)) {
diff --git a/_baseFindIndex.js b/_baseFindIndex.js
index 61428f6c4..bfd8259af 100644
--- a/_baseFindIndex.js
+++ b/_baseFindIndex.js
@@ -5,12 +5,13 @@
* @private
* @param {Array} array The array to search.
* @param {Function} predicate The function invoked per iteration.
+ * @param {number} fromIndex The index to search from.
* @param {boolean} [fromRight] Specify iterating from right to left.
* @returns {number} Returns the index of the matched value, else `-1`.
*/
-function baseFindIndex(array, predicate, fromRight) {
+function baseFindIndex(array, predicate, fromIndex, fromRight) {
var length = array.length,
- index = fromRight ? length : -1;
+ index = fromIndex + (fromRight ? 1 : -1);
while ((fromRight ? index-- : ++index < length)) {
if (predicate(array[index], index, array)) {
diff --git a/_baseFind.js b/_baseFindKey.js
similarity index 53%
rename from _baseFind.js
rename to _baseFindKey.js
index 338f932c4..afbad8547 100644
--- a/_baseFind.js
+++ b/_baseFindKey.js
@@ -1,25 +1,23 @@
/**
- * The base implementation of methods like `_.find` and `_.findKey`, without
- * support for iteratee shorthands, which iterates over `collection` using
- * `eachFunc`.
+ * The base implementation of methods like `_.findKey` and `_.findLastKey`,
+ * without support for iteratee shorthands, which iterates over `collection`
+ * using `eachFunc`.
*
* @private
* @param {Array|Object} collection The collection to search.
* @param {Function} predicate The function invoked per iteration.
* @param {Function} eachFunc The function to iterate over `collection`.
- * @param {boolean} [retKey] Specify returning the key of the found element
- * instead of the element itself.
* @returns {*} Returns the found element or its key, else `undefined`.
*/
-function baseFind(collection, predicate, eachFunc, retKey) {
+function baseFindKey(collection, predicate, eachFunc) {
var result;
eachFunc(collection, function(value, key, collection) {
if (predicate(value, key, collection)) {
- result = retKey ? key : value;
+ result = key;
return false;
}
});
return result;
}
-module.exports = baseFind;
+module.exports = baseFindKey;
diff --git a/_baseHas.js b/_baseHas.js
index 1de5d841c..3d2e7bf74 100644
--- a/_baseHas.js
+++ b/_baseHas.js
@@ -10,7 +10,7 @@ var hasOwnProperty = objectProto.hasOwnProperty;
* The base implementation of `_.has` without support for deep paths.
*
* @private
- * @param {Object} object The object to query.
+ * @param {Object} [object] The object to query.
* @param {Array|string} key The key to check.
* @returns {boolean} Returns `true` if `key` exists, else `false`.
*/
@@ -18,8 +18,9 @@ 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 hasOwnProperty.call(object, key) ||
- (typeof object == 'object' && key in object && getPrototype(object) === null);
+ return object != null &&
+ (hasOwnProperty.call(object, key) ||
+ (typeof object == 'object' && key in object && getPrototype(object) === null));
}
module.exports = baseHas;
diff --git a/_baseHasIn.js b/_baseHasIn.js
index 4a3655869..2e0d04269 100644
--- a/_baseHasIn.js
+++ b/_baseHasIn.js
@@ -2,12 +2,12 @@
* The base implementation of `_.hasIn` without support for deep paths.
*
* @private
- * @param {Object} object The object to query.
+ * @param {Object} [object] The object to query.
* @param {Array|string} key The key to check.
* @returns {boolean} Returns `true` if `key` exists, else `false`.
*/
function baseHasIn(object, key) {
- return key in Object(object);
+ return object != null && key in Object(object);
}
module.exports = baseHasIn;
diff --git a/_baseIsNative.js b/_baseIsNative.js
new file mode 100644
index 000000000..4d7dd0773
--- /dev/null
+++ b/_baseIsNative.js
@@ -0,0 +1,47 @@
+var isFunction = require('./isFunction'),
+ isHostObject = require('./_isHostObject'),
+ isMasked = require('./_isMasked'),
+ isObject = require('./isObject'),
+ toSource = require('./_toSource');
+
+/**
+ * Used to match `RegExp`
+ * [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns).
+ */
+var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
+
+/** Used to detect host constructors (Safari). */
+var reIsHostCtor = /^\[object .+?Constructor\]$/;
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Used to resolve the decompiled source of functions. */
+var funcToString = Function.prototype.toString;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
+/** Used to detect if a method is native. */
+var reIsNative = RegExp('^' +
+ funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
+ .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
+);
+
+/**
+ * The base implementation of `_.isNative` without bad shim checks.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a native function,
+ * else `false`.
+ */
+function baseIsNative(value) {
+ if (!isObject(value) || isMasked(value)) {
+ return false;
+ }
+ var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
+ return pattern.test(toSource(value));
+}
+
+module.exports = baseIsNative;
diff --git a/_basePullAll.js b/_basePullAll.js
index 3c07c994c..305720ede 100644
--- a/_basePullAll.js
+++ b/_basePullAll.js
@@ -1,7 +1,8 @@
var arrayMap = require('./_arrayMap'),
baseIndexOf = require('./_baseIndexOf'),
baseIndexOfWith = require('./_baseIndexOfWith'),
- baseUnary = require('./_baseUnary');
+ baseUnary = require('./_baseUnary'),
+ copyArray = require('./_copyArray');
/** Used for built-in method references. */
var arrayProto = Array.prototype;
@@ -26,6 +27,9 @@ function basePullAll(array, values, iteratee, comparator) {
length = values.length,
seen = array;
+ if (array === values) {
+ values = copyArray(values);
+ }
if (iteratee) {
seen = arrayMap(array, baseUnary(iteratee));
}
diff --git a/_coreJsData.js b/_coreJsData.js
new file mode 100644
index 000000000..f8e5b4e34
--- /dev/null
+++ b/_coreJsData.js
@@ -0,0 +1,6 @@
+var root = require('./_root');
+
+/** Used to detect overreaching core-js shims. */
+var coreJsData = root['__core-js_shared__'];
+
+module.exports = coreJsData;
diff --git a/_createRound.js b/_createRound.js
index cb42ba246..74b20d408 100644
--- a/_createRound.js
+++ b/_createRound.js
@@ -2,6 +2,9 @@ var toInteger = require('./toInteger'),
toNumber = require('./toNumber'),
toString = require('./toString');
+/* Built-in method references for those with the same name as other `lodash` methods. */
+var nativeMin = Math.min;
+
/**
* Creates a function like `_.round`.
*
@@ -13,7 +16,7 @@ function createRound(methodName) {
var func = Math[methodName];
return function(number, precision) {
number = toNumber(number);
- precision = toInteger(precision);
+ precision = nativeMin(toInteger(precision), 292);
if (precision) {
// Shift with exponential notation to avoid floating-point issues.
// See [MDN](https://mdn.io/round#Examples) for more details.
diff --git a/_getMatchData.js b/_getMatchData.js
index a1456d240..2cc70f917 100644
--- a/_getMatchData.js
+++ b/_getMatchData.js
@@ -1,5 +1,5 @@
var isStrictComparable = require('./_isStrictComparable'),
- toPairs = require('./toPairs');
+ keys = require('./keys');
/**
* Gets the property names, values, and compare flags of `object`.
@@ -9,11 +9,14 @@ var isStrictComparable = require('./_isStrictComparable'),
* @returns {Array} Returns the match data of `object`.
*/
function getMatchData(object) {
- var result = toPairs(object),
+ var result = keys(object),
length = result.length;
while (length--) {
- result[length][2] = isStrictComparable(result[length][1]);
+ var key = result[length],
+ value = object[key];
+
+ result[length] = [key, value, isStrictComparable(value)];
}
return result;
}
diff --git a/_getNative.js b/_getNative.js
index f6ff7f19b..97a622b83 100644
--- a/_getNative.js
+++ b/_getNative.js
@@ -1,4 +1,5 @@
-var isNative = require('./isNative');
+var baseIsNative = require('./_baseIsNative'),
+ getValue = require('./_getValue');
/**
* Gets the native function at `key` of `object`.
@@ -9,8 +10,8 @@ var isNative = require('./isNative');
* @returns {*} Returns the function if it's native, else `undefined`.
*/
function getNative(object, key) {
- var value = object[key];
- return isNative(value) ? value : undefined;
+ var value = getValue(object, key);
+ return baseIsNative(value) ? value : undefined;
}
module.exports = getNative;
diff --git a/_getSymbols.js b/_getSymbols.js
index 63df71742..1a7691733 100644
--- a/_getSymbols.js
+++ b/_getSymbols.js
@@ -1,3 +1,5 @@
+var stubArray = require('./stubArray');
+
/** Built-in value references. */
var getOwnPropertySymbols = Object.getOwnPropertySymbols;
@@ -16,9 +18,7 @@ function getSymbols(object) {
// Fallback for IE < 11.
if (!getOwnPropertySymbols) {
- getSymbols = function() {
- return [];
- };
+ getSymbols = stubArray;
}
module.exports = getSymbols;
diff --git a/_getValue.js b/_getValue.js
new file mode 100644
index 000000000..5f7d77367
--- /dev/null
+++ b/_getValue.js
@@ -0,0 +1,13 @@
+/**
+ * Gets the value at `key` of `object`.
+ *
+ * @private
+ * @param {Object} [object] The object to query.
+ * @param {string} key The key of the property to get.
+ * @returns {*} Returns the property value.
+ */
+function getValue(object, key) {
+ return object == null ? undefined : object[key];
+}
+
+module.exports = getValue;
diff --git a/_indexOfNaN.js b/_indexOfNaN.js
index 05b8207d7..49a42bb82 100644
--- a/_indexOfNaN.js
+++ b/_indexOfNaN.js
@@ -9,7 +9,7 @@
*/
function indexOfNaN(array, fromIndex, fromRight) {
var length = array.length,
- index = fromIndex + (fromRight ? 0 : -1);
+ index = fromIndex + (fromRight ? 1 : -1);
while ((fromRight ? index-- : ++index < length)) {
var other = array[index];
diff --git a/_isMaskable.js b/_isMaskable.js
new file mode 100644
index 000000000..e2e664e10
--- /dev/null
+++ b/_isMaskable.js
@@ -0,0 +1,14 @@
+var coreJsData = require('./_coreJsData'),
+ isFunction = require('./isFunction'),
+ stubFalse = require('./stubFalse');
+
+/**
+ * Checks if `func` is capable of being masked.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `func` is maskable, else `false`.
+ */
+var isMaskable = !coreJsData ? stubFalse : isFunction;
+
+module.exports = isMaskable;
diff --git a/_isMasked.js b/_isMasked.js
new file mode 100644
index 000000000..4b0f21ba8
--- /dev/null
+++ b/_isMasked.js
@@ -0,0 +1,20 @@
+var coreJsData = require('./_coreJsData');
+
+/** Used to detect methods masquerading as native. */
+var maskSrcKey = (function() {
+ var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
+ return uid ? ('Symbol(src)_1.' + uid) : '';
+}());
+
+/**
+ * Checks if `func` has its source masked.
+ *
+ * @private
+ * @param {Function} func The function to check.
+ * @returns {boolean} Returns `true` if `func` is masked, else `false`.
+ */
+function isMasked(func) {
+ return !!maskSrcKey && (maskSrcKey in func);
+}
+
+module.exports = isMasked;
diff --git a/_root.js b/_root.js
index d2cfd3114..c46a71af9 100644
--- a/_root.js
+++ b/_root.js
@@ -1,41 +1,15 @@
var checkGlobal = require('./_checkGlobal');
-/** Used to determine if values are of the language type `Object`. */
-var objectTypes = {
- 'function': true,
- 'object': true
-};
-
-/** Detect free variable `exports`. */
-var freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)
- ? exports
- : undefined;
-
-/** Detect free variable `module`. */
-var freeModule = (objectTypes[typeof module] && module && !module.nodeType)
- ? module
- : undefined;
-
/** Detect free variable `global` from Node.js. */
-var freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global);
+var freeGlobal = checkGlobal(typeof global == 'object' && global);
/** Detect free variable `self`. */
-var freeSelf = checkGlobal(objectTypes[typeof self] && self);
-
-/** Detect free variable `window`. */
-var freeWindow = checkGlobal(objectTypes[typeof window] && window);
+var freeSelf = checkGlobal(typeof self == 'object' && self);
/** Detect `this` as the global object. */
-var thisGlobal = checkGlobal(objectTypes[typeof this] && this);
+var thisGlobal = checkGlobal(typeof this == 'object' && this);
-/**
- * Used as a reference to the global object.
- *
- * The `this` value is used if it's the global object to avoid Greasemonkey's
- * restricted `window` object, otherwise the `window` object is used.
- */
-var root = freeGlobal ||
- ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) ||
- freeSelf || thisGlobal || Function('return this')();
+/** Used as a reference to the global object. */
+var root = freeGlobal || freeSelf || thisGlobal || Function('return this')();
module.exports = root;
diff --git a/_stringToPath.js b/_stringToPath.js
index b6a1fc28a..8b884b92a 100644
--- a/_stringToPath.js
+++ b/_stringToPath.js
@@ -2,7 +2,7 @@ var memoize = require('./memoize'),
toString = require('./toString');
/** Used to match property names within property paths. */
-var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]/g;
+var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(\.|\[\])(?:\4|$))/g;
/** Used to match backslashes in property paths. */
var reEscapeChar = /\\(\\)?/g;
diff --git a/at.js b/at.js
index 43499a874..3f2ec0c00 100644
--- a/at.js
+++ b/at.js
@@ -18,9 +18,6 @@ var baseAt = require('./_baseAt'),
*
* _.at(object, ['a[0].b.c', 'a[1]']);
* // => [3, 4]
- *
- * _.at(['a', 'b', 'c'], 0, 2);
- * // => ['a', 'c']
*/
var at = rest(function(object, paths) {
return baseAt(object, baseFlatten(paths, 1));
diff --git a/bind.js b/bind.js
index bea3c35e7..893932a1d 100644
--- a/bind.js
+++ b/bind.js
@@ -14,7 +14,7 @@ var BIND_FLAG = 1,
* The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
* may be used as a placeholder for partially applied arguments.
*
- * **Note:** Unlike native `Function#bind` this method doesn't set the "length"
+ * **Note:** Unlike native `Function#bind`, this method doesn't set the "length"
* property of bound functions.
*
* @static
diff --git a/bindAll.js b/bindAll.js
index d389fd70f..7d1e9bac4 100644
--- a/bindAll.js
+++ b/bindAll.js
@@ -26,7 +26,7 @@ var arrayEach = require('./_arrayEach'),
* }
* };
*
- * _.bindAll(view, 'onClick');
+ * _.bindAll(view, ['onClick']);
* jQuery(element).on('click', view.onClick);
* // => Logs 'clicked docs' when clicked.
*/
diff --git a/conforms.js b/conforms.js
index 7e3a93460..2a3915436 100644
--- a/conforms.js
+++ b/conforms.js
@@ -19,7 +19,7 @@ var baseClone = require('./_baseClone'),
* { 'user': 'fred', 'age': 40 }
* ];
*
- * _.filter(users, _.conforms({ 'age': _.partial(_.gt, _, 38) }));
+ * _.filter(users, _.conforms({ 'age': function(n) { return n > 38; } }));
* // => [{ 'user': 'fred', 'age': 40 }]
*/
function conforms(source) {
diff --git a/constant.js b/constant.js
index 63e53f6c6..655ece3fb 100644
--- a/constant.js
+++ b/constant.js
@@ -9,10 +9,12 @@
* @returns {Function} Returns the new constant function.
* @example
*
- * var object = { 'user': 'fred' };
- * var getter = _.constant(object);
+ * var objects = _.times(2, _.constant({ 'a': 1 }));
*
- * getter() === object;
+ * console.log(objects);
+ * // => [{ 'a': 1 }, { 'a': 1 }]
+ *
+ * console.log(objects[0] === objects[1]);
* // => true
*/
function constant(value) {
diff --git a/core.js b/core.js
index 954cdcf20..b2f6900f5 100644
--- a/core.js
+++ b/core.js
@@ -1,6 +1,7 @@
/**
* @license
- * lodash
+ * lodash (Custom Build)
+ * Build: `lodash core -o ./dist/lodash.core.js`
* Copyright jQuery Foundation and other contributors
* Released under MIT license
* Based on Underscore.js 1.8.3
@@ -12,7 +13,7 @@
var undefined;
/** Used as the semantic version number. */
- var VERSION = '4.12.0';
+ var VERSION = '4.13.0';
/** Used as the `TypeError` message for "Functions" methods. */
var FUNC_ERROR_TEXT = 'Expected a function';
@@ -46,9 +47,6 @@
var reUnescapedHtml = /[&<>"'`]/g,
reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
- /** Used to detect unsigned integer values. */
- var reIsUint = /^(?:0|[1-9]\d*)$/;
-
/** Used to map characters to HTML entities. */
var htmlEscapes = {
'&': '&',
@@ -59,48 +57,23 @@
'`': '`'
};
- /** Used to determine if values are of the language type `Object`. */
- var objectTypes = {
- 'function': true,
- 'object': true
- };
-
/** Detect free variable `exports`. */
- var freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)
- ? exports
- : undefined;
+ var freeExports = typeof exports == 'object' && exports;
/** Detect free variable `module`. */
- var freeModule = (objectTypes[typeof module] && module && !module.nodeType)
- ? module
- : undefined;
-
- /** Detect the popular CommonJS extension `module.exports`. */
- var moduleExports = (freeModule && freeModule.exports === freeExports)
- ? freeExports
- : undefined;
+ var freeModule = freeExports && typeof module == 'object' && module;
/** Detect free variable `global` from Node.js. */
- var freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global);
+ var freeGlobal = checkGlobal(typeof global == 'object' && global);
/** Detect free variable `self`. */
- var freeSelf = checkGlobal(objectTypes[typeof self] && self);
-
- /** Detect free variable `window`. */
- var freeWindow = checkGlobal(objectTypes[typeof window] && window);
+ var freeSelf = checkGlobal(typeof self == 'object' && self);
/** Detect `this` as the global object. */
- var thisGlobal = checkGlobal(objectTypes[typeof this] && this);
+ var thisGlobal = checkGlobal(typeof this == 'object' && this);
- /**
- * Used as a reference to the global object.
- *
- * The `this` value is used if it's the global object to avoid Greasemonkey's
- * restricted `window` object, otherwise the `window` object is used.
- */
- var root = freeGlobal ||
- ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) ||
- freeSelf || thisGlobal || Function('return this')();
+ /** Used as a reference to the global object. */
+ var root = freeGlobal || freeSelf || thisGlobal || Function('return this')();
/*--------------------------------------------------------------------------*/
@@ -118,27 +91,26 @@
}
/**
- * The base implementation of methods like `_.find` and `_.findKey`, without
- * support for iteratee shorthands, which iterates over `collection` using
- * `eachFunc`.
+ * The base implementation of `_.findIndex` and `_.findLastIndex` without
+ * support for iteratee shorthands.
*
* @private
- * @param {Array|Object} collection The collection to search.
+ * @param {Array} array The array to search.
* @param {Function} predicate The function invoked per iteration.
- * @param {Function} eachFunc The function to iterate over `collection`.
- * @param {boolean} [retKey] Specify returning the key of the found element
- * instead of the element itself.
- * @returns {*} Returns the found element or its key, else `undefined`.
+ * @param {number} fromIndex The index to search from.
+ * @param {boolean} [fromRight] Specify iterating from right to left.
+ * @returns {number} Returns the index of the matched value, else `-1`.
*/
- function baseFind(collection, predicate, eachFunc, retKey) {
- var result;
- eachFunc(collection, function(value, key, collection) {
- if (predicate(value, key, collection)) {
- result = retKey ? key : value;
- return false;
+ function baseFindIndex(array, predicate, fromIndex, fromRight) {
+ var length = array.length,
+ index = fromIndex + (fromRight ? 1 : -1);
+
+ while ((fromRight ? index-- : ++index < length)) {
+ if (predicate(array[index], index, array)) {
+ return index;
}
- });
- return result;
+ }
+ return -1;
}
/**
@@ -163,25 +135,6 @@
return accumulator;
}
- /**
- * The base implementation of `_.times` without support for iteratee shorthands
- * or max array length checks.
- *
- * @private
- * @param {number} n The number of times to invoke `iteratee`.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns the array of results.
- */
- function baseTimes(n, iteratee) {
- var index = -1,
- result = Array(n);
-
- while (++index < n) {
- result[index] = iteratee(index);
- }
- return result;
- }
-
/**
* The base implementation of `_.values` and `_.valuesIn` which creates an
* array of `object` property values corresponding to the property names
@@ -227,33 +180,8 @@
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a host object, else `false`.
*/
- function isHostObject(value) {
- // Many host objects are `Object` objects that can coerce to strings
- // despite having improperly defined `toString` methods.
- var result = false;
- if (value != null && typeof value.toString != 'function') {
- try {
- result = !!(value + '');
- } catch (e) {}
- }
- return result;
- }
-
- /**
- * Converts `iterator` to an array.
- *
- * @private
- * @param {Object} iterator The iterator to convert.
- * @returns {Array} Returns the converted array.
- */
- function iteratorToArray(iterator) {
- var data,
- result = [];
-
- while (!(data = iterator.next()).done) {
- result.push(data.value);
- }
- return result;
+ function isHostObject() {
+ return false;
}
/*--------------------------------------------------------------------------*/
@@ -279,11 +207,7 @@
var oldDash = root._;
/** Built-in value references. */
- var Reflect = root.Reflect,
- Symbol = root.Symbol,
- Uint8Array = root.Uint8Array,
- enumerate = Reflect ? Reflect.enumerate : undefined,
- objectCreate = Object.create,
+ var objectCreate = Object.create,
propertyIsEnumerable = objectProto.propertyIsEnumerable;
/* Built-in method references for those with the same name as other `lodash` methods. */
@@ -368,19 +292,21 @@
* `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`, `isBoolean`,
* `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`, `isEqualWith`,
* `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, `isMap`,
- * `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, `isNumber`,
- * `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, `isSafeInteger`,
- * `isSet`, `isString`, `isUndefined`, `isTypedArray`, `isWeakMap`, `isWeakSet`,
- * `join`, `kebabCase`, `last`, `lastIndexOf`, `lowerCase`, `lowerFirst`,
- * `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`, `min`, `minBy`, `multiply`,
- * `noConflict`, `noop`, `now`, `nth`, `pad`, `padEnd`, `padStart`, `parseInt`,
- * `pop`, `random`, `reduce`, `reduceRight`, `repeat`, `result`, `round`,
- * `runInContext`, `sample`, `shift`, `size`, `snakeCase`, `some`, `sortedIndex`,
- * `sortedIndexBy`, `sortedLastIndex`, `sortedLastIndexBy`, `startCase`,
- * `startsWith`, `subtract`, `sum`, `sumBy`, `template`, `times`, `toFinite`,
- * `toInteger`, `toJSON`, `toLength`, `toLower`, `toNumber`, `toSafeInteger`,
- * `toString`, `toUpper`, `trim`, `trimEnd`, `trimStart`, `truncate`, `unescape`,
- * `uniqueId`, `upperCase`, `upperFirst`, `value`, and `words`
+ * `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
+ * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
+ * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
+ * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
+ * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,
+ * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,
+ * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
+ * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
+ * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
+ * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,
+ * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,
+ * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,
+ * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,
+ * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,
+ * `upperFirst`, `value`, and `words`
*
* @name _
* @constructor
@@ -726,7 +652,7 @@
}
stack.push([object, other]);
if (isSameTag && !objIsObj) {
- var result = (objIsArr || isTypedArray(object))
+ var result = (objIsArr)
? equalArrays(object, other, equalFunc, customizer, bitmask, stack)
: equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);
stack.pop();
@@ -800,13 +726,6 @@
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 to numbers.
*
@@ -1369,23 +1288,6 @@
*/
var getLength = baseProperty('length');
- /**
- * 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;
- }
-
/**
* Checks if `value` is a flattenable `arguments` object or array.
*
@@ -1397,35 +1299,6 @@
return isArray(value) || isArguments(value);
}
- /**
- * Checks if `value` is a valid array-like index.
- *
- * @private
- * @param {*} value The value to check.
- * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
- * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
- */
- function isIndex(value, length) {
- length = length == null ? MAX_SAFE_INTEGER : length;
- return !!length &&
- (typeof value == 'number' || reIsUint.test(value)) &&
- (value > -1 && value % 1 == 0 && value < length);
- }
-
- /**
- * Checks if `value` is likely a prototype object.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
- */
- function isPrototype(value) {
- var Ctor = value && value.constructor,
- proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
-
- return value === proto;
- }
-
/**
* Converts `value` to a string key if it's not a string or symbol.
*
@@ -1492,6 +1365,54 @@
: [];
}
+ /**
+ * This method is like `_.find` except that it returns the index of the first
+ * element `predicate` returns truthy for instead of the element itself.
+ *
+ * @static
+ * @memberOf _
+ * @since 1.1.0
+ * @category Array
+ * @param {Array} array The array to search.
+ * @param {Array|Function|Object|string} [predicate=_.identity]
+ * The function invoked per iteration.
+ * @param {number} [fromIndex=0] The index to search from.
+ * @returns {number} Returns the index of the found element, else `-1`.
+ * @example
+ *
+ * var users = [
+ * { 'user': 'barney', 'active': false },
+ * { 'user': 'fred', 'active': false },
+ * { 'user': 'pebbles', 'active': true }
+ * ];
+ *
+ * _.findIndex(users, function(o) { return o.user == 'barney'; });
+ * // => 0
+ *
+ * // The `_.matches` iteratee shorthand.
+ * _.findIndex(users, { 'user': 'fred', 'active': false });
+ * // => 1
+ *
+ * // The `_.matchesProperty` iteratee shorthand.
+ * _.findIndex(users, ['active', false]);
+ * // => 0
+ *
+ * // The `_.property` iteratee shorthand.
+ * _.findIndex(users, 'active');
+ * // => 2
+ */
+ function findIndex(array, predicate, fromIndex) {
+ var length = array ? array.length : 0;
+ if (!length) {
+ return -1;
+ }
+ var index = fromIndex == null ? 0 : toInteger(fromIndex);
+ if (index < 0) {
+ index = nativeMax(length + index, 0);
+ }
+ return baseFindIndex(array, baseIteratee(predicate, 3), index);
+ }
+
/**
* Flattens `array` a single level deep.
*
@@ -1873,6 +1794,7 @@
* @param {Array|Object} collection The collection to search.
* @param {Array|Function|Object|string} [predicate=_.identity]
* The function invoked per iteration.
+ * @param {number} [fromIndex=0] The index to search from.
* @returns {*} Returns the matched element, else `undefined`.
* @example
*
@@ -1897,8 +1819,10 @@
* _.find(users, 'active');
* // => object for 'barney'
*/
- function find(collection, predicate) {
- return baseFind(collection, baseIteratee(predicate), baseEach);
+ function find(collection, predicate, fromIndex) {
+ collection = isArrayLike(collection) ? collection : values(collection);
+ var index = findIndex(collection, predicate, fromIndex);
+ return index > -1 ? collection[index] : undefined;
}
/**
@@ -2182,7 +2106,7 @@
* The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
* may be used as a placeholder for partially applied arguments.
*
- * **Note:** Unlike native `Function#bind` this method doesn't set the "length"
+ * **Note:** Unlike native `Function#bind`, this method doesn't set the "length"
* property of bound functions.
*
* @static
@@ -2993,7 +2917,7 @@
/**
* Converts `value` to an integer.
*
- * **Note:** This function is loosely based on
+ * **Note:** This method is loosely based on
* [`ToInteger`](http://www.ecma-international.org/ecma-262/6.0/#sec-tointeger).
*
* @static
@@ -3301,25 +3225,7 @@
* _.keys('hi');
* // => ['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 (hasOwnProperty.call(object, key) &&
- !(skipIndexes && (key == 'length' || isIndex(key, length))) &&
- !(isProto && key == 'constructor')) {
- result.push(key);
- }
- }
- return result;
- }
+ var keys = baseKeys;
/**
* Creates an array of the own and inherited enumerable property names of `object`.
@@ -3344,25 +3250,7 @@
* _.keysIn(new Foo);
* // => ['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;
- }
+ var keysIn = baseKeysIn;
/**
* Creates an object composed of the picked `object` properties.
@@ -3510,7 +3398,7 @@
*
* var object = { 'user': 'fred' };
*
- * _.identity(object) === object;
+ * console.log(_.identity(object) === object);
* // => true
*/
function identity(value) {
@@ -3682,8 +3570,7 @@
}
/**
- * A no-operation function that returns `undefined` regardless of the
- * arguments it receives.
+ * A method that returns `undefined`.
*
* @static
* @memberOf _
@@ -3691,10 +3578,8 @@
* @category Util
* @example
*
- * var object = { 'user': 'fred' };
- *
- * _.noop(object) === undefined;
- * // => true
+ * _.times(2, _.noop);
+ * // => [undefined, undefined]
*/
function noop() {
// No operation performed.
@@ -3900,7 +3785,7 @@
// also prevents errors in cases where Lodash is loaded by a script tag in the
// presence of an AMD loader. See http://requirejs.org/docs/errors.html#mismatch
// for more details. Use `_.noConflict` to remove Lodash from the global object.
- (freeWindow || freeSelf || {})._ = lodash;
+ (freeSelf || {})._ = lodash;
// Some AMD build optimizers like r.js check for condition patterns like the following:
if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {
@@ -3911,11 +3796,9 @@
});
}
// Check for `exports` after `define` in case a build optimizer adds an `exports` object.
- else if (freeExports && freeModule) {
+ else if (freeModule) {
// Export for Node.js.
- if (moduleExports) {
- (freeModule.exports = lodash)._ = lodash;
- }
+ (freeModule.exports = lodash)._ = lodash;
// Export for CommonJS support.
freeExports._ = lodash;
}
diff --git a/core.min.js b/core.min.js
index d33dffd07..f8e40b6d3 100644
--- a/core.min.js
+++ b/core.min.js
@@ -1,28 +1,28 @@
/**
* @license
- * lodash lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
+ * lodash (Custom Build) /license | Underscore.js 1.8.3 underscorejs.org/LICENSE
+ * Build: `lodash core -o ./dist/lodash.core.js`
*/
-;(function(){function n(n,t){return n.push.apply(n,t),n}function t(n,t,r){var e;return r(n,function(n,r,u){return t(n,r,u)?(e=n,false):void 0}),e}function r(n,t,r,e,u){return u(n,function(n,u,o){r=e?(e=false,n):t(r,n,u,o)}),r}function e(n,t){return O(t,function(t){return n[t]})}function u(n){return n&&n.Object===Object?n:null}function o(n){return gn[n]}function i(n){var t=false;if(null!=n&&typeof n.toString!="function")try{t=!!(n+"")}catch(r){}return t}function c(n){return n instanceof f?n:new f(n)}function f(n,t){
-this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t}function a(n,t,r,e){var u;return(u=n===pn)||(u=En[r],u=(n===u||n!==n&&u!==u)&&!kn.call(e,r)),u?t:n}function l(n){return nn(n)?Bn(n):{}}function p(n,t,r){if(typeof n!="function")throw new TypeError("Expected a function");return setTimeout(function(){n.apply(pn,r)},t)}function s(n,t){var r=true;return zn(n,function(n,e,u){return r=!!t(n,e,u)}),r}function h(n,t,r){for(var e=-1,u=n.length;++e0&&e(f)?r>1?y(f,r-1,e,u,o):n(o,f):u||(o[o.length]=f)}return o}function g(n,t){return n&&Cn(n,t,on)}function b(n,t){return v(t,function(t){return Y(n[t])})}function _(n,t){return n>t}function d(n,t,r,e,u){return n===t?true:null==n||null==t||!nn(n)&&!tn(t)?n!==n&&t!==t:j(n,t,d,r,e,u)}function j(n,t,r,e,u,o){var c=Vn(n),f=Vn(t),a="[object Array]",l="[object Array]";
-c||(a=Sn.call(n),a="[object Arguments]"==a?"[object Object]":a),f||(l=Sn.call(t),l="[object Arguments]"==l?"[object Object]":l);var p="[object Object]"==a&&!i(n),f="[object Object]"==l&&!i(t),l=a==l;o||(o=[]);var s=V(o,function(t){return t[0]===n});return s&&s[1]?s[1]==t:(o.push([n,t]),l&&!p?(r=c||isTypedArray(n)?$(n,t,r,e,u,o):q(n,t,a),o.pop(),r):2&u||(c=p&&kn.call(n,"__wrapped__"),a=f&&kn.call(t,"__wrapped__"),!c&&!a)?l?(r=z(n,t,r,e,u,o),o.pop(),r):false:(c=c?n.value():n,t=a?t.value():t,r=r(c,t,e,u,o),
-o.pop(),r))}function m(n){return typeof n=="function"?n:null==n?an:(typeof n=="object"?A:k)(n)}function w(n){n=null==n?n:Object(n);var t,r=[];for(t in n)r.push(t);return r}function x(n,t){return t>n}function O(n,t){var r=-1,e=X(n)?Array(n.length):[];return zn(n,function(n,u,o){e[++r]=t(n,u,o)}),e}function A(n){var t=on(n);return function(r){var e=t.length;if(null==r)return!e;for(r=Object(r);e--;){var u=t[e];if(!(u in r&&d(n[u],r[u],pn,3)))return false}return true}}function E(n,t){return n=Object(n),K(t,function(t,r){
-return r in n&&(t[r]=n[r]),t},{})}function k(n){return function(t){return null==t?pn:t[n]}}function N(n,t,r){var e=-1,u=n.length;for(0>t&&(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);++e1?r[u-1]:pn,o=n.length>3&&typeof o=="function"?(u--,o):pn;for(t=Object(t);++ei))return false;for(var c=-1,f=true,a=1&u?[]:pn;++c-1&&0==n%1&&t>n}function M(n){var t=n&&n.constructor;return n===(typeof t=="function"&&t.prototype||En);
-}function P(n){return n&&n.length?n[0]:pn}function U(n,t,r){var e=n?n.length:0;r=typeof r=="number"?0>r?qn(e+r,0):r:0,r=(r||0)-1;for(var u=t===t;++rarguments.length,zn)}function L(n,t){var r;if(typeof t!="function")throw new TypeError("Expected a function");return n=Hn(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=pn),r}}
-function Q(n){var t;if(typeof n!="function")throw new TypeError("Expected a function");return t=qn(t===pn?n.length-1:Hn(t),0),function(){for(var r=arguments,e=-1,u=qn(r.length-t,0),o=Array(u);++e-1&&0==n%1&&9007199254740991>=n}function nn(n){var t=typeof n;return!!n&&("object"==t||"function"==t)}function tn(n){return!!n&&typeof n=="object"}function rn(n){return typeof n=="number"||tn(n)&&"[object Number]"==Sn.call(n)}function en(n){return typeof n=="string"||!Vn(n)&&tn(n)&&"[object String]"==Sn.call(n)}function un(n){return typeof n=="string"?n:null==n?"":n+""}function on(n){var t=M(n);if(!t&&!X(n))return $n(Object(n));var r,e=C(n),u=!!e,e=e||[],o=e.length;
-for(r in n)!kn.call(n,r)||u&&("length"==r||J(r,o))||t&&"constructor"==r||e.push(r);return e}function cn(n){for(var t=-1,r=M(n),e=w(n),u=e.length,o=C(n),i=!!o,o=o||[],c=o.length;++t"'`]/g,vn=RegExp(hn.source),yn=/^(?:0|[1-9]\d*)$/,gn={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},bn={"function":true,object:true},_n=bn[typeof exports]&&exports&&!exports.nodeType?exports:pn,dn=bn[typeof module]&&module&&!module.nodeType?module:pn,jn=dn&&dn.exports===_n?_n:pn,mn=u(bn[typeof self]&&self),wn=u(bn[typeof window]&&window),xn=u(bn[typeof this]&&this),On=u(_n&&dn&&typeof global=="object"&&global)||wn!==(xn&&xn.window)&&wn||mn||xn||Function("return this")(),An=Array.prototype,En=Object.prototype,kn=En.hasOwnProperty,Nn=0,Sn=En.toString,Tn=On._,Fn=On.Reflect,Rn=Fn?Fn.a:pn,Bn=Object.create,Dn=En.propertyIsEnumerable,In=On.isFinite,$n=Object.keys,qn=Math.max;
-f.prototype=l(c.prototype),f.prototype.constructor=f;var zn=function(n,t){return function(r,e){if(null==r)return r;if(!X(r))return n(r,e);for(var u=r.length,o=t?u:-1,i=Object(r);(t?o--:++oe||o&&c&&a||!u&&a||!i){
-r=1;break n}if(!o&&e>r||f&&u&&i||!c&&i||!a){r=-1;break n}}r=0}return r||n.index-t.index}),k("value"))},c.tap=function(n,t){return t(n),n},c.thru=function(n,t){return t(n)},c.toArray=function(n){return X(n)?n.length?S(n):[]:fn(n)},c.values=fn,c.extend=Qn,ln(c,c),c.clone=function(n){return nn(n)?Vn(n)?S(n):R(n,on(n)):n},c.escape=function(n){return(n=un(n))&&vn.test(n)?n.replace(hn,o):n},c.every=function(n,t,r){return t=r?pn:t,s(n,m(t))},c.find=V,c.forEach=H,c.has=function(n,t){return null!=n&&kn.call(n,t);
-},c.head=P,c.identity=an,c.indexOf=U,c.isArguments=W,c.isArray=Vn,c.isBoolean=function(n){return true===n||false===n||tn(n)&&"[object Boolean]"==Sn.call(n)},c.isDate=function(n){return tn(n)&&"[object Date]"==Sn.call(n)},c.isEmpty=function(n){return X(n)&&(Vn(n)||en(n)||Y(n.splice)||W(n))?!n.length:!on(n).length},c.isEqual=function(n,t){return d(n,t)},c.isFinite=function(n){return typeof n=="number"&&In(n)},c.isFunction=Y,c.isNaN=function(n){return rn(n)&&n!=+n},c.isNull=function(n){return null===n},c.isNumber=rn,
-c.isObject=nn,c.isRegExp=function(n){return nn(n)&&"[object RegExp]"==Sn.call(n)},c.isString=en,c.isUndefined=function(n){return n===pn},c.last=function(n){var t=n?n.length:0;return t?n[t-1]:pn},c.max=function(n){return n&&n.length?h(n,an,_):pn},c.min=function(n){return n&&n.length?h(n,an,x):pn},c.noConflict=function(){return On._===this&&(On._=Tn),this},c.noop=function(){},c.reduce=K,c.result=function(n,t,r){return t=null==n?pn:n[t],t===pn&&(t=r),Y(t)?t.call(n):t},c.size=function(n){return null==n?0:(n=X(n)?n:on(n),
-n.length)},c.some=function(n,t,r){return t=r?pn:t,T(n,m(t))},c.uniqueId=function(n){var t=++Nn;return un(n)+t},c.each=H,c.first=P,ln(c,function(){var n={};return g(c,function(t,r){kn.call(c.prototype,r)||(n[r]=t)}),n}(),{chain:false}),c.VERSION="4.12.0",zn("pop join replace reverse split push shift sort splice unshift".split(" "),function(n){var t=(/^(?:replace|split)$/.test(n)?String.prototype:An)[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|join|replace|shift)$/.test(n);c.prototype[n]=function(){
-var n=arguments;if(e&&!this.__chain__){var u=this.value();return t.apply(Vn(u)?u:[],n)}return this[r](function(r){return t.apply(Vn(r)?r:[],n)})}}),c.prototype.toJSON=c.prototype.valueOf=c.prototype.value=function(){return F(this.__wrapped__,this.__actions__)},(wn||mn||{})._=c,typeof define=="function"&&typeof define.amd=="object"&&define.amd? define(function(){return c}):_n&&dn?(jn&&((dn.exports=c)._=c),_n._=c):On._=c}).call(this);
\ No newline at end of file
+;(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){return On(Object(n))}function r(n,t){return n.push.apply(n,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 x(t,function(t){return n[t]})}function o(n){return n&&n.Object===Object?n:null}function i(n){return fn[n]}function c(n){return n instanceof f?n:new f(n)}function f(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t}function a(n,t,r,e){
+var u;return(u=n===en)||(u=vn[r],u=(n===u||n!==n&&u!==u)&&!yn.call(e,r)),u?t:n}function l(n){return Q(n)?jn(n):{}}function p(n,t,r){if(typeof n!="function")throw new TypeError("Expected a function");return setTimeout(function(){n.apply(en,r)},t)}function s(n,t){var r=true;return En(n,function(n,e,u){return r=!!t(n,e,u)}),r}function h(n,t,r){for(var e=-1,u=n.length;++e0&&e(f)?t>1?y(f,t-1,e,u,o):r(o,f):u||(o[o.length]=f)}return o}function b(n,r){return n&&An(n,r,t)}function g(n,t){return v(t,function(t){return L(n[t])})}function _(n,t){return n>t}function j(n,t,r,e,u){return n===t?true:null==n||null==t||!Q(n)&&!W(t)?n!==n&&t!==t:d(n,t,j,r,e,u)}function d(n,t,r,e,u,o){var i=Tn(n),c=Tn(t),f="[object Array]",a="[object Array]";i||(f=gn.call(n),f="[object Arguments]"==f?"[object Object]":f),
+c||(a=gn.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=J(o,function(t){return t[0]===n});return p&&p[1]?p[1]==t:(o.push([n,t]),a&&!l?(r=i?I(n,t,r,e,u,o):q(n,t,f),o.pop(),r):2&u||(i=l&&yn.call(n,"__wrapped__"),f=c&&yn.call(t,"__wrapped__"),!i&&!f)?a?(r=$(n,t,r,e,u,o),o.pop(),r):false:(i=i?n.value():n,t=f?t.value():t,r=r(i,t,e,u,o),o.pop(),r))}function m(n){return typeof n=="function"?n:null==n?tn:(typeof n=="object"?E:w)(n);
+}function O(n,t){return t>n}function x(n,t){var r=-1,e=K(n)?Array(n.length):[];return En(n,function(n,u,o){e[++r]=t(n,u,o)}),e}function E(n){var r=t(n);return function(t){var e=r.length;if(null==t)return!e;for(t=Object(t);e--;){var u=r[e];if(!(u in t&&j(n[u],t[u],en,3)))return false}return true}}function A(n,t){return n=Object(n),P(t,function(t,r){return r in n&&(t[r]=n[r]),t},{})}function w(n){return function(t){return null==t?en:t[n]}}function k(n,t,r){var e=-1,u=n.length;for(0>t&&(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);++e1?r[u-1]:en,o=n.length>3&&typeof o=="function"?(u--,
+o):en;for(t=Object(t);++ei))return false;for(var c=-1,f=true,a=1&u?[]:en;++cr?xn(e+r,0):r:0,r=(r||0)-1;for(var u=t===t;++rr&&(r=xn(u+r,0)),t=m(t),u=e.length,r+=-1;++r-1?n[e]:en}function M(n,t){return En(n,m(t))}function P(n,t,r){return e(n,m(t),r,3>arguments.length,En)}function U(n,t){var r;if(typeof t!="function")throw new TypeError("Expected a function");
+return n=Bn(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=en),r}}function V(n){var t;if(typeof n!="function")throw new TypeError("Expected a function");return t=xn(t===en?n.length-1:Bn(t),0),function(){for(var r=arguments,e=-1,u=xn(r.length-t,0),o=Array(u);++e-1&&0==t%1&&9007199254740991>=t),t&&!L(n)}function L(n){return n=Q(n)?gn.call(n):"","[object Function]"==n||"[object GeneratorFunction]"==n}function Q(n){var t=typeof n;return!!n&&("object"==t||"function"==t)}function W(n){return!!n&&typeof n=="object"}function X(n){return typeof n=="number"||W(n)&&"[object Number]"==gn.call(n)}function Y(n){return typeof n=="string"||!Tn(n)&&W(n)&&"[object String]"==gn.call(n)}function Z(n){return typeof n=="string"?n:null==n?"":n+""}function nn(n){
+return n?u(n,t(n)):[]}function tn(n){return n}function rn(n,e,u){var o=t(e),i=g(e,o);null!=u||Q(e)&&(i.length||!o.length)||(u=e,e=n,n=this,i=g(e,t(e)));var c=!(Q(u)&&"chain"in u&&!u.chain),f=L(n);return En(i,function(t){var u=e[t];n[t]=u,f&&(n.prototype[t]=function(){var t=this.__chain__;if(c||t){var e=n(this.__wrapped__);return(e.__actions__=N(this.__actions__)).push({func:u,args:arguments,thisArg:n}),e.__chain__=t,e}return u.apply(n,r([this.value()],arguments))})}),n}var en,un=1/0,on=/[&<>"'`]/g,cn=RegExp(on.source),fn={
+"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},an=typeof exports=="object"&&exports,ln=an&&typeof module=="object"&&module,pn=o(typeof self=="object"&&self),sn=o(typeof global=="object"&&global)||pn||o(typeof this=="object"&&this)||Function("return this")(),hn=Array.prototype,vn=Object.prototype,yn=vn.hasOwnProperty,bn=0,gn=vn.toString,_n=sn._,jn=Object.create,dn=vn.propertyIsEnumerable,mn=sn.isFinite,On=Object.keys,xn=Math.max;f.prototype=l(c.prototype),f.prototype.constructor=f;
+var En=function(n,t){return function(r,e){if(null==r)return r;if(!K(r))return n(r,e);for(var u=r.length,o=t?u:-1,i=Object(r);(t?o--:++oe||o&&c&&a||!u&&a||!i){r=1;break n}if(!o&&e>r||f&&u&&i||!c&&i||!a){r=-1;break n}}r=0}return r||n.index-t.index}),w("value"))},c.tap=function(n,t){return t(n),n},
+c.thru=function(n,t){return t(n)},c.toArray=function(n){return K(n)?n.length?N(n):[]:nn(n)},c.values=nn,c.extend=In,rn(c,c),c.clone=function(n){return Q(n)?Tn(n)?N(n):T(n,t(n)):n},c.escape=function(n){return(n=Z(n))&&cn.test(n)?n.replace(on,i):n},c.every=function(n,t,r){return t=r?en:t,s(n,m(t))},c.find=J,c.forEach=M,c.has=function(n,t){return null!=n&&yn.call(n,t)},c.head=C,c.identity=tn,c.indexOf=G,c.isArguments=H,c.isArray=Tn,c.isBoolean=function(n){return true===n||false===n||W(n)&&"[object Boolean]"==gn.call(n);
+},c.isDate=function(n){return W(n)&&"[object Date]"==gn.call(n)},c.isEmpty=function(n){return K(n)&&(Tn(n)||Y(n)||L(n.splice)||H(n))?!n.length:!t(n).length},c.isEqual=function(n,t){return j(n,t)},c.isFinite=function(n){return typeof n=="number"&&mn(n)},c.isFunction=L,c.isNaN=function(n){return X(n)&&n!=+n},c.isNull=function(n){return null===n},c.isNumber=X,c.isObject=Q,c.isRegExp=function(n){return Q(n)&&"[object RegExp]"==gn.call(n)},c.isString=Y,c.isUndefined=function(n){return n===en},c.last=function(n){
+var t=n?n.length:0;return t?n[t-1]:en},c.max=function(n){return n&&n.length?h(n,tn,_):en},c.min=function(n){return n&&n.length?h(n,tn,O):en},c.noConflict=function(){return sn._===this&&(sn._=_n),this},c.noop=function(){},c.reduce=P,c.result=function(n,t,r){return t=null==n?en:n[t],t===en&&(t=r),L(t)?t.call(n):t},c.size=function(n){return null==n?0:(n=K(n)?n:t(n),n.length)},c.some=function(n,t,r){return t=r?en:t,S(n,m(t))},c.uniqueId=function(n){var t=++bn;return Z(n)+t},c.each=M,c.first=C,rn(c,function(){
+var n={};return b(c,function(t,r){yn.call(c.prototype,r)||(n[r]=t)}),n}(),{chain:false}),c.VERSION="4.13.0",En("pop join replace reverse split push shift sort splice unshift".split(" "),function(n){var t=(/^(?:replace|split)$/.test(n)?String.prototype:hn)[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|join|replace|shift)$/.test(n);c.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var u=this.value();return t.apply(Tn(u)?u:[],n)}return this[r](function(r){return t.apply(Tn(r)?r:[],n);
+})}}),c.prototype.toJSON=c.prototype.valueOf=c.prototype.value=function(){return F(this.__wrapped__,this.__actions__)},(pn||{})._=c,typeof define=="function"&&typeof define.amd=="object"&&define.amd? define(function(){return c}):ln?((ln.exports=c)._=c,an._=c):sn._=c}).call(this);
\ No newline at end of file
diff --git a/countBy.js b/countBy.js
index d8b0a516b..9162b9f1c 100644
--- a/countBy.js
+++ b/countBy.js
@@ -25,6 +25,7 @@ var hasOwnProperty = objectProto.hasOwnProperty;
* _.countBy([6.1, 4.2, 6.3], Math.floor);
* // => { '4': 1, '6': 2 }
*
+ * // The `_.property` iteratee shorthand.
* _.countBy(['one', 'two', 'three'], 'length');
* // => { '3': 2, '5': 1 }
*/
diff --git a/debounce.js b/debounce.js
index 0fcd6e67e..a36c8ac06 100644
--- a/debounce.js
+++ b/debounce.js
@@ -65,7 +65,7 @@ function debounce(func, wait, options) {
maxWait,
result,
timerId,
- lastCallTime = 0,
+ lastCallTime,
lastInvokeTime = 0,
leading = false,
maxing = false,
@@ -116,7 +116,7 @@ function debounce(func, wait, options) {
// Either this is the first call, activity has stopped and we're at the
// trailing edge, the system time has gone backwards and we're treating
// it as the trailing edge, or we've hit the `maxWait` limit.
- return (!lastCallTime || (timeSinceLastCall >= wait) ||
+ return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
(timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
}
@@ -130,7 +130,6 @@ function debounce(func, wait, options) {
}
function trailingEdge(time) {
- clearTimeout(timerId);
timerId = undefined;
// Only invoke if we have `lastArgs` which means `func` has been
@@ -143,11 +142,8 @@ function debounce(func, wait, options) {
}
function cancel() {
- if (timerId !== undefined) {
- clearTimeout(timerId);
- }
- lastCallTime = lastInvokeTime = 0;
- lastArgs = lastThis = timerId = undefined;
+ lastInvokeTime = 0;
+ lastArgs = lastCallTime = lastThis = timerId = undefined;
}
function flush() {
@@ -168,7 +164,6 @@ function debounce(func, wait, options) {
}
if (maxing) {
// Handle invocations in a tight loop.
- clearTimeout(timerId);
timerId = setTimeout(timerExpired, wait);
return invokeFunc(lastCallTime);
}
diff --git a/difference.js b/difference.js
index 65fdb1a7d..bd52f54ea 100644
--- a/difference.js
+++ b/difference.js
@@ -19,8 +19,8 @@ var baseDifference = require('./_baseDifference'),
* @see _.without, _.xor
* @example
*
- * _.difference([3, 2, 1], [4, 2]);
- * // => [3, 1]
+ * _.difference([2, 1], [2, 3]);
+ * // => [1]
*/
var difference = rest(function(array, values) {
return isArrayLikeObject(array)
diff --git a/differenceBy.js b/differenceBy.js
index 7ec2ae8a2..bbafa3272 100644
--- a/differenceBy.js
+++ b/differenceBy.js
@@ -22,8 +22,8 @@ var baseDifference = require('./_baseDifference'),
* @returns {Array} Returns the new array of filtered values.
* @example
*
- * _.differenceBy([3.1, 2.2, 1.3], [4.4, 2.5], Math.floor);
- * // => [3.1, 1.3]
+ * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);
+ * // => [1.2]
*
* // The `_.property` iteratee shorthand.
* _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');
diff --git a/endsWith.js b/endsWith.js
index f143f6e84..bf10f2562 100644
--- a/endsWith.js
+++ b/endsWith.js
@@ -12,7 +12,7 @@ var baseClamp = require('./_baseClamp'),
* @category String
* @param {string} [string=''] The string to search.
* @param {string} [target] The string to search for.
- * @param {number} [position=string.length] The position to search from.
+ * @param {number} [position=string.length] The position to search up to.
* @returns {boolean} Returns `true` if `string` ends with `target`,
* else `false`.
* @example
diff --git a/find.js b/find.js
index 83f0dbad0..4af928a10 100644
--- a/find.js
+++ b/find.js
@@ -1,8 +1,6 @@
-var baseEach = require('./_baseEach'),
- baseFind = require('./_baseFind'),
- baseFindIndex = require('./_baseFindIndex'),
- baseIteratee = require('./_baseIteratee'),
- isArray = require('./isArray');
+var findIndex = require('./findIndex'),
+ isArrayLike = require('./isArrayLike'),
+ values = require('./values');
/**
* Iterates over elements of `collection`, returning the first element
@@ -16,6 +14,7 @@ var baseEach = require('./_baseEach'),
* @param {Array|Object} collection The collection to search.
* @param {Array|Function|Object|string} [predicate=_.identity]
* The function invoked per iteration.
+ * @param {number} [fromIndex=0] The index to search from.
* @returns {*} Returns the matched element, else `undefined`.
* @example
*
@@ -40,13 +39,10 @@ var baseEach = require('./_baseEach'),
* _.find(users, 'active');
* // => object for 'barney'
*/
-function find(collection, predicate) {
- predicate = baseIteratee(predicate, 3);
- if (isArray(collection)) {
- var index = baseFindIndex(collection, predicate);
- return index > -1 ? collection[index] : undefined;
- }
- return baseFind(collection, predicate, baseEach);
+function find(collection, predicate, fromIndex) {
+ collection = isArrayLike(collection) ? collection : values(collection);
+ var index = findIndex(collection, predicate, fromIndex);
+ return index > -1 ? collection[index] : undefined;
}
module.exports = find;
diff --git a/findIndex.js b/findIndex.js
index 84acc7464..83af981f5 100644
--- a/findIndex.js
+++ b/findIndex.js
@@ -1,5 +1,9 @@
var baseFindIndex = require('./_baseFindIndex'),
- baseIteratee = require('./_baseIteratee');
+ baseIteratee = require('./_baseIteratee'),
+ toInteger = require('./toInteger');
+
+/* Built-in method references for those with the same name as other `lodash` methods. */
+var nativeMax = Math.max;
/**
* This method is like `_.find` except that it returns the index of the first
@@ -12,6 +16,7 @@ var baseFindIndex = require('./_baseFindIndex'),
* @param {Array} array The array to search.
* @param {Array|Function|Object|string} [predicate=_.identity]
* The function invoked per iteration.
+ * @param {number} [fromIndex=0] The index to search from.
* @returns {number} Returns the index of the found element, else `-1`.
* @example
*
@@ -36,10 +41,16 @@ var baseFindIndex = require('./_baseFindIndex'),
* _.findIndex(users, 'active');
* // => 2
*/
-function findIndex(array, predicate) {
- return (array && array.length)
- ? baseFindIndex(array, baseIteratee(predicate, 3))
- : -1;
+function findIndex(array, predicate, fromIndex) {
+ var length = array ? array.length : 0;
+ if (!length) {
+ return -1;
+ }
+ var index = fromIndex == null ? 0 : toInteger(fromIndex);
+ if (index < 0) {
+ index = nativeMax(length + index, 0);
+ }
+ return baseFindIndex(array, baseIteratee(predicate, 3), index);
}
module.exports = findIndex;
diff --git a/findKey.js b/findKey.js
index 16a9fd9ae..26fc234e2 100644
--- a/findKey.js
+++ b/findKey.js
@@ -1,4 +1,4 @@
-var baseFind = require('./_baseFind'),
+var baseFindKey = require('./_baseFindKey'),
baseForOwn = require('./_baseForOwn'),
baseIteratee = require('./_baseIteratee');
@@ -39,7 +39,7 @@ var baseFind = require('./_baseFind'),
* // => 'barney'
*/
function findKey(object, predicate) {
- return baseFind(object, baseIteratee(predicate, 3), baseForOwn, true);
+ return baseFindKey(object, baseIteratee(predicate, 3), baseForOwn);
}
module.exports = findKey;
diff --git a/findLast.js b/findLast.js
index d222a5588..4dde2de61 100644
--- a/findLast.js
+++ b/findLast.js
@@ -1,8 +1,6 @@
-var baseEachRight = require('./_baseEachRight'),
- baseFind = require('./_baseFind'),
- baseFindIndex = require('./_baseFindIndex'),
- baseIteratee = require('./_baseIteratee'),
- isArray = require('./isArray');
+var findLastIndex = require('./findLastIndex'),
+ isArrayLike = require('./isArrayLike'),
+ values = require('./values');
/**
* This method is like `_.find` except that it iterates over elements of
@@ -15,6 +13,7 @@ var baseEachRight = require('./_baseEachRight'),
* @param {Array|Object} collection The collection to search.
* @param {Array|Function|Object|string} [predicate=_.identity]
* The function invoked per iteration.
+ * @param {number} [fromIndex=collection.length-1] The index to search from.
* @returns {*} Returns the matched element, else `undefined`.
* @example
*
@@ -23,13 +22,10 @@ var baseEachRight = require('./_baseEachRight'),
* });
* // => 3
*/
-function findLast(collection, predicate) {
- predicate = baseIteratee(predicate, 3);
- if (isArray(collection)) {
- var index = baseFindIndex(collection, predicate, true);
- return index > -1 ? collection[index] : undefined;
- }
- return baseFind(collection, predicate, baseEachRight);
+function findLast(collection, predicate, fromIndex) {
+ collection = isArrayLike(collection) ? collection : values(collection);
+ var index = findLastIndex(collection, predicate, fromIndex);
+ return index > -1 ? collection[index] : undefined;
}
module.exports = findLast;
diff --git a/findLastIndex.js b/findLastIndex.js
index bf397d8ff..2caf34aec 100644
--- a/findLastIndex.js
+++ b/findLastIndex.js
@@ -1,5 +1,10 @@
var baseFindIndex = require('./_baseFindIndex'),
- baseIteratee = require('./_baseIteratee');
+ baseIteratee = require('./_baseIteratee'),
+ toInteger = require('./toInteger');
+
+/* Built-in method references for those with the same name as other `lodash` methods. */
+var nativeMax = Math.max,
+ nativeMin = Math.min;
/**
* This method is like `_.findIndex` except that it iterates over elements
@@ -12,6 +17,7 @@ var baseFindIndex = require('./_baseFindIndex'),
* @param {Array} array The array to search.
* @param {Array|Function|Object|string} [predicate=_.identity]
* The function invoked per iteration.
+ * @param {number} [fromIndex=array.length-1] The index to search from.
* @returns {number} Returns the index of the found element, else `-1`.
* @example
*
@@ -36,10 +42,19 @@ var baseFindIndex = require('./_baseFindIndex'),
* _.findLastIndex(users, 'active');
* // => 0
*/
-function findLastIndex(array, predicate) {
- return (array && array.length)
- ? baseFindIndex(array, baseIteratee(predicate, 3), true)
- : -1;
+function findLastIndex(array, predicate, fromIndex) {
+ var length = array ? array.length : 0;
+ if (!length) {
+ return -1;
+ }
+ var index = length - 1;
+ if (fromIndex !== undefined) {
+ index = toInteger(fromIndex);
+ index = fromIndex < 0
+ ? nativeMax(length + index, 0)
+ : nativeMin(index, length - 1);
+ }
+ return baseFindIndex(array, baseIteratee(predicate, 3), index, true);
}
module.exports = findLastIndex;
diff --git a/findLastKey.js b/findLastKey.js
index fb915df46..5eedc1d29 100644
--- a/findLastKey.js
+++ b/findLastKey.js
@@ -1,4 +1,4 @@
-var baseFind = require('./_baseFind'),
+var baseFindKey = require('./_baseFindKey'),
baseForOwnRight = require('./_baseForOwnRight'),
baseIteratee = require('./_baseIteratee');
@@ -39,7 +39,7 @@ var baseFind = require('./_baseFind'),
* // => 'pebbles'
*/
function findLastKey(object, predicate) {
- return baseFind(object, baseIteratee(predicate, 3), baseForOwnRight, true);
+ return baseFindKey(object, baseIteratee(predicate, 3), baseForOwnRight);
}
module.exports = findLastKey;
diff --git a/flow.js b/flow.js
index b87ad4dfa..462f2dbdc 100644
--- a/flow.js
+++ b/flow.js
@@ -18,7 +18,7 @@ var createFlow = require('./_createFlow');
* return n * n;
* }
*
- * var addSquare = _.flow(_.add, square);
+ * var addSquare = _.flow([_.add, square]);
* addSquare(1, 2);
* // => 9
*/
diff --git a/flowRight.js b/flowRight.js
index 6ae18a1da..a4eb8b616 100644
--- a/flowRight.js
+++ b/flowRight.js
@@ -17,7 +17,7 @@ var createFlow = require('./_createFlow');
* return n * n;
* }
*
- * var addSquare = _.flowRight(square, _.add);
+ * var addSquare = _.flowRight([square, _.add]);
* addSquare(1, 2);
* // => 9
*/
diff --git a/fp/_mapping.js b/fp/_mapping.js
index 178e4d6d4..a30c5dee4 100644
--- a/fp/_mapping.js
+++ b/fp/_mapping.js
@@ -84,12 +84,13 @@ exports.aryMethod = {
],
'3': [
'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith',
- 'getOr', 'inRange', 'intersectionBy', 'intersectionWith', 'invokeArgs',
- 'invokeArgsMap', 'isEqualWith', 'isMatchWith', 'flatMapDepth', 'mergeWith',
- 'orderBy', 'padChars', 'padCharsEnd', 'padCharsStart', 'pullAllBy',
- 'pullAllWith', 'reduce', 'reduceRight', 'replace', 'set', 'slice',
- 'sortedIndexBy', 'sortedLastIndexBy', 'transform', 'unionBy', 'unionWith',
- 'update', 'xorBy', 'xorWith', 'zipWith'
+ 'findFrom', 'findIndexFrom', 'findLastFrom', 'findLastIndexFrom', 'getOr',
+ 'includesFrom', 'indexOfFrom', 'inRange', 'intersectionBy', 'intersectionWith',
+ 'invokeArgs', 'invokeArgsMap', 'isEqualWith', 'isMatchWith', 'flatMapDepth',
+ 'lastIndexOfFrom', 'mergeWith', 'orderBy', 'padChars', 'padCharsEnd',
+ 'padCharsStart', 'pullAllBy', 'pullAllWith', 'reduce', 'reduceRight', 'replace',
+ 'set', 'slice', 'sortedIndexBy', 'sortedLastIndexBy', 'transform', 'unionBy',
+ 'unionWith', 'update', 'xorBy', 'xorWith', 'zipWith'
],
'4': [
'fill', 'setWith', 'updateWith'
@@ -110,10 +111,14 @@ exports.iterateeAry = {
'every': 1,
'filter': 1,
'find': 1,
+ 'findFrom': 1,
'findIndex': 1,
+ 'findIndexFrom': 1,
'findKey': 1,
'findLast': 1,
+ 'findLastFrom': 1,
'findLastIndex': 1,
+ 'findLastIndexFrom': 1,
'findLastKey': 1,
'flatMap': 1,
'flatMapDeep': 1,
@@ -148,7 +153,11 @@ exports.iterateeRearg = {
exports.methodRearg = {
'assignInWith': [1, 2, 0],
'assignWith': [1, 2, 0],
+ 'differenceBy': [1, 2, 0],
+ 'differenceWith': [1, 2, 0],
'getOr': [2, 1, 0],
+ 'intersectionBy': [1, 2, 0],
+ 'intersectionWith': [1, 2, 0],
'isEqualWith': [1, 2, 0],
'isMatchWith': [2, 1, 0],
'mergeWith': [1, 2, 0],
@@ -160,7 +169,11 @@ exports.methodRearg = {
'setWith': [3, 1, 2, 0],
'sortedIndexBy': [2, 1, 0],
'sortedLastIndexBy': [2, 1, 0],
+ 'unionBy': [1, 2, 0],
+ 'unionWith': [1, 2, 0],
'updateWith': [3, 1, 2, 0],
+ 'xorBy': [1, 2, 0],
+ 'xorWith': [1, 2, 0],
'zipWith': [1, 2, 0]
};
@@ -235,9 +248,16 @@ exports.realToAlias = (function() {
exports.remap = {
'curryN': 'curry',
'curryRightN': 'curryRight',
+ 'findFrom': 'find',
+ 'findIndexFrom': 'findIndex',
+ 'findLastFrom': 'findLast',
+ 'findLastIndexFrom': 'findLastIndex',
'getOr': 'get',
+ 'includesFrom': 'includes',
+ 'indexOfFrom': 'indexOf',
'invokeArgs': 'invoke',
'invokeArgsMap': 'invokeMap',
+ 'lastIndexOfFrom': 'lastIndexOf',
'padChars': 'pad',
'padCharsEnd': 'padEnd',
'padCharsStart': 'padStart',
@@ -284,7 +304,6 @@ exports.skipRearg = {
'range': true,
'rangeRight': true,
'subtract': true,
- 'without': true,
'zip': true,
'zipObject': true
};
diff --git a/fp/findFrom.js b/fp/findFrom.js
new file mode 100644
index 000000000..da8275e84
--- /dev/null
+++ b/fp/findFrom.js
@@ -0,0 +1,5 @@
+var convert = require('./convert'),
+ func = convert('findFrom', require('../find'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/findIndexFrom.js b/fp/findIndexFrom.js
new file mode 100644
index 000000000..32e98cb95
--- /dev/null
+++ b/fp/findIndexFrom.js
@@ -0,0 +1,5 @@
+var convert = require('./convert'),
+ func = convert('findIndexFrom', require('../findIndex'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/findLastFrom.js b/fp/findLastFrom.js
new file mode 100644
index 000000000..76c38fbad
--- /dev/null
+++ b/fp/findLastFrom.js
@@ -0,0 +1,5 @@
+var convert = require('./convert'),
+ func = convert('findLastFrom', require('../findLast'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/findLastIndexFrom.js b/fp/findLastIndexFrom.js
new file mode 100644
index 000000000..34c8176cf
--- /dev/null
+++ b/fp/findLastIndexFrom.js
@@ -0,0 +1,5 @@
+var convert = require('./convert'),
+ func = convert('findLastIndexFrom', require('../findLastIndex'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/includesFrom.js b/fp/includesFrom.js
new file mode 100644
index 000000000..683afdb46
--- /dev/null
+++ b/fp/includesFrom.js
@@ -0,0 +1,5 @@
+var convert = require('./convert'),
+ func = convert('includesFrom', require('../includes'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/indexOfFrom.js b/fp/indexOfFrom.js
new file mode 100644
index 000000000..d99c822f4
--- /dev/null
+++ b/fp/indexOfFrom.js
@@ -0,0 +1,5 @@
+var convert = require('./convert'),
+ func = convert('indexOfFrom', require('../indexOf'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/lastIndexOfFrom.js b/fp/lastIndexOfFrom.js
new file mode 100644
index 000000000..1ff6a0b5a
--- /dev/null
+++ b/fp/lastIndexOfFrom.js
@@ -0,0 +1,5 @@
+var convert = require('./convert'),
+ func = convert('lastIndexOfFrom', require('../lastIndexOf'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/stubArray.js b/fp/stubArray.js
new file mode 100644
index 000000000..cd604cb49
--- /dev/null
+++ b/fp/stubArray.js
@@ -0,0 +1,5 @@
+var convert = require('./convert'),
+ func = convert('stubArray', require('../stubArray'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/stubFalse.js b/fp/stubFalse.js
new file mode 100644
index 000000000..329666454
--- /dev/null
+++ b/fp/stubFalse.js
@@ -0,0 +1,5 @@
+var convert = require('./convert'),
+ func = convert('stubFalse', require('../stubFalse'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/stubObject.js b/fp/stubObject.js
new file mode 100644
index 000000000..c6c8ec472
--- /dev/null
+++ b/fp/stubObject.js
@@ -0,0 +1,5 @@
+var convert = require('./convert'),
+ func = convert('stubObject', require('../stubObject'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/stubString.js b/fp/stubString.js
new file mode 100644
index 000000000..701051e8b
--- /dev/null
+++ b/fp/stubString.js
@@ -0,0 +1,5 @@
+var convert = require('./convert'),
+ func = convert('stubString', require('../stubString'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/fp/stubTrue.js b/fp/stubTrue.js
new file mode 100644
index 000000000..9249082ce
--- /dev/null
+++ b/fp/stubTrue.js
@@ -0,0 +1,5 @@
+var convert = require('./convert'),
+ func = convert('stubTrue', require('../stubTrue'), require('./_falseOptions'));
+
+func.placeholder = require('./placeholder');
+module.exports = func;
diff --git a/identity.js b/identity.js
index 3732edb13..058296ffc 100644
--- a/identity.js
+++ b/identity.js
@@ -11,7 +11,7 @@
*
* var object = { 'user': 'fred' };
*
- * _.identity(object) === object;
+ * console.log(_.identity(object) === object);
* // => true
*/
function identity(value) {
diff --git a/indexOf.js b/indexOf.js
index 65616d454..657e4b5eb 100644
--- a/indexOf.js
+++ b/indexOf.js
@@ -32,11 +32,11 @@ function indexOf(array, value, fromIndex) {
if (!length) {
return -1;
}
- fromIndex = toInteger(fromIndex);
- if (fromIndex < 0) {
- fromIndex = nativeMax(length + fromIndex, 0);
+ var index = fromIndex == null ? 0 : toInteger(fromIndex);
+ if (index < 0) {
+ index = nativeMax(length + index, 0);
}
- return baseIndexOf(array, value, fromIndex);
+ return baseIndexOf(array, value, index);
}
module.exports = indexOf;
diff --git a/intersection.js b/intersection.js
index 1a7c7706c..1da06f8f5 100644
--- a/intersection.js
+++ b/intersection.js
@@ -17,7 +17,7 @@ var arrayMap = require('./_arrayMap'),
* @returns {Array} Returns the new array of intersecting values.
* @example
*
- * _.intersection([2, 1], [4, 2], [1, 2]);
+ * _.intersection([2, 1], [2, 3]);
* // => [2]
*/
var intersection = rest(function(arrays) {
diff --git a/intersectionBy.js b/intersectionBy.js
index 6afb79db6..5b8ffdcc2 100644
--- a/intersectionBy.js
+++ b/intersectionBy.js
@@ -21,7 +21,7 @@ var arrayMap = require('./_arrayMap'),
* @returns {Array} Returns the new array of intersecting values.
* @example
*
- * _.intersectionBy([2.1, 1.2], [4.3, 2.4], Math.floor);
+ * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);
* // => [2.1]
*
* // The `_.property` iteratee shorthand.
diff --git a/isBuffer.js b/isBuffer.js
index 404c22200..566c09f77 100644
--- a/isBuffer.js
+++ b/isBuffer.js
@@ -1,26 +1,14 @@
-var constant = require('./constant'),
- root = require('./_root');
-
-/** Used to determine if values are of the language type `Object`. */
-var objectTypes = {
- 'function': true,
- 'object': true
-};
+var root = require('./_root'),
+ stubFalse = require('./stubFalse');
/** Detect free variable `exports`. */
-var freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)
- ? exports
- : undefined;
+var freeExports = typeof exports == 'object' && exports;
/** Detect free variable `module`. */
-var freeModule = (objectTypes[typeof module] && module && !module.nodeType)
- ? module
- : undefined;
+var freeModule = freeExports && typeof module == 'object' && module;
/** Detect the popular CommonJS extension `module.exports`. */
-var moduleExports = (freeModule && freeModule.exports === freeExports)
- ? freeExports
- : undefined;
+var moduleExports = freeModule && freeModule.exports === freeExports;
/** Built-in value references. */
var Buffer = moduleExports ? root.Buffer : undefined;
@@ -42,7 +30,7 @@ var Buffer = moduleExports ? root.Buffer : undefined;
* _.isBuffer(new Uint8Array(2));
* // => false
*/
-var isBuffer = !Buffer ? constant(false) : function(value) {
+var isBuffer = !Buffer ? stubFalse : function(value) {
return value instanceof Buffer;
};
diff --git a/isNative.js b/isNative.js
index 2d5149ba4..8d9dd0588 100644
--- a/isNative.js
+++ b/isNative.js
@@ -1,34 +1,16 @@
-var isFunction = require('./isFunction'),
- isHostObject = require('./_isHostObject'),
- isObject = require('./isObject'),
- toSource = require('./_toSource');
+var baseIsNative = require('./_baseIsNative'),
+ isMaskable = require('./_isMaskable');
/**
- * Used to match `RegExp`
- * [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns).
- */
-var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
-
-/** Used to detect host constructors (Safari). */
-var reIsHostCtor = /^\[object .+?Constructor\]$/;
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to resolve the decompiled source of functions. */
-var funcToString = Function.prototype.toString;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/** Used to detect if a method is native. */
-var reIsNative = RegExp('^' +
- funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
- .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
-);
-
-/**
- * Checks if `value` is a native function.
+ * Checks if `value` is a pristine native function.
+ *
+ * **Note:** This method can't reliably detect native functions in the
+ * presence of the `core-js` package because `core-js` circumvents this kind
+ * of detection. Despite multiple requests, the `core-js` maintainer has made
+ * it clear: any attempt to fix the detection will be obstructed. As a result,
+ * we're left with little choice but to throw an error. Unfortunately, this
+ * also affects packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),
+ * which rely on `core-js`.
*
* @static
* @memberOf _
@@ -46,11 +28,10 @@ var reIsNative = RegExp('^' +
* // => false
*/
function isNative(value) {
- if (!isObject(value)) {
- return false;
+ if (isMaskable(value)) {
+ throw new Error('This method is not supported with `core-js`. Try https://github.com/es-shims.');
}
- var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
- return pattern.test(toSource(value));
+ return baseIsNative(value);
}
module.exports = isNative;
diff --git a/lastIndexOf.js b/lastIndexOf.js
index 7e9d988e5..1b8fbbc0e 100644
--- a/lastIndexOf.js
+++ b/lastIndexOf.js
@@ -41,7 +41,7 @@ function lastIndexOf(array, value, fromIndex) {
) + 1;
}
if (value !== value) {
- return indexOfNaN(array, index, true);
+ return indexOfNaN(array, index - 1, true);
}
while (index--) {
if (array[index] === value) {
diff --git a/lodash.js b/lodash.js
index 4bcb6ca88..3fef2c8e8 100644
--- a/lodash.js
+++ b/lodash.js
@@ -12,7 +12,7 @@
var undefined;
/** Used as the semantic version number. */
- var VERSION = '4.12.0';
+ var VERSION = '4.13.0';
/** Used as the size to enable large array optimizations. */
var LARGE_ARRAY_SIZE = 200;
@@ -116,7 +116,7 @@
/** Used to match property names within property paths. */
var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
reIsPlainProp = /^\w*$/,
- rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]/g;
+ rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(\.|\[\])(?:\4|$))/g;
/**
* Used to match `RegExp`
@@ -249,7 +249,7 @@
'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',
'Promise', 'Reflect', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError',
'Uint8Array', 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',
- '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'
+ '_', 'isFinite', 'parseInt', 'setTimeout'
];
/** Used to make template sourceURLs easier to identify. */
@@ -328,12 +328,6 @@
'`': '`'
};
- /** Used to determine if values are of the language type `Object`. */
- var objectTypes = {
- 'function': true,
- 'object': true
- };
-
/** Used to escape characters for inclusion in compiled string literals. */
var stringEscapes = {
'\\': '\\',
@@ -349,41 +343,25 @@
freeParseInt = parseInt;
/** Detect free variable `exports`. */
- var freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)
- ? exports
- : undefined;
+ var freeExports = typeof exports == 'object' && exports;
/** Detect free variable `module`. */
- var freeModule = (objectTypes[typeof module] && module && !module.nodeType)
- ? module
- : undefined;
+ var freeModule = freeExports && typeof module == 'object' && module;
/** Detect the popular CommonJS extension `module.exports`. */
- var moduleExports = (freeModule && freeModule.exports === freeExports)
- ? freeExports
- : undefined;
+ var moduleExports = freeModule && freeModule.exports === freeExports;
/** Detect free variable `global` from Node.js. */
- var freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global);
+ var freeGlobal = checkGlobal(typeof global == 'object' && global);
/** Detect free variable `self`. */
- var freeSelf = checkGlobal(objectTypes[typeof self] && self);
-
- /** Detect free variable `window`. */
- var freeWindow = checkGlobal(objectTypes[typeof window] && window);
+ var freeSelf = checkGlobal(typeof self == 'object' && self);
/** Detect `this` as the global object. */
- var thisGlobal = checkGlobal(objectTypes[typeof this] && this);
+ var thisGlobal = checkGlobal(typeof this == 'object' && this);
- /**
- * Used as a reference to the global object.
- *
- * The `this` value is used if it's the global object to avoid Greasemonkey's
- * restricted `window` object, otherwise the `window` object is used.
- */
- var root = freeGlobal ||
- ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) ||
- freeSelf || thisGlobal || Function('return this')();
+ /** Used as a reference to the global object. */
+ var root = freeGlobal || freeSelf || thisGlobal || Function('return this')();
/*--------------------------------------------------------------------------*/
@@ -439,7 +417,7 @@
* A specialized version of `baseAggregator` for arrays.
*
* @private
- * @param {Array} array The array to iterate over.
+ * @param {Array} [array] The array to iterate over.
* @param {Function} setter The function to set `accumulator` values.
* @param {Function} iteratee The iteratee to transform keys.
* @param {Object} accumulator The initial aggregated object.
@@ -447,7 +425,7 @@
*/
function arrayAggregator(array, setter, iteratee, accumulator) {
var index = -1,
- length = array.length;
+ length = array ? array.length : 0;
while (++index < length) {
var value = array[index];
@@ -461,13 +439,13 @@
* iteratee shorthands.
*
* @private
- * @param {Array} array The array to iterate over.
+ * @param {Array} [array] The array to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @returns {Array} Returns `array`.
*/
function arrayEach(array, iteratee) {
var index = -1,
- length = array.length;
+ length = array ? array.length : 0;
while (++index < length) {
if (iteratee(array[index], index, array) === false) {
@@ -482,12 +460,12 @@
* iteratee shorthands.
*
* @private
- * @param {Array} array The array to iterate over.
+ * @param {Array} [array] The array to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @returns {Array} Returns `array`.
*/
function arrayEachRight(array, iteratee) {
- var length = array.length;
+ var length = array ? array.length : 0;
while (length--) {
if (iteratee(array[length], length, array) === false) {
@@ -502,14 +480,14 @@
* iteratee shorthands.
*
* @private
- * @param {Array} array The array to iterate over.
+ * @param {Array} [array] The array to iterate over.
* @param {Function} predicate The function invoked per iteration.
* @returns {boolean} Returns `true` if all elements pass the predicate check,
* else `false`.
*/
function arrayEvery(array, predicate) {
var index = -1,
- length = array.length;
+ length = array ? array.length : 0;
while (++index < length) {
if (!predicate(array[index], index, array)) {
@@ -524,13 +502,13 @@
* iteratee shorthands.
*
* @private
- * @param {Array} array The array to iterate over.
+ * @param {Array} [array] The array to iterate over.
* @param {Function} predicate The function invoked per iteration.
* @returns {Array} Returns the new filtered array.
*/
function arrayFilter(array, predicate) {
var index = -1,
- length = array.length,
+ length = array ? array.length : 0,
resIndex = 0,
result = [];
@@ -548,26 +526,27 @@
* specifying an index to search from.
*
* @private
- * @param {Array} array The array to search.
+ * @param {Array} [array] The array to search.
* @param {*} target The value to search for.
* @returns {boolean} Returns `true` if `target` is found, else `false`.
*/
function arrayIncludes(array, value) {
- return !!array.length && baseIndexOf(array, value, 0) > -1;
+ var length = array ? array.length : 0;
+ return !!length && baseIndexOf(array, value, 0) > -1;
}
/**
* This function is like `arrayIncludes` except that it accepts a comparator.
*
* @private
- * @param {Array} array The array to search.
+ * @param {Array} [array] The array to search.
* @param {*} target The value to search for.
* @param {Function} comparator The comparator invoked per element.
* @returns {boolean} Returns `true` if `target` is found, else `false`.
*/
function arrayIncludesWith(array, value, comparator) {
var index = -1,
- length = array.length;
+ length = array ? array.length : 0;
while (++index < length) {
if (comparator(value, array[index])) {
@@ -582,13 +561,13 @@
* shorthands.
*
* @private
- * @param {Array} array The array to iterate over.
+ * @param {Array} [array] The array to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @returns {Array} Returns the new mapped array.
*/
function arrayMap(array, iteratee) {
var index = -1,
- length = array.length,
+ length = array ? array.length : 0,
result = Array(length);
while (++index < length) {
@@ -621,7 +600,7 @@
* iteratee shorthands.
*
* @private
- * @param {Array} array The array to iterate over.
+ * @param {Array} [array] The array to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @param {*} [accumulator] The initial value.
* @param {boolean} [initAccum] Specify using the first element of `array` as
@@ -630,7 +609,7 @@
*/
function arrayReduce(array, iteratee, accumulator, initAccum) {
var index = -1,
- length = array.length;
+ length = array ? array.length : 0;
if (initAccum && length) {
accumulator = array[++index];
@@ -646,7 +625,7 @@
* iteratee shorthands.
*
* @private
- * @param {Array} array The array to iterate over.
+ * @param {Array} [array] The array to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @param {*} [accumulator] The initial value.
* @param {boolean} [initAccum] Specify using the last element of `array` as
@@ -654,7 +633,7 @@
* @returns {*} Returns the accumulated value.
*/
function arrayReduceRight(array, iteratee, accumulator, initAccum) {
- var length = array.length;
+ var length = array ? array.length : 0;
if (initAccum && length) {
accumulator = array[--length];
}
@@ -669,14 +648,14 @@
* shorthands.
*
* @private
- * @param {Array} array The array to iterate over.
+ * @param {Array} [array] The array to iterate over.
* @param {Function} predicate The function invoked per iteration.
* @returns {boolean} Returns `true` if any element passes the predicate check,
* else `false`.
*/
function arraySome(array, predicate) {
var index = -1,
- length = array.length;
+ length = array ? array.length : 0;
while (++index < length) {
if (predicate(array[index], index, array)) {
@@ -687,23 +666,21 @@
}
/**
- * The base implementation of methods like `_.find` and `_.findKey`, without
- * support for iteratee shorthands, which iterates over `collection` using
- * `eachFunc`.
+ * The base implementation of methods like `_.findKey` and `_.findLastKey`,
+ * without support for iteratee shorthands, which iterates over `collection`
+ * using `eachFunc`.
*
* @private
* @param {Array|Object} collection The collection to search.
* @param {Function} predicate The function invoked per iteration.
* @param {Function} eachFunc The function to iterate over `collection`.
- * @param {boolean} [retKey] Specify returning the key of the found element
- * instead of the element itself.
* @returns {*} Returns the found element or its key, else `undefined`.
*/
- function baseFind(collection, predicate, eachFunc, retKey) {
+ function baseFindKey(collection, predicate, eachFunc) {
var result;
eachFunc(collection, function(value, key, collection) {
if (predicate(value, key, collection)) {
- result = retKey ? key : value;
+ result = key;
return false;
}
});
@@ -717,12 +694,13 @@
* @private
* @param {Array} array The array to search.
* @param {Function} predicate The function invoked per iteration.
+ * @param {number} fromIndex The index to search from.
* @param {boolean} [fromRight] Specify iterating from right to left.
* @returns {number} Returns the index of the matched value, else `-1`.
*/
- function baseFindIndex(array, predicate, fromRight) {
+ function baseFindIndex(array, predicate, fromIndex, fromRight) {
var length = array.length,
- index = fromRight ? length : -1;
+ index = fromIndex + (fromRight ? 1 : -1);
while ((fromRight ? index-- : ++index < length)) {
if (predicate(array[index], index, array)) {
@@ -1029,6 +1007,18 @@
return '\\' + stringEscapes[chr];
}
+ /**
+ * Gets the value at `key` of `object`.
+ *
+ * @private
+ * @param {Object} [object] The object to query.
+ * @param {string} key The key of the property to get.
+ * @returns {*} Returns the property value.
+ */
+ function getValue(object, key) {
+ return object == null ? undefined : object[key];
+ }
+
/**
* Gets the index at which the first occurrence of `NaN` is found in `array`.
*
@@ -1040,7 +1030,7 @@
*/
function indexOfNaN(array, fromIndex, fromRight) {
var length = array.length,
- index = fromIndex + (fromRight ? 0 : -1);
+ index = fromIndex + (fromRight ? 1 : -1);
while ((fromRight ? index-- : ++index < length)) {
var other = array[index];
@@ -1231,10 +1221,10 @@
* lodash.isFunction(lodash.bar);
* // => true
*
- * // Use `context` to mock `Date#getTime` use in `_.now`.
- * var mock = _.runInContext({
+ * // Use `context` to stub `Date#getTime` use in `_.now`.
+ * var stubbed = _.runInContext({
* 'Date': function() {
- * return { 'getTime': getTimeMock };
+ * return { 'getTime': stubGetTime };
* }
* });
*
@@ -1256,6 +1246,15 @@
objectProto = context.Object.prototype,
stringProto = context.String.prototype;
+ /** Used to detect overreaching core-js shims. */
+ var coreJsData = context['__core-js_shared__'];
+
+ /** Used to detect methods masquerading as native. */
+ var maskSrcKey = (function() {
+ var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
+ return uid ? ('Symbol(src)_1.' + uid) : '';
+ }());
+
/** Used to resolve the decompiled source of functions. */
var funcToString = context.Function.prototype.toString;
@@ -1289,15 +1288,16 @@
Reflect = context.Reflect,
Symbol = context.Symbol,
Uint8Array = context.Uint8Array,
- clearTimeout = context.clearTimeout,
enumerate = Reflect ? Reflect.enumerate : undefined,
getOwnPropertySymbols = Object.getOwnPropertySymbols,
iteratorSymbol = typeof (iteratorSymbol = Symbol && Symbol.iterator) == 'symbol' ? iteratorSymbol : undefined,
objectCreate = Object.create,
propertyIsEnumerable = objectProto.propertyIsEnumerable,
- setTimeout = context.setTimeout,
splice = arrayProto.splice;
+ /** Built-in method references that are mockable. */
+ var setTimeout = function(func, wait) { return context.setTimeout.call(root, func, wait); };
+
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeCeil = Math.ceil,
nativeFloor = Math.floor,
@@ -1419,19 +1419,21 @@
* `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`, `isBoolean`,
* `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`, `isEqualWith`,
* `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, `isMap`,
- * `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, `isNumber`,
- * `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, `isSafeInteger`,
- * `isSet`, `isString`, `isUndefined`, `isTypedArray`, `isWeakMap`, `isWeakSet`,
- * `join`, `kebabCase`, `last`, `lastIndexOf`, `lowerCase`, `lowerFirst`,
- * `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`, `min`, `minBy`, `multiply`,
- * `noConflict`, `noop`, `now`, `nth`, `pad`, `padEnd`, `padStart`, `parseInt`,
- * `pop`, `random`, `reduce`, `reduceRight`, `repeat`, `result`, `round`,
- * `runInContext`, `sample`, `shift`, `size`, `snakeCase`, `some`, `sortedIndex`,
- * `sortedIndexBy`, `sortedLastIndex`, `sortedLastIndexBy`, `startCase`,
- * `startsWith`, `subtract`, `sum`, `sumBy`, `template`, `times`, `toFinite`,
- * `toInteger`, `toJSON`, `toLength`, `toLower`, `toNumber`, `toSafeInteger`,
- * `toString`, `toUpper`, `trim`, `trimEnd`, `trimStart`, `truncate`, `unescape`,
- * `uniqueId`, `upperCase`, `upperFirst`, `value`, and `words`
+ * `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
+ * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
+ * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
+ * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
+ * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,
+ * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,
+ * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
+ * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
+ * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
+ * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,
+ * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,
+ * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,
+ * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,
+ * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,
+ * `upperFirst`, `value`, and `words`
*
* @name _
* @constructor
@@ -2732,7 +2734,7 @@
* The base implementation of `_.has` without support for deep paths.
*
* @private
- * @param {Object} object The object to query.
+ * @param {Object} [object] The object to query.
* @param {Array|string} key The key to check.
* @returns {boolean} Returns `true` if `key` exists, else `false`.
*/
@@ -2740,20 +2742,21 @@
// 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 hasOwnProperty.call(object, key) ||
- (typeof object == 'object' && key in object && getPrototype(object) === null);
+ return object != null &&
+ (hasOwnProperty.call(object, key) ||
+ (typeof object == 'object' && key in object && getPrototype(object) === null));
}
/**
* The base implementation of `_.hasIn` without support for deep paths.
*
* @private
- * @param {Object} object The object to query.
+ * @param {Object} [object] The object to query.
* @param {Array|string} key The key to check.
* @returns {boolean} Returns `true` if `key` exists, else `false`.
*/
function baseHasIn(object, key) {
- return key in Object(object);
+ return object != null && key in Object(object);
}
/**
@@ -3007,6 +3010,22 @@
return true;
}
+ /**
+ * The base implementation of `_.isNative` without bad shim checks.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a native function,
+ * else `false`.
+ */
+ function baseIsNative(value) {
+ if (!isObject(value) || isMasked(value)) {
+ return false;
+ }
+ var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
+ return pattern.test(toSource(value));
+ }
+
/**
* The base implementation of `_.iteratee`.
*
@@ -3375,6 +3394,9 @@
length = values.length,
seen = array;
+ if (array === values) {
+ values = copyArray(values);
+ }
if (iteratee) {
seen = arrayMap(array, baseUnary(iteratee));
}
@@ -4890,7 +4912,7 @@
var func = Math[methodName];
return function(number, precision) {
number = toNumber(number);
- precision = toInteger(precision);
+ precision = nativeMin(toInteger(precision), 292);
if (precision) {
// Shift with exponential notation to avoid floating-point issues.
// See [MDN](https://mdn.io/round#Examples) for more details.
@@ -5371,11 +5393,14 @@
* @returns {Array} Returns the match data of `object`.
*/
function getMatchData(object) {
- var result = toPairs(object),
+ var result = keys(object),
length = result.length;
while (length--) {
- result[length][2] = isStrictComparable(result[length][1]);
+ var key = result[length],
+ value = object[key];
+
+ result[length] = [key, value, isStrictComparable(value)];
}
return result;
}
@@ -5389,8 +5414,8 @@
* @returns {*} Returns the function if it's native, else `undefined`.
*/
function getNative(object, key) {
- var value = object[key];
- return isNative(value) ? value : undefined;
+ var value = getValue(object, key);
+ return baseIsNative(value) ? value : undefined;
}
/**
@@ -5419,9 +5444,7 @@
// Fallback for IE < 11.
if (!getOwnPropertySymbols) {
- getSymbols = function() {
- return [];
- };
+ getSymbols = stubArray;
}
/**
@@ -5753,6 +5776,26 @@
return !!data && func === data[0];
}
+ /**
+ * Checks if `func` has its source masked.
+ *
+ * @private
+ * @param {Function} func The function to check.
+ * @returns {boolean} Returns `true` if `func` is masked, else `false`.
+ */
+ function isMasked(func) {
+ return !!maskSrcKey && (maskSrcKey in func);
+ }
+
+ /**
+ * Checks if `func` is capable of being masked.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `func` is maskable, else `false`.
+ */
+ var isMaskable = !coreJsData ? stubFalse : isFunction;
+
/**
* Checks if `value` is likely a prototype object.
*
@@ -6149,8 +6192,8 @@
* @see _.without, _.xor
* @example
*
- * _.difference([3, 2, 1], [4, 2]);
- * // => [3, 1]
+ * _.difference([2, 1], [2, 3]);
+ * // => [1]
*/
var difference = rest(function(array, values) {
return isArrayLikeObject(array)
@@ -6175,8 +6218,8 @@
* @returns {Array} Returns the new array of filtered values.
* @example
*
- * _.differenceBy([3.1, 2.2, 1.3], [4.4, 2.5], Math.floor);
- * // => [3.1, 1.3]
+ * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);
+ * // => [1.2]
*
* // The `_.property` iteratee shorthand.
* _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');
@@ -6428,6 +6471,7 @@
* @param {Array} array The array to search.
* @param {Array|Function|Object|string} [predicate=_.identity]
* The function invoked per iteration.
+ * @param {number} [fromIndex=0] The index to search from.
* @returns {number} Returns the index of the found element, else `-1`.
* @example
*
@@ -6452,10 +6496,16 @@
* _.findIndex(users, 'active');
* // => 2
*/
- function findIndex(array, predicate) {
- return (array && array.length)
- ? baseFindIndex(array, getIteratee(predicate, 3))
- : -1;
+ function findIndex(array, predicate, fromIndex) {
+ var length = array ? array.length : 0;
+ if (!length) {
+ return -1;
+ }
+ var index = fromIndex == null ? 0 : toInteger(fromIndex);
+ if (index < 0) {
+ index = nativeMax(length + index, 0);
+ }
+ return baseFindIndex(array, getIteratee(predicate, 3), index);
}
/**
@@ -6469,6 +6519,7 @@
* @param {Array} array The array to search.
* @param {Array|Function|Object|string} [predicate=_.identity]
* The function invoked per iteration.
+ * @param {number} [fromIndex=array.length-1] The index to search from.
* @returns {number} Returns the index of the found element, else `-1`.
* @example
*
@@ -6493,10 +6544,19 @@
* _.findLastIndex(users, 'active');
* // => 0
*/
- function findLastIndex(array, predicate) {
- return (array && array.length)
- ? baseFindIndex(array, getIteratee(predicate, 3), true)
- : -1;
+ function findLastIndex(array, predicate, fromIndex) {
+ var length = array ? array.length : 0;
+ if (!length) {
+ return -1;
+ }
+ var index = length - 1;
+ if (fromIndex !== undefined) {
+ index = toInteger(fromIndex);
+ index = fromIndex < 0
+ ? nativeMax(length + index, 0)
+ : nativeMin(index, length - 1);
+ }
+ return baseFindIndex(array, getIteratee(predicate, 3), index, true);
}
/**
@@ -6643,11 +6703,11 @@
if (!length) {
return -1;
}
- fromIndex = toInteger(fromIndex);
- if (fromIndex < 0) {
- fromIndex = nativeMax(length + fromIndex, 0);
+ var index = fromIndex == null ? 0 : toInteger(fromIndex);
+ if (index < 0) {
+ index = nativeMax(length + index, 0);
}
- return baseIndexOf(array, value, fromIndex);
+ return baseIndexOf(array, value, index);
}
/**
@@ -6682,7 +6742,7 @@
* @returns {Array} Returns the new array of intersecting values.
* @example
*
- * _.intersection([2, 1], [4, 2], [1, 2]);
+ * _.intersection([2, 1], [2, 3]);
* // => [2]
*/
var intersection = rest(function(arrays) {
@@ -6708,7 +6768,7 @@
* @returns {Array} Returns the new array of intersecting values.
* @example
*
- * _.intersectionBy([2.1, 1.2], [4.3, 2.4], Math.floor);
+ * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);
* // => [2.1]
*
* // The `_.property` iteratee shorthand.
@@ -6838,7 +6898,7 @@
) + 1;
}
if (value !== value) {
- return indexOfNaN(array, index, true);
+ return indexOfNaN(array, index - 1, true);
}
while (index--) {
if (array[index] === value) {
@@ -6849,7 +6909,7 @@
}
/**
- * Gets the element at `n` index of `array`. If `n` is negative, the nth
+ * Gets the element at index `n` of `array`. If `n` is negative, the nth
* element from the end is returned.
*
* @static
@@ -6890,11 +6950,11 @@
* @returns {Array} Returns `array`.
* @example
*
- * var array = [1, 2, 3, 1, 2, 3];
+ * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
*
- * _.pull(array, 2, 3);
+ * _.pull(array, 'a', 'c');
* console.log(array);
- * // => [1, 1]
+ * // => ['b', 'b']
*/
var pull = rest(pullAll);
@@ -6912,11 +6972,11 @@
* @returns {Array} Returns `array`.
* @example
*
- * var array = [1, 2, 3, 1, 2, 3];
+ * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
*
- * _.pullAll(array, [2, 3]);
+ * _.pullAll(array, ['a', 'c']);
* console.log(array);
- * // => [1, 1]
+ * // => ['b', 'b']
*/
function pullAll(array, values) {
return (array && array.length && values && values.length)
@@ -6998,14 +7058,14 @@
* @returns {Array} Returns the new array of removed elements.
* @example
*
- * var array = [5, 10, 15, 20];
- * var evens = _.pullAt(array, 1, 3);
+ * var array = ['a', 'b', 'c', 'd'];
+ * var pulled = _.pullAt(array, [1, 3]);
*
* console.log(array);
- * // => [5, 15]
+ * // => ['a', 'c']
*
- * console.log(evens);
- * // => [10, 20]
+ * console.log(pulled);
+ * // => ['b', 'd']
*/
var pullAt = rest(function(array, indexes) {
indexes = baseFlatten(indexes, 1);
@@ -7145,9 +7205,6 @@
*
* _.sortedIndex([30, 50], 40);
* // => 1
- *
- * _.sortedIndex([4, 5], 4);
- * // => 0
*/
function sortedIndex(array, value) {
return baseSortedIndex(array, value);
@@ -7170,13 +7227,13 @@
* into `array`.
* @example
*
- * var dict = { 'thirty': 30, 'forty': 40, 'fifty': 50 };
+ * var objects = [{ 'x': 4 }, { 'x': 5 }];
*
- * _.sortedIndexBy(['thirty', 'fifty'], 'forty', _.propertyOf(dict));
- * // => 1
+ * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
+ * // => 0
*
* // The `_.property` iteratee shorthand.
- * _.sortedIndexBy([{ 'x': 4 }, { 'x': 5 }], { 'x': 4 }, 'x');
+ * _.sortedIndexBy(objects, { 'x': 4 }, 'x');
* // => 0
*/
function sortedIndexBy(array, value, iteratee) {
@@ -7196,8 +7253,8 @@
* @returns {number} Returns the index of the matched value, else `-1`.
* @example
*
- * _.sortedIndexOf([1, 1, 2, 2], 2);
- * // => 2
+ * _.sortedIndexOf([4, 5, 5, 5, 6], 5);
+ * // => 1
*/
function sortedIndexOf(array, value) {
var length = array ? array.length : 0;
@@ -7225,8 +7282,8 @@
* into `array`.
* @example
*
- * _.sortedLastIndex([4, 5], 4);
- * // => 1
+ * _.sortedLastIndex([4, 5, 5, 5, 6], 5);
+ * // => 4
*/
function sortedLastIndex(array, value) {
return baseSortedIndex(array, value, true);
@@ -7249,8 +7306,13 @@
* into `array`.
* @example
*
+ * var objects = [{ 'x': 4 }, { 'x': 5 }];
+ *
+ * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
+ * // => 1
+ *
* // The `_.property` iteratee shorthand.
- * _.sortedLastIndexBy([{ 'x': 4 }, { 'x': 5 }], { 'x': 4 }, 'x');
+ * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');
* // => 1
*/
function sortedLastIndexBy(array, value, iteratee) {
@@ -7270,7 +7332,7 @@
* @returns {number} Returns the index of the matched value, else `-1`.
* @example
*
- * _.sortedLastIndexOf([1, 1, 2, 2], 2);
+ * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);
* // => 3
*/
function sortedLastIndexOf(array, value) {
@@ -7510,8 +7572,8 @@
* @returns {Array} Returns the new array of combined values.
* @example
*
- * _.union([2, 1], [4, 2], [1, 2]);
- * // => [2, 1, 4]
+ * _.union([2], [1, 2]);
+ * // => [2, 1]
*/
var union = rest(function(arrays) {
return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));
@@ -7533,8 +7595,8 @@
* @returns {Array} Returns the new array of combined values.
* @example
*
- * _.unionBy([2.1, 1.2], [4.3, 2.4], Math.floor);
- * // => [2.1, 1.2, 4.3]
+ * _.unionBy([2.1], [1.2, 2.3], Math.floor);
+ * // => [2.1, 1.2]
*
* // The `_.property` iteratee shorthand.
* _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
@@ -7641,7 +7703,7 @@
* @returns {Array} Returns the new duplicate free array.
* @example
*
- * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
+ * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
*
* _.uniqWith(objects, _.isEqual);
* // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]
@@ -7736,7 +7798,7 @@
* @see _.difference, _.xor
* @example
*
- * _.without([1, 2, 1, 3], 1, 2);
+ * _.without([2, 1, 2, 3], 1, 2);
* // => [3]
*/
var without = rest(function(array, values) {
@@ -7760,8 +7822,8 @@
* @see _.difference, _.without
* @example
*
- * _.xor([2, 1], [4, 2]);
- * // => [1, 4]
+ * _.xor([2, 1], [2, 3]);
+ * // => [1, 3]
*/
var xor = rest(function(arrays) {
return baseXor(arrayFilter(arrays, isArrayLikeObject));
@@ -7783,8 +7845,8 @@
* @returns {Array} Returns the new array of filtered values.
* @example
*
- * _.xorBy([2.1, 1.2], [4.3, 2.4], Math.floor);
- * // => [1.2, 4.3]
+ * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);
+ * // => [1.2, 3.4]
*
* // The `_.property` iteratee shorthand.
* _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
@@ -8017,9 +8079,6 @@
*
* _(object).at(['a[0].b.c', 'a[1]']).value();
* // => [3, 4]
- *
- * _(['a', 'b', 'c']).at(0, 2).value();
- * // => ['a', 'c']
*/
var wrapperAt = rest(function(paths) {
paths = baseFlatten(paths, 1);
@@ -8282,6 +8341,7 @@
* _.countBy([6.1, 4.2, 6.3], Math.floor);
* // => { '4': 1, '6': 2 }
*
+ * // The `_.property` iteratee shorthand.
* _.countBy(['one', 'two', 'three'], 'length');
* // => { '3': 2, '5': 1 }
*/
@@ -8387,6 +8447,7 @@
* @param {Array|Object} collection The collection to search.
* @param {Array|Function|Object|string} [predicate=_.identity]
* The function invoked per iteration.
+ * @param {number} [fromIndex=0] The index to search from.
* @returns {*} Returns the matched element, else `undefined`.
* @example
*
@@ -8411,13 +8472,10 @@
* _.find(users, 'active');
* // => object for 'barney'
*/
- function find(collection, predicate) {
- predicate = getIteratee(predicate, 3);
- if (isArray(collection)) {
- var index = baseFindIndex(collection, predicate);
- return index > -1 ? collection[index] : undefined;
- }
- return baseFind(collection, predicate, baseEach);
+ function find(collection, predicate, fromIndex) {
+ collection = isArrayLike(collection) ? collection : values(collection);
+ var index = findIndex(collection, predicate, fromIndex);
+ return index > -1 ? collection[index] : undefined;
}
/**
@@ -8431,6 +8489,7 @@
* @param {Array|Object} collection The collection to search.
* @param {Array|Function|Object|string} [predicate=_.identity]
* The function invoked per iteration.
+ * @param {number} [fromIndex=collection.length-1] The index to search from.
* @returns {*} Returns the matched element, else `undefined`.
* @example
*
@@ -8439,13 +8498,10 @@
* });
* // => 3
*/
- function findLast(collection, predicate) {
- predicate = getIteratee(predicate, 3);
- if (isArray(collection)) {
- var index = baseFindIndex(collection, predicate, true);
- return index > -1 ? collection[index] : undefined;
- }
- return baseFind(collection, predicate, baseEachRight);
+ function findLast(collection, predicate, fromIndex) {
+ collection = isArrayLike(collection) ? collection : values(collection);
+ var index = findLastIndex(collection, predicate, fromIndex);
+ return index > -1 ? collection[index] : undefined;
}
/**
@@ -9203,7 +9259,6 @@
* @static
* @memberOf _
* @since 2.4.0
- * @type {Function}
* @category Date
* @returns {number} Returns the timestamp.
* @example
@@ -9211,9 +9266,11 @@
* _.defer(function(stamp) {
* console.log(_.now() - stamp);
* }, _.now());
- * // => Logs the number of milliseconds it took for the deferred function to be invoked.
+ * // => Logs the number of milliseconds it took for the deferred invocation.
*/
- var now = Date.now;
+ function now() {
+ return Date.now();
+ }
/*------------------------------------------------------------------------*/
@@ -9317,7 +9374,7 @@
* The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
* may be used as a placeholder for partially applied arguments.
*
- * **Note:** Unlike native `Function#bind` this method doesn't set the "length"
+ * **Note:** Unlike native `Function#bind`, this method doesn't set the "length"
* property of bound functions.
*
* @static
@@ -9557,7 +9614,7 @@
maxWait,
result,
timerId,
- lastCallTime = 0,
+ lastCallTime,
lastInvokeTime = 0,
leading = false,
maxing = false,
@@ -9608,7 +9665,7 @@
// Either this is the first call, activity has stopped and we're at the
// trailing edge, the system time has gone backwards and we're treating
// it as the trailing edge, or we've hit the `maxWait` limit.
- return (!lastCallTime || (timeSinceLastCall >= wait) ||
+ return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
(timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
}
@@ -9622,7 +9679,6 @@
}
function trailingEdge(time) {
- clearTimeout(timerId);
timerId = undefined;
// Only invoke if we have `lastArgs` which means `func` has been
@@ -9635,11 +9691,8 @@
}
function cancel() {
- if (timerId !== undefined) {
- clearTimeout(timerId);
- }
- lastCallTime = lastInvokeTime = 0;
- lastArgs = lastThis = timerId = undefined;
+ lastInvokeTime = 0;
+ lastArgs = lastCallTime = lastThis = timerId = undefined;
}
function flush() {
@@ -9660,7 +9713,6 @@
}
if (maxing) {
// Handle invocations in a tight loop.
- clearTimeout(timerId);
timerId = setTimeout(timerExpired, wait);
return invokeFunc(lastCallTime);
}
@@ -9884,7 +9936,7 @@
*
* var func = _.overArgs(function(x, y) {
* return [x, y];
- * }, square, doubled);
+ * }, [square, doubled]);
*
* func(9, 3);
* // => [81, 6]
@@ -10001,7 +10053,7 @@
*
* var rearged = _.rearg(function(a, b, c) {
* return [a, b, c];
- * }, 2, 0, 1);
+ * }, [2, 0, 1]);
*
* rearged('b', 'c', 'a')
* // => ['a', 'b', 'c']
@@ -10640,7 +10692,7 @@
* _.isBuffer(new Uint8Array(2));
* // => false
*/
- var isBuffer = !Buffer ? constant(false) : function(value) {
+ var isBuffer = !Buffer ? stubFalse : function(value) {
return value instanceof Buffer;
};
@@ -11140,7 +11192,15 @@
}
/**
- * Checks if `value` is a native function.
+ * Checks if `value` is a pristine native function.
+ *
+ * **Note:** This method can't reliably detect native functions in the
+ * presence of the `core-js` package because `core-js` circumvents this kind
+ * of detection. Despite multiple requests, the `core-js` maintainer has made
+ * it clear: any attempt to fix the detection will be obstructed. As a result,
+ * we're left with little choice but to throw an error. Unfortunately, this
+ * also affects packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),
+ * which rely on `core-js`.
*
* @static
* @memberOf _
@@ -11158,11 +11218,10 @@
* // => false
*/
function isNative(value) {
- if (!isObject(value)) {
- return false;
+ if (isMaskable(value)) {
+ throw new Error('This method is not supported with `core-js`. Try https://github.com/es-shims.');
}
- var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
- return pattern.test(toSource(value));
+ return baseIsNative(value);
}
/**
@@ -11624,7 +11683,7 @@
/**
* Converts `value` to an integer.
*
- * **Note:** This function is loosely based on
+ * **Note:** This method is loosely based on
* [`ToInteger`](http://www.ecma-international.org/ecma-262/6.0/#sec-tointeger).
*
* @static
@@ -11978,9 +12037,6 @@
*
* _.at(object, ['a[0].b.c', 'a[1]']);
* // => [3, 4]
- *
- * _.at(['a', 'b', 'c'], 0, 2);
- * // => ['a', 'c']
*/
var at = rest(function(object, paths) {
return baseAt(object, baseFlatten(paths, 1));
@@ -12113,7 +12169,7 @@
* // => 'barney'
*/
function findKey(object, predicate) {
- return baseFind(object, getIteratee(predicate, 3), baseForOwn, true);
+ return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);
}
/**
@@ -12153,7 +12209,7 @@
* // => 'pebbles'
*/
function findLastKey(object, predicate) {
- return baseFind(object, getIteratee(predicate, 3), baseForOwnRight, true);
+ return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);
}
/**
@@ -13012,15 +13068,16 @@
* An alternative to `_.reduce`; this method transforms `object` to a new
* `accumulator` object which is the result of running each of its own
* enumerable string keyed properties thru `iteratee`, with each invocation
- * potentially mutating the `accumulator` object. The iteratee is invoked
- * with four arguments: (accumulator, value, key, object). Iteratee functions
- * may exit iteration early by explicitly returning `false`.
+ * potentially mutating the `accumulator` object. If `accumulator` is not
+ * provided, a new object with the same `[[Prototype]]` will be used. The
+ * iteratee is invoked with four arguments: (accumulator, value, key, object).
+ * Iteratee functions may exit iteration early by explicitly returning `false`.
*
* @static
* @memberOf _
* @since 1.3.0
* @category Object
- * @param {Array|Object} object The object to iterate over.
+ * @param {Object} object The object to iterate over.
* @param {Function} [iteratee=_.identity] The function invoked per iteration.
* @param {*} [accumulator] The custom accumulator value.
* @returns {*} Returns the accumulated value.
@@ -13442,7 +13499,7 @@
* @category String
* @param {string} [string=''] The string to search.
* @param {string} [target] The string to search for.
- * @param {number} [position=string.length] The position to search from.
+ * @param {number} [position=string.length] The position to search up to.
* @returns {boolean} Returns `true` if `string` ends with `target`,
* else `false`.
* @example
@@ -14527,7 +14584,7 @@
* }
* };
*
- * _.bindAll(view, 'onClick');
+ * _.bindAll(view, ['onClick']);
* jQuery(element).on('click', view.onClick);
* // => Logs 'clicked docs' when clicked.
*/
@@ -14608,7 +14665,7 @@
* { 'user': 'fred', 'age': 40 }
* ];
*
- * _.filter(users, _.conforms({ 'age': _.partial(_.gt, _, 38) }));
+ * _.filter(users, _.conforms({ 'age': function(n) { return n > 38; } }));
* // => [{ 'user': 'fred', 'age': 40 }]
*/
function conforms(source) {
@@ -14626,10 +14683,12 @@
* @returns {Function} Returns the new constant function.
* @example
*
- * var object = { 'user': 'fred' };
- * var getter = _.constant(object);
+ * var objects = _.times(2, _.constant({ 'a': 1 }));
*
- * getter() === object;
+ * console.log(objects);
+ * // => [{ 'a': 1 }, { 'a': 1 }]
+ *
+ * console.log(objects[0] === objects[1]);
* // => true
*/
function constant(value) {
@@ -14656,7 +14715,7 @@
* return n * n;
* }
*
- * var addSquare = _.flow(_.add, square);
+ * var addSquare = _.flow([_.add, square]);
* addSquare(1, 2);
* // => 9
*/
@@ -14679,7 +14738,7 @@
* return n * n;
* }
*
- * var addSquare = _.flowRight(square, _.add);
+ * var addSquare = _.flowRight([square, _.add]);
* addSquare(1, 2);
* // => 9
*/
@@ -14698,7 +14757,7 @@
*
* var object = { 'user': 'fred' };
*
- * _.identity(object) === object;
+ * console.log(_.identity(object) === object);
* // => true
*/
function identity(value) {
@@ -14959,8 +15018,7 @@
}
/**
- * A no-operation function that returns `undefined` regardless of the
- * arguments it receives.
+ * A method that returns `undefined`.
*
* @static
* @memberOf _
@@ -14968,17 +15026,15 @@
* @category Util
* @example
*
- * var object = { 'user': 'fred' };
- *
- * _.noop(object) === undefined;
- * // => true
+ * _.times(2, _.noop);
+ * // => [undefined, undefined]
*/
function noop() {
// No operation performed.
}
/**
- * Creates a function that gets the argument at `n` index. If `n` is negative,
+ * Creates a function that gets the argument at index `n`. If `n` is negative,
* the nth argument from the end is returned.
*
* @static
@@ -15017,7 +15073,7 @@
* @returns {Function} Returns the new function.
* @example
*
- * var func = _.over(Math.max, Math.min);
+ * var func = _.over([Math.max, Math.min]);
*
* func(1, 2, 3, 4);
* // => [4, 1]
@@ -15037,7 +15093,7 @@
* @returns {Function} Returns the new function.
* @example
*
- * var func = _.overEvery(Boolean, isFinite);
+ * var func = _.overEvery([Boolean, isFinite]);
*
* func('1');
* // => true
@@ -15063,7 +15119,7 @@
* @returns {Function} Returns the new function.
* @example
*
- * var func = _.overSome(Boolean, isFinite);
+ * var func = _.overSome([Boolean, isFinite]);
*
* func('1');
* // => true
@@ -15210,6 +15266,101 @@
*/
var rangeRight = createRange(true);
+ /**
+ * A method that returns a new empty array.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.13.0
+ * @category Util
+ * @returns {Array} Returns the new empty array.
+ * @example
+ *
+ * var arrays = _.times(2, _.stubArray);
+ *
+ * console.log(arrays);
+ * // => [[], []]
+ *
+ * console.log(arrays[0] === arrays[1]);
+ * // => false
+ */
+ function stubArray() {
+ return [];
+ }
+
+ /**
+ * A method that returns `false`.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.13.0
+ * @category Util
+ * @returns {boolean} Returns `false`.
+ * @example
+ *
+ * _.times(2, _.stubFalse);
+ * // => [false, false]
+ */
+ function stubFalse() {
+ return false;
+ }
+
+ /**
+ * A method that returns a new empty object.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.13.0
+ * @category Util
+ * @returns {Object} Returns the new empty object.
+ * @example
+ *
+ * var objects = _.times(2, _.stubObject);
+ *
+ * console.log(objects);
+ * // => [{}, {}]
+ *
+ * console.log(objects[0] === objects[1]);
+ * // => false
+ */
+ function stubObject() {
+ return {};
+ }
+
+ /**
+ * A method that returns an empty string.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.13.0
+ * @category Util
+ * @returns {string} Returns the empty string.
+ * @example
+ *
+ * _.times(2, _.stubString);
+ * // => ['', '']
+ */
+ function stubString() {
+ return '';
+ }
+
+ /**
+ * A method that returns `true`.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.13.0
+ * @category Util
+ * @returns {boolean} Returns `true`.
+ * @example
+ *
+ * _.times(2, _.stubTrue);
+ * // => [true, true]
+ */
+ function stubTrue() {
+ return true;
+ }
+
/**
* Invokes the iteratee `n` times, returning an array of the results of
* each invocation. The iteratee is invoked with one argument; (index).
@@ -15226,8 +15377,8 @@
* _.times(3, String);
* // => ['0', '1', '2']
*
- * _.times(4, _.constant(true));
- * // => [true, true, true, true]
+ * _.times(4, _.constant(0));
+ * // => [0, 0, 0, 0]
*/
function times(n, iteratee) {
n = toInteger(n);
@@ -15263,15 +15414,6 @@
*
* _.toPath('a[0].b.c');
* // => ['a', '0', 'b', 'c']
- *
- * var path = ['a', 'b', 'c'],
- * newPath = _.toPath(path);
- *
- * console.log(newPath);
- * // => ['a', 'b', 'c']
- *
- * console.log(path === newPath);
- * // => false
*/
function toPath(value) {
if (isArray(value)) {
@@ -15910,6 +16052,11 @@
lodash.meanBy = meanBy;
lodash.min = min;
lodash.minBy = minBy;
+ lodash.stubArray = stubArray;
+ lodash.stubFalse = stubFalse;
+ lodash.stubObject = stubObject;
+ lodash.stubString = stubString;
+ lodash.stubTrue = stubTrue;
lodash.multiply = multiply;
lodash.nth = nth;
lodash.noConflict = noConflict;
@@ -16216,7 +16363,7 @@
// also prevents errors in cases where Lodash is loaded by a script tag in the
// presence of an AMD loader. See http://requirejs.org/docs/errors.html#mismatch
// for more details. Use `_.noConflict` to remove Lodash from the global object.
- (freeWindow || freeSelf || {})._ = _;
+ (freeSelf || {})._ = _;
// Some AMD build optimizers like r.js check for condition patterns like the following:
if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {
@@ -16227,11 +16374,9 @@
});
}
// Check for `exports` after `define` in case a build optimizer adds an `exports` object.
- else if (freeExports && freeModule) {
+ else if (freeModule) {
// Export for Node.js.
- if (moduleExports) {
- (freeModule.exports = _)._ = _;
- }
+ (freeModule.exports = _)._ = _;
// Export for CommonJS support.
freeExports._ = _;
}
diff --git a/lodash.min.js b/lodash.min.js
index 9f27fc1b7..66f11d87c 100644
--- a/lodash.min.js
+++ b/lodash.min.js
@@ -2,124 +2,126 @@
* @license
* lodash lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
*/
-;(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.length;++u=t?t:r),
-n!==T&&(t=t>=n?t:n)),t}function nn(t,n,r,e,o,i,f){var c;if(e&&(c=i?e(t,o,i,f):e(t)),c!==T)return c;if(!Ue(t))return t;if(o=ai(t)){if(c=Tr(t),!n)return cr(t,c)}else{var a=Pr(t),l="[object Function]"==a||"[object GeneratorFunction]"==a;if(li(t))return er(t,n);if("[object Object]"==a||"[object Arguments]"==a||l&&!i){if(C(t))return i?t:{};if(c=qr(l?{}:t),!n)return lr(t,Qt(c,t))}else{if(!Ct[a])return i?t:{};c=Vr(t,a,nn,n)}}if(f||(f=new Zt),i=f.get(t))return i;if(f.set(t,c),!o)var s=r?vn(t,nu,Nr):nu(t);
-return u(s||t,function(u,o){s&&(o=u,u=t[o]),Kt(c,o,nn(u,n,r,e,o,t,f))}),c}function rn(t){var n=nu(t),r=n.length;return function(e){if(null==e)return!r;for(var u=r;u--;){var o=n[u],i=t[o],f=e[o];if(f===T&&!(o in Object(e))||!i(f))return false}return true}}function en(t){return Ue(t)?zu(t):{}}function un(t,n,r){if(typeof t!="function")throw new du("Expected a function");return Du(function(){t.apply(T,r)},n)}function on(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,O(r))),e?(o=a,
-i=false):n.length>=200&&(o=E,i=false,n=new $t(n));t:for(;++u0&&r(f)?n>1?ln(f,n-1,r,e,u):s(u,f):e||(u[u.length]=f)}return u}function sn(t,n){return t&&bo(t,n,nu)}function hn(t,n){return t&&xo(t,n,nu)}function pn(t,n){return f(n,function(n){return Me(t[n])})}function _n(t,n){n=Qr(n,t)?[n]:nr(n);for(var r=0,e=n.length;null!=t&&e>r;)t=t[ue(n[r++])];return r&&r==e?t:T}function vn(t,n,r){return n=n(t),ai(t)?n:s(n,r(t))}function gn(t,n){return t>n}function dn(t,n){return wu.call(t,n)||typeof t=="object"&&n in t&&null===Pu(Object(t));
-}function yn(t,n){return n in Object(t)}function bn(t,n,r){for(var e=r?a:c,u=t[0].length,o=t.length,i=o,f=Array(o),s=1/0,h=[];i--;){var p=t[i];i&&n&&(p=l(p,O(n))),s=Ku(p.length,s),f[i]=!r&&(n||u>=120&&p.length>=120)?new $t(i&&p):T}var p=t[0],_=-1,v=f[0];t:for(;++_h.length;){var g=p[_],d=n?n(g):g,g=r||0!==g?g:0;if(v?!E(v,d):!e(h,d,r)){for(i=o;--i;){var y=f[i];if(y?!E(y,d):!e(t[i],d,r))continue t}v&&v.push(d),h.push(g)}}return h}function xn(t,n,r){var e={};return sn(t,function(t,u,o){n(e,r(t),u,o);
-}),e}function jn(t,n,e){return Qr(n,t)||(n=nr(n),t=ee(t,n),n=le(n)),n=null==t?t:t[ue(n)],null==n?T:r(n,t,e)}function wn(t,n,r,e,u){if(t===n)n=true;else if(null==t||null==n||!Ue(t)&&!De(n))n=t!==t&&n!==n;else t:{var o=ai(t),i=ai(n),f="[object Array]",c="[object Array]";o||(f=Pr(t),f="[object Arguments]"==f?"[object Object]":f),i||(c=Pr(n),c="[object Arguments]"==c?"[object Object]":c);var a="[object Object]"==f&&!C(t),i="[object Object]"==c&&!C(n);if((c=f==c)&&!a)u||(u=new Zt),n=o||qe(t)?Lr(t,n,wn,r,e,u):Mr(t,n,f,wn,r,e,u);else{
-if(!(2&e)&&(o=a&&wu.call(t,"__wrapped__"),f=i&&wu.call(n,"__wrapped__"),o||f)){t=o?t.value():t,n=f?n.value():n,u||(u=new Zt),n=wn(t,n,r,e,u);break t}if(c)n:if(u||(u=new Zt),o=2&e,f=nu(t),i=f.length,c=nu(n).length,i==c||o){for(a=i;a--;){var l=f[a];if(!(o?l in n:dn(n,l))){n=false;break n}}if(c=u.get(t))n=c==n;else{c=true,u.set(t,n);for(var s=o;++at}function En(t,n){var r=-1,e=We(t)?Array(t.length):[];return go(t,function(t,u,o){e[++r]=n(t,u,o)}),e}function In(t){var n=Fr(t);return 1==n.length&&n[0][2]?ne(n[0][0],n[0][1]):function(r){return r===t||mn(r,t,n)}}function Sn(t,n){return Qr(t)&&n===n&&!Ue(n)?ne(ue(t),n):function(r){
-var e=Xe(r,t);return e===T&&e===n?tu(r,t):wn(n,e,T,3)}}function Rn(t,n,r,e,o){if(t!==n){if(!ai(n)&&!qe(n))var i=ru(n);u(i||n,function(u,f){if(i&&(f=u,u=n[f]),Ue(u)){o||(o=new Zt);var c=f,a=o,l=t[c],s=n[c],h=a.get(s);if(h)Vt(t,c,h);else{var h=e?e(l,s,c+"",t,n,a):T,p=h===T;p&&(h=s,ai(s)||qe(s)?ai(l)?h=l:Be(l)?h=cr(l):(p=false,h=nn(s,true)):Ne(s)||Re(s)?Re(l)?h=He(l):!Ue(l)||r&&Me(l)?(p=false,h=nn(s,true)):h=l:p=false),a.set(s,h),p&&Rn(h,s,r,e,a),a["delete"](s),Vt(t,c,h)}}else c=e?e(t[f],u,f+"",t,n,o):T,c===T&&(c=u),
-Vt(t,f,c)})}}function Wn(t,n){var r=t.length;return r?(n+=0>n?r:0,Yr(n,r)?t[n]:T):void 0}function Bn(t,n,r){var e=-1;return n=l(n.length?n:[cu],O(Ur())),t=En(t,function(t){return{a:l(n,function(n){return n(t)}),b:++e,c:t}}),j(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 Ln(t,n){return t=Object(t),h(n,function(n,r){return r in t&&(n[r]=t[r]),n},{})}function Mn(t,n){for(var r=-1,e=vn(t,ru,Oo),u=e.length,o={};++rn||n>9007199254740991)return r;do n%2&&(r+=t),(n=Nu(n/2))&&(t+=t);while(n);return r}function Nn(t,n,r,e){n=Qr(n,t)?[n]:nr(n);for(var u=-1,o=n.length,i=o-1,f=t;null!=f&&++un&&(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=Array(u);++e=u){for(;u>e;){var o=e+u>>>1,i=t[o];null!==i&&!Te(i)&&(r?n>=i:n>i)?e=o+1:u=o}return u}return qn(t,n,cu,r)}function qn(t,n,r,e){n=r(n);for(var u=0,o=t?t.length:0,i=n!==n,f=null===n,c=Te(n),a=n===T;o>u;){var l=Nu((u+o)/2),s=r(t[l]),h=s!==T,p=null===s,_=s===s,v=Te(s);(i?e||_:a?_&&(e||h):f?_&&h&&(e||!p):c?_&&h&&!p&&(e||!v):p||v?0:e?n>=s:n>s)?u=l+1:o=l;
-}return Ku(o,4294967294)}function Vn(t,n){for(var r=-1,e=t.length,u=0,o=[];++r=200){if(u=n?null:wo(t))return F(u);i=false,u=E,l=new $t}else l=n?[]:f;t:for(;++ee?n[e]:T);return i}function tr(t){return Be(t)?t:[]}function nr(t){return ai(t)?t:Eo(t)}function rr(t,n,r){var e=t.length;return r=r===T?e:r,!n&&r>=e?t:Pn(t,n,r)}function er(t,n){if(n)return t.slice();var r=new t.constructor(t.length);return t.copy(r),r}function ur(t){var n=new t.constructor(t.byteLength);return new Wu(n).set(new Wu(t)),n}function or(t,n){if(t!==n){var r=t!==T,e=null===t,u=t===t,o=Te(t),i=n!==T,f=null===n,c=n===n,a=Te(n);
-if(!f&&!a&&!o&&t>n||o&&i&&c&&!f&&!a||e&&i&&c||!r&&c||!u)return 1;if(!e&&!o&&!a&&n>t||a&&r&&u&&!e&&!o||f&&r&&u||!i&&u||!c)return-1}return 0}function ir(t,n,r,e){var u=-1,o=t.length,i=r.length,f=-1,c=n.length,a=Vu(o-i,0),l=Array(c+a);for(e=!e;++fu)&&(l[r[u]]=t[u]);for(;a--;)l[f++]=t[u++];return l}function fr(t,n,r,e){var u=-1,o=t.length,i=-1,f=r.length,c=-1,a=n.length,l=Vu(o-f,0),s=Array(l+a);for(e=!e;++uu)&&(s[l+r[i]]=t[u++]);
-return s}function cr(t,n){var r=-1,e=t.length;for(n||(n=Array(e));++r1?r[u-1]:T,i=u>2?r[2]:T,o=t.length>3&&typeof o=="function"?(u--,o):T;for(i&&Hr(r[0],r[1],i)&&(o=3>u?T:o,
-u=1),n=Object(n);++ei&&f[0]!==a&&f[i-1]!==a?[]:D(f,a),i-=c.length,e>i?Sr(t,n,jr,u.placeholder,T,f,c,T,T,e-i):r(this&&this!==Jt&&this instanceof u?o:t,this,f)}var o=yr(t);return u}function xr(t){return Ie(function(n){n=ln(n,1);var r=n.length,e=r,u=kt.prototype.thru;for(t&&n.reverse();e--;){var o=n[e];
-if(typeof o!="function")throw new du("Expected a function");if(u&&!i&&"wrapper"==Cr(o))var i=new kt([],true)}for(e=i?e:r;++e=200)return i.plant(e).value();for(var u=0,t=r?n[u].apply(this,t):e;++ud)return j=D(y,j),Sr(t,n,jr,l.placeholder,r,y,j,f,c,a-d);if(j=h?r:this,b=p?j[t]:t,d=y.length,f){x=y.length;for(var w=Ku(f.length,x),m=cr(y);w--;){var A=f[w];y[w]=Yr(A,x)?m[A]:T}}else v&&d>1&&y.reverse();return s&&d>c&&(y.length=c),this&&this!==Jt&&this instanceof l&&(b=g||yr(b)),b.apply(j,y)}var s=128&n,h=1&n,p=2&n,_=24&n,v=512&n,g=p?T:yr(t);
-return l}function wr(t,n){return function(r,e){return xn(r,t,n(e))}}function mr(t){return function(n,r){var e;if(n===T&&r===T)return 0;if(n!==T&&(e=n),r!==T){if(e===T)return r;typeof n=="string"||typeof r=="string"?(n=Gn(n),r=Gn(r)):(n=Kn(n),r=Kn(r)),e=t(n,r)}return e}}function Ar(t){return Ie(function(n){return n=1==n.length&&ai(n[0])?l(n[0],O(Ur())):l(ln(n,1,Jr),O(Ur())),Ie(function(e){var u=this;return t(n,function(t){return r(t,u,e)})})})}function Or(t,n){n=n===T?" ":Gn(n);var r=n.length;return 2>r?r?$n(n,t):n:(r=$n(n,$u(t/N(n))),
-Wt.test(n)?rr(r.match(St),0,t).join(""):r.slice(0,t))}function kr(t,n,e,u){function o(){for(var n=-1,c=arguments.length,a=-1,l=u.length,s=Array(l+c),h=this&&this!==Jt&&this instanceof o?f:t;++an?1:-1:Ye(e)||0;var u=-1;r=Vu($u((r-n)/(e||1)),0);for(var o=Array(r);r--;)o[t?r:++u]=n,
-n+=e;return o}}function Ir(t){return function(n,r){return typeof n=="string"&&typeof r=="string"||(n=Ye(n),r=Ye(r)),t(n,r)}}function Sr(t,n,r,e,u,o,i,f,c,a){var l=8&n,s=l?i:T;i=l?T:i;var h=l?o:T;return o=l?T:o,n=(n|(l?32:64))&~(l?64:32),4&n||(n&=-4),n=[t,n,u,h,s,o,i,f,c,a],r=r.apply(T,n),Xr(t)&&ko(r,n),r.placeholder=e,r}function Rr(t){var n=vu[t];return function(t,r){if(t=Ye(t),r=Ge(r)){var e=(Qe(t)+"e").split("e"),e=n(e[0]+"e"+(+e[1]+r)),e=(Qe(e)+"e").split("e");return+(e[0]+"e"+(+e[1]-r))}return n(t);
-}}function Wr(t){return function(n){var r=Pr(n);return"[object Map]"==r?U(n):"[object Set]"==r?$(n):A(n,t(n))}}function Br(t,n,r,e,u,o,i,f){var c=2&n;if(!c&&typeof t!="function")throw new du("Expected a function");var a=e?e.length:0;if(a||(n&=-97,e=u=T),i=i===T?i:Vu(Ge(i),0),f=f===T?f:Ge(f),a-=u?u.length:0,64&n){var l=e,s=u;e=u=T}var h=c?T:mo(t);return o=[t,n,r,e,u,l,s,o,i,f],h&&(r=o[1],t=h[1],n=r|t,e=128==t&&8==r||128==t&&256==r&&h[8]>=o[7].length||384==t&&h[8]>=h[7].length&&8==r,131>n||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?D(o[3],"__lodash_placeholder__"):h[4]),(r=h[5])&&(e=o[5],o[5]=e?fr(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]:Ku(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:Vu(o[9]-a,0),!f&&24&n&&(n&=-25),(h?jo:ko)(n&&1!=n?8==n||16==n?br(t,n,f):32!=n&&33!=n||u.length?jr.apply(T,o):kr(t,n,r,e):vr(t,n,r),o)}function Lr(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))return c==n;var c=-1,a=true,l=1&u?new $t:T;for(o.set(t,n);++c-1&&0==t%1&&n>t}function Hr(t,n,r){if(!Ue(r))return false;var e=typeof n;return("number"==e?We(r)&&Yr(n,r.length):"string"==e&&n in r)?Se(r[n],t):false}function Qr(t,n){if(ai(t))return false;var r=typeof t;return"number"==r||"symbol"==r||"boolean"==r||null==t||Te(t)?true:ut.test(t)||!et.test(t)||null!=n&&t in Object(n);
-}function Xr(t){var n=Cr(t),r=At[n];return typeof r=="function"&&n in zt.prototype?t===r?true:(n=mo(r),!!n&&t===n[0]):false}function te(t){var n=t&&t.constructor;return t===(typeof n=="function"&&n.prototype||bu)}function ne(t,n){return function(r){return null==r?false:r[t]===n&&(n!==T||t in Object(r))}}function re(t,n,r,e,u,o){return Ue(t)&&Ue(n)&&Rn(t,n,T,re,o.set(n,t)),t}function ee(t,n){return 1==n.length?t:_n(t,Pn(n,0,-1))}function ue(t){if(typeof t=="string"||Te(t))return t;var n=t+"";return"0"==n&&1/t==-q?"-0":n;
-}function oe(t){if(null!=t){try{return ju.call(t)}catch(n){}return t+""}return""}function ie(t){if(t instanceof zt)return t.clone();var n=new kt(t.__wrapped__,t.__chain__);return n.__actions__=cr(t.__actions__),n.__index__=t.__index__,n.__values__=t.__values__,n}function fe(t,n,r){var e=t?t.length:0;return e?(n=r||n===T?1:Ge(n),Pn(t,0>n?0:n,e)):[]}function ce(t,n,r){var e=t?t.length:0;return e?(n=r||n===T?1:Ge(n),n=e-n,Pn(t,0,0>n?0:n)):[]}function ae(t){return t&&t.length?t[0]:T}function le(t){var n=t?t.length:0;
-return n?t[n-1]:T}function se(t,n){return t&&t.length&&n&&n.length?Un(t,n):t}function he(t){return t?Hu.call(t):t}function pe(t){if(!t||!t.length)return[];var n=0;return t=f(t,function(t){return Be(t)?(n=Vu(t.length,n),true):void 0}),m(n,function(n){return l(t,Cn(n))})}function _e(t,n){if(!t||!t.length)return[];var e=pe(t);return null==n?e:l(e,function(t){return r(n,T,t)})}function ve(t){return t=At(t),t.__chain__=true,t}function ge(t,n){return n(t)}function de(){return this}function ye(t,n){return(ai(t)?u:go)(t,Ur(n,3));
-}function be(t,n){return(ai(t)?o:yo)(t,Ur(n,3))}function xe(t,n){return(ai(t)?l:En)(t,Ur(n,3))}function je(t,n,r){var e=-1,u=Ve(t),o=u.length,i=o-1;for(n=(r?Hr(t,n,r):n===T)?1:tn(Ge(n),0,o);++e=t&&(n=T),r}}function Ae(t,n,r){
-return n=r?T:n,t=Br(t,8,T,T,T,T,T,n),t.placeholder=Ae.placeholder,t}function Oe(t,n,r){return n=r?T:n,t=Br(t,16,T,T,T,T,T,n),t.placeholder=Oe.placeholder,t}function ke(t,n,r){function e(n){var r=c,e=a;return c=a=T,_=n,s=t.apply(e,r)}function u(t){var r=t-p;return t-=_,!p||r>=n||0>r||g&&t>=l}function o(){var t=Qo();if(u(t))return i(t);var r;r=t-_,t=n-(t-p),r=g?Ku(t,l-r):t,h=Du(o,r)}function i(t){return Bu(h),h=T,d&&c?e(t):(c=a=T,s)}function f(){var t=Qo(),r=u(t);if(c=arguments,a=this,p=t,r){if(h===T)return _=t=p,
-h=Du(o,n),v?e(t):s;if(g)return Bu(h),h=Du(o,n),e(p)}return h===T&&(h=Du(o,n)),s}var c,a,l,s,h,p=0,_=0,v=false,g=false,d=true;if(typeof t!="function")throw new du("Expected a function");return n=Ye(n)||0,Ue(r)&&(v=!!r.leading,l=(g="maxWait"in r)?Vu(Ye(r.maxWait)||0,n):l,d="trailing"in r?!!r.trailing:d),f.cancel=function(){h!==T&&Bu(h),p=_=0,c=a=h=T},f.flush=function(){return h===T?s:i(Qo())},f}function Ee(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 du("Expected a function");return r.cache=new(Ee.Cache||Ft),r}function Ie(t,n){if(typeof t!="function")throw new du("Expected a function");return n=Vu(n===T?t.length-1:Ge(n),0),function(){for(var e=arguments,u=-1,o=Vu(e.length-n,0),i=Array(o);++u-1&&0==t%1&&9007199254740991>=t}function Ue(t){var n=typeof t;return!!t&&("object"==n||"function"==n)}function De(t){return!!t&&typeof t=="object"}function Fe(t){return Ue(t)?(Me(t)||C(t)?Eu:yt).test(oe(t)):false}function $e(t){return typeof t=="number"||De(t)&&"[object Number]"==Ou.call(t)}function Ne(t){return!De(t)||"[object Object]"!=Ou.call(t)||C(t)?false:(t=Pu(Object(t)),null===t?true:(t=wu.call(t,"constructor")&&t.constructor,typeof t=="function"&&t instanceof t&&ju.call(t)==Au));
-}function Pe(t){return Ue(t)&&"[object RegExp]"==Ou.call(t)}function Ze(t){return typeof t=="string"||!ai(t)&&De(t)&&"[object String]"==Ou.call(t)}function Te(t){return typeof t=="symbol"||De(t)&&"[object Symbol]"==Ou.call(t)}function qe(t){return De(t)&&ze(t.length)&&!!Mt[Ou.call(t)]}function Ve(t){if(!t)return[];if(We(t))return Ze(t)?t.match(St):cr(t);if(Cu&&t[Cu])return z(t[Cu]());var n=Pr(t);return("[object Map]"==n?U:"[object Set]"==n?F:eu)(t)}function Ke(t){return t?(t=Ye(t),t===q||t===-q?1.7976931348623157e308*(0>t?-1:1):t===t?t:0):0===t?t:0;
-}function Ge(t){t=Ke(t);var n=t%1;return t===t?n?t-n:t:0}function Je(t){return t?tn(Ge(t),0,4294967295):0}function Ye(t){if(typeof t=="number")return t;if(Te(t))return V;if(Ue(t)&&(t=Me(t.valueOf)?t.valueOf():t,t=Ue(t)?t+"":t),typeof t!="string")return 0===t?t:+t;t=t.replace(ct,"");var n=dt.test(t);return n||bt.test(t)?Pt(t.slice(2),n?2:8):gt.test(t)?V:+t}function He(t){return ar(t,ru(t))}function Qe(t){return null==t?"":Gn(t)}function Xe(t,n,r){return t=null==t?T:_n(t,n),t===T?r:t}function tu(t,n){
-return null!=t&&Zr(t,n,yn)}function nu(t){var n=te(t);if(!n&&!We(t))return qu(Object(t));var r,e=Kr(t),u=!!e,e=e||[],o=e.length;for(r in t)!dn(t,r)||u&&("length"==r||Yr(r,o))||n&&"constructor"==r||e.push(r);return e}function ru(t){for(var n=-1,r=te(t),e=On(t),u=e.length,o=Kr(t),i=!!o,o=o||[],f=o.length;++nt?false:(t==n.length-1?n.pop():Fu.call(n,t,1),true)},Dt.prototype.get=function(t){
-var n=this.__data__;return t=Gt(n,t),0>t?T:n[t][1]},Dt.prototype.has=function(t){return-1e?r.push([t,n]):r[e][1]=n,this},Ft.prototype.clear=function(){this.__data__={hash:new Ut,map:new(to||Dt),string:new Ut}},Ft.prototype["delete"]=function(t){return Dr(this,t)["delete"](t)},Ft.prototype.get=function(t){return Dr(this,t).get(t)},Ft.prototype.has=function(t){return Dr(this,t).has(t)},Ft.prototype.set=function(t,n){
-return Dr(this,t).set(t,n),this},$t.prototype.add=$t.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},$t.prototype.has=function(t){return this.__data__.has(t)},Zt.prototype.clear=function(){this.__data__=new Dt},Zt.prototype["delete"]=function(t){return this.__data__["delete"](t)},Zt.prototype.get=function(t){return this.__data__.get(t)},Zt.prototype.has=function(t){return this.__data__.has(t)},Zt.prototype.set=function(t,n){var r=this.__data__;return r instanceof Dt&&200==r.__data__.length&&(r=this.__data__=new Ft(r.__data__)),
-r.set(t,n),this};var go=pr(sn),yo=pr(hn,true),bo=_r(),xo=_r(true);Lu&&!Uu.call({valueOf:1},"valueOf")&&(On=function(t){return z(Lu(t))});var jo=oo?function(t,n){return oo.set(t,n),t}:cu,wo=ro&&1/F(new ro([,-0]))[1]==q?function(t){return new ro(t)}:su,mo=oo?function(t){return oo.get(t)}:su,Ao=Cn("length");Mu||(Nr=function(){return[]});var Oo=Mu?function(t){for(var n=[];t;)s(n,Nr(t)),t=Pu(Object(t));return n}:Nr;(Xu&&"[object DataView]"!=Pr(new Xu(new ArrayBuffer(1)))||to&&"[object Map]"!=Pr(new to)||no&&"[object Promise]"!=Pr(no.resolve())||ro&&"[object Set]"!=Pr(new ro)||eo&&"[object WeakMap]"!=Pr(new eo))&&(Pr=function(t){
-var n=Ou.call(t);if(t=(t="[object Object]"==n?t.constructor:T)?oe(t):T)switch(t){case co:return"[object DataView]";case ao:return"[object Map]";case lo:return"[object Promise]";case so:return"[object Set]";case ho:return"[object WeakMap]"}return n});var ko=function(){var t=0,n=0;return function(r,e){var u=Qo(),o=16-(u-n);if(n=u,o>0){if(150<=++t)return r}else t=0;return jo(r,e)}}(),Eo=Ee(function(t){var n=[];return Qe(t).replace(ot,function(t,r,e,u){n.push(e?u.replace(ht,"$1"):r||t)}),n}),Io=Ie(function(t,n){
-return Be(t)?on(t,ln(n,1,Be,true)):[]}),So=Ie(function(t,n){var r=le(n);return Be(r)&&(r=T),Be(t)?on(t,ln(n,1,Be,true),Ur(r)):[]}),Ro=Ie(function(t,n){var r=le(n);return Be(r)&&(r=T),Be(t)?on(t,ln(n,1,Be,true),T,r):[]}),Wo=Ie(function(t){var n=l(t,tr);return n.length&&n[0]===t[0]?bn(n):[]}),Bo=Ie(function(t){var n=le(t),r=l(t,tr);return n===le(r)?n=T:r.pop(),r.length&&r[0]===t[0]?bn(r,Ur(n)):[]}),Lo=Ie(function(t){var n=le(t),r=l(t,tr);return n===le(r)?n=T:r.pop(),r.length&&r[0]===t[0]?bn(r,T,n):[]}),Mo=Ie(se),Co=Ie(function(t,n){
-n=ln(n,1);var r=t?t.length:0,e=Xt(t,n);return Dn(t,l(n,function(t){return Yr(t,r)?+t:t}).sort(or)),e}),zo=Ie(function(t){return Jn(ln(t,1,Be,true))}),Uo=Ie(function(t){var n=le(t);return Be(n)&&(n=T),Jn(ln(t,1,Be,true),Ur(n))}),Do=Ie(function(t){var n=le(t);return Be(n)&&(n=T),Jn(ln(t,1,Be,true),T,n)}),Fo=Ie(function(t,n){return Be(t)?on(t,n):[]}),$o=Ie(function(t){return Qn(f(t,Be))}),No=Ie(function(t){var n=le(t);return Be(n)&&(n=T),Qn(f(t,Be),Ur(n))}),Po=Ie(function(t){var n=le(t);return Be(n)&&(n=T),
-Qn(f(t,Be),T,n)}),Zo=Ie(pe),To=Ie(function(t){var n=t.length,n=n>1?t[n-1]:T,n=typeof n=="function"?(t.pop(),n):T;return _e(t,n)}),qo=Ie(function(t){function n(n){return Xt(n,t)}t=ln(t,1);var r=t.length,e=r?t[0]:0,u=this.__wrapped__;return!(r>1||this.__actions__.length)&&u instanceof zt&&Yr(e)?(u=u.slice(e,+e+(r?1:0)),u.__actions__.push({func:ge,args:[n],thisArg:T}),new kt(u,this.__chain__).thru(function(t){return r&&!t.length&&t.push(T),t})):this.thru(n)}),Vo=sr(function(t,n,r){wu.call(t,r)?++t[r]:t[r]=1;
-}),Ko=sr(function(t,n,r){wu.call(t,r)?t[r].push(n):t[r]=[n]}),Go=Ie(function(t,n,e){var u=-1,o=typeof n=="function",i=Qr(n),f=We(t)?Array(t.length):[];return go(t,function(t){var c=o?n:i&&null!=t?t[n]:T;f[++u]=c?r(c,t,e):jn(t,n,e)}),f}),Jo=sr(function(t,n,r){t[r]=n}),Yo=sr(function(t,n,r){t[r?0:1].push(n)},function(){return[[],[]]}),Ho=Ie(function(t,n){if(null==t)return[];var r=n.length;return r>1&&Hr(t,n[0],n[1])?n=[]:r>2&&Hr(n[0],n[1],n[2])&&(n=[n[0]]),n=1==n.length&&ai(n[0])?n[0]:ln(n,1,Jr),Bn(t,n,[]);
-}),Qo=pu.now,Xo=Ie(function(t,n,r){var e=1;if(r.length)var u=D(r,zr(Xo)),e=32|e;return Br(t,e,n,r,u)}),ti=Ie(function(t,n,r){var e=3;if(r.length)var u=D(r,zr(ti)),e=32|e;return Br(n,e,t,r,u)}),ni=Ie(function(t,n){return un(t,1,n)}),ri=Ie(function(t,n,r){return un(t,Ye(n)||0,r)});Ee.Cache=Ft;var ei=Ie(function(t,n){n=1==n.length&&ai(n[0])?l(n[0],O(Ur())):l(ln(n,1,Jr),O(Ur()));var e=n.length;return Ie(function(u){for(var o=-1,i=Ku(u.length,e);++o=n}),ai=Array.isArray,li=Iu?function(t){return t instanceof Iu}:fu(false),si=Ir(kn),hi=Ir(function(t,n){return n>=t}),pi=hr(function(t,n){if(io||te(n)||We(n))ar(n,nu(n),t);else for(var r in n)wu.call(n,r)&&Kt(t,r,n[r])}),_i=hr(function(t,n){if(io||te(n)||We(n))ar(n,ru(n),t);else for(var r in n)Kt(t,r,n[r])}),vi=hr(function(t,n,r,e){
-ar(n,ru(n),t,e)}),gi=hr(function(t,n,r,e){ar(n,nu(n),t,e)}),di=Ie(function(t,n){return Xt(t,ln(n,1))}),yi=Ie(function(t){return t.push(T,Tt),r(vi,T,t)}),bi=Ie(function(t){return t.push(T,re),r(Ai,T,t)}),xi=wr(function(t,n,r){t[n]=r},fu(cu)),ji=wr(function(t,n,r){wu.call(t,n)?t[n].push(r):t[n]=[r]},Ur),wi=Ie(jn),mi=hr(function(t,n,r){Rn(t,n,r)}),Ai=hr(function(t,n,r,e){Rn(t,n,r,e)}),Oi=Ie(function(t,n){return null==t?{}:(n=l(ln(n,1),ue),Ln(t,on(vn(t,ru,Oo),n)))}),ki=Ie(function(t,n){return null==t?{}:Ln(t,l(ln(n,1),ue));
-}),Ei=Wr(nu),Ii=Wr(ru),Si=dr(function(t,n,r){return n=n.toLowerCase(),t+(r?uu(n):n)}),Ri=dr(function(t,n,r){return t+(r?"-":"")+n.toLowerCase()}),Wi=dr(function(t,n,r){return t+(r?" ":"")+n.toLowerCase()}),Bi=gr("toLowerCase"),Li=dr(function(t,n,r){return t+(r?"_":"")+n.toLowerCase()}),Mi=dr(function(t,n,r){return t+(r?" ":"")+zi(n)}),Ci=dr(function(t,n,r){return t+(r?" ":"")+n.toUpperCase()}),zi=gr("toUpperCase"),Ui=Ie(function(t,n){try{return r(t,T,n)}catch(e){return Le(e)?e:new _u(e)}}),Di=Ie(function(t,n){
-return u(ln(n,1),function(n){n=ue(n),t[n]=Xo(t[n],t)}),t}),Fi=xr(),$i=xr(true),Ni=Ie(function(t,n){return function(r){return jn(r,t,n)}}),Pi=Ie(function(t,n){return function(r){return jn(t,r,n)}}),Zi=Ar(l),Ti=Ar(i),qi=Ar(_),Vi=Er(),Ki=Er(true),Gi=mr(function(t,n){return t+n}),Ji=Rr("ceil"),Yi=mr(function(t,n){return t/n}),Hi=Rr("floor"),Qi=mr(function(t,n){return t*n}),Xi=Rr("round"),tf=mr(function(t,n){return t-n});return At.after=function(t,n){if(typeof n!="function")throw new du("Expected a function");
-return t=Ge(t),function(){return 1>--t?n.apply(this,arguments):void 0}},At.ary=we,At.assign=pi,At.assignIn=_i,At.assignInWith=vi,At.assignWith=gi,At.at=di,At.before=me,At.bind=Xo,At.bindAll=Di,At.bindKey=ti,At.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return ai(t)?t:[t]},At.chain=ve,At.chunk=function(t,n,r){if(n=(r?Hr(t,n,r):n===T)?1:Vu(Ge(n),0),r=t?t.length:0,!r||1>n)return[];for(var e=0,u=0,o=Array($u(r/n));r>e;)o[u++]=Pn(t,e,e+=n);return o},At.compact=function(t){for(var n=-1,r=t?t.length:0,e=0,u=[];++nr&&(r=-r>u?0:u+r),e=e===T||e>u?u:Ge(e),0>e&&(e+=u),e=r>e?0:Je(e);e>r;)t[r++]=n;return t},At.filter=function(t,n){return(ai(t)?f:an)(t,Ur(n,3))},At.flatMap=function(t,n){return ln(xe(t,n),1)},At.flatMapDeep=function(t,n){return ln(xe(t,n),q)},At.flatMapDepth=function(t,n,r){return r=r===T?1:Ge(r),ln(xe(t,n),r)},At.flatten=function(t){return t&&t.length?ln(t,1):[]},At.flattenDeep=function(t){return t&&t.length?ln(t,q):[]},At.flattenDepth=function(t,n){return t&&t.length?(n=n===T?1:Ge(n),ln(t,n)):[];
-},At.flip=function(t){return Br(t,512)},At.flow=Fi,At.flowRight=$i,At.fromPairs=function(t){for(var n=-1,r=t?t.length:0,e={};++n>>0,r?(t=Qe(t))&&(typeof n=="string"||null!=n&&!Pe(n))&&(n=Gn(n),""==n&&Wt.test(t))?rr(t.match(St),0,r):Qu.call(t,n,r):[]},At.spread=function(t,n){if(typeof t!="function")throw new du("Expected a function");return n=n===T?0:Vu(Ge(n),0),Ie(function(e){var u=e[n];return e=rr(e,0,n),u&&s(e,u),r(t,this,e)})},At.tail=function(t){return fe(t,1)},At.take=function(t,n,r){return t&&t.length?(n=r||n===T?1:Ge(n),
-Pn(t,0,0>n?0:n)):[]},At.takeRight=function(t,n,r){var e=t?t.length:0;return e?(n=r||n===T?1:Ge(n),n=e-n,Pn(t,0>n?0:n,e)):[]},At.takeRightWhile=function(t,n){return t&&t.length?Yn(t,Ur(n,3),false,true):[]},At.takeWhile=function(t,n){return t&&t.length?Yn(t,Ur(n,3)):[]},At.tap=function(t,n){return n(t),t},At.throttle=function(t,n,r){var e=true,u=true;if(typeof t!="function")throw new du("Expected a function");return Ue(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),ke(t,n,{leading:e,maxWait:n,
-trailing:u})},At.thru=ge,At.toArray=Ve,At.toPairs=Ei,At.toPairsIn=Ii,At.toPath=function(t){return ai(t)?l(t,ue):Te(t)?[t]:cr(Eo(t))},At.toPlainObject=He,At.transform=function(t,n,r){var e=ai(t)||qe(t);if(n=Ur(n,4),null==r)if(e||Ue(t)){var o=t.constructor;r=e?ai(t)?new o:[]:Me(o)?en(Pu(Object(t))):{}}else r={};return(e?u:sn)(t,function(t,e,u){return n(r,t,e,u)}),r},At.unary=function(t){return we(t,1)},At.union=zo,At.unionBy=Uo,At.unionWith=Do,At.uniq=function(t){return t&&t.length?Jn(t):[]},At.uniqBy=function(t,n){
-return t&&t.length?Jn(t,Ur(n)):[]},At.uniqWith=function(t,n){return t&&t.length?Jn(t,T,n):[]},At.unset=function(t,n){var r;if(null==t)r=true;else{r=t;var e=n,e=Qr(e,r)?[e]:nr(e);r=ee(r,e),e=ue(le(e)),r=!(null!=r&&dn(r,e))||delete r[e]}return r},At.unzip=pe,At.unzipWith=_e,At.update=function(t,n,r){return null==t?t:Nn(t,n,(typeof r=="function"?r:cu)(_n(t,n)),void 0)},At.updateWith=function(t,n,r,e){return e=typeof e=="function"?e:T,null!=t&&(t=Nn(t,n,(typeof r=="function"?r:cu)(_n(t,n)),e)),t},At.values=eu,
-At.valuesIn=function(t){return null==t?[]:k(t,ru(t))},At.without=Fo,At.words=iu,At.wrap=function(t,n){return n=null==n?cu:n,ui(n,t)},At.xor=$o,At.xorBy=No,At.xorWith=Po,At.zip=Zo,At.zipObject=function(t,n){return Xn(t||[],n||[],Kt)},At.zipObjectDeep=function(t,n){return Xn(t||[],n||[],Nn)},At.zipWith=To,At.entries=Ei,At.entriesIn=Ii,At.extend=_i,At.extendWith=vi,lu(At,At),At.add=Gi,At.attempt=Ui,At.camelCase=Si,At.capitalize=uu,At.ceil=Ji,At.clamp=function(t,n,r){return r===T&&(r=n,n=T),r!==T&&(r=Ye(r),
-r=r===r?r:0),n!==T&&(n=Ye(n),n=n===n?n:0),tn(Ye(t),n,r)},At.clone=function(t){return nn(t,false,true)},At.cloneDeep=function(t){return nn(t,true,true)},At.cloneDeepWith=function(t,n){return nn(t,true,true,n)},At.cloneWith=function(t,n){return nn(t,false,true,n)},At.deburr=ou,At.divide=Yi,At.endsWith=function(t,n,r){t=Qe(t),n=Gn(n);var e=t.length;return r=r===T?e:tn(Ge(r),0,e),r-=n.length,r>=0&&t.indexOf(n,r)==r},At.eq=Se,At.escape=function(t){return(t=Qe(t))&&X.test(t)?t.replace(H,B):t},At.escapeRegExp=function(t){
-return(t=Qe(t))&&ft.test(t)?t.replace(it,"\\$&"):t},At.every=function(t,n,r){var e=ai(t)?i:fn;return r&&Hr(t,n,r)&&(n=T),e(t,Ur(n,3))},At.find=function(t,n){if(n=Ur(n,3),ai(t)){var r=g(t,n);return r>-1?t[r]:T}return v(t,n,go)},At.findIndex=function(t,n){return t&&t.length?g(t,Ur(n,3)):-1},At.findKey=function(t,n){return v(t,Ur(n,3),sn,true)},At.findLast=function(t,n){if(n=Ur(n,3),ai(t)){var r=g(t,n,true);return r>-1?t[r]:T}return v(t,n,yo)},At.findLastIndex=function(t,n){return t&&t.length?g(t,Ur(n,3),true):-1;
-},At.findLastKey=function(t,n){return v(t,Ur(n,3),hn,true)},At.floor=Hi,At.forEach=ye,At.forEachRight=be,At.forIn=function(t,n){return null==t?t:bo(t,Ur(n,3),ru)},At.forInRight=function(t,n){return null==t?t:xo(t,Ur(n,3),ru)},At.forOwn=function(t,n){return t&&sn(t,Ur(n,3))},At.forOwnRight=function(t,n){return t&&hn(t,Ur(n,3))},At.get=Xe,At.gt=fi,At.gte=ci,At.has=function(t,n){return null!=t&&Zr(t,n,dn)},At.hasIn=tu,At.head=ae,At.identity=cu,At.includes=function(t,n,r,e){return t=We(t)?t:eu(t),r=r&&!e?Ge(r):0,
-e=t.length,0>r&&(r=Vu(e+r,0)),Ze(t)?e>=r&&-1r&&(r=Vu(e+r,0)),d(t,n,r)):-1},At.inRange=function(t,n,r){return n=Ye(n)||0,r===T?(r=n,n=0):r=Ye(r)||0,t=Ye(t),t>=Ku(n,r)&&t=-9007199254740991&&9007199254740991>=t},At.isSet=function(t){return De(t)&&"[object Set]"==Pr(t)},At.isString=Ze,At.isSymbol=Te,At.isTypedArray=qe,At.isUndefined=function(t){return t===T},At.isWeakMap=function(t){return De(t)&&"[object WeakMap]"==Pr(t)},At.isWeakSet=function(t){return De(t)&&"[object WeakSet]"==Ou.call(t)},At.join=function(t,n){return t?Tu.call(t,n):""},At.kebabCase=Ri,At.last=le,At.lastIndexOf=function(t,n,r){var e=t?t.length:0;
-if(!e)return-1;var u=e;if(r!==T&&(u=Ge(r),u=(0>u?Vu(e+u,0):Ku(u,e-1))+1),n!==n)return M(t,u,true);for(;u--;)if(t[u]===n)return u;return-1},At.lowerCase=Wi,At.lowerFirst=Bi,At.lt=si,At.lte=hi,At.max=function(t){return t&&t.length?cn(t,cu,gn):T},At.maxBy=function(t,n){return t&&t.length?cn(t,Ur(n),gn):T},At.mean=function(t){return b(t,cu)},At.meanBy=function(t,n){return b(t,Ur(n))},At.min=function(t){return t&&t.length?cn(t,cu,kn):T},At.minBy=function(t,n){return t&&t.length?cn(t,Ur(n),kn):T},At.multiply=Qi,
-At.nth=function(t,n){return t&&t.length?Wn(t,Ge(n)):T},At.noConflict=function(){return Jt._===this&&(Jt._=ku),this},At.noop=su,At.now=Qo,At.pad=function(t,n,r){t=Qe(t);var e=(n=Ge(n))?N(t):0;return!n||e>=n?t:(n=(n-e)/2,Or(Nu(n),r)+t+Or($u(n),r))},At.padEnd=function(t,n,r){t=Qe(t);var e=(n=Ge(n))?N(t):0;return n&&n>e?t+Or(n-e,r):t},At.padStart=function(t,n,r){t=Qe(t);var e=(n=Ge(n))?N(t):0;return n&&n>e?Or(n-e,r)+t:t},At.parseInt=function(t,n,r){return r||null==n?n=0:n&&(n=+n),t=Qe(t).replace(ct,""),
-Gu(t,n||(vt.test(t)?16:10))},At.random=function(t,n,r){if(r&&typeof r!="boolean"&&Hr(t,n,r)&&(n=r=T),r===T&&(typeof n=="boolean"?(r=n,n=T):typeof t=="boolean"&&(r=t,t=T)),t===T&&n===T?(t=0,n=1):(t=Ye(t)||0,n===T?(n=t,t=0):n=Ye(n)||0),t>n){var e=t;t=n,n=e}return r||t%1||n%1?(r=Ju(),Ku(t+r*(n-t+Nt("1e-"+((r+"").length-1))),n)):Fn(t,n)},At.reduce=function(t,n,r){var e=ai(t)?h:x,u=3>arguments.length;return e(t,Ur(n,4),r,u,go)},At.reduceRight=function(t,n,r){var e=ai(t)?p:x,u=3>arguments.length;return e(t,Ur(n,4),r,u,yo);
-},At.repeat=function(t,n,r){return n=(r?Hr(t,n,r):n===T)?1:Ge(n),$n(Qe(t),n)},At.replace=function(){var t=arguments,n=Qe(t[0]);return 3>t.length?n:Yu.call(n,t[1],t[2])},At.result=function(t,n,r){n=Qr(n,t)?[n]:nr(n);var e=-1,u=n.length;for(u||(t=T,u=1);++e0?t[Fn(0,n-1)]:T},At.size=function(t){if(null==t)return 0;if(We(t)){var n=t.length;
-return n&&Ze(t)?N(t):n}return De(t)&&(n=Pr(t),"[object Map]"==n||"[object Set]"==n)?t.size:nu(t).length},At.snakeCase=Li,At.some=function(t,n,r){var e=ai(t)?_:Zn;return r&&Hr(t,n,r)&&(n=T),e(t,Ur(n,3))},At.sortedIndex=function(t,n){return Tn(t,n)},At.sortedIndexBy=function(t,n,r){return qn(t,n,Ur(r))},At.sortedIndexOf=function(t,n){var r=t?t.length:0;if(r){var e=Tn(t,n);if(r>e&&Se(t[e],n))return e}return-1},At.sortedLastIndex=function(t,n){return Tn(t,n,true)},At.sortedLastIndexBy=function(t,n,r){return qn(t,n,Ur(r),true);
-},At.sortedLastIndexOf=function(t,n){if(t&&t.length){var r=Tn(t,n,true)-1;if(Se(t[r],n))return r}return-1},At.startCase=Mi,At.startsWith=function(t,n,r){return t=Qe(t),r=tn(Ge(r),0,t.length),t.lastIndexOf(Gn(n),r)==r},At.subtract=tf,At.sum=function(t){return t&&t.length?w(t,cu):0},At.sumBy=function(t,n){return t&&t.length?w(t,Ur(n)):0},At.template=function(t,n,r){var e=At.templateSettings;r&&Hr(t,n,r)&&(n=T),t=Qe(t),n=vi({},n,e,Tt),r=vi({},n.imports,e.imports,Tt);var u,o,i=nu(r),f=k(r,i),c=0;r=n.interpolate||wt;
-var a="__p+='";r=gu((n.escape||wt).source+"|"+r.source+"|"+(r===rt?pt:wt).source+"|"+(n.evaluate||wt).source+"|$","g");var l="sourceURL"in n?"//# sourceURL="+n.sourceURL+"\n":"";if(t.replace(r,function(n,r,e,i,f,l){return e||(e=i),a+=t.slice(c,l).replace(mt,L),r&&(u=true,a+="'+__e("+r+")+'"),f&&(o=true,a+="';"+f+";\n__p+='"),e&&(a+="'+((__t=("+e+"))==null?'':__t)+'"),c=l+n.length,n}),a+="';",(n=n.variable)||(a="with(obj){"+a+"}"),a=(o?a.replace(K,""):a).replace(G,"$1").replace(J,"$1;"),a="function("+(n||"obj")+"){"+(n?"":"obj||(obj={});")+"var __t,__p=''"+(u?",__e=_.escape":"")+(o?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+a+"return __p}",
-n=Ui(function(){return Function(i,l+"return "+a).apply(T,f)}),n.source=a,Le(n))throw n;return n},At.times=function(t,n){if(t=Ge(t),1>t||t>9007199254740991)return[];var r=4294967295,e=Ku(t,4294967295);for(n=Ur(n),t-=4294967295,e=m(e,n);++r=o)return t;if(o=r-N(e),1>o)return e;if(r=i?rr(i,0,o).join(""):t.slice(0,o),u===T)return r+e;if(i&&(o+=r.length-o),Pe(u)){if(t.slice(o).search(u)){var f=r;for(u.global||(u=gu(u.source,Qe(_t.exec(u))+"g")),u.lastIndex=0;i=u.exec(f);)var c=i.index;r=r.slice(0,c===T?o:c)}}else t.indexOf(Gn(u),o)!=o&&(u=r.lastIndexOf(u),u>-1&&(r=r.slice(0,u)));return r+e},At.unescape=function(t){return(t=Qe(t))&&Q.test(t)?t.replace(Y,P):t},At.uniqueId=function(t){
-var n=++mu;return Qe(t)+n},At.upperCase=Ci,At.upperFirst=zi,At.each=ye,At.eachRight=be,At.first=ae,lu(At,function(){var t={};return sn(At,function(n,r){wu.call(At.prototype,r)||(t[r]=n)}),t}(),{chain:false}),At.VERSION="4.12.0",u("bind bindKey curry curryRight partial partialRight".split(" "),function(t){At[t].placeholder=At}),u(["drop","take"],function(t,n){zt.prototype[t]=function(r){var e=this.__filtered__;if(e&&!n)return new zt(this);r=r===T?1:Vu(Ge(r),0);var u=this.clone();return e?u.__takeCount__=Ku(r,u.__takeCount__):u.__views__.push({
-size:Ku(r,4294967295),type:t+(0>u.__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:Ur(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(cu)},zt.prototype.find=function(t){return this.filter(t).head()},zt.prototype.findLast=function(t){return this.reverse().find(t)},zt.prototype.invokeMap=Ie(function(t,n){return typeof t=="function"?new zt(this):this.map(function(r){return jn(r,t,n)})}),zt.prototype.reject=function(t){return t=Ur(t,3),this.filter(function(n){return!t(n)})},zt.prototype.slice=function(t,n){
-t=Ge(t);var r=this;return r.__filtered__&&(t>0||0>n)?new zt(r):(0>t?r=r.takeRight(-t):t&&(r=r.drop(t)),n!==T&&(n=Ge(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)},sn(zt.prototype,function(t,n){var r=/^(?:filter|find|map|reject)|While$/.test(n),e=/^(?:head|last)$/.test(n),u=At[e?"take"+("last"==n?"Right":""):n],o=e||/^find/.test(n);u&&(At.prototype[n]=function(){
-function n(t){return t=u.apply(At,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||ai(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:ge,args:[n],thisArg:T}),new kt(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=yu[t],r=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",e=/^(?:pop|shift)$/.test(t);
-At.prototype[t]=function(){var t=arguments;if(e&&!this.__chain__){var u=this.value();return n.apply(ai(u)?u:[],t)}return this[r](function(r){return n.apply(ai(r)?r:[],t)})}}),sn(zt.prototype,function(t,n){var r=At[n];if(r){var e=r.name+"";(fo[e]||(fo[e]=[])).push({name:n,func:r})}}),fo[jr(T,2).name]=[{name:"wrapper",func:T}],zt.prototype.clone=function(){var t=new zt(this.__wrapped__);return t.__actions__=cr(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=cr(this.__iteratees__),
-t.__takeCount__=this.__takeCount__,t.__views__=cr(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=ai(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 Hn(n,this.__actions__);e=[];t:for(;t--&&a>c;){for(u+=r,o=-1,l=n[u];++o=this.__values__.length,n=t?T:this.__values__[this.__index__++];return{done:t,value:n}},At.prototype.plant=function(t){for(var n,r=this;r instanceof Ot;){var e=ie(r);e.__index__=0,e.__values__=T,n?u.__wrapped__=e:n=e;var u=e,r=r.__wrapped__}return u.__wrapped__=t,n},At.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:ge,
-args:[he],thisArg:T}),new kt(t,this.__chain__)):this.thru(he)},At.prototype.toJSON=At.prototype.valueOf=At.prototype.value=function(){return Hn(this.__wrapped__,this.__actions__)},Cu&&(At.prototype[Cu]=de),At}var T,q=1/0,V=NaN,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=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]/g,it=/[\\^$.*+?()[\]{}|]/g,ft=RegExp(it.source),ct=/^\s+|\s+$/g,at=/^\s+/,lt=/\s+$/,st=/[a-zA-Z0-9]+/g,ht=/\\(\\)?/g,pt=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,_t=/\w*$/,vt=/^0x/i,gt=/^[-+]0x[0-9a-f]+$/i,dt=/^0b[01]+$/i,yt=/^\[object .+?Constructor\]$/,bt=/^0o[0-7]+$/i,xt=/^(?:0|[1-9]\d*)$/,jt=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,wt=/($^)/,mt=/['\n\r\u2028\u2029\\]/g,At="[\\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])?)*",Ot="(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])"+At,kt="(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]?|[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])",Et=RegExp("['\u2019]","g"),It=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]","g"),St=RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|"+kt+At,"g"),Rt=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+",Ot].join("|"),"g"),Wt=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0\\ufe0e\\ufe0f]"),Bt=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Lt="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(" "),Mt={};
+;(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=t?t:r),n!==T&&(t=t>=n?t:n)),t}function rn(t,n,r,e,o,i,f){var c;if(e&&(c=i?e(t,o,i,f):e(t)),c!==T)return c;if(!Pe(t))return t;if(o=vi(t)){if(c=Vr(t),!n)return lr(t,c)}else{var a=Tr(t),l="[object Function]"==a||"[object GeneratorFunction]"==a;if(gi(t))return or(t,n);if("[object Object]"==a||"[object Arguments]"==a||l&&!i){if(C(t))return i?t:{};if(c=Kr(l?{}:t),
+!n)return hr(t,Xt(c,t))}else{if(!Ct[a])return i?t:{};c=Gr(t,a,rn,n)}}if(f||(f=new qt),i=f.get(t))return i;if(f.set(t,c),!o)var s=r?gn(t,ou,Zr):ou(t);return u(s||t,function(u,o){s&&(o=u,u=t[o]),Yt(c,o,rn(u,n,r,e,o,t,f))}),c}function en(t){var n=ou(t),r=n.length;return function(e){if(null==e)return!r;for(var u=r;u--;){var o=n[u],i=t[o],f=e[o];if(f===T&&!(o in Object(e))||!i(f))return false}return true}}function un(t){return Pe(t)?Zu(t):{}}function on(t,n,r){if(typeof t!="function")throw new mu("Expected a function");
+return At(function(){t.apply(T,r)},n)}function fn(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,O(r))),e?(o=a,i=false):n.length>=200&&(o=E,i=false,n=new Zt(n));t:for(;++u0&&r(f)?n>1?sn(f,n-1,r,e,u):s(u,f):e||(u[u.length]=f)}return u}function hn(t,n){return t&&Oo(t,n,ou)}function pn(t,n){return t&&ko(t,n,ou)}function _n(t,n){return f(n,function(n){return De(t[n])})}function vn(t,n){n=te(n,t)?[n]:er(n);for(var r=0,e=n.length;null!=t&&e>r;)t=t[ie(n[r++])];return r&&r==e?t:T}function gn(t,n,r){
+return n=n(t),vi(t)?n:s(n,r(t))}function dn(t,n){return t>n}function yn(t,n){return null!=t&&(Ru.call(t,n)||typeof t=="object"&&n in t&&null===Gu(Object(t)))}function bn(t,n){return null!=t&&n in Object(t)}function xn(t,n,r){for(var e=r?a:c,u=t[0].length,o=t.length,i=o,f=Array(o),s=1/0,h=[];i--;){var p=t[i];i&&n&&(p=l(p,O(n))),s=Xu(p.length,s),f[i]=!r&&(n||u>=120&&p.length>=120)?new Zt(i&&p):T}var p=t[0],_=-1,v=f[0];t:for(;++_h.length;){var g=p[_],d=n?n(g):g,g=r||0!==g?g:0;if(v?!E(v,d):!e(h,d,r)){
+for(i=o;--i;){var y=f[i];if(y?!E(y,d):!e(t[i],d,r))continue t}v&&v.push(d),h.push(g)}}return h}function jn(t,n,r){var e={};return hn(t,function(t,u,o){n(e,r(t),u,o)}),e}function wn(t,n,e){return te(n,t)||(n=er(n),t=oe(t,n),n=_e(n)),n=null==t?t:t[ie(n)],null==n?T:r(n,t,e)}function mn(t,n,r,e,u){if(t===n)n=true;else if(null==t||null==n||!Pe(t)&&!Ze(n))n=t!==t&&n!==n;else t:{var o=vi(t),i=vi(n),f="[object Array]",c="[object Array]";o||(f=Tr(t),f="[object Arguments]"==f?"[object Object]":f),i||(c=Tr(n),
+c="[object Arguments]"==c?"[object Object]":c);var a="[object Object]"==f&&!C(t),i="[object Object]"==c&&!C(n);if((c=f==c)&&!a)u||(u=new qt),n=o||Je(t)?Cr(t,n,mn,r,e,u):zr(t,n,f,mn,r,e,u);else{if(!(2&e)&&(o=a&&Ru.call(t,"__wrapped__"),f=i&&Ru.call(n,"__wrapped__"),o||f)){t=o?t.value():t,n=f?n.value():n,u||(u=new qt),n=mn(t,n,r,e,u);break t}if(c)n:if(u||(u=new qt),o=2&e,f=ou(t),i=f.length,c=ou(n).length,i==c||o){for(a=i;a--;){var l=f[a];if(!(o?l in n:yn(n,l))){n=false;break n}}if(c=u.get(t))n=c==n;else{
+c=true,u.set(t,n);for(var s=o;++at}function In(t,n){var r=-1,e=ze(t)?Array(t.length):[];
+return mo(t,function(t,u,o){e[++r]=n(t,u,o)}),e}function Rn(t){var n=Nr(t);return 1==n.length&&n[0][2]?ee(n[0][0],n[0][1]):function(r){return r===t||An(r,t,n)}}function Wn(t,n){return te(t)&&n===n&&!Pe(n)?ee(ie(t),n):function(r){var e=eu(r,t);return e===T&&e===n?uu(r,t):mn(n,e,T,3)}}function Bn(t,n,r,e,o){if(t!==n){if(!vi(n)&&!Je(n))var i=iu(n);u(i||n,function(u,f){if(i&&(f=u,u=n[f]),Pe(u)){o||(o=new qt);var c=f,a=o,l=t[c],s=n[c],h=a.get(s);if(h)Jt(t,c,h);else{var h=e?e(l,s,c+"",t,n,a):T,p=h===T;p&&(h=s,
+vi(s)||Je(s)?vi(l)?h=l:Ue(l)?h=lr(l):(p=false,h=rn(s,true)):qe(s)||Ce(s)?Ce(l)?h=nu(l):!Pe(l)||r&&De(l)?(p=false,h=rn(s,true)):h=l:p=false),a.set(s,h),p&&Bn(h,s,r,e,a),a["delete"](s),Jt(t,c,h)}}else c=e?e(t[f],u,f+"",t,n,o):T,c===T&&(c=u),Jt(t,f,c)})}}function Ln(t,n){var r=t.length;return r?(n+=0>n?r:0,Qr(n,r)?t[n]:T):void 0}function Mn(t,n,r){var e=-1;return n=l(n.length?n:[hu],O(Dr())),t=In(t,function(t){return{a:l(n,function(n){return n(t)}),b:++e,c:t}}),j(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 Cn(t,n){return t=Object(t),h(n,function(n,r){return r in t&&(n[r]=t[r]),n},{})}function zn(t,n){for(var r=-1,e=gn(t,iu,Wo),u=e.length,o={};++rn||n>9007199254740991)return r;do n%2&&(r+=t),(n=Ku(n/2))&&(t+=t);while(n);return r}function Zn(t,n,r,e){n=te(n,t)?[n]:er(n);for(var u=-1,o=n.length,i=o-1,f=t;null!=f&&++un&&(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=Array(u);++e=u){for(;u>e;){var o=e+u>>>1,i=t[o];null!==i&&!Ge(i)&&(r?n>=i:n>i)?e=o+1:u=o}return u}
+return Kn(t,n,hu,r)}function Kn(t,n,r,e){n=r(n);for(var u=0,o=t?t.length:0,i=n!==n,f=null===n,c=Ge(n),a=n===T;o>u;){var l=Ku((u+o)/2),s=r(t[l]),h=s!==T,p=null===s,_=s===s,v=Ge(s);(i?e||_:a?_&&(e||h):f?_&&h&&(e||!p):c?_&&h&&!p&&(e||!v):p||v?0:e?n>=s:n>s)?u=l+1:o=l}return Xu(o,4294967294)}function Gn(t,n){for(var r=-1,e=t.length,u=0,o=[];++r=200){if(u=n?null:So(t))return D(u);i=false,u=E,l=new Zt}else l=n?[]:f;t:for(;++ee?n[e]:T);return i}function rr(t){return Ue(t)?t:[]}function er(t){return vi(t)?t:Mo(t)}function ur(t,n,r){var e=t.length;return r=r===T?e:r,!n&&r>=e?t:Tn(t,n,r)}function or(t,n){
+if(n)return t.slice();var r=new t.constructor(t.length);return t.copy(r),r}function ir(t){var n=new t.constructor(t.byteLength);return new Du(n).set(new Du(t)),n}function fr(t,n){if(t!==n){var r=t!==T,e=null===t,u=t===t,o=Ge(t),i=n!==T,f=null===n,c=n===n,a=Ge(n);if(!f&&!a&&!o&&t>n||o&&i&&c&&!f&&!a||e&&i&&c||!r&&c||!u)return 1;if(!e&&!o&&!a&&n>t||a&&r&&u&&!e&&!o||f&&r&&u||!i&&u||!c)return-1}return 0}function cr(t,n,r,e){var u=-1,o=t.length,i=r.length,f=-1,c=n.length,a=Qu(o-i,0),l=Array(c+a);for(e=!e;++fu)&&(l[r[u]]=t[u]);for(;a--;)l[f++]=t[u++];return l}function ar(t,n,r,e){var u=-1,o=t.length,i=-1,f=r.length,c=-1,a=n.length,l=Qu(o-f,0),s=Array(l+a);for(e=!e;++uu)&&(s[l+r[i]]=t[u++]);return s}function lr(t,n){var r=-1,e=t.length;for(n||(n=Array(e));++r1?r[u-1]:T,i=u>2?r[2]:T,o=t.length>3&&typeof o=="function"?(u--,o):T;for(i&&Xr(r[0],r[1],i)&&(o=3>u?T:o,u=1),n=Object(n);++ei&&f[0]!==a&&f[i-1]!==a?[]:$(f,a),
+i-=c.length,e>i?Wr(t,n,mr,u.placeholder,T,f,c,T,T,e-i):r(this&&this!==Kt&&this instanceof u?o:t,this,f)}var o=xr(t);return u}function wr(t){return Le(function(n){n=sn(n,1);var r=n.length,e=r,u=zt.prototype.thru;for(t&&n.reverse();e--;){var o=n[e];if(typeof o!="function")throw new mu("Expected a function");if(u&&!i&&"wrapper"==Ur(o))var i=new zt([],true)}for(e=i?e:r;++e=200)return i.plant(e).value();for(var u=0,t=r?n[u].apply(this,t):e;++ud)return j=$(y,j),Wr(t,n,mr,l.placeholder,r,y,j,f,c,a-d);if(j=h?r:this,b=p?j[t]:t,d=y.length,f){x=y.length;
+for(var w=Xu(f.length,x),m=lr(y);w--;){var A=f[w];y[w]=Qr(A,x)?m[A]:T}}else v&&d>1&&y.reverse();return s&&d>c&&(y.length=c),this&&this!==Kt&&this instanceof l&&(b=g||xr(b)),b.apply(j,y)}var s=128&n,h=1&n,p=2&n,_=24&n,v=512&n,g=p?T:xr(t);return l}function Ar(t,n){return function(r,e){return jn(r,t,n(e))}}function Or(t){return function(n,r){var e;if(n===T&&r===T)return 0;if(n!==T&&(e=n),r!==T){if(e===T)return r;typeof n=="string"||typeof r=="string"?(n=Yn(n),r=Yn(r)):(n=Jn(n),r=Jn(r)),e=t(n,r)}return e;
+}}function kr(t){return Le(function(n){return n=1==n.length&&vi(n[0])?l(n[0],O(Dr())):l(sn(n,1,Hr),O(Dr())),Le(function(e){var u=this;return t(n,function(t){return r(t,u,e)})})})}function Er(t,n){n=n===T?" ":Yn(n);var r=n.length;return 2>r?r?Pn(n,t):n:(r=Pn(n,Vu(t/N(n))),Wt.test(n)?ur(r.match(It),0,t).join(""):r.slice(0,t))}function Sr(t,n,e,u){function o(){for(var n=-1,c=arguments.length,a=-1,l=u.length,s=Array(l+c),h=this&&this!==Kt&&this instanceof o?f:t;++an?1:-1:tu(e)||0;var u=-1;r=Qu(Vu((r-n)/(e||1)),0);for(var o=Array(r);r--;)o[t?r:++u]=n,n+=e;return o}}function Rr(t){return function(n,r){return typeof n=="string"&&typeof r=="string"||(n=tu(n),r=tu(r)),t(n,r)}}function Wr(t,n,r,e,u,o,i,f,c,a){var l=8&n,s=l?i:T;i=l?T:i;var h=l?o:T;return o=l?T:o,n=(n|(l?32:64))&~(l?64:32),
+4&n||(n&=-4),n=[t,n,u,h,s,o,i,f,c,a],r=r.apply(T,n),ne(t)&&Lo(r,n),r.placeholder=e,r}function Br(t){var n=ju[t];return function(t,r){if(t=tu(t),r=Xu(Qe(r),292)){var e=(ru(t)+"e").split("e"),e=n(e[0]+"e"+(+e[1]+r)),e=(ru(e)+"e").split("e");return+(e[0]+"e"+(+e[1]-r))}return n(t)}}function Lr(t){return function(n){var r=Tr(n);return"[object Map]"==r?U(n):"[object Set]"==r?F(n):A(n,t(n))}}function Mr(t,n,r,e,u,o,i,f){var c=2&n;if(!c&&typeof t!="function")throw new mu("Expected a function");var a=e?e.length:0;
+if(a||(n&=-97,e=u=T),i=i===T?i:Qu(Qe(i),0),f=f===T?f:Qe(f),a-=u?u.length:0,64&n){var l=e,s=u;e=u=T}var h=c?T:Io(t);return o=[t,n,r,e,u,l,s,o,i,f],h&&(r=o[1],t=h[1],n=r|t,e=128==t&&8==r||128==t&&256==r&&h[8]>=o[7].length||384==t&&h[8]>=h[7].length&&8==r,131>n||e)&&(1&t&&(o[2]=h[2],n|=1&r?0:4),(r=h[3])&&(e=o[3],o[3]=e?cr(e,r,h[4]):r,o[4]=e?$(o[3],"__lodash_placeholder__"):h[4]),(r=h[5])&&(e=o[5],o[5]=e?ar(e,r,h[6]):r,o[6]=e?$(o[5],"__lodash_placeholder__"):h[6]),(r=h[7])&&(o[7]=r),128&t&&(o[8]=null==o[8]?h[8]:Xu(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:Qu(o[9]-a,0),!f&&24&n&&(n&=-25),(h?Eo:Lo)(n&&1!=n?8==n||16==n?jr(t,n,f):32!=n&&33!=n||u.length?mr.apply(T,o):Sr(t,n,r,e):dr(t,n,r),o)}function Cr(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))return c==n;var c=-1,a=true,l=1&u?new Zt:T;for(o.set(t,n);++c-1&&0==t%1&&n>t}function Xr(t,n,r){if(!Pe(r))return false;var e=typeof n;return("number"==e?ze(r)&&Qr(n,r.length):"string"==e&&n in r)?Me(r[n],t):false}function te(t,n){if(vi(t))return false;var r=typeof t;return"number"==r||"symbol"==r||"boolean"==r||null==t||Ge(t)?true:ut.test(t)||!et.test(t)||null!=n&&t in Object(n)}function ne(t){var n=Ur(t),r=Ot[n];return typeof r=="function"&&n in Ut.prototype?t===r?true:(n=Io(r),
+!!n&&t===n[0]):false}function re(t){var n=t&&t.constructor;return t===(typeof n=="function"&&n.prototype||Ou)}function ee(t,n){return function(r){return null==r?false:r[t]===n&&(n!==T||t in Object(r))}}function ue(t,n,r,e,u,o){return Pe(t)&&Pe(n)&&Bn(t,n,T,ue,o.set(n,t)),t}function oe(t,n){return 1==n.length?t:vn(t,Tn(n,0,-1))}function ie(t){if(typeof t=="string"||Ge(t))return t;var n=t+"";return"0"==n&&1/t==-q?"-0":n}function fe(t){if(null!=t){try{return Iu.call(t)}catch(n){}return t+""}return""}function ce(t){
+if(t instanceof Ut)return t.clone();var n=new zt(t.__wrapped__,t.__chain__);return n.__actions__=lr(t.__actions__),n.__index__=t.__index__,n.__values__=t.__values__,n}function ae(t,n,r){var e=t?t.length:0;return e?(n=r||n===T?1:Qe(n),Tn(t,0>n?0:n,e)):[]}function le(t,n,r){var e=t?t.length:0;return e?(n=r||n===T?1:Qe(n),n=e-n,Tn(t,0,0>n?0:n)):[]}function se(t,n,r){var e=t?t.length:0;return e?(r=null==r?0:Qe(r),0>r&&(r=Qu(e+r,0)),g(t,Dr(n,3),r)):-1}function he(t,n,r){var e=t?t.length:0;if(!e)return-1;
+var u=e-1;return r!==T&&(u=Qe(r),u=0>r?Qu(e+u,0):Xu(u,e-1)),g(t,Dr(n,3),u,true)}function pe(t){return t&&t.length?t[0]:T}function _e(t){var n=t?t.length:0;return n?t[n-1]:T}function ve(t,n){return t&&t.length&&n&&n.length?Dn(t,n):t}function ge(t){return t?eo.call(t):t}function de(t){if(!t||!t.length)return[];var n=0;return t=f(t,function(t){return Ue(t)?(n=Qu(t.length,n),true):void 0}),m(n,function(n){return l(t,Un(n))})}function ye(t,n){if(!t||!t.length)return[];var e=de(t);return null==n?e:l(e,function(t){
+return r(n,T,t)})}function be(t){return t=Ot(t),t.__chain__=true,t}function xe(t,n){return n(t)}function je(){return this}function we(t,n){return(vi(t)?u:mo)(t,Dr(n,3))}function me(t,n){return(vi(t)?o:Ao)(t,Dr(n,3))}function Ae(t,n){return(vi(t)?l:In)(t,Dr(n,3))}function Oe(t,n,r){var e=-1,u=Ye(t),o=u.length,i=o-1;for(n=(r?Xr(t,n,r):n===T)?1:nn(Qe(n),0,o);++e=t&&(n=T),r}}function Ie(t,n,r){return n=r?T:n,t=Mr(t,8,T,T,T,T,T,n),t.placeholder=Ie.placeholder,t}function Re(t,n,r){return n=r?T:n,t=Mr(t,16,T,T,T,T,T,n),t.placeholder=Re.placeholder,t}function We(t,n,r){function e(n){var r=c,e=a;return c=a=T,_=n,s=t.apply(e,r)}function u(t){var r=t-p;return t-=_,p===T||r>=n||0>r||g&&t>=l}function o(){
+var t=ke();if(u(t))return i(t);var r;r=t-_,t=n-(t-p),r=g?Xu(t,l-r):t,h=At(o,r)}function i(t){return h=T,d&&c?e(t):(c=a=T,s)}function f(){var t=ke(),r=u(t);if(c=arguments,a=this,p=t,r){if(h===T)return _=t=p,h=At(o,n),v?e(t):s;if(g)return h=At(o,n),e(p)}return h===T&&(h=At(o,n)),s}var c,a,l,s,h,p,_=0,v=false,g=false,d=true;if(typeof t!="function")throw new mu("Expected a function");return n=tu(n)||0,Pe(r)&&(v=!!r.leading,l=(g="maxWait"in r)?Qu(tu(r.maxWait)||0,n):l,d="trailing"in r?!!r.trailing:d),f.cancel=function(){
+_=0,c=p=a=h=T},f.flush=function(){return h===T?s:i(ke())},f}function Be(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 mu("Expected a function");return r.cache=new(Be.Cache||Pt),r}function Le(t,n){if(typeof t!="function")throw new mu("Expected a function");return n=Qu(n===T?t.length-1:Qe(n),0),function(){for(var e=arguments,u=-1,o=Qu(e.length-n,0),i=Array(o);++u-1&&0==t%1&&9007199254740991>=t}function Pe(t){var n=typeof t;return!!t&&("object"==n||"function"==n)}function Ze(t){return!!t&&typeof t=="object"}function Te(t){return typeof t=="number"||Ze(t)&&"[object Number]"==Lu.call(t)}function qe(t){return!Ze(t)||"[object Object]"!=Lu.call(t)||C(t)?false:(t=Gu(Object(t)),
+null===t?true:(t=Ru.call(t,"constructor")&&t.constructor,typeof t=="function"&&t instanceof t&&Iu.call(t)==Bu))}function Ve(t){return Pe(t)&&"[object RegExp]"==Lu.call(t)}function Ke(t){return typeof t=="string"||!vi(t)&&Ze(t)&&"[object String]"==Lu.call(t)}function Ge(t){return typeof t=="symbol"||Ze(t)&&"[object Symbol]"==Lu.call(t)}function Je(t){return Ze(t)&&Ne(t.length)&&!!Mt[Lu.call(t)]}function Ye(t){if(!t)return[];if(ze(t))return Ke(t)?t.match(It):lr(t);if(Pu&&t[Pu])return z(t[Pu]());var n=Tr(t);
+return("[object Map]"==n?U:"[object Set]"==n?D:fu)(t)}function He(t){return t?(t=tu(t),t===q||t===-q?1.7976931348623157e308*(0>t?-1:1):t===t?t:0):0===t?t:0}function Qe(t){t=He(t);var n=t%1;return t===t?n?t-n:t:0}function Xe(t){return t?nn(Qe(t),0,4294967295):0}function tu(t){if(typeof t=="number")return t;if(Ge(t))return V;if(Pe(t)&&(t=De(t.valueOf)?t.valueOf():t,t=Pe(t)?t+"":t),typeof t!="string")return 0===t?t:+t;t=t.replace(ct,"");var n=dt.test(t);return n||bt.test(t)?Nt(t.slice(2),n?2:8):gt.test(t)?V:+t;
+}function nu(t){return sr(t,iu(t))}function ru(t){return null==t?"":Yn(t)}function eu(t,n,r){return t=null==t?T:vn(t,n),t===T?r:t}function uu(t,n){return null!=t&&qr(t,n,bn)}function ou(t){var n=re(t);if(!n&&!ze(t))return Hu(Object(t));var r,e=Jr(t),u=!!e,e=e||[],o=e.length;for(r in t)!yn(t,r)||u&&("length"==r||Qr(r,o))||n&&"constructor"==r||e.push(r);return e}function iu(t){for(var n=-1,r=re(t),e=En(t),u=e.length,o=Jr(t),i=!!o,o=o||[],f=o.length;++nt?false:(t==n.length-1?n.pop():qu.call(n,t,1),true)},Dt.prototype.get=function(t){
+var n=this.__data__;return t=Ht(n,t),0>t?T:n[t][1]},Dt.prototype.has=function(t){return-1e?r.push([t,n]):r[e][1]=n,this},Pt.prototype.clear=function(){this.__data__={hash:new $t,map:new(io||Dt),string:new $t}},Pt.prototype["delete"]=function(t){return Fr(this,t)["delete"](t)},Pt.prototype.get=function(t){return Fr(this,t).get(t)},Pt.prototype.has=function(t){return Fr(this,t).has(t)},Pt.prototype.set=function(t,n){
+return Fr(this,t).set(t,n),this},Zt.prototype.add=Zt.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},Zt.prototype.has=function(t){return this.__data__.has(t)},qt.prototype.clear=function(){this.__data__=new Dt},qt.prototype["delete"]=function(t){return this.__data__["delete"](t)},qt.prototype.get=function(t){return this.__data__.get(t)},qt.prototype.has=function(t){return this.__data__.has(t)},qt.prototype.set=function(t,n){var r=this.__data__;return r instanceof Dt&&200==r.__data__.length&&(r=this.__data__=new Pt(r.__data__)),
+r.set(t,n),this};var mo=vr(hn),Ao=vr(pn,true),Oo=gr(),ko=gr(true);Fu&&!Tu.call({valueOf:1},"valueOf")&&(En=function(t){return z(Fu(t))});var Eo=so?function(t,n){return so.set(t,n),t}:hu,So=co&&1/D(new co([,-0]))[1]==q?function(t){return new co(t)}:vu,Io=so?function(t){return so.get(t)}:vu,Ro=Un("length");Nu||(Zr=du);var Wo=Nu?function(t){for(var n=[];t;)s(n,Zr(t)),t=Gu(Object(t));return n}:Zr;(oo&&"[object DataView]"!=Tr(new oo(new ArrayBuffer(1)))||io&&"[object Map]"!=Tr(new io)||fo&&"[object Promise]"!=Tr(fo.resolve())||co&&"[object Set]"!=Tr(new co)||ao&&"[object WeakMap]"!=Tr(new ao))&&(Tr=function(t){
+var n=Lu.call(t);if(t=(t="[object Object]"==n?t.constructor:T)?fe(t):T)switch(t){case _o:return"[object DataView]";case vo:return"[object Map]";case go:return"[object Promise]";case yo:return"[object Set]";case bo:return"[object WeakMap]"}return n});var Bo=Eu?De:yu,Lo=function(){var t=0,n=0;return function(r,e){var u=ke(),o=16-(u-n);if(n=u,o>0){if(150<=++t)return r}else t=0;return Eo(r,e)}}(),Mo=Be(function(t){var n=[];return ru(t).replace(ot,function(t,r,e,u){n.push(e?u.replace(ht,"$1"):r||t)}),
+n}),Co=Le(function(t,n){return Ue(t)?fn(t,sn(n,1,Ue,true)):[]}),zo=Le(function(t,n){var r=_e(n);return Ue(r)&&(r=T),Ue(t)?fn(t,sn(n,1,Ue,true),Dr(r)):[]}),Uo=Le(function(t,n){var r=_e(n);return Ue(r)&&(r=T),Ue(t)?fn(t,sn(n,1,Ue,true),T,r):[]}),$o=Le(function(t){var n=l(t,rr);return n.length&&n[0]===t[0]?xn(n):[]}),Do=Le(function(t){var n=_e(t),r=l(t,rr);return n===_e(r)?n=T:r.pop(),r.length&&r[0]===t[0]?xn(r,Dr(n)):[]}),Fo=Le(function(t){var n=_e(t),r=l(t,rr);return n===_e(r)?n=T:r.pop(),r.length&&r[0]===t[0]?xn(r,T,n):[];
+}),No=Le(ve),Po=Le(function(t,n){n=sn(n,1);var r=t?t.length:0,e=tn(t,n);return Fn(t,l(n,function(t){return Qr(t,r)?+t:t}).sort(fr)),e}),Zo=Le(function(t){return Hn(sn(t,1,Ue,true))}),To=Le(function(t){var n=_e(t);return Ue(n)&&(n=T),Hn(sn(t,1,Ue,true),Dr(n))}),qo=Le(function(t){var n=_e(t);return Ue(n)&&(n=T),Hn(sn(t,1,Ue,true),T,n)}),Vo=Le(function(t,n){return Ue(t)?fn(t,n):[]}),Ko=Le(function(t){return tr(f(t,Ue))}),Go=Le(function(t){var n=_e(t);return Ue(n)&&(n=T),tr(f(t,Ue),Dr(n))}),Jo=Le(function(t){
+var n=_e(t);return Ue(n)&&(n=T),tr(f(t,Ue),T,n)}),Yo=Le(de),Ho=Le(function(t){var n=t.length,n=n>1?t[n-1]:T,n=typeof n=="function"?(t.pop(),n):T;return ye(t,n)}),Qo=Le(function(t){function n(n){return tn(n,t)}t=sn(t,1);var r=t.length,e=r?t[0]:0,u=this.__wrapped__;return!(r>1||this.__actions__.length)&&u instanceof Ut&&Qr(e)?(u=u.slice(e,+e+(r?1:0)),u.__actions__.push({func:xe,args:[n],thisArg:T}),new zt(u,this.__chain__).thru(function(t){return r&&!t.length&&t.push(T),t})):this.thru(n)}),Xo=pr(function(t,n,r){
+Ru.call(t,r)?++t[r]:t[r]=1}),ti=pr(function(t,n,r){Ru.call(t,r)?t[r].push(n):t[r]=[n]}),ni=Le(function(t,n,e){var u=-1,o=typeof n=="function",i=te(n),f=ze(t)?Array(t.length):[];return mo(t,function(t){var c=o?n:i&&null!=t?t[n]:T;f[++u]=c?r(c,t,e):wn(t,n,e)}),f}),ri=pr(function(t,n,r){t[r]=n}),ei=pr(function(t,n,r){t[r?0:1].push(n)},function(){return[[],[]]}),ui=Le(function(t,n){if(null==t)return[];var r=n.length;return r>1&&Xr(t,n[0],n[1])?n=[]:r>2&&Xr(n[0],n[1],n[2])&&(n=[n[0]]),n=1==n.length&&vi(n[0])?n[0]:sn(n,1,Hr),
+Mn(t,n,[])}),oi=Le(function(t,n,r){var e=1;if(r.length)var u=$(r,$r(oi)),e=32|e;return Mr(t,e,n,r,u)}),ii=Le(function(t,n,r){var e=3;if(r.length)var u=$(r,$r(ii)),e=32|e;return Mr(n,e,t,r,u)}),fi=Le(function(t,n){return on(t,1,n)}),ci=Le(function(t,n,r){return on(t,tu(n)||0,r)});Be.Cache=Pt;var ai=Le(function(t,n){n=1==n.length&&vi(n[0])?l(n[0],O(Dr())):l(sn(n,1,Hr),O(Dr()));var e=n.length;return Le(function(u){for(var o=-1,i=Xu(u.length,e);++o=n}),vi=Array.isArray,gi=zu?function(t){return t instanceof zu}:yu,di=Rr(Sn),yi=Rr(function(t,n){return n>=t}),bi=_r(function(t,n){if(ho||re(n)||ze(n))sr(n,ou(n),t);else for(var r in n)Ru.call(n,r)&&Yt(t,r,n[r])}),xi=_r(function(t,n){if(ho||re(n)||ze(n))sr(n,iu(n),t);else for(var r in n)Yt(t,r,n[r])}),ji=_r(function(t,n,r,e){
+sr(n,iu(n),t,e)}),wi=_r(function(t,n,r,e){sr(n,ou(n),t,e)}),mi=Le(function(t,n){return tn(t,sn(n,1))}),Ai=Le(function(t){return t.push(T,Vt),r(ji,T,t)}),Oi=Le(function(t){return t.push(T,ue),r(Ri,T,t)}),ki=Ar(function(t,n,r){t[n]=r},su(hu)),Ei=Ar(function(t,n,r){Ru.call(t,n)?t[n].push(r):t[n]=[r]},Dr),Si=Le(wn),Ii=_r(function(t,n,r){Bn(t,n,r)}),Ri=_r(function(t,n,r,e){Bn(t,n,r,e)}),Wi=Le(function(t,n){return null==t?{}:(n=l(sn(n,1),ie),Cn(t,fn(gn(t,iu,Wo),n)))}),Bi=Le(function(t,n){return null==t?{}:Cn(t,l(sn(n,1),ie));
+}),Li=Lr(ou),Mi=Lr(iu),Ci=br(function(t,n,r){return n=n.toLowerCase(),t+(r?cu(n):n)}),zi=br(function(t,n,r){return t+(r?"-":"")+n.toLowerCase()}),Ui=br(function(t,n,r){return t+(r?" ":"")+n.toLowerCase()}),$i=yr("toLowerCase"),Di=br(function(t,n,r){return t+(r?"_":"")+n.toLowerCase()}),Fi=br(function(t,n,r){return t+(r?" ":"")+Pi(n)}),Ni=br(function(t,n,r){return t+(r?" ":"")+n.toUpperCase()}),Pi=yr("toUpperCase"),Zi=Le(function(t,n){try{return r(t,T,n)}catch(e){return $e(e)?e:new xu(e)}}),Ti=Le(function(t,n){
+return u(sn(n,1),function(n){n=ie(n),t[n]=oi(t[n],t)}),t}),qi=wr(),Vi=wr(true),Ki=Le(function(t,n){return function(r){return wn(r,t,n)}}),Gi=Le(function(t,n){return function(r){return wn(t,r,n)}}),Ji=kr(l),Yi=kr(i),Hi=kr(_),Qi=Ir(),Xi=Ir(true),tf=Or(function(t,n){return t+n}),nf=Br("ceil"),rf=Or(function(t,n){return t/n}),ef=Br("floor"),uf=Or(function(t,n){return t*n}),of=Br("round"),ff=Or(function(t,n){return t-n});return Ot.after=function(t,n){if(typeof n!="function")throw new mu("Expected a function");
+return t=Qe(t),function(){return 1>--t?n.apply(this,arguments):void 0}},Ot.ary=Ee,Ot.assign=bi,Ot.assignIn=xi,Ot.assignInWith=ji,Ot.assignWith=wi,Ot.at=mi,Ot.before=Se,Ot.bind=oi,Ot.bindAll=Ti,Ot.bindKey=ii,Ot.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return vi(t)?t:[t]},Ot.chain=be,Ot.chunk=function(t,n,r){if(n=(r?Xr(t,n,r):n===T)?1:Qu(Qe(n),0),r=t?t.length:0,!r||1>n)return[];for(var e=0,u=0,o=Array(Vu(r/n));r>e;)o[u++]=Tn(t,e,e+=n);return o},Ot.compact=function(t){for(var n=-1,r=t?t.length:0,e=0,u=[];++nr&&(r=-r>u?0:u+r),e=e===T||e>u?u:Qe(e),0>e&&(e+=u),e=r>e?0:Xe(e);e>r;)t[r++]=n;return t},Ot.filter=function(t,n){return(vi(t)?f:ln)(t,Dr(n,3))},Ot.flatMap=function(t,n){return sn(Ae(t,n),1)},Ot.flatMapDeep=function(t,n){return sn(Ae(t,n),q)},Ot.flatMapDepth=function(t,n,r){return r=r===T?1:Qe(r),sn(Ae(t,n),r)},Ot.flatten=function(t){return t&&t.length?sn(t,1):[]},Ot.flattenDeep=function(t){return t&&t.length?sn(t,q):[]},Ot.flattenDepth=function(t,n){return t&&t.length?(n=n===T?1:Qe(n),sn(t,n)):[];
+},Ot.flip=function(t){return Mr(t,512)},Ot.flow=qi,Ot.flowRight=Vi,Ot.fromPairs=function(t){for(var n=-1,r=t?t.length:0,e={};++n>>0,r?(t=ru(t))&&(typeof n=="string"||null!=n&&!Ve(n))&&(n=Yn(n),""==n&&Wt.test(t))?ur(t.match(It),0,r):uo.call(t,n,r):[]},Ot.spread=function(t,n){if(typeof t!="function")throw new mu("Expected a function");return n=n===T?0:Qu(Qe(n),0),Le(function(e){var u=e[n];return e=ur(e,0,n),u&&s(e,u),r(t,this,e)})},Ot.tail=function(t){return ae(t,1)},Ot.take=function(t,n,r){return t&&t.length?(n=r||n===T?1:Qe(n),
+Tn(t,0,0>n?0:n)):[]},Ot.takeRight=function(t,n,r){var e=t?t.length:0;return e?(n=r||n===T?1:Qe(n),n=e-n,Tn(t,0>n?0:n,e)):[]},Ot.takeRightWhile=function(t,n){return t&&t.length?Qn(t,Dr(n,3),false,true):[]},Ot.takeWhile=function(t,n){return t&&t.length?Qn(t,Dr(n,3)):[]},Ot.tap=function(t,n){return n(t),t},Ot.throttle=function(t,n,r){var e=true,u=true;if(typeof t!="function")throw new mu("Expected a function");return Pe(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),We(t,n,{leading:e,maxWait:n,
+trailing:u})},Ot.thru=xe,Ot.toArray=Ye,Ot.toPairs=Li,Ot.toPairsIn=Mi,Ot.toPath=function(t){return vi(t)?l(t,ie):Ge(t)?[t]:lr(Mo(t))},Ot.toPlainObject=nu,Ot.transform=function(t,n,r){var e=vi(t)||Je(t);if(n=Dr(n,4),null==r)if(e||Pe(t)){var o=t.constructor;r=e?vi(t)?new o:[]:De(o)?un(Gu(Object(t))):{}}else r={};return(e?u:hn)(t,function(t,e,u){return n(r,t,e,u)}),r},Ot.unary=function(t){return Ee(t,1)},Ot.union=Zo,Ot.unionBy=To,Ot.unionWith=qo,Ot.uniq=function(t){return t&&t.length?Hn(t):[]},Ot.uniqBy=function(t,n){
+return t&&t.length?Hn(t,Dr(n)):[]},Ot.uniqWith=function(t,n){return t&&t.length?Hn(t,T,n):[]},Ot.unset=function(t,n){var r;if(null==t)r=true;else{r=t;var e=n,e=te(e,r)?[e]:er(e);r=oe(r,e),e=ie(_e(e)),r=!(null!=r&&yn(r,e))||delete r[e]}return r},Ot.unzip=de,Ot.unzipWith=ye,Ot.update=function(t,n,r){return null==t?t:Zn(t,n,(typeof r=="function"?r:hu)(vn(t,n)),void 0)},Ot.updateWith=function(t,n,r,e){return e=typeof e=="function"?e:T,null!=t&&(t=Zn(t,n,(typeof r=="function"?r:hu)(vn(t,n)),e)),t},Ot.values=fu,
+Ot.valuesIn=function(t){return null==t?[]:k(t,iu(t))},Ot.without=Vo,Ot.words=lu,Ot.wrap=function(t,n){return n=null==n?hu:n,li(n,t)},Ot.xor=Ko,Ot.xorBy=Go,Ot.xorWith=Jo,Ot.zip=Yo,Ot.zipObject=function(t,n){return nr(t||[],n||[],Yt)},Ot.zipObjectDeep=function(t,n){return nr(t||[],n||[],Zn)},Ot.zipWith=Ho,Ot.entries=Li,Ot.entriesIn=Mi,Ot.extend=xi,Ot.extendWith=ji,_u(Ot,Ot),Ot.add=tf,Ot.attempt=Zi,Ot.camelCase=Ci,Ot.capitalize=cu,Ot.ceil=nf,Ot.clamp=function(t,n,r){return r===T&&(r=n,n=T),r!==T&&(r=tu(r),
+r=r===r?r:0),n!==T&&(n=tu(n),n=n===n?n:0),nn(tu(t),n,r)},Ot.clone=function(t){return rn(t,false,true)},Ot.cloneDeep=function(t){return rn(t,true,true)},Ot.cloneDeepWith=function(t,n){return rn(t,true,true,n)},Ot.cloneWith=function(t,n){return rn(t,false,true,n)},Ot.deburr=au,Ot.divide=rf,Ot.endsWith=function(t,n,r){t=ru(t),n=Yn(n);var e=t.length;return r=r===T?e:nn(Qe(r),0,e),r-=n.length,r>=0&&t.indexOf(n,r)==r},Ot.eq=Me,Ot.escape=function(t){return(t=ru(t))&&X.test(t)?t.replace(H,B):t},Ot.escapeRegExp=function(t){
+return(t=ru(t))&&ft.test(t)?t.replace(it,"\\$&"):t},Ot.every=function(t,n,r){var e=vi(t)?i:cn;return r&&Xr(t,n,r)&&(n=T),e(t,Dr(n,3))},Ot.find=function(t,n,r){return t=ze(t)?t:fu(t),n=se(t,n,r),n>-1?t[n]:T},Ot.findIndex=se,Ot.findKey=function(t,n){return v(t,Dr(n,3),hn)},Ot.findLast=function(t,n,r){return t=ze(t)?t:fu(t),n=he(t,n,r),n>-1?t[n]:T},Ot.findLastIndex=he,Ot.findLastKey=function(t,n){return v(t,Dr(n,3),pn)},Ot.floor=ef,Ot.forEach=we,Ot.forEachRight=me,Ot.forIn=function(t,n){return null==t?t:Oo(t,Dr(n,3),iu);
+},Ot.forInRight=function(t,n){return null==t?t:ko(t,Dr(n,3),iu)},Ot.forOwn=function(t,n){return t&&hn(t,Dr(n,3))},Ot.forOwnRight=function(t,n){return t&&pn(t,Dr(n,3))},Ot.get=eu,Ot.gt=pi,Ot.gte=_i,Ot.has=function(t,n){return null!=t&&qr(t,n,yn)},Ot.hasIn=uu,Ot.head=pe,Ot.identity=hu,Ot.includes=function(t,n,r,e){return t=ze(t)?t:fu(t),r=r&&!e?Qe(r):0,e=t.length,0>r&&(r=Qu(e+r,0)),Ke(t)?e>=r&&-1r&&(r=Qu(e+r,0)),d(t,n,r)):-1},Ot.inRange=function(t,n,r){return n=tu(n)||0,r===T?(r=n,n=0):r=tu(r)||0,t=tu(t),t>=Xu(n,r)&&t=-9007199254740991&&9007199254740991>=t},Ot.isSet=function(t){return Ze(t)&&"[object Set]"==Tr(t)},Ot.isString=Ke,Ot.isSymbol=Ge,Ot.isTypedArray=Je,Ot.isUndefined=function(t){return t===T},Ot.isWeakMap=function(t){return Ze(t)&&"[object WeakMap]"==Tr(t)},Ot.isWeakSet=function(t){return Ze(t)&&"[object WeakSet]"==Lu.call(t)},Ot.join=function(t,n){return t?Yu.call(t,n):""},Ot.kebabCase=zi,Ot.last=_e,Ot.lastIndexOf=function(t,n,r){var e=t?t.length:0;
+if(!e)return-1;var u=e;if(r!==T&&(u=Qe(r),u=(0>u?Qu(e+u,0):Xu(u,e-1))+1),n!==n)return M(t,u-1,true);for(;u--;)if(t[u]===n)return u;return-1},Ot.lowerCase=Ui,Ot.lowerFirst=$i,Ot.lt=di,Ot.lte=yi,Ot.max=function(t){return t&&t.length?an(t,hu,dn):T},Ot.maxBy=function(t,n){return t&&t.length?an(t,Dr(n),dn):T},Ot.mean=function(t){return b(t,hu)},Ot.meanBy=function(t,n){return b(t,Dr(n))},Ot.min=function(t){return t&&t.length?an(t,hu,Sn):T},Ot.minBy=function(t,n){return t&&t.length?an(t,Dr(n),Sn):T},Ot.stubArray=du,
+Ot.stubFalse=yu,Ot.stubObject=function(){return{}},Ot.stubString=function(){return""},Ot.stubTrue=function(){return true},Ot.multiply=uf,Ot.nth=function(t,n){return t&&t.length?Ln(t,Qe(n)):T},Ot.noConflict=function(){return Kt._===this&&(Kt._=Mu),this},Ot.noop=vu,Ot.now=ke,Ot.pad=function(t,n,r){t=ru(t);var e=(n=Qe(n))?N(t):0;return!n||e>=n?t:(n=(n-e)/2,Er(Ku(n),r)+t+Er(Vu(n),r))},Ot.padEnd=function(t,n,r){t=ru(t);var e=(n=Qe(n))?N(t):0;return n&&n>e?t+Er(n-e,r):t},Ot.padStart=function(t,n,r){t=ru(t);
+var e=(n=Qe(n))?N(t):0;return n&&n>e?Er(n-e,r)+t:t},Ot.parseInt=function(t,n,r){return r||null==n?n=0:n&&(n=+n),t=ru(t).replace(ct,""),to(t,n||(vt.test(t)?16:10))},Ot.random=function(t,n,r){if(r&&typeof r!="boolean"&&Xr(t,n,r)&&(n=r=T),r===T&&(typeof n=="boolean"?(r=n,n=T):typeof t=="boolean"&&(r=t,t=T)),t===T&&n===T?(t=0,n=1):(t=tu(t)||0,n===T?(n=t,t=0):n=tu(n)||0),t>n){var e=t;t=n,n=e}return r||t%1||n%1?(r=no(),Xu(t+r*(n-t+Ft("1e-"+((r+"").length-1))),n)):Nn(t,n)},Ot.reduce=function(t,n,r){var e=vi(t)?h:x,u=3>arguments.length;
+return e(t,Dr(n,4),r,u,mo)},Ot.reduceRight=function(t,n,r){var e=vi(t)?p:x,u=3>arguments.length;return e(t,Dr(n,4),r,u,Ao)},Ot.repeat=function(t,n,r){return n=(r?Xr(t,n,r):n===T)?1:Qe(n),Pn(ru(t),n)},Ot.replace=function(){var t=arguments,n=ru(t[0]);return 3>t.length?n:ro.call(n,t[1],t[2])},Ot.result=function(t,n,r){n=te(n,t)?[n]:er(n);var e=-1,u=n.length;for(u||(t=T,u=1);++e0?t[Nn(0,n-1)]:T},Ot.size=function(t){if(null==t)return 0;if(ze(t)){var n=t.length;return n&&Ke(t)?N(t):n}return Ze(t)&&(n=Tr(t),"[object Map]"==n||"[object Set]"==n)?t.size:ou(t).length},Ot.snakeCase=Di,Ot.some=function(t,n,r){var e=vi(t)?_:qn;return r&&Xr(t,n,r)&&(n=T),e(t,Dr(n,3))},Ot.sortedIndex=function(t,n){return Vn(t,n)},Ot.sortedIndexBy=function(t,n,r){return Kn(t,n,Dr(r))},Ot.sortedIndexOf=function(t,n){var r=t?t.length:0;if(r){var e=Vn(t,n);if(r>e&&Me(t[e],n))return e;
+}return-1},Ot.sortedLastIndex=function(t,n){return Vn(t,n,true)},Ot.sortedLastIndexBy=function(t,n,r){return Kn(t,n,Dr(r),true)},Ot.sortedLastIndexOf=function(t,n){if(t&&t.length){var r=Vn(t,n,true)-1;if(Me(t[r],n))return r}return-1},Ot.startCase=Fi,Ot.startsWith=function(t,n,r){return t=ru(t),r=nn(Qe(r),0,t.length),t.lastIndexOf(Yn(n),r)==r},Ot.subtract=ff,Ot.sum=function(t){return t&&t.length?w(t,hu):0},Ot.sumBy=function(t,n){return t&&t.length?w(t,Dr(n)):0},Ot.template=function(t,n,r){var e=Ot.templateSettings;
+r&&Xr(t,n,r)&&(n=T),t=ru(t),n=ji({},n,e,Vt),r=ji({},n.imports,e.imports,Vt);var u,o,i=ou(r),f=k(r,i),c=0;r=n.interpolate||wt;var a="__p+='";r=wu((n.escape||wt).source+"|"+r.source+"|"+(r===rt?pt:wt).source+"|"+(n.evaluate||wt).source+"|$","g");var l="sourceURL"in n?"//# sourceURL="+n.sourceURL+"\n":"";if(t.replace(r,function(n,r,e,i,f,l){return e||(e=i),a+=t.slice(c,l).replace(mt,L),r&&(u=true,a+="'+__e("+r+")+'"),f&&(o=true,a+="';"+f+";\n__p+='"),e&&(a+="'+((__t=("+e+"))==null?'':__t)+'"),c=l+n.length,
+n}),a+="';",(n=n.variable)||(a="with(obj){"+a+"}"),a=(o?a.replace(K,""):a).replace(G,"$1").replace(J,"$1;"),a="function("+(n||"obj")+"){"+(n?"":"obj||(obj={});")+"var __t,__p=''"+(u?",__e=_.escape":"")+(o?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+a+"return __p}",n=Zi(function(){return Function(i,l+"return "+a).apply(T,f)}),n.source=a,$e(n))throw n;return n},Ot.times=function(t,n){if(t=Qe(t),1>t||t>9007199254740991)return[];var r=4294967295,e=Xu(t,4294967295);for(n=Dr(n),
+t-=4294967295,e=m(e,n);++r=o)return t;if(o=r-N(e),1>o)return e;if(r=i?ur(i,0,o).join(""):t.slice(0,o),u===T)return r+e;
+if(i&&(o+=r.length-o),Ve(u)){if(t.slice(o).search(u)){var f=r;for(u.global||(u=wu(u.source,ru(_t.exec(u))+"g")),u.lastIndex=0;i=u.exec(f);)var c=i.index;r=r.slice(0,c===T?o:c)}}else t.indexOf(Yn(u),o)!=o&&(u=r.lastIndexOf(u),u>-1&&(r=r.slice(0,u)));return r+e},Ot.unescape=function(t){return(t=ru(t))&&Q.test(t)?t.replace(Y,P):t},Ot.uniqueId=function(t){var n=++Wu;return ru(t)+n},Ot.upperCase=Ni,Ot.upperFirst=Pi,Ot.each=we,Ot.eachRight=me,Ot.first=pe,_u(Ot,function(){var t={};return hn(Ot,function(n,r){
+Ru.call(Ot.prototype,r)||(t[r]=n)}),t}(),{chain:false}),Ot.VERSION="4.13.0",u("bind bindKey curry curryRight partial partialRight".split(" "),function(t){Ot[t].placeholder=Ot}),u(["drop","take"],function(t,n){Ut.prototype[t]=function(r){var e=this.__filtered__;if(e&&!n)return new Ut(this);r=r===T?1:Qu(Qe(r),0);var u=this.clone();return e?u.__takeCount__=Xu(r,u.__takeCount__):u.__views__.push({size:Xu(r,4294967295),type:t+(0>u.__dir__?"Right":"")}),u},Ut.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;Ut.prototype[t]=function(t){var n=this.clone();return n.__iteratees__.push({iteratee:Dr(t,3),type:r}),n.__filtered__=n.__filtered__||e,n}}),u(["head","last"],function(t,n){var r="take"+(n?"Right":"");Ut.prototype[t]=function(){return this[r](1).value()[0]}}),u(["initial","tail"],function(t,n){var r="drop"+(n?"":"Right");Ut.prototype[t]=function(){return this.__filtered__?new Ut(this):this[r](1)}}),Ut.prototype.compact=function(){
+return this.filter(hu)},Ut.prototype.find=function(t){return this.filter(t).head()},Ut.prototype.findLast=function(t){return this.reverse().find(t)},Ut.prototype.invokeMap=Le(function(t,n){return typeof t=="function"?new Ut(this):this.map(function(r){return wn(r,t,n)})}),Ut.prototype.reject=function(t){return t=Dr(t,3),this.filter(function(n){return!t(n)})},Ut.prototype.slice=function(t,n){t=Qe(t);var r=this;return r.__filtered__&&(t>0||0>n)?new Ut(r):(0>t?r=r.takeRight(-t):t&&(r=r.drop(t)),n!==T&&(n=Qe(n),
+r=0>n?r.dropRight(-n):r.take(n-t)),r)},Ut.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},Ut.prototype.toArray=function(){return this.take(4294967295)},hn(Ut.prototype,function(t,n){var r=/^(?:filter|find|map|reject)|While$/.test(n),e=/^(?:head|last)$/.test(n),u=Ot[e?"take"+("last"==n?"Right":""):n],o=e||/^find/.test(n);u&&(Ot.prototype[n]=function(){function n(t){return t=u.apply(Ot,s([t],f)),e&&h?t[0]:t}var i=this.__wrapped__,f=e?[1]:arguments,c=i instanceof Ut,a=f[0],l=c||vi(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 Ut(this),i=t.apply(i,f),i.__actions__.push({func:xe,args:[n],thisArg:T}),new zt(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=Au[t],r=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",e=/^(?:pop|shift)$/.test(t);Ot.prototype[t]=function(){var t=arguments;if(e&&!this.__chain__){
+var u=this.value();return n.apply(vi(u)?u:[],t)}return this[r](function(r){return n.apply(vi(r)?r:[],t)})}}),hn(Ut.prototype,function(t,n){var r=Ot[n];if(r){var e=r.name+"";(po[e]||(po[e]=[])).push({name:n,func:r})}}),po[mr(T,2).name]=[{name:"wrapper",func:T}],Ut.prototype.clone=function(){var t=new Ut(this.__wrapped__);return t.__actions__=lr(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=lr(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=lr(this.__views__),
+t},Ut.prototype.reverse=function(){if(this.__filtered__){var t=new Ut(this);t.__dir__=-1,t.__filtered__=true}else t=this.clone(),t.__dir__*=-1;return t},Ut.prototype.value=function(){var t,n=this.__wrapped__.value(),r=this.__dir__,e=vi(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 Xn(n,this.__actions__);e=[];t:for(;t--&&a>c;){for(u+=r,o=-1,l=n[u];++o=this.__values__.length,n=t?T:this.__values__[this.__index__++];return{done:t,value:n}},Ot.prototype.plant=function(t){for(var n,r=this;r instanceof kt;){var e=ce(r);e.__index__=0,e.__values__=T,n?u.__wrapped__=e:n=e;var u=e,r=r.__wrapped__}return u.__wrapped__=t,n},Ot.prototype.reverse=function(){var t=this.__wrapped__;return t instanceof Ut?(this.__actions__.length&&(t=new Ut(this)),t=t.reverse(),t.__actions__.push({func:xe,args:[ge],thisArg:T}),new zt(t,this.__chain__)):this.thru(ge);
+},Ot.prototype.toJSON=Ot.prototype.valueOf=Ot.prototype.value=function(){return Xn(this.__wrapped__,this.__actions__)},Pu&&(Ot.prototype[Pu]=je),Ot}var T,q=1/0,V=NaN,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=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(\.|\[\])(?:\4|$))/g,it=/[\\^$.*+?()[\]{}|]/g,ft=RegExp(it.source),ct=/^\s+|\s+$/g,at=/^\s+/,lt=/\s+$/,st=/[a-zA-Z0-9]+/g,ht=/\\(\\)?/g,pt=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,_t=/\w*$/,vt=/^0x/i,gt=/^[-+]0x[0-9a-f]+$/i,dt=/^0b[01]+$/i,yt=/^\[object .+?Constructor\]$/,bt=/^0o[0-7]+$/i,xt=/^(?:0|[1-9]\d*)$/,jt=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,wt=/($^)/,mt=/['\n\r\u2028\u2029\\]/g,At="[\\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])?)*",Ot="(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])"+At,kt="(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]?|[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])",Et=RegExp("['\u2019]","g"),St=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]","g"),It=RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|"+kt+At,"g"),Rt=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+",Ot].join("|"),"g"),Wt=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0\\ufe0e\\ufe0f]"),Bt=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Lt="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 _ isFinite parseInt setTimeout".split(" "),Mt={};
Mt["[object Float32Array]"]=Mt["[object Float64Array]"]=Mt["[object Int8Array]"]=Mt["[object Int16Array]"]=Mt["[object Int32Array]"]=Mt["[object Uint8Array]"]=Mt["[object Uint8ClampedArray]"]=Mt["[object Uint16Array]"]=Mt["[object Uint32Array]"]=true,Mt["[object Arguments]"]=Mt["[object Array]"]=Mt["[object ArrayBuffer]"]=Mt["[object Boolean]"]=Mt["[object DataView]"]=Mt["[object Date]"]=Mt["[object Error]"]=Mt["[object Function]"]=Mt["[object Map]"]=Mt["[object Number]"]=Mt["[object Object]"]=Mt["[object RegExp]"]=Mt["[object Set]"]=Mt["[object String]"]=Mt["[object WeakMap]"]=false;
var Ct={};Ct["[object Arguments]"]=Ct["[object Array]"]=Ct["[object ArrayBuffer]"]=Ct["[object DataView]"]=Ct["[object Boolean]"]=Ct["[object Date]"]=Ct["[object Float32Array]"]=Ct["[object Float64Array]"]=Ct["[object Int8Array]"]=Ct["[object Int16Array]"]=Ct["[object Int32Array]"]=Ct["[object Map]"]=Ct["[object Number]"]=Ct["[object Object]"]=Ct["[object RegExp]"]=Ct["[object Set]"]=Ct["[object String]"]=Ct["[object Symbol]"]=Ct["[object Uint8Array]"]=Ct["[object Uint8ClampedArray]"]=Ct["[object Uint16Array]"]=Ct["[object Uint32Array]"]=true,
Ct["[object Error]"]=Ct["[object Function]"]=Ct["[object WeakMap]"]=false;var zt={"\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"},Ut={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},Dt={"&":"&","<":"<",">":">",""":'"',"'":"'","`":"`"},Ft={"function":true,object:true},$t={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"
-},Nt=parseFloat,Pt=parseInt,Zt=Ft[typeof exports]&&exports&&!exports.nodeType?exports:T,Tt=Ft[typeof module]&&module&&!module.nodeType?module:T,qt=Tt&&Tt.exports===Zt?Zt:T,Vt=R(Ft[typeof self]&&self),Kt=R(Ft[typeof window]&&window),Gt=R(Ft[typeof this]&&this),Jt=R(Zt&&Tt&&typeof global=="object"&&global)||Kt!==(Gt&&Gt.window)&&Kt||Vt||Gt||Function("return this")(),Yt=Z();(Kt||Vt||{})._=Yt,typeof define=="function"&&typeof define.amd=="object"&&define.amd? define(function(){return Yt}):Zt&&Tt?(qt&&((Tt.exports=Yt)._=Yt),
-Zt._=Yt):Jt._=Yt}).call(this);
\ No newline at end of file
+"\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"},Ut={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},$t={"&":"&","<":"<",">":">",""":'"',"'":"'","`":"`"},Dt={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Ft=parseFloat,Nt=parseInt,Pt=typeof exports=="object"&&exports,Zt=Pt&&typeof module=="object"&&module,Tt=Zt&&Zt.exports===Pt,qt=R(typeof self=="object"&&self),Vt=R(typeof this=="object"&&this),Kt=R(typeof global=="object"&&global)||qt||Vt||Function("return this")(),Gt=Z();
+(qt||{})._=Gt,typeof define=="function"&&typeof define.amd=="object"&&define.amd? define(function(){return Gt}):Zt?((Zt.exports=Gt)._=Gt,Pt._=Gt):Kt._=Gt}).call(this);
\ No newline at end of file
diff --git a/noop.js b/noop.js
index 26e19c317..a682a4465 100644
--- a/noop.js
+++ b/noop.js
@@ -1,6 +1,5 @@
/**
- * A no-operation function that returns `undefined` regardless of the
- * arguments it receives.
+ * A method that returns `undefined`.
*
* @static
* @memberOf _
@@ -8,10 +7,8 @@
* @category Util
* @example
*
- * var object = { 'user': 'fred' };
- *
- * _.noop(object) === undefined;
- * // => true
+ * _.times(2, _.noop);
+ * // => [undefined, undefined]
*/
function noop() {
// No operation performed.
diff --git a/now.js b/now.js
index c0656728c..5ad305033 100644
--- a/now.js
+++ b/now.js
@@ -5,7 +5,6 @@
* @static
* @memberOf _
* @since 2.4.0
- * @type {Function}
* @category Date
* @returns {number} Returns the timestamp.
* @example
@@ -13,8 +12,10 @@
* _.defer(function(stamp) {
* console.log(_.now() - stamp);
* }, _.now());
- * // => Logs the number of milliseconds it took for the deferred function to be invoked.
+ * // => Logs the number of milliseconds it took for the deferred invocation.
*/
-var now = Date.now;
+function now() {
+ return Date.now();
+}
module.exports = now;
diff --git a/nth.js b/nth.js
index 857031ab8..8a344dee5 100644
--- a/nth.js
+++ b/nth.js
@@ -2,7 +2,7 @@ var baseNth = require('./_baseNth'),
toInteger = require('./toInteger');
/**
- * Gets the element at `n` index of `array`. If `n` is negative, the nth
+ * Gets the element at index `n` of `array`. If `n` is negative, the nth
* element from the end is returned.
*
* @static
diff --git a/nthArg.js b/nthArg.js
index 2ac511fb6..7557653ae 100644
--- a/nthArg.js
+++ b/nthArg.js
@@ -3,7 +3,7 @@ var baseNth = require('./_baseNth'),
toInteger = require('./toInteger');
/**
- * Creates a function that gets the argument at `n` index. If `n` is negative,
+ * Creates a function that gets the argument at index `n`. If `n` is negative,
* the nth argument from the end is returned.
*
* @static
diff --git a/over.js b/over.js
index 2275bf70d..5301d57f7 100644
--- a/over.js
+++ b/over.js
@@ -14,7 +14,7 @@ var arrayMap = require('./_arrayMap'),
* @returns {Function} Returns the new function.
* @example
*
- * var func = _.over(Math.max, Math.min);
+ * var func = _.over([Math.max, Math.min]);
*
* func(1, 2, 3, 4);
* // => [4, 1]
diff --git a/overArgs.js b/overArgs.js
index d6a746717..94f586b53 100644
--- a/overArgs.js
+++ b/overArgs.js
@@ -34,7 +34,7 @@ var nativeMin = Math.min;
*
* var func = _.overArgs(function(x, y) {
* return [x, y];
- * }, square, doubled);
+ * }, [square, doubled]);
*
* func(9, 3);
* // => [81, 6]
diff --git a/overEvery.js b/overEvery.js
index 4ea596a7b..1af6b7398 100644
--- a/overEvery.js
+++ b/overEvery.js
@@ -14,7 +14,7 @@ var arrayEvery = require('./_arrayEvery'),
* @returns {Function} Returns the new function.
* @example
*
- * var func = _.overEvery(Boolean, isFinite);
+ * var func = _.overEvery([Boolean, isFinite]);
*
* func('1');
* // => true
diff --git a/overSome.js b/overSome.js
index 55ff733f7..9e3fe95c6 100644
--- a/overSome.js
+++ b/overSome.js
@@ -14,7 +14,7 @@ var arraySome = require('./_arraySome'),
* @returns {Function} Returns the new function.
* @example
*
- * var func = _.overSome(Boolean, isFinite);
+ * var func = _.overSome([Boolean, isFinite]);
*
* func('1');
* // => true
diff --git a/package.json b/package.json
index c3eda6a89..9ce433ca2 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "lodash",
- "version": "4.12.0",
+ "version": "4.13.0",
"description": "Lodash modular utilities.",
"keywords": "modules, stdlib, util",
"homepage": "https://lodash.com/",
diff --git a/pull.js b/pull.js
index f5846fbc1..74b2771da 100644
--- a/pull.js
+++ b/pull.js
@@ -18,11 +18,11 @@ var pullAll = require('./pullAll'),
* @returns {Array} Returns `array`.
* @example
*
- * var array = [1, 2, 3, 1, 2, 3];
+ * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
*
- * _.pull(array, 2, 3);
+ * _.pull(array, 'a', 'c');
* console.log(array);
- * // => [1, 1]
+ * // => ['b', 'b']
*/
var pull = rest(pullAll);
diff --git a/pullAll.js b/pullAll.js
index d6ce1bf80..f4605c212 100644
--- a/pullAll.js
+++ b/pullAll.js
@@ -14,11 +14,11 @@ var basePullAll = require('./_basePullAll');
* @returns {Array} Returns `array`.
* @example
*
- * var array = [1, 2, 3, 1, 2, 3];
+ * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
*
- * _.pullAll(array, [2, 3]);
+ * _.pullAll(array, ['a', 'c']);
* console.log(array);
- * // => [1, 1]
+ * // => ['b', 'b']
*/
function pullAll(array, values) {
return (array && array.length && values && values.length)
diff --git a/pullAt.js b/pullAt.js
index 565d2b1c8..01e566e62 100644
--- a/pullAt.js
+++ b/pullAt.js
@@ -21,14 +21,14 @@ var arrayMap = require('./_arrayMap'),
* @returns {Array} Returns the new array of removed elements.
* @example
*
- * var array = [5, 10, 15, 20];
- * var evens = _.pullAt(array, 1, 3);
+ * var array = ['a', 'b', 'c', 'd'];
+ * var pulled = _.pullAt(array, [1, 3]);
*
* console.log(array);
- * // => [5, 15]
+ * // => ['a', 'c']
*
- * console.log(evens);
- * // => [10, 20]
+ * console.log(pulled);
+ * // => ['b', 'd']
*/
var pullAt = rest(function(array, indexes) {
indexes = baseFlatten(indexes, 1);
diff --git a/rearg.js b/rearg.js
index 6648ec834..b098d80d3 100644
--- a/rearg.js
+++ b/rearg.js
@@ -22,7 +22,7 @@ var REARG_FLAG = 256;
*
* var rearged = _.rearg(function(a, b, c) {
* return [a, b, c];
- * }, 2, 0, 1);
+ * }, [2, 0, 1]);
*
* rearged('b', 'c', 'a')
* // => ['a', 'b', 'c']
diff --git a/sortedIndex.js b/sortedIndex.js
index 044a57e56..e763473ac 100644
--- a/sortedIndex.js
+++ b/sortedIndex.js
@@ -16,9 +16,6 @@ var baseSortedIndex = require('./_baseSortedIndex');
*
* _.sortedIndex([30, 50], 40);
* // => 1
- *
- * _.sortedIndex([4, 5], 4);
- * // => 0
*/
function sortedIndex(array, value) {
return baseSortedIndex(array, value);
diff --git a/sortedIndexBy.js b/sortedIndexBy.js
index df05972a3..0326eb77f 100644
--- a/sortedIndexBy.js
+++ b/sortedIndexBy.js
@@ -18,13 +18,13 @@ var baseIteratee = require('./_baseIteratee'),
* into `array`.
* @example
*
- * var dict = { 'thirty': 30, 'forty': 40, 'fifty': 50 };
+ * var objects = [{ 'x': 4 }, { 'x': 5 }];
*
- * _.sortedIndexBy(['thirty', 'fifty'], 'forty', _.propertyOf(dict));
- * // => 1
+ * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
+ * // => 0
*
* // The `_.property` iteratee shorthand.
- * _.sortedIndexBy([{ 'x': 4 }, { 'x': 5 }], { 'x': 4 }, 'x');
+ * _.sortedIndexBy(objects, { 'x': 4 }, 'x');
* // => 0
*/
function sortedIndexBy(array, value, iteratee) {
diff --git a/sortedIndexOf.js b/sortedIndexOf.js
index 2c534d324..72d65d8aa 100644
--- a/sortedIndexOf.js
+++ b/sortedIndexOf.js
@@ -14,8 +14,8 @@ var baseSortedIndex = require('./_baseSortedIndex'),
* @returns {number} Returns the index of the matched value, else `-1`.
* @example
*
- * _.sortedIndexOf([1, 1, 2, 2], 2);
- * // => 2
+ * _.sortedIndexOf([4, 5, 5, 5, 6], 5);
+ * // => 1
*/
function sortedIndexOf(array, value) {
var length = array ? array.length : 0;
diff --git a/sortedLastIndex.js b/sortedLastIndex.js
index 919089f4a..9380cb9cb 100644
--- a/sortedLastIndex.js
+++ b/sortedLastIndex.js
@@ -15,8 +15,8 @@ var baseSortedIndex = require('./_baseSortedIndex');
* into `array`.
* @example
*
- * _.sortedLastIndex([4, 5], 4);
- * // => 1
+ * _.sortedLastIndex([4, 5, 5, 5, 6], 5);
+ * // => 4
*/
function sortedLastIndex(array, value) {
return baseSortedIndex(array, value, true);
diff --git a/sortedLastIndexBy.js b/sortedLastIndexBy.js
index 74e8d7acb..f2ba954a3 100644
--- a/sortedLastIndexBy.js
+++ b/sortedLastIndexBy.js
@@ -18,8 +18,13 @@ var baseIteratee = require('./_baseIteratee'),
* into `array`.
* @example
*
+ * var objects = [{ 'x': 4 }, { 'x': 5 }];
+ *
+ * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
+ * // => 1
+ *
* // The `_.property` iteratee shorthand.
- * _.sortedLastIndexBy([{ 'x': 4 }, { 'x': 5 }], { 'x': 4 }, 'x');
+ * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');
* // => 1
*/
function sortedLastIndexBy(array, value, iteratee) {
diff --git a/sortedLastIndexOf.js b/sortedLastIndexOf.js
index 80234de2d..5ff351d68 100644
--- a/sortedLastIndexOf.js
+++ b/sortedLastIndexOf.js
@@ -14,7 +14,7 @@ var baseSortedIndex = require('./_baseSortedIndex'),
* @returns {number} Returns the index of the matched value, else `-1`.
* @example
*
- * _.sortedLastIndexOf([1, 1, 2, 2], 2);
+ * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);
* // => 3
*/
function sortedLastIndexOf(array, value) {
diff --git a/stubArray.js b/stubArray.js
new file mode 100644
index 000000000..16cbf9956
--- /dev/null
+++ b/stubArray.js
@@ -0,0 +1,23 @@
+/**
+ * A method that returns a new empty array.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.13.0
+ * @category Util
+ * @returns {Array} Returns the new empty array.
+ * @example
+ *
+ * var arrays = _.times(2, _.stubArray);
+ *
+ * console.log(arrays);
+ * // => [[], []]
+ *
+ * console.log(arrays[0] === arrays[1]);
+ * // => false
+ */
+function stubArray() {
+ return [];
+}
+
+module.exports = stubArray;
diff --git a/stubFalse.js b/stubFalse.js
new file mode 100644
index 000000000..4498027b3
--- /dev/null
+++ b/stubFalse.js
@@ -0,0 +1,18 @@
+/**
+ * A method that returns `false`.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.13.0
+ * @category Util
+ * @returns {boolean} Returns `false`.
+ * @example
+ *
+ * _.times(2, _.stubFalse);
+ * // => [false, false]
+ */
+function stubFalse() {
+ return false;
+}
+
+module.exports = stubFalse;
diff --git a/stubObject.js b/stubObject.js
new file mode 100644
index 000000000..9da12c209
--- /dev/null
+++ b/stubObject.js
@@ -0,0 +1,23 @@
+/**
+ * A method that returns a new empty object.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.13.0
+ * @category Util
+ * @returns {Object} Returns the new empty object.
+ * @example
+ *
+ * var objects = _.times(2, _.stubObject);
+ *
+ * console.log(objects);
+ * // => [{}, {}]
+ *
+ * console.log(objects[0] === objects[1]);
+ * // => false
+ */
+function stubObject() {
+ return {};
+}
+
+module.exports = stubObject;
diff --git a/stubString.js b/stubString.js
new file mode 100644
index 000000000..2f14bcf5c
--- /dev/null
+++ b/stubString.js
@@ -0,0 +1,18 @@
+/**
+ * A method that returns an empty string.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.13.0
+ * @category Util
+ * @returns {string} Returns the empty string.
+ * @example
+ *
+ * _.times(2, _.stubString);
+ * // => ['', '']
+ */
+function stubString() {
+ return '';
+}
+
+module.exports = stubString;
diff --git a/stubTrue.js b/stubTrue.js
new file mode 100644
index 000000000..c166806e1
--- /dev/null
+++ b/stubTrue.js
@@ -0,0 +1,18 @@
+/**
+ * A method that returns `true`.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.13.0
+ * @category Util
+ * @returns {boolean} Returns `true`.
+ * @example
+ *
+ * _.times(2, _.stubTrue);
+ * // => [true, true]
+ */
+function stubTrue() {
+ return true;
+}
+
+module.exports = stubTrue;
diff --git a/times.js b/times.js
index d0bff577a..607838fb4 100644
--- a/times.js
+++ b/times.js
@@ -27,8 +27,8 @@ var nativeMin = Math.min;
* _.times(3, String);
* // => ['0', '1', '2']
*
- * _.times(4, _.constant(true));
- * // => [true, true, true, true]
+ * _.times(4, _.constant(0));
+ * // => [0, 0, 0, 0]
*/
function times(n, iteratee) {
n = toInteger(n);
diff --git a/toInteger.js b/toInteger.js
index 4604fb92e..49fd28dc7 100644
--- a/toInteger.js
+++ b/toInteger.js
@@ -3,7 +3,7 @@ var toFinite = require('./toFinite');
/**
* Converts `value` to an integer.
*
- * **Note:** This function is loosely based on
+ * **Note:** This method is loosely based on
* [`ToInteger`](http://www.ecma-international.org/ecma-262/6.0/#sec-tointeger).
*
* @static
diff --git a/toPath.js b/toPath.js
index e2dc7ae7e..c9e8e4b2b 100644
--- a/toPath.js
+++ b/toPath.js
@@ -21,15 +21,6 @@ var arrayMap = require('./_arrayMap'),
*
* _.toPath('a[0].b.c');
* // => ['a', '0', 'b', 'c']
- *
- * var path = ['a', 'b', 'c'],
- * newPath = _.toPath(path);
- *
- * console.log(newPath);
- * // => ['a', 'b', 'c']
- *
- * console.log(path === newPath);
- * // => false
*/
function toPath(value) {
if (isArray(value)) {
diff --git a/transform.js b/transform.js
index 3013a83cb..f438ed8fe 100644
--- a/transform.js
+++ b/transform.js
@@ -12,15 +12,16 @@ var arrayEach = require('./_arrayEach'),
* An alternative to `_.reduce`; this method transforms `object` to a new
* `accumulator` object which is the result of running each of its own
* enumerable string keyed properties thru `iteratee`, with each invocation
- * potentially mutating the `accumulator` object. The iteratee is invoked
- * with four arguments: (accumulator, value, key, object). Iteratee functions
- * may exit iteration early by explicitly returning `false`.
+ * potentially mutating the `accumulator` object. If `accumulator` is not
+ * provided, a new object with the same `[[Prototype]]` will be used. The
+ * iteratee is invoked with four arguments: (accumulator, value, key, object).
+ * Iteratee functions may exit iteration early by explicitly returning `false`.
*
* @static
* @memberOf _
* @since 1.3.0
* @category Object
- * @param {Array|Object} object The object to iterate over.
+ * @param {Object} object The object to iterate over.
* @param {Function} [iteratee=_.identity] The function invoked per iteration.
* @param {*} [accumulator] The custom accumulator value.
* @returns {*} Returns the accumulated value.
diff --git a/union.js b/union.js
index 1276c886a..80e64b5eb 100644
--- a/union.js
+++ b/union.js
@@ -16,8 +16,8 @@ var baseFlatten = require('./_baseFlatten'),
* @returns {Array} Returns the new array of combined values.
* @example
*
- * _.union([2, 1], [4, 2], [1, 2]);
- * // => [2, 1, 4]
+ * _.union([2], [1, 2]);
+ * // => [2, 1]
*/
var union = rest(function(arrays) {
return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));
diff --git a/unionBy.js b/unionBy.js
index f44340cb0..6d6fe2b03 100644
--- a/unionBy.js
+++ b/unionBy.js
@@ -21,8 +21,8 @@ var baseFlatten = require('./_baseFlatten'),
* @returns {Array} Returns the new array of combined values.
* @example
*
- * _.unionBy([2.1, 1.2], [4.3, 2.4], Math.floor);
- * // => [2.1, 1.2, 4.3]
+ * _.unionBy([2.1], [1.2, 2.3], Math.floor);
+ * // => [2.1, 1.2]
*
* // The `_.property` iteratee shorthand.
* _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
diff --git a/uniqWith.js b/uniqWith.js
index 957c17d6a..e09b1729e 100644
--- a/uniqWith.js
+++ b/uniqWith.js
@@ -14,7 +14,7 @@ var baseUniq = require('./_baseUniq');
* @returns {Array} Returns the new duplicate free array.
* @example
*
- * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
+ * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
*
* _.uniqWith(objects, _.isEqual);
* // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]
diff --git a/util.js b/util.js
index 11b03723e..156972273 100644
--- a/util.js
+++ b/util.js
@@ -22,6 +22,11 @@ module.exports = {
'propertyOf': require('./propertyOf'),
'range': require('./range'),
'rangeRight': require('./rangeRight'),
+ 'stubArray': require('./stubArray'),
+ 'stubFalse': require('./stubFalse'),
+ 'stubObject': require('./stubObject'),
+ 'stubString': require('./stubString'),
+ 'stubTrue': require('./stubTrue'),
'times': require('./times'),
'toPath': require('./toPath'),
'uniqueId': require('./uniqueId')
diff --git a/without.js b/without.js
index c9640a462..6198490a3 100644
--- a/without.js
+++ b/without.js
@@ -17,7 +17,7 @@ var baseDifference = require('./_baseDifference'),
* @see _.difference, _.xor
* @example
*
- * _.without([1, 2, 1, 3], 1, 2);
+ * _.without([2, 1, 2, 3], 1, 2);
* // => [3]
*/
var without = rest(function(array, values) {
diff --git a/wrapperAt.js b/wrapperAt.js
index 119089453..4a3eacc35 100644
--- a/wrapperAt.js
+++ b/wrapperAt.js
@@ -21,9 +21,6 @@ var LazyWrapper = require('./_LazyWrapper'),
*
* _(object).at(['a[0].b.c', 'a[1]']).value();
* // => [3, 4]
- *
- * _(['a', 'b', 'c']).at(0, 2).value();
- * // => ['a', 'c']
*/
var wrapperAt = rest(function(paths) {
paths = baseFlatten(paths, 1);
diff --git a/wrapperLodash.js b/wrapperLodash.js
index 0cde82ba0..ef84f2519 100644
--- a/wrapperLodash.js
+++ b/wrapperLodash.js
@@ -86,19 +86,21 @@ var hasOwnProperty = objectProto.hasOwnProperty;
* `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`, `isBoolean`,
* `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`, `isEqualWith`,
* `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, `isMap`,
- * `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, `isNumber`,
- * `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, `isSafeInteger`,
- * `isSet`, `isString`, `isUndefined`, `isTypedArray`, `isWeakMap`, `isWeakSet`,
- * `join`, `kebabCase`, `last`, `lastIndexOf`, `lowerCase`, `lowerFirst`,
- * `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`, `min`, `minBy`, `multiply`,
- * `noConflict`, `noop`, `now`, `nth`, `pad`, `padEnd`, `padStart`, `parseInt`,
- * `pop`, `random`, `reduce`, `reduceRight`, `repeat`, `result`, `round`,
- * `runInContext`, `sample`, `shift`, `size`, `snakeCase`, `some`, `sortedIndex`,
- * `sortedIndexBy`, `sortedLastIndex`, `sortedLastIndexBy`, `startCase`,
- * `startsWith`, `subtract`, `sum`, `sumBy`, `template`, `times`, `toFinite`,
- * `toInteger`, `toJSON`, `toLength`, `toLower`, `toNumber`, `toSafeInteger`,
- * `toString`, `toUpper`, `trim`, `trimEnd`, `trimStart`, `truncate`, `unescape`,
- * `uniqueId`, `upperCase`, `upperFirst`, `value`, and `words`
+ * `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
+ * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
+ * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
+ * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
+ * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,
+ * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,
+ * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
+ * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
+ * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
+ * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,
+ * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,
+ * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,
+ * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,
+ * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,
+ * `upperFirst`, `value`, and `words`
*
* @name _
* @constructor
diff --git a/xor.js b/xor.js
index 2251d2c92..ad63b6254 100644
--- a/xor.js
+++ b/xor.js
@@ -18,8 +18,8 @@ var arrayFilter = require('./_arrayFilter'),
* @see _.difference, _.without
* @example
*
- * _.xor([2, 1], [4, 2]);
- * // => [1, 4]
+ * _.xor([2, 1], [2, 3]);
+ * // => [1, 3]
*/
var xor = rest(function(arrays) {
return baseXor(arrayFilter(arrays, isArrayLikeObject));
diff --git a/xorBy.js b/xorBy.js
index d5274eae0..924f82d2c 100644
--- a/xorBy.js
+++ b/xorBy.js
@@ -21,8 +21,8 @@ var arrayFilter = require('./_arrayFilter'),
* @returns {Array} Returns the new array of filtered values.
* @example
*
- * _.xorBy([2.1, 1.2], [4.3, 2.4], Math.floor);
- * // => [1.2, 4.3]
+ * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);
+ * // => [1.2, 3.4]
*
* // The `_.property` iteratee shorthand.
* _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');