fluxxor-rails 1.7.0 → 1.7.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6b3e701a956a47f55842451daa987fde6143ec77
4
- data.tar.gz: 322cb20dc13cd402d51cc7f9accd2e0d69639b28
3
+ metadata.gz: bbd6cb4298d572680aba085a4d1ad7b42204c653
4
+ data.tar.gz: 038d256abed43d5804695d6a3627bbff82e11332
5
5
  SHA512:
6
- metadata.gz: 782eaee92bee84f7d0107475f4708cf4458c8e1dfc5e718fd21721862e06f344a688b8e3747fb401bd19feae4a1d00dc7b8cbde01afb156ec07aeb176a485f37
7
- data.tar.gz: 2dade992b852bcaea20563afba1bffbaa102fa61d699b47a050baa5948af6b65abd72d3f9051323ebd326b695c9b8dd29bbdf2f14d45b074ceae0509c2309526
6
+ metadata.gz: 394236b88d156d33edf592f42e2bd22f3f80408e97ae2798331dac4056024b0fc99813789737cc5356b5ba2ae65429180bdefc1d716d387ea965808b5b00701b
7
+ data.tar.gz: 617f0dd4b1b2272f361d23387890e519a009f6a3b0853db65d96a9514cca6483059a8c6d40bff0adf0b4add2487c85b51eea96ea396b2cf50c7a944abb520cc6
@@ -1,5 +1,5 @@
1
1
  module Fluxxor
2
2
  module Rails
3
- VERSION = '1.7.0'
3
+ VERSION = '1.7.1'
4
4
  end
5
5
  end
@@ -78,16 +78,16 @@ return /******/ (function(modules) { // webpackBootstrap
78
78
  /* 1 */
79
79
  /***/ function(module, exports, __webpack_require__) {
80
80
 
81
- var _clone = __webpack_require__(18),
82
- _mapValues = __webpack_require__(19),
83
- _forOwn = __webpack_require__(20),
84
- _intersection = __webpack_require__(23),
85
- _keys = __webpack_require__(21),
86
- _map = __webpack_require__(14),
87
- _each = __webpack_require__(12),
88
- _size = __webpack_require__(15),
89
- _findKey = __webpack_require__(22),
90
- _uniq = __webpack_require__(24);
81
+ var _clone = __webpack_require__(12),
82
+ _mapValues = __webpack_require__(15),
83
+ _forOwn = __webpack_require__(16),
84
+ _intersection = __webpack_require__(19),
85
+ _keys = __webpack_require__(17),
86
+ _map = __webpack_require__(21),
87
+ _each = __webpack_require__(22),
88
+ _size = __webpack_require__(23),
89
+ _findKey = __webpack_require__(18),
90
+ _uniq = __webpack_require__(20);
91
91
 
92
92
  var defaultDispatchInterceptor = function(action, dispatch) {
93
93
  dispatch(action);
@@ -249,10 +249,10 @@ return /******/ (function(modules) { // webpackBootstrap
249
249
  var EventEmitter = __webpack_require__(10),
250
250
  inherits = __webpack_require__(8),
251
251
  objectPath = __webpack_require__(11),
252
- _each = __webpack_require__(12),
253
- _reduce = __webpack_require__(13),
254
- _isFunction = __webpack_require__(16),
255
- _isString = __webpack_require__(17);
252
+ _each = __webpack_require__(22),
253
+ _reduce = __webpack_require__(24),
254
+ _isFunction = __webpack_require__(13),
255
+ _isString = __webpack_require__(14);
256
256
 
257
257
  var Dispatcher = __webpack_require__(1);
258
258
 
@@ -453,7 +453,7 @@ return /******/ (function(modules) { // webpackBootstrap
453
453
  /* 5 */
454
454
  /***/ function(module, exports, __webpack_require__) {
455
455
 
456
- var _each = __webpack_require__(12);
456
+ var _each = __webpack_require__(22);
457
457
 
458
458
  var StoreWatchMixin = function() {
459
459
  var storeNames = Array.prototype.slice.call(arguments);
@@ -497,8 +497,8 @@ return /******/ (function(modules) { // webpackBootstrap
497
497
  /* 6 */
498
498
  /***/ function(module, exports, __webpack_require__) {
499
499
 
500
- var _each = __webpack_require__(12),
501
- _isFunction = __webpack_require__(16),
500
+ var _each = __webpack_require__(22),
501
+ _isFunction = __webpack_require__(13),
502
502
  Store = __webpack_require__(9),
503
503
  inherits = __webpack_require__(8);
504
504
 
@@ -543,7 +543,7 @@ return /******/ (function(modules) { // webpackBootstrap
543
543
  /* 7 */
544
544
  /***/ function(module, exports, __webpack_require__) {
545
545
 
546
- module.exports = "1.7.0"
546
+ module.exports = "1.7.1"
547
547
 
548
548
  /***/ },
549
549
  /* 8 */
@@ -600,7 +600,7 @@ return /******/ (function(modules) { // webpackBootstrap
600
600
 
601
601
  var EventEmitter = __webpack_require__(10),
602
602
  inherits = __webpack_require__(8),
603
- _isFunction = __webpack_require__(16),
603
+ _isFunction = __webpack_require__(13),
604
604
  _isObject = __webpack_require__(25);
605
605
 
606
606
  function Store(dispatcher) {
@@ -1155,210 +1155,83 @@ return /******/ (function(modules) { // webpackBootstrap
1155
1155
  /* 12 */
1156
1156
  /***/ function(module, exports, __webpack_require__) {
1157
1157
 
1158
- var arrayEach = __webpack_require__(30),
1159
- baseEach = __webpack_require__(31),
1160
- createForEach = __webpack_require__(32);
1158
+ var baseClone = __webpack_require__(26),
1159
+ bindCallback = __webpack_require__(27),
1160
+ isIterateeCall = __webpack_require__(28);
1161
1161
 
1162
1162
  /**
1163
- * Iterates over elements of `collection` invoking `iteratee` for each element.
1164
- * The `iteratee` is bound to `thisArg` and invoked with three arguments:
1165
- * (value, index|key, collection). Iteratee functions may exit iteration early
1166
- * by explicitly returning `false`.
1167
- *
1168
- * **Note:** As with other "Collections" methods, objects with a "length" property
1169
- * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn`
1170
- * may be used for object iteration.
1171
- *
1172
- * @static
1173
- * @memberOf _
1174
- * @alias each
1175
- * @category Collection
1176
- * @param {Array|Object|string} collection The collection to iterate over.
1177
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
1178
- * @param {*} [thisArg] The `this` binding of `iteratee`.
1179
- * @returns {Array|Object|string} Returns `collection`.
1180
- * @example
1181
- *
1182
- * _([1, 2]).forEach(function(n) {
1183
- * console.log(n);
1184
- * }).value();
1185
- * // => logs each value from left to right and returns the array
1186
- *
1187
- * _.forEach({ 'a': 1, 'b': 2 }, function(n, key) {
1188
- * console.log(n, key);
1189
- * });
1190
- * // => logs each value-key pair and returns the object (iteration order is not guaranteed)
1191
- */
1192
- var forEach = createForEach(arrayEach, baseEach);
1193
-
1194
- module.exports = forEach;
1195
-
1196
-
1197
- /***/ },
1198
- /* 13 */
1199
- /***/ function(module, exports, __webpack_require__) {
1200
-
1201
- var arrayReduce = __webpack_require__(33),
1202
- baseEach = __webpack_require__(31),
1203
- createReduce = __webpack_require__(34);
1204
-
1205
- /**
1206
- * Reduces `collection` to a value which is the accumulated result of running
1207
- * each element in `collection` through `iteratee`, where each successive
1208
- * invocation is supplied the return value of the previous. If `accumulator`
1209
- * is not provided the first element of `collection` is used as the initial
1210
- * value. The `iteratee` is bound to `thisArg` and invoked with four arguments:
1211
- * (accumulator, value, index|key, collection).
1212
- *
1213
- * Many lodash methods are guarded to work as interatees for methods like
1214
- * `_.reduce`, `_.reduceRight`, and `_.transform`.
1215
- *
1216
- * The guarded methods are:
1217
- * `assign`, `defaults`, `includes`, `merge`, `sortByAll`, and `sortByOrder`
1218
- *
1219
- * @static
1220
- * @memberOf _
1221
- * @alias foldl, inject
1222
- * @category Collection
1223
- * @param {Array|Object|string} collection The collection to iterate over.
1224
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
1225
- * @param {*} [accumulator] The initial value.
1226
- * @param {*} [thisArg] The `this` binding of `iteratee`.
1227
- * @returns {*} Returns the accumulated value.
1228
- * @example
1229
- *
1230
- * _.reduce([1, 2], function(total, n) {
1231
- * return total + n;
1232
- * });
1233
- * // => 3
1234
- *
1235
- * _.reduce({ 'a': 1, 'b': 2 }, function(result, n, key) {
1236
- * result[key] = n * 3;
1237
- * return result;
1238
- * }, {});
1239
- * // => { 'a': 3, 'b': 6 } (iteration order is not guaranteed)
1240
- */
1241
- var reduce = createReduce(arrayReduce, baseEach);
1242
-
1243
- module.exports = reduce;
1244
-
1245
-
1246
- /***/ },
1247
- /* 14 */
1248
- /***/ function(module, exports, __webpack_require__) {
1249
-
1250
- var arrayMap = __webpack_require__(26),
1251
- baseCallback = __webpack_require__(27),
1252
- baseMap = __webpack_require__(28),
1253
- isArray = __webpack_require__(29);
1254
-
1255
- /**
1256
- * Creates an array of values by running each element in `collection` through
1257
- * `iteratee`. The `iteratee` is bound to `thisArg` and invoked with three
1258
- * arguments: (value, index|key, collection).
1259
- *
1260
- * If a property name is provided for `iteratee` the created `_.property`
1261
- * style callback returns the property value of the given element.
1262
- *
1263
- * If a value is also provided for `thisArg` the created `_.matchesProperty`
1264
- * style callback returns `true` for elements that have a matching property
1265
- * value, else `false`.
1266
- *
1267
- * If an object is provided for `iteratee` the created `_.matches` style
1268
- * callback returns `true` for elements that have the properties of the given
1269
- * object, else `false`.
1270
- *
1271
- * Many lodash methods are guarded to work as interatees for methods like
1272
- * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
1163
+ * Creates a clone of `value`. If `isDeep` is `true` nested objects are cloned,
1164
+ * otherwise they are assigned by reference. If `customizer` is provided it's
1165
+ * invoked to produce the cloned values. If `customizer` returns `undefined`
1166
+ * cloning is handled by the method instead. The `customizer` is bound to
1167
+ * `thisArg` and invoked with up to three argument; (value [, index|key, object]).
1273
1168
  *
1274
- * The guarded methods are:
1275
- * `ary`, `callback`, `chunk`, `clone`, `create`, `curry`, `curryRight`,
1276
- * `drop`, `dropRight`, `every`, `fill`, `flatten`, `invert`, `max`, `min`,
1277
- * `parseInt`, `slice`, `sortBy`, `take`, `takeRight`, `template`, `trim`,
1278
- * `trimLeft`, `trimRight`, `trunc`, `random`, `range`, `sample`, `some`,
1279
- * `sum`, `uniq`, and `words`
1169
+ * **Note:** This method is loosely based on the
1170
+ * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm).
1171
+ * The enumerable properties of `arguments` objects and objects created by
1172
+ * constructors other than `Object` are cloned to plain `Object` objects. An
1173
+ * empty object is returned for uncloneable values such as functions, DOM nodes,
1174
+ * Maps, Sets, and WeakMaps.
1280
1175
  *
1281
1176
  * @static
1282
1177
  * @memberOf _
1283
- * @alias collect
1284
- * @category Collection
1285
- * @param {Array|Object|string} collection The collection to iterate over.
1286
- * @param {Function|Object|string} [iteratee=_.identity] The function invoked
1287
- * per iteration.
1288
- * @param {*} [thisArg] The `this` binding of `iteratee`.
1289
- * @returns {Array} Returns the new mapped array.
1178
+ * @category Lang
1179
+ * @param {*} value The value to clone.
1180
+ * @param {boolean} [isDeep] Specify a deep clone.
1181
+ * @param {Function} [customizer] The function to customize cloning values.
1182
+ * @param {*} [thisArg] The `this` binding of `customizer`.
1183
+ * @returns {*} Returns the cloned value.
1290
1184
  * @example
1291
1185
  *
1292
- * function timesThree(n) {
1293
- * return n * 3;
1294
- * }
1295
- *
1296
- * _.map([1, 2], timesThree);
1297
- * // => [3, 6]
1298
- *
1299
- * _.map({ 'a': 1, 'b': 2 }, timesThree);
1300
- * // => [3, 6] (iteration order is not guaranteed)
1301
- *
1302
1186
  * var users = [
1303
1187
  * { 'user': 'barney' },
1304
1188
  * { 'user': 'fred' }
1305
1189
  * ];
1306
1190
  *
1307
- * // using the `_.property` callback shorthand
1308
- * _.map(users, 'user');
1309
- * // => ['barney', 'fred']
1310
- */
1311
- function map(collection, iteratee, thisArg) {
1312
- var func = isArray(collection) ? arrayMap : baseMap;
1313
- iteratee = baseCallback(iteratee, thisArg, 3);
1314
- return func(collection, iteratee);
1315
- }
1316
-
1317
- module.exports = map;
1318
-
1319
-
1320
- /***/ },
1321
- /* 15 */
1322
- /***/ function(module, exports, __webpack_require__) {
1323
-
1324
- var getLength = __webpack_require__(35),
1325
- isLength = __webpack_require__(36),
1326
- keys = __webpack_require__(21);
1327
-
1328
- /**
1329
- * Gets the size of `collection` by returning its length for array-like
1330
- * values or the number of own enumerable properties for objects.
1331
- *
1332
- * @static
1333
- * @memberOf _
1334
- * @category Collection
1335
- * @param {Array|Object|string} collection The collection to inspect.
1336
- * @returns {number} Returns the size of `collection`.
1337
- * @example
1191
+ * var shallow = _.clone(users);
1192
+ * shallow[0] === users[0];
1193
+ * // => true
1338
1194
  *
1339
- * _.size([1, 2, 3]);
1340
- * // => 3
1195
+ * var deep = _.clone(users, true);
1196
+ * deep[0] === users[0];
1197
+ * // => false
1341
1198
  *
1342
- * _.size({ 'a': 1, 'b': 2 });
1343
- * // => 2
1199
+ * // using a customizer callback
1200
+ * var el = _.clone(document.body, function(value) {
1201
+ * if (_.isElement(value)) {
1202
+ * return value.cloneNode(false);
1203
+ * }
1204
+ * });
1344
1205
  *
1345
- * _.size('pebbles');
1346
- * // => 7
1206
+ * el === document.body
1207
+ * // => false
1208
+ * el.nodeName
1209
+ * // => BODY
1210
+ * el.childNodes.length;
1211
+ * // => 0
1347
1212
  */
1348
- function size(collection) {
1349
- var length = collection ? getLength(collection) : 0;
1350
- return isLength(length) ? length : keys(collection).length;
1213
+ function clone(value, isDeep, customizer, thisArg) {
1214
+ if (isDeep && typeof isDeep != 'boolean' && isIterateeCall(value, isDeep, customizer)) {
1215
+ isDeep = false;
1216
+ }
1217
+ else if (typeof isDeep == 'function') {
1218
+ thisArg = customizer;
1219
+ customizer = isDeep;
1220
+ isDeep = false;
1221
+ }
1222
+ return typeof customizer == 'function'
1223
+ ? baseClone(value, isDeep, bindCallback(customizer, thisArg, 3))
1224
+ : baseClone(value, isDeep);
1351
1225
  }
1352
1226
 
1353
- module.exports = size;
1227
+ module.exports = clone;
1354
1228
 
1355
1229
 
1356
1230
  /***/ },
1357
- /* 16 */
1231
+ /* 13 */
1358
1232
  /***/ function(module, exports, __webpack_require__) {
1359
1233
 
1360
- /* WEBPACK VAR INJECTION */(function(global) {var baseIsFunction = __webpack_require__(37),
1361
- isNative = __webpack_require__(38);
1234
+ var isObject = __webpack_require__(25);
1362
1235
 
1363
1236
  /** `Object#toString` result references. */
1364
1237
  var funcTag = '[object Function]';
@@ -1367,14 +1240,11 @@ return /******/ (function(modules) { // webpackBootstrap
1367
1240
  var objectProto = Object.prototype;
1368
1241
 
1369
1242
  /**
1370
- * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
1243
+ * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
1371
1244
  * of values.
1372
1245
  */
1373
1246
  var objToString = objectProto.toString;
1374
1247
 
1375
- /** Native method references. */
1376
- var Uint8Array = isNative(Uint8Array = global.Uint8Array) && Uint8Array;
1377
-
1378
1248
  /**
1379
1249
  * Checks if `value` is classified as a `Function` object.
1380
1250
  *
@@ -1391,22 +1261,21 @@ return /******/ (function(modules) { // webpackBootstrap
1391
1261
  * _.isFunction(/abc/);
1392
1262
  * // => false
1393
1263
  */
1394
- var isFunction = !(baseIsFunction(/x/) || (Uint8Array && !baseIsFunction(Uint8Array))) ? baseIsFunction : function(value) {
1264
+ function isFunction(value) {
1395
1265
  // The use of `Object#toString` avoids issues with the `typeof` operator
1396
1266
  // in older versions of Chrome and Safari which return 'function' for regexes
1397
- // and Safari 8 equivalents which return 'object' for typed array constructors.
1398
- return objToString.call(value) == funcTag;
1399
- };
1267
+ // and Safari 8 which returns 'object' for typed array constructors.
1268
+ return isObject(value) && objToString.call(value) == funcTag;
1269
+ }
1400
1270
 
1401
1271
  module.exports = isFunction;
1402
-
1403
- /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
1272
+
1404
1273
 
1405
1274
  /***/ },
1406
- /* 17 */
1275
+ /* 14 */
1407
1276
  /***/ function(module, exports, __webpack_require__) {
1408
1277
 
1409
- var isObjectLike = __webpack_require__(43);
1278
+ var isObjectLike = __webpack_require__(29);
1410
1279
 
1411
1280
  /** `Object#toString` result references. */
1412
1281
  var stringTag = '[object String]';
@@ -1415,7 +1284,7 @@ return /******/ (function(modules) { // webpackBootstrap
1415
1284
  var objectProto = Object.prototype;
1416
1285
 
1417
1286
  /**
1418
- * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
1287
+ * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
1419
1288
  * of values.
1420
1289
  */
1421
1290
  var objToString = objectProto.toString;
@@ -1444,111 +1313,36 @@ return /******/ (function(modules) { // webpackBootstrap
1444
1313
 
1445
1314
 
1446
1315
  /***/ },
1447
- /* 18 */
1316
+ /* 15 */
1448
1317
  /***/ function(module, exports, __webpack_require__) {
1449
1318
 
1450
- var baseClone = __webpack_require__(39),
1451
- bindCallback = __webpack_require__(40),
1452
- isIterateeCall = __webpack_require__(41);
1319
+ var createObjectMapper = __webpack_require__(30);
1453
1320
 
1454
1321
  /**
1455
- * Creates a clone of `value`. If `isDeep` is `true` nested objects are cloned,
1456
- * otherwise they are assigned by reference. If `customizer` is provided it is
1457
- * invoked to produce the cloned values. If `customizer` returns `undefined`
1458
- * cloning is handled by the method instead. The `customizer` is bound to
1459
- * `thisArg` and invoked with two argument; (value [, index|key, object]).
1322
+ * Creates an object with the same keys as `object` and values generated by
1323
+ * running each own enumerable property of `object` through `iteratee`. The
1324
+ * iteratee function is bound to `thisArg` and invoked with three arguments:
1325
+ * (value, key, object).
1460
1326
  *
1461
- * **Note:** This method is loosely based on the
1462
- * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm).
1463
- * The enumerable properties of `arguments` objects and objects created by
1464
- * constructors other than `Object` are cloned to plain `Object` objects. An
1465
- * empty object is returned for uncloneable values such as functions, DOM nodes,
1466
- * Maps, Sets, and WeakMaps.
1327
+ * If a property name is provided for `iteratee` the created `_.property`
1328
+ * style callback returns the property value of the given element.
1329
+ *
1330
+ * If a value is also provided for `thisArg` the created `_.matchesProperty`
1331
+ * style callback returns `true` for elements that have a matching property
1332
+ * value, else `false`.
1333
+ *
1334
+ * If an object is provided for `iteratee` the created `_.matches` style
1335
+ * callback returns `true` for elements that have the properties of the given
1336
+ * object, else `false`.
1467
1337
  *
1468
1338
  * @static
1469
1339
  * @memberOf _
1470
- * @category Lang
1471
- * @param {*} value The value to clone.
1472
- * @param {boolean} [isDeep] Specify a deep clone.
1473
- * @param {Function} [customizer] The function to customize cloning values.
1474
- * @param {*} [thisArg] The `this` binding of `customizer`.
1475
- * @returns {*} Returns the cloned value.
1476
- * @example
1477
- *
1478
- * var users = [
1479
- * { 'user': 'barney' },
1480
- * { 'user': 'fred' }
1481
- * ];
1482
- *
1483
- * var shallow = _.clone(users);
1484
- * shallow[0] === users[0];
1485
- * // => true
1486
- *
1487
- * var deep = _.clone(users, true);
1488
- * deep[0] === users[0];
1489
- * // => false
1490
- *
1491
- * // using a customizer callback
1492
- * var el = _.clone(document.body, function(value) {
1493
- * if (_.isElement(value)) {
1494
- * return value.cloneNode(false);
1495
- * }
1496
- * });
1497
- *
1498
- * el === document.body
1499
- * // => false
1500
- * el.nodeName
1501
- * // => BODY
1502
- * el.childNodes.length;
1503
- * // => 0
1504
- */
1505
- function clone(value, isDeep, customizer, thisArg) {
1506
- if (isDeep && typeof isDeep != 'boolean' && isIterateeCall(value, isDeep, customizer)) {
1507
- isDeep = false;
1508
- }
1509
- else if (typeof isDeep == 'function') {
1510
- thisArg = customizer;
1511
- customizer = isDeep;
1512
- isDeep = false;
1513
- }
1514
- customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 1);
1515
- return baseClone(value, isDeep, customizer);
1516
- }
1517
-
1518
- module.exports = clone;
1519
-
1520
-
1521
- /***/ },
1522
- /* 19 */
1523
- /***/ function(module, exports, __webpack_require__) {
1524
-
1525
- var createObjectMapper = __webpack_require__(42);
1526
-
1527
- /**
1528
- * Creates an object with the same keys as `object` and values generated by
1529
- * running each own enumerable property of `object` through `iteratee`. The
1530
- * iteratee function is bound to `thisArg` and invoked with three arguments:
1531
- * (value, key, object).
1532
- *
1533
- * If a property name is provided for `iteratee` the created `_.property`
1534
- * style callback returns the property value of the given element.
1535
- *
1536
- * If a value is also provided for `thisArg` the created `_.matchesProperty`
1537
- * style callback returns `true` for elements that have a matching property
1538
- * value, else `false`.
1539
- *
1540
- * If an object is provided for `iteratee` the created `_.matches` style
1541
- * callback returns `true` for elements that have the properties of the given
1542
- * object, else `false`.
1543
- *
1544
- * @static
1545
- * @memberOf _
1546
- * @category Object
1547
- * @param {Object} object The object to iterate over.
1548
- * @param {Function|Object|string} [iteratee=_.identity] The function invoked
1549
- * per iteration.
1550
- * @param {*} [thisArg] The `this` binding of `iteratee`.
1551
- * @returns {Object} Returns the new mapped object.
1340
+ * @category Object
1341
+ * @param {Object} object The object to iterate over.
1342
+ * @param {Function|Object|string} [iteratee=_.identity] The function invoked
1343
+ * per iteration.
1344
+ * @param {*} [thisArg] The `this` binding of `iteratee`.
1345
+ * @returns {Object} Returns the new mapped object.
1552
1346
  * @example
1553
1347
  *
1554
1348
  * _.mapValues({ 'a': 1, 'b': 2 }, function(n) {
@@ -1571,11 +1365,11 @@ return /******/ (function(modules) { // webpackBootstrap
1571
1365
 
1572
1366
 
1573
1367
  /***/ },
1574
- /* 20 */
1368
+ /* 16 */
1575
1369
  /***/ function(module, exports, __webpack_require__) {
1576
1370
 
1577
- var baseForOwn = __webpack_require__(48),
1578
- createForOwn = __webpack_require__(49);
1371
+ var baseForOwn = __webpack_require__(31),
1372
+ createForOwn = __webpack_require__(32);
1579
1373
 
1580
1374
  /**
1581
1375
  * Iterates over own enumerable properties of an object invoking `iteratee`
@@ -1610,22 +1404,22 @@ return /******/ (function(modules) { // webpackBootstrap
1610
1404
 
1611
1405
 
1612
1406
  /***/ },
1613
- /* 21 */
1407
+ /* 17 */
1614
1408
  /***/ function(module, exports, __webpack_require__) {
1615
1409
 
1616
- var isArrayLike = __webpack_require__(47),
1617
- isNative = __webpack_require__(38),
1410
+ var getNative = __webpack_require__(33),
1411
+ isArrayLike = __webpack_require__(34),
1618
1412
  isObject = __webpack_require__(25),
1619
- shimKeys = __webpack_require__(51);
1413
+ shimKeys = __webpack_require__(35);
1620
1414
 
1621
1415
  /* Native method references for those with the same name as other `lodash` methods. */
1622
- var nativeKeys = isNative(nativeKeys = Object.keys) && nativeKeys;
1416
+ var nativeKeys = getNative(Object, 'keys');
1623
1417
 
1624
1418
  /**
1625
1419
  * Creates an array of the own enumerable property names of `object`.
1626
1420
  *
1627
1421
  * **Note:** Non-object values are coerced to objects. See the
1628
- * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.keys)
1422
+ * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)
1629
1423
  * for more details.
1630
1424
  *
1631
1425
  * @static
@@ -1649,7 +1443,7 @@ return /******/ (function(modules) { // webpackBootstrap
1649
1443
  * // => ['0', '1']
1650
1444
  */
1651
1445
  var keys = !nativeKeys ? shimKeys : function(object) {
1652
- var Ctor = object != null && object.constructor;
1446
+ var Ctor = object == null ? undefined : object.constructor;
1653
1447
  if ((typeof Ctor == 'function' && Ctor.prototype === object) ||
1654
1448
  (typeof object != 'function' && isArrayLike(object))) {
1655
1449
  return shimKeys(object);
@@ -1661,11 +1455,11 @@ return /******/ (function(modules) { // webpackBootstrap
1661
1455
 
1662
1456
 
1663
1457
  /***/ },
1664
- /* 22 */
1458
+ /* 18 */
1665
1459
  /***/ function(module, exports, __webpack_require__) {
1666
1460
 
1667
- var baseForOwn = __webpack_require__(48),
1668
- createFindKey = __webpack_require__(50);
1461
+ var baseForOwn = __webpack_require__(31),
1462
+ createFindKey = __webpack_require__(36);
1669
1463
 
1670
1464
  /**
1671
1465
  * This method is like `_.find` except that it returns the key of the first
@@ -1721,17 +1515,18 @@ return /******/ (function(modules) { // webpackBootstrap
1721
1515
 
1722
1516
 
1723
1517
  /***/ },
1724
- /* 23 */
1518
+ /* 19 */
1725
1519
  /***/ function(module, exports, __webpack_require__) {
1726
1520
 
1727
- var baseIndexOf = __webpack_require__(44),
1728
- cacheIndexOf = __webpack_require__(45),
1729
- createCache = __webpack_require__(46),
1730
- isArrayLike = __webpack_require__(47);
1521
+ var baseIndexOf = __webpack_require__(37),
1522
+ cacheIndexOf = __webpack_require__(38),
1523
+ createCache = __webpack_require__(39),
1524
+ isArrayLike = __webpack_require__(34),
1525
+ restParam = __webpack_require__(40);
1731
1526
 
1732
1527
  /**
1733
- * Creates an array of unique values in all provided arrays using
1734
- * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
1528
+ * Creates an array of unique values that are included in all of the provided
1529
+ * arrays using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
1735
1530
  * for equality comparisons.
1736
1531
  *
1737
1532
  * @static
@@ -1743,27 +1538,19 @@ return /******/ (function(modules) { // webpackBootstrap
1743
1538
  * _.intersection([1, 2], [4, 2], [2, 1]);
1744
1539
  * // => [2]
1745
1540
  */
1746
- function intersection() {
1747
- var args = [],
1748
- argsIndex = -1,
1749
- argsLength = arguments.length,
1750
- caches = [],
1541
+ var intersection = restParam(function(arrays) {
1542
+ var othLength = arrays.length,
1543
+ othIndex = othLength,
1544
+ caches = Array(length),
1751
1545
  indexOf = baseIndexOf,
1752
1546
  isCommon = true,
1753
1547
  result = [];
1754
1548
 
1755
- while (++argsIndex < argsLength) {
1756
- var value = arguments[argsIndex];
1757
- if (isArrayLike(value)) {
1758
- args.push(value);
1759
- caches.push((isCommon && value.length >= 120) ? createCache(argsIndex && value) : null);
1760
- }
1761
- }
1762
- argsLength = args.length;
1763
- if (argsLength < 2) {
1764
- return result;
1549
+ while (othIndex--) {
1550
+ var value = arrays[othIndex] = isArrayLike(value = arrays[othIndex]) ? value : [];
1551
+ caches[othIndex] = (isCommon && value.length >= 120) ? createCache(othIndex && value) : null;
1765
1552
  }
1766
- var array = args[0],
1553
+ var array = arrays[0],
1767
1554
  index = -1,
1768
1555
  length = array ? array.length : 0,
1769
1556
  seen = caches[0];
@@ -1772,10 +1559,10 @@ return /******/ (function(modules) { // webpackBootstrap
1772
1559
  while (++index < length) {
1773
1560
  value = array[index];
1774
1561
  if ((seen ? cacheIndexOf(seen, value) : indexOf(result, value, 0)) < 0) {
1775
- argsIndex = argsLength;
1776
- while (--argsIndex) {
1777
- var cache = caches[argsIndex];
1778
- if ((cache ? cacheIndexOf(cache, value) : indexOf(args[argsIndex], value, 0)) < 0) {
1562
+ var othIndex = othLength;
1563
+ while (--othIndex) {
1564
+ var cache = caches[othIndex];
1565
+ if ((cache ? cacheIndexOf(cache, value) : indexOf(arrays[othIndex], value, 0)) < 0) {
1779
1566
  continue outer;
1780
1567
  }
1781
1568
  }
@@ -1786,26 +1573,26 @@ return /******/ (function(modules) { // webpackBootstrap
1786
1573
  }
1787
1574
  }
1788
1575
  return result;
1789
- }
1576
+ });
1790
1577
 
1791
1578
  module.exports = intersection;
1792
1579
 
1793
1580
 
1794
1581
  /***/ },
1795
- /* 24 */
1582
+ /* 20 */
1796
1583
  /***/ function(module, exports, __webpack_require__) {
1797
1584
 
1798
- var baseCallback = __webpack_require__(27),
1799
- baseUniq = __webpack_require__(52),
1800
- isIterateeCall = __webpack_require__(41),
1801
- sortedUniq = __webpack_require__(53);
1585
+ var baseCallback = __webpack_require__(41),
1586
+ baseUniq = __webpack_require__(42),
1587
+ isIterateeCall = __webpack_require__(28),
1588
+ sortedUniq = __webpack_require__(43);
1802
1589
 
1803
1590
  /**
1804
1591
  * Creates a duplicate-free version of an array, using
1805
- * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
1592
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
1806
1593
  * for equality comparisons, in which only the first occurence of each element
1807
1594
  * is kept. Providing `true` for `isSorted` performs a faster search algorithm
1808
- * for sorted arrays. If an iteratee function is provided it is invoked for
1595
+ * for sorted arrays. If an iteratee function is provided it's invoked for
1809
1596
  * each element in the array to generate the criterion by which uniqueness
1810
1597
  * is computed. The `iteratee` is bound to `thisArg` and invoked with three
1811
1598
  * arguments: (value, index, array).
@@ -1856,7 +1643,7 @@ return /******/ (function(modules) { // webpackBootstrap
1856
1643
  }
1857
1644
  if (isSorted != null && typeof isSorted != 'boolean') {
1858
1645
  thisArg = iteratee;
1859
- iteratee = isIterateeCall(array, isSorted, thisArg) ? null : isSorted;
1646
+ iteratee = isIterateeCall(array, isSorted, thisArg) ? undefined : isSorted;
1860
1647
  isSorted = false;
1861
1648
  }
1862
1649
  iteratee = iteratee == null ? iteratee : baseCallback(iteratee, thisArg, 3);
@@ -1869,457 +1656,254 @@ return /******/ (function(modules) { // webpackBootstrap
1869
1656
 
1870
1657
 
1871
1658
  /***/ },
1872
- /* 25 */
1659
+ /* 21 */
1873
1660
  /***/ function(module, exports, __webpack_require__) {
1874
1661
 
1662
+ var arrayMap = __webpack_require__(44),
1663
+ baseCallback = __webpack_require__(41),
1664
+ baseMap = __webpack_require__(45),
1665
+ isArray = __webpack_require__(46);
1666
+
1875
1667
  /**
1876
- * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.
1877
- * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
1668
+ * Creates an array of values by running each element in `collection` through
1669
+ * `iteratee`. The `iteratee` is bound to `thisArg` and invoked with three
1670
+ * arguments: (value, index|key, collection).
1671
+ *
1672
+ * If a property name is provided for `iteratee` the created `_.property`
1673
+ * style callback returns the property value of the given element.
1674
+ *
1675
+ * If a value is also provided for `thisArg` the created `_.matchesProperty`
1676
+ * style callback returns `true` for elements that have a matching property
1677
+ * value, else `false`.
1678
+ *
1679
+ * If an object is provided for `iteratee` the created `_.matches` style
1680
+ * callback returns `true` for elements that have the properties of the given
1681
+ * object, else `false`.
1682
+ *
1683
+ * Many lodash methods are guarded to work as iteratees for methods like
1684
+ * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
1685
+ *
1686
+ * The guarded methods are:
1687
+ * `ary`, `callback`, `chunk`, `clone`, `create`, `curry`, `curryRight`,
1688
+ * `drop`, `dropRight`, `every`, `fill`, `flatten`, `invert`, `max`, `min`,
1689
+ * `parseInt`, `slice`, `sortBy`, `take`, `takeRight`, `template`, `trim`,
1690
+ * `trimLeft`, `trimRight`, `trunc`, `random`, `range`, `sample`, `some`,
1691
+ * `sum`, `uniq`, and `words`
1878
1692
  *
1879
1693
  * @static
1880
1694
  * @memberOf _
1881
- * @category Lang
1882
- * @param {*} value The value to check.
1883
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
1695
+ * @alias collect
1696
+ * @category Collection
1697
+ * @param {Array|Object|string} collection The collection to iterate over.
1698
+ * @param {Function|Object|string} [iteratee=_.identity] The function invoked
1699
+ * per iteration.
1700
+ * @param {*} [thisArg] The `this` binding of `iteratee`.
1701
+ * @returns {Array} Returns the new mapped array.
1884
1702
  * @example
1885
1703
  *
1886
- * _.isObject({});
1887
- * // => true
1704
+ * function timesThree(n) {
1705
+ * return n * 3;
1706
+ * }
1888
1707
  *
1889
- * _.isObject([1, 2, 3]);
1890
- * // => true
1708
+ * _.map([1, 2], timesThree);
1709
+ * // => [3, 6]
1891
1710
  *
1892
- * _.isObject(1);
1893
- * // => false
1711
+ * _.map({ 'a': 1, 'b': 2 }, timesThree);
1712
+ * // => [3, 6] (iteration order is not guaranteed)
1713
+ *
1714
+ * var users = [
1715
+ * { 'user': 'barney' },
1716
+ * { 'user': 'fred' }
1717
+ * ];
1718
+ *
1719
+ * // using the `_.property` callback shorthand
1720
+ * _.map(users, 'user');
1721
+ * // => ['barney', 'fred']
1894
1722
  */
1895
- function isObject(value) {
1896
- // Avoid a V8 JIT bug in Chrome 19-20.
1897
- // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.
1898
- var type = typeof value;
1899
- return type == 'function' || (!!value && type == 'object');
1723
+ function map(collection, iteratee, thisArg) {
1724
+ var func = isArray(collection) ? arrayMap : baseMap;
1725
+ iteratee = baseCallback(iteratee, thisArg, 3);
1726
+ return func(collection, iteratee);
1900
1727
  }
1901
1728
 
1902
- module.exports = isObject;
1729
+ module.exports = map;
1903
1730
 
1904
1731
 
1905
1732
  /***/ },
1906
- /* 26 */
1733
+ /* 22 */
1907
1734
  /***/ function(module, exports, __webpack_require__) {
1908
1735
 
1736
+ var arrayEach = __webpack_require__(47),
1737
+ baseEach = __webpack_require__(48),
1738
+ createForEach = __webpack_require__(49);
1739
+
1909
1740
  /**
1910
- * A specialized version of `_.map` for arrays without support for callback
1911
- * shorthands and `this` binding.
1741
+ * Iterates over elements of `collection` invoking `iteratee` for each element.
1742
+ * The `iteratee` is bound to `thisArg` and invoked with three arguments:
1743
+ * (value, index|key, collection). Iteratee functions may exit iteration early
1744
+ * by explicitly returning `false`.
1912
1745
  *
1913
- * @private
1914
- * @param {Array} array The array to iterate over.
1915
- * @param {Function} iteratee The function invoked per iteration.
1916
- * @returns {Array} Returns the new mapped array.
1746
+ * **Note:** As with other "Collections" methods, objects with a "length" property
1747
+ * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn`
1748
+ * may be used for object iteration.
1749
+ *
1750
+ * @static
1751
+ * @memberOf _
1752
+ * @alias each
1753
+ * @category Collection
1754
+ * @param {Array|Object|string} collection The collection to iterate over.
1755
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
1756
+ * @param {*} [thisArg] The `this` binding of `iteratee`.
1757
+ * @returns {Array|Object|string} Returns `collection`.
1758
+ * @example
1759
+ *
1760
+ * _([1, 2]).forEach(function(n) {
1761
+ * console.log(n);
1762
+ * }).value();
1763
+ * // => logs each value from left to right and returns the array
1764
+ *
1765
+ * _.forEach({ 'a': 1, 'b': 2 }, function(n, key) {
1766
+ * console.log(n, key);
1767
+ * });
1768
+ * // => logs each value-key pair and returns the object (iteration order is not guaranteed)
1917
1769
  */
1918
- function arrayMap(array, iteratee) {
1919
- var index = -1,
1920
- length = array.length,
1921
- result = Array(length);
1922
-
1923
- while (++index < length) {
1924
- result[index] = iteratee(array[index], index, array);
1925
- }
1926
- return result;
1927
- }
1770
+ var forEach = createForEach(arrayEach, baseEach);
1928
1771
 
1929
- module.exports = arrayMap;
1772
+ module.exports = forEach;
1930
1773
 
1931
1774
 
1932
1775
  /***/ },
1933
- /* 27 */
1776
+ /* 23 */
1934
1777
  /***/ function(module, exports, __webpack_require__) {
1935
1778
 
1936
- var baseMatches = __webpack_require__(54),
1937
- baseMatchesProperty = __webpack_require__(55),
1938
- bindCallback = __webpack_require__(40),
1939
- identity = __webpack_require__(56),
1940
- property = __webpack_require__(57);
1779
+ var getLength = __webpack_require__(50),
1780
+ isLength = __webpack_require__(51),
1781
+ keys = __webpack_require__(17);
1941
1782
 
1942
1783
  /**
1943
- * The base implementation of `_.callback` which supports specifying the
1944
- * number of arguments to provide to `func`.
1784
+ * Gets the size of `collection` by returning its length for array-like
1785
+ * values or the number of own enumerable properties for objects.
1945
1786
  *
1946
- * @private
1947
- * @param {*} [func=_.identity] The value to convert to a callback.
1948
- * @param {*} [thisArg] The `this` binding of `func`.
1949
- * @param {number} [argCount] The number of arguments to provide to `func`.
1950
- * @returns {Function} Returns the callback.
1787
+ * @static
1788
+ * @memberOf _
1789
+ * @category Collection
1790
+ * @param {Array|Object|string} collection The collection to inspect.
1791
+ * @returns {number} Returns the size of `collection`.
1792
+ * @example
1793
+ *
1794
+ * _.size([1, 2, 3]);
1795
+ * // => 3
1796
+ *
1797
+ * _.size({ 'a': 1, 'b': 2 });
1798
+ * // => 2
1799
+ *
1800
+ * _.size('pebbles');
1801
+ * // => 7
1951
1802
  */
1952
- function baseCallback(func, thisArg, argCount) {
1953
- var type = typeof func;
1954
- if (type == 'function') {
1955
- return thisArg === undefined
1956
- ? func
1957
- : bindCallback(func, thisArg, argCount);
1958
- }
1959
- if (func == null) {
1960
- return identity;
1961
- }
1962
- if (type == 'object') {
1963
- return baseMatches(func);
1964
- }
1965
- return thisArg === undefined
1966
- ? property(func)
1967
- : baseMatchesProperty(func, thisArg);
1803
+ function size(collection) {
1804
+ var length = collection ? getLength(collection) : 0;
1805
+ return isLength(length) ? length : keys(collection).length;
1968
1806
  }
1969
1807
 
1970
- module.exports = baseCallback;
1808
+ module.exports = size;
1971
1809
 
1972
1810
 
1973
1811
  /***/ },
1974
- /* 28 */
1812
+ /* 24 */
1975
1813
  /***/ function(module, exports, __webpack_require__) {
1976
1814
 
1977
- var baseEach = __webpack_require__(31),
1978
- isArrayLike = __webpack_require__(47);
1815
+ var arrayReduce = __webpack_require__(52),
1816
+ baseEach = __webpack_require__(48),
1817
+ createReduce = __webpack_require__(53);
1979
1818
 
1980
1819
  /**
1981
- * The base implementation of `_.map` without support for callback shorthands
1982
- * and `this` binding.
1983
- *
1984
- * @private
1985
- * @param {Array|Object|string} collection The collection to iterate over.
1986
- * @param {Function} iteratee The function invoked per iteration.
1987
- * @returns {Array} Returns the new mapped array.
1988
- */
1989
- function baseMap(collection, iteratee) {
1990
- var index = -1,
1991
- result = isArrayLike(collection) ? Array(collection.length) : [];
1992
-
1993
- baseEach(collection, function(value, key, collection) {
1994
- result[++index] = iteratee(value, key, collection);
1995
- });
1996
- return result;
1997
- }
1998
-
1999
- module.exports = baseMap;
2000
-
2001
-
2002
- /***/ },
2003
- /* 29 */
2004
- /***/ function(module, exports, __webpack_require__) {
2005
-
2006
- var isLength = __webpack_require__(36),
2007
- isNative = __webpack_require__(38),
2008
- isObjectLike = __webpack_require__(43);
2009
-
2010
- /** `Object#toString` result references. */
2011
- var arrayTag = '[object Array]';
2012
-
2013
- /** Used for native method references. */
2014
- var objectProto = Object.prototype;
2015
-
2016
- /**
2017
- * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
2018
- * of values.
2019
- */
2020
- var objToString = objectProto.toString;
2021
-
2022
- /* Native method references for those with the same name as other `lodash` methods. */
2023
- var nativeIsArray = isNative(nativeIsArray = Array.isArray) && nativeIsArray;
2024
-
2025
- /**
2026
- * Checks if `value` is classified as an `Array` object.
2027
- *
2028
- * @static
2029
- * @memberOf _
2030
- * @category Lang
2031
- * @param {*} value The value to check.
2032
- * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
2033
- * @example
2034
- *
2035
- * _.isArray([1, 2, 3]);
2036
- * // => true
1820
+ * Reduces `collection` to a value which is the accumulated result of running
1821
+ * each element in `collection` through `iteratee`, where each successive
1822
+ * invocation is supplied the return value of the previous. If `accumulator`
1823
+ * is not provided the first element of `collection` is used as the initial
1824
+ * value. The `iteratee` is bound to `thisArg` and invoked with four arguments:
1825
+ * (accumulator, value, index|key, collection).
2037
1826
  *
2038
- * _.isArray(function() { return arguments; }());
2039
- * // => false
2040
- */
2041
- var isArray = nativeIsArray || function(value) {
2042
- return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;
2043
- };
2044
-
2045
- module.exports = isArray;
2046
-
2047
-
2048
- /***/ },
2049
- /* 30 */
2050
- /***/ function(module, exports, __webpack_require__) {
2051
-
2052
- /**
2053
- * A specialized version of `_.forEach` for arrays without support for callback
2054
- * shorthands and `this` binding.
1827
+ * Many lodash methods are guarded to work as iteratees for methods like
1828
+ * `_.reduce`, `_.reduceRight`, and `_.transform`.
2055
1829
  *
2056
- * @private
2057
- * @param {Array} array The array to iterate over.
2058
- * @param {Function} iteratee The function invoked per iteration.
2059
- * @returns {Array} Returns `array`.
2060
- */
2061
- function arrayEach(array, iteratee) {
2062
- var index = -1,
2063
- length = array.length;
2064
-
2065
- while (++index < length) {
2066
- if (iteratee(array[index], index, array) === false) {
2067
- break;
2068
- }
2069
- }
2070
- return array;
2071
- }
2072
-
2073
- module.exports = arrayEach;
2074
-
2075
-
2076
- /***/ },
2077
- /* 31 */
2078
- /***/ function(module, exports, __webpack_require__) {
2079
-
2080
- var baseForOwn = __webpack_require__(48),
2081
- createBaseEach = __webpack_require__(58);
2082
-
2083
- /**
2084
- * The base implementation of `_.forEach` without support for callback
2085
- * shorthands and `this` binding.
1830
+ * The guarded methods are:
1831
+ * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `sortByAll`,
1832
+ * and `sortByOrder`
2086
1833
  *
2087
- * @private
1834
+ * @static
1835
+ * @memberOf _
1836
+ * @alias foldl, inject
1837
+ * @category Collection
2088
1838
  * @param {Array|Object|string} collection The collection to iterate over.
2089
- * @param {Function} iteratee The function invoked per iteration.
2090
- * @returns {Array|Object|string} Returns `collection`.
2091
- */
2092
- var baseEach = createBaseEach(baseForOwn);
2093
-
2094
- module.exports = baseEach;
2095
-
2096
-
2097
- /***/ },
2098
- /* 32 */
2099
- /***/ function(module, exports, __webpack_require__) {
2100
-
2101
- var bindCallback = __webpack_require__(40),
2102
- isArray = __webpack_require__(29);
2103
-
2104
- /**
2105
- * Creates a function for `_.forEach` or `_.forEachRight`.
2106
- *
2107
- * @private
2108
- * @param {Function} arrayFunc The function to iterate over an array.
2109
- * @param {Function} eachFunc The function to iterate over a collection.
2110
- * @returns {Function} Returns the new each function.
2111
- */
2112
- function createForEach(arrayFunc, eachFunc) {
2113
- return function(collection, iteratee, thisArg) {
2114
- return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))
2115
- ? arrayFunc(collection, iteratee)
2116
- : eachFunc(collection, bindCallback(iteratee, thisArg, 3));
2117
- };
2118
- }
2119
-
2120
- module.exports = createForEach;
2121
-
2122
-
2123
- /***/ },
2124
- /* 33 */
2125
- /***/ function(module, exports, __webpack_require__) {
2126
-
2127
- /**
2128
- * A specialized version of `_.reduce` for arrays without support for callback
2129
- * shorthands and `this` binding.
2130
- *
2131
- * @private
2132
- * @param {Array} array The array to iterate over.
2133
- * @param {Function} iteratee The function invoked per iteration.
1839
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
2134
1840
  * @param {*} [accumulator] The initial value.
2135
- * @param {boolean} [initFromArray] Specify using the first element of `array`
2136
- * as the initial value.
1841
+ * @param {*} [thisArg] The `this` binding of `iteratee`.
2137
1842
  * @returns {*} Returns the accumulated value.
2138
- */
2139
- function arrayReduce(array, iteratee, accumulator, initFromArray) {
2140
- var index = -1,
2141
- length = array.length;
2142
-
2143
- if (initFromArray && length) {
2144
- accumulator = array[++index];
2145
- }
2146
- while (++index < length) {
2147
- accumulator = iteratee(accumulator, array[index], index, array);
2148
- }
2149
- return accumulator;
2150
- }
2151
-
2152
- module.exports = arrayReduce;
2153
-
2154
-
2155
- /***/ },
2156
- /* 34 */
2157
- /***/ function(module, exports, __webpack_require__) {
2158
-
2159
- var baseCallback = __webpack_require__(27),
2160
- baseReduce = __webpack_require__(60),
2161
- isArray = __webpack_require__(29);
2162
-
2163
- /**
2164
- * Creates a function for `_.reduce` or `_.reduceRight`.
2165
- *
2166
- * @private
2167
- * @param {Function} arrayFunc The function to iterate over an array.
2168
- * @param {Function} eachFunc The function to iterate over a collection.
2169
- * @returns {Function} Returns the new each function.
2170
- */
2171
- function createReduce(arrayFunc, eachFunc) {
2172
- return function(collection, iteratee, accumulator, thisArg) {
2173
- var initFromArray = arguments.length < 3;
2174
- return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))
2175
- ? arrayFunc(collection, iteratee, accumulator, initFromArray)
2176
- : baseReduce(collection, baseCallback(iteratee, thisArg, 4), accumulator, initFromArray, eachFunc);
2177
- };
2178
- }
2179
-
2180
- module.exports = createReduce;
2181
-
2182
-
2183
- /***/ },
2184
- /* 35 */
2185
- /***/ function(module, exports, __webpack_require__) {
2186
-
2187
- var baseProperty = __webpack_require__(59);
2188
-
2189
- /**
2190
- * Gets the "length" property value of `object`.
2191
- *
2192
- * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)
2193
- * that affects Safari on at least iOS 8.1-8.3 ARM64.
2194
- *
2195
- * @private
2196
- * @param {Object} object The object to query.
2197
- * @returns {*} Returns the "length" value.
2198
- */
2199
- var getLength = baseProperty('length');
2200
-
2201
- module.exports = getLength;
2202
-
2203
-
2204
- /***/ },
2205
- /* 36 */
2206
- /***/ function(module, exports, __webpack_require__) {
2207
-
2208
- /**
2209
- * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)
2210
- * of an array-like value.
2211
- */
2212
- var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;
2213
-
2214
- /**
2215
- * Checks if `value` is a valid array-like length.
2216
- *
2217
- * **Note:** This function is based on [`ToLength`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength).
1843
+ * @example
2218
1844
  *
2219
- * @private
2220
- * @param {*} value The value to check.
2221
- * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
2222
- */
2223
- function isLength(value) {
2224
- return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
2225
- }
2226
-
2227
- module.exports = isLength;
2228
-
2229
-
2230
- /***/ },
2231
- /* 37 */
2232
- /***/ function(module, exports, __webpack_require__) {
2233
-
2234
- /**
2235
- * The base implementation of `_.isFunction` without support for environments
2236
- * with incorrect `typeof` results.
1845
+ * _.reduce([1, 2], function(total, n) {
1846
+ * return total + n;
1847
+ * });
1848
+ * // => 3
2237
1849
  *
2238
- * @private
2239
- * @param {*} value The value to check.
2240
- * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
1850
+ * _.reduce({ 'a': 1, 'b': 2 }, function(result, n, key) {
1851
+ * result[key] = n * 3;
1852
+ * return result;
1853
+ * }, {});
1854
+ * // => { 'a': 3, 'b': 6 } (iteration order is not guaranteed)
2241
1855
  */
2242
- function baseIsFunction(value) {
2243
- // Avoid a Chakra JIT bug in compatibility modes of IE 11.
2244
- // See https://github.com/jashkenas/underscore/issues/1621 for more details.
2245
- return typeof value == 'function' || false;
2246
- }
1856
+ var reduce = createReduce(arrayReduce, baseEach);
2247
1857
 
2248
- module.exports = baseIsFunction;
1858
+ module.exports = reduce;
2249
1859
 
2250
1860
 
2251
1861
  /***/ },
2252
- /* 38 */
1862
+ /* 25 */
2253
1863
  /***/ function(module, exports, __webpack_require__) {
2254
1864
 
2255
- var escapeRegExp = __webpack_require__(61),
2256
- isObjectLike = __webpack_require__(43);
2257
-
2258
- /** `Object#toString` result references. */
2259
- var funcTag = '[object Function]';
2260
-
2261
- /** Used to detect host constructors (Safari > 5). */
2262
- var reIsHostCtor = /^\[object .+?Constructor\]$/;
2263
-
2264
- /** Used for native method references. */
2265
- var objectProto = Object.prototype;
2266
-
2267
- /** Used to resolve the decompiled source of functions. */
2268
- var fnToString = Function.prototype.toString;
2269
-
2270
1865
  /**
2271
- * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
2272
- * of values.
2273
- */
2274
- var objToString = objectProto.toString;
2275
-
2276
- /** Used to detect if a method is native. */
2277
- var reIsNative = RegExp('^' +
2278
- escapeRegExp(objToString)
2279
- .replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
2280
- );
2281
-
2282
- /**
2283
- * Checks if `value` is a native function.
1866
+ * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.
1867
+ * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
2284
1868
  *
2285
1869
  * @static
2286
1870
  * @memberOf _
2287
1871
  * @category Lang
2288
1872
  * @param {*} value The value to check.
2289
- * @returns {boolean} Returns `true` if `value` is a native function, else `false`.
1873
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
2290
1874
  * @example
2291
1875
  *
2292
- * _.isNative(Array.prototype.push);
1876
+ * _.isObject({});
2293
1877
  * // => true
2294
1878
  *
2295
- * _.isNative(_);
1879
+ * _.isObject([1, 2, 3]);
1880
+ * // => true
1881
+ *
1882
+ * _.isObject(1);
2296
1883
  * // => false
2297
1884
  */
2298
- function isNative(value) {
2299
- if (value == null) {
2300
- return false;
2301
- }
2302
- if (objToString.call(value) == funcTag) {
2303
- return reIsNative.test(fnToString.call(value));
2304
- }
2305
- return isObjectLike(value) && reIsHostCtor.test(value);
1885
+ function isObject(value) {
1886
+ // Avoid a V8 JIT bug in Chrome 19-20.
1887
+ // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.
1888
+ var type = typeof value;
1889
+ return !!value && (type == 'object' || type == 'function');
2306
1890
  }
2307
1891
 
2308
- module.exports = isNative;
1892
+ module.exports = isObject;
2309
1893
 
2310
1894
 
2311
1895
  /***/ },
2312
- /* 39 */
1896
+ /* 26 */
2313
1897
  /***/ function(module, exports, __webpack_require__) {
2314
1898
 
2315
- var arrayCopy = __webpack_require__(62),
2316
- arrayEach = __webpack_require__(30),
2317
- baseAssign = __webpack_require__(63),
2318
- baseForOwn = __webpack_require__(48),
2319
- initCloneArray = __webpack_require__(64),
2320
- initCloneByTag = __webpack_require__(65),
2321
- initCloneObject = __webpack_require__(66),
2322
- isArray = __webpack_require__(29),
1899
+ var arrayCopy = __webpack_require__(54),
1900
+ arrayEach = __webpack_require__(47),
1901
+ baseAssign = __webpack_require__(55),
1902
+ baseForOwn = __webpack_require__(31),
1903
+ initCloneArray = __webpack_require__(56),
1904
+ initCloneByTag = __webpack_require__(57),
1905
+ initCloneObject = __webpack_require__(58),
1906
+ isArray = __webpack_require__(46),
2323
1907
  isObject = __webpack_require__(25);
2324
1908
 
2325
1909
  /** `Object#toString` result references. */
@@ -2367,7 +1951,7 @@ return /******/ (function(modules) { // webpackBootstrap
2367
1951
  var objectProto = Object.prototype;
2368
1952
 
2369
1953
  /**
2370
- * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
1954
+ * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
2371
1955
  * of values.
2372
1956
  */
2373
1957
  var objToString = objectProto.toString;
@@ -2418,7 +2002,7 @@ return /******/ (function(modules) { // webpackBootstrap
2418
2002
  : (object ? value : {});
2419
2003
  }
2420
2004
  }
2421
- // Check for circular references and return corresponding clone.
2005
+ // Check for circular references and return its corresponding clone.
2422
2006
  stackA || (stackA = []);
2423
2007
  stackB || (stackB = []);
2424
2008
 
@@ -2439,143 +2023,305 @@ return /******/ (function(modules) { // webpackBootstrap
2439
2023
  return result;
2440
2024
  }
2441
2025
 
2442
- module.exports = baseClone;
2026
+ module.exports = baseClone;
2027
+
2028
+
2029
+ /***/ },
2030
+ /* 27 */
2031
+ /***/ function(module, exports, __webpack_require__) {
2032
+
2033
+ var identity = __webpack_require__(59);
2034
+
2035
+ /**
2036
+ * A specialized version of `baseCallback` which only supports `this` binding
2037
+ * and specifying the number of arguments to provide to `func`.
2038
+ *
2039
+ * @private
2040
+ * @param {Function} func The function to bind.
2041
+ * @param {*} thisArg The `this` binding of `func`.
2042
+ * @param {number} [argCount] The number of arguments to provide to `func`.
2043
+ * @returns {Function} Returns the callback.
2044
+ */
2045
+ function bindCallback(func, thisArg, argCount) {
2046
+ if (typeof func != 'function') {
2047
+ return identity;
2048
+ }
2049
+ if (thisArg === undefined) {
2050
+ return func;
2051
+ }
2052
+ switch (argCount) {
2053
+ case 1: return function(value) {
2054
+ return func.call(thisArg, value);
2055
+ };
2056
+ case 3: return function(value, index, collection) {
2057
+ return func.call(thisArg, value, index, collection);
2058
+ };
2059
+ case 4: return function(accumulator, value, index, collection) {
2060
+ return func.call(thisArg, accumulator, value, index, collection);
2061
+ };
2062
+ case 5: return function(value, other, key, object, source) {
2063
+ return func.call(thisArg, value, other, key, object, source);
2064
+ };
2065
+ }
2066
+ return function() {
2067
+ return func.apply(thisArg, arguments);
2068
+ };
2069
+ }
2070
+
2071
+ module.exports = bindCallback;
2072
+
2073
+
2074
+ /***/ },
2075
+ /* 28 */
2076
+ /***/ function(module, exports, __webpack_require__) {
2077
+
2078
+ var isArrayLike = __webpack_require__(34),
2079
+ isIndex = __webpack_require__(60),
2080
+ isObject = __webpack_require__(25);
2081
+
2082
+ /**
2083
+ * Checks if the provided arguments are from an iteratee call.
2084
+ *
2085
+ * @private
2086
+ * @param {*} value The potential iteratee value argument.
2087
+ * @param {*} index The potential iteratee index or key argument.
2088
+ * @param {*} object The potential iteratee object argument.
2089
+ * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.
2090
+ */
2091
+ function isIterateeCall(value, index, object) {
2092
+ if (!isObject(object)) {
2093
+ return false;
2094
+ }
2095
+ var type = typeof index;
2096
+ if (type == 'number'
2097
+ ? (isArrayLike(object) && isIndex(index, object.length))
2098
+ : (type == 'string' && index in object)) {
2099
+ var other = object[index];
2100
+ return value === value ? (value === other) : (other !== other);
2101
+ }
2102
+ return false;
2103
+ }
2104
+
2105
+ module.exports = isIterateeCall;
2106
+
2107
+
2108
+ /***/ },
2109
+ /* 29 */
2110
+ /***/ function(module, exports, __webpack_require__) {
2111
+
2112
+ /**
2113
+ * Checks if `value` is object-like.
2114
+ *
2115
+ * @private
2116
+ * @param {*} value The value to check.
2117
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
2118
+ */
2119
+ function isObjectLike(value) {
2120
+ return !!value && typeof value == 'object';
2121
+ }
2122
+
2123
+ module.exports = isObjectLike;
2124
+
2125
+
2126
+ /***/ },
2127
+ /* 30 */
2128
+ /***/ function(module, exports, __webpack_require__) {
2129
+
2130
+ var baseCallback = __webpack_require__(41),
2131
+ baseForOwn = __webpack_require__(31);
2132
+
2133
+ /**
2134
+ * Creates a function for `_.mapKeys` or `_.mapValues`.
2135
+ *
2136
+ * @private
2137
+ * @param {boolean} [isMapKeys] Specify mapping keys instead of values.
2138
+ * @returns {Function} Returns the new map function.
2139
+ */
2140
+ function createObjectMapper(isMapKeys) {
2141
+ return function(object, iteratee, thisArg) {
2142
+ var result = {};
2143
+ iteratee = baseCallback(iteratee, thisArg, 3);
2144
+
2145
+ baseForOwn(object, function(value, key, object) {
2146
+ var mapped = iteratee(value, key, object);
2147
+ key = isMapKeys ? mapped : key;
2148
+ value = isMapKeys ? value : mapped;
2149
+ result[key] = value;
2150
+ });
2151
+ return result;
2152
+ };
2153
+ }
2154
+
2155
+ module.exports = createObjectMapper;
2156
+
2157
+
2158
+ /***/ },
2159
+ /* 31 */
2160
+ /***/ function(module, exports, __webpack_require__) {
2161
+
2162
+ var baseFor = __webpack_require__(61),
2163
+ keys = __webpack_require__(17);
2164
+
2165
+ /**
2166
+ * The base implementation of `_.forOwn` without support for callback
2167
+ * shorthands and `this` binding.
2168
+ *
2169
+ * @private
2170
+ * @param {Object} object The object to iterate over.
2171
+ * @param {Function} iteratee The function invoked per iteration.
2172
+ * @returns {Object} Returns `object`.
2173
+ */
2174
+ function baseForOwn(object, iteratee) {
2175
+ return baseFor(object, iteratee, keys);
2176
+ }
2177
+
2178
+ module.exports = baseForOwn;
2179
+
2180
+
2181
+ /***/ },
2182
+ /* 32 */
2183
+ /***/ function(module, exports, __webpack_require__) {
2184
+
2185
+ var bindCallback = __webpack_require__(27);
2186
+
2187
+ /**
2188
+ * Creates a function for `_.forOwn` or `_.forOwnRight`.
2189
+ *
2190
+ * @private
2191
+ * @param {Function} objectFunc The function to iterate over an object.
2192
+ * @returns {Function} Returns the new each function.
2193
+ */
2194
+ function createForOwn(objectFunc) {
2195
+ return function(object, iteratee, thisArg) {
2196
+ if (typeof iteratee != 'function' || thisArg !== undefined) {
2197
+ iteratee = bindCallback(iteratee, thisArg, 3);
2198
+ }
2199
+ return objectFunc(object, iteratee);
2200
+ };
2201
+ }
2202
+
2203
+ module.exports = createForOwn;
2443
2204
 
2444
2205
 
2445
2206
  /***/ },
2446
- /* 40 */
2207
+ /* 33 */
2447
2208
  /***/ function(module, exports, __webpack_require__) {
2448
2209
 
2449
- var identity = __webpack_require__(56);
2210
+ var isNative = __webpack_require__(62);
2450
2211
 
2451
2212
  /**
2452
- * A specialized version of `baseCallback` which only supports `this` binding
2453
- * and specifying the number of arguments to provide to `func`.
2213
+ * Gets the native function at `key` of `object`.
2454
2214
  *
2455
2215
  * @private
2456
- * @param {Function} func The function to bind.
2457
- * @param {*} thisArg The `this` binding of `func`.
2458
- * @param {number} [argCount] The number of arguments to provide to `func`.
2459
- * @returns {Function} Returns the callback.
2216
+ * @param {Object} object The object to query.
2217
+ * @param {string} key The key of the method to get.
2218
+ * @returns {*} Returns the function if it's native, else `undefined`.
2460
2219
  */
2461
- function bindCallback(func, thisArg, argCount) {
2462
- if (typeof func != 'function') {
2463
- return identity;
2464
- }
2465
- if (thisArg === undefined) {
2466
- return func;
2467
- }
2468
- switch (argCount) {
2469
- case 1: return function(value) {
2470
- return func.call(thisArg, value);
2471
- };
2472
- case 3: return function(value, index, collection) {
2473
- return func.call(thisArg, value, index, collection);
2474
- };
2475
- case 4: return function(accumulator, value, index, collection) {
2476
- return func.call(thisArg, accumulator, value, index, collection);
2477
- };
2478
- case 5: return function(value, other, key, object, source) {
2479
- return func.call(thisArg, value, other, key, object, source);
2480
- };
2481
- }
2482
- return function() {
2483
- return func.apply(thisArg, arguments);
2484
- };
2220
+ function getNative(object, key) {
2221
+ var value = object == null ? undefined : object[key];
2222
+ return isNative(value) ? value : undefined;
2485
2223
  }
2486
2224
 
2487
- module.exports = bindCallback;
2225
+ module.exports = getNative;
2488
2226
 
2489
2227
 
2490
2228
  /***/ },
2491
- /* 41 */
2229
+ /* 34 */
2492
2230
  /***/ function(module, exports, __webpack_require__) {
2493
2231
 
2494
- var isArrayLike = __webpack_require__(47),
2495
- isIndex = __webpack_require__(67),
2496
- isObject = __webpack_require__(25);
2232
+ var getLength = __webpack_require__(50),
2233
+ isLength = __webpack_require__(51);
2497
2234
 
2498
2235
  /**
2499
- * Checks if the provided arguments are from an iteratee call.
2236
+ * Checks if `value` is array-like.
2500
2237
  *
2501
2238
  * @private
2502
- * @param {*} value The potential iteratee value argument.
2503
- * @param {*} index The potential iteratee index or key argument.
2504
- * @param {*} object The potential iteratee object argument.
2505
- * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.
2239
+ * @param {*} value The value to check.
2240
+ * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
2506
2241
  */
2507
- function isIterateeCall(value, index, object) {
2508
- if (!isObject(object)) {
2509
- return false;
2510
- }
2511
- var type = typeof index;
2512
- if (type == 'number'
2513
- ? (isArrayLike(object) && isIndex(index, object.length))
2514
- : (type == 'string' && index in object)) {
2515
- var other = object[index];
2516
- return value === value ? (value === other) : (other !== other);
2517
- }
2518
- return false;
2242
+ function isArrayLike(value) {
2243
+ return value != null && isLength(getLength(value));
2519
2244
  }
2520
2245
 
2521
- module.exports = isIterateeCall;
2246
+ module.exports = isArrayLike;
2522
2247
 
2523
2248
 
2524
2249
  /***/ },
2525
- /* 42 */
2250
+ /* 35 */
2526
2251
  /***/ function(module, exports, __webpack_require__) {
2527
2252
 
2528
- var baseCallback = __webpack_require__(27),
2529
- baseForOwn = __webpack_require__(48);
2253
+ var isArguments = __webpack_require__(63),
2254
+ isArray = __webpack_require__(46),
2255
+ isIndex = __webpack_require__(60),
2256
+ isLength = __webpack_require__(51),
2257
+ keysIn = __webpack_require__(64);
2258
+
2259
+ /** Used for native method references. */
2260
+ var objectProto = Object.prototype;
2261
+
2262
+ /** Used to check objects for own properties. */
2263
+ var hasOwnProperty = objectProto.hasOwnProperty;
2530
2264
 
2531
2265
  /**
2532
- * Creates a function for `_.mapKeys` or `_.mapValues`.
2266
+ * A fallback implementation of `Object.keys` which creates an array of the
2267
+ * own enumerable property names of `object`.
2533
2268
  *
2534
2269
  * @private
2535
- * @param {boolean} [isMapKeys] Specify mapping keys instead of values.
2536
- * @returns {Function} Returns the new map function.
2270
+ * @param {Object} object The object to query.
2271
+ * @returns {Array} Returns the array of property names.
2537
2272
  */
2538
- function createObjectMapper(isMapKeys) {
2539
- return function(object, iteratee, thisArg) {
2540
- var result = {};
2541
- iteratee = baseCallback(iteratee, thisArg, 3);
2273
+ function shimKeys(object) {
2274
+ var props = keysIn(object),
2275
+ propsLength = props.length,
2276
+ length = propsLength && object.length;
2542
2277
 
2543
- baseForOwn(object, function(value, key, object) {
2544
- var mapped = iteratee(value, key, object);
2545
- key = isMapKeys ? mapped : key;
2546
- value = isMapKeys ? value : mapped;
2547
- result[key] = value;
2548
- });
2549
- return result;
2550
- };
2278
+ var allowIndexes = !!length && isLength(length) &&
2279
+ (isArray(object) || isArguments(object));
2280
+
2281
+ var index = -1,
2282
+ result = [];
2283
+
2284
+ while (++index < propsLength) {
2285
+ var key = props[index];
2286
+ if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {
2287
+ result.push(key);
2288
+ }
2289
+ }
2290
+ return result;
2551
2291
  }
2552
2292
 
2553
- module.exports = createObjectMapper;
2293
+ module.exports = shimKeys;
2554
2294
 
2555
2295
 
2556
2296
  /***/ },
2557
- /* 43 */
2297
+ /* 36 */
2558
2298
  /***/ function(module, exports, __webpack_require__) {
2559
2299
 
2300
+ var baseCallback = __webpack_require__(41),
2301
+ baseFind = __webpack_require__(65);
2302
+
2560
2303
  /**
2561
- * Checks if `value` is object-like.
2304
+ * Creates a `_.findKey` or `_.findLastKey` function.
2562
2305
  *
2563
2306
  * @private
2564
- * @param {*} value The value to check.
2565
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
2307
+ * @param {Function} objectFunc The function to iterate over an object.
2308
+ * @returns {Function} Returns the new find function.
2566
2309
  */
2567
- function isObjectLike(value) {
2568
- return !!value && typeof value == 'object';
2310
+ function createFindKey(objectFunc) {
2311
+ return function(object, predicate, thisArg) {
2312
+ predicate = baseCallback(predicate, thisArg, 3);
2313
+ return baseFind(object, predicate, objectFunc, true);
2314
+ };
2569
2315
  }
2570
2316
 
2571
- module.exports = isObjectLike;
2317
+ module.exports = createFindKey;
2572
2318
 
2573
2319
 
2574
2320
  /***/ },
2575
- /* 44 */
2321
+ /* 37 */
2576
2322
  /***/ function(module, exports, __webpack_require__) {
2577
2323
 
2578
- var indexOfNaN = __webpack_require__(68);
2324
+ var indexOfNaN = __webpack_require__(66);
2579
2325
 
2580
2326
  /**
2581
2327
  * The base implementation of `_.indexOf` without support for binary searches.
@@ -2605,7 +2351,7 @@ return /******/ (function(modules) { // webpackBootstrap
2605
2351
 
2606
2352
 
2607
2353
  /***/ },
2608
- /* 45 */
2354
+ /* 38 */
2609
2355
  /***/ function(module, exports, __webpack_require__) {
2610
2356
 
2611
2357
  var isObject = __webpack_require__(25);
@@ -2630,18 +2376,17 @@ return /******/ (function(modules) { // webpackBootstrap
2630
2376
 
2631
2377
 
2632
2378
  /***/ },
2633
- /* 46 */
2379
+ /* 39 */
2634
2380
  /***/ function(module, exports, __webpack_require__) {
2635
2381
 
2636
- /* WEBPACK VAR INJECTION */(function(global) {var SetCache = __webpack_require__(69),
2637
- constant = __webpack_require__(70),
2638
- isNative = __webpack_require__(38);
2382
+ /* WEBPACK VAR INJECTION */(function(global) {var SetCache = __webpack_require__(67),
2383
+ getNative = __webpack_require__(33);
2639
2384
 
2640
2385
  /** Native method references. */
2641
- var Set = isNative(Set = global.Set) && Set;
2386
+ var Set = getNative(global, 'Set');
2642
2387
 
2643
2388
  /* Native method references for those with the same name as other `lodash` methods. */
2644
- var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate;
2389
+ var nativeCreate = getNative(Object, 'create');
2645
2390
 
2646
2391
  /**
2647
2392
  * Creates a `Set` cache object to optimize linear searches of large arrays.
@@ -2650,162 +2395,129 @@ return /******/ (function(modules) { // webpackBootstrap
2650
2395
  * @param {Array} [values] The values to cache.
2651
2396
  * @returns {null|Object} Returns the new cache object if `Set` is supported, else `null`.
2652
2397
  */
2653
- var createCache = !(nativeCreate && Set) ? constant(null) : function(values) {
2654
- return new SetCache(values);
2655
- };
2398
+ function createCache(values) {
2399
+ return (nativeCreate && Set) ? new SetCache(values) : null;
2400
+ }
2656
2401
 
2657
2402
  module.exports = createCache;
2658
2403
 
2659
2404
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
2660
2405
 
2661
2406
  /***/ },
2662
- /* 47 */
2407
+ /* 40 */
2663
2408
  /***/ function(module, exports, __webpack_require__) {
2664
2409
 
2665
- var getLength = __webpack_require__(35),
2666
- isLength = __webpack_require__(36);
2667
-
2668
- /**
2669
- * Checks if `value` is array-like.
2670
- *
2671
- * @private
2672
- * @param {*} value The value to check.
2673
- * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
2674
- */
2675
- function isArrayLike(value) {
2676
- return value != null && isLength(getLength(value));
2677
- }
2410
+ /** Used as the `TypeError` message for "Functions" methods. */
2411
+ var FUNC_ERROR_TEXT = 'Expected a function';
2678
2412
 
2679
- module.exports = isArrayLike;
2680
-
2681
-
2682
- /***/ },
2683
- /* 48 */
2684
- /***/ function(module, exports, __webpack_require__) {
2685
-
2686
- var baseFor = __webpack_require__(71),
2687
- keys = __webpack_require__(21);
2413
+ /* Native method references for those with the same name as other `lodash` methods. */
2414
+ var nativeMax = Math.max;
2688
2415
 
2689
2416
  /**
2690
- * The base implementation of `_.forOwn` without support for callback
2691
- * shorthands and `this` binding.
2417
+ * Creates a function that invokes `func` with the `this` binding of the
2418
+ * created function and arguments from `start` and beyond provided as an array.
2692
2419
  *
2693
- * @private
2694
- * @param {Object} object The object to iterate over.
2695
- * @param {Function} iteratee The function invoked per iteration.
2696
- * @returns {Object} Returns `object`.
2697
- */
2698
- function baseForOwn(object, iteratee) {
2699
- return baseFor(object, iteratee, keys);
2700
- }
2701
-
2702
- module.exports = baseForOwn;
2703
-
2704
-
2705
- /***/ },
2706
- /* 49 */
2707
- /***/ function(module, exports, __webpack_require__) {
2708
-
2709
- var bindCallback = __webpack_require__(40);
2710
-
2711
- /**
2712
- * Creates a function for `_.forOwn` or `_.forOwnRight`.
2420
+ * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/Web/JavaScript/Reference/Functions/rest_parameters).
2713
2421
  *
2714
- * @private
2715
- * @param {Function} objectFunc The function to iterate over an object.
2716
- * @returns {Function} Returns the new each function.
2717
- */
2718
- function createForOwn(objectFunc) {
2719
- return function(object, iteratee, thisArg) {
2720
- if (typeof iteratee != 'function' || thisArg !== undefined) {
2721
- iteratee = bindCallback(iteratee, thisArg, 3);
2722
- }
2723
- return objectFunc(object, iteratee);
2724
- };
2725
- }
2726
-
2727
- module.exports = createForOwn;
2728
-
2729
-
2730
- /***/ },
2731
- /* 50 */
2732
- /***/ function(module, exports, __webpack_require__) {
2733
-
2734
- var baseCallback = __webpack_require__(27),
2735
- baseFind = __webpack_require__(72);
2736
-
2737
- /**
2738
- * Creates a `_.findKey` or `_.findLastKey` function.
2422
+ * @static
2423
+ * @memberOf _
2424
+ * @category Function
2425
+ * @param {Function} func The function to apply a rest parameter to.
2426
+ * @param {number} [start=func.length-1] The start position of the rest parameter.
2427
+ * @returns {Function} Returns the new function.
2428
+ * @example
2739
2429
  *
2740
- * @private
2741
- * @param {Function} objectFunc The function to iterate over an object.
2742
- * @returns {Function} Returns the new find function.
2430
+ * var say = _.restParam(function(what, names) {
2431
+ * return what + ' ' + _.initial(names).join(', ') +
2432
+ * (_.size(names) > 1 ? ', & ' : '') + _.last(names);
2433
+ * });
2434
+ *
2435
+ * say('hello', 'fred', 'barney', 'pebbles');
2436
+ * // => 'hello fred, barney, & pebbles'
2743
2437
  */
2744
- function createFindKey(objectFunc) {
2745
- return function(object, predicate, thisArg) {
2746
- predicate = baseCallback(predicate, thisArg, 3);
2747
- return baseFind(object, predicate, objectFunc, true);
2438
+ function restParam(func, start) {
2439
+ if (typeof func != 'function') {
2440
+ throw new TypeError(FUNC_ERROR_TEXT);
2441
+ }
2442
+ start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);
2443
+ return function() {
2444
+ var args = arguments,
2445
+ index = -1,
2446
+ length = nativeMax(args.length - start, 0),
2447
+ rest = Array(length);
2448
+
2449
+ while (++index < length) {
2450
+ rest[index] = args[start + index];
2451
+ }
2452
+ switch (start) {
2453
+ case 0: return func.call(this, rest);
2454
+ case 1: return func.call(this, args[0], rest);
2455
+ case 2: return func.call(this, args[0], args[1], rest);
2456
+ }
2457
+ var otherArgs = Array(start + 1);
2458
+ index = -1;
2459
+ while (++index < start) {
2460
+ otherArgs[index] = args[index];
2461
+ }
2462
+ otherArgs[start] = rest;
2463
+ return func.apply(this, otherArgs);
2748
2464
  };
2749
2465
  }
2750
2466
 
2751
- module.exports = createFindKey;
2467
+ module.exports = restParam;
2752
2468
 
2753
2469
 
2754
2470
  /***/ },
2755
- /* 51 */
2471
+ /* 41 */
2756
2472
  /***/ function(module, exports, __webpack_require__) {
2757
2473
 
2758
- var isArguments = __webpack_require__(73),
2759
- isArray = __webpack_require__(29),
2760
- isIndex = __webpack_require__(67),
2761
- isLength = __webpack_require__(36),
2762
- keysIn = __webpack_require__(74),
2763
- support = __webpack_require__(75);
2764
-
2765
- /** Used for native method references. */
2766
- var objectProto = Object.prototype;
2767
-
2768
- /** Used to check objects for own properties. */
2769
- var hasOwnProperty = objectProto.hasOwnProperty;
2474
+ var baseMatches = __webpack_require__(68),
2475
+ baseMatchesProperty = __webpack_require__(69),
2476
+ bindCallback = __webpack_require__(27),
2477
+ identity = __webpack_require__(59),
2478
+ property = __webpack_require__(70);
2770
2479
 
2771
2480
  /**
2772
- * A fallback implementation of `Object.keys` which creates an array of the
2773
- * own enumerable property names of `object`.
2774
- *
2775
- * @private
2776
- * @param {Object} object The object to query.
2777
- * @returns {Array} Returns the array of property names.
2778
- */
2779
- function shimKeys(object) {
2780
- var props = keysIn(object),
2781
- propsLength = props.length,
2782
- length = propsLength && object.length;
2783
-
2784
- var allowIndexes = length && isLength(length) &&
2785
- (isArray(object) || (support.nonEnumArgs && isArguments(object)));
2786
-
2787
- var index = -1,
2788
- result = [];
2789
-
2790
- while (++index < propsLength) {
2791
- var key = props[index];
2792
- if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {
2793
- result.push(key);
2794
- }
2481
+ * The base implementation of `_.callback` which supports specifying the
2482
+ * number of arguments to provide to `func`.
2483
+ *
2484
+ * @private
2485
+ * @param {*} [func=_.identity] The value to convert to a callback.
2486
+ * @param {*} [thisArg] The `this` binding of `func`.
2487
+ * @param {number} [argCount] The number of arguments to provide to `func`.
2488
+ * @returns {Function} Returns the callback.
2489
+ */
2490
+ function baseCallback(func, thisArg, argCount) {
2491
+ var type = typeof func;
2492
+ if (type == 'function') {
2493
+ return thisArg === undefined
2494
+ ? func
2495
+ : bindCallback(func, thisArg, argCount);
2795
2496
  }
2796
- return result;
2497
+ if (func == null) {
2498
+ return identity;
2499
+ }
2500
+ if (type == 'object') {
2501
+ return baseMatches(func);
2502
+ }
2503
+ return thisArg === undefined
2504
+ ? property(func)
2505
+ : baseMatchesProperty(func, thisArg);
2797
2506
  }
2798
2507
 
2799
- module.exports = shimKeys;
2508
+ module.exports = baseCallback;
2800
2509
 
2801
2510
 
2802
2511
  /***/ },
2803
- /* 52 */
2512
+ /* 42 */
2804
2513
  /***/ function(module, exports, __webpack_require__) {
2805
2514
 
2806
- var baseIndexOf = __webpack_require__(44),
2807
- cacheIndexOf = __webpack_require__(45),
2808
- createCache = __webpack_require__(46);
2515
+ var baseIndexOf = __webpack_require__(37),
2516
+ cacheIndexOf = __webpack_require__(38),
2517
+ createCache = __webpack_require__(39);
2518
+
2519
+ /** Used as the size to enable large array optimizations. */
2520
+ var LARGE_ARRAY_SIZE = 200;
2809
2521
 
2810
2522
  /**
2811
2523
  * The base implementation of `_.uniq` without support for callback shorthands
@@ -2814,14 +2526,14 @@ return /******/ (function(modules) { // webpackBootstrap
2814
2526
  * @private
2815
2527
  * @param {Array} array The array to inspect.
2816
2528
  * @param {Function} [iteratee] The function invoked per iteration.
2817
- * @returns {Array} Returns the new duplicate-value-free array.
2529
+ * @returns {Array} Returns the new duplicate free array.
2818
2530
  */
2819
2531
  function baseUniq(array, iteratee) {
2820
2532
  var index = -1,
2821
2533
  indexOf = baseIndexOf,
2822
2534
  length = array.length,
2823
2535
  isCommon = true,
2824
- isLarge = isCommon && length >= 200,
2536
+ isLarge = isCommon && length >= LARGE_ARRAY_SIZE,
2825
2537
  seen = isLarge ? createCache() : null,
2826
2538
  result = [];
2827
2539
 
@@ -2863,7 +2575,7 @@ return /******/ (function(modules) { // webpackBootstrap
2863
2575
 
2864
2576
 
2865
2577
  /***/ },
2866
- /* 53 */
2578
+ /* 43 */
2867
2579
  /***/ function(module, exports, __webpack_require__) {
2868
2580
 
2869
2581
  /**
@@ -2873,7 +2585,7 @@ return /******/ (function(modules) { // webpackBootstrap
2873
2585
  * @private
2874
2586
  * @param {Array} array The array to inspect.
2875
2587
  * @param {Function} [iteratee] The function invoked per iteration.
2876
- * @returns {Array} Returns the new duplicate-value-free array.
2588
+ * @returns {Array} Returns the new duplicate free array.
2877
2589
  */
2878
2590
  function sortedUniq(array, iteratee) {
2879
2591
  var seen,
@@ -2898,300 +2610,291 @@ return /******/ (function(modules) { // webpackBootstrap
2898
2610
 
2899
2611
 
2900
2612
  /***/ },
2901
- /* 54 */
2613
+ /* 44 */
2902
2614
  /***/ function(module, exports, __webpack_require__) {
2903
2615
 
2904
- var baseIsMatch = __webpack_require__(76),
2905
- constant = __webpack_require__(70),
2906
- isStrictComparable = __webpack_require__(77),
2907
- keys = __webpack_require__(21),
2908
- toObject = __webpack_require__(78);
2909
-
2910
2616
  /**
2911
- * The base implementation of `_.matches` which does not clone `source`.
2617
+ * A specialized version of `_.map` for arrays without support for callback
2618
+ * shorthands and `this` binding.
2912
2619
  *
2913
2620
  * @private
2914
- * @param {Object} source The object of property values to match.
2915
- * @returns {Function} Returns the new function.
2621
+ * @param {Array} array The array to iterate over.
2622
+ * @param {Function} iteratee The function invoked per iteration.
2623
+ * @returns {Array} Returns the new mapped array.
2916
2624
  */
2917
- function baseMatches(source) {
2918
- var props = keys(source),
2919
- length = props.length;
2920
-
2921
- if (!length) {
2922
- return constant(true);
2923
- }
2924
- if (length == 1) {
2925
- var key = props[0],
2926
- value = source[key];
2927
-
2928
- if (isStrictComparable(value)) {
2929
- return function(object) {
2930
- if (object == null) {
2931
- return false;
2932
- }
2933
- return object[key] === value && (value !== undefined || (key in toObject(object)));
2934
- };
2935
- }
2936
- }
2937
- var values = Array(length),
2938
- strictCompareFlags = Array(length);
2625
+ function arrayMap(array, iteratee) {
2626
+ var index = -1,
2627
+ length = array.length,
2628
+ result = Array(length);
2939
2629
 
2940
- while (length--) {
2941
- value = source[props[length]];
2942
- values[length] = value;
2943
- strictCompareFlags[length] = isStrictComparable(value);
2630
+ while (++index < length) {
2631
+ result[index] = iteratee(array[index], index, array);
2944
2632
  }
2945
- return function(object) {
2946
- return object != null && baseIsMatch(toObject(object), props, values, strictCompareFlags);
2947
- };
2633
+ return result;
2948
2634
  }
2949
2635
 
2950
- module.exports = baseMatches;
2636
+ module.exports = arrayMap;
2951
2637
 
2952
2638
 
2953
2639
  /***/ },
2954
- /* 55 */
2640
+ /* 45 */
2955
2641
  /***/ function(module, exports, __webpack_require__) {
2956
2642
 
2957
- var baseGet = __webpack_require__(79),
2958
- baseIsEqual = __webpack_require__(80),
2959
- baseSlice = __webpack_require__(81),
2960
- isArray = __webpack_require__(29),
2961
- isKey = __webpack_require__(82),
2962
- isStrictComparable = __webpack_require__(77),
2963
- last = __webpack_require__(83),
2964
- toObject = __webpack_require__(78),
2965
- toPath = __webpack_require__(84);
2643
+ var baseEach = __webpack_require__(48),
2644
+ isArrayLike = __webpack_require__(34);
2966
2645
 
2967
2646
  /**
2968
- * The base implementation of `_.matchesProperty` which does not which does
2969
- * not clone `value`.
2647
+ * The base implementation of `_.map` without support for callback shorthands
2648
+ * and `this` binding.
2970
2649
  *
2971
2650
  * @private
2972
- * @param {string} path The path of the property to get.
2973
- * @param {*} value The value to compare.
2974
- * @returns {Function} Returns the new function.
2651
+ * @param {Array|Object|string} collection The collection to iterate over.
2652
+ * @param {Function} iteratee The function invoked per iteration.
2653
+ * @returns {Array} Returns the new mapped array.
2975
2654
  */
2976
- function baseMatchesProperty(path, value) {
2977
- var isArr = isArray(path),
2978
- isCommon = isKey(path) && isStrictComparable(value),
2979
- pathKey = (path + '');
2655
+ function baseMap(collection, iteratee) {
2656
+ var index = -1,
2657
+ result = isArrayLike(collection) ? Array(collection.length) : [];
2980
2658
 
2981
- path = toPath(path);
2982
- return function(object) {
2983
- if (object == null) {
2984
- return false;
2985
- }
2986
- var key = pathKey;
2987
- object = toObject(object);
2988
- if ((isArr || !isCommon) && !(key in object)) {
2989
- object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));
2990
- if (object == null) {
2991
- return false;
2992
- }
2993
- key = last(path);
2994
- object = toObject(object);
2995
- }
2996
- return object[key] === value
2997
- ? (value !== undefined || (key in object))
2998
- : baseIsEqual(value, object[key], null, true);
2999
- };
2659
+ baseEach(collection, function(value, key, collection) {
2660
+ result[++index] = iteratee(value, key, collection);
2661
+ });
2662
+ return result;
3000
2663
  }
3001
2664
 
3002
- module.exports = baseMatchesProperty;
2665
+ module.exports = baseMap;
3003
2666
 
3004
2667
 
3005
2668
  /***/ },
3006
- /* 56 */
2669
+ /* 46 */
3007
2670
  /***/ function(module, exports, __webpack_require__) {
3008
2671
 
2672
+ var getNative = __webpack_require__(33),
2673
+ isLength = __webpack_require__(51),
2674
+ isObjectLike = __webpack_require__(29);
2675
+
2676
+ /** `Object#toString` result references. */
2677
+ var arrayTag = '[object Array]';
2678
+
2679
+ /** Used for native method references. */
2680
+ var objectProto = Object.prototype;
2681
+
3009
2682
  /**
3010
- * This method returns the first argument provided to it.
2683
+ * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
2684
+ * of values.
2685
+ */
2686
+ var objToString = objectProto.toString;
2687
+
2688
+ /* Native method references for those with the same name as other `lodash` methods. */
2689
+ var nativeIsArray = getNative(Array, 'isArray');
2690
+
2691
+ /**
2692
+ * Checks if `value` is classified as an `Array` object.
3011
2693
  *
3012
2694
  * @static
3013
2695
  * @memberOf _
3014
- * @category Utility
3015
- * @param {*} value Any value.
3016
- * @returns {*} Returns `value`.
2696
+ * @category Lang
2697
+ * @param {*} value The value to check.
2698
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
3017
2699
  * @example
3018
2700
  *
3019
- * var object = { 'user': 'fred' };
3020
- *
3021
- * _.identity(object) === object;
2701
+ * _.isArray([1, 2, 3]);
3022
2702
  * // => true
2703
+ *
2704
+ * _.isArray(function() { return arguments; }());
2705
+ * // => false
3023
2706
  */
3024
- function identity(value) {
3025
- return value;
2707
+ var isArray = nativeIsArray || function(value) {
2708
+ return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;
2709
+ };
2710
+
2711
+ module.exports = isArray;
2712
+
2713
+
2714
+ /***/ },
2715
+ /* 47 */
2716
+ /***/ function(module, exports, __webpack_require__) {
2717
+
2718
+ /**
2719
+ * A specialized version of `_.forEach` for arrays without support for callback
2720
+ * shorthands and `this` binding.
2721
+ *
2722
+ * @private
2723
+ * @param {Array} array The array to iterate over.
2724
+ * @param {Function} iteratee The function invoked per iteration.
2725
+ * @returns {Array} Returns `array`.
2726
+ */
2727
+ function arrayEach(array, iteratee) {
2728
+ var index = -1,
2729
+ length = array.length;
2730
+
2731
+ while (++index < length) {
2732
+ if (iteratee(array[index], index, array) === false) {
2733
+ break;
2734
+ }
2735
+ }
2736
+ return array;
3026
2737
  }
3027
2738
 
3028
- module.exports = identity;
2739
+ module.exports = arrayEach;
3029
2740
 
3030
2741
 
3031
2742
  /***/ },
3032
- /* 57 */
2743
+ /* 48 */
3033
2744
  /***/ function(module, exports, __webpack_require__) {
3034
2745
 
3035
- var baseProperty = __webpack_require__(59),
3036
- basePropertyDeep = __webpack_require__(85),
3037
- isKey = __webpack_require__(82);
2746
+ var baseForOwn = __webpack_require__(31),
2747
+ createBaseEach = __webpack_require__(71);
3038
2748
 
3039
2749
  /**
3040
- * Creates a function which returns the property value at `path` on a
3041
- * given object.
3042
- *
3043
- * @static
3044
- * @memberOf _
3045
- * @category Utility
3046
- * @param {Array|string} path The path of the property to get.
3047
- * @returns {Function} Returns the new function.
3048
- * @example
3049
- *
3050
- * var objects = [
3051
- * { 'a': { 'b': { 'c': 2 } } },
3052
- * { 'a': { 'b': { 'c': 1 } } }
3053
- * ];
3054
- *
3055
- * _.map(objects, _.property('a.b.c'));
3056
- * // => [2, 1]
2750
+ * The base implementation of `_.forEach` without support for callback
2751
+ * shorthands and `this` binding.
3057
2752
  *
3058
- * _.pluck(_.sortBy(objects, _.property(['a', 'b', 'c'])), 'a.b.c');
3059
- * // => [1, 2]
2753
+ * @private
2754
+ * @param {Array|Object|string} collection The collection to iterate over.
2755
+ * @param {Function} iteratee The function invoked per iteration.
2756
+ * @returns {Array|Object|string} Returns `collection`.
3060
2757
  */
3061
- function property(path) {
3062
- return isKey(path) ? baseProperty(path) : basePropertyDeep(path);
3063
- }
2758
+ var baseEach = createBaseEach(baseForOwn);
3064
2759
 
3065
- module.exports = property;
2760
+ module.exports = baseEach;
3066
2761
 
3067
2762
 
3068
2763
  /***/ },
3069
- /* 58 */
2764
+ /* 49 */
3070
2765
  /***/ function(module, exports, __webpack_require__) {
3071
2766
 
3072
- var getLength = __webpack_require__(35),
3073
- isLength = __webpack_require__(36),
3074
- toObject = __webpack_require__(78);
2767
+ var bindCallback = __webpack_require__(27),
2768
+ isArray = __webpack_require__(46);
3075
2769
 
3076
2770
  /**
3077
- * Creates a `baseEach` or `baseEachRight` function.
2771
+ * Creates a function for `_.forEach` or `_.forEachRight`.
3078
2772
  *
3079
2773
  * @private
2774
+ * @param {Function} arrayFunc The function to iterate over an array.
3080
2775
  * @param {Function} eachFunc The function to iterate over a collection.
3081
- * @param {boolean} [fromRight] Specify iterating from right to left.
3082
- * @returns {Function} Returns the new base function.
2776
+ * @returns {Function} Returns the new each function.
3083
2777
  */
3084
- function createBaseEach(eachFunc, fromRight) {
3085
- return function(collection, iteratee) {
3086
- var length = collection ? getLength(collection) : 0;
3087
- if (!isLength(length)) {
3088
- return eachFunc(collection, iteratee);
3089
- }
3090
- var index = fromRight ? length : -1,
3091
- iterable = toObject(collection);
3092
-
3093
- while ((fromRight ? index-- : ++index < length)) {
3094
- if (iteratee(iterable[index], index, iterable) === false) {
3095
- break;
3096
- }
3097
- }
3098
- return collection;
2778
+ function createForEach(arrayFunc, eachFunc) {
2779
+ return function(collection, iteratee, thisArg) {
2780
+ return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))
2781
+ ? arrayFunc(collection, iteratee)
2782
+ : eachFunc(collection, bindCallback(iteratee, thisArg, 3));
3099
2783
  };
3100
2784
  }
3101
2785
 
3102
- module.exports = createBaseEach;
2786
+ module.exports = createForEach;
3103
2787
 
3104
2788
 
3105
2789
  /***/ },
3106
- /* 59 */
2790
+ /* 50 */
2791
+ /***/ function(module, exports, __webpack_require__) {
2792
+
2793
+ var baseProperty = __webpack_require__(72);
2794
+
2795
+ /**
2796
+ * Gets the "length" property value of `object`.
2797
+ *
2798
+ * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)
2799
+ * that affects Safari on at least iOS 8.1-8.3 ARM64.
2800
+ *
2801
+ * @private
2802
+ * @param {Object} object The object to query.
2803
+ * @returns {*} Returns the "length" value.
2804
+ */
2805
+ var getLength = baseProperty('length');
2806
+
2807
+ module.exports = getLength;
2808
+
2809
+
2810
+ /***/ },
2811
+ /* 51 */
3107
2812
  /***/ function(module, exports, __webpack_require__) {
3108
2813
 
3109
2814
  /**
3110
- * The base implementation of `_.property` without support for deep paths.
2815
+ * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)
2816
+ * of an array-like value.
2817
+ */
2818
+ var MAX_SAFE_INTEGER = 9007199254740991;
2819
+
2820
+ /**
2821
+ * Checks if `value` is a valid array-like length.
2822
+ *
2823
+ * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).
3111
2824
  *
3112
2825
  * @private
3113
- * @param {string} key The key of the property to get.
3114
- * @returns {Function} Returns the new function.
2826
+ * @param {*} value The value to check.
2827
+ * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
3115
2828
  */
3116
- function baseProperty(key) {
3117
- return function(object) {
3118
- return object == null ? undefined : object[key];
3119
- };
2829
+ function isLength(value) {
2830
+ return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
3120
2831
  }
3121
2832
 
3122
- module.exports = baseProperty;
2833
+ module.exports = isLength;
3123
2834
 
3124
2835
 
3125
2836
  /***/ },
3126
- /* 60 */
2837
+ /* 52 */
3127
2838
  /***/ function(module, exports, __webpack_require__) {
3128
2839
 
3129
2840
  /**
3130
- * The base implementation of `_.reduce` and `_.reduceRight` without support
3131
- * for callback shorthands and `this` binding, which iterates over `collection`
3132
- * using the provided `eachFunc`.
2841
+ * A specialized version of `_.reduce` for arrays without support for callback
2842
+ * shorthands and `this` binding.
3133
2843
  *
3134
2844
  * @private
3135
- * @param {Array|Object|string} collection The collection to iterate over.
2845
+ * @param {Array} array The array to iterate over.
3136
2846
  * @param {Function} iteratee The function invoked per iteration.
3137
- * @param {*} accumulator The initial value.
3138
- * @param {boolean} initFromCollection Specify using the first or last element
3139
- * of `collection` as the initial value.
3140
- * @param {Function} eachFunc The function to iterate over `collection`.
2847
+ * @param {*} [accumulator] The initial value.
2848
+ * @param {boolean} [initFromArray] Specify using the first element of `array`
2849
+ * as the initial value.
3141
2850
  * @returns {*} Returns the accumulated value.
3142
2851
  */
3143
- function baseReduce(collection, iteratee, accumulator, initFromCollection, eachFunc) {
3144
- eachFunc(collection, function(value, index, collection) {
3145
- accumulator = initFromCollection
3146
- ? (initFromCollection = false, value)
3147
- : iteratee(accumulator, value, index, collection);
3148
- });
2852
+ function arrayReduce(array, iteratee, accumulator, initFromArray) {
2853
+ var index = -1,
2854
+ length = array.length;
2855
+
2856
+ if (initFromArray && length) {
2857
+ accumulator = array[++index];
2858
+ }
2859
+ while (++index < length) {
2860
+ accumulator = iteratee(accumulator, array[index], index, array);
2861
+ }
3149
2862
  return accumulator;
3150
2863
  }
3151
2864
 
3152
- module.exports = baseReduce;
2865
+ module.exports = arrayReduce;
3153
2866
 
3154
2867
 
3155
2868
  /***/ },
3156
- /* 61 */
2869
+ /* 53 */
3157
2870
  /***/ function(module, exports, __webpack_require__) {
3158
2871
 
3159
- var baseToString = __webpack_require__(86);
3160
-
3161
- /**
3162
- * Used to match `RegExp` [special characters](http://www.regular-expressions.info/characters.html#special).
3163
- * In addition to special characters the forward slash is escaped to allow for
3164
- * easier `eval` use and `Function` compilation.
3165
- */
3166
- var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g,
3167
- reHasRegExpChars = RegExp(reRegExpChars.source);
2872
+ var baseCallback = __webpack_require__(41),
2873
+ baseReduce = __webpack_require__(73),
2874
+ isArray = __webpack_require__(46);
3168
2875
 
3169
2876
  /**
3170
- * Escapes the `RegExp` special characters "\", "/", "^", "$", ".", "|", "?",
3171
- * "*", "+", "(", ")", "[", "]", "{" and "}" in `string`.
3172
- *
3173
- * @static
3174
- * @memberOf _
3175
- * @category String
3176
- * @param {string} [string=''] The string to escape.
3177
- * @returns {string} Returns the escaped string.
3178
- * @example
2877
+ * Creates a function for `_.reduce` or `_.reduceRight`.
3179
2878
  *
3180
- * _.escapeRegExp('[lodash](https://lodash.com/)');
3181
- * // => '\[lodash\]\(https:\/\/lodash\.com\/\)'
2879
+ * @private
2880
+ * @param {Function} arrayFunc The function to iterate over an array.
2881
+ * @param {Function} eachFunc The function to iterate over a collection.
2882
+ * @returns {Function} Returns the new each function.
3182
2883
  */
3183
- function escapeRegExp(string) {
3184
- string = baseToString(string);
3185
- return (string && reHasRegExpChars.test(string))
3186
- ? string.replace(reRegExpChars, '\\$&')
3187
- : string;
2884
+ function createReduce(arrayFunc, eachFunc) {
2885
+ return function(collection, iteratee, accumulator, thisArg) {
2886
+ var initFromArray = arguments.length < 3;
2887
+ return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))
2888
+ ? arrayFunc(collection, iteratee, accumulator, initFromArray)
2889
+ : baseReduce(collection, baseCallback(iteratee, thisArg, 4), accumulator, initFromArray, eachFunc);
2890
+ };
3188
2891
  }
3189
2892
 
3190
- module.exports = escapeRegExp;
2893
+ module.exports = createReduce;
3191
2894
 
3192
2895
 
3193
2896
  /***/ },
3194
- /* 62 */
2897
+ /* 54 */
3195
2898
  /***/ function(module, exports, __webpack_require__) {
3196
2899
 
3197
2900
  /**
@@ -3217,39 +2920,11 @@ return /******/ (function(modules) { // webpackBootstrap
3217
2920
 
3218
2921
 
3219
2922
  /***/ },
3220
- /* 63 */
2923
+ /* 55 */
3221
2924
  /***/ function(module, exports, __webpack_require__) {
3222
2925
 
3223
- var baseCopy = __webpack_require__(87),
3224
- getSymbols = __webpack_require__(88),
3225
- isNative = __webpack_require__(38),
3226
- keys = __webpack_require__(21);
3227
-
3228
- /** Native method references. */
3229
- var preventExtensions = isNative(preventExtensions = Object.preventExtensions) && preventExtensions;
3230
-
3231
- /** Used as `baseAssign`. */
3232
- var nativeAssign = (function() {
3233
- // Avoid `Object.assign` in Firefox 34-37 which have an early implementation
3234
- // with a now defunct try/catch behavior. See https://bugzilla.mozilla.org/show_bug.cgi?id=1103344
3235
- // for more details.
3236
- //
3237
- // Use `Object.preventExtensions` on a plain object instead of simply using
3238
- // `Object('x')` because Chrome and IE fail to throw an error when attempting
3239
- // to assign values to readonly indexes of strings.
3240
- var func = preventExtensions && isNative(func = Object.assign) && func;
3241
- try {
3242
- if (func) {
3243
- var object = preventExtensions({ '1': 0 });
3244
- object[0] = 1;
3245
- }
3246
- } catch(e) {
3247
- // Only attempt in strict mode.
3248
- try { func(object, 'xo'); } catch(e) {}
3249
- return !object[1] && func;
3250
- }
3251
- return false;
3252
- }());
2926
+ var baseCopy = __webpack_require__(74),
2927
+ keys = __webpack_require__(17);
3253
2928
 
3254
2929
  /**
3255
2930
  * The base implementation of `_.assign` without support for argument juggling,
@@ -3260,17 +2935,17 @@ return /******/ (function(modules) { // webpackBootstrap
3260
2935
  * @param {Object} source The source object.
3261
2936
  * @returns {Object} Returns `object`.
3262
2937
  */
3263
- var baseAssign = nativeAssign || function(object, source) {
2938
+ function baseAssign(object, source) {
3264
2939
  return source == null
3265
2940
  ? object
3266
- : baseCopy(source, getSymbols(source), baseCopy(source, keys(source), object));
3267
- };
2941
+ : baseCopy(source, keys(source), object);
2942
+ }
3268
2943
 
3269
2944
  module.exports = baseAssign;
3270
2945
 
3271
2946
 
3272
2947
  /***/ },
3273
- /* 64 */
2948
+ /* 56 */
3274
2949
  /***/ function(module, exports, __webpack_require__) {
3275
2950
 
3276
2951
  /** Used for native method references. */
@@ -3302,10 +2977,10 @@ return /******/ (function(modules) { // webpackBootstrap
3302
2977
 
3303
2978
 
3304
2979
  /***/ },
3305
- /* 65 */
2980
+ /* 57 */
3306
2981
  /***/ function(module, exports, __webpack_require__) {
3307
2982
 
3308
- var bufferClone = __webpack_require__(89);
2983
+ var bufferClone = __webpack_require__(75);
3309
2984
 
3310
2985
  /** `Object#toString` result references. */
3311
2986
  var boolTag = '[object Boolean]',
@@ -3356,71 +3031,318 @@ return /******/ (function(modules) { // webpackBootstrap
3356
3031
  var buffer = object.buffer;
3357
3032
  return new Ctor(isDeep ? bufferClone(buffer) : buffer, object.byteOffset, object.length);
3358
3033
 
3359
- case numberTag:
3360
- case stringTag:
3361
- return new Ctor(object);
3034
+ case numberTag:
3035
+ case stringTag:
3036
+ return new Ctor(object);
3037
+
3038
+ case regexpTag:
3039
+ var result = new Ctor(object.source, reFlags.exec(object));
3040
+ result.lastIndex = object.lastIndex;
3041
+ }
3042
+ return result;
3043
+ }
3044
+
3045
+ module.exports = initCloneByTag;
3046
+
3047
+
3048
+ /***/ },
3049
+ /* 58 */
3050
+ /***/ function(module, exports, __webpack_require__) {
3051
+
3052
+ /**
3053
+ * Initializes an object clone.
3054
+ *
3055
+ * @private
3056
+ * @param {Object} object The object to clone.
3057
+ * @returns {Object} Returns the initialized clone.
3058
+ */
3059
+ function initCloneObject(object) {
3060
+ var Ctor = object.constructor;
3061
+ if (!(typeof Ctor == 'function' && Ctor instanceof Ctor)) {
3062
+ Ctor = Object;
3063
+ }
3064
+ return new Ctor;
3065
+ }
3066
+
3067
+ module.exports = initCloneObject;
3068
+
3069
+
3070
+ /***/ },
3071
+ /* 59 */
3072
+ /***/ function(module, exports, __webpack_require__) {
3073
+
3074
+ /**
3075
+ * This method returns the first argument provided to it.
3076
+ *
3077
+ * @static
3078
+ * @memberOf _
3079
+ * @category Utility
3080
+ * @param {*} value Any value.
3081
+ * @returns {*} Returns `value`.
3082
+ * @example
3083
+ *
3084
+ * var object = { 'user': 'fred' };
3085
+ *
3086
+ * _.identity(object) === object;
3087
+ * // => true
3088
+ */
3089
+ function identity(value) {
3090
+ return value;
3091
+ }
3092
+
3093
+ module.exports = identity;
3094
+
3095
+
3096
+ /***/ },
3097
+ /* 60 */
3098
+ /***/ function(module, exports, __webpack_require__) {
3099
+
3100
+ /** Used to detect unsigned integer values. */
3101
+ var reIsUint = /^\d+$/;
3102
+
3103
+ /**
3104
+ * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)
3105
+ * of an array-like value.
3106
+ */
3107
+ var MAX_SAFE_INTEGER = 9007199254740991;
3108
+
3109
+ /**
3110
+ * Checks if `value` is a valid array-like index.
3111
+ *
3112
+ * @private
3113
+ * @param {*} value The value to check.
3114
+ * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
3115
+ * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
3116
+ */
3117
+ function isIndex(value, length) {
3118
+ value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;
3119
+ length = length == null ? MAX_SAFE_INTEGER : length;
3120
+ return value > -1 && value % 1 == 0 && value < length;
3121
+ }
3122
+
3123
+ module.exports = isIndex;
3124
+
3125
+
3126
+ /***/ },
3127
+ /* 61 */
3128
+ /***/ function(module, exports, __webpack_require__) {
3129
+
3130
+ var createBaseFor = __webpack_require__(76);
3131
+
3132
+ /**
3133
+ * The base implementation of `baseForIn` and `baseForOwn` which iterates
3134
+ * over `object` properties returned by `keysFunc` invoking `iteratee` for
3135
+ * each property. Iteratee functions may exit iteration early by explicitly
3136
+ * returning `false`.
3137
+ *
3138
+ * @private
3139
+ * @param {Object} object The object to iterate over.
3140
+ * @param {Function} iteratee The function invoked per iteration.
3141
+ * @param {Function} keysFunc The function to get the keys of `object`.
3142
+ * @returns {Object} Returns `object`.
3143
+ */
3144
+ var baseFor = createBaseFor();
3145
+
3146
+ module.exports = baseFor;
3147
+
3148
+
3149
+ /***/ },
3150
+ /* 62 */
3151
+ /***/ function(module, exports, __webpack_require__) {
3152
+
3153
+ var isFunction = __webpack_require__(13),
3154
+ isObjectLike = __webpack_require__(29);
3155
+
3156
+ /** Used to detect host constructors (Safari > 5). */
3157
+ var reIsHostCtor = /^\[object .+?Constructor\]$/;
3158
+
3159
+ /** Used for native method references. */
3160
+ var objectProto = Object.prototype;
3161
+
3162
+ /** Used to resolve the decompiled source of functions. */
3163
+ var fnToString = Function.prototype.toString;
3164
+
3165
+ /** Used to check objects for own properties. */
3166
+ var hasOwnProperty = objectProto.hasOwnProperty;
3167
+
3168
+ /** Used to detect if a method is native. */
3169
+ var reIsNative = RegExp('^' +
3170
+ fnToString.call(hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g, '\\$&')
3171
+ .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
3172
+ );
3173
+
3174
+ /**
3175
+ * Checks if `value` is a native function.
3176
+ *
3177
+ * @static
3178
+ * @memberOf _
3179
+ * @category Lang
3180
+ * @param {*} value The value to check.
3181
+ * @returns {boolean} Returns `true` if `value` is a native function, else `false`.
3182
+ * @example
3183
+ *
3184
+ * _.isNative(Array.prototype.push);
3185
+ * // => true
3186
+ *
3187
+ * _.isNative(_);
3188
+ * // => false
3189
+ */
3190
+ function isNative(value) {
3191
+ if (value == null) {
3192
+ return false;
3193
+ }
3194
+ if (isFunction(value)) {
3195
+ return reIsNative.test(fnToString.call(value));
3196
+ }
3197
+ return isObjectLike(value) && reIsHostCtor.test(value);
3198
+ }
3199
+
3200
+ module.exports = isNative;
3201
+
3202
+
3203
+ /***/ },
3204
+ /* 63 */
3205
+ /***/ function(module, exports, __webpack_require__) {
3206
+
3207
+ var isArrayLike = __webpack_require__(34),
3208
+ isObjectLike = __webpack_require__(29);
3209
+
3210
+ /** Used for native method references. */
3211
+ var objectProto = Object.prototype;
3212
+
3213
+ /** Used to check objects for own properties. */
3214
+ var hasOwnProperty = objectProto.hasOwnProperty;
3215
+
3216
+ /** Native method references. */
3217
+ var propertyIsEnumerable = objectProto.propertyIsEnumerable;
3362
3218
 
3363
- case regexpTag:
3364
- var result = new Ctor(object.source, reFlags.exec(object));
3365
- result.lastIndex = object.lastIndex;
3366
- }
3367
- return result;
3219
+ /**
3220
+ * Checks if `value` is classified as an `arguments` object.
3221
+ *
3222
+ * @static
3223
+ * @memberOf _
3224
+ * @category Lang
3225
+ * @param {*} value The value to check.
3226
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
3227
+ * @example
3228
+ *
3229
+ * _.isArguments(function() { return arguments; }());
3230
+ * // => true
3231
+ *
3232
+ * _.isArguments([1, 2, 3]);
3233
+ * // => false
3234
+ */
3235
+ function isArguments(value) {
3236
+ return isObjectLike(value) && isArrayLike(value) &&
3237
+ hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');
3368
3238
  }
3369
3239
 
3370
- module.exports = initCloneByTag;
3240
+ module.exports = isArguments;
3371
3241
 
3372
3242
 
3373
3243
  /***/ },
3374
- /* 66 */
3244
+ /* 64 */
3375
3245
  /***/ function(module, exports, __webpack_require__) {
3376
3246
 
3247
+ var isArguments = __webpack_require__(63),
3248
+ isArray = __webpack_require__(46),
3249
+ isIndex = __webpack_require__(60),
3250
+ isLength = __webpack_require__(51),
3251
+ isObject = __webpack_require__(25);
3252
+
3253
+ /** Used for native method references. */
3254
+ var objectProto = Object.prototype;
3255
+
3256
+ /** Used to check objects for own properties. */
3257
+ var hasOwnProperty = objectProto.hasOwnProperty;
3258
+
3377
3259
  /**
3378
- * Initializes an object clone.
3260
+ * Creates an array of the own and inherited enumerable property names of `object`.
3379
3261
  *
3380
- * @private
3381
- * @param {Object} object The object to clone.
3382
- * @returns {Object} Returns the initialized clone.
3262
+ * **Note:** Non-object values are coerced to objects.
3263
+ *
3264
+ * @static
3265
+ * @memberOf _
3266
+ * @category Object
3267
+ * @param {Object} object The object to query.
3268
+ * @returns {Array} Returns the array of property names.
3269
+ * @example
3270
+ *
3271
+ * function Foo() {
3272
+ * this.a = 1;
3273
+ * this.b = 2;
3274
+ * }
3275
+ *
3276
+ * Foo.prototype.c = 3;
3277
+ *
3278
+ * _.keysIn(new Foo);
3279
+ * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
3383
3280
  */
3384
- function initCloneObject(object) {
3385
- var Ctor = object.constructor;
3386
- if (!(typeof Ctor == 'function' && Ctor instanceof Ctor)) {
3387
- Ctor = Object;
3281
+ function keysIn(object) {
3282
+ if (object == null) {
3283
+ return [];
3388
3284
  }
3389
- return new Ctor;
3285
+ if (!isObject(object)) {
3286
+ object = Object(object);
3287
+ }
3288
+ var length = object.length;
3289
+ length = (length && isLength(length) &&
3290
+ (isArray(object) || isArguments(object)) && length) || 0;
3291
+
3292
+ var Ctor = object.constructor,
3293
+ index = -1,
3294
+ isProto = typeof Ctor == 'function' && Ctor.prototype === object,
3295
+ result = Array(length),
3296
+ skipIndexes = length > 0;
3297
+
3298
+ while (++index < length) {
3299
+ result[index] = (index + '');
3300
+ }
3301
+ for (var key in object) {
3302
+ if (!(skipIndexes && isIndex(key, length)) &&
3303
+ !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
3304
+ result.push(key);
3305
+ }
3306
+ }
3307
+ return result;
3390
3308
  }
3391
3309
 
3392
- module.exports = initCloneObject;
3310
+ module.exports = keysIn;
3393
3311
 
3394
3312
 
3395
3313
  /***/ },
3396
- /* 67 */
3314
+ /* 65 */
3397
3315
  /***/ function(module, exports, __webpack_require__) {
3398
3316
 
3399
3317
  /**
3400
- * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)
3401
- * of an array-like value.
3402
- */
3403
- var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;
3404
-
3405
- /**
3406
- * Checks if `value` is a valid array-like index.
3318
+ * The base implementation of `_.find`, `_.findLast`, `_.findKey`, and `_.findLastKey`,
3319
+ * without support for callback shorthands and `this` binding, which iterates
3320
+ * over `collection` using the provided `eachFunc`.
3407
3321
  *
3408
3322
  * @private
3409
- * @param {*} value The value to check.
3410
- * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
3411
- * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
3323
+ * @param {Array|Object|string} collection The collection to search.
3324
+ * @param {Function} predicate The function invoked per iteration.
3325
+ * @param {Function} eachFunc The function to iterate over `collection`.
3326
+ * @param {boolean} [retKey] Specify returning the key of the found element
3327
+ * instead of the element itself.
3328
+ * @returns {*} Returns the found element or its key, else `undefined`.
3412
3329
  */
3413
- function isIndex(value, length) {
3414
- value = +value;
3415
- length = length == null ? MAX_SAFE_INTEGER : length;
3416
- return value > -1 && value % 1 == 0 && value < length;
3330
+ function baseFind(collection, predicate, eachFunc, retKey) {
3331
+ var result;
3332
+ eachFunc(collection, function(value, key, collection) {
3333
+ if (predicate(value, key, collection)) {
3334
+ result = retKey ? key : value;
3335
+ return false;
3336
+ }
3337
+ });
3338
+ return result;
3417
3339
  }
3418
3340
 
3419
- module.exports = isIndex;
3341
+ module.exports = baseFind;
3420
3342
 
3421
3343
 
3422
3344
  /***/ },
3423
- /* 68 */
3345
+ /* 66 */
3424
3346
  /***/ function(module, exports, __webpack_require__) {
3425
3347
 
3426
3348
  /**
@@ -3449,17 +3371,17 @@ return /******/ (function(modules) { // webpackBootstrap
3449
3371
 
3450
3372
 
3451
3373
  /***/ },
3452
- /* 69 */
3374
+ /* 67 */
3453
3375
  /***/ function(module, exports, __webpack_require__) {
3454
3376
 
3455
- /* WEBPACK VAR INJECTION */(function(global) {var cachePush = __webpack_require__(90),
3456
- isNative = __webpack_require__(38);
3377
+ /* WEBPACK VAR INJECTION */(function(global) {var cachePush = __webpack_require__(77),
3378
+ getNative = __webpack_require__(33);
3457
3379
 
3458
3380
  /** Native method references. */
3459
- var Set = isNative(Set = global.Set) && Set;
3381
+ var Set = getNative(global, 'Set');
3460
3382
 
3461
3383
  /* Native method references for those with the same name as other `lodash` methods. */
3462
- var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate;
3384
+ var nativeCreate = getNative(Object, 'create');
3463
3385
 
3464
3386
  /**
3465
3387
  *
@@ -3482,293 +3404,340 @@ return /******/ (function(modules) { // webpackBootstrap
3482
3404
 
3483
3405
  module.exports = SetCache;
3484
3406
 
3485
- /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
3407
+ /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
3408
+
3409
+ /***/ },
3410
+ /* 68 */
3411
+ /***/ function(module, exports, __webpack_require__) {
3412
+
3413
+ var baseIsMatch = __webpack_require__(78),
3414
+ getMatchData = __webpack_require__(79),
3415
+ toObject = __webpack_require__(80);
3416
+
3417
+ /**
3418
+ * The base implementation of `_.matches` which does not clone `source`.
3419
+ *
3420
+ * @private
3421
+ * @param {Object} source The object of property values to match.
3422
+ * @returns {Function} Returns the new function.
3423
+ */
3424
+ function baseMatches(source) {
3425
+ var matchData = getMatchData(source);
3426
+ if (matchData.length == 1 && matchData[0][2]) {
3427
+ var key = matchData[0][0],
3428
+ value = matchData[0][1];
3429
+
3430
+ return function(object) {
3431
+ if (object == null) {
3432
+ return false;
3433
+ }
3434
+ return object[key] === value && (value !== undefined || (key in toObject(object)));
3435
+ };
3436
+ }
3437
+ return function(object) {
3438
+ return baseIsMatch(object, matchData);
3439
+ };
3440
+ }
3441
+
3442
+ module.exports = baseMatches;
3443
+
3444
+
3445
+ /***/ },
3446
+ /* 69 */
3447
+ /***/ function(module, exports, __webpack_require__) {
3448
+
3449
+ var baseGet = __webpack_require__(81),
3450
+ baseIsEqual = __webpack_require__(82),
3451
+ baseSlice = __webpack_require__(83),
3452
+ isArray = __webpack_require__(46),
3453
+ isKey = __webpack_require__(84),
3454
+ isStrictComparable = __webpack_require__(85),
3455
+ last = __webpack_require__(86),
3456
+ toObject = __webpack_require__(80),
3457
+ toPath = __webpack_require__(87);
3458
+
3459
+ /**
3460
+ * The base implementation of `_.matchesProperty` which does not clone `srcValue`.
3461
+ *
3462
+ * @private
3463
+ * @param {string} path The path of the property to get.
3464
+ * @param {*} srcValue The value to compare.
3465
+ * @returns {Function} Returns the new function.
3466
+ */
3467
+ function baseMatchesProperty(path, srcValue) {
3468
+ var isArr = isArray(path),
3469
+ isCommon = isKey(path) && isStrictComparable(srcValue),
3470
+ pathKey = (path + '');
3471
+
3472
+ path = toPath(path);
3473
+ return function(object) {
3474
+ if (object == null) {
3475
+ return false;
3476
+ }
3477
+ var key = pathKey;
3478
+ object = toObject(object);
3479
+ if ((isArr || !isCommon) && !(key in object)) {
3480
+ object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));
3481
+ if (object == null) {
3482
+ return false;
3483
+ }
3484
+ key = last(path);
3485
+ object = toObject(object);
3486
+ }
3487
+ return object[key] === srcValue
3488
+ ? (srcValue !== undefined || (key in object))
3489
+ : baseIsEqual(srcValue, object[key], undefined, true);
3490
+ };
3491
+ }
3492
+
3493
+ module.exports = baseMatchesProperty;
3494
+
3495
+
3496
+ /***/ },
3497
+ /* 70 */
3498
+ /***/ function(module, exports, __webpack_require__) {
3499
+
3500
+ var baseProperty = __webpack_require__(72),
3501
+ basePropertyDeep = __webpack_require__(88),
3502
+ isKey = __webpack_require__(84);
3503
+
3504
+ /**
3505
+ * Creates a function that returns the property value at `path` on a
3506
+ * given object.
3507
+ *
3508
+ * @static
3509
+ * @memberOf _
3510
+ * @category Utility
3511
+ * @param {Array|string} path The path of the property to get.
3512
+ * @returns {Function} Returns the new function.
3513
+ * @example
3514
+ *
3515
+ * var objects = [
3516
+ * { 'a': { 'b': { 'c': 2 } } },
3517
+ * { 'a': { 'b': { 'c': 1 } } }
3518
+ * ];
3519
+ *
3520
+ * _.map(objects, _.property('a.b.c'));
3521
+ * // => [2, 1]
3522
+ *
3523
+ * _.pluck(_.sortBy(objects, _.property(['a', 'b', 'c'])), 'a.b.c');
3524
+ * // => [1, 2]
3525
+ */
3526
+ function property(path) {
3527
+ return isKey(path) ? baseProperty(path) : basePropertyDeep(path);
3528
+ }
3529
+
3530
+ module.exports = property;
3531
+
3532
+
3533
+ /***/ },
3534
+ /* 71 */
3535
+ /***/ function(module, exports, __webpack_require__) {
3536
+
3537
+ var getLength = __webpack_require__(50),
3538
+ isLength = __webpack_require__(51),
3539
+ toObject = __webpack_require__(80);
3540
+
3541
+ /**
3542
+ * Creates a `baseEach` or `baseEachRight` function.
3543
+ *
3544
+ * @private
3545
+ * @param {Function} eachFunc The function to iterate over a collection.
3546
+ * @param {boolean} [fromRight] Specify iterating from right to left.
3547
+ * @returns {Function} Returns the new base function.
3548
+ */
3549
+ function createBaseEach(eachFunc, fromRight) {
3550
+ return function(collection, iteratee) {
3551
+ var length = collection ? getLength(collection) : 0;
3552
+ if (!isLength(length)) {
3553
+ return eachFunc(collection, iteratee);
3554
+ }
3555
+ var index = fromRight ? length : -1,
3556
+ iterable = toObject(collection);
3557
+
3558
+ while ((fromRight ? index-- : ++index < length)) {
3559
+ if (iteratee(iterable[index], index, iterable) === false) {
3560
+ break;
3561
+ }
3562
+ }
3563
+ return collection;
3564
+ };
3565
+ }
3566
+
3567
+ module.exports = createBaseEach;
3568
+
3486
3569
 
3487
3570
  /***/ },
3488
- /* 70 */
3571
+ /* 72 */
3489
3572
  /***/ function(module, exports, __webpack_require__) {
3490
3573
 
3491
3574
  /**
3492
- * Creates a function that returns `value`.
3575
+ * The base implementation of `_.property` without support for deep paths.
3493
3576
  *
3494
- * @static
3495
- * @memberOf _
3496
- * @category Utility
3497
- * @param {*} value The value to return from the new function.
3577
+ * @private
3578
+ * @param {string} key The key of the property to get.
3498
3579
  * @returns {Function} Returns the new function.
3499
- * @example
3500
- *
3501
- * var object = { 'user': 'fred' };
3502
- * var getter = _.constant(object);
3503
- *
3504
- * getter() === object;
3505
- * // => true
3506
3580
  */
3507
- function constant(value) {
3508
- return function() {
3509
- return value;
3581
+ function baseProperty(key) {
3582
+ return function(object) {
3583
+ return object == null ? undefined : object[key];
3510
3584
  };
3511
3585
  }
3512
3586
 
3513
- module.exports = constant;
3587
+ module.exports = baseProperty;
3514
3588
 
3515
3589
 
3516
3590
  /***/ },
3517
- /* 71 */
3591
+ /* 73 */
3518
3592
  /***/ function(module, exports, __webpack_require__) {
3519
3593
 
3520
- var createBaseFor = __webpack_require__(91);
3521
-
3522
3594
  /**
3523
- * The base implementation of `baseForIn` and `baseForOwn` which iterates
3524
- * over `object` properties returned by `keysFunc` invoking `iteratee` for
3525
- * each property. Iteratee functions may exit iteration early by explicitly
3526
- * returning `false`.
3595
+ * The base implementation of `_.reduce` and `_.reduceRight` without support
3596
+ * for callback shorthands and `this` binding, which iterates over `collection`
3597
+ * using the provided `eachFunc`.
3527
3598
  *
3528
3599
  * @private
3529
- * @param {Object} object The object to iterate over.
3600
+ * @param {Array|Object|string} collection The collection to iterate over.
3530
3601
  * @param {Function} iteratee The function invoked per iteration.
3531
- * @param {Function} keysFunc The function to get the keys of `object`.
3532
- * @returns {Object} Returns `object`.
3602
+ * @param {*} accumulator The initial value.
3603
+ * @param {boolean} initFromCollection Specify using the first or last element
3604
+ * of `collection` as the initial value.
3605
+ * @param {Function} eachFunc The function to iterate over `collection`.
3606
+ * @returns {*} Returns the accumulated value.
3533
3607
  */
3534
- var baseFor = createBaseFor();
3608
+ function baseReduce(collection, iteratee, accumulator, initFromCollection, eachFunc) {
3609
+ eachFunc(collection, function(value, index, collection) {
3610
+ accumulator = initFromCollection
3611
+ ? (initFromCollection = false, value)
3612
+ : iteratee(accumulator, value, index, collection);
3613
+ });
3614
+ return accumulator;
3615
+ }
3535
3616
 
3536
- module.exports = baseFor;
3617
+ module.exports = baseReduce;
3537
3618
 
3538
3619
 
3539
3620
  /***/ },
3540
- /* 72 */
3621
+ /* 74 */
3541
3622
  /***/ function(module, exports, __webpack_require__) {
3542
3623
 
3543
3624
  /**
3544
- * The base implementation of `_.find`, `_.findLast`, `_.findKey`, and `_.findLastKey`,
3545
- * without support for callback shorthands and `this` binding, which iterates
3546
- * over `collection` using the provided `eachFunc`.
3625
+ * Copies properties of `source` to `object`.
3547
3626
  *
3548
3627
  * @private
3549
- * @param {Array|Object|string} collection The collection to search.
3550
- * @param {Function} predicate The function invoked per iteration.
3551
- * @param {Function} eachFunc The function to iterate over `collection`.
3552
- * @param {boolean} [retKey] Specify returning the key of the found element
3553
- * instead of the element itself.
3554
- * @returns {*} Returns the found element or its key, else `undefined`.
3628
+ * @param {Object} source The object to copy properties from.
3629
+ * @param {Array} props The property names to copy.
3630
+ * @param {Object} [object={}] The object to copy properties to.
3631
+ * @returns {Object} Returns `object`.
3555
3632
  */
3556
- function baseFind(collection, predicate, eachFunc, retKey) {
3557
- var result;
3558
- eachFunc(collection, function(value, key, collection) {
3559
- if (predicate(value, key, collection)) {
3560
- result = retKey ? key : value;
3561
- return false;
3562
- }
3563
- });
3564
- return result;
3633
+ function baseCopy(source, props, object) {
3634
+ object || (object = {});
3635
+
3636
+ var index = -1,
3637
+ length = props.length;
3638
+
3639
+ while (++index < length) {
3640
+ var key = props[index];
3641
+ object[key] = source[key];
3642
+ }
3643
+ return object;
3565
3644
  }
3566
3645
 
3567
- module.exports = baseFind;
3646
+ module.exports = baseCopy;
3568
3647
 
3569
3648
 
3570
3649
  /***/ },
3571
- /* 73 */
3650
+ /* 75 */
3572
3651
  /***/ function(module, exports, __webpack_require__) {
3573
3652
 
3574
- var isArrayLike = __webpack_require__(47),
3575
- isObjectLike = __webpack_require__(43);
3576
-
3577
- /** `Object#toString` result references. */
3578
- var argsTag = '[object Arguments]';
3579
-
3580
- /** Used for native method references. */
3581
- var objectProto = Object.prototype;
3582
-
3583
- /**
3584
- * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
3585
- * of values.
3586
- */
3587
- var objToString = objectProto.toString;
3653
+ /* WEBPACK VAR INJECTION */(function(global) {/** Native method references. */
3654
+ var ArrayBuffer = global.ArrayBuffer,
3655
+ Uint8Array = global.Uint8Array;
3588
3656
 
3589
3657
  /**
3590
- * Checks if `value` is classified as an `arguments` object.
3591
- *
3592
- * @static
3593
- * @memberOf _
3594
- * @category Lang
3595
- * @param {*} value The value to check.
3596
- * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
3597
- * @example
3598
- *
3599
- * _.isArguments(function() { return arguments; }());
3600
- * // => true
3658
+ * Creates a clone of the given array buffer.
3601
3659
  *
3602
- * _.isArguments([1, 2, 3]);
3603
- * // => false
3660
+ * @private
3661
+ * @param {ArrayBuffer} buffer The array buffer to clone.
3662
+ * @returns {ArrayBuffer} Returns the cloned array buffer.
3604
3663
  */
3605
- function isArguments(value) {
3606
- return isObjectLike(value) && isArrayLike(value) && objToString.call(value) == argsTag;
3664
+ function bufferClone(buffer) {
3665
+ var result = new ArrayBuffer(buffer.byteLength),
3666
+ view = new Uint8Array(result);
3667
+
3668
+ view.set(new Uint8Array(buffer));
3669
+ return result;
3607
3670
  }
3608
3671
 
3609
- module.exports = isArguments;
3610
-
3672
+ module.exports = bufferClone;
3673
+
3674
+ /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
3611
3675
 
3612
3676
  /***/ },
3613
- /* 74 */
3677
+ /* 76 */
3614
3678
  /***/ function(module, exports, __webpack_require__) {
3615
3679
 
3616
- var isArguments = __webpack_require__(73),
3617
- isArray = __webpack_require__(29),
3618
- isIndex = __webpack_require__(67),
3619
- isLength = __webpack_require__(36),
3620
- isObject = __webpack_require__(25),
3621
- support = __webpack_require__(75);
3622
-
3623
- /** Used for native method references. */
3624
- var objectProto = Object.prototype;
3625
-
3626
- /** Used to check objects for own properties. */
3627
- var hasOwnProperty = objectProto.hasOwnProperty;
3680
+ var toObject = __webpack_require__(80);
3628
3681
 
3629
3682
  /**
3630
- * Creates an array of the own and inherited enumerable property names of `object`.
3631
- *
3632
- * **Note:** Non-object values are coerced to objects.
3633
- *
3634
- * @static
3635
- * @memberOf _
3636
- * @category Object
3637
- * @param {Object} object The object to query.
3638
- * @returns {Array} Returns the array of property names.
3639
- * @example
3640
- *
3641
- * function Foo() {
3642
- * this.a = 1;
3643
- * this.b = 2;
3644
- * }
3645
- *
3646
- * Foo.prototype.c = 3;
3683
+ * Creates a base function for `_.forIn` or `_.forInRight`.
3647
3684
  *
3648
- * _.keysIn(new Foo);
3649
- * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
3685
+ * @private
3686
+ * @param {boolean} [fromRight] Specify iterating from right to left.
3687
+ * @returns {Function} Returns the new base function.
3650
3688
  */
3651
- function keysIn(object) {
3652
- if (object == null) {
3653
- return [];
3654
- }
3655
- if (!isObject(object)) {
3656
- object = Object(object);
3657
- }
3658
- var length = object.length;
3659
- length = (length && isLength(length) &&
3660
- (isArray(object) || (support.nonEnumArgs && isArguments(object))) && length) || 0;
3661
-
3662
- var Ctor = object.constructor,
3663
- index = -1,
3664
- isProto = typeof Ctor == 'function' && Ctor.prototype === object,
3665
- result = Array(length),
3666
- skipIndexes = length > 0;
3689
+ function createBaseFor(fromRight) {
3690
+ return function(object, iteratee, keysFunc) {
3691
+ var iterable = toObject(object),
3692
+ props = keysFunc(object),
3693
+ length = props.length,
3694
+ index = fromRight ? length : -1;
3667
3695
 
3668
- while (++index < length) {
3669
- result[index] = (index + '');
3670
- }
3671
- for (var key in object) {
3672
- if (!(skipIndexes && isIndex(key, length)) &&
3673
- !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
3674
- result.push(key);
3696
+ while ((fromRight ? index-- : ++index < length)) {
3697
+ var key = props[index];
3698
+ if (iteratee(iterable[key], key, iterable) === false) {
3699
+ break;
3700
+ }
3675
3701
  }
3676
- }
3677
- return result;
3702
+ return object;
3703
+ };
3678
3704
  }
3679
3705
 
3680
- module.exports = keysIn;
3706
+ module.exports = createBaseFor;
3681
3707
 
3682
3708
 
3683
3709
  /***/ },
3684
- /* 75 */
3710
+ /* 77 */
3685
3711
  /***/ function(module, exports, __webpack_require__) {
3686
3712
 
3687
- /* WEBPACK VAR INJECTION */(function(global) {/** Used for native method references. */
3688
- var objectProto = Object.prototype;
3689
-
3690
- /** Used to detect DOM support. */
3691
- var document = (document = global.window) && document.document;
3692
-
3693
- /** Native method references. */
3694
- var propertyIsEnumerable = objectProto.propertyIsEnumerable;
3713
+ var isObject = __webpack_require__(25);
3695
3714
 
3696
3715
  /**
3697
- * An object environment feature flags.
3716
+ * Adds `value` to the cache.
3698
3717
  *
3699
- * @static
3700
- * @memberOf _
3701
- * @type Object
3718
+ * @private
3719
+ * @name push
3720
+ * @memberOf SetCache
3721
+ * @param {*} value The value to cache.
3702
3722
  */
3703
- var support = {};
3704
-
3705
- (function(x) {
3706
- var Ctor = function() { this.x = x; },
3707
- args = arguments,
3708
- object = { '0': x, 'length': x },
3709
- props = [];
3710
-
3711
- Ctor.prototype = { 'valueOf': x, 'y': x };
3712
- for (var key in new Ctor) { props.push(key); }
3713
-
3714
- /**
3715
- * Detect if functions can be decompiled by `Function#toString`
3716
- * (all but Firefox OS certified apps, older Opera mobile browsers, and
3717
- * the PlayStation 3; forced `false` for Windows 8 apps).
3718
- *
3719
- * @memberOf _.support
3720
- * @type boolean
3721
- */
3722
- support.funcDecomp = /\bthis\b/.test(function() { return this; });
3723
-
3724
- /**
3725
- * Detect if `Function#name` is supported (all but IE).
3726
- *
3727
- * @memberOf _.support
3728
- * @type boolean
3729
- */
3730
- support.funcNames = typeof Function.name == 'string';
3731
-
3732
- /**
3733
- * Detect if the DOM is supported.
3734
- *
3735
- * @memberOf _.support
3736
- * @type boolean
3737
- */
3738
- try {
3739
- support.dom = document.createDocumentFragment().nodeType === 11;
3740
- } catch(e) {
3741
- support.dom = false;
3742
- }
3743
-
3744
- /**
3745
- * Detect if `arguments` object indexes are non-enumerable.
3746
- *
3747
- * In Firefox < 4, IE < 9, PhantomJS, and Safari < 5.1 `arguments` object
3748
- * indexes are non-enumerable. Chrome < 25 and Node.js < 0.11.0 treat
3749
- * `arguments` object indexes as non-enumerable and fail `hasOwnProperty`
3750
- * checks for indexes that exceed the number of function parameters and
3751
- * whose associated argument values are `0`.
3752
- *
3753
- * @memberOf _.support
3754
- * @type boolean
3755
- */
3756
- try {
3757
- support.nonEnumArgs = !propertyIsEnumerable.call(args, 1);
3758
- } catch(e) {
3759
- support.nonEnumArgs = true;
3723
+ function cachePush(value) {
3724
+ var data = this.data;
3725
+ if (typeof value == 'string' || isObject(value)) {
3726
+ data.set.add(value);
3727
+ } else {
3728
+ data.hash[value] = true;
3760
3729
  }
3761
- }(1, 0));
3762
-
3763
- module.exports = support;
3730
+ }
3764
3731
 
3765
- /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
3732
+ module.exports = cachePush;
3733
+
3766
3734
 
3767
3735
  /***/ },
3768
- /* 76 */
3736
+ /* 78 */
3769
3737
  /***/ function(module, exports, __webpack_require__) {
3770
3738
 
3771
- var baseIsEqual = __webpack_require__(80);
3739
+ var baseIsEqual = __webpack_require__(82),
3740
+ toObject = __webpack_require__(80);
3772
3741
 
3773
3742
  /**
3774
3743
  * The base implementation of `_.isMatch` without support for callback
@@ -3776,42 +3745,44 @@ return /******/ (function(modules) { // webpackBootstrap
3776
3745
  *
3777
3746
  * @private
3778
3747
  * @param {Object} object The object to inspect.
3779
- * @param {Array} props The source property names to match.
3780
- * @param {Array} values The source values to match.
3781
- * @param {Array} strictCompareFlags Strict comparison flags for source values.
3748
+ * @param {Array} matchData The propery names, values, and compare flags to match.
3782
3749
  * @param {Function} [customizer] The function to customize comparing objects.
3783
3750
  * @returns {boolean} Returns `true` if `object` is a match, else `false`.
3784
3751
  */
3785
- function baseIsMatch(object, props, values, strictCompareFlags, customizer) {
3786
- var index = -1,
3787
- length = props.length,
3752
+ function baseIsMatch(object, matchData, customizer) {
3753
+ var index = matchData.length,
3754
+ length = index,
3788
3755
  noCustomizer = !customizer;
3789
3756
 
3790
- while (++index < length) {
3791
- if ((noCustomizer && strictCompareFlags[index])
3792
- ? values[index] !== object[props[index]]
3793
- : !(props[index] in object)
3757
+ if (object == null) {
3758
+ return !length;
3759
+ }
3760
+ object = toObject(object);
3761
+ while (index--) {
3762
+ var data = matchData[index];
3763
+ if ((noCustomizer && data[2])
3764
+ ? data[1] !== object[data[0]]
3765
+ : !(data[0] in object)
3794
3766
  ) {
3795
3767
  return false;
3796
3768
  }
3797
3769
  }
3798
- index = -1;
3799
3770
  while (++index < length) {
3800
- var key = props[index],
3771
+ data = matchData[index];
3772
+ var key = data[0],
3801
3773
  objValue = object[key],
3802
- srcValue = values[index];
3774
+ srcValue = data[1];
3803
3775
 
3804
- if (noCustomizer && strictCompareFlags[index]) {
3805
- var result = objValue !== undefined || (key in object);
3776
+ if (noCustomizer && data[2]) {
3777
+ if (objValue === undefined && !(key in object)) {
3778
+ return false;
3779
+ }
3806
3780
  } else {
3807
- result = customizer ? customizer(objValue, srcValue, key) : undefined;
3808
- if (result === undefined) {
3809
- result = baseIsEqual(srcValue, objValue, customizer, true);
3781
+ var result = customizer ? customizer(objValue, srcValue, key) : undefined;
3782
+ if (!(result === undefined ? baseIsEqual(srcValue, objValue, customizer, true) : result)) {
3783
+ return false;
3810
3784
  }
3811
3785
  }
3812
- if (!result) {
3813
- return false;
3814
- }
3815
3786
  }
3816
3787
  return true;
3817
3788
  }
@@ -3820,34 +3791,40 @@ return /******/ (function(modules) { // webpackBootstrap
3820
3791
 
3821
3792
 
3822
3793
  /***/ },
3823
- /* 77 */
3794
+ /* 79 */
3824
3795
  /***/ function(module, exports, __webpack_require__) {
3825
3796
 
3826
- var isObject = __webpack_require__(25);
3797
+ var isStrictComparable = __webpack_require__(85),
3798
+ pairs = __webpack_require__(89);
3827
3799
 
3828
3800
  /**
3829
- * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
3801
+ * Gets the propery names, values, and compare flags of `object`.
3830
3802
  *
3831
3803
  * @private
3832
- * @param {*} value The value to check.
3833
- * @returns {boolean} Returns `true` if `value` if suitable for strict
3834
- * equality comparisons, else `false`.
3804
+ * @param {Object} object The object to query.
3805
+ * @returns {Array} Returns the match data of `object`.
3835
3806
  */
3836
- function isStrictComparable(value) {
3837
- return value === value && !isObject(value);
3807
+ function getMatchData(object) {
3808
+ var result = pairs(object),
3809
+ length = result.length;
3810
+
3811
+ while (length--) {
3812
+ result[length][2] = isStrictComparable(result[length][1]);
3813
+ }
3814
+ return result;
3838
3815
  }
3839
3816
 
3840
- module.exports = isStrictComparable;
3817
+ module.exports = getMatchData;
3841
3818
 
3842
3819
 
3843
3820
  /***/ },
3844
- /* 78 */
3821
+ /* 80 */
3845
3822
  /***/ function(module, exports, __webpack_require__) {
3846
3823
 
3847
3824
  var isObject = __webpack_require__(25);
3848
3825
 
3849
3826
  /**
3850
- * Converts `value` to an object if it is not one.
3827
+ * Converts `value` to an object if it's not one.
3851
3828
  *
3852
3829
  * @private
3853
3830
  * @param {*} value The value to process.
@@ -3861,10 +3838,10 @@ return /******/ (function(modules) { // webpackBootstrap
3861
3838
 
3862
3839
 
3863
3840
  /***/ },
3864
- /* 79 */
3841
+ /* 81 */
3865
3842
  /***/ function(module, exports, __webpack_require__) {
3866
3843
 
3867
- var toObject = __webpack_require__(78);
3844
+ var toObject = __webpack_require__(80);
3868
3845
 
3869
3846
  /**
3870
3847
  * The base implementation of `get` without support for string paths
@@ -3883,11 +3860,11 @@ return /******/ (function(modules) { // webpackBootstrap
3883
3860
  if (pathKey !== undefined && pathKey in toObject(object)) {
3884
3861
  path = [pathKey];
3885
3862
  }
3886
- var index = -1,
3863
+ var index = 0,
3887
3864
  length = path.length;
3888
3865
 
3889
- while (object != null && ++index < length) {
3890
- object = object[path[index]];
3866
+ while (object != null && index < length) {
3867
+ object = object[path[index++]];
3891
3868
  }
3892
3869
  return (index && index == length) ? object : undefined;
3893
3870
  }
@@ -3896,10 +3873,12 @@ return /******/ (function(modules) { // webpackBootstrap
3896
3873
 
3897
3874
 
3898
3875
  /***/ },
3899
- /* 80 */
3876
+ /* 82 */
3900
3877
  /***/ function(module, exports, __webpack_require__) {
3901
3878
 
3902
- var baseIsEqualDeep = __webpack_require__(92);
3879
+ var baseIsEqualDeep = __webpack_require__(90),
3880
+ isObject = __webpack_require__(25),
3881
+ isObjectLike = __webpack_require__(29);
3903
3882
 
3904
3883
  /**
3905
3884
  * The base implementation of `_.isEqual` without support for `this` binding
@@ -3915,17 +3894,10 @@ return /******/ (function(modules) { // webpackBootstrap
3915
3894
  * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
3916
3895
  */
3917
3896
  function baseIsEqual(value, other, customizer, isLoose, stackA, stackB) {
3918
- // Exit early for identical values.
3919
3897
  if (value === other) {
3920
3898
  return true;
3921
3899
  }
3922
- var valType = typeof value,
3923
- othType = typeof other;
3924
-
3925
- // Exit early for unlike primitive values.
3926
- if ((valType != 'function' && valType != 'object' && othType != 'function' && othType != 'object') ||
3927
- value == null || other == null) {
3928
- // Return `false` unless both values are `NaN`.
3900
+ if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {
3929
3901
  return value !== value && other !== other;
3930
3902
  }
3931
3903
  return baseIsEqualDeep(value, other, baseIsEqual, customizer, isLoose, stackA, stackB);
@@ -3935,7 +3907,7 @@ return /******/ (function(modules) { // webpackBootstrap
3935
3907
 
3936
3908
 
3937
3909
  /***/ },
3938
- /* 81 */
3910
+ /* 83 */
3939
3911
  /***/ function(module, exports, __webpack_require__) {
3940
3912
 
3941
3913
  /**
@@ -3973,11 +3945,11 @@ return /******/ (function(modules) { // webpackBootstrap
3973
3945
 
3974
3946
 
3975
3947
  /***/ },
3976
- /* 82 */
3948
+ /* 84 */
3977
3949
  /***/ function(module, exports, __webpack_require__) {
3978
3950
 
3979
- var isArray = __webpack_require__(29),
3980
- toObject = __webpack_require__(78);
3951
+ var isArray = __webpack_require__(46),
3952
+ toObject = __webpack_require__(80);
3981
3953
 
3982
3954
  /** Used to match property names within property paths. */
3983
3955
  var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/,
@@ -4007,7 +3979,28 @@ return /******/ (function(modules) { // webpackBootstrap
4007
3979
 
4008
3980
 
4009
3981
  /***/ },
4010
- /* 83 */
3982
+ /* 85 */
3983
+ /***/ function(module, exports, __webpack_require__) {
3984
+
3985
+ var isObject = __webpack_require__(25);
3986
+
3987
+ /**
3988
+ * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
3989
+ *
3990
+ * @private
3991
+ * @param {*} value The value to check.
3992
+ * @returns {boolean} Returns `true` if `value` if suitable for strict
3993
+ * equality comparisons, else `false`.
3994
+ */
3995
+ function isStrictComparable(value) {
3996
+ return value === value && !isObject(value);
3997
+ }
3998
+
3999
+ module.exports = isStrictComparable;
4000
+
4001
+
4002
+ /***/ },
4003
+ /* 86 */
4011
4004
  /***/ function(module, exports, __webpack_require__) {
4012
4005
 
4013
4006
  /**
@@ -4032,11 +4025,11 @@ return /******/ (function(modules) { // webpackBootstrap
4032
4025
 
4033
4026
 
4034
4027
  /***/ },
4035
- /* 84 */
4028
+ /* 87 */
4036
4029
  /***/ function(module, exports, __webpack_require__) {
4037
4030
 
4038
- var baseToString = __webpack_require__(86),
4039
- isArray = __webpack_require__(29);
4031
+ var baseToString = __webpack_require__(91),
4032
+ isArray = __webpack_require__(46);
4040
4033
 
4041
4034
  /** Used to match property names within property paths. */
4042
4035
  var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g;
@@ -4045,7 +4038,7 @@ return /******/ (function(modules) { // webpackBootstrap
4045
4038
  var reEscapeChar = /\\(\\)?/g;
4046
4039
 
4047
4040
  /**
4048
- * Converts `value` to property path array if it is not one.
4041
+ * Converts `value` to property path array if it's not one.
4049
4042
  *
4050
4043
  * @private
4051
4044
  * @param {*} value The value to process.
@@ -4066,11 +4059,11 @@ return /******/ (function(modules) { // webpackBootstrap
4066
4059
 
4067
4060
 
4068
4061
  /***/ },
4069
- /* 85 */
4062
+ /* 88 */
4070
4063
  /***/ function(module, exports, __webpack_require__) {
4071
4064
 
4072
- var baseGet = __webpack_require__(79),
4073
- toPath = __webpack_require__(84);
4065
+ var baseGet = __webpack_require__(81),
4066
+ toPath = __webpack_require__(87);
4074
4067
 
4075
4068
  /**
4076
4069
  * A specialized version of `baseProperty` which supports deep paths.
@@ -4091,211 +4084,53 @@ return /******/ (function(modules) { // webpackBootstrap
4091
4084
 
4092
4085
 
4093
4086
  /***/ },
4094
- /* 86 */
4087
+ /* 89 */
4095
4088
  /***/ function(module, exports, __webpack_require__) {
4096
4089
 
4097
- /**
4098
- * Converts `value` to a string if it is not one. An empty string is returned
4099
- * for `null` or `undefined` values.
4100
- *
4101
- * @private
4102
- * @param {*} value The value to process.
4103
- * @returns {string} Returns the string.
4104
- */
4105
- function baseToString(value) {
4106
- if (typeof value == 'string') {
4107
- return value;
4108
- }
4109
- return value == null ? '' : (value + '');
4110
- }
4090
+ var keys = __webpack_require__(17),
4091
+ toObject = __webpack_require__(80);
4111
4092
 
4112
- module.exports = baseToString;
4113
-
4114
-
4115
- /***/ },
4116
- /* 87 */
4117
- /***/ function(module, exports, __webpack_require__) {
4118
-
4119
4093
  /**
4120
- * Copies properties of `source` to `object`.
4094
+ * Creates a two dimensional array of the key-value pairs for `object`,
4095
+ * e.g. `[[key1, value1], [key2, value2]]`.
4121
4096
  *
4122
- * @private
4123
- * @param {Object} source The object to copy properties from.
4124
- * @param {Array} props The property names to copy.
4125
- * @param {Object} [object={}] The object to copy properties to.
4126
- * @returns {Object} Returns `object`.
4097
+ * @static
4098
+ * @memberOf _
4099
+ * @category Object
4100
+ * @param {Object} object The object to query.
4101
+ * @returns {Array} Returns the new array of key-value pairs.
4102
+ * @example
4103
+ *
4104
+ * _.pairs({ 'barney': 36, 'fred': 40 });
4105
+ * // => [['barney', 36], ['fred', 40]] (iteration order is not guaranteed)
4127
4106
  */
4128
- function baseCopy(source, props, object) {
4129
- object || (object = {});
4107
+ function pairs(object) {
4108
+ object = toObject(object);
4130
4109
 
4131
4110
  var index = -1,
4132
- length = props.length;
4111
+ props = keys(object),
4112
+ length = props.length,
4113
+ result = Array(length);
4133
4114
 
4134
4115
  while (++index < length) {
4135
4116
  var key = props[index];
4136
- object[key] = source[key];
4117
+ result[index] = [key, object[key]];
4137
4118
  }
4138
- return object;
4139
- }
4140
-
4141
- module.exports = baseCopy;
4142
-
4143
-
4144
- /***/ },
4145
- /* 88 */
4146
- /***/ function(module, exports, __webpack_require__) {
4147
-
4148
- var constant = __webpack_require__(70),
4149
- isNative = __webpack_require__(38),
4150
- toObject = __webpack_require__(78);
4151
-
4152
- /** Native method references. */
4153
- var getOwnPropertySymbols = isNative(getOwnPropertySymbols = Object.getOwnPropertySymbols) && getOwnPropertySymbols;
4154
-
4155
- /**
4156
- * Creates an array of the own symbols of `object`.
4157
- *
4158
- * @private
4159
- * @param {Object} object The object to query.
4160
- * @returns {Array} Returns the array of symbols.
4161
- */
4162
- var getSymbols = !getOwnPropertySymbols ? constant([]) : function(object) {
4163
- return getOwnPropertySymbols(toObject(object));
4164
- };
4165
-
4166
- module.exports = getSymbols;
4167
-
4168
-
4169
- /***/ },
4170
- /* 89 */
4171
- /***/ function(module, exports, __webpack_require__) {
4172
-
4173
- /* WEBPACK VAR INJECTION */(function(global) {var constant = __webpack_require__(70),
4174
- isNative = __webpack_require__(38);
4175
-
4176
- /** Native method references. */
4177
- var ArrayBuffer = isNative(ArrayBuffer = global.ArrayBuffer) && ArrayBuffer,
4178
- bufferSlice = isNative(bufferSlice = ArrayBuffer && new ArrayBuffer(0).slice) && bufferSlice,
4179
- floor = Math.floor,
4180
- Uint8Array = isNative(Uint8Array = global.Uint8Array) && Uint8Array;
4181
-
4182
- /** Used to clone array buffers. */
4183
- var Float64Array = (function() {
4184
- // Safari 5 errors when using an array buffer to initialize a typed array
4185
- // where the array buffer's `byteLength` is not a multiple of the typed
4186
- // array's `BYTES_PER_ELEMENT`.
4187
- try {
4188
- var func = isNative(func = global.Float64Array) && func,
4189
- result = new func(new ArrayBuffer(10), 0, 1) && func;
4190
- } catch(e) {}
4191
4119
  return result;
4192
- }());
4193
-
4194
- /** Used as the size, in bytes, of each `Float64Array` element. */
4195
- var FLOAT64_BYTES_PER_ELEMENT = Float64Array ? Float64Array.BYTES_PER_ELEMENT : 0;
4196
-
4197
- /**
4198
- * Creates a clone of the given array buffer.
4199
- *
4200
- * @private
4201
- * @param {ArrayBuffer} buffer The array buffer to clone.
4202
- * @returns {ArrayBuffer} Returns the cloned array buffer.
4203
- */
4204
- function bufferClone(buffer) {
4205
- return bufferSlice.call(buffer, 0);
4206
- }
4207
- if (!bufferSlice) {
4208
- // PhantomJS has `ArrayBuffer` and `Uint8Array` but not `Float64Array`.
4209
- bufferClone = !(ArrayBuffer && Uint8Array) ? constant(null) : function(buffer) {
4210
- var byteLength = buffer.byteLength,
4211
- floatLength = Float64Array ? floor(byteLength / FLOAT64_BYTES_PER_ELEMENT) : 0,
4212
- offset = floatLength * FLOAT64_BYTES_PER_ELEMENT,
4213
- result = new ArrayBuffer(byteLength);
4214
-
4215
- if (floatLength) {
4216
- var view = new Float64Array(result, 0, floatLength);
4217
- view.set(new Float64Array(buffer, 0, floatLength));
4218
- }
4219
- if (byteLength != offset) {
4220
- view = new Uint8Array(result, offset);
4221
- view.set(new Uint8Array(buffer, offset));
4222
- }
4223
- return result;
4224
- };
4225
- }
4226
-
4227
- module.exports = bufferClone;
4228
-
4229
- /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
4230
-
4231
- /***/ },
4232
- /* 90 */
4233
- /***/ function(module, exports, __webpack_require__) {
4234
-
4235
- var isObject = __webpack_require__(25);
4236
-
4237
- /**
4238
- * Adds `value` to the cache.
4239
- *
4240
- * @private
4241
- * @name push
4242
- * @memberOf SetCache
4243
- * @param {*} value The value to cache.
4244
- */
4245
- function cachePush(value) {
4246
- var data = this.data;
4247
- if (typeof value == 'string' || isObject(value)) {
4248
- data.set.add(value);
4249
- } else {
4250
- data.hash[value] = true;
4251
- }
4252
- }
4253
-
4254
- module.exports = cachePush;
4255
-
4256
-
4257
- /***/ },
4258
- /* 91 */
4259
- /***/ function(module, exports, __webpack_require__) {
4260
-
4261
- var toObject = __webpack_require__(78);
4262
-
4263
- /**
4264
- * Creates a base function for `_.forIn` or `_.forInRight`.
4265
- *
4266
- * @private
4267
- * @param {boolean} [fromRight] Specify iterating from right to left.
4268
- * @returns {Function} Returns the new base function.
4269
- */
4270
- function createBaseFor(fromRight) {
4271
- return function(object, iteratee, keysFunc) {
4272
- var iterable = toObject(object),
4273
- props = keysFunc(object),
4274
- length = props.length,
4275
- index = fromRight ? length : -1;
4276
-
4277
- while ((fromRight ? index-- : ++index < length)) {
4278
- var key = props[index];
4279
- if (iteratee(iterable[key], key, iterable) === false) {
4280
- break;
4281
- }
4282
- }
4283
- return object;
4284
- };
4285
4120
  }
4286
4121
 
4287
- module.exports = createBaseFor;
4122
+ module.exports = pairs;
4288
4123
 
4289
4124
 
4290
4125
  /***/ },
4291
- /* 92 */
4126
+ /* 90 */
4292
4127
  /***/ function(module, exports, __webpack_require__) {
4293
4128
 
4294
- var equalArrays = __webpack_require__(93),
4295
- equalByTag = __webpack_require__(94),
4296
- equalObjects = __webpack_require__(95),
4297
- isArray = __webpack_require__(29),
4298
- isTypedArray = __webpack_require__(96);
4129
+ var equalArrays = __webpack_require__(92),
4130
+ equalByTag = __webpack_require__(93),
4131
+ equalObjects = __webpack_require__(94),
4132
+ isArray = __webpack_require__(46),
4133
+ isTypedArray = __webpack_require__(95);
4299
4134
 
4300
4135
  /** `Object#toString` result references. */
4301
4136
  var argsTag = '[object Arguments]',
@@ -4309,7 +4144,7 @@ return /******/ (function(modules) { // webpackBootstrap
4309
4144
  var hasOwnProperty = objectProto.hasOwnProperty;
4310
4145
 
4311
4146
  /**
4312
- * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
4147
+ * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
4313
4148
  * of values.
4314
4149
  */
4315
4150
  var objToString = objectProto.toString;
@@ -4359,11 +4194,11 @@ return /******/ (function(modules) { // webpackBootstrap
4359
4194
  return equalByTag(object, other, objTag);
4360
4195
  }
4361
4196
  if (!isLoose) {
4362
- var valWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
4363
- othWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
4197
+ var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
4198
+ othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
4364
4199
 
4365
- if (valWrapped || othWrapped) {
4366
- return equalFunc(valWrapped ? object.value() : object, othWrapped ? other.value() : other, customizer, isLoose, stackA, stackB);
4200
+ if (objIsWrapped || othIsWrapped) {
4201
+ return equalFunc(objIsWrapped ? object.value() : object, othIsWrapped ? other.value() : other, customizer, isLoose, stackA, stackB);
4367
4202
  }
4368
4203
  }
4369
4204
  if (!isSameTag) {
@@ -4396,9 +4231,30 @@ return /******/ (function(modules) { // webpackBootstrap
4396
4231
 
4397
4232
 
4398
4233
  /***/ },
4399
- /* 93 */
4234
+ /* 91 */
4235
+ /***/ function(module, exports, __webpack_require__) {
4236
+
4237
+ /**
4238
+ * Converts `value` to a string if it's not one. An empty string is returned
4239
+ * for `null` or `undefined` values.
4240
+ *
4241
+ * @private
4242
+ * @param {*} value The value to process.
4243
+ * @returns {string} Returns the string.
4244
+ */
4245
+ function baseToString(value) {
4246
+ return value == null ? '' : (value + '');
4247
+ }
4248
+
4249
+ module.exports = baseToString;
4250
+
4251
+
4252
+ /***/ },
4253
+ /* 92 */
4400
4254
  /***/ function(module, exports, __webpack_require__) {
4401
4255
 
4256
+ var arraySome = __webpack_require__(96);
4257
+
4402
4258
  /**
4403
4259
  * A specialized version of `baseIsEqualDeep` for arrays with support for
4404
4260
  * partial deep comparisons.
@@ -4416,47 +4272,42 @@ return /******/ (function(modules) { // webpackBootstrap
4416
4272
  function equalArrays(array, other, equalFunc, customizer, isLoose, stackA, stackB) {
4417
4273
  var index = -1,
4418
4274
  arrLength = array.length,
4419
- othLength = other.length,
4420
- result = true;
4275
+ othLength = other.length;
4421
4276
 
4422
4277
  if (arrLength != othLength && !(isLoose && othLength > arrLength)) {
4423
4278
  return false;
4424
4279
  }
4425
- // Deep compare the contents, ignoring non-numeric properties.
4426
- while (result && ++index < arrLength) {
4280
+ // Ignore non-index properties.
4281
+ while (++index < arrLength) {
4427
4282
  var arrValue = array[index],
4428
- othValue = other[index];
4283
+ othValue = other[index],
4284
+ result = customizer ? customizer(isLoose ? othValue : arrValue, isLoose ? arrValue : othValue, index) : undefined;
4429
4285
 
4430
- result = undefined;
4431
- if (customizer) {
4432
- result = isLoose
4433
- ? customizer(othValue, arrValue, index)
4434
- : customizer(arrValue, othValue, index);
4286
+ if (result !== undefined) {
4287
+ if (result) {
4288
+ continue;
4289
+ }
4290
+ return false;
4435
4291
  }
4436
- if (result === undefined) {
4437
- // Recursively compare arrays (susceptible to call stack limits).
4438
- if (isLoose) {
4439
- var othIndex = othLength;
4440
- while (othIndex--) {
4441
- othValue = other[othIndex];
4442
- result = (arrValue && arrValue === othValue) || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB);
4443
- if (result) {
4444
- break;
4445
- }
4446
- }
4447
- } else {
4448
- result = (arrValue && arrValue === othValue) || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB);
4292
+ // Recursively compare arrays (susceptible to call stack limits).
4293
+ if (isLoose) {
4294
+ if (!arraySome(other, function(othValue) {
4295
+ return arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB);
4296
+ })) {
4297
+ return false;
4449
4298
  }
4299
+ } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB))) {
4300
+ return false;
4450
4301
  }
4451
4302
  }
4452
- return !!result;
4303
+ return true;
4453
4304
  }
4454
4305
 
4455
4306
  module.exports = equalArrays;
4456
4307
 
4457
4308
 
4458
4309
  /***/ },
4459
- /* 94 */
4310
+ /* 93 */
4460
4311
  /***/ function(module, exports, __webpack_require__) {
4461
4312
 
4462
4313
  /** `Object#toString` result references. */
@@ -4475,7 +4326,7 @@ return /******/ (function(modules) { // webpackBootstrap
4475
4326
  * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
4476
4327
  *
4477
4328
  * @private
4478
- * @param {Object} value The object to compare.
4329
+ * @param {Object} object The object to compare.
4479
4330
  * @param {Object} other The other object to compare.
4480
4331
  * @param {string} tag The `toStringTag` of the objects to compare.
4481
4332
  * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
@@ -4510,10 +4361,10 @@ return /******/ (function(modules) { // webpackBootstrap
4510
4361
 
4511
4362
 
4512
4363
  /***/ },
4513
- /* 95 */
4364
+ /* 94 */
4514
4365
  /***/ function(module, exports, __webpack_require__) {
4515
4366
 
4516
- var keys = __webpack_require__(21);
4367
+ var keys = __webpack_require__(17);
4517
4368
 
4518
4369
  /** Used for native method references. */
4519
4370
  var objectProto = Object.prototype;
@@ -4544,29 +4395,22 @@ return /******/ (function(modules) { // webpackBootstrap
4544
4395
  if (objLength != othLength && !isLoose) {
4545
4396
  return false;
4546
4397
  }
4547
- var skipCtor = isLoose,
4548
- index = -1;
4549
-
4550
- while (++index < objLength) {
4551
- var key = objProps[index],
4552
- result = isLoose ? key in other : hasOwnProperty.call(other, key);
4553
-
4554
- if (result) {
4555
- var objValue = object[key],
4556
- othValue = other[key];
4557
-
4558
- result = undefined;
4559
- if (customizer) {
4560
- result = isLoose
4561
- ? customizer(othValue, objValue, key)
4562
- : customizer(objValue, othValue, key);
4563
- }
4564
- if (result === undefined) {
4565
- // Recursively compare objects (susceptible to call stack limits).
4566
- result = (objValue && objValue === othValue) || equalFunc(objValue, othValue, customizer, isLoose, stackA, stackB);
4567
- }
4398
+ var index = objLength;
4399
+ while (index--) {
4400
+ var key = objProps[index];
4401
+ if (!(isLoose ? key in other : hasOwnProperty.call(other, key))) {
4402
+ return false;
4568
4403
  }
4569
- if (!result) {
4404
+ }
4405
+ var skipCtor = isLoose;
4406
+ while (++index < objLength) {
4407
+ key = objProps[index];
4408
+ var objValue = object[key],
4409
+ othValue = other[key],
4410
+ result = customizer ? customizer(isLoose ? othValue : objValue, isLoose? objValue : othValue, key) : undefined;
4411
+
4412
+ // Recursively compare objects (susceptible to call stack limits).
4413
+ if (!(result === undefined ? equalFunc(objValue, othValue, customizer, isLoose, stackA, stackB) : result)) {
4570
4414
  return false;
4571
4415
  }
4572
4416
  skipCtor || (skipCtor = key == 'constructor');
@@ -4590,11 +4434,11 @@ return /******/ (function(modules) { // webpackBootstrap
4590
4434
 
4591
4435
 
4592
4436
  /***/ },
4593
- /* 96 */
4437
+ /* 95 */
4594
4438
  /***/ function(module, exports, __webpack_require__) {
4595
4439
 
4596
- var isLength = __webpack_require__(36),
4597
- isObjectLike = __webpack_require__(43);
4440
+ var isLength = __webpack_require__(51),
4441
+ isObjectLike = __webpack_require__(29);
4598
4442
 
4599
4443
  /** `Object#toString` result references. */
4600
4444
  var argsTag = '[object Arguments]',
@@ -4641,7 +4485,7 @@ return /******/ (function(modules) { // webpackBootstrap
4641
4485
  var objectProto = Object.prototype;
4642
4486
 
4643
4487
  /**
4644
- * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
4488
+ * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
4645
4489
  * of values.
4646
4490
  */
4647
4491
  var objToString = objectProto.toString;
@@ -4669,6 +4513,35 @@ return /******/ (function(modules) { // webpackBootstrap
4669
4513
  module.exports = isTypedArray;
4670
4514
 
4671
4515
 
4516
+ /***/ },
4517
+ /* 96 */
4518
+ /***/ function(module, exports, __webpack_require__) {
4519
+
4520
+ /**
4521
+ * A specialized version of `_.some` for arrays without support for callback
4522
+ * shorthands and `this` binding.
4523
+ *
4524
+ * @private
4525
+ * @param {Array} array The array to iterate over.
4526
+ * @param {Function} predicate The function invoked per iteration.
4527
+ * @returns {boolean} Returns `true` if any element passes the predicate check,
4528
+ * else `false`.
4529
+ */
4530
+ function arraySome(array, predicate) {
4531
+ var index = -1,
4532
+ length = array.length;
4533
+
4534
+ while (++index < length) {
4535
+ if (predicate(array[index], index, array)) {
4536
+ return true;
4537
+ }
4538
+ }
4539
+ return false;
4540
+ }
4541
+
4542
+ module.exports = arraySome;
4543
+
4544
+
4672
4545
  /***/ }
4673
4546
  /******/ ])
4674
4547
  });