diff --git a/.travis.yml b/.travis.yml index 3d56234e46..c6c9d8c8d6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -35,7 +35,7 @@ git: branches: only: - master - - 4.17.5 + - 4.17 notifications: webhooks: @@ -87,10 +87,10 @@ install: # Install packages. - yarn - # Use lodash-cli from GitHub. - - git clone --depth=10 --branch=master git://github.com/lodash/lodash-cli ./node_modules/lodash-cli - - mkdir -p ./node_modules/lodash-cli/node_modules/lodash; cd $_; cp ../../../../lodash.js ./lodash.js; cp ../../../../package.json ./package.json - - cd ../../; npm i --production; cd ../../ + # Use lodash-cli from GitHub. Temporarily use a fork. + - git clone --depth=10 --branch=master git://github.com/bnjmnt4n/lodash-cli ./node_modules/lodash-cli + - cd ./node_modules/lodash-cli/; npm i --production; cd ../../ + - mkdir -p ./node_modules/lodash-cli/node_modules/lodash; cd $_; cp ../../../../lodash.js ./lodash.js; cp ../../../../package.json ./package.json; cd ../../../../ script: # Detect code coverage. diff --git a/README.md b/README.md index c0a2bb834f..9d2ce70cb3 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# lodash v4.17.15 +# lodash v4.17.21 [Site](https://lodash.com/) | [Docs](https://lodash.com/docs) | @@ -20,11 +20,11 @@ $ lodash core -o ./dist/lodash.core.js ## Download - * [Core build](https://raw.githubusercontent.com/lodash/lodash/4.17.15/dist/lodash.core.js) ([~4 kB gzipped](https://raw.githubusercontent.com/lodash/lodash/4.17.15/dist/lodash.core.min.js)) - * [Full build](https://raw.githubusercontent.com/lodash/lodash/4.17.15/dist/lodash.js) ([~24 kB gzipped](https://raw.githubusercontent.com/lodash/lodash/4.17.15/dist/lodash.min.js)) + * [Core build](https://raw.githubusercontent.com/lodash/lodash/4.17.21/dist/lodash.core.js) ([~4 kB gzipped](https://raw.githubusercontent.com/lodash/lodash/4.17.21/dist/lodash.core.min.js)) + * [Full build](https://raw.githubusercontent.com/lodash/lodash/4.17.21/dist/lodash.js) ([~24 kB gzipped](https://raw.githubusercontent.com/lodash/lodash/4.17.21/dist/lodash.min.js)) * [CDN copies](https://www.jsdelivr.com/projects/lodash) -Lodash is released under the [MIT license](https://raw.githubusercontent.com/lodash/lodash/4.17.15/LICENSE) & supports modern environments.
+Lodash is released under the [MIT license](https://raw.githubusercontent.com/lodash/lodash/4.17.21/LICENSE) & supports modern environments.
Review the [build differences](https://github.com/lodash/lodash/wiki/build-differences) & pick one that’s right for you. ## Installation diff --git a/dist/lodash.core.js b/dist/lodash.core.js index 89c77ded06..be1d567d62 100644 --- a/dist/lodash.core.js +++ b/dist/lodash.core.js @@ -13,7 +13,7 @@ var undefined; /** Used as the semantic version number. */ - var VERSION = '4.17.15'; + var VERSION = '4.17.21'; /** Error message constants. */ var FUNC_ERROR_TEXT = 'Expected a function'; @@ -1183,6 +1183,12 @@ if (arrLength != othLength && !(isPartial && othLength > arrLength)) { return false; } + // Check that cyclic values are equal. + var arrStacked = stack.get(array); + var othStacked = stack.get(other); + if (arrStacked && othStacked) { + return arrStacked == other && othStacked == array; + } var index = -1, result = true, seen = (bitmask & COMPARE_UNORDERED_FLAG) ? [] : undefined; @@ -1293,6 +1299,12 @@ return false; } } + // Check that cyclic values are equal. + var objStacked = stack.get(object); + var othStacked = stack.get(other); + if (objStacked && othStacked) { + return objStacked == other && othStacked == object; + } var result = true; var skipCtor = isPartial; @@ -1935,6 +1947,10 @@ * // The `_.property` iteratee shorthand. * _.filter(users, 'active'); * // => objects for ['barney'] + * + * // Combining several predicates using `_.overEvery` or `_.overSome`. + * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]])); + * // => objects for ['fred', 'barney'] */ function filter(collection, predicate) { return baseFilter(collection, baseIteratee(predicate)); @@ -2188,15 +2204,15 @@ * var users = [ * { 'user': 'fred', 'age': 48 }, * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 }, + * { 'user': 'fred', 'age': 30 }, * { 'user': 'barney', 'age': 34 } * ]; * * _.sortBy(users, [function(o) { return o.user; }]); - * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]] * * _.sortBy(users, ['user', 'age']); - * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]] + * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]] */ function sortBy(collection, iteratee) { var index = 0; @@ -3503,6 +3519,9 @@ * values against any array or object value, respectively. See `_.isEqual` * for a list of supported value comparisons. * + * **Note:** Multiple values can be checked by combining several matchers + * using `_.overSome` + * * @static * @memberOf _ * @since 3.0.0 @@ -3518,6 +3537,10 @@ * * _.filter(objects, _.matches({ 'a': 4, 'c': 6 })); * // => [{ 'a': 4, 'b': 5, 'c': 6 }] + * + * // Checking for several possible values + * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })])); + * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }] */ function matches(source) { return baseMatches(assign({}, source)); diff --git a/dist/lodash.core.min.js b/dist/lodash.core.min.js index bb543ff54a..e425e4d4f5 100644 --- a/dist/lodash.core.min.js +++ b/dist/lodash.core.min.js @@ -10,12 +10,12 @@ return n[0]==t});if(p&&s)return p[1]==t;if(o.push([n,t]),o.push([t,n]),a&&!l){if r=u(i,f,r,e,o),o.pop(),r)}function g(n){return typeof n=="function"?n:null==n?X:(typeof n=="object"?d:r)(n)}function _(n,t){return nt&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Array(u);++ei))return false;for(var c=-1,f=true,a=2&r?[]:Z;++cr?jn(e+r,0):r:0,r=(r||0)-1;for(var u=t===t;++rarguments.length,mn)}function G(n,t){var r;if(typeof t!="function")throw new TypeError("Expected a function");return n=Fn(n), -function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=Z),r}}function J(n,t){return n===t||n!==n&&t!==t}function M(n){var t;return(t=null!=n)&&(t=n.length,t=typeof t=="number"&&-1=t),t&&!U(n)}function U(n){return!!V(n)&&(n=hn.call(n),"[object Function]"==n||"[object GeneratorFunction]"==n||"[object AsyncFunction]"==n||"[object Proxy]"==n)}function V(n){var t=typeof n;return null!=n&&("object"==t||"function"==t)}function H(n){return null!=n&&typeof n=="object"}function K(n){ -return typeof n=="number"||H(n)&&"[object Number]"==hn.call(n)}function L(n){return typeof n=="string"||!Nn(n)&&H(n)&&"[object String]"==hn.call(n)}function Q(n){return typeof n=="string"?n:null==n?"":n+""}function W(n){return null==n?[]:u(n,Dn(n))}function X(n){return n}function Y(n,r,e){var u=Dn(r),o=h(r,u);null!=e||V(r)&&(o.length||!u.length)||(e=r,r=n,n=this,o=h(r,Dn(r)));var i=!(V(e)&&"chain"in e&&!e.chain),c=U(n);return mn(o,function(e){var u=r[e];n[e]=u,c&&(n.prototype[e]=function(){var r=this.__chain__; -if(i||r){var e=n(this.__wrapped__);return(e.__actions__=A(this.__actions__)).push({func:u,args:arguments,thisArg:n}),e.__chain__=r,e}return u.apply(n,t([this.value()],arguments))})}),n}var Z,nn=1/0,tn=/[&<>"']/g,rn=RegExp(tn.source),en=/^(?:0|[1-9]\d*)$/,un=typeof self=="object"&&self&&self.Object===Object&&self,on=typeof global=="object"&&global&&global.Object===Object&&global||un||Function("return this")(),cn=(un=typeof exports=="object"&&exports&&!exports.nodeType&&exports)&&typeof module=="object"&&module&&!module.nodeType&&module,fn=function(n){ +var u=F(n);return e}function T(n,t,r,e,u,o){var i=n.length,c=t.length;if(i!=c&&!(1&r&&c>i))return false;var c=o.get(n),f=o.get(t);if(c&&f)return c==t&&f==n;for(var c=-1,f=true,a=2&r?[]:Z;++cr?jn(e+r,0):r:0,r=(r||0)-1;for(var u=t===t;++rarguments.length,mn); +}function G(n,t){var r;if(typeof t!="function")throw new TypeError("Expected a function");return n=Fn(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=Z),r}}function J(n,t){return n===t||n!==n&&t!==t}function M(n){var t;return(t=null!=n)&&(t=n.length,t=typeof t=="number"&&-1=t),t&&!U(n)}function U(n){return!!V(n)&&(n=hn.call(n),"[object Function]"==n||"[object GeneratorFunction]"==n||"[object AsyncFunction]"==n||"[object Proxy]"==n)}function V(n){var t=typeof n; +return null!=n&&("object"==t||"function"==t)}function H(n){return null!=n&&typeof n=="object"}function K(n){return typeof n=="number"||H(n)&&"[object Number]"==hn.call(n)}function L(n){return typeof n=="string"||!Nn(n)&&H(n)&&"[object String]"==hn.call(n)}function Q(n){return typeof n=="string"?n:null==n?"":n+""}function W(n){return null==n?[]:u(n,Dn(n))}function X(n){return n}function Y(n,r,e){var u=Dn(r),o=h(r,u);null!=e||V(r)&&(o.length||!u.length)||(e=r,r=n,n=this,o=h(r,Dn(r)));var i=!(V(e)&&"chain"in e&&!e.chain),c=U(n); +return mn(o,function(e){var u=r[e];n[e]=u,c&&(n.prototype[e]=function(){var r=this.__chain__;if(i||r){var e=n(this.__wrapped__);return(e.__actions__=A(this.__actions__)).push({func:u,args:arguments,thisArg:n}),e.__chain__=r,e}return u.apply(n,t([this.value()],arguments))})}),n}var Z,nn=1/0,tn=/[&<>"']/g,rn=RegExp(tn.source),en=/^(?:0|[1-9]\d*)$/,un=typeof self=="object"&&self&&self.Object===Object&&self,on=typeof global=="object"&&global&&global.Object===Object&&global||un||Function("return this")(),cn=(un=typeof exports=="object"&&exports&&!exports.nodeType&&exports)&&typeof module=="object"&&module&&!module.nodeType&&module,fn=function(n){ return function(t){return null==n?Z:n[t]}}({"&":"&","<":"<",">":">",'"':""","'":"'"}),an=Array.prototype,ln=Object.prototype,pn=ln.hasOwnProperty,sn=0,hn=ln.toString,vn=on._,bn=Object.create,yn=ln.propertyIsEnumerable,gn=on.isFinite,_n=function(n,t){return function(r){return n(t(r))}}(Object.keys,Object),jn=Math.max,dn=function(){function n(){}return function(t){return V(t)?bn?bn(t):(n.prototype=t,t=new n,n.prototype=Z,t):{}}}();i.prototype=dn(o.prototype),i.prototype.constructor=i; var mn=function(n,t){return function(r,e){if(null==r)return r;if(!M(r))return n(r,e);for(var u=r.length,o=t?u:-1,i=Object(r);(t?o--:++or&&(r=jn(e+r,0));n:{for(t=g(t),e=n.length,r+=-1;++r arrLength)) { return false; } - // Assume cyclic values are equal. - var stacked = stack.get(array); - if (stacked && stack.get(other)) { - return stacked == other; + // Check that cyclic values are equal. + var arrStacked = stack.get(array); + var othStacked = stack.get(other); + if (arrStacked && othStacked) { + return arrStacked == other && othStacked == array; } var index = -1, result = true, @@ -5783,10 +5846,11 @@ return false; } } - // Assume cyclic values are equal. - var stacked = stack.get(object); - if (stacked && stack.get(other)) { - return stacked == other; + // Check that cyclic values are equal. + var objStacked = stack.get(object); + var othStacked = stack.get(other); + if (objStacked && othStacked) { + return objStacked == other && othStacked == object; } var result = true; stack.set(object, other); @@ -9167,6 +9231,10 @@ * // The `_.property` iteratee shorthand. * _.filter(users, 'active'); * // => objects for ['barney'] + * + * // Combining several predicates using `_.overEvery` or `_.overSome`. + * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]])); + * // => objects for ['fred', 'barney'] */ function filter(collection, predicate) { var func = isArray(collection) ? arrayFilter : baseFilter; @@ -9916,15 +9984,15 @@ * var users = [ * { 'user': 'fred', 'age': 48 }, * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 }, + * { 'user': 'fred', 'age': 30 }, * { 'user': 'barney', 'age': 34 } * ]; * * _.sortBy(users, [function(o) { return o.user; }]); - * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]] * * _.sortBy(users, ['user', 'age']); - * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]] + * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]] */ var sortBy = baseRest(function(collection, iteratees) { if (collection == null) { @@ -12468,7 +12536,7 @@ if (typeof value != 'string') { return value === 0 ? value : +value; } - value = value.replace(reTrim, ''); + value = baseTrim(value); var isBinary = reIsBinary.test(value); return (isBinary || reIsOctal.test(value)) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) @@ -14799,11 +14867,11 @@ // Use a sourceURL for easier debugging. // The sourceURL gets injected into the source that's eval-ed, so be careful - // with lookup (in case of e.g. prototype pollution), and strip newlines if any. - // A newline wouldn't be a valid sourceURL anyway, and it'd enable code injection. + // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in + // and escape the comment, thus injecting code that gets evaled. var sourceURL = '//# sourceURL=' + (hasOwnProperty.call(options, 'sourceURL') - ? (options.sourceURL + '').replace(/[\r\n]/g, ' ') + ? (options.sourceURL + '').replace(/\s/g, ' ') : ('lodash.templateSources[' + (++templateCounter) + ']') ) + '\n'; @@ -14836,12 +14904,16 @@ // If `variable` is not specified wrap a with-statement around the generated // code to add the data object to the top of the scope chain. - // Like with sourceURL, we take care to not check the option's prototype, - // as this configuration is a code injection vector. var variable = hasOwnProperty.call(options, 'variable') && options.variable; if (!variable) { source = 'with (obj) {\n' + source + '\n}\n'; } + // Throw an error if a forbidden character was found in `variable`, to prevent + // potential command injection attacks. + else if (reForbiddenIdentifierChars.test(variable)) { + throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT); + } + // Cleanup code by stripping empty strings. source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source) .replace(reEmptyStringMiddle, '$1') @@ -14955,7 +15027,7 @@ function trim(string, chars, guard) { string = toString(string); if (string && (guard || chars === undefined)) { - return string.replace(reTrim, ''); + return baseTrim(string); } if (!string || !(chars = baseToString(chars))) { return string; @@ -14990,7 +15062,7 @@ function trimEnd(string, chars, guard) { string = toString(string); if (string && (guard || chars === undefined)) { - return string.replace(reTrimEnd, ''); + return string.slice(0, trimmedEndIndex(string) + 1); } if (!string || !(chars = baseToString(chars))) { return string; @@ -15544,6 +15616,9 @@ * values against any array or object value, respectively. See `_.isEqual` * for a list of supported value comparisons. * + * **Note:** Multiple values can be checked by combining several matchers + * using `_.overSome` + * * @static * @memberOf _ * @since 3.0.0 @@ -15559,6 +15634,10 @@ * * _.filter(objects, _.matches({ 'a': 4, 'c': 6 })); * // => [{ 'a': 4, 'b': 5, 'c': 6 }] + * + * // Checking for several possible values + * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })])); + * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }] */ function matches(source) { return baseMatches(baseClone(source, CLONE_DEEP_FLAG)); @@ -15573,6 +15652,9 @@ * `srcValue` values against any array or object value, respectively. See * `_.isEqual` for a list of supported value comparisons. * + * **Note:** Multiple values can be checked by combining several matchers + * using `_.overSome` + * * @static * @memberOf _ * @since 3.2.0 @@ -15589,6 +15671,10 @@ * * _.find(objects, _.matchesProperty('a', 4)); * // => { 'a': 4, 'b': 5, 'c': 6 } + * + * // Checking for several possible values + * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)])); + * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }] */ function matchesProperty(path, srcValue) { return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG)); @@ -15812,6 +15898,10 @@ * Creates a function that checks if **all** of the `predicates` return * truthy when invoked with the arguments it receives. * + * Following shorthands are possible for providing predicates. + * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate. + * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them. + * * @static * @memberOf _ * @since 4.0.0 @@ -15838,6 +15928,10 @@ * Creates a function that checks if **any** of the `predicates` return * truthy when invoked with the arguments it receives. * + * Following shorthands are possible for providing predicates. + * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate. + * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them. + * * @static * @memberOf _ * @since 4.0.0 @@ -15857,6 +15951,9 @@ * * func(NaN); * // => false + * + * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }]) + * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]]) */ var overSome = createOver(arraySome); diff --git a/dist/lodash.min.js b/dist/lodash.min.js index 13ec307dac..4219da738c 100644 --- a/dist/lodash.min.js +++ b/dist/lodash.min.js @@ -1,137 +1,140 @@ /** * @license - * Lodash lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE + * Lodash + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors */ -;(function(){function n(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function t(n,t,r,e){for(var u=-1,i=null==n?0:n.length;++u"']/g,G=RegExp(V.source),H=RegExp(K.source),J=/<%-([\s\S]+?)%>/g,Y=/<%([\s\S]+?)%>/g,Q=/<%=([\s\S]+?)%>/g,X=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nn=/^\w*$/,tn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,rn=/[\\^$.*+?()[\]{}|]/g,en=RegExp(rn.source),un=/^\s+|\s+$/g,on=/^\s+/,fn=/\s+$/,cn=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,an=/\{\n\/\* \[wrapped with (.+)\] \*/,ln=/,? & /,sn=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,hn=/\\(\\)?/g,pn=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,_n=/\w*$/,vn=/^[-+]0x[0-9a-f]+$/i,gn=/^0b[01]+$/i,dn=/^\[object .+?Constructor\]$/,yn=/^0o[0-7]+$/i,bn=/^(?:0|[1-9]\d*)$/,xn=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,jn=/($^)/,wn=/['\n\r\u2028\u2029\\]/g,mn="[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?)*",An="(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])"+mn,En="(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]?|[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])",kn=RegExp("['\u2019]","g"),Sn=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g"),On=RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|"+En+mn,"g"),In=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*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])|\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])|\\d+",An].join("|"),"g"),Rn=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]"),zn=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Wn="Array Buffer DataView Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Map Math Object Promise RegExp Set String Symbol TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap _ clearTimeout isFinite parseInt setTimeout".split(" "),Bn={}; -Bn["[object Float32Array]"]=Bn["[object Float64Array]"]=Bn["[object Int8Array]"]=Bn["[object Int16Array]"]=Bn["[object Int32Array]"]=Bn["[object Uint8Array]"]=Bn["[object Uint8ClampedArray]"]=Bn["[object Uint16Array]"]=Bn["[object Uint32Array]"]=true,Bn["[object Arguments]"]=Bn["[object Array]"]=Bn["[object ArrayBuffer]"]=Bn["[object Boolean]"]=Bn["[object DataView]"]=Bn["[object Date]"]=Bn["[object Error]"]=Bn["[object Function]"]=Bn["[object Map]"]=Bn["[object Number]"]=Bn["[object Object]"]=Bn["[object RegExp]"]=Bn["[object Set]"]=Bn["[object String]"]=Bn["[object WeakMap]"]=false; -var Ln={};Ln["[object Arguments]"]=Ln["[object Array]"]=Ln["[object ArrayBuffer]"]=Ln["[object DataView]"]=Ln["[object Boolean]"]=Ln["[object Date]"]=Ln["[object Float32Array]"]=Ln["[object Float64Array]"]=Ln["[object Int8Array]"]=Ln["[object Int16Array]"]=Ln["[object Int32Array]"]=Ln["[object Map]"]=Ln["[object Number]"]=Ln["[object Object]"]=Ln["[object RegExp]"]=Ln["[object Set]"]=Ln["[object String]"]=Ln["[object Symbol]"]=Ln["[object Uint8Array]"]=Ln["[object Uint8ClampedArray]"]=Ln["[object Uint16Array]"]=Ln["[object Uint32Array]"]=true, -Ln["[object Error]"]=Ln["[object Function]"]=Ln["[object WeakMap]"]=false;var Un={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Cn=parseFloat,Dn=parseInt,Mn=typeof global=="object"&&global&&global.Object===Object&&global,Tn=typeof self=="object"&&self&&self.Object===Object&&self,$n=Mn||Tn||Function("return this")(),Fn=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Nn=Fn&&typeof module=="object"&&module&&!module.nodeType&&module,Pn=Nn&&Nn.exports===Fn,Zn=Pn&&Mn.process,qn=function(){ -try{var n=Nn&&Nn.f&&Nn.f("util").types;return n?n:Zn&&Zn.binding&&Zn.binding("util")}catch(n){}}(),Vn=qn&&qn.isArrayBuffer,Kn=qn&&qn.isDate,Gn=qn&&qn.isMap,Hn=qn&&qn.isRegExp,Jn=qn&&qn.isSet,Yn=qn&&qn.isTypedArray,Qn=b("length"),Xn=x({"\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","\u0100":"A","\u0102":"A","\u0104":"A","\u0101":"a","\u0103":"a","\u0105":"a","\u0106":"C", -"\u0108":"C","\u010a":"C","\u010c":"C","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g","\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i", -"\u012b":"i","\u012d":"i","\u012f":"i","\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O","\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r", -"\u015a":"S","\u015c":"S","\u015e":"S","\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij", -"\u0152":"Oe","\u0153":"oe","\u0149":"'n","\u017f":"s"}),nt=x({"&":"&","<":"<",">":">",'"':""","'":"'"}),tt=x({"&":"&","<":"<",">":">",""":'"',"'":"'"}),rt=function x(mn){function An(n){if(yu(n)&&!ff(n)&&!(n instanceof Un)){if(n instanceof On)return n;if(oi.call(n,"__wrapped__"))return Fe(n)}return new On(n)}function En(){}function On(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=T}function Un(n){this.__wrapped__=n, -this.__actions__=[],this.__dir__=1,this.__filtered__=false,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function Mn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t=t?n:t)),n}function _t(n,t,e,u,i,o){var f,c=1&t,a=2&t,l=4&t;if(e&&(f=i?e(n,u,i,o):e(n)),f!==T)return f;if(!du(n))return n;if(u=ff(n)){if(f=me(n),!c)return Ur(n,f)}else{var s=vo(n),h="[object Function]"==s||"[object GeneratorFunction]"==s;if(af(n))return Ir(n,c);if("[object Object]"==s||"[object Arguments]"==s||h&&!i){if(f=a||h?{}:Ae(n),!c)return a?Mr(n,lt(f,n)):Dr(n,at(f,n))}else{if(!Ln[s])return i?n:{};f=Ee(n,s,c)}}if(o||(o=new Zn), -i=o.get(n))return i;o.set(n,f),pf(n)?n.forEach(function(r){f.add(_t(r,t,e,r,n,o))}):sf(n)&&n.forEach(function(r,u){f.set(u,_t(r,t,e,u,n,o))});var a=l?a?ve:_e:a?Bu:Wu,p=u?T:a(n);return r(p||n,function(r,u){p&&(u=r,r=n[u]),ot(f,u,_t(r,t,e,u,n,o))}),f}function vt(n){var t=Wu(n);return function(r){return gt(r,n,t)}}function gt(n,t,r){var e=r.length;if(null==n)return!e;for(n=Qu(n);e--;){var u=r[e],i=t[u],o=n[u];if(o===T&&!(u in n)||!i(o))return false}return true}function dt(n,t,r){if(typeof n!="function")throw new ti("Expected a function"); -return bo(function(){n.apply(T,r)},t)}function yt(n,t,r,e){var u=-1,i=o,a=true,l=n.length,s=[],h=t.length;if(!l)return s;r&&(t=c(t,k(r))),e?(i=f,a=false):200<=t.length&&(i=O,a=false,t=new Nn(t));n:for(;++ut}function Rt(n,t){return null!=n&&oi.call(n,t)}function zt(n,t){return null!=n&&t in Qu(n)}function Wt(n,t,r){for(var e=r?f:o,u=n[0].length,i=n.length,a=i,l=Ku(i),s=1/0,h=[];a--;){var p=n[a];a&&t&&(p=c(p,k(t))),s=Ci(p.length,s), -l[a]=!r&&(t||120<=u&&120<=p.length)?new Nn(a&&p):T}var p=n[0],_=-1,v=l[0];n:for(;++_r.length?t:kt(t,hr(r,0,-1)),r=null==t?t:t[Me(Ve(r))],null==r?T:n(r,t,e)}function Ut(n){return yu(n)&&"[object Arguments]"==Ot(n)}function Ct(n){ -return yu(n)&&"[object ArrayBuffer]"==Ot(n)}function Dt(n){return yu(n)&&"[object Date]"==Ot(n)}function Mt(n,t,r,e,u){if(n===t)t=true;else if(null==n||null==t||!yu(n)&&!yu(t))t=n!==n&&t!==t;else n:{var i=ff(n),o=ff(t),f=i?"[object Array]":vo(n),c=o?"[object Array]":vo(t),f="[object Arguments]"==f?"[object Object]":f,c="[object Arguments]"==c?"[object Object]":c,a="[object Object]"==f,o="[object Object]"==c;if((c=f==c)&&af(n)){if(!af(t)){t=false;break n}i=true,a=false}if(c&&!a)u||(u=new Zn),t=i||_f(n)?se(n,t,r,e,Mt,u):he(n,t,f,r,e,Mt,u);else{ -if(!(1&r)&&(i=a&&oi.call(n,"__wrapped__"),f=o&&oi.call(t,"__wrapped__"),i||f)){n=i?n.value():n,t=f?t.value():t,u||(u=new Zn),t=Mt(n,t,r,e,u);break n}if(c)t:if(u||(u=new Zn),i=1&r,f=_e(n),o=f.length,c=_e(t).length,o==c||i){for(a=o;a--;){var l=f[a];if(!(i?l in t:oi.call(t,l))){t=false;break t}}if((c=u.get(n))&&u.get(t))t=c==t;else{c=true,u.set(n,t),u.set(t,n);for(var s=i;++at?r:0,Se(t,r)?n[t]:T}function Xt(n,t,r){var e=-1;return t=c(t.length?t:[$u],k(ye())),n=Gt(n,function(n){return{ -a:c(t,function(t){return t(n)}),b:++e,c:n}}),w(n,function(n,t){var e;n:{e=-1;for(var u=n.a,i=t.a,o=u.length,f=r.length;++e=f?c:c*("desc"==r[e]?-1:1);break n}}e=n.b-t.b}return e})}function nr(n,t){return tr(n,t,function(t,r){return zu(n,r)})}function tr(n,t,r){for(var e=-1,u=t.length,i={};++et||9007199254740991t&&(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=Ku(u);++e=u){for(;e>>1,o=n[i];null!==o&&!wu(o)&&(r?o<=t:ot.length?n:kt(n,hr(t,0,-1)),null==n||delete n[Me(Ve(t))]}function jr(n,t,r,e){for(var u=n.length,i=e?u:-1;(e?i--:++ie)return e?br(n[0]):[];for(var u=-1,i=Ku(e);++u=e?n:hr(n,t,r)}function Ir(n,t){if(t)return n.slice();var r=n.length,r=gi?gi(r):new n.constructor(r);return n.copy(r),r}function Rr(n){var t=new n.constructor(n.byteLength);return new vi(t).set(new vi(n)), -t}function zr(n,t){return new n.constructor(t?Rr(n.buffer):n.buffer,n.byteOffset,n.length)}function Wr(n,t){if(n!==t){var r=n!==T,e=null===n,u=n===n,i=wu(n),o=t!==T,f=null===t,c=t===t,a=wu(t);if(!f&&!a&&!i&&n>t||i&&o&&c&&!f&&!a||e&&o&&c||!r&&c||!u)return 1;if(!e&&!i&&!a&&nu?T:i,u=1),t=Qu(t);++eo&&f[0]!==a&&f[o-1]!==a?[]:L(f,a), -o-=c.length,or?r?or(t,n):t:(r=or(t,Oi(n/D(t))),Rn.test(t)?Or(M(r),0,n).join(""):r.slice(0,n))}function te(t,r,e,u){function i(){for(var r=-1,c=arguments.length,a=-1,l=u.length,s=Ku(l+c),h=this&&this!==$n&&this instanceof i?f:t;++at||e)&&(1&n&&(i[2]=h[2],t|=1&r?0:4),(r=h[3])&&(e=i[3],i[3]=e?Br(e,r,h[4]):r,i[4]=e?L(i[3],"__lodash_placeholder__"):h[4]),(r=h[5])&&(e=i[5],i[5]=e?Lr(e,r,h[6]):r,i[6]=e?L(i[5],"__lodash_placeholder__"):h[6]),(r=h[7])&&(i[7]=r),128&n&&(i[8]=null==i[8]?h[8]:Ci(i[8],h[8])),null==i[9]&&(i[9]=h[9]),i[0]=h[0],i[1]=t),n=i[0], -t=i[1],r=i[2],e=i[3],u=i[4],f=i[9]=i[9]===T?c?0:n.length:Ui(i[9]-a,0),!f&&24&t&&(t&=-25),Ue((h?co:yo)(t&&1!=t?8==t||16==t?Kr(n,t,f):32!=t&&33!=t||u.length?Jr.apply(T,i):te(n,t,r,e):Pr(n,t,r),i),n,t)}function ce(n,t,r,e){return n===T||lu(n,ei[r])&&!oi.call(e,r)?t:n}function ae(n,t,r,e,u,i){return du(n)&&du(t)&&(i.set(t,n),Yt(n,t,T,ae,i),i.delete(t)),n}function le(n){return xu(n)?T:n}function se(n,t,r,e,u,i){var o=1&r,f=n.length,c=t.length;if(f!=c&&!(o&&c>f))return false;if((c=i.get(n))&&i.get(t))return c==t; -var c=-1,a=true,l=2&r?new Nn:T;for(i.set(n,t),i.set(t,n);++cr&&(r=Ui(e+r,0)),_(n,ye(t,3),r)):-1}function Pe(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e-1;return r!==T&&(u=Eu(r),u=0>r?Ui(e+u,0):Ci(u,e-1)), -_(n,ye(t,3),u,true)}function Ze(n){return(null==n?0:n.length)?wt(n,1):[]}function qe(n){return n&&n.length?n[0]:T}function Ve(n){var t=null==n?0:n.length;return t?n[t-1]:T}function Ke(n,t){return n&&n.length&&t&&t.length?er(n,t):n}function Ge(n){return null==n?n:$i.call(n)}function He(n){if(!n||!n.length)return[];var t=0;return n=i(n,function(n){if(hu(n))return t=Ui(n.length,t),true}),A(t,function(t){return c(n,b(t))})}function Je(t,r){if(!t||!t.length)return[];var e=He(t);return null==r?e:c(e,function(t){ -return n(r,T,t)})}function Ye(n){return n=An(n),n.__chain__=true,n}function Qe(n,t){return t(n)}function Xe(){return this}function nu(n,t){return(ff(n)?r:uo)(n,ye(t,3))}function tu(n,t){return(ff(n)?e:io)(n,ye(t,3))}function ru(n,t){return(ff(n)?c:Gt)(n,ye(t,3))}function eu(n,t,r){return t=r?T:t,t=n&&null==t?n.length:t,fe(n,128,T,T,T,T,t)}function uu(n,t){var r;if(typeof t!="function")throw new ti("Expected a function");return n=Eu(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=T), -r}}function iu(n,t,r){return t=r?T:t,n=fe(n,8,T,T,T,T,T,t),n.placeholder=iu.placeholder,n}function ou(n,t,r){return t=r?T:t,n=fe(n,16,T,T,T,T,T,t),n.placeholder=ou.placeholder,n}function fu(n,t,r){function e(t){var r=c,e=a;return c=a=T,_=t,s=n.apply(e,r)}function u(n){var r=n-p;return n-=_,p===T||r>=t||0>r||g&&n>=l}function i(){var n=Go();if(u(n))return o(n);var r,e=bo;r=n-_,n=t-(n-p),r=g?Ci(n,l-r):n,h=e(i,r)}function o(n){return h=T,d&&c?e(n):(c=a=T,s)}function f(){var n=Go(),r=u(n);if(c=arguments, -a=this,p=n,r){if(h===T)return _=n=p,h=bo(i,t),v?e(n):s;if(g)return lo(h),h=bo(i,t),e(p)}return h===T&&(h=bo(i,t)),s}var c,a,l,s,h,p,_=0,v=false,g=false,d=true;if(typeof n!="function")throw new ti("Expected a function");return t=Su(t)||0,du(r)&&(v=!!r.leading,l=(g="maxWait"in r)?Ui(Su(r.maxWait)||0,t):l,d="trailing"in r?!!r.trailing:d),f.cancel=function(){h!==T&&lo(h),_=0,c=p=a=h=T},f.flush=function(){return h===T?s:o(Go())},f}function cu(n,t){function r(){var e=arguments,u=t?t.apply(this,e):e[0],i=r.cache; -return i.has(u)?i.get(u):(e=n.apply(this,e),r.cache=i.set(u,e)||i,e)}if(typeof n!="function"||null!=t&&typeof t!="function")throw new ti("Expected a function");return r.cache=new(cu.Cache||Fn),r}function au(n){if(typeof n!="function")throw new ti("Expected a function");return function(){var t=arguments;switch(t.length){case 0:return!n.call(this);case 1:return!n.call(this,t[0]);case 2:return!n.call(this,t[0],t[1]);case 3:return!n.call(this,t[0],t[1],t[2])}return!n.apply(this,t)}}function lu(n,t){return n===t||n!==n&&t!==t; -}function su(n){return null!=n&&gu(n.length)&&!_u(n)}function hu(n){return yu(n)&&su(n)}function pu(n){if(!yu(n))return false;var t=Ot(n);return"[object Error]"==t||"[object DOMException]"==t||typeof n.message=="string"&&typeof n.name=="string"&&!xu(n)}function _u(n){return!!du(n)&&(n=Ot(n),"[object Function]"==n||"[object GeneratorFunction]"==n||"[object AsyncFunction]"==n||"[object Proxy]"==n)}function vu(n){return typeof n=="number"&&n==Eu(n)}function gu(n){return typeof n=="number"&&-1=n; -}function du(n){var t=typeof n;return null!=n&&("object"==t||"function"==t)}function yu(n){return null!=n&&typeof n=="object"}function bu(n){return typeof n=="number"||yu(n)&&"[object Number]"==Ot(n)}function xu(n){return!(!yu(n)||"[object Object]"!=Ot(n))&&(n=di(n),null===n||(n=oi.call(n,"constructor")&&n.constructor,typeof n=="function"&&n instanceof n&&ii.call(n)==li))}function ju(n){return typeof n=="string"||!ff(n)&&yu(n)&&"[object String]"==Ot(n)}function wu(n){return typeof n=="symbol"||yu(n)&&"[object Symbol]"==Ot(n); -}function mu(n){if(!n)return[];if(su(n))return ju(n)?M(n):Ur(n);if(wi&&n[wi]){n=n[wi]();for(var t,r=[];!(t=n.next()).done;)r.push(t.value);return r}return t=vo(n),("[object Map]"==t?W:"[object Set]"==t?U:Uu)(n)}function Au(n){return n?(n=Su(n),n===$||n===-$?1.7976931348623157e308*(0>n?-1:1):n===n?n:0):0===n?n:0}function Eu(n){n=Au(n);var t=n%1;return n===n?t?n-t:n:0}function ku(n){return n?pt(Eu(n),0,4294967295):0}function Su(n){if(typeof n=="number")return n;if(wu(n))return F;if(du(n)&&(n=typeof n.valueOf=="function"?n.valueOf():n, -n=du(n)?n+"":n),typeof n!="string")return 0===n?n:+n;n=n.replace(un,"");var t=gn.test(n);return t||yn.test(n)?Dn(n.slice(2),t?2:8):vn.test(n)?F:+n}function Ou(n){return Cr(n,Bu(n))}function Iu(n){return null==n?"":yr(n)}function Ru(n,t,r){return n=null==n?T:kt(n,t),n===T?r:n}function zu(n,t){return null!=n&&we(n,t,zt)}function Wu(n){return su(n)?qn(n):Vt(n)}function Bu(n){if(su(n))n=qn(n,true);else if(du(n)){var t,r=ze(n),e=[];for(t in n)("constructor"!=t||!r&&oi.call(n,t))&&e.push(t);n=e}else{if(t=[], -null!=n)for(r in Qu(n))t.push(r);n=t}return n}function Lu(n,t){if(null==n)return{};var r=c(ve(n),function(n){return[n]});return t=ye(t),tr(n,r,function(n,r){return t(n,r[0])})}function Uu(n){return null==n?[]:S(n,Wu(n))}function Cu(n){return $f(Iu(n).toLowerCase())}function Du(n){return(n=Iu(n))&&n.replace(xn,Xn).replace(Sn,"")}function Mu(n,t,r){return n=Iu(n),t=r?T:t,t===T?zn.test(n)?n.match(In)||[]:n.match(sn)||[]:n.match(t)||[]}function Tu(n){return function(){return n}}function $u(n){return n; -}function Fu(n){return qt(typeof n=="function"?n:_t(n,1))}function Nu(n,t,e){var u=Wu(t),i=Et(t,u);null!=e||du(t)&&(i.length||!u.length)||(e=t,t=n,n=this,i=Et(t,Wu(t)));var o=!(du(e)&&"chain"in e&&!e.chain),f=_u(n);return r(i,function(r){var e=t[r];n[r]=e,f&&(n.prototype[r]=function(){var t=this.__chain__;if(o||t){var r=n(this.__wrapped__);return(r.__actions__=Ur(this.__actions__)).push({func:e,args:arguments,thisArg:n}),r.__chain__=t,r}return e.apply(n,a([this.value()],arguments))})}),n}function Pu(){} -function Zu(n){return Ie(n)?b(Me(n)):rr(n)}function qu(){return[]}function Vu(){return false}mn=null==mn?$n:rt.defaults($n.Object(),mn,rt.pick($n,Wn));var Ku=mn.Array,Gu=mn.Date,Hu=mn.Error,Ju=mn.Function,Yu=mn.Math,Qu=mn.Object,Xu=mn.RegExp,ni=mn.String,ti=mn.TypeError,ri=Ku.prototype,ei=Qu.prototype,ui=mn["__core-js_shared__"],ii=Ju.prototype.toString,oi=ei.hasOwnProperty,fi=0,ci=function(){var n=/[^.]+$/.exec(ui&&ui.keys&&ui.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}(),ai=ei.toString,li=ii.call(Qu),si=$n._,hi=Xu("^"+ii.call(oi).replace(rn,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),pi=Pn?mn.Buffer:T,_i=mn.Symbol,vi=mn.Uint8Array,gi=pi?pi.g:T,di=B(Qu.getPrototypeOf,Qu),yi=Qu.create,bi=ei.propertyIsEnumerable,xi=ri.splice,ji=_i?_i.isConcatSpreadable:T,wi=_i?_i.iterator:T,mi=_i?_i.toStringTag:T,Ai=function(){ -try{var n=je(Qu,"defineProperty");return n({},"",{}),n}catch(n){}}(),Ei=mn.clearTimeout!==$n.clearTimeout&&mn.clearTimeout,ki=Gu&&Gu.now!==$n.Date.now&&Gu.now,Si=mn.setTimeout!==$n.setTimeout&&mn.setTimeout,Oi=Yu.ceil,Ii=Yu.floor,Ri=Qu.getOwnPropertySymbols,zi=pi?pi.isBuffer:T,Wi=mn.isFinite,Bi=ri.join,Li=B(Qu.keys,Qu),Ui=Yu.max,Ci=Yu.min,Di=Gu.now,Mi=mn.parseInt,Ti=Yu.random,$i=ri.reverse,Fi=je(mn,"DataView"),Ni=je(mn,"Map"),Pi=je(mn,"Promise"),Zi=je(mn,"Set"),qi=je(mn,"WeakMap"),Vi=je(Qu,"create"),Ki=qi&&new qi,Gi={},Hi=Te(Fi),Ji=Te(Ni),Yi=Te(Pi),Qi=Te(Zi),Xi=Te(qi),no=_i?_i.prototype:T,to=no?no.valueOf:T,ro=no?no.toString:T,eo=function(){ -function n(){}return function(t){return du(t)?yi?yi(t):(n.prototype=t,t=new n,n.prototype=T,t):{}}}();An.templateSettings={escape:J,evaluate:Y,interpolate:Q,variable:"",imports:{_:An}},An.prototype=En.prototype,An.prototype.constructor=An,On.prototype=eo(En.prototype),On.prototype.constructor=On,Un.prototype=eo(En.prototype),Un.prototype.constructor=Un,Mn.prototype.clear=function(){this.__data__=Vi?Vi(null):{},this.size=0},Mn.prototype.delete=function(n){return n=this.has(n)&&delete this.__data__[n], -this.size-=n?1:0,n},Mn.prototype.get=function(n){var t=this.__data__;return Vi?(n=t[n],"__lodash_hash_undefined__"===n?T:n):oi.call(t,n)?t[n]:T},Mn.prototype.has=function(n){var t=this.__data__;return Vi?t[n]!==T:oi.call(t,n)},Mn.prototype.set=function(n,t){var r=this.__data__;return this.size+=this.has(n)?0:1,r[n]=Vi&&t===T?"__lodash_hash_undefined__":t,this},Tn.prototype.clear=function(){this.__data__=[],this.size=0},Tn.prototype.delete=function(n){var t=this.__data__;return n=ft(t,n),!(0>n)&&(n==t.length-1?t.pop():xi.call(t,n,1), ---this.size,true)},Tn.prototype.get=function(n){var t=this.__data__;return n=ft(t,n),0>n?T:t[n][1]},Tn.prototype.has=function(n){return-1e?(++this.size,r.push([n,t])):r[e][1]=t,this},Fn.prototype.clear=function(){this.size=0,this.__data__={hash:new Mn,map:new(Ni||Tn),string:new Mn}},Fn.prototype.delete=function(n){return n=be(this,n).delete(n),this.size-=n?1:0,n},Fn.prototype.get=function(n){return be(this,n).get(n); -},Fn.prototype.has=function(n){return be(this,n).has(n)},Fn.prototype.set=function(n,t){var r=be(this,n),e=r.size;return r.set(n,t),this.size+=r.size==e?0:1,this},Nn.prototype.add=Nn.prototype.push=function(n){return this.__data__.set(n,"__lodash_hash_undefined__"),this},Nn.prototype.has=function(n){return this.__data__.has(n)},Zn.prototype.clear=function(){this.__data__=new Tn,this.size=0},Zn.prototype.delete=function(n){var t=this.__data__;return n=t.delete(n),this.size=t.size,n},Zn.prototype.get=function(n){ -return this.__data__.get(n)},Zn.prototype.has=function(n){return this.__data__.has(n)},Zn.prototype.set=function(n,t){var r=this.__data__;if(r instanceof Tn){var e=r.__data__;if(!Ni||199>e.length)return e.push([n,t]),this.size=++r.size,this;r=this.__data__=new Fn(e)}return r.set(n,t),this.size=r.size,this};var uo=Fr(mt),io=Fr(At,true),oo=Nr(),fo=Nr(true),co=Ki?function(n,t){return Ki.set(n,t),n}:$u,ao=Ai?function(n,t){return Ai(n,"toString",{configurable:true,enumerable:false,value:Tu(t),writable:true})}:$u,lo=Ei||function(n){ -return $n.clearTimeout(n)},so=Zi&&1/U(new Zi([,-0]))[1]==$?function(n){return new Zi(n)}:Pu,ho=Ki?function(n){return Ki.get(n)}:Pu,po=Ri?function(n){return null==n?[]:(n=Qu(n),i(Ri(n),function(t){return bi.call(n,t)}))}:qu,_o=Ri?function(n){for(var t=[];n;)a(t,po(n)),n=di(n);return t}:qu,vo=Ot;(Fi&&"[object DataView]"!=vo(new Fi(new ArrayBuffer(1)))||Ni&&"[object Map]"!=vo(new Ni)||Pi&&"[object Promise]"!=vo(Pi.resolve())||Zi&&"[object Set]"!=vo(new Zi)||qi&&"[object WeakMap]"!=vo(new qi))&&(vo=function(n){ -var t=Ot(n);if(n=(n="[object Object]"==t?n.constructor:T)?Te(n):"")switch(n){case Hi:return"[object DataView]";case Ji:return"[object Map]";case Yi:return"[object Promise]";case Qi:return"[object Set]";case Xi:return"[object WeakMap]"}return t});var go=ui?_u:Vu,yo=Ce(co),bo=Si||function(n,t){return $n.setTimeout(n,t)},xo=Ce(ao),jo=function(n){n=cu(n,function(n){return 500===t.size&&t.clear(),n});var t=n.cache;return n}(function(n){var t=[];return 46===n.charCodeAt(0)&&t.push(""),n.replace(tn,function(n,r,e,u){ -t.push(e?u.replace(hn,"$1"):r||n)}),t}),wo=fr(function(n,t){return hu(n)?yt(n,wt(t,1,hu,true)):[]}),mo=fr(function(n,t){var r=Ve(t);return hu(r)&&(r=T),hu(n)?yt(n,wt(t,1,hu,true),ye(r,2)):[]}),Ao=fr(function(n,t){var r=Ve(t);return hu(r)&&(r=T),hu(n)?yt(n,wt(t,1,hu,true),T,r):[]}),Eo=fr(function(n){var t=c(n,Er);return t.length&&t[0]===n[0]?Wt(t):[]}),ko=fr(function(n){var t=Ve(n),r=c(n,Er);return t===Ve(r)?t=T:r.pop(),r.length&&r[0]===n[0]?Wt(r,ye(t,2)):[]}),So=fr(function(n){var t=Ve(n),r=c(n,Er);return(t=typeof t=="function"?t:T)&&r.pop(), -r.length&&r[0]===n[0]?Wt(r,T,t):[]}),Oo=fr(Ke),Io=pe(function(n,t){var r=null==n?0:n.length,e=ht(n,t);return ur(n,c(t,function(n){return Se(n,r)?+n:n}).sort(Wr)),e}),Ro=fr(function(n){return br(wt(n,1,hu,true))}),zo=fr(function(n){var t=Ve(n);return hu(t)&&(t=T),br(wt(n,1,hu,true),ye(t,2))}),Wo=fr(function(n){var t=Ve(n),t=typeof t=="function"?t:T;return br(wt(n,1,hu,true),T,t)}),Bo=fr(function(n,t){return hu(n)?yt(n,t):[]}),Lo=fr(function(n){return mr(i(n,hu))}),Uo=fr(function(n){var t=Ve(n);return hu(t)&&(t=T), -mr(i(n,hu),ye(t,2))}),Co=fr(function(n){var t=Ve(n),t=typeof t=="function"?t:T;return mr(i(n,hu),T,t)}),Do=fr(He),Mo=fr(function(n){var t=n.length,t=1=t}),of=Ut(function(){return arguments}())?Ut:function(n){return yu(n)&&oi.call(n,"callee")&&!bi.call(n,"callee")},ff=Ku.isArray,cf=Vn?k(Vn):Ct,af=zi||Vu,lf=Kn?k(Kn):Dt,sf=Gn?k(Gn):Tt,hf=Hn?k(Hn):Nt,pf=Jn?k(Jn):Pt,_f=Yn?k(Yn):Zt,vf=ee(Kt),gf=ee(function(n,t){return n<=t}),df=$r(function(n,t){ -if(ze(t)||su(t))Cr(t,Wu(t),n);else for(var r in t)oi.call(t,r)&&ot(n,r,t[r])}),yf=$r(function(n,t){Cr(t,Bu(t),n)}),bf=$r(function(n,t,r,e){Cr(t,Bu(t),n,e)}),xf=$r(function(n,t,r,e){Cr(t,Wu(t),n,e)}),jf=pe(ht),wf=fr(function(n,t){n=Qu(n);var r=-1,e=t.length,u=2--n)return t.apply(this,arguments)}},An.ary=eu,An.assign=df,An.assignIn=yf,An.assignInWith=bf,An.assignWith=xf,An.at=jf,An.before=uu,An.bind=Ho,An.bindAll=Nf,An.bindKey=Jo,An.castArray=function(){if(!arguments.length)return[];var n=arguments[0];return ff(n)?n:[n]},An.chain=Ye,An.chunk=function(n,t,r){if(t=(r?Oe(n,t,r):t===T)?1:Ui(Eu(t),0),r=null==n?0:n.length,!r||1>t)return[];for(var e=0,u=0,i=Ku(Oi(r/t));et?0:t,e)):[]},An.dropRight=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===T?1:Eu(t),t=e-t,hr(n,0,0>t?0:t)):[]},An.dropRightWhile=function(n,t){return n&&n.length?jr(n,ye(t,3),true,true):[]; -},An.dropWhile=function(n,t){return n&&n.length?jr(n,ye(t,3),true):[]},An.fill=function(n,t,r,e){var u=null==n?0:n.length;if(!u)return[];for(r&&typeof r!="number"&&Oe(n,t,r)&&(r=0,e=u),u=n.length,r=Eu(r),0>r&&(r=-r>u?0:u+r),e=e===T||e>u?u:Eu(e),0>e&&(e+=u),e=r>e?0:ku(e);r>>0,r?(n=Iu(n))&&(typeof t=="string"||null!=t&&!hf(t))&&(t=yr(t),!t&&Rn.test(n))?Or(M(n),0,r):n.split(t,r):[]},An.spread=function(t,r){if(typeof t!="function")throw new ti("Expected a function");return r=null==r?0:Ui(Eu(r),0), -fr(function(e){var u=e[r];return e=Or(e,0,r),u&&a(e,u),n(t,this,e)})},An.tail=function(n){var t=null==n?0:n.length;return t?hr(n,1,t):[]},An.take=function(n,t,r){return n&&n.length?(t=r||t===T?1:Eu(t),hr(n,0,0>t?0:t)):[]},An.takeRight=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===T?1:Eu(t),t=e-t,hr(n,0>t?0:t,e)):[]},An.takeRightWhile=function(n,t){return n&&n.length?jr(n,ye(t,3),false,true):[]},An.takeWhile=function(n,t){return n&&n.length?jr(n,ye(t,3)):[]},An.tap=function(n,t){return t(n), -n},An.throttle=function(n,t,r){var e=true,u=true;if(typeof n!="function")throw new ti("Expected a function");return du(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),fu(n,t,{leading:e,maxWait:t,trailing:u})},An.thru=Qe,An.toArray=mu,An.toPairs=zf,An.toPairsIn=Wf,An.toPath=function(n){return ff(n)?c(n,Me):wu(n)?[n]:Ur(jo(Iu(n)))},An.toPlainObject=Ou,An.transform=function(n,t,e){var u=ff(n),i=u||af(n)||_f(n);if(t=ye(t,4),null==e){var o=n&&n.constructor;e=i?u?new o:[]:du(n)&&_u(o)?eo(di(n)):{}; -}return(i?r:mt)(n,function(n,r,u){return t(e,n,r,u)}),e},An.unary=function(n){return eu(n,1)},An.union=Ro,An.unionBy=zo,An.unionWith=Wo,An.uniq=function(n){return n&&n.length?br(n):[]},An.uniqBy=function(n,t){return n&&n.length?br(n,ye(t,2)):[]},An.uniqWith=function(n,t){return t=typeof t=="function"?t:T,n&&n.length?br(n,T,t):[]},An.unset=function(n,t){return null==n||xr(n,t)},An.unzip=He,An.unzipWith=Je,An.update=function(n,t,r){return null==n?n:lr(n,t,kr(r)(kt(n,t)),void 0)},An.updateWith=function(n,t,r,e){ -return e=typeof e=="function"?e:T,null!=n&&(n=lr(n,t,kr(r)(kt(n,t)),e)),n},An.values=Uu,An.valuesIn=function(n){return null==n?[]:S(n,Bu(n))},An.without=Bo,An.words=Mu,An.wrap=function(n,t){return nf(kr(t),n)},An.xor=Lo,An.xorBy=Uo,An.xorWith=Co,An.zip=Do,An.zipObject=function(n,t){return Ar(n||[],t||[],ot)},An.zipObjectDeep=function(n,t){return Ar(n||[],t||[],lr)},An.zipWith=Mo,An.entries=zf,An.entriesIn=Wf,An.extend=yf,An.extendWith=bf,Nu(An,An),An.add=Qf,An.attempt=Ff,An.camelCase=Bf,An.capitalize=Cu, -An.ceil=Xf,An.clamp=function(n,t,r){return r===T&&(r=t,t=T),r!==T&&(r=Su(r),r=r===r?r:0),t!==T&&(t=Su(t),t=t===t?t:0),pt(Su(n),t,r)},An.clone=function(n){return _t(n,4)},An.cloneDeep=function(n){return _t(n,5)},An.cloneDeepWith=function(n,t){return t=typeof t=="function"?t:T,_t(n,5,t)},An.cloneWith=function(n,t){return t=typeof t=="function"?t:T,_t(n,4,t)},An.conformsTo=function(n,t){return null==t||gt(n,t,Wu(t))},An.deburr=Du,An.defaultTo=function(n,t){return null==n||n!==n?t:n},An.divide=nc,An.endsWith=function(n,t,r){ -n=Iu(n),t=yr(t);var e=n.length,e=r=r===T?e:pt(Eu(r),0,e);return r-=t.length,0<=r&&n.slice(r,e)==t},An.eq=lu,An.escape=function(n){return(n=Iu(n))&&H.test(n)?n.replace(K,nt):n},An.escapeRegExp=function(n){return(n=Iu(n))&&en.test(n)?n.replace(rn,"\\$&"):n},An.every=function(n,t,r){var e=ff(n)?u:bt;return r&&Oe(n,t,r)&&(t=T),e(n,ye(t,3))},An.find=Fo,An.findIndex=Ne,An.findKey=function(n,t){return p(n,ye(t,3),mt)},An.findLast=No,An.findLastIndex=Pe,An.findLastKey=function(n,t){return p(n,ye(t,3),At); -},An.floor=tc,An.forEach=nu,An.forEachRight=tu,An.forIn=function(n,t){return null==n?n:oo(n,ye(t,3),Bu)},An.forInRight=function(n,t){return null==n?n:fo(n,ye(t,3),Bu)},An.forOwn=function(n,t){return n&&mt(n,ye(t,3))},An.forOwnRight=function(n,t){return n&&At(n,ye(t,3))},An.get=Ru,An.gt=ef,An.gte=uf,An.has=function(n,t){return null!=n&&we(n,t,Rt)},An.hasIn=zu,An.head=qe,An.identity=$u,An.includes=function(n,t,r,e){return n=su(n)?n:Uu(n),r=r&&!e?Eu(r):0,e=n.length,0>r&&(r=Ui(e+r,0)),ju(n)?r<=e&&-1r&&(r=Ui(e+r,0)),v(n,t,r)):-1},An.inRange=function(n,t,r){return t=Au(t),r===T?(r=t,t=0):r=Au(r),n=Su(n),n>=Ci(t,r)&&n=n},An.isSet=pf,An.isString=ju,An.isSymbol=wu,An.isTypedArray=_f,An.isUndefined=function(n){return n===T},An.isWeakMap=function(n){return yu(n)&&"[object WeakMap]"==vo(n)},An.isWeakSet=function(n){return yu(n)&&"[object WeakSet]"==Ot(n)},An.join=function(n,t){return null==n?"":Bi.call(n,t)},An.kebabCase=Lf,An.last=Ve,An.lastIndexOf=function(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e;if(r!==T&&(u=Eu(r),u=0>u?Ui(e+u,0):Ci(u,e-1)), -t===t){for(r=u+1;r--&&n[r]!==t;);n=r}else n=_(n,d,u,true);return n},An.lowerCase=Uf,An.lowerFirst=Cf,An.lt=vf,An.lte=gf,An.max=function(n){return n&&n.length?xt(n,$u,It):T},An.maxBy=function(n,t){return n&&n.length?xt(n,ye(t,2),It):T},An.mean=function(n){return y(n,$u)},An.meanBy=function(n,t){return y(n,ye(t,2))},An.min=function(n){return n&&n.length?xt(n,$u,Kt):T},An.minBy=function(n,t){return n&&n.length?xt(n,ye(t,2),Kt):T},An.stubArray=qu,An.stubFalse=Vu,An.stubObject=function(){return{}},An.stubString=function(){ -return""},An.stubTrue=function(){return true},An.multiply=rc,An.nth=function(n,t){return n&&n.length?Qt(n,Eu(t)):T},An.noConflict=function(){return $n._===this&&($n._=si),this},An.noop=Pu,An.now=Go,An.pad=function(n,t,r){n=Iu(n);var e=(t=Eu(t))?D(n):0;return!t||e>=t?n:(t=(t-e)/2,ne(Ii(t),r)+n+ne(Oi(t),r))},An.padEnd=function(n,t,r){n=Iu(n);var e=(t=Eu(t))?D(n):0;return t&&et){var e=n;n=t,t=e}return r||n%1||t%1?(r=Ti(),Ci(n+r*(t-n+Cn("1e-"+((r+"").length-1))),t)):ir(n,t)},An.reduce=function(n,t,r){var e=ff(n)?l:j,u=3>arguments.length;return e(n,ye(t,4),r,u,uo)},An.reduceRight=function(n,t,r){var e=ff(n)?s:j,u=3>arguments.length; -return e(n,ye(t,4),r,u,io)},An.repeat=function(n,t,r){return t=(r?Oe(n,t,r):t===T)?1:Eu(t),or(Iu(n),t)},An.replace=function(){var n=arguments,t=Iu(n[0]);return 3>n.length?t:t.replace(n[1],n[2])},An.result=function(n,t,r){t=Sr(t,n);var e=-1,u=t.length;for(u||(u=1,n=T);++en||9007199254740991=i)return n;if(i=r-D(e),1>i)return e;if(r=o?Or(o,0,i).join(""):n.slice(0,i),u===T)return r+e;if(o&&(i+=r.length-i),hf(u)){if(n.slice(i).search(u)){ -var f=r;for(u.global||(u=Xu(u.source,Iu(_n.exec(u))+"g")),u.lastIndex=0;o=u.exec(f);)var c=o.index;r=r.slice(0,c===T?i:c)}}else n.indexOf(yr(u),i)!=i&&(u=r.lastIndexOf(u),-1e.__dir__?"Right":"")}),e},Un.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse()}}),r(["filter","map","takeWhile"],function(n,t){ -var r=t+1,e=1==r||3==r;Un.prototype[n]=function(n){var t=this.clone();return t.__iteratees__.push({iteratee:ye(n,3),type:r}),t.__filtered__=t.__filtered__||e,t}}),r(["head","last"],function(n,t){var r="take"+(t?"Right":"");Un.prototype[n]=function(){return this[r](1).value()[0]}}),r(["initial","tail"],function(n,t){var r="drop"+(t?"":"Right");Un.prototype[n]=function(){return this.__filtered__?new Un(this):this[r](1)}}),Un.prototype.compact=function(){return this.filter($u)},Un.prototype.find=function(n){ -return this.filter(n).head()},Un.prototype.findLast=function(n){return this.reverse().find(n)},Un.prototype.invokeMap=fr(function(n,t){return typeof n=="function"?new Un(this):this.map(function(r){return Lt(r,n,t)})}),Un.prototype.reject=function(n){return this.filter(au(ye(n)))},Un.prototype.slice=function(n,t){n=Eu(n);var r=this;return r.__filtered__&&(0t)?new Un(r):(0>n?r=r.takeRight(-n):n&&(r=r.drop(n)),t!==T&&(t=Eu(t),r=0>t?r.dropRight(-t):r.take(t-n)),r)},Un.prototype.takeRightWhile=function(n){ -return this.reverse().takeWhile(n).reverse()},Un.prototype.toArray=function(){return this.take(4294967295)},mt(Un.prototype,function(n,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),e=/^(?:head|last)$/.test(t),u=An[e?"take"+("last"==t?"Right":""):t],i=e||/^find/.test(t);u&&(An.prototype[t]=function(){function t(n){return n=u.apply(An,a([n],f)),e&&h?n[0]:n}var o=this.__wrapped__,f=e?[1]:arguments,c=o instanceof Un,l=f[0],s=c||ff(o);s&&r&&typeof l=="function"&&1!=l.length&&(c=s=false);var h=this.__chain__,p=!!this.__actions__.length,l=i&&!h,c=c&&!p; -return!i&&s?(o=c?o:new Un(this),o=n.apply(o,f),o.__actions__.push({func:Qe,args:[t],thisArg:T}),new On(o,h)):l&&c?n.apply(this,f):(o=this.thru(t),l?e?o.value()[0]:o.value():o)})}),r("pop push shift sort splice unshift".split(" "),function(n){var t=ri[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|shift)$/.test(n);An.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var u=this.value();return t.apply(ff(u)?u:[],n)}return this[r](function(r){return t.apply(ff(r)?r:[],n)}); -}}),mt(Un.prototype,function(n,t){var r=An[t];if(r){var e=r.name+"";oi.call(Gi,e)||(Gi[e]=[]),Gi[e].push({name:t,func:r})}}),Gi[Jr(T,2).name]=[{name:"wrapper",func:T}],Un.prototype.clone=function(){var n=new Un(this.__wrapped__);return n.__actions__=Ur(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=Ur(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=Ur(this.__views__),n},Un.prototype.reverse=function(){if(this.__filtered__){var n=new Un(this); -n.__dir__=-1,n.__filtered__=true}else n=this.clone(),n.__dir__*=-1;return n},Un.prototype.value=function(){var n,t=this.__wrapped__.value(),r=this.__dir__,e=ff(t),u=0>r,i=e?t.length:0;n=i;for(var o=this.__views__,f=0,c=-1,a=o.length;++c=this.__values__.length;return{done:n,value:n?T:this.__values__[this.__index__++]}},An.prototype.plant=function(n){ -for(var t,r=this;r instanceof En;){var e=Fe(r);e.__index__=0,e.__values__=T,t?u.__wrapped__=e:t=e;var u=e,r=r.__wrapped__}return u.__wrapped__=n,t},An.prototype.reverse=function(){var n=this.__wrapped__;return n instanceof Un?(this.__actions__.length&&(n=new Un(this)),n=n.reverse(),n.__actions__.push({func:Qe,args:[Ge],thisArg:T}),new On(n,this.__chain__)):this.thru(Ge)},An.prototype.toJSON=An.prototype.valueOf=An.prototype.value=function(){return wr(this.__wrapped__,this.__actions__)},An.prototype.first=An.prototype.head, -wi&&(An.prototype[wi]=Xe),An}();typeof define=="function"&&typeof define.amd=="object"&&define.amd?($n._=rt, define(function(){return rt})):Nn?((Nn.exports=rt)._=rt,Fn._=rt):$n._=rt}).call(this); \ No newline at end of file +(function(){function n(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function t(n,t,r,e){for(var u=-1,i=null==n?0:n.length;++u-1}function f(n,t,r){for(var e=-1,u=null==n?0:n.length;++e-1;);return r}function L(n,t){for(var r=n.length;r--&&y(t,n[r],0)>-1;);return r}function C(n,t){for(var r=n.length,e=0;r--;)n[r]===t&&++e; +return e}function U(n){return"\\"+Yr[n]}function B(n,t){return null==n?X:n[t]}function T(n){return Nr.test(n)}function $(n){return Pr.test(n)}function D(n){for(var t,r=[];!(t=n.next()).done;)r.push(t.value);return r}function M(n){var t=-1,r=Array(n.size);return n.forEach(function(n,e){r[++t]=[e,n]}),r}function F(n,t){return function(r){return n(t(r))}}function N(n,t){for(var r=-1,e=n.length,u=0,i=[];++r>>1,$n=[["ary",mn],["bind",_n],["bindKey",vn],["curry",yn],["curryRight",dn],["flip",jn],["partial",bn],["partialRight",wn],["rearg",xn]],Dn="[object Arguments]",Mn="[object Array]",Fn="[object AsyncFunction]",Nn="[object Boolean]",Pn="[object Date]",qn="[object DOMException]",Zn="[object Error]",Kn="[object Function]",Vn="[object GeneratorFunction]",Gn="[object Map]",Hn="[object Number]",Jn="[object Null]",Yn="[object Object]",Qn="[object Promise]",Xn="[object Proxy]",nt="[object RegExp]",tt="[object Set]",rt="[object String]",et="[object Symbol]",ut="[object Undefined]",it="[object WeakMap]",ot="[object WeakSet]",ft="[object ArrayBuffer]",ct="[object DataView]",at="[object Float32Array]",lt="[object Float64Array]",st="[object Int8Array]",ht="[object Int16Array]",pt="[object Int32Array]",_t="[object Uint8Array]",vt="[object Uint8ClampedArray]",gt="[object Uint16Array]",yt="[object Uint32Array]",dt=/\b__p \+= '';/g,bt=/\b(__p \+=) '' \+/g,wt=/(__e\(.*?\)|\b__t\)) \+\n'';/g,mt=/&(?:amp|lt|gt|quot|#39);/g,xt=/[&<>"']/g,jt=RegExp(mt.source),At=RegExp(xt.source),kt=/<%-([\s\S]+?)%>/g,Ot=/<%([\s\S]+?)%>/g,It=/<%=([\s\S]+?)%>/g,Rt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,zt=/^\w*$/,Et=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,St=/[\\^$.*+?()[\]{}|]/g,Wt=RegExp(St.source),Lt=/^\s+/,Ct=/\s/,Ut=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Bt=/\{\n\/\* \[wrapped with (.+)\] \*/,Tt=/,? & /,$t=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Dt=/[()=,{}\[\]\/\s]/,Mt=/\\(\\)?/g,Ft=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Nt=/\w*$/,Pt=/^[-+]0x[0-9a-f]+$/i,qt=/^0b[01]+$/i,Zt=/^\[object .+?Constructor\]$/,Kt=/^0o[0-7]+$/i,Vt=/^(?:0|[1-9]\d*)$/,Gt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Ht=/($^)/,Jt=/['\n\r\u2028\u2029\\]/g,Yt="\\ud800-\\udfff",Qt="\\u0300-\\u036f",Xt="\\ufe20-\\ufe2f",nr="\\u20d0-\\u20ff",tr=Qt+Xt+nr,rr="\\u2700-\\u27bf",er="a-z\\xdf-\\xf6\\xf8-\\xff",ur="\\xac\\xb1\\xd7\\xf7",ir="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",or="\\u2000-\\u206f",fr=" \\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",cr="A-Z\\xc0-\\xd6\\xd8-\\xde",ar="\\ufe0e\\ufe0f",lr=ur+ir+or+fr,sr="['\u2019]",hr="["+Yt+"]",pr="["+lr+"]",_r="["+tr+"]",vr="\\d+",gr="["+rr+"]",yr="["+er+"]",dr="[^"+Yt+lr+vr+rr+er+cr+"]",br="\\ud83c[\\udffb-\\udfff]",wr="(?:"+_r+"|"+br+")",mr="[^"+Yt+"]",xr="(?:\\ud83c[\\udde6-\\uddff]){2}",jr="[\\ud800-\\udbff][\\udc00-\\udfff]",Ar="["+cr+"]",kr="\\u200d",Or="(?:"+yr+"|"+dr+")",Ir="(?:"+Ar+"|"+dr+")",Rr="(?:"+sr+"(?:d|ll|m|re|s|t|ve))?",zr="(?:"+sr+"(?:D|LL|M|RE|S|T|VE))?",Er=wr+"?",Sr="["+ar+"]?",Wr="(?:"+kr+"(?:"+[mr,xr,jr].join("|")+")"+Sr+Er+")*",Lr="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Cr="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Ur=Sr+Er+Wr,Br="(?:"+[gr,xr,jr].join("|")+")"+Ur,Tr="(?:"+[mr+_r+"?",_r,xr,jr,hr].join("|")+")",$r=RegExp(sr,"g"),Dr=RegExp(_r,"g"),Mr=RegExp(br+"(?="+br+")|"+Tr+Ur,"g"),Fr=RegExp([Ar+"?"+yr+"+"+Rr+"(?="+[pr,Ar,"$"].join("|")+")",Ir+"+"+zr+"(?="+[pr,Ar+Or,"$"].join("|")+")",Ar+"?"+Or+"+"+Rr,Ar+"+"+zr,Cr,Lr,vr,Br].join("|"),"g"),Nr=RegExp("["+kr+Yt+tr+ar+"]"),Pr=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,qr=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Zr=-1,Kr={}; +Kr[at]=Kr[lt]=Kr[st]=Kr[ht]=Kr[pt]=Kr[_t]=Kr[vt]=Kr[gt]=Kr[yt]=!0,Kr[Dn]=Kr[Mn]=Kr[ft]=Kr[Nn]=Kr[ct]=Kr[Pn]=Kr[Zn]=Kr[Kn]=Kr[Gn]=Kr[Hn]=Kr[Yn]=Kr[nt]=Kr[tt]=Kr[rt]=Kr[it]=!1;var Vr={};Vr[Dn]=Vr[Mn]=Vr[ft]=Vr[ct]=Vr[Nn]=Vr[Pn]=Vr[at]=Vr[lt]=Vr[st]=Vr[ht]=Vr[pt]=Vr[Gn]=Vr[Hn]=Vr[Yn]=Vr[nt]=Vr[tt]=Vr[rt]=Vr[et]=Vr[_t]=Vr[vt]=Vr[gt]=Vr[yt]=!0,Vr[Zn]=Vr[Kn]=Vr[it]=!1;var Gr={"\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","\u0100":"A","\u0102":"A","\u0104":"A","\u0101":"a","\u0103":"a","\u0105":"a","\u0106":"C","\u0108":"C","\u010a":"C","\u010c":"C","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g", +"\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i","\u012b":"i","\u012d":"i","\u012f":"i","\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O", +"\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r","\u015a":"S","\u015c":"S","\u015e":"S","\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w", +"\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij","\u0152":"Oe","\u0153":"oe","\u0149":"'n","\u017f":"s"},Hr={"&":"&","<":"<",">":">",'"':""","'":"'"},Jr={"&":"&","<":"<",">":">",""":'"',"'":"'"},Yr={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Qr=parseFloat,Xr=parseInt,ne="object"==typeof global&&global&&global.Object===Object&&global,te="object"==typeof self&&self&&self.Object===Object&&self,re=ne||te||Function("return this")(),ee="object"==typeof exports&&exports&&!exports.nodeType&&exports,ue=ee&&"object"==typeof module&&module&&!module.nodeType&&module,ie=ue&&ue.exports===ee,oe=ie&&ne.process,fe=function(){ +try{var n=ue&&ue.require&&ue.require("util").types;return n?n:oe&&oe.binding&&oe.binding("util")}catch(n){}}(),ce=fe&&fe.isArrayBuffer,ae=fe&&fe.isDate,le=fe&&fe.isMap,se=fe&&fe.isRegExp,he=fe&&fe.isSet,pe=fe&&fe.isTypedArray,_e=m("length"),ve=x(Gr),ge=x(Hr),ye=x(Jr),de=function p(x){function Z(n){if(cc(n)&&!bh(n)&&!(n instanceof Ct)){if(n instanceof Y)return n;if(bl.call(n,"__wrapped__"))return eo(n)}return new Y(n)}function J(){}function Y(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t, +this.__index__=0,this.__values__=X}function Ct(n){this.__wrapped__=n,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=Un,this.__views__=[]}function $t(){var n=new Ct(this.__wrapped__);return n.__actions__=Tu(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=Tu(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=Tu(this.__views__),n}function Yt(){if(this.__filtered__){var n=new Ct(this);n.__dir__=-1, +n.__filtered__=!0}else n=this.clone(),n.__dir__*=-1;return n}function Qt(){var n=this.__wrapped__.value(),t=this.__dir__,r=bh(n),e=t<0,u=r?n.length:0,i=Oi(0,u,this.__views__),o=i.start,f=i.end,c=f-o,a=e?f:o-1,l=this.__iteratees__,s=l.length,h=0,p=Hl(c,this.__takeCount__);if(!r||!e&&u==c&&p==c)return wu(n,this.__actions__);var _=[];n:for(;c--&&h-1}function lr(n,t){var r=this.__data__,e=Wr(r,n);return e<0?(++this.size,r.push([n,t])):r[e][1]=t,this}function sr(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t=t?n:t)),n}function Fr(n,t,e,u,i,o){var f,c=t&an,a=t&ln,l=t&sn;if(e&&(f=i?e(n,u,i,o):e(n)),f!==X)return f;if(!fc(n))return n;var s=bh(n);if(s){if(f=zi(n),!c)return Tu(n,f)}else{var h=zs(n),p=h==Kn||h==Vn;if(mh(n))return Iu(n,c);if(h==Yn||h==Dn||p&&!i){if(f=a||p?{}:Ei(n),!c)return a?Mu(n,Ur(f,n)):Du(n,Cr(f,n))}else{if(!Vr[h])return i?n:{};f=Si(n,h,c)}}o||(o=new wr);var _=o.get(n);if(_)return _;o.set(n,f),kh(n)?n.forEach(function(r){f.add(Fr(r,t,e,r,n,o))}):jh(n)&&n.forEach(function(r,u){ +f.set(u,Fr(r,t,e,u,n,o))});var v=l?a?di:yi:a?qc:Pc,g=s?X:v(n);return r(g||n,function(r,u){g&&(u=r,r=n[u]),Sr(f,u,Fr(r,t,e,u,n,o))}),f}function Nr(n){var t=Pc(n);return function(r){return Pr(r,n,t)}}function Pr(n,t,r){var e=r.length;if(null==n)return!e;for(n=ll(n);e--;){var u=r[e],i=t[u],o=n[u];if(o===X&&!(u in n)||!i(o))return!1}return!0}function Gr(n,t,r){if("function"!=typeof n)throw new pl(en);return Ws(function(){n.apply(X,r)},t)}function Hr(n,t,r,e){var u=-1,i=o,a=!0,l=n.length,s=[],h=t.length; +if(!l)return s;r&&(t=c(t,z(r))),e?(i=f,a=!1):t.length>=tn&&(i=S,a=!1,t=new yr(t));n:for(;++uu?0:u+r), +e=e===X||e>u?u:kc(e),e<0&&(e+=u),e=r>e?0:Oc(e);r0&&r(f)?t>1?ee(f,t-1,r,e,u):a(u,f):e||(u[u.length]=f)}return u}function ue(n,t){return n&&bs(n,t,Pc)}function oe(n,t){return n&&ws(n,t,Pc)}function fe(n,t){return i(t,function(t){return uc(n[t])})}function _e(n,t){t=ku(t,n);for(var r=0,e=t.length;null!=n&&rt}function xe(n,t){return null!=n&&bl.call(n,t)}function je(n,t){return null!=n&&t in ll(n)}function Ae(n,t,r){return n>=Hl(t,r)&&n=120&&p.length>=120)?new yr(a&&p):X}p=n[0]; +var _=-1,v=l[0];n:for(;++_-1;)f!==n&&Ll.call(f,a,1),Ll.call(n,a,1);return n}function nu(n,t){for(var r=n?t.length:0,e=r-1;r--;){ +var u=t[r];if(r==e||u!==i){var i=u;Ci(u)?Ll.call(n,u,1):yu(n,u)}}return n}function tu(n,t){return n+Nl(Ql()*(t-n+1))}function ru(n,t,r,e){for(var u=-1,i=Gl(Fl((t-n)/(r||1)),0),o=il(i);i--;)o[e?i:++u]=n,n+=r;return o}function eu(n,t){var r="";if(!n||t<1||t>Wn)return r;do t%2&&(r+=n),t=Nl(t/2),t&&(n+=n);while(t);return r}function uu(n,t){return Ls(Vi(n,t,La),n+"")}function iu(n){return Ir(ra(n))}function ou(n,t){var r=ra(n);return Xi(r,Mr(t,0,r.length))}function fu(n,t,r,e){if(!fc(n))return n;t=ku(t,n); +for(var u=-1,i=t.length,o=i-1,f=n;null!=f&&++uu?0:u+t),r=r>u?u:r,r<0&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0;for(var i=il(u);++e>>1,o=n[i];null!==o&&!bc(o)&&(r?o<=t:o=tn){var s=t?null:ks(n);if(s)return P(s);c=!1,u=S,l=new yr}else l=t?[]:a;n:for(;++e=e?n:au(n,t,r)}function Iu(n,t){if(t)return n.slice();var r=n.length,e=zl?zl(r):new n.constructor(r); +return n.copy(e),e}function Ru(n){var t=new n.constructor(n.byteLength);return new Rl(t).set(new Rl(n)),t}function zu(n,t){return new n.constructor(t?Ru(n.buffer):n.buffer,n.byteOffset,n.byteLength)}function Eu(n){var t=new n.constructor(n.source,Nt.exec(n));return t.lastIndex=n.lastIndex,t}function Su(n){return _s?ll(_s.call(n)):{}}function Wu(n,t){return new n.constructor(t?Ru(n.buffer):n.buffer,n.byteOffset,n.length)}function Lu(n,t){if(n!==t){var r=n!==X,e=null===n,u=n===n,i=bc(n),o=t!==X,f=null===t,c=t===t,a=bc(t); +if(!f&&!a&&!i&&n>t||i&&o&&c&&!f&&!a||e&&o&&c||!r&&c||!u)return 1;if(!e&&!i&&!a&&n=f)return c;return c*("desc"==r[e]?-1:1)}}return n.index-t.index}function Uu(n,t,r,e){for(var u=-1,i=n.length,o=r.length,f=-1,c=t.length,a=Gl(i-o,0),l=il(c+a),s=!e;++f1?r[u-1]:X,o=u>2?r[2]:X;for(i=n.length>3&&"function"==typeof i?(u--,i):X,o&&Ui(r[0],r[1],o)&&(i=u<3?X:i,u=1),t=ll(t);++e-1?u[i?t[o]:o]:X}}function Yu(n){return gi(function(t){var r=t.length,e=r,u=Y.prototype.thru;for(n&&t.reverse();e--;){var i=t[e];if("function"!=typeof i)throw new pl(en);if(u&&!o&&"wrapper"==bi(i))var o=new Y([],!0)}for(e=o?e:r;++e1&&d.reverse(),s&&cf))return!1;var a=i.get(n),l=i.get(t);if(a&&l)return a==t&&l==n;var s=-1,p=!0,_=r&pn?new yr:X;for(i.set(n,t),i.set(t,n);++s1?"& ":"")+t[e],t=t.join(r>2?", ":" "),n.replace(Ut,"{\n/* [wrapped with "+t+"] */\n")}function Li(n){return bh(n)||dh(n)||!!(Cl&&n&&n[Cl])}function Ci(n,t){var r=typeof n; +return t=null==t?Wn:t,!!t&&("number"==r||"symbol"!=r&&Vt.test(n))&&n>-1&&n%1==0&&n0){if(++t>=On)return arguments[0]}else t=0; +return n.apply(X,arguments)}}function Xi(n,t){var r=-1,e=n.length,u=e-1;for(t=t===X?e:t;++r=this.__values__.length;return{done:n,value:n?X:this.__values__[this.__index__++]}}function uf(){return this}function of(n){for(var t,r=this;r instanceof J;){var e=eo(r);e.__index__=0,e.__values__=X,t?u.__wrapped__=e:t=e;var u=e;r=r.__wrapped__}return u.__wrapped__=n,t}function ff(){var n=this.__wrapped__;if(n instanceof Ct){var t=n;return this.__actions__.length&&(t=new Ct(this)),t=t.reverse(),t.__actions__.push({func:nf,args:[Eo],thisArg:X}),new Y(t,this.__chain__)}return this.thru(Eo); +}function cf(){return wu(this.__wrapped__,this.__actions__)}function af(n,t,r){var e=bh(n)?u:Jr;return r&&Ui(n,t,r)&&(t=X),e(n,mi(t,3))}function lf(n,t){return(bh(n)?i:te)(n,mi(t,3))}function sf(n,t){return ee(yf(n,t),1)}function hf(n,t){return ee(yf(n,t),Sn)}function pf(n,t,r){return r=r===X?1:kc(r),ee(yf(n,t),r)}function _f(n,t){return(bh(n)?r:ys)(n,mi(t,3))}function vf(n,t){return(bh(n)?e:ds)(n,mi(t,3))}function gf(n,t,r,e){n=Hf(n)?n:ra(n),r=r&&!e?kc(r):0;var u=n.length;return r<0&&(r=Gl(u+r,0)), +dc(n)?r<=u&&n.indexOf(t,r)>-1:!!u&&y(n,t,r)>-1}function yf(n,t){return(bh(n)?c:Pe)(n,mi(t,3))}function df(n,t,r,e){return null==n?[]:(bh(t)||(t=null==t?[]:[t]),r=e?X:r,bh(r)||(r=null==r?[]:[r]),He(n,t,r))}function bf(n,t,r){var e=bh(n)?l:j,u=arguments.length<3;return e(n,mi(t,4),r,u,ys)}function wf(n,t,r){var e=bh(n)?s:j,u=arguments.length<3;return e(n,mi(t,4),r,u,ds)}function mf(n,t){return(bh(n)?i:te)(n,Uf(mi(t,3)))}function xf(n){return(bh(n)?Ir:iu)(n)}function jf(n,t,r){return t=(r?Ui(n,t,r):t===X)?1:kc(t), +(bh(n)?Rr:ou)(n,t)}function Af(n){return(bh(n)?zr:cu)(n)}function kf(n){if(null==n)return 0;if(Hf(n))return dc(n)?V(n):n.length;var t=zs(n);return t==Gn||t==tt?n.size:Me(n).length}function Of(n,t,r){var e=bh(n)?h:lu;return r&&Ui(n,t,r)&&(t=X),e(n,mi(t,3))}function If(n,t){if("function"!=typeof t)throw new pl(en);return n=kc(n),function(){if(--n<1)return t.apply(this,arguments)}}function Rf(n,t,r){return t=r?X:t,t=n&&null==t?n.length:t,ai(n,mn,X,X,X,X,t)}function zf(n,t){var r;if("function"!=typeof t)throw new pl(en); +return n=kc(n),function(){return--n>0&&(r=t.apply(this,arguments)),n<=1&&(t=X),r}}function Ef(n,t,r){t=r?X:t;var e=ai(n,yn,X,X,X,X,X,t);return e.placeholder=Ef.placeholder,e}function Sf(n,t,r){t=r?X:t;var e=ai(n,dn,X,X,X,X,X,t);return e.placeholder=Sf.placeholder,e}function Wf(n,t,r){function e(t){var r=h,e=p;return h=p=X,d=t,v=n.apply(e,r)}function u(n){return d=n,g=Ws(f,t),b?e(n):v}function i(n){var r=n-y,e=n-d,u=t-r;return w?Hl(u,_-e):u}function o(n){var r=n-y,e=n-d;return y===X||r>=t||r<0||w&&e>=_; +}function f(){var n=fh();return o(n)?c(n):(g=Ws(f,i(n)),X)}function c(n){return g=X,m&&h?e(n):(h=p=X,v)}function a(){g!==X&&As(g),d=0,h=y=p=g=X}function l(){return g===X?v:c(fh())}function s(){var n=fh(),r=o(n);if(h=arguments,p=this,y=n,r){if(g===X)return u(y);if(w)return As(g),g=Ws(f,t),e(y)}return g===X&&(g=Ws(f,t)),v}var h,p,_,v,g,y,d=0,b=!1,w=!1,m=!0;if("function"!=typeof n)throw new pl(en);return t=Ic(t)||0,fc(r)&&(b=!!r.leading,w="maxWait"in r,_=w?Gl(Ic(r.maxWait)||0,t):_,m="trailing"in r?!!r.trailing:m), +s.cancel=a,s.flush=l,s}function Lf(n){return ai(n,jn)}function Cf(n,t){if("function"!=typeof n||null!=t&&"function"!=typeof t)throw new pl(en);var r=function(){var e=arguments,u=t?t.apply(this,e):e[0],i=r.cache;if(i.has(u))return i.get(u);var o=n.apply(this,e);return r.cache=i.set(u,o)||i,o};return r.cache=new(Cf.Cache||sr),r}function Uf(n){if("function"!=typeof n)throw new pl(en);return function(){var t=arguments;switch(t.length){case 0:return!n.call(this);case 1:return!n.call(this,t[0]);case 2: +return!n.call(this,t[0],t[1]);case 3:return!n.call(this,t[0],t[1],t[2])}return!n.apply(this,t)}}function Bf(n){return zf(2,n)}function Tf(n,t){if("function"!=typeof n)throw new pl(en);return t=t===X?t:kc(t),uu(n,t)}function $f(t,r){if("function"!=typeof t)throw new pl(en);return r=null==r?0:Gl(kc(r),0),uu(function(e){var u=e[r],i=Ou(e,0,r);return u&&a(i,u),n(t,this,i)})}function Df(n,t,r){var e=!0,u=!0;if("function"!=typeof n)throw new pl(en);return fc(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u), +Wf(n,t,{leading:e,maxWait:t,trailing:u})}function Mf(n){return Rf(n,1)}function Ff(n,t){return ph(Au(t),n)}function Nf(){if(!arguments.length)return[];var n=arguments[0];return bh(n)?n:[n]}function Pf(n){return Fr(n,sn)}function qf(n,t){return t="function"==typeof t?t:X,Fr(n,sn,t)}function Zf(n){return Fr(n,an|sn)}function Kf(n,t){return t="function"==typeof t?t:X,Fr(n,an|sn,t)}function Vf(n,t){return null==t||Pr(n,t,Pc(t))}function Gf(n,t){return n===t||n!==n&&t!==t}function Hf(n){return null!=n&&oc(n.length)&&!uc(n); +}function Jf(n){return cc(n)&&Hf(n)}function Yf(n){return n===!0||n===!1||cc(n)&&we(n)==Nn}function Qf(n){return cc(n)&&1===n.nodeType&&!gc(n)}function Xf(n){if(null==n)return!0;if(Hf(n)&&(bh(n)||"string"==typeof n||"function"==typeof n.splice||mh(n)||Oh(n)||dh(n)))return!n.length;var t=zs(n);if(t==Gn||t==tt)return!n.size;if(Mi(n))return!Me(n).length;for(var r in n)if(bl.call(n,r))return!1;return!0}function nc(n,t){return Se(n,t)}function tc(n,t,r){r="function"==typeof r?r:X;var e=r?r(n,t):X;return e===X?Se(n,t,X,r):!!e; +}function rc(n){if(!cc(n))return!1;var t=we(n);return t==Zn||t==qn||"string"==typeof n.message&&"string"==typeof n.name&&!gc(n)}function ec(n){return"number"==typeof n&&Zl(n)}function uc(n){if(!fc(n))return!1;var t=we(n);return t==Kn||t==Vn||t==Fn||t==Xn}function ic(n){return"number"==typeof n&&n==kc(n)}function oc(n){return"number"==typeof n&&n>-1&&n%1==0&&n<=Wn}function fc(n){var t=typeof n;return null!=n&&("object"==t||"function"==t)}function cc(n){return null!=n&&"object"==typeof n}function ac(n,t){ +return n===t||Ce(n,t,ji(t))}function lc(n,t,r){return r="function"==typeof r?r:X,Ce(n,t,ji(t),r)}function sc(n){return vc(n)&&n!=+n}function hc(n){if(Es(n))throw new fl(rn);return Ue(n)}function pc(n){return null===n}function _c(n){return null==n}function vc(n){return"number"==typeof n||cc(n)&&we(n)==Hn}function gc(n){if(!cc(n)||we(n)!=Yn)return!1;var t=El(n);if(null===t)return!0;var r=bl.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&dl.call(r)==jl}function yc(n){ +return ic(n)&&n>=-Wn&&n<=Wn}function dc(n){return"string"==typeof n||!bh(n)&&cc(n)&&we(n)==rt}function bc(n){return"symbol"==typeof n||cc(n)&&we(n)==et}function wc(n){return n===X}function mc(n){return cc(n)&&zs(n)==it}function xc(n){return cc(n)&&we(n)==ot}function jc(n){if(!n)return[];if(Hf(n))return dc(n)?G(n):Tu(n);if(Ul&&n[Ul])return D(n[Ul]());var t=zs(n);return(t==Gn?M:t==tt?P:ra)(n)}function Ac(n){if(!n)return 0===n?n:0;if(n=Ic(n),n===Sn||n===-Sn){return(n<0?-1:1)*Ln}return n===n?n:0}function kc(n){ +var t=Ac(n),r=t%1;return t===t?r?t-r:t:0}function Oc(n){return n?Mr(kc(n),0,Un):0}function Ic(n){if("number"==typeof n)return n;if(bc(n))return Cn;if(fc(n)){var t="function"==typeof n.valueOf?n.valueOf():n;n=fc(t)?t+"":t}if("string"!=typeof n)return 0===n?n:+n;n=R(n);var r=qt.test(n);return r||Kt.test(n)?Xr(n.slice(2),r?2:8):Pt.test(n)?Cn:+n}function Rc(n){return $u(n,qc(n))}function zc(n){return n?Mr(kc(n),-Wn,Wn):0===n?n:0}function Ec(n){return null==n?"":vu(n)}function Sc(n,t){var r=gs(n);return null==t?r:Cr(r,t); +}function Wc(n,t){return v(n,mi(t,3),ue)}function Lc(n,t){return v(n,mi(t,3),oe)}function Cc(n,t){return null==n?n:bs(n,mi(t,3),qc)}function Uc(n,t){return null==n?n:ws(n,mi(t,3),qc)}function Bc(n,t){return n&&ue(n,mi(t,3))}function Tc(n,t){return n&&oe(n,mi(t,3))}function $c(n){return null==n?[]:fe(n,Pc(n))}function Dc(n){return null==n?[]:fe(n,qc(n))}function Mc(n,t,r){var e=null==n?X:_e(n,t);return e===X?r:e}function Fc(n,t){return null!=n&&Ri(n,t,xe)}function Nc(n,t){return null!=n&&Ri(n,t,je); +}function Pc(n){return Hf(n)?Or(n):Me(n)}function qc(n){return Hf(n)?Or(n,!0):Fe(n)}function Zc(n,t){var r={};return t=mi(t,3),ue(n,function(n,e,u){Br(r,t(n,e,u),n)}),r}function Kc(n,t){var r={};return t=mi(t,3),ue(n,function(n,e,u){Br(r,e,t(n,e,u))}),r}function Vc(n,t){return Gc(n,Uf(mi(t)))}function Gc(n,t){if(null==n)return{};var r=c(di(n),function(n){return[n]});return t=mi(t),Ye(n,r,function(n,r){return t(n,r[0])})}function Hc(n,t,r){t=ku(t,n);var e=-1,u=t.length;for(u||(u=1,n=X);++et){ +var e=n;n=t,t=e}if(r||n%1||t%1){var u=Ql();return Hl(n+u*(t-n+Qr("1e-"+((u+"").length-1))),t)}return tu(n,t)}function fa(n){return Qh(Ec(n).toLowerCase())}function ca(n){return n=Ec(n),n&&n.replace(Gt,ve).replace(Dr,"")}function aa(n,t,r){n=Ec(n),t=vu(t);var e=n.length;r=r===X?e:Mr(kc(r),0,e);var u=r;return r-=t.length,r>=0&&n.slice(r,u)==t}function la(n){return n=Ec(n),n&&At.test(n)?n.replace(xt,ge):n}function sa(n){return n=Ec(n),n&&Wt.test(n)?n.replace(St,"\\$&"):n}function ha(n,t,r){n=Ec(n),t=kc(t); +var e=t?V(n):0;if(!t||e>=t)return n;var u=(t-e)/2;return ri(Nl(u),r)+n+ri(Fl(u),r)}function pa(n,t,r){n=Ec(n),t=kc(t);var e=t?V(n):0;return t&&e>>0)?(n=Ec(n),n&&("string"==typeof t||null!=t&&!Ah(t))&&(t=vu(t),!t&&T(n))?Ou(G(n),0,r):n.split(t,r)):[]}function ba(n,t,r){return n=Ec(n),r=null==r?0:Mr(kc(r),0,n.length),t=vu(t),n.slice(r,r+t.length)==t}function wa(n,t,r){var e=Z.templateSettings;r&&Ui(n,t,r)&&(t=X),n=Ec(n),t=Sh({},t,e,li);var u,i,o=Sh({},t.imports,e.imports,li),f=Pc(o),c=E(o,f),a=0,l=t.interpolate||Ht,s="__p += '",h=sl((t.escape||Ht).source+"|"+l.source+"|"+(l===It?Ft:Ht).source+"|"+(t.evaluate||Ht).source+"|$","g"),p="//# sourceURL="+(bl.call(t,"sourceURL")?(t.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++Zr+"]")+"\n"; +n.replace(h,function(t,r,e,o,f,c){return e||(e=o),s+=n.slice(a,c).replace(Jt,U),r&&(u=!0,s+="' +\n__e("+r+") +\n'"),f&&(i=!0,s+="';\n"+f+";\n__p += '"),e&&(s+="' +\n((__t = ("+e+")) == null ? '' : __t) +\n'"),a=c+t.length,t}),s+="';\n";var _=bl.call(t,"variable")&&t.variable;if(_){if(Dt.test(_))throw new fl(un)}else s="with (obj) {\n"+s+"\n}\n";s=(i?s.replace(dt,""):s).replace(bt,"$1").replace(wt,"$1;"),s="function("+(_||"obj")+") {\n"+(_?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(u?", __e = _.escape":"")+(i?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+s+"return __p\n}"; +var v=Xh(function(){return cl(f,p+"return "+s).apply(X,c)});if(v.source=s,rc(v))throw v;return v}function ma(n){return Ec(n).toLowerCase()}function xa(n){return Ec(n).toUpperCase()}function ja(n,t,r){if(n=Ec(n),n&&(r||t===X))return R(n);if(!n||!(t=vu(t)))return n;var e=G(n),u=G(t);return Ou(e,W(e,u),L(e,u)+1).join("")}function Aa(n,t,r){if(n=Ec(n),n&&(r||t===X))return n.slice(0,H(n)+1);if(!n||!(t=vu(t)))return n;var e=G(n);return Ou(e,0,L(e,G(t))+1).join("")}function ka(n,t,r){if(n=Ec(n),n&&(r||t===X))return n.replace(Lt,""); +if(!n||!(t=vu(t)))return n;var e=G(n);return Ou(e,W(e,G(t))).join("")}function Oa(n,t){var r=An,e=kn;if(fc(t)){var u="separator"in t?t.separator:u;r="length"in t?kc(t.length):r,e="omission"in t?vu(t.omission):e}n=Ec(n);var i=n.length;if(T(n)){var o=G(n);i=o.length}if(r>=i)return n;var f=r-V(e);if(f<1)return e;var c=o?Ou(o,0,f).join(""):n.slice(0,f);if(u===X)return c+e;if(o&&(f+=c.length-f),Ah(u)){if(n.slice(f).search(u)){var a,l=c;for(u.global||(u=sl(u.source,Ec(Nt.exec(u))+"g")),u.lastIndex=0;a=u.exec(l);)var s=a.index; +c=c.slice(0,s===X?f:s)}}else if(n.indexOf(vu(u),f)!=f){var h=c.lastIndexOf(u);h>-1&&(c=c.slice(0,h))}return c+e}function Ia(n){return n=Ec(n),n&&jt.test(n)?n.replace(mt,ye):n}function Ra(n,t,r){return n=Ec(n),t=r?X:t,t===X?$(n)?Q(n):_(n):n.match(t)||[]}function za(t){var r=null==t?0:t.length,e=mi();return t=r?c(t,function(n){if("function"!=typeof n[1])throw new pl(en);return[e(n[0]),n[1]]}):[],uu(function(e){for(var u=-1;++uWn)return[];var r=Un,e=Hl(n,Un);t=mi(t),n-=Un;for(var u=O(e,t);++r1?n[t-1]:X;return r="function"==typeof r?(n.pop(), +r):X,Ho(n,r)}),Qs=gi(function(n){var t=n.length,r=t?n[0]:0,e=this.__wrapped__,u=function(t){return Tr(t,n)};return!(t>1||this.__actions__.length)&&e instanceof Ct&&Ci(r)?(e=e.slice(r,+r+(t?1:0)),e.__actions__.push({func:nf,args:[u],thisArg:X}),new Y(e,this.__chain__).thru(function(n){return t&&!n.length&&n.push(X),n})):this.thru(u)}),Xs=Fu(function(n,t,r){bl.call(n,r)?++n[r]:Br(n,r,1)}),nh=Ju(ho),th=Ju(po),rh=Fu(function(n,t,r){bl.call(n,r)?n[r].push(t):Br(n,r,[t])}),eh=uu(function(t,r,e){var u=-1,i="function"==typeof r,o=Hf(t)?il(t.length):[]; +return ys(t,function(t){o[++u]=i?n(r,t,e):Ie(t,r,e)}),o}),uh=Fu(function(n,t,r){Br(n,r,t)}),ih=Fu(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]}),oh=uu(function(n,t){if(null==n)return[];var r=t.length;return r>1&&Ui(n,t[0],t[1])?t=[]:r>2&&Ui(t[0],t[1],t[2])&&(t=[t[0]]),He(n,ee(t,1),[])}),fh=Dl||function(){return re.Date.now()},ch=uu(function(n,t,r){var e=_n;if(r.length){var u=N(r,wi(ch));e|=bn}return ai(n,e,t,r,u)}),ah=uu(function(n,t,r){var e=_n|vn;if(r.length){var u=N(r,wi(ah));e|=bn; +}return ai(t,e,n,r,u)}),lh=uu(function(n,t){return Gr(n,1,t)}),sh=uu(function(n,t,r){return Gr(n,Ic(t)||0,r)});Cf.Cache=sr;var hh=js(function(t,r){r=1==r.length&&bh(r[0])?c(r[0],z(mi())):c(ee(r,1),z(mi()));var e=r.length;return uu(function(u){for(var i=-1,o=Hl(u.length,e);++i=t}),dh=Re(function(){return arguments}())?Re:function(n){return cc(n)&&bl.call(n,"callee")&&!Wl.call(n,"callee")},bh=il.isArray,wh=ce?z(ce):ze,mh=ql||qa,xh=ae?z(ae):Ee,jh=le?z(le):Le,Ah=se?z(se):Be,kh=he?z(he):Te,Oh=pe?z(pe):$e,Ih=ii(Ne),Rh=ii(function(n,t){return n<=t}),zh=Nu(function(n,t){if(Mi(t)||Hf(t))return $u(t,Pc(t),n),X;for(var r in t)bl.call(t,r)&&Sr(n,r,t[r])}),Eh=Nu(function(n,t){$u(t,qc(t),n)}),Sh=Nu(function(n,t,r,e){$u(t,qc(t),n,e)}),Wh=Nu(function(n,t,r,e){$u(t,Pc(t),n,e); +}),Lh=gi(Tr),Ch=uu(function(n,t){n=ll(n);var r=-1,e=t.length,u=e>2?t[2]:X;for(u&&Ui(t[0],t[1],u)&&(e=1);++r1),t}),$u(n,di(n),r),e&&(r=Fr(r,an|ln|sn,hi));for(var u=t.length;u--;)yu(r,t[u]);return r}),Nh=gi(function(n,t){return null==n?{}:Je(n,t)}),Ph=ci(Pc),qh=ci(qc),Zh=Vu(function(n,t,r){return t=t.toLowerCase(),n+(r?fa(t):t)}),Kh=Vu(function(n,t,r){return n+(r?"-":"")+t.toLowerCase()}),Vh=Vu(function(n,t,r){return n+(r?" ":"")+t.toLowerCase()}),Gh=Ku("toLowerCase"),Hh=Vu(function(n,t,r){ +return n+(r?"_":"")+t.toLowerCase()}),Jh=Vu(function(n,t,r){return n+(r?" ":"")+Qh(t)}),Yh=Vu(function(n,t,r){return n+(r?" ":"")+t.toUpperCase()}),Qh=Ku("toUpperCase"),Xh=uu(function(t,r){try{return n(t,X,r)}catch(n){return rc(n)?n:new fl(n)}}),np=gi(function(n,t){return r(t,function(t){t=no(t),Br(n,t,ch(n[t],n))}),n}),tp=Yu(),rp=Yu(!0),ep=uu(function(n,t){return function(r){return Ie(r,n,t)}}),up=uu(function(n,t){return function(r){return Ie(n,r,t)}}),ip=ti(c),op=ti(u),fp=ti(h),cp=ui(),ap=ui(!0),lp=ni(function(n,t){ +return n+t},0),sp=fi("ceil"),hp=ni(function(n,t){return n/t},1),pp=fi("floor"),_p=ni(function(n,t){return n*t},1),vp=fi("round"),gp=ni(function(n,t){return n-t},0);return Z.after=If,Z.ary=Rf,Z.assign=zh,Z.assignIn=Eh,Z.assignInWith=Sh,Z.assignWith=Wh,Z.at=Lh,Z.before=zf,Z.bind=ch,Z.bindAll=np,Z.bindKey=ah,Z.castArray=Nf,Z.chain=Qo,Z.chunk=uo,Z.compact=io,Z.concat=oo,Z.cond=za,Z.conforms=Ea,Z.constant=Sa,Z.countBy=Xs,Z.create=Sc,Z.curry=Ef,Z.curryRight=Sf,Z.debounce=Wf,Z.defaults=Ch,Z.defaultsDeep=Uh, +Z.defer=lh,Z.delay=sh,Z.difference=Us,Z.differenceBy=Bs,Z.differenceWith=Ts,Z.drop=fo,Z.dropRight=co,Z.dropRightWhile=ao,Z.dropWhile=lo,Z.fill=so,Z.filter=lf,Z.flatMap=sf,Z.flatMapDeep=hf,Z.flatMapDepth=pf,Z.flatten=_o,Z.flattenDeep=vo,Z.flattenDepth=go,Z.flip=Lf,Z.flow=tp,Z.flowRight=rp,Z.fromPairs=yo,Z.functions=$c,Z.functionsIn=Dc,Z.groupBy=rh,Z.initial=mo,Z.intersection=$s,Z.intersectionBy=Ds,Z.intersectionWith=Ms,Z.invert=Bh,Z.invertBy=Th,Z.invokeMap=eh,Z.iteratee=Ca,Z.keyBy=uh,Z.keys=Pc,Z.keysIn=qc, +Z.map=yf,Z.mapKeys=Zc,Z.mapValues=Kc,Z.matches=Ua,Z.matchesProperty=Ba,Z.memoize=Cf,Z.merge=Dh,Z.mergeWith=Mh,Z.method=ep,Z.methodOf=up,Z.mixin=Ta,Z.negate=Uf,Z.nthArg=Ma,Z.omit=Fh,Z.omitBy=Vc,Z.once=Bf,Z.orderBy=df,Z.over=ip,Z.overArgs=hh,Z.overEvery=op,Z.overSome=fp,Z.partial=ph,Z.partialRight=_h,Z.partition=ih,Z.pick=Nh,Z.pickBy=Gc,Z.property=Fa,Z.propertyOf=Na,Z.pull=Fs,Z.pullAll=Oo,Z.pullAllBy=Io,Z.pullAllWith=Ro,Z.pullAt=Ns,Z.range=cp,Z.rangeRight=ap,Z.rearg=vh,Z.reject=mf,Z.remove=zo,Z.rest=Tf, +Z.reverse=Eo,Z.sampleSize=jf,Z.set=Jc,Z.setWith=Yc,Z.shuffle=Af,Z.slice=So,Z.sortBy=oh,Z.sortedUniq=$o,Z.sortedUniqBy=Do,Z.split=da,Z.spread=$f,Z.tail=Mo,Z.take=Fo,Z.takeRight=No,Z.takeRightWhile=Po,Z.takeWhile=qo,Z.tap=Xo,Z.throttle=Df,Z.thru=nf,Z.toArray=jc,Z.toPairs=Ph,Z.toPairsIn=qh,Z.toPath=Ha,Z.toPlainObject=Rc,Z.transform=Qc,Z.unary=Mf,Z.union=Ps,Z.unionBy=qs,Z.unionWith=Zs,Z.uniq=Zo,Z.uniqBy=Ko,Z.uniqWith=Vo,Z.unset=Xc,Z.unzip=Go,Z.unzipWith=Ho,Z.update=na,Z.updateWith=ta,Z.values=ra,Z.valuesIn=ea, +Z.without=Ks,Z.words=Ra,Z.wrap=Ff,Z.xor=Vs,Z.xorBy=Gs,Z.xorWith=Hs,Z.zip=Js,Z.zipObject=Jo,Z.zipObjectDeep=Yo,Z.zipWith=Ys,Z.entries=Ph,Z.entriesIn=qh,Z.extend=Eh,Z.extendWith=Sh,Ta(Z,Z),Z.add=lp,Z.attempt=Xh,Z.camelCase=Zh,Z.capitalize=fa,Z.ceil=sp,Z.clamp=ua,Z.clone=Pf,Z.cloneDeep=Zf,Z.cloneDeepWith=Kf,Z.cloneWith=qf,Z.conformsTo=Vf,Z.deburr=ca,Z.defaultTo=Wa,Z.divide=hp,Z.endsWith=aa,Z.eq=Gf,Z.escape=la,Z.escapeRegExp=sa,Z.every=af,Z.find=nh,Z.findIndex=ho,Z.findKey=Wc,Z.findLast=th,Z.findLastIndex=po, +Z.findLastKey=Lc,Z.floor=pp,Z.forEach=_f,Z.forEachRight=vf,Z.forIn=Cc,Z.forInRight=Uc,Z.forOwn=Bc,Z.forOwnRight=Tc,Z.get=Mc,Z.gt=gh,Z.gte=yh,Z.has=Fc,Z.hasIn=Nc,Z.head=bo,Z.identity=La,Z.includes=gf,Z.indexOf=wo,Z.inRange=ia,Z.invoke=$h,Z.isArguments=dh,Z.isArray=bh,Z.isArrayBuffer=wh,Z.isArrayLike=Hf,Z.isArrayLikeObject=Jf,Z.isBoolean=Yf,Z.isBuffer=mh,Z.isDate=xh,Z.isElement=Qf,Z.isEmpty=Xf,Z.isEqual=nc,Z.isEqualWith=tc,Z.isError=rc,Z.isFinite=ec,Z.isFunction=uc,Z.isInteger=ic,Z.isLength=oc,Z.isMap=jh, +Z.isMatch=ac,Z.isMatchWith=lc,Z.isNaN=sc,Z.isNative=hc,Z.isNil=_c,Z.isNull=pc,Z.isNumber=vc,Z.isObject=fc,Z.isObjectLike=cc,Z.isPlainObject=gc,Z.isRegExp=Ah,Z.isSafeInteger=yc,Z.isSet=kh,Z.isString=dc,Z.isSymbol=bc,Z.isTypedArray=Oh,Z.isUndefined=wc,Z.isWeakMap=mc,Z.isWeakSet=xc,Z.join=xo,Z.kebabCase=Kh,Z.last=jo,Z.lastIndexOf=Ao,Z.lowerCase=Vh,Z.lowerFirst=Gh,Z.lt=Ih,Z.lte=Rh,Z.max=Ya,Z.maxBy=Qa,Z.mean=Xa,Z.meanBy=nl,Z.min=tl,Z.minBy=rl,Z.stubArray=Pa,Z.stubFalse=qa,Z.stubObject=Za,Z.stubString=Ka, +Z.stubTrue=Va,Z.multiply=_p,Z.nth=ko,Z.noConflict=$a,Z.noop=Da,Z.now=fh,Z.pad=ha,Z.padEnd=pa,Z.padStart=_a,Z.parseInt=va,Z.random=oa,Z.reduce=bf,Z.reduceRight=wf,Z.repeat=ga,Z.replace=ya,Z.result=Hc,Z.round=vp,Z.runInContext=p,Z.sample=xf,Z.size=kf,Z.snakeCase=Hh,Z.some=Of,Z.sortedIndex=Wo,Z.sortedIndexBy=Lo,Z.sortedIndexOf=Co,Z.sortedLastIndex=Uo,Z.sortedLastIndexBy=Bo,Z.sortedLastIndexOf=To,Z.startCase=Jh,Z.startsWith=ba,Z.subtract=gp,Z.sum=el,Z.sumBy=ul,Z.template=wa,Z.times=Ga,Z.toFinite=Ac,Z.toInteger=kc, +Z.toLength=Oc,Z.toLower=ma,Z.toNumber=Ic,Z.toSafeInteger=zc,Z.toString=Ec,Z.toUpper=xa,Z.trim=ja,Z.trimEnd=Aa,Z.trimStart=ka,Z.truncate=Oa,Z.unescape=Ia,Z.uniqueId=Ja,Z.upperCase=Yh,Z.upperFirst=Qh,Z.each=_f,Z.eachRight=vf,Z.first=bo,Ta(Z,function(){var n={};return ue(Z,function(t,r){bl.call(Z.prototype,r)||(n[r]=t)}),n}(),{chain:!1}),Z.VERSION=nn,r(["bind","bindKey","curry","curryRight","partial","partialRight"],function(n){Z[n].placeholder=Z}),r(["drop","take"],function(n,t){Ct.prototype[n]=function(r){ +r=r===X?1:Gl(kc(r),0);var e=this.__filtered__&&!t?new Ct(this):this.clone();return e.__filtered__?e.__takeCount__=Hl(r,e.__takeCount__):e.__views__.push({size:Hl(r,Un),type:n+(e.__dir__<0?"Right":"")}),e},Ct.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse()}}),r(["filter","map","takeWhile"],function(n,t){var r=t+1,e=r==Rn||r==En;Ct.prototype[n]=function(n){var t=this.clone();return t.__iteratees__.push({iteratee:mi(n,3),type:r}),t.__filtered__=t.__filtered__||e,t}}),r(["head","last"],function(n,t){ +var r="take"+(t?"Right":"");Ct.prototype[n]=function(){return this[r](1).value()[0]}}),r(["initial","tail"],function(n,t){var r="drop"+(t?"":"Right");Ct.prototype[n]=function(){return this.__filtered__?new Ct(this):this[r](1)}}),Ct.prototype.compact=function(){return this.filter(La)},Ct.prototype.find=function(n){return this.filter(n).head()},Ct.prototype.findLast=function(n){return this.reverse().find(n)},Ct.prototype.invokeMap=uu(function(n,t){return"function"==typeof n?new Ct(this):this.map(function(r){ +return Ie(r,n,t)})}),Ct.prototype.reject=function(n){return this.filter(Uf(mi(n)))},Ct.prototype.slice=function(n,t){n=kc(n);var r=this;return r.__filtered__&&(n>0||t<0)?new Ct(r):(n<0?r=r.takeRight(-n):n&&(r=r.drop(n)),t!==X&&(t=kc(t),r=t<0?r.dropRight(-t):r.take(t-n)),r)},Ct.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},Ct.prototype.toArray=function(){return this.take(Un)},ue(Ct.prototype,function(n,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),e=/^(?:head|last)$/.test(t),u=Z[e?"take"+("last"==t?"Right":""):t],i=e||/^find/.test(t); +u&&(Z.prototype[t]=function(){var t=this.__wrapped__,o=e?[1]:arguments,f=t instanceof Ct,c=o[0],l=f||bh(t),s=function(n){var t=u.apply(Z,a([n],o));return e&&h?t[0]:t};l&&r&&"function"==typeof c&&1!=c.length&&(f=l=!1);var h=this.__chain__,p=!!this.__actions__.length,_=i&&!h,v=f&&!p;if(!i&&l){t=v?t:new Ct(this);var g=n.apply(t,o);return g.__actions__.push({func:nf,args:[s],thisArg:X}),new Y(g,h)}return _&&v?n.apply(this,o):(g=this.thru(s),_?e?g.value()[0]:g.value():g)})}),r(["pop","push","shift","sort","splice","unshift"],function(n){ +var t=_l[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|shift)$/.test(n);Z.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var u=this.value();return t.apply(bh(u)?u:[],n)}return this[r](function(r){return t.apply(bh(r)?r:[],n)})}}),ue(Ct.prototype,function(n,t){var r=Z[t];if(r){var e=r.name+"";bl.call(fs,e)||(fs[e]=[]),fs[e].push({name:t,func:r})}}),fs[Qu(X,vn).name]=[{name:"wrapper",func:X}],Ct.prototype.clone=$t,Ct.prototype.reverse=Yt,Ct.prototype.value=Qt,Z.prototype.at=Qs, +Z.prototype.chain=tf,Z.prototype.commit=rf,Z.prototype.next=ef,Z.prototype.plant=of,Z.prototype.reverse=ff,Z.prototype.toJSON=Z.prototype.valueOf=Z.prototype.value=cf,Z.prototype.first=Z.prototype.head,Ul&&(Z.prototype[Ul]=uf),Z},be=de();"function"==typeof define&&"object"==typeof define.amd&&define.amd?(re._=be,define(function(){return be})):ue?((ue.exports=be)._=be,ee._=be):re._=be}).call(this); \ No newline at end of file diff --git a/doc/README.md b/doc/README.md index 332017c6ab..167c80432f 100644 --- a/doc/README.md +++ b/doc/README.md @@ -1,4 +1,4 @@ -# lodash v4.17.15 +# lodash v4.17.21 @@ -415,7 +415,7 @@

_.chunk(array, [size=1])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L6839 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.chunk "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L6903 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.chunk "See the npm package") [Ⓣ][1] Creates an array of elements split into groups the length of `size`. If `array` can't be split evenly, the final chunk will be the remaining @@ -446,7 +446,7 @@ _.chunk(['a', 'b', 'c', 'd'], 3);

_.compact(array)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L6874 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.compact "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L6938 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.compact "See the npm package") [Ⓣ][1] Creates an array with all falsey values removed. The values `false`, `null`, `0`, `""`, `undefined`, and `NaN` are falsey. @@ -472,7 +472,7 @@ _.compact([0, 1, false, 2, '', 3]);

_.concat(array, [values])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L6911 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.concat "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L6975 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.concat "See the npm package") [Ⓣ][1] Creates a new array concatenating `array` with any additional arrays and/or values. @@ -505,7 +505,7 @@ console.log(array);

_.difference(array, [values])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L6947 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.difference "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7011 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.difference "See the npm package") [Ⓣ][1] Creates an array of `array` values not included in the other given arrays using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) @@ -537,7 +537,7 @@ _.difference([2, 1], [2, 3]);

_.differenceBy(array, [values], [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L6979 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.differenceby "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7043 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.differenceby "See the npm package") [Ⓣ][1] This method is like `_.difference` except that it accepts `iteratee` which is invoked for each element of `array` and `values` to generate the criterion @@ -575,7 +575,7 @@ _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');

_.differenceWith(array, [values], [comparator])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7012 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.differencewith "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7076 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.differencewith "See the npm package") [Ⓣ][1] This method is like `_.difference` except that it accepts `comparator` which is invoked to compare elements of `array` to `values`. The order and @@ -610,7 +610,7 @@ _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);

_.drop(array, [n=1])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7047 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.drop "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7111 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.drop "See the npm package") [Ⓣ][1] Creates a slice of `array` with `n` elements dropped from the beginning. @@ -645,7 +645,7 @@ _.drop([1, 2, 3], 0);

_.dropRight(array, [n=1])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7081 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.dropright "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7145 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.dropright "See the npm package") [Ⓣ][1] Creates a slice of `array` with `n` elements dropped from the end. @@ -680,7 +680,7 @@ _.dropRight([1, 2, 3], 0);

_.dropRightWhile(array, [predicate=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7126 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.droprightwhile "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7190 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.droprightwhile "See the npm package") [Ⓣ][1] Creates a slice of `array` excluding elements dropped from the end. Elements are dropped until `predicate` returns falsey. The predicate is @@ -726,7 +726,7 @@ _.dropRightWhile(users, 'active');

_.dropWhile(array, [predicate=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7167 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.dropwhile "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7231 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.dropwhile "See the npm package") [Ⓣ][1] Creates a slice of `array` excluding elements dropped from the beginning. Elements are dropped until `predicate` returns falsey. The predicate is @@ -772,7 +772,7 @@ _.dropWhile(users, 'active');

_.fill(array, value, [start=0], [end=array.length])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7202 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.fill "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7266 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.fill "See the npm package") [Ⓣ][1] Fills elements of `array` with `value` from `start` up to, but not including, `end`. @@ -813,7 +813,7 @@ _.fill([4, 6, 8, 10], '*', 1, 3);

_.findIndex(array, [predicate=_.identity], [fromIndex=0])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7249 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.findindex "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7313 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.findindex "See the npm package") [Ⓣ][1] This method is like `_.find` except that it returns the index of the first element `predicate` returns truthy for instead of the element itself. @@ -859,7 +859,7 @@ _.findIndex(users, 'active');

_.findLastIndex(array, [predicate=_.identity], [fromIndex=array.length-1])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7296 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.findlastindex "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7360 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.findlastindex "See the npm package") [Ⓣ][1] This method is like `_.findIndex` except that it iterates over elements of `collection` from right to left. @@ -905,7 +905,7 @@ _.findLastIndex(users, 'active');

_.flatten(array)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7325 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flatten "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7389 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flatten "See the npm package") [Ⓣ][1] Flattens `array` a single level deep. @@ -930,7 +930,7 @@ _.flatten([1, [2, [3, [4]], 5]]);

_.flattenDeep(array)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7344 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flattendeep "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7408 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flattendeep "See the npm package") [Ⓣ][1] Recursively flattens `array`. @@ -955,7 +955,7 @@ _.flattenDeep([1, [2, [3, [4]], 5]]);

_.flattenDepth(array, [depth=1])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7369 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flattendepth "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7433 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flattendepth "See the npm package") [Ⓣ][1] Recursively flatten `array` up to `depth` times. @@ -986,7 +986,7 @@ _.flattenDepth(array, 2);

_.fromPairs(pairs)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7393 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.frompairs "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7457 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.frompairs "See the npm package") [Ⓣ][1] The inverse of `_.toPairs`; this method returns an object composed from key-value `pairs`. @@ -1012,7 +1012,7 @@ _.fromPairs([['a', 1], ['b', 2]]);

_.head(array)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7423 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.head "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7487 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.head "See the npm package") [Ⓣ][1] Gets the first element of `array`. @@ -1043,7 +1043,7 @@ _.head([]);

_.indexOf(array, value, [fromIndex=0])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7450 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.indexof "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7514 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.indexof "See the npm package") [Ⓣ][1] Gets the index at which the first occurrence of `value` is found in `array` using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) @@ -1077,7 +1077,7 @@ _.indexOf([1, 2, 1, 2], 2, 2);

_.initial(array)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7476 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.initial "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7540 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.initial "See the npm package") [Ⓣ][1] Gets all but the last element of `array`. @@ -1102,7 +1102,7 @@ _.initial([1, 2, 3]);

_.intersection([arrays])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7498 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.intersection "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7562 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.intersection "See the npm package") [Ⓣ][1] Creates an array of unique values that are included in all given arrays using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) @@ -1130,7 +1130,7 @@ _.intersection([2, 1], [2, 3]);

_.intersectionBy([arrays], [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7528 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.intersectionby "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7592 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.intersectionby "See the npm package") [Ⓣ][1] This method is like `_.intersection` except that it accepts `iteratee` which is invoked for each element of each `arrays` to generate the criterion @@ -1164,7 +1164,7 @@ _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');

_.intersectionWith([arrays], [comparator])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7563 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.intersectionwith "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7627 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.intersectionwith "See the npm package") [Ⓣ][1] This method is like `_.intersection` except that it accepts `comparator` which is invoked to compare elements of `arrays`. The order and references @@ -1196,7 +1196,7 @@ _.intersectionWith(objects, others, _.isEqual);

_.join(array, [separator=','])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7591 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.join "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7655 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.join "See the npm package") [Ⓣ][1] Converts all elements in `array` into a string separated by `separator`. @@ -1222,7 +1222,7 @@ _.join(['a', 'b', 'c'], '~');

_.last(array)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7609 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.last "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7673 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.last "See the npm package") [Ⓣ][1] Gets the last element of `array`. @@ -1247,7 +1247,7 @@ _.last([1, 2, 3]);

_.lastIndexOf(array, value, [fromIndex=array.length-1])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7635 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.lastindexof "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7699 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.lastindexof "See the npm package") [Ⓣ][1] This method is like `_.indexOf` except that it iterates over elements of `array` from right to left. @@ -1279,7 +1279,7 @@ _.lastIndexOf([1, 2, 1, 2], 2, 2);

_.nth(array, [n=0])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7671 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.nth "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7735 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.nth "See the npm package") [Ⓣ][1] Gets the element at index `n` of `array`. If `n` is negative, the nth element from the end is returned. @@ -1311,7 +1311,7 @@ _.nth(array, -2);

_.pull(array, [values])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7698 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pull "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7762 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pull "See the npm package") [Ⓣ][1] Removes all given values from `array` using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) @@ -1346,7 +1346,7 @@ console.log(array);

_.pullAll(array, values)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7720 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pullall "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7784 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pullall "See the npm package") [Ⓣ][1] This method is like `_.pull` except that it accepts an array of values to remove.
@@ -1378,7 +1378,7 @@ console.log(array);

_.pullAllBy(array, values, [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7749 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pullallby "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7813 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pullallby "See the npm package") [Ⓣ][1] This method is like `_.pullAll` except that it accepts `iteratee` which is invoked for each element of `array` and `values` to generate the criterion @@ -1413,7 +1413,7 @@ console.log(array);

_.pullAllWith(array, values, [comparator])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7778 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pullallwith "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7842 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pullallwith "See the npm package") [Ⓣ][1] This method is like `_.pullAll` except that it accepts `comparator` which is invoked to compare elements of `array` to `values`. The comparator is @@ -1448,7 +1448,7 @@ console.log(array);

_.pullAt(array, [indexes])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7808 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pullat "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7872 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pullat "See the npm package") [Ⓣ][1] Removes elements from `array` corresponding to `indexes` and returns an array of removed elements. @@ -1484,7 +1484,7 @@ console.log(pulled);

_.remove(array, [predicate=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7847 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.remove "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7911 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.remove "See the npm package") [Ⓣ][1] Removes all elements from `array` that `predicate` returns truthy for and returns an array of the removed elements. The predicate is invoked @@ -1524,7 +1524,7 @@ console.log(evens);

_.reverse(array)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7891 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.reverse "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7955 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.reverse "See the npm package") [Ⓣ][1] Reverses `array` so that the first element becomes the last, the second element becomes the second to last, and so on. @@ -1559,7 +1559,7 @@ console.log(array);

_.slice(array, [start=0], [end=array.length])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7911 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.slice "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L7975 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.slice "See the npm package") [Ⓣ][1] Creates a slice of `array` from `start` up to, but not including, `end`.
@@ -1586,7 +1586,7 @@ returned.

_.sortedIndex(array, value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7944 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sortedindex "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8008 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sortedindex "See the npm package") [Ⓣ][1] Uses a binary search to determine the lowest index at which `value` should be inserted into `array` in order to maintain its sort order. @@ -1613,7 +1613,7 @@ _.sortedIndex([30, 50], 40);

_.sortedIndexBy(array, value, [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7973 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sortedindexby "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8037 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sortedindexby "See the npm package") [Ⓣ][1] This method is like `_.sortedIndex` except that it accepts `iteratee` which is invoked for `value` and each element of `array` to compute their @@ -1648,7 +1648,7 @@ _.sortedIndexBy(objects, { 'x': 4 }, 'x');

_.sortedIndexOf(array, value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L7993 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sortedindexof "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8057 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sortedindexof "See the npm package") [Ⓣ][1] This method is like `_.indexOf` except that it performs a binary search on a sorted `array`. @@ -1675,7 +1675,7 @@ _.sortedIndexOf([4, 5, 5, 5, 6], 5);

_.sortedLastIndex(array, value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8022 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sortedlastindex "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8086 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sortedlastindex "See the npm package") [Ⓣ][1] This method is like `_.sortedIndex` except that it returns the highest index at which `value` should be inserted into `array` in order to @@ -1703,7 +1703,7 @@ _.sortedLastIndex([4, 5, 5, 5, 6], 5);

_.sortedLastIndexBy(array, value, [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8051 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sortedlastindexby "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8115 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sortedlastindexby "See the npm package") [Ⓣ][1] This method is like `_.sortedLastIndex` except that it accepts `iteratee` which is invoked for `value` and each element of `array` to compute their @@ -1738,7 +1738,7 @@ _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');

_.sortedLastIndexOf(array, value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8071 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sortedlastindexof "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8135 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sortedlastindexof "See the npm package") [Ⓣ][1] This method is like `_.lastIndexOf` except that it performs a binary search on a sorted `array`. @@ -1765,7 +1765,7 @@ _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);

_.sortedUniq(array)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8097 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sorteduniq "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8161 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sorteduniq "See the npm package") [Ⓣ][1] This method is like `_.uniq` except that it's designed and optimized for sorted arrays. @@ -1791,7 +1791,7 @@ _.sortedUniq([1, 1, 2]);

_.sortedUniqBy(array, [iteratee])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8119 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sorteduniqby "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8183 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sorteduniqby "See the npm package") [Ⓣ][1] This method is like `_.uniqBy` except that it's designed and optimized for sorted arrays. @@ -1818,7 +1818,7 @@ _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);

_.tail(array)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8139 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tail "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8203 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tail "See the npm package") [Ⓣ][1] Gets all but the first element of `array`. @@ -1843,7 +1843,7 @@ _.tail([1, 2, 3]);

_.take(array, [n=1])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8169 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.take "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8233 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.take "See the npm package") [Ⓣ][1] Creates a slice of `array` with `n` elements taken from the beginning. @@ -1878,7 +1878,7 @@ _.take([1, 2, 3], 0);

_.takeRight(array, [n=1])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8202 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.takeright "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8266 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.takeright "See the npm package") [Ⓣ][1] Creates a slice of `array` with `n` elements taken from the end. @@ -1913,7 +1913,7 @@ _.takeRight([1, 2, 3], 0);

_.takeRightWhile(array, [predicate=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8247 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.takerightwhile "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8311 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.takerightwhile "See the npm package") [Ⓣ][1] Creates a slice of `array` with elements taken from the end. Elements are taken until `predicate` returns falsey. The predicate is invoked with @@ -1959,7 +1959,7 @@ _.takeRightWhile(users, 'active');

_.takeWhile(array, [predicate=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8288 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.takewhile "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8352 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.takewhile "See the npm package") [Ⓣ][1] Creates a slice of `array` with elements taken from the beginning. Elements are taken until `predicate` returns falsey. The predicate is invoked with @@ -2005,7 +2005,7 @@ _.takeWhile(users, 'active');

_.union([arrays])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8310 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.union "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8374 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.union "See the npm package") [Ⓣ][1] Creates an array of unique values, in order, from all given arrays using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) @@ -2032,7 +2032,7 @@ _.union([2], [1, 2]);

_.unionBy([arrays], [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8337 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.unionby "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8401 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.unionby "See the npm package") [Ⓣ][1] This method is like `_.union` except that it accepts `iteratee` which is invoked for each element of each `arrays` to generate the criterion by @@ -2066,7 +2066,7 @@ _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');

_.unionWith([arrays], [comparator])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8366 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.unionwith "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8430 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.unionwith "See the npm package") [Ⓣ][1] This method is like `_.union` except that it accepts `comparator` which is invoked to compare elements of `arrays`. Result values are chosen from @@ -2098,7 +2098,7 @@ _.unionWith(objects, others, _.isEqual);

_.uniq(array)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8390 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.uniq "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8454 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.uniq "See the npm package") [Ⓣ][1] Creates a duplicate-free version of an array, using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) @@ -2127,7 +2127,7 @@ _.uniq([2, 1, 2]);

_.uniqBy(array, [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8417 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.uniqby "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8481 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.uniqby "See the npm package") [Ⓣ][1] This method is like `_.uniq` except that it accepts `iteratee` which is invoked for each element in `array` to generate the criterion by which @@ -2161,7 +2161,7 @@ _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');

_.uniqWith(array, [comparator])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8441 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.uniqwith "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8505 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.uniqwith "See the npm package") [Ⓣ][1] This method is like `_.uniq` except that it accepts `comparator` which is invoked to compare elements of `array`. The order of result values is @@ -2192,7 +2192,7 @@ _.uniqWith(objects, _.isEqual);

_.unzip(array)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8465 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.unzip "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8529 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.unzip "See the npm package") [Ⓣ][1] This method is like `_.zip` except that it accepts an array of grouped elements and creates an array regrouping the elements to their pre-zip @@ -2222,7 +2222,7 @@ _.unzip(zipped);

_.unzipWith(array, [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8502 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.unzipwith "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8566 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.unzipwith "See the npm package") [Ⓣ][1] This method is like `_.unzip` except that it accepts `iteratee` to specify how regrouped values should be combined. The iteratee is invoked with the @@ -2253,7 +2253,7 @@ _.unzipWith(zipped, _.add);

_.without(array, [values])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8535 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.without "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8599 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.without "See the npm package") [Ⓣ][1] Creates an array excluding all given values using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) @@ -2284,7 +2284,7 @@ _.without([2, 1, 2, 3], 1, 2);

_.xor([arrays])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8559 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.xor "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8623 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.xor "See the npm package") [Ⓣ][1] Creates an array of unique values that is the [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) @@ -2312,7 +2312,7 @@ _.xor([2, 1], [2, 3]);

_.xorBy([arrays], [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8586 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.xorby "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8650 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.xorby "See the npm package") [Ⓣ][1] This method is like `_.xor` except that it accepts `iteratee` which is invoked for each element of each `arrays` to generate the criterion by @@ -2346,7 +2346,7 @@ _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');

_.xorWith([arrays], [comparator])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8615 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.xorwith "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8679 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.xorwith "See the npm package") [Ⓣ][1] This method is like `_.xor` except that it accepts `comparator` which is invoked to compare elements of `arrays`. The order of result values is @@ -2378,7 +2378,7 @@ _.xorWith(objects, others, _.isEqual);

_.zip([arrays])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8637 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.zip "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8701 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.zip "See the npm package") [Ⓣ][1] Creates an array of grouped elements, the first of which contains the first elements of the given arrays, the second of which contains the @@ -2405,7 +2405,7 @@ _.zip(['a', 'b'], [1, 2], [true, false]);

_.zipObject([props=[]], [values=[]])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8655 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.zipobject "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8719 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.zipobject "See the npm package") [Ⓣ][1] This method is like `_.fromPairs` except that it accepts two arrays, one of property identifiers and one of corresponding values. @@ -2432,7 +2432,7 @@ _.zipObject(['a', 'b'], [1, 2]);

_.zipObjectDeep([props=[]], [values=[]])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8674 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.zipobjectdeep "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8738 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.zipobjectdeep "See the npm package") [Ⓣ][1] This method is like `_.zipObject` except that it supports property paths. @@ -2458,7 +2458,7 @@ _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);

_.zipWith([arrays], [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8698 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.zipwith "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8762 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.zipwith "See the npm package") [Ⓣ][1] This method is like `_.zip` except that it accepts `iteratee` to specify how grouped values should be combined. The iteratee is invoked with the @@ -2494,7 +2494,7 @@ _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {

_.countBy(collection, [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9077 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.countby "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9141 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.countby "See the npm package") [Ⓣ][1] Creates an object composed of keys generated from the results of running each element of `collection` thru `iteratee`. The corresponding value of @@ -2527,7 +2527,7 @@ _.countBy(['one', 'two', 'three'], 'length');

_.every(collection, [predicate=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9126 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.every "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9190 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.every "See the npm package") [Ⓣ][1] Checks if `predicate` returns truthy for **all** elements of `collection`. Iteration is stopped once `predicate` returns falsey. The predicate is @@ -2578,7 +2578,7 @@ _.every(users, 'active');

_.filter(collection, [predicate=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9171 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.filter "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9239 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.filter "See the npm package") [Ⓣ][1] Iterates over elements of `collection`, returning an array of all elements `predicate` returns truthy for. The predicate is invoked with three @@ -2618,6 +2618,10 @@ _.filter(users, ['active', false]); // The `_.property` iteratee shorthand. _.filter(users, 'active'); // => objects for ['barney'] + +// Combining several predicates using `_.overEvery` or `_.overSome`. +_.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]])); +// => objects for ['fred', 'barney'] ``` --- @@ -2626,7 +2630,7 @@ _.filter(users, 'active');

_.find(collection, [predicate=_.identity], [fromIndex=0])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9212 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.find "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9280 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.find "See the npm package") [Ⓣ][1] Iterates over elements of `collection`, returning the first element `predicate` returns truthy for. The predicate is invoked with three @@ -2673,7 +2677,7 @@ _.find(users, 'active');

_.findLast(collection, [predicate=_.identity], [fromIndex=collection.length-1])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9233 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.findlast "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9301 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.findlast "See the npm package") [Ⓣ][1] This method is like `_.find` except that it iterates over elements of `collection` from right to left. @@ -2703,7 +2707,7 @@ _.findLast([1, 2, 3, 4], function(n) {

_.flatMap(collection, [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9256 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flatmap "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9324 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flatmap "See the npm package") [Ⓣ][1] Creates a flattened array of values by running each element in `collection` thru `iteratee` and flattening the mapped results. The iteratee is invoked @@ -2735,7 +2739,7 @@ _.flatMap([1, 2], duplicate);

_.flatMapDeep(collection, [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9280 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flatmapdeep "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9348 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flatmapdeep "See the npm package") [Ⓣ][1] This method is like `_.flatMap` except that it recursively flattens the mapped results. @@ -2766,7 +2770,7 @@ _.flatMapDeep([1, 2], duplicate);

_.flatMapDepth(collection, [iteratee=_.identity], [depth=1])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9305 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flatmapdepth "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9373 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flatmapdepth "See the npm package") [Ⓣ][1] This method is like `_.flatMap` except that it recursively flattens the mapped results up to `depth` times. @@ -2798,7 +2802,7 @@ _.flatMapDepth([1, 2], duplicate, 2);

_.forEach(collection, [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9340 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.foreach "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9408 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.foreach "See the npm package") [Ⓣ][1] Iterates over elements of `collection` and invokes `iteratee` for each element. The iteratee is invoked with three arguments: *(value, index|key, collection)*. @@ -2841,7 +2845,7 @@ _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {

_.forEachRight(collection, [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9365 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.foreachright "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9433 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.foreachright "See the npm package") [Ⓣ][1] This method is like `_.forEach` except that it iterates over elements of `collection` from right to left. @@ -2873,7 +2877,7 @@ _.forEachRight([1, 2], function(value) {

_.groupBy(collection, [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9393 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.groupby "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9461 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.groupby "See the npm package") [Ⓣ][1] Creates an object composed of keys generated from the results of running each element of `collection` thru `iteratee`. The order of grouped values @@ -2907,7 +2911,7 @@ _.groupBy(['one', 'two', 'three'], 'length');

_.includes(collection, value, [fromIndex=0])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9431 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.includes "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9499 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.includes "See the npm package") [Ⓣ][1] Checks if `value` is in `collection`. If `collection` is a string, it's checked for a substring of `value`, otherwise @@ -2947,7 +2951,7 @@ _.includes('abcd', 'bc');

_.invokeMap(collection, path, [args])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9467 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.invokemap "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9535 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.invokemap "See the npm package") [Ⓣ][1] Invokes the method at `path` of each element in `collection`, returning an array of the results of each invoked method. Any additional arguments @@ -2980,7 +2984,7 @@ _.invokeMap([123, 456], String.prototype.split, '');

_.keyBy(collection, [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9506 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.keyby "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9574 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.keyby "See the npm package") [Ⓣ][1] Creates an object composed of keys generated from the results of running each element of `collection` thru `iteratee`. The corresponding value of @@ -3019,7 +3023,7 @@ _.keyBy(array, 'dir');

_.map(collection, [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9552 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.map "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9620 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.map "See the npm package") [Ⓣ][1] Creates an array of values by running each element in `collection` thru `iteratee`. The iteratee is invoked with three arguments:
@@ -3074,7 +3078,7 @@ _.map(users, 'user');

_.orderBy(collection, [iteratees=[_.identity]], [orders])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9586 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.orderby "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9654 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.orderby "See the npm package") [Ⓣ][1] This method is like `_.sortBy` except that it allows specifying the sort orders of the iteratees to sort by. If `orders` is unspecified, all values @@ -3112,7 +3116,7 @@ _.orderBy(users, ['user', 'age'], ['asc', 'desc']);

_.partition(collection, [predicate=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9636 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.partition "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9704 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.partition "See the npm package") [Ⓣ][1] Creates an array of elements split into two groups, the first of which contains elements `predicate` returns truthy for, the second of which @@ -3159,7 +3163,7 @@ _.partition(users, 'active');

_.reduce(collection, [iteratee=_.identity], [accumulator])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9677 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.reduce "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9745 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.reduce "See the npm package") [Ⓣ][1] Reduces `collection` to a value which is the accumulated result of running each element in `collection` thru `iteratee`, where each successive @@ -3208,7 +3212,7 @@ _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {

_.reduceRight(collection, [iteratee=_.identity], [accumulator])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9706 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.reduceright "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9774 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.reduceright "See the npm package") [Ⓣ][1] This method is like `_.reduce` except that it iterates over elements of `collection` from right to left. @@ -3240,7 +3244,7 @@ _.reduceRight(array, function(flattened, other) {

_.reject(collection, [predicate=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9747 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.reject "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9815 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.reject "See the npm package") [Ⓣ][1] The opposite of `_.filter`; this method returns the elements of `collection` that `predicate` does **not** return truthy for. @@ -3284,7 +3288,7 @@ _.reject(users, 'active');

_.sample(collection)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9766 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sample "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9834 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sample "See the npm package") [Ⓣ][1] Gets a random element from `collection`. @@ -3309,7 +3313,7 @@ _.sample([1, 2, 3, 4]);

_.sampleSize(collection, [n=1])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9791 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.samplesize "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9859 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.samplesize "See the npm package") [Ⓣ][1] Gets `n` random elements at unique keys from `collection` up to the size of `collection`. @@ -3339,7 +3343,7 @@ _.sampleSize([1, 2, 3], 4);

_.shuffle(collection)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9816 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.shuffle "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9884 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.shuffle "See the npm package") [Ⓣ][1] Creates an array of shuffled values, using a version of the [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle). @@ -3365,7 +3369,7 @@ _.shuffle([1, 2, 3, 4]);

_.size(collection)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9842 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.size "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9910 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.size "See the npm package") [Ⓣ][1] Gets the size of `collection` by returning its length for array-like values or the number of own enumerable string keyed properties for objects. @@ -3397,7 +3401,7 @@ _.size('pebbles');

_.some(collection, [predicate=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9892 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.some "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9960 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.some "See the npm package") [Ⓣ][1] Checks if `predicate` returns truthy for **any** element of `collection`. Iteration is stopped once `predicate` returns truthy. The predicate is @@ -3442,7 +3446,7 @@ _.some(users, 'active');

_.sortBy(collection, [iteratees=[_.identity]])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9929 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sortby "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9997 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sortby "See the npm package") [Ⓣ][1] Creates an array of elements, sorted in ascending order by the results of running each element in a collection thru each iteratee. This method @@ -3464,15 +3468,15 @@ equal elements. The iteratees are invoked with one argument: *(value)*. var users = [ { 'user': 'fred', 'age': 48 }, { 'user': 'barney', 'age': 36 }, - { 'user': 'fred', 'age': 40 }, + { 'user': 'fred', 'age': 30 }, { 'user': 'barney', 'age': 34 } ]; _.sortBy(users, [function(o) { return o.user; }]); -// => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] +// => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]] _.sortBy(users, ['user', 'age']); -// => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]] +// => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]] ``` --- @@ -3487,7 +3491,7 @@ _.sortBy(users, ['user', 'age']);

_.now()

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9960 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.now "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L10028 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.now "See the npm package") [Ⓣ][1] Gets the timestamp of the number of milliseconds that have elapsed since the Unix epoch *(1 January `1970 00`:00:00 UTC)*. @@ -3518,7 +3522,7 @@ _.defer(function(stamp) {

_.after(n, func)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9990 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.after "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L10058 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.after "See the npm package") [Ⓣ][1] The opposite of `_.before`; this method creates a function that invokes `func` once it's called `n` or more times. @@ -3553,7 +3557,7 @@ _.forEach(saves, function(type) {

_.ary(func, [n=func.length])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L10019 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.ary "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L10087 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.ary "See the npm package") [Ⓣ][1] Creates a function that invokes `func`, with up to `n` arguments, ignoring any additional arguments. @@ -3580,7 +3584,7 @@ _.map(['6', '8', '10'], _.ary(parseInt, 1));

_.before(n, func)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L10042 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.before "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L10110 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.before "See the npm package") [Ⓣ][1] Creates a function that invokes `func`, with the `this` binding and arguments of the created function, while it's called less than `n` times. Subsequent @@ -3608,7 +3612,7 @@ jQuery(element).on('click', _.before(5, addContactToList));

_.bind(func, thisArg, [partials])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L10094 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.bind "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L10162 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.bind "See the npm package") [Ⓣ][1] Creates a function that invokes `func` with the `this` binding of `thisArg` and `partials` prepended to the arguments it receives. @@ -3656,7 +3660,7 @@ bound('hi');

_.bindKey(object, key, [partials])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L10148 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.bindkey "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L10216 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.bindkey "See the npm package") [Ⓣ][1] Creates a function that invokes the method at `object[key]` with `partials` prepended to the arguments it receives. @@ -3714,7 +3718,7 @@ bound('hi');

_.curry(func, [arity=func.length])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L10198 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.curry "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L10266 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.curry "See the npm package") [Ⓣ][1] Creates a function that accepts arguments of `func` and either invokes `func` returning its result, if at least `arity` number of arguments have @@ -3767,7 +3771,7 @@ curried(1)(_, 3)(2);

_.curryRight(func, [arity=func.length])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L10243 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.curryright "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L10311 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.curryright "See the npm package") [Ⓣ][1] This method is like `_.curry` except that arguments are applied to `func` in the manner of `_.partialRight` instead of `_.partial`. @@ -3817,7 +3821,7 @@ curried(3)(1, _)(2);

_.debounce(func, [wait=0], [options={}])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L10304 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.debounce "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L10372 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.debounce "See the npm package") [Ⓣ][1] Creates a debounced function that delays invoking `func` until after `wait` milliseconds have elapsed since the last time the debounced function was @@ -3882,7 +3886,7 @@ jQuery(window).on('popstate', debounced.cancel);

_.defer(func, [args])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L10447 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.defer "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L10515 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.defer "See the npm package") [Ⓣ][1] Defers invoking the `func` until the current call stack has cleared. Any additional arguments are provided to `func` when it's invoked. @@ -3911,7 +3915,7 @@ _.defer(function(text) {

_.delay(func, wait, [args])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L10470 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.delay "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L10538 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.delay "See the npm package") [Ⓣ][1] Invokes `func` after `wait` milliseconds. Any additional arguments are provided to `func` when it's invoked. @@ -3941,7 +3945,7 @@ _.delay(function(text) {

_.flip(func)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L10492 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flip "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L10560 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flip "See the npm package") [Ⓣ][1] Creates a function that invokes `func` with arguments reversed. @@ -3970,7 +3974,7 @@ flipped('a', 'b', 'c', 'd');

_.memoize(func, [resolver])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L10540 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.memoize "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L10608 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.memoize "See the npm package") [Ⓣ][1] Creates a function that memoizes the result of `func`. If `resolver` is provided, it determines the cache key for storing the result based on the @@ -4026,7 +4030,7 @@ _.memoize.Cache = WeakMap;

_.negate(predicate)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L10583 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.negate "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L10651 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.negate "See the npm package") [Ⓣ][1] Creates a function that negates the result of the predicate `func`. The `func` predicate is invoked with the `this` binding and arguments of the @@ -4057,7 +4061,7 @@ _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));

_.once(func)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L10617 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.once "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L10685 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.once "See the npm package") [Ⓣ][1] Creates a function that is restricted to invoking `func` once. Repeat calls to the function return the value of the first invocation. The `func` is @@ -4086,7 +4090,7 @@ initialize();

_.overArgs(func, [transforms=[_.identity]])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L10652 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.overargs "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L10720 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.overargs "See the npm package") [Ⓣ][1] Creates a function that invokes `func` with its arguments transformed. @@ -4127,7 +4131,7 @@ func(10, 5);

_.partial(func, [partials])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L10702 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.partial "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L10770 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.partial "See the npm package") [Ⓣ][1] Creates a function that invokes `func` with `partials` prepended to the arguments it receives. This method is like `_.bind` except it does **not** @@ -4173,7 +4177,7 @@ greetFred('hi');

_.partialRight(func, [partials])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L10739 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.partialright "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L10807 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.partialright "See the npm package") [Ⓣ][1] This method is like `_.partial` except that partially applied arguments are appended to the arguments it receives. @@ -4218,7 +4222,7 @@ sayHelloTo('fred');

_.rearg(func, indexes)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L10766 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.rearg "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L10834 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.rearg "See the npm package") [Ⓣ][1] Creates a function that invokes `func` with arguments arranged according to the specified `indexes` where the argument value at the first index is @@ -4251,7 +4255,7 @@ rearged('b', 'c', 'a')

_.rest(func, [start=func.length-1])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L10795 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.rest "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L10863 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.rest "See the npm package") [Ⓣ][1] Creates a function that invokes `func` with the `this` binding of the created function and arguments from `start` and beyond provided as @@ -4288,7 +4292,7 @@ say('hello', 'fred', 'barney', 'pebbles');

_.spread(func, [start=0])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L10837 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.spread "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L10905 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.spread "See the npm package") [Ⓣ][1] Creates a function that invokes `func` with the `this` binding of the create function and an array of arguments much like @@ -4334,7 +4338,7 @@ numbers.then(_.spread(function(x, y) {

_.throttle(func, [wait=0], [options={}])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L10897 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.throttle "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L10965 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.throttle "See the npm package") [Ⓣ][1] Creates a throttled function that only invokes `func` at most once per every `wait` milliseconds. The throttled function comes with a `cancel` @@ -4390,7 +4394,7 @@ jQuery(window).on('popstate', throttled.cancel);

_.unary(func)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L10930 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.unary "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L10998 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.unary "See the npm package") [Ⓣ][1] Creates a function that accepts up to one argument, ignoring any additional arguments. @@ -4416,7 +4420,7 @@ _.map(['6', '8', '10'], _.unary(parseInt));

_.wrap(value, [wrapper=identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L10956 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.wrap "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11024 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.wrap "See the npm package") [Ⓣ][1] Creates a function that provides `value` to `wrapper` as its first argument. Any additional arguments provided to the function are appended @@ -4455,7 +4459,7 @@ p('fred, barney, & pebbles');

_.castArray(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L10995 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.castarray "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11063 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.castarray "See the npm package") [Ⓣ][1] Casts `value` as an array if it's not one. @@ -4499,7 +4503,7 @@ console.log(_.castArray(array) === array);

_.clone(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11029 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.clone "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11097 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.clone "See the npm package") [Ⓣ][1] Creates a shallow clone of `value`.
@@ -4536,7 +4540,7 @@ console.log(shallow[0] === objects[0]);

_.cloneDeep(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11087 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.clonedeep "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11155 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.clonedeep "See the npm package") [Ⓣ][1] This method is like `_.clone` except that it recursively clones `value`. @@ -4564,7 +4568,7 @@ console.log(deep[0] === objects[0]);

_.cloneDeepWith(value, [customizer])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11119 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.clonedeepwith "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11187 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.clonedeepwith "See the npm package") [Ⓣ][1] This method is like `_.cloneWith` except that it recursively clones `value`. @@ -4602,7 +4606,7 @@ console.log(el.childNodes.length);

_.cloneWith(value, [customizer])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11064 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.clonewith "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11132 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.clonewith "See the npm package") [Ⓣ][1] This method is like `_.clone` except that it accepts `customizer` which is invoked to produce the cloned value. If `customizer` returns `undefined`, @@ -4643,7 +4647,7 @@ console.log(el.childNodes.length);

_.conformsTo(object, source)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11148 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.conformsto "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11216 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.conformsto "See the npm package") [Ⓣ][1] Checks if `object` conforms to `source` by invoking the predicate properties of `source` with the corresponding property values of `object`. @@ -4679,7 +4683,7 @@ _.conformsTo(object, { 'b': function(n) { return n > 2; } });

_.eq(value, other)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11184 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.eq "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11252 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.eq "See the npm package") [Ⓣ][1] Performs a [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) @@ -4722,7 +4726,7 @@ _.eq(NaN, NaN);

_.gt(value, other)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11211 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.gt "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11279 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.gt "See the npm package") [Ⓣ][1] Checks if `value` is greater than `other`. @@ -4754,7 +4758,7 @@ _.gt(1, 3);

_.gte(value, other)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11236 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.gte "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11304 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.gte "See the npm package") [Ⓣ][1] Checks if `value` is greater than or equal to `other`. @@ -4786,7 +4790,7 @@ _.gte(1, 3);

_.isArguments(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11258 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isarguments "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11326 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isarguments "See the npm package") [Ⓣ][1] Checks if `value` is likely an `arguments` object. @@ -4814,7 +4818,7 @@ _.isArguments([1, 2, 3]);

_.isArray(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11286 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isarray "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11354 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isarray "See the npm package") [Ⓣ][1] Checks if `value` is classified as an `Array` object. @@ -4848,7 +4852,7 @@ _.isArray(_.noop);

_.isArrayBuffer(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11305 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isarraybuffer "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11373 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isarraybuffer "See the npm package") [Ⓣ][1] Checks if `value` is classified as an `ArrayBuffer` object. @@ -4876,7 +4880,7 @@ _.isArrayBuffer(new Array(2));

_.isArrayLike(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11332 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isarraylike "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11400 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isarraylike "See the npm package") [Ⓣ][1] Checks if `value` is array-like. A value is considered array-like if it's not a function and has a `value.length` that's an integer greater than or @@ -4912,7 +4916,7 @@ _.isArrayLike(_.noop);

_.isArrayLikeObject(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11361 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isarraylikeobject "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11429 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isarraylikeobject "See the npm package") [Ⓣ][1] This method is like `_.isArrayLike` except that it also checks if `value` is an object. @@ -4947,7 +4951,7 @@ _.isArrayLikeObject(_.noop);

_.isBoolean(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11382 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isboolean "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11450 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isboolean "See the npm package") [Ⓣ][1] Checks if `value` is classified as a boolean primitive or object. @@ -4975,7 +4979,7 @@ _.isBoolean(null);

_.isBuffer(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11404 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isbuffer "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11472 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isbuffer "See the npm package") [Ⓣ][1] Checks if `value` is a buffer. @@ -5003,7 +5007,7 @@ _.isBuffer(new Uint8Array(2));

_.isDate(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11423 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isdate "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11491 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isdate "See the npm package") [Ⓣ][1] Checks if `value` is classified as a `Date` object. @@ -5031,7 +5035,7 @@ _.isDate('Mon April 23 2012');

_.isElement(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11442 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.iselement "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11510 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.iselement "See the npm package") [Ⓣ][1] Checks if `value` is likely a DOM element. @@ -5059,7 +5063,7 @@ _.isElement('');

_.isEmpty(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11479 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isempty "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11547 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isempty "See the npm package") [Ⓣ][1] Checks if `value` is an empty object, collection, map, or set.
@@ -5105,7 +5109,7 @@ _.isEmpty({ 'a': 1 });

_.isEqual(value, other)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11531 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isequal "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11599 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isequal "See the npm package") [Ⓣ][1] Performs a deep comparison between two values to determine if they are equivalent. @@ -5145,7 +5149,7 @@ object === other;

_.isEqualWith(value, other, [customizer])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11567 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isequalwith "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11635 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isequalwith "See the npm package") [Ⓣ][1] This method is like `_.isEqual` except that it accepts `customizer` which is invoked to compare values. If `customizer` returns `undefined`, comparisons @@ -5188,7 +5192,7 @@ _.isEqualWith(array, other, customizer);

_.isError(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11591 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.iserror "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11659 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.iserror "See the npm package") [Ⓣ][1] Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, `SyntaxError`, `TypeError`, or `URIError` object. @@ -5217,7 +5221,7 @@ _.isError(Error);

_.isFinite(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11626 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isfinite "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11694 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isfinite "See the npm package") [Ⓣ][1] Checks if `value` is a finite primitive number.
@@ -5255,7 +5259,7 @@ _.isFinite('3');

_.isFunction(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11647 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isfunction "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11715 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isfunction "See the npm package") [Ⓣ][1] Checks if `value` is classified as a `Function` object. @@ -5283,7 +5287,7 @@ _.isFunction(/abc/);

_.isInteger(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11683 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isinteger "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11751 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isinteger "See the npm package") [Ⓣ][1] Checks if `value` is an integer.
@@ -5321,7 +5325,7 @@ _.isInteger('3');

_.isLength(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11713 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.islength "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11781 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.islength "See the npm package") [Ⓣ][1] Checks if `value` is a valid array-like length.
@@ -5359,7 +5363,7 @@ _.isLength('3');

_.isMap(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11793 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.ismap "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11861 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.ismap "See the npm package") [Ⓣ][1] Checks if `value` is classified as a `Map` object. @@ -5387,7 +5391,7 @@ _.isMap(new WeakMap);

_.isMatch(object, source)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11823 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.ismatch "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11891 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.ismatch "See the npm package") [Ⓣ][1] Performs a partial deep comparison between `object` and `source` to determine if `object` contains equivalent property values. @@ -5428,7 +5432,7 @@ _.isMatch(object, { 'b': 1 });

_.isMatchWith(object, source, [customizer])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11859 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.ismatchwith "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11927 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.ismatchwith "See the npm package") [Ⓣ][1] This method is like `_.isMatch` except that it accepts `customizer` which is invoked to compare values. If `customizer` returns `undefined`, comparisons @@ -5471,7 +5475,7 @@ _.isMatchWith(object, source, customizer);

_.isNaN(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11892 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isnan "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11960 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isnan "See the npm package") [Ⓣ][1] Checks if `value` is `NaN`.
@@ -5511,7 +5515,7 @@ _.isNaN(undefined);

_.isNative(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11925 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isnative "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11993 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isnative "See the npm package") [Ⓣ][1] Checks if `value` is a pristine native function.
@@ -5548,7 +5552,7 @@ _.isNative(_);

_.isNil(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11973 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isnil "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12041 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isnil "See the npm package") [Ⓣ][1] Checks if `value` is `null` or `undefined`. @@ -5579,7 +5583,7 @@ _.isNil(NaN);

_.isNull(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11949 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isnull "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12017 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isnull "See the npm package") [Ⓣ][1] Checks if `value` is `null`. @@ -5607,7 +5611,7 @@ _.isNull(void 0);

_.isNumber(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12003 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isnumber "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12071 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isnumber "See the npm package") [Ⓣ][1] Checks if `value` is classified as a `Number` primitive or object.
@@ -5645,7 +5649,7 @@ _.isNumber('3');

_.isObject(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11743 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isobject "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11811 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isobject "See the npm package") [Ⓣ][1] Checks if `value` is the [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) @@ -5681,7 +5685,7 @@ _.isObject(null);

_.isObjectLike(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L11772 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isobjectlike "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L11840 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isobjectlike "See the npm package") [Ⓣ][1] Checks if `value` is object-like. A value is object-like if it's not `null` and has a `typeof` result of "object". @@ -5716,7 +5720,7 @@ _.isObjectLike(null);

_.isPlainObject(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12036 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isplainobject "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12104 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isplainobject "See the npm package") [Ⓣ][1] Checks if `value` is a plain object, that is, an object created by the `Object` constructor or one with a `[[Prototype]]` of `null`. @@ -5755,7 +5759,7 @@ _.isPlainObject(Object.create(null));

_.isRegExp(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12066 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isregexp "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12134 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isregexp "See the npm package") [Ⓣ][1] Checks if `value` is classified as a `RegExp` object. @@ -5783,7 +5787,7 @@ _.isRegExp('/abc/');

_.isSafeInteger(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12095 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.issafeinteger "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12163 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.issafeinteger "See the npm package") [Ⓣ][1] Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754 double precision number which isn't the result of a rounded unsafe integer. @@ -5822,7 +5826,7 @@ _.isSafeInteger('3');

_.isSet(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12116 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isset "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12184 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isset "See the npm package") [Ⓣ][1] Checks if `value` is classified as a `Set` object. @@ -5850,7 +5854,7 @@ _.isSet(new WeakSet);

_.isString(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12135 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isstring "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12203 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isstring "See the npm package") [Ⓣ][1] Checks if `value` is classified as a `String` primitive or object. @@ -5878,7 +5882,7 @@ _.isString(1);

_.isSymbol(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12157 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.issymbol "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12225 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.issymbol "See the npm package") [Ⓣ][1] Checks if `value` is classified as a `Symbol` primitive or object. @@ -5906,7 +5910,7 @@ _.isSymbol('abc');

_.isTypedArray(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12179 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.istypedarray "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12247 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.istypedarray "See the npm package") [Ⓣ][1] Checks if `value` is classified as a typed array. @@ -5934,7 +5938,7 @@ _.isTypedArray([]);

_.isUndefined(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12198 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isundefined "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12266 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isundefined "See the npm package") [Ⓣ][1] Checks if `value` is `undefined`. @@ -5962,7 +5966,7 @@ _.isUndefined(null);

_.isWeakMap(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12219 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isweakmap "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12287 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isweakmap "See the npm package") [Ⓣ][1] Checks if `value` is classified as a `WeakMap` object. @@ -5990,7 +5994,7 @@ _.isWeakMap(new Map);

_.isWeakSet(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12240 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isweakset "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12308 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isweakset "See the npm package") [Ⓣ][1] Checks if `value` is classified as a `WeakSet` object. @@ -6018,7 +6022,7 @@ _.isWeakSet(new Set);

_.lt(value, other)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12267 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.lt "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12335 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.lt "See the npm package") [Ⓣ][1] Checks if `value` is less than `other`. @@ -6050,7 +6054,7 @@ _.lt(3, 1);

_.lte(value, other)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12292 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.lte "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12360 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.lte "See the npm package") [Ⓣ][1] Checks if `value` is less than or equal to `other`. @@ -6082,7 +6086,7 @@ _.lte(3, 1);

_.toArray(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12319 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.toarray "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12387 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.toarray "See the npm package") [Ⓣ][1] Converts `value` to an array. @@ -6116,7 +6120,7 @@ _.toArray(null);

_.toFinite(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12358 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tofinite "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12426 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tofinite "See the npm package") [Ⓣ][1] Converts `value` to a finite number. @@ -6150,7 +6154,7 @@ _.toFinite('3.2');

_.toInteger(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12396 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tointeger "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12464 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tointeger "See the npm package") [Ⓣ][1] Converts `value` to an integer.
@@ -6188,7 +6192,7 @@ _.toInteger('3.2');

_.toLength(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12430 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tolength "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12498 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tolength "See the npm package") [Ⓣ][1] Converts `value` to an integer suitable for use as the length of an array-like object. @@ -6227,7 +6231,7 @@ _.toLength('3.2');

_.toNumber(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12457 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tonumber "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12525 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tonumber "See the npm package") [Ⓣ][1] Converts `value` to a number. @@ -6261,7 +6265,7 @@ _.toNumber('3.2');

_.toPlainObject(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12502 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.toplainobject "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12570 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.toplainobject "See the npm package") [Ⓣ][1] Converts `value` to a plain object flattening inherited enumerable string keyed properties of `value` to own properties of the plain object. @@ -6296,7 +6300,7 @@ _.assign({ 'a': 1 }, _.toPlainObject(new Foo));

_.toSafeInteger(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12530 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tosafeinteger "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12598 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tosafeinteger "See the npm package") [Ⓣ][1] Converts `value` to a safe integer. A safe integer can be compared and represented correctly. @@ -6331,7 +6335,7 @@ _.toSafeInteger('3.2');

_.toString(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12557 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tostring "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12625 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tostring "See the npm package") [Ⓣ][1] Converts `value` to a string. An empty string is returned for `null` and `undefined` values. The sign of `-0` is preserved. @@ -6369,7 +6373,7 @@ _.toString([1, 2, 3]);

_.add(augend, addend)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L16192 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.add "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L16289 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.add "See the npm package") [Ⓣ][1] Adds two numbers. @@ -6395,7 +6399,7 @@ _.add(6, 4);

_.ceil(number, [precision=0])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L16217 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.ceil "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L16314 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.ceil "See the npm package") [Ⓣ][1] Computes `number` rounded up to `precision`. @@ -6427,7 +6431,7 @@ _.ceil(6040, -2);

_.divide(dividend, divisor)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L16234 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.divide "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L16331 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.divide "See the npm package") [Ⓣ][1] Divide two numbers. @@ -6453,7 +6457,7 @@ _.divide(6, 4);

_.floor(number, [precision=0])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L16259 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.floor "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L16356 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.floor "See the npm package") [Ⓣ][1] Computes `number` rounded down to `precision`. @@ -6485,7 +6489,7 @@ _.floor(4060, -2);

_.max(array)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L16279 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.max "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L16376 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.max "See the npm package") [Ⓣ][1] Computes the maximum value of `array`. If `array` is empty or falsey, `undefined` is returned. @@ -6514,7 +6518,7 @@ _.max([]);

_.maxBy(array, [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L16308 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.maxby "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L16405 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.maxby "See the npm package") [Ⓣ][1] This method is like `_.max` except that it accepts `iteratee` which is invoked for each element in `array` to generate the criterion by which @@ -6548,7 +6552,7 @@ _.maxBy(objects, 'n');

_.mean(array)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L16328 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.mean "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L16425 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.mean "See the npm package") [Ⓣ][1] Computes the mean of the values in `array`. @@ -6573,7 +6577,7 @@ _.mean([4, 2, 8, 6]);

_.meanBy(array, [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L16355 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.meanby "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L16452 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.meanby "See the npm package") [Ⓣ][1] This method is like `_.mean` except that it accepts `iteratee` which is invoked for each element in `array` to generate the value to be averaged. @@ -6607,7 +6611,7 @@ _.meanBy(objects, 'n');

_.min(array)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L16377 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.min "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L16474 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.min "See the npm package") [Ⓣ][1] Computes the minimum value of `array`. If `array` is empty or falsey, `undefined` is returned. @@ -6636,7 +6640,7 @@ _.min([]);

_.minBy(array, [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L16406 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.minby "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L16503 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.minby "See the npm package") [Ⓣ][1] This method is like `_.min` except that it accepts `iteratee` which is invoked for each element in `array` to generate the criterion by which @@ -6670,7 +6674,7 @@ _.minBy(objects, 'n');

_.multiply(multiplier, multiplicand)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L16427 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.multiply "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L16524 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.multiply "See the npm package") [Ⓣ][1] Multiply two numbers. @@ -6696,7 +6700,7 @@ _.multiply(6, 4);

_.round(number, [precision=0])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L16452 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.round "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L16549 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.round "See the npm package") [Ⓣ][1] Computes `number` rounded to `precision`. @@ -6728,7 +6732,7 @@ _.round(4060, -2);

_.subtract(minuend, subtrahend)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L16469 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.subtract "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L16566 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.subtract "See the npm package") [Ⓣ][1] Subtract two numbers. @@ -6754,7 +6758,7 @@ _.subtract(6, 4);

_.sum(array)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L16487 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sum "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L16584 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sum "See the npm package") [Ⓣ][1] Computes the sum of the values in `array`. @@ -6779,7 +6783,7 @@ _.sum([4, 2, 8, 6]);

_.sumBy(array, [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L16516 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sumby "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L16613 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sumby "See the npm package") [Ⓣ][1] This method is like `_.sum` except that it accepts `iteratee` which is invoked for each element in `array` to generate the value to be summed. @@ -6819,7 +6823,7 @@ _.sumBy(objects, 'n');

_.clamp(number, [lower], upper)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13981 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.clamp "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L14049 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.clamp "See the npm package") [Ⓣ][1] Clamps `number` within the inclusive `lower` and `upper` bounds. @@ -6849,7 +6853,7 @@ _.clamp(10, -5, 5);

_.inRange(number, [start=0], end)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L14035 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.inrange "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L14103 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.inrange "See the npm package") [Ⓣ][1] Checks if `n` is between `start` and up to, but not including, `end`. If `end` is not specified, it's set to `start` with `start` then set to `0`. @@ -6897,7 +6901,7 @@ _.inRange(-3, -2, -6);

_.random([lower=0], [upper=1], [floating])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L14078 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.random "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L14146 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.random "See the npm package") [Ⓣ][1] Produces a random number between the inclusive `lower` and `upper` bounds. If only one argument is provided a number between `0` and the given number @@ -6946,7 +6950,7 @@ _.random(1.2, 5.2);

_.assign(object, [sources])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12595 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.assign "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12663 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.assign "See the npm package") [Ⓣ][1] Assigns own enumerable string keyed properties of source objects to the destination object. Source objects are applied from left to right. @@ -6989,7 +6993,7 @@ _.assign({ 'a': 0 }, new Foo, new Bar);

_.assignIn(object, [sources])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12638 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.assignin "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12706 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.assignin "See the npm package") [Ⓣ][1] This method is like `_.assign` except that it iterates over own and inherited source properties. @@ -7033,7 +7037,7 @@ _.assignIn({ 'a': 0 }, new Foo, new Bar);

_.assignInWith(object, sources, [customizer])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12671 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.assigninwith "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12739 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.assigninwith "See the npm package") [Ⓣ][1] This method is like `_.assignIn` except that it accepts `customizer` which is invoked to produce the assigned values. If `customizer` returns @@ -7075,7 +7079,7 @@ defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });

_.assignWith(object, sources, [customizer])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12703 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.assignwith "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12771 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.assignwith "See the npm package") [Ⓣ][1] This method is like `_.assign` except that it accepts `customizer` which is invoked to produce the assigned values. If `customizer` returns @@ -7114,7 +7118,7 @@ defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });

_.at(object, [paths])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12724 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.at "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12792 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.at "See the npm package") [Ⓣ][1] Creates an array of values corresponding to `paths` of `object`. @@ -7142,7 +7146,7 @@ _.at(object, ['a[0].b.c', 'a[1]']);

_.create(prototype, [properties])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12760 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.create "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12828 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.create "See the npm package") [Ⓣ][1] Creates an object that inherits from the `prototype` object. If a `properties` object is given, its own enumerable string keyed properties @@ -7187,7 +7191,7 @@ circle instanceof Shape;

_.defaults(object, [sources])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12786 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.defaults "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12854 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.defaults "See the npm package") [Ⓣ][1] Assigns own and inherited enumerable string keyed properties of source objects to the destination object for all destination properties that @@ -7219,7 +7223,7 @@ _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });

_.defaultsDeep(object, [sources])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12836 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.defaultsdeep "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12904 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.defaultsdeep "See the npm package") [Ⓣ][1] This method is like `_.defaults` except that it recursively assigns default properties. @@ -7249,7 +7253,7 @@ _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });

_.findKey(object, [predicate=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12876 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.findkey "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12944 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.findkey "See the npm package") [Ⓣ][1] This method is like `_.find` except that it returns the key of the first element `predicate` returns truthy for instead of the element itself. @@ -7294,7 +7298,7 @@ _.findKey(users, 'active');

_.findLastKey(object, [predicate=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12915 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.findlastkey "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L12983 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.findlastkey "See the npm package") [Ⓣ][1] This method is like `_.findKey` except that it iterates over elements of a collection in the opposite order. @@ -7339,7 +7343,7 @@ _.findLastKey(users, 'active');

_.forIn(object, [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12947 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.forin "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13015 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.forin "See the npm package") [Ⓣ][1] Iterates over own and inherited enumerable string keyed properties of an object and invokes `iteratee` for each property. The iteratee is invoked @@ -7377,7 +7381,7 @@ _.forIn(new Foo, function(value, key) {

_.forInRight(object, [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L12979 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.forinright "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13047 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.forinright "See the npm package") [Ⓣ][1] This method is like `_.forIn` except that it iterates over properties of `object` in the opposite order. @@ -7413,7 +7417,7 @@ _.forInRight(new Foo, function(value, key) {

_.forOwn(object, [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13013 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.forown "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13081 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.forown "See the npm package") [Ⓣ][1] Iterates over own enumerable string keyed properties of an object and invokes `iteratee` for each property. The iteratee is invoked with three @@ -7451,7 +7455,7 @@ _.forOwn(new Foo, function(value, key) {

_.forOwnRight(object, [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13043 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.forownright "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13111 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.forownright "See the npm package") [Ⓣ][1] This method is like `_.forOwn` except that it iterates over properties of `object` in the opposite order. @@ -7487,7 +7491,7 @@ _.forOwnRight(new Foo, function(value, key) {

_.functions(object)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13070 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.functions "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13138 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.functions "See the npm package") [Ⓣ][1] Creates an array of function property names from own enumerable properties of `object`. @@ -7520,7 +7524,7 @@ _.functions(new Foo);

_.functionsIn(object)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13097 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.functionsin "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13165 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.functionsin "See the npm package") [Ⓣ][1] Creates an array of function property names from own and inherited enumerable properties of `object`. @@ -7553,7 +7557,7 @@ _.functionsIn(new Foo);

_.get(object, path, [defaultValue])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13126 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.get "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13194 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.get "See the npm package") [Ⓣ][1] Gets the value at `path` of `object`. If the resolved value is `undefined`, the `defaultValue` is returned in its place. @@ -7589,7 +7593,7 @@ _.get(object, 'a.b.c', 'default');

_.has(object, path)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13158 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.has "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13226 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.has "See the npm package") [Ⓣ][1] Checks if `path` is a direct property of `object`. @@ -7627,7 +7631,7 @@ _.has(other, 'a');

_.hasIn(object, path)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13188 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.hasin "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13256 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.hasin "See the npm package") [Ⓣ][1] Checks if `path` is a direct or inherited property of `object`. @@ -7664,7 +7668,7 @@ _.hasIn(object, 'b');

_.invert(object)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13210 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.invert "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13278 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.invert "See the npm package") [Ⓣ][1] Creates an object composed of the inverted keys and values of `object`. If `object` contains duplicate values, subsequent values overwrite @@ -7693,7 +7697,7 @@ _.invert(object);

_.invertBy(object, [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13245 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.invertby "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13313 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.invertby "See the npm package") [Ⓣ][1] This method is like `_.invert` except that the inverted object is generated from the results of running each element of `object` thru `iteratee`. The @@ -7730,7 +7734,7 @@ _.invertBy(object, function(value) {

_.invoke(object, path, [args])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13276 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.invoke "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13344 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.invoke "See the npm package") [Ⓣ][1] Invokes the method at `path` of `object`. @@ -7759,7 +7763,7 @@ _.invoke(object, 'a[0].b.c.slice', 1, 3);

_.keys(object)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13306 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.keys "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13374 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.keys "See the npm package") [Ⓣ][1] Creates an array of the own enumerable property names of `object`.
@@ -7799,7 +7803,7 @@ _.keys('hi');

_.keysIn(object)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13333 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.keysin "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13401 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.keysin "See the npm package") [Ⓣ][1] Creates an array of the own and inherited enumerable property names of `object`.
@@ -7834,7 +7838,7 @@ _.keysIn(new Foo);

_.mapKeys(object, [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13358 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.mapkeys "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13426 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.mapkeys "See the npm package") [Ⓣ][1] The opposite of `_.mapValues`; this method creates an object with the same values as `object` and keys generated by running each own enumerable @@ -7865,7 +7869,7 @@ _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {

_.mapValues(object, [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13396 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.mapvalues "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13464 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.mapvalues "See the npm package") [Ⓣ][1] Creates an object with the same keys as `object` and values generated by running each own enumerable string keyed property of `object` thru @@ -7903,7 +7907,7 @@ _.mapValues(users, 'age');

_.merge(object, [sources])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13437 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.merge "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13505 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.merge "See the npm package") [Ⓣ][1] This method is like `_.assign` except that it recursively merges own and inherited enumerable string keyed properties of source objects into the @@ -7946,7 +7950,7 @@ _.merge(object, other);

_.mergeWith(object, sources, customizer)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13472 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.mergewith "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13540 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.mergewith "See the npm package") [Ⓣ][1] This method is like `_.merge` except that it accepts `customizer` which is invoked to produce the merged values of the destination and source @@ -7989,7 +7993,7 @@ _.mergeWith(object, other, customizer);

_.omit(object, [paths])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13496 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.omit "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13564 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.omit "See the npm package") [Ⓣ][1] The opposite of `_.pick`; this method creates an object composed of the own and inherited enumerable property paths of `object` that are not omitted. @@ -8021,7 +8025,7 @@ _.omit(object, ['a', 'c']);

_.omitBy(object, [predicate=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13538 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.omitby "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13606 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.omitby "See the npm package") [Ⓣ][1] The opposite of `_.pickBy`; this method creates an object composed of the own and inherited enumerable string keyed properties of `object` that @@ -8052,7 +8056,7 @@ _.omitBy(object, _.isNumber);

_.pick(object, [paths])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13559 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pick "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13627 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pick "See the npm package") [Ⓣ][1] Creates an object composed of the picked `object` properties. @@ -8080,7 +8084,7 @@ _.pick(object, ['a', 'c']);

_.pickBy(object, [predicate=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13581 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pickby "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13649 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pickby "See the npm package") [Ⓣ][1] Creates an object composed of the `object` properties `predicate` returns truthy for. The predicate is invoked with two arguments: *(value, key)*. @@ -8109,7 +8113,7 @@ _.pickBy(object, _.isNumber);

_.result(object, path, [defaultValue])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13623 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.result "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13691 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.result "See the npm package") [Ⓣ][1] This method is like `_.get` except that if the resolved value is a function it's invoked with the `this` binding of its parent object and @@ -8149,7 +8153,7 @@ _.result(object, 'a[0].b.c3', _.constant('default'));

_.set(object, path, value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13673 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.set "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13741 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.set "See the npm package") [Ⓣ][1] Sets the value at `path` of `object`. If a portion of `path` doesn't exist, it's created. Arrays are created for missing index properties while objects @@ -8189,7 +8193,7 @@ console.log(object.x[0].y.z);

_.setWith(object, path, value, [customizer])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13701 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.setwith "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13769 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.setwith "See the npm package") [Ⓣ][1] This method is like `_.set` except that it accepts `customizer` which is invoked to produce the objects of `path`. If `customizer` returns `undefined` @@ -8225,7 +8229,7 @@ _.setWith(object, '[0][1]', 'a', Object);

_.toPairs(object)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13730 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.topairs "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13798 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.topairs "See the npm package") [Ⓣ][1] Creates an array of own enumerable string keyed-value pairs for `object` which can be consumed by `_.fromPairs`. If `object` is a map or set, its @@ -8262,7 +8266,7 @@ _.toPairs(new Foo);

_.toPairsIn(object)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13756 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.topairsin "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13824 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.topairsin "See the npm package") [Ⓣ][1] Creates an array of own and inherited enumerable string keyed-value pairs for `object` which can be consumed by `_.fromPairs`. If `object` is a map @@ -8299,7 +8303,7 @@ _.toPairsIn(new Foo);

_.transform(object, [iteratee=_.identity], [accumulator])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13788 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.transform "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13856 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.transform "See the npm package") [Ⓣ][1] An alternative to `_.reduce`; this method transforms `object` to a new `accumulator` object which is the result of running each of its own @@ -8340,7 +8344,7 @@ _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {

_.unset(object, path)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13838 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.unset "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13906 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.unset "See the npm package") [Ⓣ][1] Removes the property at `path` of `object`.
@@ -8379,7 +8383,7 @@ console.log(object);

_.update(object, path, updater)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13869 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.update "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13937 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.update "See the npm package") [Ⓣ][1] This method is like `_.set` except that accepts `updater` to produce the value to set. Use `_.updateWith` to customize `path` creation. The `updater` @@ -8418,7 +8422,7 @@ console.log(object.x[0].y.z);

_.updateWith(object, path, updater, [customizer])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13897 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.updatewith "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13965 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.updatewith "See the npm package") [Ⓣ][1] This method is like `_.update` except that it accepts `customizer` which is invoked to produce the objects of `path`. If `customizer` returns `undefined` @@ -8454,7 +8458,7 @@ _.updateWith(object, '[0][1]', _.constant('a'), Object);

_.values(object)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13928 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.values "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L13996 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.values "See the npm package") [Ⓣ][1] Creates an array of the own enumerable string keyed property values of `object`.
@@ -8492,7 +8496,7 @@ _.values('hi');

_.valuesIn(object)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L13956 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.valuesin "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L14024 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.valuesin "See the npm package") [Ⓣ][1] Creates an array of the own and inherited enumerable string keyed property values of `object`. @@ -8534,7 +8538,7 @@ _.valuesIn(new Foo);

_(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L1648 "View in source") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L1690 "View in source") [Ⓣ][1] Creates a `lodash` object which wraps `value` to enable implicit method chain sequences. Methods that operate on and return arrays, collections, @@ -8670,7 +8674,7 @@ _.isArray(squares.value());

_.chain(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8737 "View in source") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8801 "View in source") [Ⓣ][1] Creates a `lodash` wrapper instance that wraps `value` with explicit method chain sequences enabled. The result of such sequences must be unwrapped @@ -8710,7 +8714,7 @@ var youngest = _

_.tap(value, interceptor)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8766 "View in source") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8830 "View in source") [Ⓣ][1] This method invokes `interceptor` and returns `value`. The interceptor is invoked with one argument; *(value)*. The purpose of this method is to @@ -8744,7 +8748,7 @@ _([1, 2, 3])

_.thru(value, interceptor)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8794 "View in source") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8858 "View in source") [Ⓣ][1] This method is like `_.tap` except that it returns the result of `interceptor`. The purpose of this method is to "pass thru" values replacing intermediate @@ -8778,7 +8782,7 @@ _(' abc ')

_.prototype[Symbol.iterator]()

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8949 "View in source") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9013 "View in source") [Ⓣ][1] Enables the wrapper to be iterable. @@ -8805,7 +8809,7 @@ Array.from(wrapped);

_.prototype.at([paths])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8814 "View in source") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8878 "View in source") [Ⓣ][1] This method is the wrapper version of `_.at`. @@ -8832,7 +8836,7 @@ _(object).at(['a[0].b.c', 'a[1]']).value();

_.prototype.chain()

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8865 "View in source") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8929 "View in source") [Ⓣ][1] Creates a `lodash` wrapper instance with explicit method chain sequences enabled. @@ -8868,7 +8872,7 @@ _(users)

_.prototype.commit()

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8895 "View in source") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8959 "View in source") [Ⓣ][1] Executes the chain sequence and returns the wrapped result. @@ -8903,7 +8907,7 @@ console.log(array);

_.prototype.next()

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8921 "View in source") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L8985 "View in source") [Ⓣ][1] Gets the next value on a wrapped object following the [iterator protocol](https://mdn.io/iteration_protocols#iterator). @@ -8934,7 +8938,7 @@ wrapped.next();

_.prototype.plant(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L8977 "View in source") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9041 "View in source") [Ⓣ][1] Creates a clone of the chain sequence planting `value` as the wrapped value. @@ -8969,7 +8973,7 @@ wrapped.value();

_.prototype.reverse()

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9017 "View in source") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9081 "View in source") [Ⓣ][1] This method is the wrapper version of `_.reverse`.
@@ -8999,7 +9003,7 @@ console.log(array);

_.prototype.value()

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L9049 "View in source") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L9113 "View in source") [Ⓣ][1] Executes the chain sequence to resolve the unwrapped value. @@ -9030,7 +9034,7 @@ _([1, 2, 3]).value();

_.camelCase([string=''])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L14139 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.camelcase "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L14207 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.camelcase "See the npm package") [Ⓣ][1] Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). @@ -9061,7 +9065,7 @@ _.camelCase('__FOO_BAR__');

_.capitalize([string=''])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L14159 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.capitalize "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L14227 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.capitalize "See the npm package") [Ⓣ][1] Converts the first character of `string` to upper case and the remaining to lower case. @@ -9087,7 +9091,7 @@ _.capitalize('FRED');

_.deburr([string=''])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L14181 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.deburr "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L14249 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.deburr "See the npm package") [Ⓣ][1] Deburrs `string` by converting [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) @@ -9116,7 +9120,7 @@ _.deburr('dĂ©jĂ  vu');

_.endsWith([string=''], [target], [position=string.length])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L14209 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.endswith "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L14277 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.endswith "See the npm package") [Ⓣ][1] Checks if `string` ends with the given target string. @@ -9149,7 +9153,7 @@ _.endsWith('abc', 'b', 2);

_.escape([string=''])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L14251 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.escape "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L14319 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.escape "See the npm package") [Ⓣ][1] Converts the characters "&", "<", ">", '"', and "'" in `string` to their corresponding HTML entities. @@ -9191,7 +9195,7 @@ _.escape('fred, barney, & pebbles');

_.escapeRegExp([string=''])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L14273 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.escaperegexp "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L14341 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.escaperegexp "See the npm package") [Ⓣ][1] Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+", "?", "(", ")", "[", "]", "{", "}", and "|" in `string`. @@ -9217,7 +9221,7 @@ _.escapeRegExp('[lodash](https://lodash.com/)');

_.kebabCase([string=''])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L14301 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.kebabcase "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L14369 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.kebabcase "See the npm package") [Ⓣ][1] Converts `string` to [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles). @@ -9249,7 +9253,7 @@ _.kebabCase('__FOO_BAR__');

_.lowerCase([string=''])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L14325 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.lowercase "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L14393 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.lowercase "See the npm package") [Ⓣ][1] Converts `string`, as space separated words, to lower case. @@ -9280,7 +9284,7 @@ _.lowerCase('__FOO_BAR__');

_.lowerFirst([string=''])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L14346 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.lowerfirst "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L14414 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.lowerfirst "See the npm package") [Ⓣ][1] Converts the first character of `string` to lower case. @@ -9308,7 +9312,7 @@ _.lowerFirst('FRED');

_.pad([string=''], [length=0], [chars=' '])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L14371 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pad "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L14439 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pad "See the npm package") [Ⓣ][1] Pads `string` on the left and right sides if it's shorter than `length`. Padding characters are truncated if they can't be evenly divided by `length`. @@ -9342,7 +9346,7 @@ _.pad('abc', 3);

_.padEnd([string=''], [length=0], [chars=' '])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L14410 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.padend "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L14478 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.padend "See the npm package") [Ⓣ][1] Pads `string` on the right side if it's shorter than `length`. Padding characters are truncated if they exceed `length`. @@ -9376,7 +9380,7 @@ _.padEnd('abc', 3);

_.padStart([string=''], [length=0], [chars=' '])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L14443 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.padstart "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L14511 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.padstart "See the npm package") [Ⓣ][1] Pads `string` on the left side if it's shorter than `length`. Padding characters are truncated if they exceed `length`. @@ -9410,7 +9414,7 @@ _.padStart('abc', 3);

_.parseInt(string, [radix=10])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L14477 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.parseint "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L14545 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.parseint "See the npm package") [Ⓣ][1] Converts `string` to an integer of the specified radix. If `radix` is `undefined` or `0`, a `radix` of `10` is used unless `value` is a @@ -9445,7 +9449,7 @@ _.map(['6', '08', '10'], _.parseInt);

_.repeat([string=''], [n=1])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L14508 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.repeat "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L14576 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.repeat "See the npm package") [Ⓣ][1] Repeats the given string `n` times. @@ -9477,7 +9481,7 @@ _.repeat('abc', 0);

_.replace([string=''], pattern, replacement)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L14536 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.replace "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L14604 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.replace "See the npm package") [Ⓣ][1] Replaces matches for `pattern` in `string` with `replacement`.
@@ -9508,7 +9512,7 @@ _.replace('Hi Fred', 'Fred', 'Barney');

_.snakeCase([string=''])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L14564 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.snakecase "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L14632 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.snakecase "See the npm package") [Ⓣ][1] Converts `string` to [snake case](https://en.wikipedia.org/wiki/Snake_case). @@ -9540,7 +9544,7 @@ _.snakeCase('--FOO-BAR--');

_.split([string=''], separator, [limit])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L14587 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.split "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L14655 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.split "See the npm package") [Ⓣ][1] Splits `string` by `separator`.
@@ -9571,7 +9575,7 @@ _.split('a-b-c', '-', 2);

_.startCase([string=''])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L14629 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.startcase "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L14697 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.startcase "See the npm package") [Ⓣ][1] Converts `string` to [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage). @@ -9603,7 +9607,7 @@ _.startCase('__FOO_BAR__');

_.startsWith([string=''], [target], [position=0])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L14656 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.startswith "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L14724 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.startswith "See the npm package") [Ⓣ][1] Checks if `string` starts with the given target string. @@ -9636,7 +9640,7 @@ _.startsWith('abc', 'b', 1);

_.template([string=''], [options={}])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L14770 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.template "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L14838 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.template "See the npm package") [Ⓣ][1] Creates a compiled template function that can interpolate data properties in "interpolate" delimiters, HTML-escape interpolated data properties in @@ -9747,7 +9751,7 @@ fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\

_.toLower([string=''])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L14904 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tolower "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L14976 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tolower "See the npm package") [Ⓣ][1] Converts `string`, as a whole, to lower case just like [String#toLowerCase](https://mdn.io/toLowerCase). @@ -9779,7 +9783,7 @@ _.toLower('__FOO_BAR__');

_.toUpper([string=''])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L14929 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.toupper "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15001 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.toupper "See the npm package") [Ⓣ][1] Converts `string`, as a whole, to upper case just like [String#toUpperCase](https://mdn.io/toUpperCase). @@ -9811,7 +9815,7 @@ _.toUpper('__foo_bar__');

_.trim([string=''], [chars=whitespace])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L14955 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.trim "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15027 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.trim "See the npm package") [Ⓣ][1] Removes leading and trailing whitespace or specified characters from `string`. @@ -9843,7 +9847,7 @@ _.map([' foo ', ' bar '], _.trim);

_.trimEnd([string=''], [chars=whitespace])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L14990 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.trimend "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15062 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.trimend "See the npm package") [Ⓣ][1] Removes trailing whitespace or specified characters from `string`. @@ -9872,7 +9876,7 @@ _.trimEnd('-_-abc-_-', '_-');

_.trimStart([string=''], [chars=whitespace])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15023 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.trimstart "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15095 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.trimstart "See the npm package") [Ⓣ][1] Removes leading whitespace or specified characters from `string`. @@ -9901,7 +9905,7 @@ _.trimStart('-_-abc-_-', '_-');

_.truncate([string=''], [options={}])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15074 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.truncate "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15146 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.truncate "See the npm package") [Ⓣ][1] Truncates `string` if it's longer than the given maximum string length. The last characters of the truncated string are replaced with the omission @@ -9949,7 +9953,7 @@ _.truncate('hi-diddly-ho there, neighborino', {

_.unescape([string=''])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15149 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.unescape "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15221 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.unescape "See the npm package") [Ⓣ][1] The inverse of `_.escape`; this method converts the HTML entities `&`, `<`, `>`, `"`, and `'` in `string` to @@ -9980,7 +9984,7 @@ _.unescape('fred, barney, & pebbles');

_.upperCase([string=''])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15176 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.uppercase "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15248 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.uppercase "See the npm package") [Ⓣ][1] Converts `string`, as space separated words, to upper case. @@ -10011,7 +10015,7 @@ _.upperCase('__foo_bar__');

_.upperFirst([string=''])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15197 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.upperfirst "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15269 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.upperfirst "See the npm package") [Ⓣ][1] Converts the first character of `string` to upper case. @@ -10039,7 +10043,7 @@ _.upperFirst('FRED');

_.words([string=''], [pattern])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15218 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.words "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15290 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.words "See the npm package") [Ⓣ][1] Splits `string` into an array of its words. @@ -10074,7 +10078,7 @@ _.words('fred, barney, & pebbles', /[^, ]+/g);

_.attempt(func, [args])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15252 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.attempt "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15324 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.attempt "See the npm package") [Ⓣ][1] Attempts to invoke `func`, returning either the result or the caught error object. Any additional arguments are provided to `func` when it's invoked. @@ -10107,7 +10111,7 @@ if (_.isError(elements)) {

_.bindAll(object, methodNames)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15286 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.bindall "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15358 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.bindall "See the npm package") [Ⓣ][1] Binds methods of an object to the object itself, overwriting the existing method. @@ -10145,7 +10149,7 @@ jQuery(element).on('click', view.click);

_.cond(pairs)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15323 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.cond "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15395 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.cond "See the npm package") [Ⓣ][1] Creates a function that iterates over `pairs` and invokes the corresponding function of the first predicate to return truthy. The predicate-function @@ -10185,7 +10189,7 @@ func({ 'a': '1', 'b': '2' });

_.conforms(source)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15369 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.conforms "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15441 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.conforms "See the npm package") [Ⓣ][1] Creates a function that invokes the predicate properties of `source` with the corresponding property values of a given object, returning `true` if @@ -10221,7 +10225,7 @@ _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));

_.constant(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15392 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.constant "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15464 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.constant "See the npm package") [Ⓣ][1] Creates a function that returns `value`. @@ -10251,7 +10255,7 @@ console.log(objects[0] === objects[1]);

_.defaultTo(value, defaultValue)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15418 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.defaultto "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15490 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.defaultto "See the npm package") [Ⓣ][1] Checks `value` to determine whether a default value should be returned in its place. The `defaultValue` is returned if `value` is `NaN`, `null`, @@ -10282,7 +10286,7 @@ _.defaultTo(undefined, 10);

_.flow([funcs])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15444 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flow "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15516 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flow "See the npm package") [Ⓣ][1] Creates a function that returns the result of invoking the given functions with the `this` binding of the created function, where each successive @@ -10314,7 +10318,7 @@ addSquare(1, 2);

_.flowRight([funcs])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15467 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flowright "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15539 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flowright "See the npm package") [Ⓣ][1] This method is like `_.flow` except that it creates a function that invokes the given functions from right to left. @@ -10345,7 +10349,7 @@ addSquare(1, 2);

_.identity(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15485 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.identity "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15557 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.identity "See the npm package") [Ⓣ][1] This method returns the first argument it receives. @@ -10372,7 +10376,7 @@ console.log(_.identity(object) === object);

_.iteratee([func=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15531 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.iteratee "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15603 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.iteratee "See the npm package") [Ⓣ][1] Creates a function that invokes `func` with the arguments of the created function. If `func` is a property name, the created function returns the @@ -10425,7 +10429,7 @@ _.filter(['abc', 'def'], /ef/);

_.matches(source)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15563 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.matches "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15642 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.matches "See the npm package") [Ⓣ][1] Creates a function that performs a partial deep comparison between a given object and `source`, returning `true` if the given object has equivalent @@ -10439,6 +10443,10 @@ partially applied. Partial comparisons will match empty array and empty object `source` values against any array or object value, respectively. See `_.isEqual` for a list of supported value comparisons. +
+
+**Note:** Multiple values can be checked by combining several matchers +using `_.overSome` #### Since 3.0.0 @@ -10458,6 +10466,10 @@ var objects = [ _.filter(objects, _.matches({ 'a': 4, 'c': 6 })); // => [{ 'a': 4, 'b': 5, 'c': 6 }] + +// Checking for several possible values +_.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })])); +// => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }] ``` --- @@ -10466,7 +10478,7 @@ _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));

_.matchesProperty(path, srcValue)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15593 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.matchesproperty "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15679 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.matchesproperty "See the npm package") [Ⓣ][1] Creates a function that performs a partial deep comparison between the value at `path` of a given object to `srcValue`, returning `true` if the @@ -10476,6 +10488,10 @@ object value is equivalent, else `false`. **Note:** Partial comparisons will match empty array and empty object `srcValue` values against any array or object value, respectively. See `_.isEqual` for a list of supported value comparisons. +
+
+**Note:** Multiple values can be checked by combining several matchers +using `_.overSome` #### Since 3.2.0 @@ -10496,6 +10512,10 @@ var objects = [ _.find(objects, _.matchesProperty('a', 4)); // => { 'a': 4, 'b': 5, 'c': 6 } + +// Checking for several possible values +_.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)])); +// => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }] ``` --- @@ -10504,7 +10524,7 @@ _.find(objects, _.matchesProperty('a', 4));

_.method(path, [args])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15621 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.method "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15707 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.method "See the npm package") [Ⓣ][1] Creates a function that invokes the method at `path` of a given object. Any additional arguments are provided to the invoked method. @@ -10539,7 +10559,7 @@ _.map(objects, _.method(['a', 'b']));

_.methodOf(object, [args])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15650 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.methodof "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15736 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.methodof "See the npm package") [Ⓣ][1] The opposite of `_.method`; this method creates a function that invokes the method at a given path of `object`. Any additional arguments are @@ -10573,7 +10593,7 @@ _.map([['a', '2'], ['c', '0']], _.methodOf(object));

_.mixin([object=lodash], source, [options={}])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15692 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.mixin "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15778 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.mixin "See the npm package") [Ⓣ][1] Adds all own enumerable string keyed function properties of a source object to the destination object. If `object` is a function, then methods @@ -10621,7 +10641,7 @@ _('fred').vowels();

_.noConflict()

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15741 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.noconflict "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15827 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.noconflict "See the npm package") [Ⓣ][1] Reverts the `_` variable to its previous value and returns a reference to the `lodash` function. @@ -10643,7 +10663,7 @@ var lodash = _.noConflict();

_.noop()

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15760 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.noop "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15846 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.noop "See the npm package") [Ⓣ][1] This method returns `undefined`. @@ -10662,7 +10682,7 @@ _.times(2, _.noop);

_.nthArg([n=0])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15784 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.ntharg "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15870 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.ntharg "See the npm package") [Ⓣ][1] Creates a function that gets the argument at index `n`. If `n` is negative, the nth argument from the end is returned. @@ -10693,7 +10713,7 @@ func('a', 'b', 'c', 'd');

_.over([iteratees=[_.identity]])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15809 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.over "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15895 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.over "See the npm package") [Ⓣ][1] Creates a function that invokes `iteratees` with the arguments it receives and returns their results. @@ -10721,10 +10741,15 @@ func(1, 2, 3, 4);

_.overEvery([predicates=[_.identity]])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15835 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.overevery "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15925 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.overevery "See the npm package") [Ⓣ][1] Creates a function that checks if **all** of the `predicates` return truthy when invoked with the arguments it receives. +
+
+Following shorthands are possible for providing predicates. +Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate. +Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them. #### Since 4.0.0 @@ -10755,10 +10780,15 @@ func(NaN);

_.overSome([predicates=[_.identity]])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15861 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.oversome "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15958 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.oversome "See the npm package") [Ⓣ][1] Creates a function that checks if **any** of the `predicates` return truthy when invoked with the arguments it receives. +
+
+Following shorthands are possible for providing predicates. +Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate. +Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them. #### Since 4.0.0 @@ -10781,6 +10811,9 @@ func(null); func(NaN); // => false + +var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }]) +var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]]) ``` --- @@ -10789,7 +10822,7 @@ func(NaN);

_.property(path)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15885 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.property "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L15982 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.property "See the npm package") [Ⓣ][1] Creates a function that returns the value at `path` of a given object. @@ -10822,7 +10855,7 @@ _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');

_.propertyOf(object)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15910 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.propertyof "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L16007 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.propertyof "See the npm package") [Ⓣ][1] The opposite of `_.property`; this method creates a function that returns the value at a given path of `object`. @@ -10854,7 +10887,7 @@ _.map([['a', '2'], ['c', '0']], _.propertyOf(object));

_.range([start=0], end, [step=1])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15957 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.range "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L16054 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.range "See the npm package") [Ⓣ][1] Creates an array of numbers *(positive and/or negative)* progressing from `start` up to, but not including, `end`. A step of `-1` is used if a negative @@ -10906,7 +10939,7 @@ _.range(0);

_.rangeRight([start=0], end, [step=1])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L15995 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.rangeright "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L16092 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.rangeright "See the npm package") [Ⓣ][1] This method is like `_.range` except that it populates values in descending order. @@ -10952,7 +10985,7 @@ _.rangeRight(0);

_.runInContext([context=root])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L1406 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.runincontext "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L1448 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.runincontext "See the npm package") [Ⓣ][1] Create a new pristine `lodash` function using the `context` object. @@ -10992,7 +11025,7 @@ var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;

_.stubArray()

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L16015 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.stubarray "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L16112 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.stubarray "See the npm package") [Ⓣ][1] This method returns a new empty array. @@ -11019,7 +11052,7 @@ console.log(arrays[0] === arrays[1]);

_.stubFalse()

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L16032 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.stubfalse "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L16129 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.stubfalse "See the npm package") [Ⓣ][1] This method returns `false`. @@ -11041,7 +11074,7 @@ _.times(2, _.stubFalse);

_.stubObject()

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L16054 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.stubobject "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L16151 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.stubobject "See the npm package") [Ⓣ][1] This method returns a new empty object. @@ -11068,7 +11101,7 @@ console.log(objects[0] === objects[1]);

_.stubString()

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L16071 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.stubstring "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L16168 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.stubstring "See the npm package") [Ⓣ][1] This method returns an empty string. @@ -11090,7 +11123,7 @@ _.times(2, _.stubString);

_.stubTrue()

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L16088 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.stubtrue "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L16185 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.stubtrue "See the npm package") [Ⓣ][1] This method returns `true`. @@ -11112,7 +11145,7 @@ _.times(2, _.stubTrue);

_.times(n, [iteratee=_.identity])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L16111 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.times "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L16208 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.times "See the npm package") [Ⓣ][1] Invokes the iteratee `n` times, returning an array of the results of each invocation. The iteratee is invoked with one argument; *(index)*. @@ -11142,7 +11175,7 @@ _.times(3, String);

_.toPath(value)

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L16146 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.topath "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L16243 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.topath "See the npm package") [Ⓣ][1] Converts `value` to a property path array. @@ -11170,7 +11203,7 @@ _.toPath('a[0].b.c');

_.uniqueId([prefix=''])

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L16170 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.uniqueid "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L16267 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.uniqueid "See the npm package") [Ⓣ][1] Generates a unique ID. If `prefix` is given, the ID is appended to it. @@ -11204,7 +11237,7 @@ _.uniqueId();

_.VERSION

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L16861 "View in source") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L16958 "View in source") [Ⓣ][1] (string): The semantic version number. @@ -11215,7 +11248,7 @@ _.uniqueId();

_.templateSettings

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L1717 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.templatesettings "See the npm package") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L1759 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.templatesettings "See the npm package") [Ⓣ][1] (Object): By default, the template delimiters used by lodash are like those in embedded Ruby *(ERB)* as well as ES2015 template strings. Change the @@ -11228,7 +11261,7 @@ following template settings to use alternative delimiters.

_.templateSettings.escape

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L1725 "View in source") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L1767 "View in source") [Ⓣ][1] (RegExp): Used to detect `data` property values to be HTML-escaped. @@ -11239,7 +11272,7 @@ following template settings to use alternative delimiters.

_.templateSettings.evaluate

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L1733 "View in source") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L1775 "View in source") [Ⓣ][1] (RegExp): Used to detect code to be evaluated. @@ -11250,7 +11283,7 @@ following template settings to use alternative delimiters.

_.templateSettings.imports

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L1757 "View in source") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L1799 "View in source") [Ⓣ][1] (Object): Used to import variables into the compiled template. @@ -11261,7 +11294,7 @@ following template settings to use alternative delimiters.

_.templateSettings.interpolate

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L1741 "View in source") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L1783 "View in source") [Ⓣ][1] (RegExp): Used to detect `data` property values to inject. @@ -11272,7 +11305,7 @@ following template settings to use alternative delimiters.

_.templateSettings.variable

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L1749 "View in source") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L1791 "View in source") [Ⓣ][1] (string): Used to reference the data object in the template text. @@ -11289,7 +11322,7 @@ following template settings to use alternative delimiters.

_.templateSettings.imports._

-[Ⓢ](https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L1765 "View in source") [Ⓣ][1] +[Ⓢ](https://github.com/lodash/lodash/blob/4.17.21/lodash.js#L1807 "View in source") [Ⓣ][1] A reference to the `lodash` function. diff --git a/lodash.js b/lodash.js index 9b95dfefe8..4131e936cd 100644 --- a/lodash.js +++ b/lodash.js @@ -12,14 +12,15 @@ var undefined; /** Used as the semantic version number. */ - var VERSION = '4.17.15'; + var VERSION = '4.17.21'; /** Used as the size to enable large array optimizations. */ var LARGE_ARRAY_SIZE = 200; /** Error message constants. */ var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.', - FUNC_ERROR_TEXT = 'Expected a function'; + FUNC_ERROR_TEXT = 'Expected a function', + INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`'; /** Used to stand-in for `undefined` hash values. */ var HASH_UNDEFINED = '__lodash_hash_undefined__'; @@ -152,10 +153,11 @@ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, reHasRegExpChar = RegExp(reRegExpChar.source); - /** Used to match leading and trailing whitespace. */ - var reTrim = /^\s+|\s+$/g, - reTrimStart = /^\s+/, - reTrimEnd = /\s+$/; + /** Used to match leading whitespace. */ + var reTrimStart = /^\s+/; + + /** Used to match a single whitespace character. */ + var reWhitespace = /\s/; /** Used to match wrap detail comments. */ var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, @@ -165,6 +167,18 @@ /** Used to match words composed of alphanumeric characters. */ var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; + /** + * Used to validate the `validate` option in `_.template` variable. + * + * Forbids characters which could potentially change the meaning of the function argument definition: + * - "()," (modification of function parameters) + * - "=" (default value) + * - "[]{}" (destructuring of function parameters) + * - "/" (beginning of a comment) + * - whitespace + */ + var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/; + /** Used to match backslashes in property paths. */ var reEscapeChar = /\\(\\)?/g; @@ -993,6 +1007,19 @@ }); } + /** + * The base implementation of `_.trim`. + * + * @private + * @param {string} string The string to trim. + * @returns {string} Returns the trimmed string. + */ + function baseTrim(string) { + return string + ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '') + : string; + } + /** * The base implementation of `_.unary` without support for storing metadata. * @@ -1326,6 +1353,21 @@ : asciiToArray(string); } + /** + * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace + * character of `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the index of the last non-whitespace character. + */ + function trimmedEndIndex(string) { + var index = string.length; + + while (index-- && reWhitespace.test(string.charAt(index))) {} + return index; + } + /** * Used by `_.unescape` to convert HTML entities to characters. * @@ -3719,8 +3761,21 @@ * @returns {Array} Returns the new sorted array. */ function baseOrderBy(collection, iteratees, orders) { + if (iteratees.length) { + iteratees = arrayMap(iteratees, function(iteratee) { + if (isArray(iteratee)) { + return function(value) { + return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee); + } + } + return iteratee; + }); + } else { + iteratees = [identity]; + } + var index = -1; - iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee())); + iteratees = arrayMap(iteratees, baseUnary(getIteratee())); var result = baseMap(collection, function(value, key, collection) { var criteria = arrayMap(iteratees, function(iteratee) { @@ -3977,6 +4032,10 @@ var key = toKey(path[index]), newValue = value; + if (key === '__proto__' || key === 'constructor' || key === 'prototype') { + return object; + } + if (index != lastIndex) { var objValue = nested[key]; newValue = customizer ? customizer(objValue, key, nested) : undefined; @@ -4129,11 +4188,14 @@ * into `array`. */ function baseSortedIndexBy(array, value, iteratee, retHighest) { - value = iteratee(value); - var low = 0, - high = array == null ? 0 : array.length, - valIsNaN = value !== value, + high = array == null ? 0 : array.length; + if (high === 0) { + return 0; + } + + value = iteratee(value); + var valIsNaN = value !== value, valIsNull = value === null, valIsSymbol = isSymbol(value), valIsUndefined = value === undefined; @@ -5618,10 +5680,11 @@ if (arrLength != othLength && !(isPartial && othLength > arrLength)) { return false; } - // Assume cyclic values are equal. - var stacked = stack.get(array); - if (stacked && stack.get(other)) { - return stacked == other; + // Check that cyclic values are equal. + var arrStacked = stack.get(array); + var othStacked = stack.get(other); + if (arrStacked && othStacked) { + return arrStacked == other && othStacked == array; } var index = -1, result = true, @@ -5783,10 +5846,11 @@ return false; } } - // Assume cyclic values are equal. - var stacked = stack.get(object); - if (stacked && stack.get(other)) { - return stacked == other; + // Check that cyclic values are equal. + var objStacked = stack.get(object); + var othStacked = stack.get(other); + if (objStacked && othStacked) { + return objStacked == other && othStacked == object; } var result = true; stack.set(object, other); @@ -9167,6 +9231,10 @@ * // The `_.property` iteratee shorthand. * _.filter(users, 'active'); * // => objects for ['barney'] + * + * // Combining several predicates using `_.overEvery` or `_.overSome`. + * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]])); + * // => objects for ['fred', 'barney'] */ function filter(collection, predicate) { var func = isArray(collection) ? arrayFilter : baseFilter; @@ -9916,15 +9984,15 @@ * var users = [ * { 'user': 'fred', 'age': 48 }, * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 }, + * { 'user': 'fred', 'age': 30 }, * { 'user': 'barney', 'age': 34 } * ]; * * _.sortBy(users, [function(o) { return o.user; }]); - * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]] * * _.sortBy(users, ['user', 'age']); - * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]] + * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]] */ var sortBy = baseRest(function(collection, iteratees) { if (collection == null) { @@ -12468,7 +12536,7 @@ if (typeof value != 'string') { return value === 0 ? value : +value; } - value = value.replace(reTrim, ''); + value = baseTrim(value); var isBinary = reIsBinary.test(value); return (isBinary || reIsOctal.test(value)) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) @@ -14799,11 +14867,11 @@ // Use a sourceURL for easier debugging. // The sourceURL gets injected into the source that's eval-ed, so be careful - // with lookup (in case of e.g. prototype pollution), and strip newlines if any. - // A newline wouldn't be a valid sourceURL anyway, and it'd enable code injection. + // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in + // and escape the comment, thus injecting code that gets evaled. var sourceURL = '//# sourceURL=' + (hasOwnProperty.call(options, 'sourceURL') - ? (options.sourceURL + '').replace(/[\r\n]/g, ' ') + ? (options.sourceURL + '').replace(/\s/g, ' ') : ('lodash.templateSources[' + (++templateCounter) + ']') ) + '\n'; @@ -14836,12 +14904,16 @@ // If `variable` is not specified wrap a with-statement around the generated // code to add the data object to the top of the scope chain. - // Like with sourceURL, we take care to not check the option's prototype, - // as this configuration is a code injection vector. var variable = hasOwnProperty.call(options, 'variable') && options.variable; if (!variable) { source = 'with (obj) {\n' + source + '\n}\n'; } + // Throw an error if a forbidden character was found in `variable`, to prevent + // potential command injection attacks. + else if (reForbiddenIdentifierChars.test(variable)) { + throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT); + } + // Cleanup code by stripping empty strings. source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source) .replace(reEmptyStringMiddle, '$1') @@ -14955,7 +15027,7 @@ function trim(string, chars, guard) { string = toString(string); if (string && (guard || chars === undefined)) { - return string.replace(reTrim, ''); + return baseTrim(string); } if (!string || !(chars = baseToString(chars))) { return string; @@ -14990,7 +15062,7 @@ function trimEnd(string, chars, guard) { string = toString(string); if (string && (guard || chars === undefined)) { - return string.replace(reTrimEnd, ''); + return string.slice(0, trimmedEndIndex(string) + 1); } if (!string || !(chars = baseToString(chars))) { return string; @@ -15544,6 +15616,9 @@ * values against any array or object value, respectively. See `_.isEqual` * for a list of supported value comparisons. * + * **Note:** Multiple values can be checked by combining several matchers + * using `_.overSome` + * * @static * @memberOf _ * @since 3.0.0 @@ -15559,6 +15634,10 @@ * * _.filter(objects, _.matches({ 'a': 4, 'c': 6 })); * // => [{ 'a': 4, 'b': 5, 'c': 6 }] + * + * // Checking for several possible values + * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })])); + * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }] */ function matches(source) { return baseMatches(baseClone(source, CLONE_DEEP_FLAG)); @@ -15573,6 +15652,9 @@ * `srcValue` values against any array or object value, respectively. See * `_.isEqual` for a list of supported value comparisons. * + * **Note:** Multiple values can be checked by combining several matchers + * using `_.overSome` + * * @static * @memberOf _ * @since 3.2.0 @@ -15589,6 +15671,10 @@ * * _.find(objects, _.matchesProperty('a', 4)); * // => { 'a': 4, 'b': 5, 'c': 6 } + * + * // Checking for several possible values + * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)])); + * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }] */ function matchesProperty(path, srcValue) { return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG)); @@ -15812,6 +15898,10 @@ * Creates a function that checks if **all** of the `predicates` return * truthy when invoked with the arguments it receives. * + * Following shorthands are possible for providing predicates. + * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate. + * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them. + * * @static * @memberOf _ * @since 4.0.0 @@ -15838,6 +15928,10 @@ * Creates a function that checks if **any** of the `predicates` return * truthy when invoked with the arguments it receives. * + * Following shorthands are possible for providing predicates. + * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate. + * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them. + * * @static * @memberOf _ * @since 4.0.0 @@ -15857,6 +15951,9 @@ * * func(NaN); * // => false + * + * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }]) + * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]]) */ var overSome = createOver(arraySome); diff --git a/package-lock.json b/package-lock.json index 750f35ab94..84bbfa5af5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "lodash", - "version": "4.17.15", + "version": "4.17.21", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1386,6 +1386,7 @@ "node-uuid": "~1.4.0", "oauth-sign": "~0.4.0", "qs": "~1.2.0", + "stringstream": "~0.0.4", "tough-cookie": ">=0.12.0", "tunnel-agent": "~0.4.0" } @@ -3681,9 +3682,9 @@ } }, "lodash": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", - "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==", + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", "dev": true }, "lodash-doc-globals": { @@ -5231,6 +5232,13 @@ "safe-buffer": "~5.1.0" } }, + "stringstream": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", + "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==", + "dev": true, + "optional": true + }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", diff --git a/package.json b/package.json index 0fc6b66f2e..83080d4381 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "lodash", - "version": "4.17.15", + "version": "4.17.21", "license": "MIT", "private": true, "main": "lodash.js", @@ -45,7 +45,7 @@ "istanbul": "0.4.5", "jquery": "^3.4.1", "jscs": "^3.0.7", - "lodash": "4.17.14", + "lodash": "4.17.20", "lodash-doc-globals": "^0.1.1", "markdown-doctest": "^0.9.1", "optional-dev-dependency": "^2.0.0", diff --git a/test/test.js b/test/test.js index 72c71a9936..fcb3a168ed 100644 --- a/test/test.js +++ b/test/test.js @@ -9741,7 +9741,7 @@ }); QUnit.test('should compare arrays with circular references', function(assert) { - assert.expect(4); + assert.expect(6); var array1 = [], array2 = []; @@ -9766,6 +9766,14 @@ array2 = ['a', ['a', 'b', 'c'], 'c']; assert.strictEqual(_.isEqual(array1, array2), false); + + array1 = [[[]]]; + array1[0][0][0] = array1; + array2 = []; + array2[0] = array2; + + assert.strictEqual(_.isEqual(array1, array2), false); + assert.strictEqual(_.isEqual(array2, array1), false); }); QUnit.test('should have transitive equivalence for circular references of arrays', function(assert) { @@ -9783,7 +9791,7 @@ }); QUnit.test('should compare objects with circular references', function(assert) { - assert.expect(4); + assert.expect(6); var object1 = {}, object2 = {}; @@ -9808,6 +9816,14 @@ object2 = { 'a': 1, 'b': { 'a': 1, 'b': 2, 'c': 3 }, 'c': 3 }; assert.strictEqual(_.isEqual(object1, object2), false); + + object1 = {self: {self: {self: {}}}}; + object1.self.self.self = object1; + object2 = {self: {}}; + object2.self = object2; + + assert.strictEqual(_.isEqual(object1, object2), false); + assert.strictEqual(_.isEqual(object2, object1), false); }); QUnit.test('should have transitive equivalence for circular references of objects', function(assert) { @@ -16020,6 +16036,14 @@ { 'a': 'y', 'b': 2 } ]; + var nestedObj = [ + { id: '4', address: { zipCode: 4, streetName: 'Beta' } }, + { id: '3', address: { zipCode: 3, streetName: 'Alpha' } }, + { id: '1', address: { zipCode: 1, streetName: 'Alpha' } }, + { id: '2', address: { zipCode: 2, streetName: 'Alpha' } }, + { id: '5', address: { zipCode: 4, streetName: 'Alpha' } }, + ]; + QUnit.test('should sort by a single property by a specified order', function(assert) { assert.expect(1); @@ -16027,6 +16051,17 @@ assert.deepEqual(actual, [objects[1], objects[3], objects[0], objects[2]]); }); + QUnit.test('should sort by nested key in array format', function(assert) { + assert.expect(1); + + var actual = _.orderBy( + nestedObj, + [['address', 'zipCode'], ['address.streetName']], + ['asc', 'desc'] + ); + assert.deepEqual(actual, [nestedObj[2], nestedObj[3], nestedObj[1], nestedObj[0], nestedObj[4]]); + }); + QUnit.test('should sort by multiple properties by specified orders', function(assert) { assert.expect(1); @@ -20998,6 +21033,16 @@ assert.strictEqual(actual, 1); }); + QUnit.test('`_.' + methodName + '` should avoid calling iteratee when length is 0', function(assert) { + var objects = [], + iteratee = function() { + throw new Error; + }, + actual = func(objects, { 'x': 50 }, iteratee); + + assert.strictEqual(actual, 0); + }); + QUnit.test('`_.' + methodName + '` should support arrays larger than `MAX_ARRAY_LENGTH / 2`', function(assert) { assert.expect(12); @@ -22251,6 +22296,14 @@ } }); + QUnit.test('should forbid code injection through the "variable" options', function(assert) { + assert.expect(1); + + assert.raises(function () { + _.template('', { 'variable': '){console.log(process.env)}; with(obj' }); + }); + }); + QUnit.test('should support custom delimiters', function(assert) { assert.expect(2); @@ -22596,6 +22649,18 @@ assert.deepEqual(actual, expected); }); + QUnit.test('should not let a sourceURL inject code', function(assert) { + assert.expect(1); + + var actual, + expected = 'no error'; + try { + actual = _.template(expected, {'sourceURL': '\u2028\u2029\n!this would err if it was executed!'})(); + } catch (e) {} + + assert.equal(actual, expected); + }); + QUnit.test('should work as an iteratee for methods like `_.map`', function(assert) { assert.expect(1); @@ -23718,6 +23783,22 @@ assert.deepEqual(actual, expected); }); + + QUnit.test('`_.`' + methodName + '` should prevent ReDoS', function(assert) { + assert.expect(2); + + var largeStrLen = 50000, + largeStr = '1' + lodashStable.repeat(' ', largeStrLen) + '1', + maxMs = 1000, + startTime = lodashStable.now(); + + assert.deepEqual(_[methodName](largeStr), methodName == 'toNumber' ? NaN : 0); + + var endTime = lodashStable.now(), + timeSpent = endTime - startTime; + + assert.ok(timeSpent < maxMs, 'operation took ' + timeSpent + 'ms'); + }); }); /*--------------------------------------------------------------------------*/ @@ -24303,6 +24384,22 @@ assert.strictEqual(func(string, ''), string); }); + QUnit.test('`_.`' + methodName + '` should prevent ReDoS', function(assert) { + assert.expect(2); + + var largeStrLen = 50000, + largeStr = 'A' + lodashStable.repeat(' ', largeStrLen) + 'A', + maxMs = 1000, + startTime = lodashStable.now(); + + assert.strictEqual(_[methodName](largeStr), largeStr); + + var endTime = lodashStable.now(), + timeSpent = endTime - startTime; + + assert.ok(timeSpent < maxMs, 'operation took ' + timeSpent + 'ms'); + }); + QUnit.test('`_.' + methodName + '` should work as an iteratee for methods like `_.map`', function(assert) { assert.expect(1); @@ -25742,6 +25839,39 @@ }); }); + // zipObjectDeep prototype pollution + ['__proto__', 'constructor', 'prototype'].forEach(function (keyToTest) { + QUnit.test('zipObjectDeep is not setting ' + keyToTest + ' on global', function (assert) { + assert.expect(1); + + _.zipObjectDeep([keyToTest + '.a'], ['newValue']); + // Can't access plain `a` as it's not defined and test fails + assert.notEqual(root['a'], 'newValue'); + }); + + QUnit.test('zipObjectDeep is not overwriting ' + keyToTest + ' on vars', function (assert) { + assert.expect(3); + + const b = 'oldValue' + _.zipObjectDeep([keyToTest + '.b'], ['newValue']); + assert.equal(b, 'oldValue'); + assert.notEqual(root['b'], 'newValue'); + + // ensure nothing was created + assert.notOk(root['b']); + }); + + QUnit.test('zipObjectDeep is not overwriting global.' + keyToTest, function (assert) { + assert.expect(2); + + _.zipObjectDeep([root + '.' + keyToTest + '.c'], ['newValue']); + assert.notEqual(root['c'], 'newValue'); + + // ensure nothing was created + assert.notOk(root['c']); + }); + }); + /*--------------------------------------------------------------------------*/ QUnit.module('lodash.zipWith');