lodash-rails 4.16.4 → 4.16.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 914872f926a0640f469d084adcdd5d27fb21a6d3
4
- data.tar.gz: 998558d9f56f8396e7e72a2c43563069d935d35f
3
+ metadata.gz: 0d248b315ca3c39114125653a2c8461329cba0f3
4
+ data.tar.gz: 7ad073112e6bff73df5507441a3d38f2faf81875
5
5
  SHA512:
6
- metadata.gz: 50e32bbf5c6ceda1838802552f6c016c2d5c5d34b757539a157f5c579a7c09fd4ddc904c2a8958ff22eaaee950d5e393de61ae31bf7c81ac9aee2f590c090bb9
7
- data.tar.gz: d36843f9512236559acb3e845b752c4b243950ef5751d29c8d38b806593169659db63c99ed0233c117686b62d2c4d4ac286d908ca0ec4097564c3c5053f05b16
6
+ metadata.gz: 488c0396641d03d98521c15705df36cd1d9354d2fb2057b39b9245063d614d45ab95afe0bb8b4f2eb35f9d4311c12c20e9aca66d6fea19de56a7c3ce0811c69e
7
+ data.tar.gz: c5e41e2ee27171546bd5edde67469623a982b725b62c6e1668896fc59f0da64e05658493d4b99ffb8bdaec225b19005265037be1bdbb668d7ca8bcaa39c35510
data/README.md CHANGED
@@ -18,7 +18,7 @@ Add the necessary library to `app/assets/javascripts/application.js`:
18
18
 
19
19
  ## What's included?
20
20
 
21
- lodash 4.16.4:
21
+ lodash 4.16.6:
22
22
 
23
23
  * lodash.core.js
24
24
  * lodash.core.min.js
@@ -1,5 +1,5 @@
1
1
  module LoDash
2
2
  module Rails
3
- VERSION = "4.16.4"
3
+ VERSION = "4.16.6"
4
4
  end
5
5
  end
@@ -2,7 +2,7 @@
2
2
  * @license
3
3
  * lodash (Custom Build) <https://lodash.com/>
4
4
  * Build: `lodash core -o ./dist/lodash.core.js`
5
- * Copyright jQuery Foundation and other contributors <https://jquery.org/>
5
+ * Copyright JS Foundation and other contributors <https://js.foundation/>
6
6
  * Released under MIT license <https://lodash.com/license>
7
7
  * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
8
8
  * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
@@ -13,7 +13,7 @@
13
13
  var undefined;
14
14
 
15
15
  /** Used as the semantic version number. */
16
- var VERSION = '4.16.4';
16
+ var VERSION = '4.16.6';
17
17
 
18
18
  /** Error message constants. */
19
19
  var FUNC_ERROR_TEXT = 'Expected a function';
@@ -33,6 +33,7 @@
33
33
  /** `Object#toString` result references. */
34
34
  var argsTag = '[object Arguments]',
35
35
  arrayTag = '[object Array]',
36
+ asyncTag = '[object AsyncFunction]',
36
37
  boolTag = '[object Boolean]',
37
38
  dateTag = '[object Date]',
38
39
  errorTag = '[object Error]',
@@ -214,7 +215,7 @@
214
215
  * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
215
216
  * of values.
216
217
  */
217
- var objectToString = objectProto.toString;
218
+ var nativeObjectToString = objectProto.toString;
218
219
 
219
220
  /** Used to restore the original `_` reference in `_.noConflict`. */
220
221
  var oldDash = root._;
@@ -610,6 +611,17 @@
610
611
  });
611
612
  }
612
613
 
614
+ /**
615
+ * The base implementation of `getTag` without fallbacks for buggy environments.
616
+ *
617
+ * @private
618
+ * @param {*} value The value to query.
619
+ * @returns {string} Returns the `toStringTag`.
620
+ */
621
+ function baseGetTag(value) {
622
+ return objectToString(value);
623
+ }
624
+
613
625
  /**
614
626
  * The base implementation of `_.gt` which doesn't coerce arguments.
615
627
  *
@@ -640,7 +652,7 @@
640
652
  * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
641
653
  */
642
654
  function baseIsDate(value) {
643
- return isObjectLike(value) && objectToString.call(value) == dateTag;
655
+ return isObjectLike(value) && baseGetTag(value) == dateTag;
644
656
  }
645
657
 
646
658
  /**
@@ -690,11 +702,11 @@
690
702
  othTag = arrayTag;
691
703
 
692
704
  if (!objIsArr) {
693
- objTag = objectToString.call(object);
705
+ objTag = baseGetTag(object);
694
706
  objTag = objTag == argsTag ? objectTag : objTag;
695
707
  }
696
708
  if (!othIsArr) {
697
- othTag = objectToString.call(other);
709
+ othTag = baseGetTag(other);
698
710
  othTag = othTag == argsTag ? objectTag : othTag;
699
711
  }
700
712
  var objIsObj = objTag == objectTag,
@@ -749,7 +761,7 @@
749
761
  * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
750
762
  */
751
763
  function baseIsRegExp(value) {
752
- return isObject(value) && objectToString.call(value) == regexpTag;
764
+ return isObjectLike(value) && baseGetTag(value) == regexpTag;
753
765
  }
754
766
 
755
767
  /**
@@ -1381,6 +1393,17 @@
1381
1393
  return result;
1382
1394
  }
1383
1395
 
1396
+ /**
1397
+ * Converts `value` to a string using `Object.prototype.toString`.
1398
+ *
1399
+ * @private
1400
+ * @param {*} value The value to convert.
1401
+ * @returns {string} Returns the converted string.
1402
+ */
1403
+ function objectToString(value) {
1404
+ return nativeObjectToString.call(value);
1405
+ }
1406
+
1384
1407
  /**
1385
1408
  * A specialized version of `baseRest` which transforms the rest array.
1386
1409
  *
@@ -1497,8 +1520,7 @@
1497
1520
  * @since 1.1.0
1498
1521
  * @category Array
1499
1522
  * @param {Array} array The array to inspect.
1500
- * @param {Function} [predicate=_.identity]
1501
- * The function invoked per iteration.
1523
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
1502
1524
  * @param {number} [fromIndex=0] The index to search from.
1503
1525
  * @returns {number} Returns the index of the found element, else `-1`.
1504
1526
  * @example
@@ -1525,7 +1547,7 @@
1525
1547
  * // => 2
1526
1548
  */
1527
1549
  function findIndex(array, predicate, fromIndex) {
1528
- var length = array ? array.length : 0;
1550
+ var length = array == null ? 0 : array.length;
1529
1551
  if (!length) {
1530
1552
  return -1;
1531
1553
  }
@@ -1551,7 +1573,7 @@
1551
1573
  * // => [1, 2, [3, [4]], 5]
1552
1574
  */
1553
1575
  function flatten(array) {
1554
- var length = array ? array.length : 0;
1576
+ var length = array == null ? 0 : array.length;
1555
1577
  return length ? baseFlatten(array, 1) : [];
1556
1578
  }
1557
1579
 
@@ -1570,7 +1592,7 @@
1570
1592
  * // => [1, 2, 3, 4, 5]
1571
1593
  */
1572
1594
  function flattenDeep(array) {
1573
- var length = array ? array.length : 0;
1595
+ var length = array == null ? 0 : array.length;
1574
1596
  return length ? baseFlatten(array, INFINITY) : [];
1575
1597
  }
1576
1598
 
@@ -1620,7 +1642,7 @@
1620
1642
  * // => 3
1621
1643
  */
1622
1644
  function indexOf(array, value, fromIndex) {
1623
- var length = array ? array.length : 0;
1645
+ var length = array == null ? 0 : array.length;
1624
1646
  if (typeof fromIndex == 'number') {
1625
1647
  fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex;
1626
1648
  } else {
@@ -1653,7 +1675,7 @@
1653
1675
  * // => 3
1654
1676
  */
1655
1677
  function last(array) {
1656
- var length = array ? array.length : 0;
1678
+ var length = array == null ? 0 : array.length;
1657
1679
  return length ? array[length - 1] : undefined;
1658
1680
  }
1659
1681
 
@@ -1674,7 +1696,7 @@
1674
1696
  * @returns {Array} Returns the slice of `array`.
1675
1697
  */
1676
1698
  function slice(array, start, end) {
1677
- var length = array ? array.length : 0;
1699
+ var length = array == null ? 0 : array.length;
1678
1700
  start = start == null ? 0 : +start;
1679
1701
  end = end === undefined ? length : +end;
1680
1702
  return length ? baseSlice(array, start, end) : [];
@@ -1838,8 +1860,7 @@
1838
1860
  * @since 0.1.0
1839
1861
  * @category Collection
1840
1862
  * @param {Array|Object} collection The collection to iterate over.
1841
- * @param {Function} [predicate=_.identity]
1842
- * The function invoked per iteration.
1863
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
1843
1864
  * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
1844
1865
  * @returns {boolean} Returns `true` if all elements pass the predicate check,
1845
1866
  * else `false`.
@@ -1882,8 +1903,7 @@
1882
1903
  * @since 0.1.0
1883
1904
  * @category Collection
1884
1905
  * @param {Array|Object} collection The collection to iterate over.
1885
- * @param {Function} [predicate=_.identity]
1886
- * The function invoked per iteration.
1906
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
1887
1907
  * @returns {Array} Returns the new filtered array.
1888
1908
  * @see _.reject
1889
1909
  * @example
@@ -1922,8 +1942,7 @@
1922
1942
  * @since 0.1.0
1923
1943
  * @category Collection
1924
1944
  * @param {Array|Object} collection The collection to inspect.
1925
- * @param {Function} [predicate=_.identity]
1926
- * The function invoked per iteration.
1945
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
1927
1946
  * @param {number} [fromIndex=0] The index to search from.
1928
1947
  * @returns {*} Returns the matched element, else `undefined`.
1929
1948
  * @example
@@ -2521,7 +2540,7 @@
2521
2540
  */
2522
2541
  function isBoolean(value) {
2523
2542
  return value === true || value === false ||
2524
- (isObjectLike(value) && objectToString.call(value) == boolTag);
2543
+ (isObjectLike(value) && baseGetTag(value) == boolTag);
2525
2544
  }
2526
2545
 
2527
2546
  /**
@@ -2665,10 +2684,13 @@
2665
2684
  * // => false
2666
2685
  */
2667
2686
  function isFunction(value) {
2687
+ if (!isObject(value)) {
2688
+ return false;
2689
+ }
2668
2690
  // The use of `Object#toString` avoids issues with the `typeof` operator
2669
- // in Safari 9 which returns 'object' for typed array and other constructors.
2670
- var tag = isObject(value) ? objectToString.call(value) : '';
2671
- return tag == funcTag || tag == genTag || tag == proxyTag;
2691
+ // in Safari 9 which returns 'object' for typed arrays and other constructors.
2692
+ var tag = baseGetTag(value);
2693
+ return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
2672
2694
  }
2673
2695
 
2674
2696
  /**
@@ -2844,7 +2866,7 @@
2844
2866
  */
2845
2867
  function isNumber(value) {
2846
2868
  return typeof value == 'number' ||
2847
- (isObjectLike(value) && objectToString.call(value) == numberTag);
2869
+ (isObjectLike(value) && baseGetTag(value) == numberTag);
2848
2870
  }
2849
2871
 
2850
2872
  /**
@@ -2885,7 +2907,7 @@
2885
2907
  */
2886
2908
  function isString(value) {
2887
2909
  return typeof value == 'string' ||
2888
- (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);
2910
+ (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
2889
2911
  }
2890
2912
 
2891
2913
  /**
@@ -3162,7 +3184,7 @@
3162
3184
  */
3163
3185
  function create(prototype, properties) {
3164
3186
  var result = baseCreate(prototype);
3165
- return properties ? assign(result, properties) : result;
3187
+ return properties == null ? result : assign(result, properties);
3166
3188
  }
3167
3189
 
3168
3190
  /**
@@ -3362,7 +3384,7 @@
3362
3384
  * // => ['h', 'i']
3363
3385
  */
3364
3386
  function values(object) {
3365
- return object ? baseValues(object, keys(object)) : [];
3387
+ return object == null ? [] : baseValues(object, keys(object));
3366
3388
  }
3367
3389
 
3368
3390
  /*------------------------------------------------------------------------*/
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * lodash (Custom Build) /license | Underscore.js 1.8.3 underscorejs.org/LICENSE
3
+ * lodash (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
4
4
  * Build: `lodash core -o ./dist/lodash.core.js`
5
5
  */
6
6
  ;(function(){function n(n){return K(n)&&pn.call(n,"callee")&&!bn.call(n,"callee")}function t(n,t){return n.push.apply(n,t),n}function r(n){return function(t){return null==t?nn:t[n]}}function e(n,t,r,e,u){return u(n,function(n,u,o){r=e?(e=false,n):t(r,n,u,o)}),r}function u(n,t){return d(t,function(t){return n[t]})}function o(n){return n instanceof i?n:new i(n)}function i(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t}function c(n,t,r,e){return n===nn||M(n,ln[r])&&!pn.call(e,r)?t:n}function f(n,t,r){
@@ -9,21 +9,21 @@ if(typeof n!="function")throw new TypeError("Expected a function");return setTim
9
9
  var p=En(o,function(t){return t[0]==n}),s=En(o,function(n){return n[0]==t});if(p&&s)return p[1]==t;if(o.push([n,t]),o.push([t,n]),a&&!l){if(i)r=B(n,t,r,e,u,o);else n:{switch(f){case"[object Boolean]":case"[object Date]":case"[object Number]":r=M(+n,+t);break n;case"[object Error]":r=n.name==t.name&&n.message==t.message;break n;case"[object RegExp]":case"[object String]":r=n==t+"";break n}r=false}return o.pop(),r}return 2&u||(i=l&&pn.call(n,"__wrapped__"),f=c&&pn.call(t,"__wrapped__"),!i&&!f)?!!a&&(r=R(n,t,r,e,u,o),
10
10
  o.pop(),r):(i=i?n.value():n,f=f?t.value():t,r=r(i,f,e,u,o),o.pop(),r)}function _(n){return typeof n=="function"?n:null==n?Y:(typeof n=="object"?m:r)(n)}function j(n,t){return n<t}function d(n,t){var r=-1,e=U(n)?Array(n.length):[];return mn(n,function(n,u,o){e[++r]=t(n,u,o)}),e}function m(n){var t=_n(n);return function(r){var e=t.length;if(null==r)return!e;for(r=Object(r);e--;){var u=t[e];if(!(u in r&&b(n[u],r[u],nn,3)))return false}return true}}function O(n,t){return n=Object(n),G(t,function(t,r){return r in n&&(t[r]=n[r]),
11
11
  t},{})}function x(n){return xn(q(n,void 0,Y),n+"")}function A(n,t,r){var e=-1,u=n.length;for(0>t&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Array(u);++e<u;)r[e]=n[e+t];return r}function E(n){return A(n,0,n.length)}function w(n,t){var r;return mn(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}function k(n,r){return G(r,function(n,r){return r.func.apply(r.thisArg,t([n],r.args))},n)}function N(n,t,r,e){var u=!r;r||(r={});for(var o=-1,i=t.length;++o<i;){var c=t[o],f=e?e(r[c],n[c],c,r,n):nn;
12
- if(f===nn&&(f=n[c]),u)r[c]=f;else{var a=r,l=a[c];pn.call(a,c)&&M(l,f)&&(f!==nn||c in a)||(a[c]=f)}}return r}function S(n){return x(function(t,r){var e=-1,u=r.length,o=1<u?r[u-1]:nn,o=3<n.length&&typeof o=="function"?(u--,o):nn;for(t=Object(t);++e<u;){var i=r[e];i&&n(t,i,e,o)}return t})}function T(n){return function(){var t=arguments,r=dn(n.prototype),t=n.apply(r,t);return H(t)?t:r}}function F(n,t,r){function e(){for(var o=-1,i=arguments.length,c=-1,f=r.length,a=Array(f+i),l=this&&this!==on&&this instanceof e?u:n;++c<f;)a[c]=r[c];
13
- for(;i--;)a[c++]=arguments[++o];return l.apply(t,a)}if(typeof n!="function")throw new TypeError("Expected a function");var u=T(n);return e}function B(n,t,r,e,u,o){var i=n.length,c=t.length;if(i!=c&&!(2&u&&c>i))return false;for(var c=-1,f=true,a=1&u?[]:nn;++c<i;){var l=n[c],p=t[c];if(void 0!==nn){f=false;break}if(a){if(!w(t,function(n,t){if(!z(a,t)&&(l===n||r(l,n,e,u,o)))return a.push(t)})){f=false;break}}else if(l!==p&&!r(l,p,e,u,o)){f=false;break}}return f}function R(n,t,r,e,u,o){var i=2&u,c=qn(n),f=c.length,a=qn(t).length;
12
+ if(f===nn&&(f=n[c]),u)r[c]=f;else{var a=r,l=a[c];pn.call(a,c)&&M(l,f)&&(f!==nn||c in a)||(a[c]=f)}}return r}function S(n){return x(function(t,r){var e=-1,u=r.length,o=1<u?r[u-1]:nn,o=3<n.length&&typeof o=="function"?(u--,o):nn;for(t=Object(t);++e<u;){var i=r[e];i&&n(t,i,e,o)}return t})}function F(n){return function(){var t=arguments,r=dn(n.prototype),t=n.apply(r,t);return H(t)?t:r}}function T(n,t,r){function e(){for(var o=-1,i=arguments.length,c=-1,f=r.length,a=Array(f+i),l=this&&this!==on&&this instanceof e?u:n;++c<f;)a[c]=r[c];
13
+ for(;i--;)a[c++]=arguments[++o];return l.apply(t,a)}if(typeof n!="function")throw new TypeError("Expected a function");var u=F(n);return e}function B(n,t,r,e,u,o){var i=n.length,c=t.length;if(i!=c&&!(2&u&&c>i))return false;for(var c=-1,f=true,a=1&u?[]:nn;++c<i;){var l=n[c],p=t[c];if(void 0!==nn){f=false;break}if(a){if(!w(t,function(n,t){if(!z(a,t)&&(l===n||r(l,n,e,u,o)))return a.push(t)})){f=false;break}}else if(l!==p&&!r(l,p,e,u,o)){f=false;break}}return f}function R(n,t,r,e,u,o){var i=2&u,c=qn(n),f=c.length,a=qn(t).length;
14
14
  if(f!=a&&!i)return false;for(var l=f;l--;){var p=c[l];if(!(i?p in t:pn.call(t,p)))return false}for(a=true;++l<f;){var p=c[l],s=n[p],h=t[p];if(void 0!==nn||s!==h&&!r(s,h,e,u,o)){a=false;break}i||(i="constructor"==p)}return a&&!i&&(r=n.constructor,e=t.constructor,r!=e&&"constructor"in n&&"constructor"in t&&!(typeof r=="function"&&r instanceof r&&typeof e=="function"&&e instanceof e)&&(a=false)),a}function D(t){return Sn(t)||n(t)}function I(n){var t=[];if(null!=n)for(var r in Object(n))t.push(r);return t}function q(n,t,r){
15
- return t=jn(t===nn?n.length-1:t,0),function(){for(var e=arguments,u=-1,o=jn(e.length-t,0),i=Array(o);++u<o;)i[u]=e[t+u];for(u=-1,o=Array(t+1);++u<t;)o[u]=e[u];return o[t]=r(i),n.apply(this,o)}}function $(n){return n&&n.length?s(n,1):[]}function P(n){return n&&n.length?n[0]:nn}function z(n,t,r){var e=n?n.length:0;r=typeof r=="number"?0>r?jn(e+r,0):r:0,r=(r||0)-1;for(var u=t===t;++r<e;){var o=n[r];if(u?o===t:o!==o)return r}return-1}function C(n,t){return mn(n,_(t))}function G(n,t,r){return e(n,_(t),r,3>arguments.length,mn);
16
- }function J(n,t){var r;if(typeof t!="function")throw new TypeError("Expected a function");return n=Tn(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=nn),r}}function M(n,t){return n===t||n!==n&&t!==t}function U(n){var t;return(t=null!=n)&&(t=n.length,t=typeof t=="number"&&-1<t&&0==t%1&&9007199254740991>=t),t&&!V(n)}function V(n){return n=H(n)?hn.call(n):"","[object Function]"==n||"[object GeneratorFunction]"==n||"[object Proxy]"==n}function H(n){var t=typeof n;return null!=n&&("object"==t||"function"==t);
17
- }function K(n){return null!=n&&typeof n=="object"}function L(n){return typeof n=="number"||K(n)&&"[object Number]"==hn.call(n)}function Q(n){return typeof n=="string"||!Sn(n)&&K(n)&&"[object String]"==hn.call(n)}function W(n){return typeof n=="string"?n:null==n?"":n+""}function X(n){return n?u(n,qn(n)):[]}function Y(n){return n}function Z(n,r,e){var u=qn(r),o=v(r,u);null!=e||H(r)&&(o.length||!u.length)||(e=r,r=n,n=this,o=v(r,qn(r)));var i=!(H(e)&&"chain"in e&&!e.chain),c=V(n);return mn(o,function(e){
18
- 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__=E(this.__actions__)).push({func:u,args:arguments,thisArg:n}),e.__chain__=r,e}return u.apply(n,t([this.value()],arguments))})}),n}var nn,tn=1/0,rn=/[&<>"']/g,en=RegExp(rn.source),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){
15
+ return t=jn(t===nn?n.length-1:t,0),function(){for(var e=arguments,u=-1,o=jn(e.length-t,0),i=Array(o);++u<o;)i[u]=e[t+u];for(u=-1,o=Array(t+1);++u<t;)o[u]=e[u];return o[t]=r(i),n.apply(this,o)}}function $(n){return(null==n?0:n.length)?s(n,1):[]}function P(n){return n&&n.length?n[0]:nn}function z(n,t,r){var e=null==n?0:n.length;r=typeof r=="number"?0>r?jn(e+r,0):r:0,r=(r||0)-1;for(var u=t===t;++r<e;){var o=n[r];if(u?o===t:o!==o)return r}return-1}function C(n,t){return mn(n,_(t))}function G(n,t,r){return e(n,_(t),r,3>arguments.length,mn);
16
+ }function J(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=nn),r}}function M(n,t){return n===t||n!==n&&t!==t}function U(n){var t;return(t=null!=n)&&(t=n.length,t=typeof t=="number"&&-1<t&&0==t%1&&9007199254740991>=t),t&&!V(n)}function V(n){return!!H(n)&&(n=hn.call(n),"[object Function]"==n||"[object GeneratorFunction]"==n||"[object AsyncFunction]"==n||"[object Proxy]"==n)}function H(n){var t=typeof n;
17
+ return null!=n&&("object"==t||"function"==t)}function K(n){return null!=n&&typeof n=="object"}function L(n){return typeof n=="number"||K(n)&&"[object Number]"==hn.call(n)}function Q(n){return typeof n=="string"||!Sn(n)&&K(n)&&"[object String]"==hn.call(n)}function W(n){return typeof n=="string"?n:null==n?"":n+""}function X(n){return null==n?[]:u(n,qn(n))}function Y(n){return n}function Z(n,r,e){var u=qn(r),o=v(r,u);null!=e||H(r)&&(o.length||!u.length)||(e=r,r=n,n=this,o=v(r,qn(r)));var i=!(H(e)&&"chain"in e&&!e.chain),c=V(n);
18
+ 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__=E(this.__actions__)).push({func:u,args:arguments,thisArg:n}),e.__chain__=r,e}return u.apply(n,t([this.value()],arguments))})}),n}var nn,tn=1/0,rn=/[&<>"']/g,en=RegExp(rn.source),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){
19
19
  return function(t){return null==n?nn:n[t]}}({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"}),an=Array.prototype,ln=Object.prototype,pn=ln.hasOwnProperty,sn=0,hn=ln.toString,vn=on._,yn=Object.create,bn=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 H(t)?yn?yn(t):(n.prototype=t,t=new n,n.prototype=nn,t):{}}}();i.prototype=dn(o.prototype),i.prototype.constructor=i;
20
20
  var mn=function(n,t){return function(r,e){if(null==r)return r;if(!U(r))return n(r,e);for(var u=r.length,o=t?u:-1,i=Object(r);(t?o--:++o<u)&&false!==e(i[o],o,i););return r}}(h),On=function(n){return function(t,r,e){var u=-1,o=Object(t);e=e(t);for(var i=e.length;i--;){var c=e[n?i:++u];if(false===r(o[c],c,o))break}return t}}(),xn=Y,An=String,En=function(n){return function(t,r,e){var u=Object(t);if(!U(t)){var o=_(r);t=qn(t),r=function(n){return o(u[n],n,u)}}return r=n(t,r,e),-1<r?u[o?t[r]:r]:nn}}(function(n,t,r){
21
- var e=n?n.length:0;if(!e)return-1;r=null==r?0:Tn(r),0>r&&(r=jn(e+r,0));n:{for(t=_(t),e=n.length,r+=-1;++r<e;)if(t(n[r],r,n)){n=r;break n}n=-1}return n}),wn=x(function(n,t,r){return F(n,t,r)}),kn=x(function(n,t){return f(n,1,t)}),Nn=x(function(n,t,r){return f(n,Fn(t)||0,r)}),Sn=Array.isArray,Tn=Number,Fn=Number,Bn=S(function(n,t){N(t,_n(t),n)}),Rn=S(function(n,t){N(t,I(t),n)}),Dn=S(function(n,t,r,e){N(t,$n(t),n,e)}),In=x(function(n){return n.push(nn,c),Dn.apply(nn,n)}),qn=_n,$n=I,Pn=function(n){return xn(q(n,nn,$),n+"");
22
- }(function(n,t){return null==n?{}:O(n,d(t,An))});o.assignIn=Rn,o.before=J,o.bind=wn,o.chain=function(n){return n=o(n),n.__chain__=true,n},o.compact=function(n){return p(n,Boolean)},o.concat=function(){var n=arguments.length;if(!n)return[];for(var r=Array(n-1),e=arguments[0];n--;)r[n-1]=arguments[n];return t(Sn(e)?E(e):[e],s(r,1))},o.create=function(n,t){var r=dn(n);return t?Bn(r,t):r},o.defaults=In,o.defer=kn,o.delay=Nn,o.filter=function(n,t){return p(n,_(t))},o.flatten=$,o.flattenDeep=function(n){
23
- return n&&n.length?s(n,tn):[]},o.iteratee=_,o.keys=qn,o.map=function(n,t){return d(n,_(t))},o.matches=function(n){return m(Bn({},n))},o.mixin=Z,o.negate=function(n){if(typeof n!="function")throw new TypeError("Expected a function");return function(){return!n.apply(this,arguments)}},o.once=function(n){return J(2,n)},o.pick=Pn,o.slice=function(n,t,r){var e=n?n.length:0;return r=r===nn?e:+r,e?A(n,null==t?0:+t,r):[]},o.sortBy=function(n,t){var e=0;return t=_(t),d(d(n,function(n,r,u){return{value:n,index:e++,
24
- criteria:t(n,r,u)}}).sort(function(n,t){var r;n:{r=n.criteria;var e=t.criteria;if(r!==e){var u=r!==nn,o=null===r,i=r===r,c=e!==nn,f=null===e,a=e===e;if(!f&&r>e||o&&c&&a||!u&&a||!i){r=1;break n}if(!o&&r<e||f&&u&&i||!c&&i||!a){r=-1;break n}}r=0}return r||n.index-t.index}),r("value"))},o.tap=function(n,t){return t(n),n},o.thru=function(n,t){return t(n)},o.toArray=function(n){return U(n)?n.length?E(n):[]:X(n)},o.values=X,o.extend=Rn,Z(o,o),o.clone=function(n){return H(n)?Sn(n)?E(n):N(n,_n(n)):n},o.escape=function(n){
25
- return(n=W(n))&&en.test(n)?n.replace(rn,fn):n},o.every=function(n,t,r){return t=r?nn:t,a(n,_(t))},o.find=En,o.forEach=C,o.has=function(n,t){return null!=n&&pn.call(n,t)},o.head=P,o.identity=Y,o.indexOf=z,o.isArguments=n,o.isArray=Sn,o.isBoolean=function(n){return true===n||false===n||K(n)&&"[object Boolean]"==hn.call(n)},o.isDate=function(n){return K(n)&&"[object Date]"==hn.call(n)},o.isEmpty=function(t){return U(t)&&(Sn(t)||Q(t)||V(t.splice)||n(t))?!t.length:!_n(t).length},o.isEqual=function(n,t){return b(n,t);
26
- },o.isFinite=function(n){return typeof n=="number"&&gn(n)},o.isFunction=V,o.isNaN=function(n){return L(n)&&n!=+n},o.isNull=function(n){return null===n},o.isNumber=L,o.isObject=H,o.isRegExp=function(n){return H(n)&&"[object RegExp]"==hn.call(n)},o.isString=Q,o.isUndefined=function(n){return n===nn},o.last=function(n){var t=n?n.length:0;return t?n[t-1]:nn},o.max=function(n){return n&&n.length?l(n,Y,y):nn},o.min=function(n){return n&&n.length?l(n,Y,j):nn},o.noConflict=function(){return on._===this&&(on._=vn),
27
- this},o.noop=function(){},o.reduce=G,o.result=function(n,t,r){return t=null==n?nn:n[t],t===nn&&(t=r),V(t)?t.call(n):t},o.size=function(n){return null==n?0:(n=U(n)?n:_n(n),n.length)},o.some=function(n,t,r){return t=r?nn:t,w(n,_(t))},o.uniqueId=function(n){var t=++sn;return W(n)+t},o.each=C,o.first=P,Z(o,function(){var n={};return h(o,function(t,r){pn.call(o.prototype,r)||(n[r]=t)}),n}(),{chain:false}),o.VERSION="4.16.4",mn("pop join replace reverse split push shift sort splice unshift".split(" "),function(n){
21
+ var e=null==n?0:n.length;if(!e)return-1;r=null==r?0:Fn(r),0>r&&(r=jn(e+r,0));n:{for(t=_(t),e=n.length,r+=-1;++r<e;)if(t(n[r],r,n)){n=r;break n}n=-1}return n}),wn=x(function(n,t,r){return T(n,t,r)}),kn=x(function(n,t){return f(n,1,t)}),Nn=x(function(n,t,r){return f(n,Tn(t)||0,r)}),Sn=Array.isArray,Fn=Number,Tn=Number,Bn=S(function(n,t){N(t,_n(t),n)}),Rn=S(function(n,t){N(t,I(t),n)}),Dn=S(function(n,t,r,e){N(t,$n(t),n,e)}),In=x(function(n){return n.push(nn,c),Dn.apply(nn,n)}),qn=_n,$n=I,Pn=function(n){
22
+ return xn(q(n,nn,$),n+"")}(function(n,t){return null==n?{}:O(n,d(t,An))});o.assignIn=Rn,o.before=J,o.bind=wn,o.chain=function(n){return n=o(n),n.__chain__=true,n},o.compact=function(n){return p(n,Boolean)},o.concat=function(){var n=arguments.length;if(!n)return[];for(var r=Array(n-1),e=arguments[0];n--;)r[n-1]=arguments[n];return t(Sn(e)?E(e):[e],s(r,1))},o.create=function(n,t){var r=dn(n);return null==t?r:Bn(r,t)},o.defaults=In,o.defer=kn,o.delay=Nn,o.filter=function(n,t){return p(n,_(t))},o.flatten=$,
23
+ o.flattenDeep=function(n){return(null==n?0:n.length)?s(n,tn):[]},o.iteratee=_,o.keys=qn,o.map=function(n,t){return d(n,_(t))},o.matches=function(n){return m(Bn({},n))},o.mixin=Z,o.negate=function(n){if(typeof n!="function")throw new TypeError("Expected a function");return function(){return!n.apply(this,arguments)}},o.once=function(n){return J(2,n)},o.pick=Pn,o.slice=function(n,t,r){var e=null==n?0:n.length;return r=r===nn?e:+r,e?A(n,null==t?0:+t,r):[]},o.sortBy=function(n,t){var e=0;return t=_(t),
24
+ d(d(n,function(n,r,u){return{value:n,index:e++,criteria:t(n,r,u)}}).sort(function(n,t){var r;n:{r=n.criteria;var e=t.criteria;if(r!==e){var u=r!==nn,o=null===r,i=r===r,c=e!==nn,f=null===e,a=e===e;if(!f&&r>e||o&&c&&a||!u&&a||!i){r=1;break n}if(!o&&r<e||f&&u&&i||!c&&i||!a){r=-1;break n}}r=0}return r||n.index-t.index}),r("value"))},o.tap=function(n,t){return t(n),n},o.thru=function(n,t){return t(n)},o.toArray=function(n){return U(n)?n.length?E(n):[]:X(n)},o.values=X,o.extend=Rn,Z(o,o),o.clone=function(n){
25
+ return H(n)?Sn(n)?E(n):N(n,_n(n)):n},o.escape=function(n){return(n=W(n))&&en.test(n)?n.replace(rn,fn):n},o.every=function(n,t,r){return t=r?nn:t,a(n,_(t))},o.find=En,o.forEach=C,o.has=function(n,t){return null!=n&&pn.call(n,t)},o.head=P,o.identity=Y,o.indexOf=z,o.isArguments=n,o.isArray=Sn,o.isBoolean=function(n){return true===n||false===n||K(n)&&"[object Boolean]"==hn.call(n)},o.isDate=function(n){return K(n)&&"[object Date]"==hn.call(n)},o.isEmpty=function(t){return U(t)&&(Sn(t)||Q(t)||V(t.splice)||n(t))?!t.length:!_n(t).length;
26
+ },o.isEqual=function(n,t){return b(n,t)},o.isFinite=function(n){return typeof n=="number"&&gn(n)},o.isFunction=V,o.isNaN=function(n){return L(n)&&n!=+n},o.isNull=function(n){return null===n},o.isNumber=L,o.isObject=H,o.isRegExp=function(n){return K(n)&&"[object RegExp]"==hn.call(n)},o.isString=Q,o.isUndefined=function(n){return n===nn},o.last=function(n){var t=null==n?0:n.length;return t?n[t-1]:nn},o.max=function(n){return n&&n.length?l(n,Y,y):nn},o.min=function(n){return n&&n.length?l(n,Y,j):nn},
27
+ o.noConflict=function(){return on._===this&&(on._=vn),this},o.noop=function(){},o.reduce=G,o.result=function(n,t,r){return t=null==n?nn:n[t],t===nn&&(t=r),V(t)?t.call(n):t},o.size=function(n){return null==n?0:(n=U(n)?n:_n(n),n.length)},o.some=function(n,t,r){return t=r?nn:t,w(n,_(t))},o.uniqueId=function(n){var t=++sn;return W(n)+t},o.each=C,o.first=P,Z(o,function(){var n={};return h(o,function(t,r){pn.call(o.prototype,r)||(n[r]=t)}),n}(),{chain:false}),o.VERSION="4.16.6",mn("pop join replace reverse split push shift sort splice unshift".split(" "),function(n){
28
28
  var t=(/^(?:replace|split)$/.test(n)?String.prototype:an)[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|join|replace|shift)$/.test(n);o.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var u=this.value();return t.apply(Sn(u)?u:[],n)}return this[r](function(r){return t.apply(Sn(r)?r:[],n)})}}),o.prototype.toJSON=o.prototype.valueOf=o.prototype.value=function(){return k(this.__wrapped__,this.__actions__)},typeof define=="function"&&typeof define.amd=="object"&&define.amd?(on._=o,
29
29
  define(function(){return o})):cn?((cn.exports=o)._=o,un._=o):on._=o}).call(this);
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  * lodash <https://lodash.com/>
4
- * Copyright jQuery Foundation and other contributors <https://jquery.org/>
4
+ * Copyright JS Foundation and other contributors <https://js.foundation/>
5
5
  * Released under MIT license <https://lodash.com/license>
6
6
  * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
7
7
  * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
@@ -12,7 +12,7 @@
12
12
  var undefined;
13
13
 
14
14
  /** Used as the semantic version number. */
15
- var VERSION = '4.16.4';
15
+ var VERSION = '4.16.6';
16
16
 
17
17
  /** Used as the size to enable large array optimizations. */
18
18
  var LARGE_ARRAY_SIZE = 200;
@@ -51,7 +51,7 @@
51
51
  DEFAULT_TRUNC_OMISSION = '...';
52
52
 
53
53
  /** Used to detect hot functions by number of calls within a span of milliseconds. */
54
- var HOT_COUNT = 500,
54
+ var HOT_COUNT = 800,
55
55
  HOT_SPAN = 16;
56
56
 
57
57
  /** Used to indicate the type of lazy iteratees. */
@@ -86,13 +86,16 @@
86
86
  /** `Object#toString` result references. */
87
87
  var argsTag = '[object Arguments]',
88
88
  arrayTag = '[object Array]',
89
+ asyncTag = '[object AsyncFunction]',
89
90
  boolTag = '[object Boolean]',
90
91
  dateTag = '[object Date]',
92
+ domExcTag = '[object DOMException]',
91
93
  errorTag = '[object Error]',
92
94
  funcTag = '[object Function]',
93
95
  genTag = '[object GeneratorFunction]',
94
96
  mapTag = '[object Map]',
95
97
  numberTag = '[object Number]',
98
+ nullTag = '[object Null]',
96
99
  objectTag = '[object Object]',
97
100
  promiseTag = '[object Promise]',
98
101
  proxyTag = '[object Proxy]',
@@ -100,6 +103,7 @@
100
103
  setTag = '[object Set]',
101
104
  stringTag = '[object String]',
102
105
  symbolTag = '[object Symbol]',
106
+ undefinedTag = '[object Undefined]',
103
107
  weakMapTag = '[object WeakMap]',
104
108
  weakSetTag = '[object WeakSet]';
105
109
 
@@ -225,13 +229,15 @@
225
229
  rsZWJ = '\\u200d';
226
230
 
227
231
  /** Used to compose unicode regexes. */
228
- var rsLowerMisc = '(?:' + rsLower + '|' + rsMisc + ')',
229
- rsUpperMisc = '(?:' + rsUpper + '|' + rsMisc + ')',
230
- rsOptLowerContr = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',
231
- rsOptUpperContr = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',
232
+ var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',
233
+ rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',
234
+ rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',
235
+ rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',
232
236
  reOptMod = rsModifier + '?',
233
237
  rsOptVar = '[' + rsVarRange + ']?',
234
238
  rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
239
+ rsOrdLower = '\\d*(?:(?:1st|2nd|3rd|(?![123])\\dth)\\b)',
240
+ rsOrdUpper = '\\d*(?:(?:1ST|2ND|3RD|(?![123])\\dTH)\\b)',
235
241
  rsSeq = rsOptVar + reOptMod + rsOptJoin,
236
242
  rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,
237
243
  rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
@@ -250,10 +256,12 @@
250
256
 
251
257
  /** Used to match complex or compound words. */
252
258
  var reUnicodeWord = RegExp([
253
- rsUpper + '?' + rsLower + '+' + rsOptLowerContr + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',
254
- rsUpperMisc + '+' + rsOptUpperContr + '(?=' + [rsBreak, rsUpper + rsLowerMisc, '$'].join('|') + ')',
255
- rsUpper + '?' + rsLowerMisc + '+' + rsOptLowerContr,
256
- rsUpper + '+' + rsOptUpperContr,
259
+ rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',
260
+ rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',
261
+ rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,
262
+ rsUpper + '+' + rsOptContrUpper,
263
+ rsOrdUpper,
264
+ rsOrdLower,
257
265
  rsDigits,
258
266
  rsEmoji
259
267
  ].join('|'), 'g');
@@ -496,7 +504,7 @@
496
504
  */
497
505
  function arrayAggregator(array, setter, iteratee, accumulator) {
498
506
  var index = -1,
499
- length = array ? array.length : 0;
507
+ length = array == null ? 0 : array.length;
500
508
 
501
509
  while (++index < length) {
502
510
  var value = array[index];
@@ -516,7 +524,7 @@
516
524
  */
517
525
  function arrayEach(array, iteratee) {
518
526
  var index = -1,
519
- length = array ? array.length : 0;
527
+ length = array == null ? 0 : array.length;
520
528
 
521
529
  while (++index < length) {
522
530
  if (iteratee(array[index], index, array) === false) {
@@ -536,7 +544,7 @@
536
544
  * @returns {Array} Returns `array`.
537
545
  */
538
546
  function arrayEachRight(array, iteratee) {
539
- var length = array ? array.length : 0;
547
+ var length = array == null ? 0 : array.length;
540
548
 
541
549
  while (length--) {
542
550
  if (iteratee(array[length], length, array) === false) {
@@ -558,7 +566,7 @@
558
566
  */
559
567
  function arrayEvery(array, predicate) {
560
568
  var index = -1,
561
- length = array ? array.length : 0;
569
+ length = array == null ? 0 : array.length;
562
570
 
563
571
  while (++index < length) {
564
572
  if (!predicate(array[index], index, array)) {
@@ -579,7 +587,7 @@
579
587
  */
580
588
  function arrayFilter(array, predicate) {
581
589
  var index = -1,
582
- length = array ? array.length : 0,
590
+ length = array == null ? 0 : array.length,
583
591
  resIndex = 0,
584
592
  result = [];
585
593
 
@@ -602,7 +610,7 @@
602
610
  * @returns {boolean} Returns `true` if `target` is found, else `false`.
603
611
  */
604
612
  function arrayIncludes(array, value) {
605
- var length = array ? array.length : 0;
613
+ var length = array == null ? 0 : array.length;
606
614
  return !!length && baseIndexOf(array, value, 0) > -1;
607
615
  }
608
616
 
@@ -617,7 +625,7 @@
617
625
  */
618
626
  function arrayIncludesWith(array, value, comparator) {
619
627
  var index = -1,
620
- length = array ? array.length : 0;
628
+ length = array == null ? 0 : array.length;
621
629
 
622
630
  while (++index < length) {
623
631
  if (comparator(value, array[index])) {
@@ -638,7 +646,7 @@
638
646
  */
639
647
  function arrayMap(array, iteratee) {
640
648
  var index = -1,
641
- length = array ? array.length : 0,
649
+ length = array == null ? 0 : array.length,
642
650
  result = Array(length);
643
651
 
644
652
  while (++index < length) {
@@ -680,7 +688,7 @@
680
688
  */
681
689
  function arrayReduce(array, iteratee, accumulator, initAccum) {
682
690
  var index = -1,
683
- length = array ? array.length : 0;
691
+ length = array == null ? 0 : array.length;
684
692
 
685
693
  if (initAccum && length) {
686
694
  accumulator = array[++index];
@@ -704,7 +712,7 @@
704
712
  * @returns {*} Returns the accumulated value.
705
713
  */
706
714
  function arrayReduceRight(array, iteratee, accumulator, initAccum) {
707
- var length = array ? array.length : 0;
715
+ var length = array == null ? 0 : array.length;
708
716
  if (initAccum && length) {
709
717
  accumulator = array[--length];
710
718
  }
@@ -726,7 +734,7 @@
726
734
  */
727
735
  function arraySome(array, predicate) {
728
736
  var index = -1,
729
- length = array ? array.length : 0;
737
+ length = array == null ? 0 : array.length;
730
738
 
731
739
  while (++index < length) {
732
740
  if (predicate(array[index], index, array)) {
@@ -870,7 +878,7 @@
870
878
  * @returns {number} Returns the mean.
871
879
  */
872
880
  function baseMean(array, iteratee) {
873
- var length = array ? array.length : 0;
881
+ var length = array == null ? 0 : array.length;
874
882
  return length ? (baseSum(array, iteratee) / length) : NAN;
875
883
  }
876
884
 
@@ -1410,7 +1418,7 @@
1410
1418
  * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;
1411
1419
  */
1412
1420
  var runInContext = (function runInContext(context) {
1413
- context = context ? _.defaults(root.Object(), context, _.pick(root, contextProps)) : root;
1421
+ context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));
1414
1422
 
1415
1423
  /** Built-in constructor references. */
1416
1424
  var Array = context.Array,
@@ -1431,12 +1439,6 @@
1431
1439
  /** Used to detect overreaching core-js shims. */
1432
1440
  var coreJsData = context['__core-js_shared__'];
1433
1441
 
1434
- /** Used to detect methods masquerading as native. */
1435
- var maskSrcKey = (function() {
1436
- var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
1437
- return uid ? ('Symbol(src)_1.' + uid) : '';
1438
- }());
1439
-
1440
1442
  /** Used to resolve the decompiled source of functions. */
1441
1443
  var funcToString = funcProto.toString;
1442
1444
 
@@ -1446,15 +1448,21 @@
1446
1448
  /** Used to generate unique IDs. */
1447
1449
  var idCounter = 0;
1448
1450
 
1449
- /** Used to infer the `Object` constructor. */
1450
- var objectCtorString = funcToString.call(Object);
1451
+ /** Used to detect methods masquerading as native. */
1452
+ var maskSrcKey = (function() {
1453
+ var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
1454
+ return uid ? ('Symbol(src)_1.' + uid) : '';
1455
+ }());
1451
1456
 
1452
1457
  /**
1453
1458
  * Used to resolve the
1454
1459
  * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
1455
1460
  * of values.
1456
1461
  */
1457
- var objectToString = objectProto.toString;
1462
+ var nativeObjectToString = objectProto.toString;
1463
+
1464
+ /** Used to infer the `Object` constructor. */
1465
+ var objectCtorString = funcToString.call(Object);
1458
1466
 
1459
1467
  /** Used to restore the original `_` reference in `_.noConflict`. */
1460
1468
  var oldDash = root._;
@@ -1471,11 +1479,12 @@
1471
1479
  Uint8Array = context.Uint8Array,
1472
1480
  allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,
1473
1481
  getPrototype = overArg(Object.getPrototypeOf, Object),
1474
- iteratorSymbol = Symbol ? Symbol.iterator : undefined,
1475
1482
  objectCreate = Object.create,
1476
1483
  propertyIsEnumerable = objectProto.propertyIsEnumerable,
1477
1484
  splice = arrayProto.splice,
1478
- spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;
1485
+ spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,
1486
+ symIterator = Symbol ? Symbol.iterator : undefined,
1487
+ symToStringTag = Symbol ? Symbol.toStringTag : undefined;
1479
1488
 
1480
1489
  var defineProperty = (function() {
1481
1490
  try {
@@ -1909,7 +1918,7 @@
1909
1918
  */
1910
1919
  function Hash(entries) {
1911
1920
  var index = -1,
1912
- length = entries ? entries.length : 0;
1921
+ length = entries == null ? 0 : entries.length;
1913
1922
 
1914
1923
  this.clear();
1915
1924
  while (++index < length) {
@@ -2013,7 +2022,7 @@
2013
2022
  */
2014
2023
  function ListCache(entries) {
2015
2024
  var index = -1,
2016
- length = entries ? entries.length : 0;
2025
+ length = entries == null ? 0 : entries.length;
2017
2026
 
2018
2027
  this.clear();
2019
2028
  while (++index < length) {
@@ -2130,7 +2139,7 @@
2130
2139
  */
2131
2140
  function MapCache(entries) {
2132
2141
  var index = -1,
2133
- length = entries ? entries.length : 0;
2142
+ length = entries == null ? 0 : entries.length;
2134
2143
 
2135
2144
  this.clear();
2136
2145
  while (++index < length) {
@@ -2234,7 +2243,7 @@
2234
2243
  */
2235
2244
  function SetCache(values) {
2236
2245
  var index = -1,
2237
- length = values ? values.length : 0;
2246
+ length = values == null ? 0 : values.length;
2238
2247
 
2239
2248
  this.__data__ = new MapCache;
2240
2249
  while (++index < length) {
@@ -2581,12 +2590,12 @@
2581
2590
  */
2582
2591
  function baseAt(object, paths) {
2583
2592
  var index = -1,
2584
- isNil = object == null,
2585
2593
  length = paths.length,
2586
- result = Array(length);
2594
+ result = Array(length),
2595
+ skip = object == null;
2587
2596
 
2588
2597
  while (++index < length) {
2589
- result[index] = isNil ? undefined : get(object, paths[index]);
2598
+ result[index] = skip ? undefined : get(object, paths[index]);
2590
2599
  }
2591
2600
  return result;
2592
2601
  }
@@ -2776,7 +2785,7 @@
2776
2785
  outer:
2777
2786
  while (++index < length) {
2778
2787
  var value = array[index],
2779
- computed = iteratee ? iteratee(value) : value;
2788
+ computed = iteratee == null ? value : iteratee(value);
2780
2789
 
2781
2790
  value = (comparator || value !== 0) ? value : 0;
2782
2791
  if (isCommon && computed === computed) {
@@ -3043,14 +3052,20 @@
3043
3052
  }
3044
3053
 
3045
3054
  /**
3046
- * The base implementation of `getTag`.
3055
+ * The base implementation of `getTag` without fallbacks for buggy environments.
3047
3056
  *
3048
3057
  * @private
3049
3058
  * @param {*} value The value to query.
3050
3059
  * @returns {string} Returns the `toStringTag`.
3051
3060
  */
3052
3061
  function baseGetTag(value) {
3053
- return objectToString.call(value);
3062
+ if (value == null) {
3063
+ return value === undefined ? undefinedTag : nullTag;
3064
+ }
3065
+ value = Object(value);
3066
+ return (symToStringTag && symToStringTag in value)
3067
+ ? getRawTag(value)
3068
+ : objectToString(value);
3054
3069
  }
3055
3070
 
3056
3071
  /**
@@ -3212,7 +3227,7 @@
3212
3227
  * @returns {boolean} Returns `true` if `value` is an `arguments` object,
3213
3228
  */
3214
3229
  function baseIsArguments(value) {
3215
- return isObjectLike(value) && objectToString.call(value) == argsTag;
3230
+ return isObjectLike(value) && baseGetTag(value) == argsTag;
3216
3231
  }
3217
3232
 
3218
3233
  /**
@@ -3223,7 +3238,7 @@
3223
3238
  * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
3224
3239
  */
3225
3240
  function baseIsArrayBuffer(value) {
3226
- return isObjectLike(value) && objectToString.call(value) == arrayBufferTag;
3241
+ return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;
3227
3242
  }
3228
3243
 
3229
3244
  /**
@@ -3234,7 +3249,7 @@
3234
3249
  * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
3235
3250
  */
3236
3251
  function baseIsDate(value) {
3237
- return isObjectLike(value) && objectToString.call(value) == dateTag;
3252
+ return isObjectLike(value) && baseGetTag(value) == dateTag;
3238
3253
  }
3239
3254
 
3240
3255
  /**
@@ -3416,7 +3431,7 @@
3416
3431
  * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
3417
3432
  */
3418
3433
  function baseIsRegExp(value) {
3419
- return isObject(value) && objectToString.call(value) == regexpTag;
3434
+ return isObjectLike(value) && baseGetTag(value) == regexpTag;
3420
3435
  }
3421
3436
 
3422
3437
  /**
@@ -3439,7 +3454,7 @@
3439
3454
  */
3440
3455
  function baseIsTypedArray(value) {
3441
3456
  return isObjectLike(value) &&
3442
- isLength(value.length) && !!typedArrayTags[objectToString.call(value)];
3457
+ isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
3443
3458
  }
3444
3459
 
3445
3460
  /**
@@ -4100,7 +4115,7 @@
4100
4115
  */
4101
4116
  function baseSortedIndex(array, value, retHighest) {
4102
4117
  var low = 0,
4103
- high = array ? array.length : low;
4118
+ high = array == null ? low : array.length;
4104
4119
 
4105
4120
  if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
4106
4121
  while (low < high) {
@@ -4136,7 +4151,7 @@
4136
4151
  value = iteratee(value);
4137
4152
 
4138
4153
  var low = 0,
4139
- high = array ? array.length : 0,
4154
+ high = array == null ? 0 : array.length,
4140
4155
  valIsNaN = value !== value,
4141
4156
  valIsNull = value === null,
4142
4157
  valIsSymbol = isSymbol(value),
@@ -4386,18 +4401,24 @@
4386
4401
  * @returns {Array} Returns the new array of values.
4387
4402
  */
4388
4403
  function baseXor(arrays, iteratee, comparator) {
4404
+ var length = arrays.length;
4405
+ if (length < 2) {
4406
+ return length ? baseUniq(arrays[0]) : [];
4407
+ }
4389
4408
  var index = -1,
4390
- length = arrays.length;
4409
+ result = Array(length);
4391
4410
 
4392
4411
  while (++index < length) {
4393
- var result = result
4394
- ? arrayPush(
4395
- baseDifference(result, arrays[index], iteratee, comparator),
4396
- baseDifference(arrays[index], result, iteratee, comparator)
4397
- )
4398
- : arrays[index];
4412
+ var array = arrays[index],
4413
+ othIndex = -1;
4414
+
4415
+ while (++othIndex < length) {
4416
+ if (othIndex != index) {
4417
+ result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);
4418
+ }
4419
+ }
4399
4420
  }
4400
- return (result && result.length) ? baseUniq(result, iteratee, comparator) : [];
4421
+ return baseUniq(baseFlatten(result, 1), iteratee, comparator);
4401
4422
  }
4402
4423
 
4403
4424
  /**
@@ -5934,6 +5955,33 @@
5934
5955
  return baseIsNative(value) ? value : undefined;
5935
5956
  }
5936
5957
 
5958
+ /**
5959
+ * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
5960
+ *
5961
+ * @private
5962
+ * @param {*} value The value to query.
5963
+ * @returns {string} Returns the raw `toStringTag`.
5964
+ */
5965
+ function getRawTag(value) {
5966
+ var isOwn = hasOwnProperty.call(value, symToStringTag),
5967
+ tag = value[symToStringTag];
5968
+
5969
+ try {
5970
+ value[symToStringTag] = undefined;
5971
+ var unmasked = true;
5972
+ } catch (e) {}
5973
+
5974
+ var result = nativeObjectToString.call(value);
5975
+ if (unmasked) {
5976
+ if (isOwn) {
5977
+ value[symToStringTag] = tag;
5978
+ } else {
5979
+ delete value[symToStringTag];
5980
+ }
5981
+ }
5982
+ return result;
5983
+ }
5984
+
5937
5985
  /**
5938
5986
  * Creates an array of the own enumerable symbol properties of `object`.
5939
5987
  *
@@ -5976,9 +6024,9 @@
5976
6024
  (Set && getTag(new Set) != setTag) ||
5977
6025
  (WeakMap && getTag(new WeakMap) != weakMapTag)) {
5978
6026
  getTag = function(value) {
5979
- var result = objectToString.call(value),
6027
+ var result = baseGetTag(value),
5980
6028
  Ctor = result == objectTag ? value.constructor : undefined,
5981
- ctorString = Ctor ? toSource(Ctor) : undefined;
6029
+ ctorString = Ctor ? toSource(Ctor) : '';
5982
6030
 
5983
6031
  if (ctorString) {
5984
6032
  switch (ctorString) {
@@ -6059,7 +6107,7 @@
6059
6107
  if (result || ++index != length) {
6060
6108
  return result;
6061
6109
  }
6062
- length = object ? object.length : 0;
6110
+ length = object == null ? 0 : object.length;
6063
6111
  return !!length && isLength(length) && isIndex(key, length) &&
6064
6112
  (isArray(object) || isArguments(object));
6065
6113
  }
@@ -6470,6 +6518,17 @@
6470
6518
  return result;
6471
6519
  }
6472
6520
 
6521
+ /**
6522
+ * Converts `value` to a string using `Object.prototype.toString`.
6523
+ *
6524
+ * @private
6525
+ * @param {*} value The value to convert.
6526
+ * @returns {string} Returns the converted string.
6527
+ */
6528
+ function objectToString(value) {
6529
+ return nativeObjectToString.call(value);
6530
+ }
6531
+
6473
6532
  /**
6474
6533
  * A specialized version of `baseRest` which transforms the rest array.
6475
6534
  *
@@ -6680,7 +6739,7 @@
6680
6739
  * Converts `func` to its source code.
6681
6740
  *
6682
6741
  * @private
6683
- * @param {Function} func The function to process.
6742
+ * @param {Function} func The function to convert.
6684
6743
  * @returns {string} Returns the source code.
6685
6744
  */
6686
6745
  function toSource(func) {
@@ -6760,7 +6819,7 @@
6760
6819
  } else {
6761
6820
  size = nativeMax(toInteger(size), 0);
6762
6821
  }
6763
- var length = array ? array.length : 0;
6822
+ var length = array == null ? 0 : array.length;
6764
6823
  if (!length || size < 1) {
6765
6824
  return [];
6766
6825
  }
@@ -6791,7 +6850,7 @@
6791
6850
  */
6792
6851
  function compact(array) {
6793
6852
  var index = -1,
6794
- length = array ? array.length : 0,
6853
+ length = array == null ? 0 : array.length,
6795
6854
  resIndex = 0,
6796
6855
  result = [];
6797
6856
 
@@ -6963,7 +7022,7 @@
6963
7022
  * // => [1, 2, 3]
6964
7023
  */
6965
7024
  function drop(array, n, guard) {
6966
- var length = array ? array.length : 0;
7025
+ var length = array == null ? 0 : array.length;
6967
7026
  if (!length) {
6968
7027
  return [];
6969
7028
  }
@@ -6997,7 +7056,7 @@
6997
7056
  * // => [1, 2, 3]
6998
7057
  */
6999
7058
  function dropRight(array, n, guard) {
7000
- var length = array ? array.length : 0;
7059
+ var length = array == null ? 0 : array.length;
7001
7060
  if (!length) {
7002
7061
  return [];
7003
7062
  }
@@ -7057,8 +7116,7 @@
7057
7116
  * @since 3.0.0
7058
7117
  * @category Array
7059
7118
  * @param {Array} array The array to query.
7060
- * @param {Function} [predicate=_.identity]
7061
- * The function invoked per iteration.
7119
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
7062
7120
  * @returns {Array} Returns the slice of `array`.
7063
7121
  * @example
7064
7122
  *
@@ -7119,7 +7177,7 @@
7119
7177
  * // => [4, '*', '*', 10]
7120
7178
  */
7121
7179
  function fill(array, value, start, end) {
7122
- var length = array ? array.length : 0;
7180
+ var length = array == null ? 0 : array.length;
7123
7181
  if (!length) {
7124
7182
  return [];
7125
7183
  }
@@ -7139,8 +7197,7 @@
7139
7197
  * @since 1.1.0
7140
7198
  * @category Array
7141
7199
  * @param {Array} array The array to inspect.
7142
- * @param {Function} [predicate=_.identity]
7143
- * The function invoked per iteration.
7200
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
7144
7201
  * @param {number} [fromIndex=0] The index to search from.
7145
7202
  * @returns {number} Returns the index of the found element, else `-1`.
7146
7203
  * @example
@@ -7167,7 +7224,7 @@
7167
7224
  * // => 2
7168
7225
  */
7169
7226
  function findIndex(array, predicate, fromIndex) {
7170
- var length = array ? array.length : 0;
7227
+ var length = array == null ? 0 : array.length;
7171
7228
  if (!length) {
7172
7229
  return -1;
7173
7230
  }
@@ -7187,8 +7244,7 @@
7187
7244
  * @since 2.0.0
7188
7245
  * @category Array
7189
7246
  * @param {Array} array The array to inspect.
7190
- * @param {Function} [predicate=_.identity]
7191
- * The function invoked per iteration.
7247
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
7192
7248
  * @param {number} [fromIndex=array.length-1] The index to search from.
7193
7249
  * @returns {number} Returns the index of the found element, else `-1`.
7194
7250
  * @example
@@ -7215,7 +7271,7 @@
7215
7271
  * // => 0
7216
7272
  */
7217
7273
  function findLastIndex(array, predicate, fromIndex) {
7218
- var length = array ? array.length : 0;
7274
+ var length = array == null ? 0 : array.length;
7219
7275
  if (!length) {
7220
7276
  return -1;
7221
7277
  }
@@ -7244,7 +7300,7 @@
7244
7300
  * // => [1, 2, [3, [4]], 5]
7245
7301
  */
7246
7302
  function flatten(array) {
7247
- var length = array ? array.length : 0;
7303
+ var length = array == null ? 0 : array.length;
7248
7304
  return length ? baseFlatten(array, 1) : [];
7249
7305
  }
7250
7306
 
@@ -7263,7 +7319,7 @@
7263
7319
  * // => [1, 2, 3, 4, 5]
7264
7320
  */
7265
7321
  function flattenDeep(array) {
7266
- var length = array ? array.length : 0;
7322
+ var length = array == null ? 0 : array.length;
7267
7323
  return length ? baseFlatten(array, INFINITY) : [];
7268
7324
  }
7269
7325
 
@@ -7288,7 +7344,7 @@
7288
7344
  * // => [1, 2, 3, [4], 5]
7289
7345
  */
7290
7346
  function flattenDepth(array, depth) {
7291
- var length = array ? array.length : 0;
7347
+ var length = array == null ? 0 : array.length;
7292
7348
  if (!length) {
7293
7349
  return [];
7294
7350
  }
@@ -7313,7 +7369,7 @@
7313
7369
  */
7314
7370
  function fromPairs(pairs) {
7315
7371
  var index = -1,
7316
- length = pairs ? pairs.length : 0,
7372
+ length = pairs == null ? 0 : pairs.length,
7317
7373
  result = {};
7318
7374
 
7319
7375
  while (++index < length) {
@@ -7369,7 +7425,7 @@
7369
7425
  * // => 3
7370
7426
  */
7371
7427
  function indexOf(array, value, fromIndex) {
7372
- var length = array ? array.length : 0;
7428
+ var length = array == null ? 0 : array.length;
7373
7429
  if (!length) {
7374
7430
  return -1;
7375
7431
  }
@@ -7395,7 +7451,7 @@
7395
7451
  * // => [1, 2]
7396
7452
  */
7397
7453
  function initial(array) {
7398
- var length = array ? array.length : 0;
7454
+ var length = array == null ? 0 : array.length;
7399
7455
  return length ? baseSlice(array, 0, -1) : [];
7400
7456
  }
7401
7457
 
@@ -7485,9 +7541,8 @@
7485
7541
  var comparator = last(arrays),
7486
7542
  mapped = arrayMap(arrays, castArrayLikeObject);
7487
7543
 
7488
- if (comparator === last(mapped)) {
7489
- comparator = undefined;
7490
- } else {
7544
+ comparator = typeof comparator == 'function' ? comparator : undefined;
7545
+ if (comparator) {
7491
7546
  mapped.pop();
7492
7547
  }
7493
7548
  return (mapped.length && mapped[0] === arrays[0])
@@ -7511,7 +7566,7 @@
7511
7566
  * // => 'a~b~c'
7512
7567
  */
7513
7568
  function join(array, separator) {
7514
- return array ? nativeJoin.call(array, separator) : '';
7569
+ return array == null ? '' : nativeJoin.call(array, separator);
7515
7570
  }
7516
7571
 
7517
7572
  /**
@@ -7529,7 +7584,7 @@
7529
7584
  * // => 3
7530
7585
  */
7531
7586
  function last(array) {
7532
- var length = array ? array.length : 0;
7587
+ var length = array == null ? 0 : array.length;
7533
7588
  return length ? array[length - 1] : undefined;
7534
7589
  }
7535
7590
 
@@ -7555,7 +7610,7 @@
7555
7610
  * // => 1
7556
7611
  */
7557
7612
  function lastIndexOf(array, value, fromIndex) {
7558
- var length = array ? array.length : 0;
7613
+ var length = array == null ? 0 : array.length;
7559
7614
  if (!length) {
7560
7615
  return -1;
7561
7616
  }
@@ -7658,8 +7713,7 @@
7658
7713
  * @category Array
7659
7714
  * @param {Array} array The array to modify.
7660
7715
  * @param {Array} values The values to remove.
7661
- * @param {Function} [iteratee=_.identity]
7662
- * The iteratee invoked per element.
7716
+ * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
7663
7717
  * @returns {Array} Returns `array`.
7664
7718
  * @example
7665
7719
  *
@@ -7729,7 +7783,7 @@
7729
7783
  * // => ['b', 'd']
7730
7784
  */
7731
7785
  var pullAt = flatRest(function(array, indexes) {
7732
- var length = array ? array.length : 0,
7786
+ var length = array == null ? 0 : array.length,
7733
7787
  result = baseAt(array, indexes);
7734
7788
 
7735
7789
  basePullAt(array, arrayMap(indexes, function(index) {
@@ -7752,8 +7806,7 @@
7752
7806
  * @since 2.0.0
7753
7807
  * @category Array
7754
7808
  * @param {Array} array The array to modify.
7755
- * @param {Function} [predicate=_.identity]
7756
- * The function invoked per iteration.
7809
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
7757
7810
  * @returns {Array} Returns the new array of removed elements.
7758
7811
  * @example
7759
7812
  *
@@ -7813,7 +7866,7 @@
7813
7866
  * // => [3, 2, 1]
7814
7867
  */
7815
7868
  function reverse(array) {
7816
- return array ? nativeReverse.call(array) : array;
7869
+ return array == null ? array : nativeReverse.call(array);
7817
7870
  }
7818
7871
 
7819
7872
  /**
@@ -7833,7 +7886,7 @@
7833
7886
  * @returns {Array} Returns the slice of `array`.
7834
7887
  */
7835
7888
  function slice(array, start, end) {
7836
- var length = array ? array.length : 0;
7889
+ var length = array == null ? 0 : array.length;
7837
7890
  if (!length) {
7838
7891
  return [];
7839
7892
  }
@@ -7880,8 +7933,7 @@
7880
7933
  * @category Array
7881
7934
  * @param {Array} array The sorted array to inspect.
7882
7935
  * @param {*} value The value to evaluate.
7883
- * @param {Function} [iteratee=_.identity]
7884
- * The iteratee invoked per element.
7936
+ * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
7885
7937
  * @returns {number} Returns the index at which `value` should be inserted
7886
7938
  * into `array`.
7887
7939
  * @example
@@ -7916,7 +7968,7 @@
7916
7968
  * // => 1
7917
7969
  */
7918
7970
  function sortedIndexOf(array, value) {
7919
- var length = array ? array.length : 0;
7971
+ var length = array == null ? 0 : array.length;
7920
7972
  if (length) {
7921
7973
  var index = baseSortedIndex(array, value);
7922
7974
  if (index < length && eq(array[index], value)) {
@@ -7959,8 +8011,7 @@
7959
8011
  * @category Array
7960
8012
  * @param {Array} array The sorted array to inspect.
7961
8013
  * @param {*} value The value to evaluate.
7962
- * @param {Function} [iteratee=_.identity]
7963
- * The iteratee invoked per element.
8014
+ * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
7964
8015
  * @returns {number} Returns the index at which `value` should be inserted
7965
8016
  * into `array`.
7966
8017
  * @example
@@ -7995,7 +8046,7 @@
7995
8046
  * // => 3
7996
8047
  */
7997
8048
  function sortedLastIndexOf(array, value) {
7998
- var length = array ? array.length : 0;
8049
+ var length = array == null ? 0 : array.length;
7999
8050
  if (length) {
8000
8051
  var index = baseSortedIndex(array, value, true) - 1;
8001
8052
  if (eq(array[index], value)) {
@@ -8063,7 +8114,7 @@
8063
8114
  * // => [2, 3]
8064
8115
  */
8065
8116
  function tail(array) {
8066
- var length = array ? array.length : 0;
8117
+ var length = array == null ? 0 : array.length;
8067
8118
  return length ? baseSlice(array, 1, length) : [];
8068
8119
  }
8069
8120
 
@@ -8126,7 +8177,7 @@
8126
8177
  * // => []
8127
8178
  */
8128
8179
  function takeRight(array, n, guard) {
8129
- var length = array ? array.length : 0;
8180
+ var length = array == null ? 0 : array.length;
8130
8181
  if (!length) {
8131
8182
  return [];
8132
8183
  }
@@ -8145,8 +8196,7 @@
8145
8196
  * @since 3.0.0
8146
8197
  * @category Array
8147
8198
  * @param {Array} array The array to query.
8148
- * @param {Function} [predicate=_.identity]
8149
- * The function invoked per iteration.
8199
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
8150
8200
  * @returns {Array} Returns the slice of `array`.
8151
8201
  * @example
8152
8202
  *
@@ -8187,8 +8237,7 @@
8187
8237
  * @since 3.0.0
8188
8238
  * @category Array
8189
8239
  * @param {Array} array The array to query.
8190
- * @param {Function} [predicate=_.identity]
8191
- * The function invoked per iteration.
8240
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
8192
8241
  * @returns {Array} Returns the slice of `array`.
8193
8242
  * @example
8194
8243
  *
@@ -8251,8 +8300,7 @@
8251
8300
  * @since 4.0.0
8252
8301
  * @category Array
8253
8302
  * @param {...Array} [arrays] The arrays to inspect.
8254
- * @param {Function} [iteratee=_.identity]
8255
- * The iteratee invoked per element.
8303
+ * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
8256
8304
  * @returns {Array} Returns the new array of combined values.
8257
8305
  * @example
8258
8306
  *
@@ -8294,9 +8342,7 @@
8294
8342
  */
8295
8343
  var unionWith = baseRest(function(arrays) {
8296
8344
  var comparator = last(arrays);
8297
- if (isArrayLikeObject(comparator)) {
8298
- comparator = undefined;
8299
- }
8345
+ comparator = typeof comparator == 'function' ? comparator : undefined;
8300
8346
  return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);
8301
8347
  });
8302
8348
 
@@ -8319,9 +8365,7 @@
8319
8365
  * // => [2, 1]
8320
8366
  */
8321
8367
  function uniq(array) {
8322
- return (array && array.length)
8323
- ? baseUniq(array)
8324
- : [];
8368
+ return (array && array.length) ? baseUniq(array) : [];
8325
8369
  }
8326
8370
 
8327
8371
  /**
@@ -8336,8 +8380,7 @@
8336
8380
  * @since 4.0.0
8337
8381
  * @category Array
8338
8382
  * @param {Array} array The array to inspect.
8339
- * @param {Function} [iteratee=_.identity]
8340
- * The iteratee invoked per element.
8383
+ * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
8341
8384
  * @returns {Array} Returns the new duplicate free array.
8342
8385
  * @example
8343
8386
  *
@@ -8349,9 +8392,7 @@
8349
8392
  * // => [{ 'x': 1 }, { 'x': 2 }]
8350
8393
  */
8351
8394
  function uniqBy(array, iteratee) {
8352
- return (array && array.length)
8353
- ? baseUniq(array, getIteratee(iteratee, 2))
8354
- : [];
8395
+ return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];
8355
8396
  }
8356
8397
 
8357
8398
  /**
@@ -8375,9 +8416,8 @@
8375
8416
  * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]
8376
8417
  */
8377
8418
  function uniqWith(array, comparator) {
8378
- return (array && array.length)
8379
- ? baseUniq(array, undefined, comparator)
8380
- : [];
8419
+ comparator = typeof comparator == 'function' ? comparator : undefined;
8420
+ return (array && array.length) ? baseUniq(array, undefined, comparator) : [];
8381
8421
  }
8382
8422
 
8383
8423
  /**
@@ -8509,8 +8549,7 @@
8509
8549
  * @since 4.0.0
8510
8550
  * @category Array
8511
8551
  * @param {...Array} [arrays] The arrays to inspect.
8512
- * @param {Function} [iteratee=_.identity]
8513
- * The iteratee invoked per element.
8552
+ * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
8514
8553
  * @returns {Array} Returns the new array of filtered values.
8515
8554
  * @example
8516
8555
  *
@@ -8552,9 +8591,7 @@
8552
8591
  */
8553
8592
  var xorWith = baseRest(function(arrays) {
8554
8593
  var comparator = last(arrays);
8555
- if (isArrayLikeObject(comparator)) {
8556
- comparator = undefined;
8557
- }
8594
+ comparator = typeof comparator == 'function' ? comparator : undefined;
8558
8595
  return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);
8559
8596
  });
8560
8597
 
@@ -8625,7 +8662,8 @@
8625
8662
  * @since 3.8.0
8626
8663
  * @category Array
8627
8664
  * @param {...Array} [arrays] The arrays to process.
8628
- * @param {Function} [iteratee=_.identity] The function to combine grouped values.
8665
+ * @param {Function} [iteratee=_.identity] The function to combine
8666
+ * grouped values.
8629
8667
  * @returns {Array} Returns the new array of grouped elements.
8630
8668
  * @example
8631
8669
  *
@@ -9002,8 +9040,7 @@
9002
9040
  * @since 0.5.0
9003
9041
  * @category Collection
9004
9042
  * @param {Array|Object} collection The collection to iterate over.
9005
- * @param {Function} [iteratee=_.identity]
9006
- * The iteratee to transform keys.
9043
+ * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
9007
9044
  * @returns {Object} Returns the composed aggregate object.
9008
9045
  * @example
9009
9046
  *
@@ -9037,8 +9074,7 @@
9037
9074
  * @since 0.1.0
9038
9075
  * @category Collection
9039
9076
  * @param {Array|Object} collection The collection to iterate over.
9040
- * @param {Function} [predicate=_.identity]
9041
- * The function invoked per iteration.
9077
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
9042
9078
  * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
9043
9079
  * @returns {boolean} Returns `true` if all elements pass the predicate check,
9044
9080
  * else `false`.
@@ -9084,8 +9120,7 @@
9084
9120
  * @since 0.1.0
9085
9121
  * @category Collection
9086
9122
  * @param {Array|Object} collection The collection to iterate over.
9087
- * @param {Function} [predicate=_.identity]
9088
- * The function invoked per iteration.
9123
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
9089
9124
  * @returns {Array} Returns the new filtered array.
9090
9125
  * @see _.reject
9091
9126
  * @example
@@ -9125,8 +9160,7 @@
9125
9160
  * @since 0.1.0
9126
9161
  * @category Collection
9127
9162
  * @param {Array|Object} collection The collection to inspect.
9128
- * @param {Function} [predicate=_.identity]
9129
- * The function invoked per iteration.
9163
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
9130
9164
  * @param {number} [fromIndex=0] The index to search from.
9131
9165
  * @returns {*} Returns the matched element, else `undefined`.
9132
9166
  * @example
@@ -9163,8 +9197,7 @@
9163
9197
  * @since 2.0.0
9164
9198
  * @category Collection
9165
9199
  * @param {Array|Object} collection The collection to inspect.
9166
- * @param {Function} [predicate=_.identity]
9167
- * The function invoked per iteration.
9200
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
9168
9201
  * @param {number} [fromIndex=collection.length-1] The index to search from.
9169
9202
  * @returns {*} Returns the matched element, else `undefined`.
9170
9203
  * @example
@@ -9186,8 +9219,7 @@
9186
9219
  * @since 4.0.0
9187
9220
  * @category Collection
9188
9221
  * @param {Array|Object} collection The collection to iterate over.
9189
- * @param {Function} [iteratee=_.identity]
9190
- * The function invoked per iteration.
9222
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
9191
9223
  * @returns {Array} Returns the new flattened array.
9192
9224
  * @example
9193
9225
  *
@@ -9211,8 +9243,7 @@
9211
9243
  * @since 4.7.0
9212
9244
  * @category Collection
9213
9245
  * @param {Array|Object} collection The collection to iterate over.
9214
- * @param {Function} [iteratee=_.identity]
9215
- * The function invoked per iteration.
9246
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
9216
9247
  * @returns {Array} Returns the new flattened array.
9217
9248
  * @example
9218
9249
  *
@@ -9236,8 +9267,7 @@
9236
9267
  * @since 4.7.0
9237
9268
  * @category Collection
9238
9269
  * @param {Array|Object} collection The collection to iterate over.
9239
- * @param {Function} [iteratee=_.identity]
9240
- * The function invoked per iteration.
9270
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
9241
9271
  * @param {number} [depth=1] The maximum recursion depth.
9242
9272
  * @returns {Array} Returns the new flattened array.
9243
9273
  * @example
@@ -9326,8 +9356,7 @@
9326
9356
  * @since 0.1.0
9327
9357
  * @category Collection
9328
9358
  * @param {Array|Object} collection The collection to iterate over.
9329
- * @param {Function} [iteratee=_.identity]
9330
- * The iteratee to transform keys.
9359
+ * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
9331
9360
  * @returns {Object} Returns the composed aggregate object.
9332
9361
  * @example
9333
9362
  *
@@ -9436,8 +9465,7 @@
9436
9465
  * @since 4.0.0
9437
9466
  * @category Collection
9438
9467
  * @param {Array|Object} collection The collection to iterate over.
9439
- * @param {Function} [iteratee=_.identity]
9440
- * The iteratee to transform keys.
9468
+ * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
9441
9469
  * @returns {Object} Returns the composed aggregate object.
9442
9470
  * @example
9443
9471
  *
@@ -10452,7 +10480,7 @@
10452
10480
  * function. Its creation may be customized by replacing the `_.memoize.Cache`
10453
10481
  * constructor with one whose instances implement the
10454
10482
  * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
10455
- * method interface of `delete`, `get`, `has`, and `set`.
10483
+ * method interface of `clear`, `delete`, `get`, `has`, and `set`.
10456
10484
  *
10457
10485
  * @static
10458
10486
  * @memberOf _
@@ -10486,7 +10514,7 @@
10486
10514
  * _.memoize.Cache = WeakMap;
10487
10515
  */
10488
10516
  function memoize(func, resolver) {
10489
- if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {
10517
+ if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
10490
10518
  throw new TypeError(FUNC_ERROR_TEXT);
10491
10519
  }
10492
10520
  var memoized = function() {
@@ -10902,8 +10930,7 @@
10902
10930
  * // => '<p>fred, barney, &amp; pebbles</p>'
10903
10931
  */
10904
10932
  function wrap(value, wrapper) {
10905
- wrapper = wrapper == null ? identity : wrapper;
10906
- return partial(wrapper, value);
10933
+ return partial(castFunction(wrapper), value);
10907
10934
  }
10908
10935
 
10909
10936
  /*------------------------------------------------------------------------*/
@@ -11011,6 +11038,7 @@
11011
11038
  * // => 0
11012
11039
  */
11013
11040
  function cloneWith(value, customizer) {
11041
+ customizer = typeof customizer == 'function' ? customizer : undefined;
11014
11042
  return baseClone(value, false, true, customizer);
11015
11043
  }
11016
11044
 
@@ -11065,6 +11093,7 @@
11065
11093
  * // => 20
11066
11094
  */
11067
11095
  function cloneDeepWith(value, customizer) {
11096
+ customizer = typeof customizer == 'function' ? customizer : undefined;
11068
11097
  return baseClone(value, true, true, customizer);
11069
11098
  }
11070
11099
 
@@ -11328,7 +11357,7 @@
11328
11357
  */
11329
11358
  function isBoolean(value) {
11330
11359
  return value === true || value === false ||
11331
- (isObjectLike(value) && objectToString.call(value) == boolTag);
11360
+ (isObjectLike(value) && baseGetTag(value) == boolTag);
11332
11361
  }
11333
11362
 
11334
11363
  /**
@@ -11387,7 +11416,7 @@
11387
11416
  * // => false
11388
11417
  */
11389
11418
  function isElement(value) {
11390
- return value != null && value.nodeType === 1 && isObjectLike(value) && !isPlainObject(value);
11419
+ return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);
11391
11420
  }
11392
11421
 
11393
11422
  /**
@@ -11424,6 +11453,9 @@
11424
11453
  * // => false
11425
11454
  */
11426
11455
  function isEmpty(value) {
11456
+ if (value == null) {
11457
+ return true;
11458
+ }
11427
11459
  if (isArrayLike(value) &&
11428
11460
  (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||
11429
11461
  isBuffer(value) || isTypedArray(value) || isArguments(value))) {
@@ -11536,8 +11568,9 @@
11536
11568
  if (!isObjectLike(value)) {
11537
11569
  return false;
11538
11570
  }
11539
- return (objectToString.call(value) == errorTag) ||
11540
- (typeof value.message == 'string' && typeof value.name == 'string');
11571
+ var tag = baseGetTag(value);
11572
+ return tag == errorTag || tag == domExcTag ||
11573
+ (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));
11541
11574
  }
11542
11575
 
11543
11576
  /**
@@ -11588,10 +11621,13 @@
11588
11621
  * // => false
11589
11622
  */
11590
11623
  function isFunction(value) {
11624
+ if (!isObject(value)) {
11625
+ return false;
11626
+ }
11591
11627
  // The use of `Object#toString` avoids issues with the `typeof` operator
11592
- // in Safari 9 which returns 'object' for typed array and other constructors.
11593
- var tag = isObject(value) ? objectToString.call(value) : '';
11594
- return tag == funcTag || tag == genTag || tag == proxyTag;
11628
+ // in Safari 9 which returns 'object' for typed arrays and other constructors.
11629
+ var tag = baseGetTag(value);
11630
+ return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
11595
11631
  }
11596
11632
 
11597
11633
  /**
@@ -11942,7 +11978,7 @@
11942
11978
  */
11943
11979
  function isNumber(value) {
11944
11980
  return typeof value == 'number' ||
11945
- (isObjectLike(value) && objectToString.call(value) == numberTag);
11981
+ (isObjectLike(value) && baseGetTag(value) == numberTag);
11946
11982
  }
11947
11983
 
11948
11984
  /**
@@ -11974,7 +12010,7 @@
11974
12010
  * // => true
11975
12011
  */
11976
12012
  function isPlainObject(value) {
11977
- if (!isObjectLike(value) || objectToString.call(value) != objectTag) {
12013
+ if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
11978
12014
  return false;
11979
12015
  }
11980
12016
  var proto = getPrototype(value);
@@ -11982,8 +12018,8 @@
11982
12018
  return true;
11983
12019
  }
11984
12020
  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
11985
- return (typeof Ctor == 'function' &&
11986
- Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString);
12021
+ return typeof Ctor == 'function' && Ctor instanceof Ctor &&
12022
+ funcToString.call(Ctor) == objectCtorString;
11987
12023
  }
11988
12024
 
11989
12025
  /**
@@ -12074,7 +12110,7 @@
12074
12110
  */
12075
12111
  function isString(value) {
12076
12112
  return typeof value == 'string' ||
12077
- (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);
12113
+ (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
12078
12114
  }
12079
12115
 
12080
12116
  /**
@@ -12096,7 +12132,7 @@
12096
12132
  */
12097
12133
  function isSymbol(value) {
12098
12134
  return typeof value == 'symbol' ||
12099
- (isObjectLike(value) && objectToString.call(value) == symbolTag);
12135
+ (isObjectLike(value) && baseGetTag(value) == symbolTag);
12100
12136
  }
12101
12137
 
12102
12138
  /**
@@ -12178,7 +12214,7 @@
12178
12214
  * // => false
12179
12215
  */
12180
12216
  function isWeakSet(value) {
12181
- return isObjectLike(value) && objectToString.call(value) == weakSetTag;
12217
+ return isObjectLike(value) && baseGetTag(value) == weakSetTag;
12182
12218
  }
12183
12219
 
12184
12220
  /**
@@ -12263,8 +12299,8 @@
12263
12299
  if (isArrayLike(value)) {
12264
12300
  return isString(value) ? stringToArray(value) : copyArray(value);
12265
12301
  }
12266
- if (iteratorSymbol && value[iteratorSymbol]) {
12267
- return iteratorToArray(value[iteratorSymbol]());
12302
+ if (symIterator && value[symIterator]) {
12303
+ return iteratorToArray(value[symIterator]());
12268
12304
  }
12269
12305
  var tag = getTag(value),
12270
12306
  func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);
@@ -12697,7 +12733,7 @@
12697
12733
  */
12698
12734
  function create(prototype, properties) {
12699
12735
  var result = baseCreate(prototype);
12700
- return properties ? baseAssign(result, properties) : result;
12736
+ return properties == null ? result : baseAssign(result, properties);
12701
12737
  }
12702
12738
 
12703
12739
  /**
@@ -13804,7 +13840,7 @@
13804
13840
  * // => ['h', 'i']
13805
13841
  */
13806
13842
  function values(object) {
13807
- return object ? baseValues(object, keys(object)) : [];
13843
+ return object == null ? [] : baseValues(object, keys(object));
13808
13844
  }
13809
13845
 
13810
13846
  /**
@@ -15191,7 +15227,7 @@
15191
15227
  * // => 'no match'
15192
15228
  */
15193
15229
  function cond(pairs) {
15194
- var length = pairs ? pairs.length : 0,
15230
+ var length = pairs == null ? 0 : pairs.length,
15195
15231
  toIteratee = getIteratee();
15196
15232
 
15197
15233
  pairs = !length ? [] : arrayMap(pairs, function(pair) {
@@ -16943,8 +16979,8 @@
16943
16979
  // Add lazy aliases.
16944
16980
  lodash.prototype.first = lodash.prototype.head;
16945
16981
 
16946
- if (iteratorSymbol) {
16947
- lodash.prototype[iteratorSymbol] = wrapperToIterator;
16982
+ if (symIterator) {
16983
+ lodash.prototype[symIterator] = wrapperToIterator;
16948
16984
  }
16949
16985
  return lodash;
16950
16986
  });