fluxxor-rails 1.5.3 → 1.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3f891290cdee5391dda5e902aa917792ac2d3c97
4
- data.tar.gz: 06f567ef1d600bfbbfb1abbe540304957bb3d230
3
+ metadata.gz: 94148b76fcd8cad6e9f4df65cc610b3f142ece20
4
+ data.tar.gz: 28c41be323e80cfc0c9114bfbb2891b12c8069fb
5
5
  SHA512:
6
- metadata.gz: 196f41bc6711e791b96c106508b239f8db899f17f241e05c51044736b2d4d4ef9cf6aae84c41f05eea1b0a8a215f69553cf15f7e990c8db0fa26de461437ce98
7
- data.tar.gz: 2f86ec1b6bbe42106e65bef3a3bc241eaff65b1602eb5f86f0c4b57dff1395e85fc7f195f0a59668fe47e64acc1a87d5aeeba3ba4d44170c17527d392f16dd78
6
+ metadata.gz: 90b182d778a45c2c0d100392808a1682ca19f4c4a2a7aad5067ce0e95c3f4c0c689cbef51cffdb93f30241046a414148d0e72112e68607f9fc9c4ed9c939134c
7
+ data.tar.gz: 03aca8e6fa144bb9bee6d5836641b875e002bee9d536b1ac71c22af15bc66f04c99d3682f29ed74d42f27d78a48a13ccb6efe04c248481eb36de05dc9a687d0c
@@ -1,5 +1,5 @@
1
1
  module Fluxxor
2
2
  module Rails
3
- VERSION = '1.5.3'
3
+ VERSION = '1.5.4'
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__(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);
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);
91
91
 
92
92
  var Dispatcher = function(stores) {
93
93
  this.stores = {};
@@ -231,10 +231,10 @@ return /******/ (function(modules) { // webpackBootstrap
231
231
  var EventEmitter = __webpack_require__(10),
232
232
  inherits = __webpack_require__(8),
233
233
  objectPath = __webpack_require__(11),
234
- _each = __webpack_require__(22),
235
- _reduce = __webpack_require__(24),
236
- _isFunction = __webpack_require__(13),
237
- _isString = __webpack_require__(14);
234
+ _each = __webpack_require__(12),
235
+ _reduce = __webpack_require__(13),
236
+ _isFunction = __webpack_require__(16),
237
+ _isString = __webpack_require__(17);
238
238
 
239
239
  var Dispatcher = __webpack_require__(1);
240
240
 
@@ -427,7 +427,7 @@ return /******/ (function(modules) { // webpackBootstrap
427
427
  /* 5 */
428
428
  /***/ function(module, exports, __webpack_require__) {
429
429
 
430
- var _each = __webpack_require__(22);
430
+ var _each = __webpack_require__(12);
431
431
 
432
432
  var StoreWatchMixin = function() {
433
433
  var storeNames = Array.prototype.slice.call(arguments);
@@ -471,8 +471,8 @@ return /******/ (function(modules) { // webpackBootstrap
471
471
  /* 6 */
472
472
  /***/ function(module, exports, __webpack_require__) {
473
473
 
474
- var _each = __webpack_require__(22),
475
- _isFunction = __webpack_require__(13),
474
+ var _each = __webpack_require__(12),
475
+ _isFunction = __webpack_require__(16),
476
476
  Store = __webpack_require__(9),
477
477
  inherits = __webpack_require__(8);
478
478
 
@@ -517,7 +517,7 @@ return /******/ (function(modules) { // webpackBootstrap
517
517
  /* 7 */
518
518
  /***/ function(module, exports, __webpack_require__) {
519
519
 
520
- module.exports = "1.5.3"
520
+ module.exports = "1.5.4"
521
521
 
522
522
  /***/ },
523
523
  /* 8 */
@@ -574,7 +574,7 @@ return /******/ (function(modules) { // webpackBootstrap
574
574
 
575
575
  var EventEmitter = __webpack_require__(10),
576
576
  inherits = __webpack_require__(8),
577
- _isFunction = __webpack_require__(13),
577
+ _isFunction = __webpack_require__(16),
578
578
  _isObject = __webpack_require__(25);
579
579
 
580
580
  function Store(dispatcher) {
@@ -1129,83 +1129,210 @@ return /******/ (function(modules) { // webpackBootstrap
1129
1129
  /* 12 */
1130
1130
  /***/ function(module, exports, __webpack_require__) {
1131
1131
 
1132
- var baseClone = __webpack_require__(26),
1133
- bindCallback = __webpack_require__(27),
1134
- isIterateeCall = __webpack_require__(28);
1132
+ var arrayEach = __webpack_require__(26),
1133
+ baseEach = __webpack_require__(27),
1134
+ createForEach = __webpack_require__(28);
1135
1135
 
1136
1136
  /**
1137
- * Creates a clone of `value`. If `isDeep` is `true` nested objects are cloned,
1138
- * otherwise they are assigned by reference. If `customizer` is provided it is
1139
- * invoked to produce the cloned values. If `customizer` returns `undefined`
1140
- * cloning is handled by the method instead. The `customizer` is bound to
1141
- * `thisArg` and invoked with two argument; (value [, index|key, object]).
1137
+ * Iterates over elements of `collection` invoking `iteratee` for each element.
1138
+ * The `iteratee` is bound to `thisArg` and invoked with three arguments:
1139
+ * (value, index|key, collection). Iteratee functions may exit iteration early
1140
+ * by explicitly returning `false`.
1142
1141
  *
1143
- * **Note:** This method is loosely based on the
1144
- * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm).
1145
- * The enumerable properties of `arguments` objects and objects created by
1146
- * constructors other than `Object` are cloned to plain `Object` objects. An
1147
- * empty object is returned for uncloneable values such as functions, DOM nodes,
1148
- * Maps, Sets, and WeakMaps.
1142
+ * **Note:** As with other "Collections" methods, objects with a "length" property
1143
+ * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn`
1144
+ * may be used for object iteration.
1149
1145
  *
1150
1146
  * @static
1151
1147
  * @memberOf _
1152
- * @category Lang
1153
- * @param {*} value The value to clone.
1154
- * @param {boolean} [isDeep] Specify a deep clone.
1155
- * @param {Function} [customizer] The function to customize cloning values.
1156
- * @param {*} [thisArg] The `this` binding of `customizer`.
1157
- * @returns {*} Returns the cloned value.
1148
+ * @alias each
1149
+ * @category Collection
1150
+ * @param {Array|Object|string} collection The collection to iterate over.
1151
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
1152
+ * @param {*} [thisArg] The `this` binding of `iteratee`.
1153
+ * @returns {Array|Object|string} Returns `collection`.
1154
+ * @example
1155
+ *
1156
+ * _([1, 2]).forEach(function(n) {
1157
+ * console.log(n);
1158
+ * }).value();
1159
+ * // => logs each value from left to right and returns the array
1160
+ *
1161
+ * _.forEach({ 'a': 1, 'b': 2 }, function(n, key) {
1162
+ * console.log(n, key);
1163
+ * });
1164
+ * // => logs each value-key pair and returns the object (iteration order is not guaranteed)
1165
+ */
1166
+ var forEach = createForEach(arrayEach, baseEach);
1167
+
1168
+ module.exports = forEach;
1169
+
1170
+
1171
+ /***/ },
1172
+ /* 13 */
1173
+ /***/ function(module, exports, __webpack_require__) {
1174
+
1175
+ var arrayReduce = __webpack_require__(29),
1176
+ baseEach = __webpack_require__(27),
1177
+ createReduce = __webpack_require__(30);
1178
+
1179
+ /**
1180
+ * Reduces `collection` to a value which is the accumulated result of running
1181
+ * each element in `collection` through `iteratee`, where each successive
1182
+ * invocation is supplied the return value of the previous. If `accumulator`
1183
+ * is not provided the first element of `collection` is used as the initial
1184
+ * value. The `iteratee` is bound to `thisArg` and invoked with four arguments:
1185
+ * (accumulator, value, index|key, collection).
1186
+ *
1187
+ * Many lodash methods are guarded to work as interatees for methods like
1188
+ * `_.reduce`, `_.reduceRight`, and `_.transform`.
1189
+ *
1190
+ * The guarded methods are:
1191
+ * `assign`, `defaults`, `includes`, `merge`, `sortByAll`, and `sortByOrder`
1192
+ *
1193
+ * @static
1194
+ * @memberOf _
1195
+ * @alias foldl, inject
1196
+ * @category Collection
1197
+ * @param {Array|Object|string} collection The collection to iterate over.
1198
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
1199
+ * @param {*} [accumulator] The initial value.
1200
+ * @param {*} [thisArg] The `this` binding of `iteratee`.
1201
+ * @returns {*} Returns the accumulated value.
1202
+ * @example
1203
+ *
1204
+ * _.reduce([1, 2], function(total, n) {
1205
+ * return total + n;
1206
+ * });
1207
+ * // => 3
1208
+ *
1209
+ * _.reduce({ 'a': 1, 'b': 2 }, function(result, n, key) {
1210
+ * result[key] = n * 3;
1211
+ * return result;
1212
+ * }, {});
1213
+ * // => { 'a': 3, 'b': 6 } (iteration order is not guaranteed)
1214
+ */
1215
+ var reduce = createReduce(arrayReduce, baseEach);
1216
+
1217
+ module.exports = reduce;
1218
+
1219
+
1220
+ /***/ },
1221
+ /* 14 */
1222
+ /***/ function(module, exports, __webpack_require__) {
1223
+
1224
+ var arrayMap = __webpack_require__(33),
1225
+ baseCallback = __webpack_require__(34),
1226
+ baseMap = __webpack_require__(35),
1227
+ isArray = __webpack_require__(36);
1228
+
1229
+ /**
1230
+ * Creates an array of values by running each element in `collection` through
1231
+ * `iteratee`. The `iteratee` is bound to `thisArg` and invoked with three
1232
+ * arguments: (value, index|key, collection).
1233
+ *
1234
+ * If a property name is provided for `iteratee` the created `_.property`
1235
+ * style callback returns the property value of the given element.
1236
+ *
1237
+ * If a value is also provided for `thisArg` the created `_.matchesProperty`
1238
+ * style callback returns `true` for elements that have a matching property
1239
+ * value, else `false`.
1240
+ *
1241
+ * If an object is provided for `iteratee` the created `_.matches` style
1242
+ * callback returns `true` for elements that have the properties of the given
1243
+ * object, else `false`.
1244
+ *
1245
+ * Many lodash methods are guarded to work as interatees for methods like
1246
+ * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
1247
+ *
1248
+ * The guarded methods are:
1249
+ * `ary`, `callback`, `chunk`, `clone`, `create`, `curry`, `curryRight`,
1250
+ * `drop`, `dropRight`, `every`, `fill`, `flatten`, `invert`, `max`, `min`,
1251
+ * `parseInt`, `slice`, `sortBy`, `take`, `takeRight`, `template`, `trim`,
1252
+ * `trimLeft`, `trimRight`, `trunc`, `random`, `range`, `sample`, `some`,
1253
+ * `sum`, `uniq`, and `words`
1254
+ *
1255
+ * @static
1256
+ * @memberOf _
1257
+ * @alias collect
1258
+ * @category Collection
1259
+ * @param {Array|Object|string} collection The collection to iterate over.
1260
+ * @param {Function|Object|string} [iteratee=_.identity] The function invoked
1261
+ * per iteration.
1262
+ * @param {*} [thisArg] The `this` binding of `iteratee`.
1263
+ * @returns {Array} Returns the new mapped array.
1158
1264
  * @example
1159
1265
  *
1266
+ * function timesThree(n) {
1267
+ * return n * 3;
1268
+ * }
1269
+ *
1270
+ * _.map([1, 2], timesThree);
1271
+ * // => [3, 6]
1272
+ *
1273
+ * _.map({ 'a': 1, 'b': 2 }, timesThree);
1274
+ * // => [3, 6] (iteration order is not guaranteed)
1275
+ *
1160
1276
  * var users = [
1161
1277
  * { 'user': 'barney' },
1162
1278
  * { 'user': 'fred' }
1163
1279
  * ];
1164
1280
  *
1165
- * var shallow = _.clone(users);
1166
- * shallow[0] === users[0];
1167
- * // => true
1281
+ * // using the `_.property` callback shorthand
1282
+ * _.map(users, 'user');
1283
+ * // => ['barney', 'fred']
1284
+ */
1285
+ function map(collection, iteratee, thisArg) {
1286
+ var func = isArray(collection) ? arrayMap : baseMap;
1287
+ iteratee = baseCallback(iteratee, thisArg, 3);
1288
+ return func(collection, iteratee);
1289
+ }
1290
+
1291
+ module.exports = map;
1292
+
1293
+
1294
+ /***/ },
1295
+ /* 15 */
1296
+ /***/ function(module, exports, __webpack_require__) {
1297
+
1298
+ var getLength = __webpack_require__(31),
1299
+ isLength = __webpack_require__(32),
1300
+ keys = __webpack_require__(21);
1301
+
1302
+ /**
1303
+ * Gets the size of `collection` by returning its length for array-like
1304
+ * values or the number of own enumerable properties for objects.
1168
1305
  *
1169
- * var deep = _.clone(users, true);
1170
- * deep[0] === users[0];
1171
- * // => false
1306
+ * @static
1307
+ * @memberOf _
1308
+ * @category Collection
1309
+ * @param {Array|Object|string} collection The collection to inspect.
1310
+ * @returns {number} Returns the size of `collection`.
1311
+ * @example
1172
1312
  *
1173
- * // using a customizer callback
1174
- * var el = _.clone(document.body, function(value) {
1175
- * if (_.isElement(value)) {
1176
- * return value.cloneNode(false);
1177
- * }
1178
- * });
1313
+ * _.size([1, 2, 3]);
1314
+ * // => 3
1179
1315
  *
1180
- * el === document.body
1181
- * // => false
1182
- * el.nodeName
1183
- * // => BODY
1184
- * el.childNodes.length;
1185
- * // => 0
1316
+ * _.size({ 'a': 1, 'b': 2 });
1317
+ * // => 2
1318
+ *
1319
+ * _.size('pebbles');
1320
+ * // => 7
1186
1321
  */
1187
- function clone(value, isDeep, customizer, thisArg) {
1188
- if (isDeep && typeof isDeep != 'boolean' && isIterateeCall(value, isDeep, customizer)) {
1189
- isDeep = false;
1190
- }
1191
- else if (typeof isDeep == 'function') {
1192
- thisArg = customizer;
1193
- customizer = isDeep;
1194
- isDeep = false;
1195
- }
1196
- customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 1);
1197
- return baseClone(value, isDeep, customizer);
1322
+ function size(collection) {
1323
+ var length = collection ? getLength(collection) : 0;
1324
+ return isLength(length) ? length : keys(collection).length;
1198
1325
  }
1199
1326
 
1200
- module.exports = clone;
1327
+ module.exports = size;
1201
1328
 
1202
1329
 
1203
1330
  /***/ },
1204
- /* 13 */
1331
+ /* 16 */
1205
1332
  /***/ function(module, exports, __webpack_require__) {
1206
1333
 
1207
- /* WEBPACK VAR INJECTION */(function(global) {var baseIsFunction = __webpack_require__(29),
1208
- isNative = __webpack_require__(30);
1334
+ /* WEBPACK VAR INJECTION */(function(global) {var baseIsFunction = __webpack_require__(37),
1335
+ isNative = __webpack_require__(38);
1209
1336
 
1210
1337
  /** `Object#toString` result references. */
1211
1338
  var funcTag = '[object Function]';
@@ -1250,10 +1377,10 @@ return /******/ (function(modules) { // webpackBootstrap
1250
1377
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
1251
1378
 
1252
1379
  /***/ },
1253
- /* 14 */
1380
+ /* 17 */
1254
1381
  /***/ function(module, exports, __webpack_require__) {
1255
1382
 
1256
- var isObjectLike = __webpack_require__(31);
1383
+ var isObjectLike = __webpack_require__(39);
1257
1384
 
1258
1385
  /** `Object#toString` result references. */
1259
1386
  var stringTag = '[object String]';
@@ -1291,46 +1418,120 @@ return /******/ (function(modules) { // webpackBootstrap
1291
1418
 
1292
1419
 
1293
1420
  /***/ },
1294
- /* 15 */
1421
+ /* 18 */
1295
1422
  /***/ function(module, exports, __webpack_require__) {
1296
1423
 
1297
- var baseCallback = __webpack_require__(34),
1298
- baseForOwn = __webpack_require__(32);
1424
+ var baseClone = __webpack_require__(40),
1425
+ bindCallback = __webpack_require__(41),
1426
+ isIterateeCall = __webpack_require__(42);
1299
1427
 
1300
1428
  /**
1301
- * Creates an object with the same keys as `object` and values generated by
1302
- * running each own enumerable property of `object` through `iteratee`. The
1303
- * iteratee function is bound to `thisArg` and invoked with three arguments:
1304
- * (value, key, object).
1305
- *
1306
- * If a property name is provided for `iteratee` the created `_.property`
1307
- * style callback returns the property value of the given element.
1308
- *
1309
- * If a value is also provided for `thisArg` the created `_.matchesProperty`
1310
- * style callback returns `true` for elements that have a matching property
1311
- * value, else `false`.
1429
+ * Creates a clone of `value`. If `isDeep` is `true` nested objects are cloned,
1430
+ * otherwise they are assigned by reference. If `customizer` is provided it is
1431
+ * invoked to produce the cloned values. If `customizer` returns `undefined`
1432
+ * cloning is handled by the method instead. The `customizer` is bound to
1433
+ * `thisArg` and invoked with two argument; (value [, index|key, object]).
1312
1434
  *
1313
- * If an object is provided for `iteratee` the created `_.matches` style
1314
- * callback returns `true` for elements that have the properties of the given
1315
- * object, else `false`.
1435
+ * **Note:** This method is loosely based on the
1436
+ * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm).
1437
+ * The enumerable properties of `arguments` objects and objects created by
1438
+ * constructors other than `Object` are cloned to plain `Object` objects. An
1439
+ * empty object is returned for uncloneable values such as functions, DOM nodes,
1440
+ * Maps, Sets, and WeakMaps.
1316
1441
  *
1317
1442
  * @static
1318
1443
  * @memberOf _
1319
- * @category Object
1320
- * @param {Object} object The object to iterate over.
1321
- * @param {Function|Object|string} [iteratee=_.identity] The function invoked
1322
- * per iteration.
1323
- * @param {*} [thisArg] The `this` binding of `iteratee`.
1324
- * @returns {Object} Returns the new mapped object.
1444
+ * @category Lang
1445
+ * @param {*} value The value to clone.
1446
+ * @param {boolean} [isDeep] Specify a deep clone.
1447
+ * @param {Function} [customizer] The function to customize cloning values.
1448
+ * @param {*} [thisArg] The `this` binding of `customizer`.
1449
+ * @returns {*} Returns the cloned value.
1325
1450
  * @example
1326
1451
  *
1327
- * _.mapValues({ 'a': 1, 'b': 2 }, function(n) {
1328
- * return n * 3;
1329
- * });
1330
- * // => { 'a': 3, 'b': 6 }
1452
+ * var users = [
1453
+ * { 'user': 'barney' },
1454
+ * { 'user': 'fred' }
1455
+ * ];
1331
1456
  *
1332
- * var users = {
1333
- * 'fred': { 'user': 'fred', 'age': 40 },
1457
+ * var shallow = _.clone(users);
1458
+ * shallow[0] === users[0];
1459
+ * // => true
1460
+ *
1461
+ * var deep = _.clone(users, true);
1462
+ * deep[0] === users[0];
1463
+ * // => false
1464
+ *
1465
+ * // using a customizer callback
1466
+ * var el = _.clone(document.body, function(value) {
1467
+ * if (_.isElement(value)) {
1468
+ * return value.cloneNode(false);
1469
+ * }
1470
+ * });
1471
+ *
1472
+ * el === document.body
1473
+ * // => false
1474
+ * el.nodeName
1475
+ * // => BODY
1476
+ * el.childNodes.length;
1477
+ * // => 0
1478
+ */
1479
+ function clone(value, isDeep, customizer, thisArg) {
1480
+ if (isDeep && typeof isDeep != 'boolean' && isIterateeCall(value, isDeep, customizer)) {
1481
+ isDeep = false;
1482
+ }
1483
+ else if (typeof isDeep == 'function') {
1484
+ thisArg = customizer;
1485
+ customizer = isDeep;
1486
+ isDeep = false;
1487
+ }
1488
+ customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 1);
1489
+ return baseClone(value, isDeep, customizer);
1490
+ }
1491
+
1492
+ module.exports = clone;
1493
+
1494
+
1495
+ /***/ },
1496
+ /* 19 */
1497
+ /***/ function(module, exports, __webpack_require__) {
1498
+
1499
+ var createObjectMapper = __webpack_require__(43);
1500
+
1501
+ /**
1502
+ * Creates an object with the same keys as `object` and values generated by
1503
+ * running each own enumerable property of `object` through `iteratee`. The
1504
+ * iteratee function is bound to `thisArg` and invoked with three arguments:
1505
+ * (value, key, object).
1506
+ *
1507
+ * If a property name is provided for `iteratee` the created `_.property`
1508
+ * style callback returns the property value of the given element.
1509
+ *
1510
+ * If a value is also provided for `thisArg` the created `_.matchesProperty`
1511
+ * style callback returns `true` for elements that have a matching property
1512
+ * value, else `false`.
1513
+ *
1514
+ * If an object is provided for `iteratee` the created `_.matches` style
1515
+ * callback returns `true` for elements that have the properties of the given
1516
+ * object, else `false`.
1517
+ *
1518
+ * @static
1519
+ * @memberOf _
1520
+ * @category Object
1521
+ * @param {Object} object The object to iterate over.
1522
+ * @param {Function|Object|string} [iteratee=_.identity] The function invoked
1523
+ * per iteration.
1524
+ * @param {*} [thisArg] The `this` binding of `iteratee`.
1525
+ * @returns {Object} Returns the new mapped object.
1526
+ * @example
1527
+ *
1528
+ * _.mapValues({ 'a': 1, 'b': 2 }, function(n) {
1529
+ * return n * 3;
1530
+ * });
1531
+ * // => { 'a': 3, 'b': 6 }
1532
+ *
1533
+ * var users = {
1534
+ * 'fred': { 'user': 'fred', 'age': 40 },
1334
1535
  * 'pebbles': { 'user': 'pebbles', 'age': 1 }
1335
1536
  * };
1336
1537
  *
@@ -1338,30 +1539,22 @@ return /******/ (function(modules) { // webpackBootstrap
1338
1539
  * _.mapValues(users, 'age');
1339
1540
  * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
1340
1541
  */
1341
- function mapValues(object, iteratee, thisArg) {
1342
- var result = {};
1343
- iteratee = baseCallback(iteratee, thisArg, 3);
1344
-
1345
- baseForOwn(object, function(value, key, object) {
1346
- result[key] = iteratee(value, key, object);
1347
- });
1348
- return result;
1349
- }
1542
+ var mapValues = createObjectMapper();
1350
1543
 
1351
1544
  module.exports = mapValues;
1352
1545
 
1353
1546
 
1354
1547
  /***/ },
1355
- /* 16 */
1548
+ /* 20 */
1356
1549
  /***/ function(module, exports, __webpack_require__) {
1357
1550
 
1358
- var baseForOwn = __webpack_require__(32),
1359
- createForOwn = __webpack_require__(33);
1551
+ var baseForOwn = __webpack_require__(46),
1552
+ createForOwn = __webpack_require__(47);
1360
1553
 
1361
1554
  /**
1362
1555
  * Iterates over own enumerable properties of an object invoking `iteratee`
1363
1556
  * for each property. The `iteratee` is bound to `thisArg` and invoked with
1364
- * three arguments: (value, key, object). Iterator functions may exit iteration
1557
+ * three arguments: (value, key, object). Iteratee functions may exit iteration
1365
1558
  * early by explicitly returning `false`.
1366
1559
  *
1367
1560
  * @static
@@ -1391,13 +1584,13 @@ return /******/ (function(modules) { // webpackBootstrap
1391
1584
 
1392
1585
 
1393
1586
  /***/ },
1394
- /* 17 */
1587
+ /* 21 */
1395
1588
  /***/ function(module, exports, __webpack_require__) {
1396
1589
 
1397
- var isLength = __webpack_require__(35),
1398
- isNative = __webpack_require__(30),
1590
+ var isArrayLike = __webpack_require__(44),
1591
+ isNative = __webpack_require__(38),
1399
1592
  isObject = __webpack_require__(25),
1400
- shimKeys = __webpack_require__(36);
1593
+ shimKeys = __webpack_require__(45);
1401
1594
 
1402
1595
  /* Native method references for those with the same name as other `lodash` methods. */
1403
1596
  var nativeKeys = isNative(nativeKeys = Object.keys) && nativeKeys;
@@ -1412,7 +1605,7 @@ return /******/ (function(modules) { // webpackBootstrap
1412
1605
  * @static
1413
1606
  * @memberOf _
1414
1607
  * @category Object
1415
- * @param {Object} object The object to inspect.
1608
+ * @param {Object} object The object to query.
1416
1609
  * @returns {Array} Returns the array of property names.
1417
1610
  * @example
1418
1611
  *
@@ -1430,12 +1623,9 @@ return /******/ (function(modules) { // webpackBootstrap
1430
1623
  * // => ['0', '1']
1431
1624
  */
1432
1625
  var keys = !nativeKeys ? shimKeys : function(object) {
1433
- if (object) {
1434
- var Ctor = object.constructor,
1435
- length = object.length;
1436
- }
1626
+ var Ctor = object != null && object.constructor;
1437
1627
  if ((typeof Ctor == 'function' && Ctor.prototype === object) ||
1438
- (typeof object != 'function' && (length && isLength(length)))) {
1628
+ (typeof object != 'function' && isArrayLike(object))) {
1439
1629
  return shimKeys(object);
1440
1630
  }
1441
1631
  return isObject(object) ? nativeKeys(object) : [];
@@ -1445,11 +1635,11 @@ return /******/ (function(modules) { // webpackBootstrap
1445
1635
 
1446
1636
 
1447
1637
  /***/ },
1448
- /* 18 */
1638
+ /* 22 */
1449
1639
  /***/ function(module, exports, __webpack_require__) {
1450
1640
 
1451
- var baseForOwn = __webpack_require__(32),
1452
- createFindKey = __webpack_require__(39);
1641
+ var baseForOwn = __webpack_require__(46),
1642
+ createFindKey = __webpack_require__(48);
1453
1643
 
1454
1644
  /**
1455
1645
  * This method is like `_.find` except that it returns the key of the first
@@ -1505,23 +1695,19 @@ return /******/ (function(modules) { // webpackBootstrap
1505
1695
 
1506
1696
 
1507
1697
  /***/ },
1508
- /* 19 */
1698
+ /* 23 */
1509
1699
  /***/ function(module, exports, __webpack_require__) {
1510
1700
 
1511
- var baseIndexOf = __webpack_require__(40),
1512
- cacheIndexOf = __webpack_require__(41),
1513
- createCache = __webpack_require__(42),
1514
- isArguments = __webpack_require__(43),
1515
- isArray = __webpack_require__(44);
1701
+ var baseIndexOf = __webpack_require__(49),
1702
+ cacheIndexOf = __webpack_require__(50),
1703
+ createCache = __webpack_require__(51),
1704
+ isArrayLike = __webpack_require__(44);
1516
1705
 
1517
1706
  /**
1518
- * Creates an array of unique values in all provided arrays using `SameValueZero`
1707
+ * Creates an array of unique values in all provided arrays using
1708
+ * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
1519
1709
  * for equality comparisons.
1520
1710
  *
1521
- * **Note:** [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
1522
- * comparisons are like strict equality comparisons, e.g. `===`, except that
1523
- * `NaN` matches `NaN`.
1524
- *
1525
1711
  * @static
1526
1712
  * @memberOf _
1527
1713
  * @category Array
@@ -1537,20 +1723,23 @@ return /******/ (function(modules) { // webpackBootstrap
1537
1723
  argsLength = arguments.length,
1538
1724
  caches = [],
1539
1725
  indexOf = baseIndexOf,
1540
- isCommon = true;
1726
+ isCommon = true,
1727
+ result = [];
1541
1728
 
1542
1729
  while (++argsIndex < argsLength) {
1543
1730
  var value = arguments[argsIndex];
1544
- if (isArray(value) || isArguments(value)) {
1731
+ if (isArrayLike(value)) {
1545
1732
  args.push(value);
1546
1733
  caches.push((isCommon && value.length >= 120) ? createCache(argsIndex && value) : null);
1547
1734
  }
1548
1735
  }
1549
1736
  argsLength = args.length;
1737
+ if (argsLength < 2) {
1738
+ return result;
1739
+ }
1550
1740
  var array = args[0],
1551
1741
  index = -1,
1552
1742
  length = array ? array.length : 0,
1553
- result = [],
1554
1743
  seen = caches[0];
1555
1744
 
1556
1745
  outer:
@@ -1577,21 +1766,23 @@ return /******/ (function(modules) { // webpackBootstrap
1577
1766
 
1578
1767
 
1579
1768
  /***/ },
1580
- /* 20 */
1769
+ /* 24 */
1581
1770
  /***/ function(module, exports, __webpack_require__) {
1582
1771
 
1583
1772
  var baseCallback = __webpack_require__(34),
1584
- baseUniq = __webpack_require__(37),
1585
- isIterateeCall = __webpack_require__(28),
1586
- sortedUniq = __webpack_require__(38);
1773
+ baseUniq = __webpack_require__(52),
1774
+ isIterateeCall = __webpack_require__(42),
1775
+ sortedUniq = __webpack_require__(53);
1587
1776
 
1588
1777
  /**
1589
- * Creates a duplicate-value-free version of an array using `SameValueZero`
1590
- * for equality comparisons. Providing `true` for `isSorted` performs a faster
1591
- * search algorithm for sorted arrays. If an iteratee function is provided it
1592
- * is invoked for each value in the array to generate the criterion by which
1593
- * uniqueness is computed. The `iteratee` is bound to `thisArg` and invoked
1594
- * with three arguments: (value, index, array).
1778
+ * Creates a duplicate-free version of an array, using
1779
+ * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
1780
+ * for equality comparisons, in which only the first occurence of each element
1781
+ * is kept. Providing `true` for `isSorted` performs a faster search algorithm
1782
+ * for sorted arrays. If an iteratee function is provided it is invoked for
1783
+ * each element in the array to generate the criterion by which uniqueness
1784
+ * is computed. The `iteratee` is bound to `thisArg` and invoked with three
1785
+ * arguments: (value, index, array).
1595
1786
  *
1596
1787
  * If a property name is provided for `iteratee` the created `_.property`
1597
1788
  * style callback returns the property value of the given element.
@@ -1604,10 +1795,6 @@ return /******/ (function(modules) { // webpackBootstrap
1604
1795
  * callback returns `true` for elements that have the properties of the given
1605
1796
  * object, else `false`.
1606
1797
  *
1607
- * **Note:** [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
1608
- * comparisons are like strict equality comparisons, e.g. `===`, except that
1609
- * `NaN` matches `NaN`.
1610
- *
1611
1798
  * @static
1612
1799
  * @memberOf _
1613
1800
  * @alias unique
@@ -1619,8 +1806,8 @@ return /******/ (function(modules) { // webpackBootstrap
1619
1806
  * @returns {Array} Returns the new duplicate-value-free array.
1620
1807
  * @example
1621
1808
  *
1622
- * _.uniq([1, 2, 1]);
1623
- * // => [1, 2]
1809
+ * _.uniq([2, 1, 2]);
1810
+ * // => [2, 1]
1624
1811
  *
1625
1812
  * // using `isSorted`
1626
1813
  * _.uniq([1, 1, 2], true);
@@ -1656,254 +1843,476 @@ return /******/ (function(modules) { // webpackBootstrap
1656
1843
 
1657
1844
 
1658
1845
  /***/ },
1659
- /* 21 */
1846
+ /* 25 */
1660
1847
  /***/ function(module, exports, __webpack_require__) {
1661
1848
 
1662
- var arrayMap = __webpack_require__(45),
1663
- baseCallback = __webpack_require__(34),
1664
- baseMap = __webpack_require__(46),
1665
- isArray = __webpack_require__(44);
1666
-
1667
1849
  /**
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 interatees 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`, `drop`,
1688
- * `dropRight`, `every`, `fill`, `flatten`, `invert`, `max`, `min`, `parseInt`,
1689
- * `slice`, `sortBy`, `take`, `takeRight`, `template`, `trim`, `trimLeft`,
1690
- * `trimRight`, `trunc`, `random`, `range`, `sample`, `some`, `uniq`, and `words`
1850
+ * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.
1851
+ * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
1691
1852
  *
1692
1853
  * @static
1693
1854
  * @memberOf _
1694
- * @alias collect
1695
- * @category Collection
1696
- * @param {Array|Object|string} collection The collection to iterate over.
1697
- * @param {Function|Object|string} [iteratee=_.identity] The function invoked
1698
- * per iteration.
1699
- * create a `_.property` or `_.matches` style callback respectively.
1700
- * @param {*} [thisArg] The `this` binding of `iteratee`.
1701
- * @returns {Array} Returns the new mapped array.
1855
+ * @category Lang
1856
+ * @param {*} value The value to check.
1857
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
1702
1858
  * @example
1703
1859
  *
1704
- * function timesThree(n) {
1705
- * return n * 3;
1706
- * }
1707
- *
1708
- * _.map([1, 2], timesThree);
1709
- * // => [3, 6]
1710
- *
1711
- * _.map({ 'a': 1, 'b': 2 }, timesThree);
1712
- * // => [3, 6] (iteration order is not guaranteed)
1860
+ * _.isObject({});
1861
+ * // => true
1713
1862
  *
1714
- * var users = [
1715
- * { 'user': 'barney' },
1716
- * { 'user': 'fred' }
1717
- * ];
1863
+ * _.isObject([1, 2, 3]);
1864
+ * // => true
1718
1865
  *
1719
- * // using the `_.property` callback shorthand
1720
- * _.map(users, 'user');
1721
- * // => ['barney', 'fred']
1866
+ * _.isObject(1);
1867
+ * // => false
1722
1868
  */
1723
- function map(collection, iteratee, thisArg) {
1724
- var func = isArray(collection) ? arrayMap : baseMap;
1725
- iteratee = baseCallback(iteratee, thisArg, 3);
1726
- return func(collection, iteratee);
1869
+ function isObject(value) {
1870
+ // Avoid a V8 JIT bug in Chrome 19-20.
1871
+ // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.
1872
+ var type = typeof value;
1873
+ return type == 'function' || (!!value && type == 'object');
1727
1874
  }
1728
1875
 
1729
- module.exports = map;
1876
+ module.exports = isObject;
1730
1877
 
1731
1878
 
1732
1879
  /***/ },
1733
- /* 22 */
1880
+ /* 26 */
1734
1881
  /***/ function(module, exports, __webpack_require__) {
1735
1882
 
1736
- var arrayEach = __webpack_require__(47),
1737
- baseEach = __webpack_require__(48),
1738
- createForEach = __webpack_require__(49);
1739
-
1740
1883
  /**
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). Iterator functions may exit iteration early
1744
- * by explicitly returning `false`.
1745
- *
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
1884
+ * A specialized version of `_.forEach` for arrays without support for callback
1885
+ * shorthands and `this` binding.
1764
1886
  *
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)
1887
+ * @private
1888
+ * @param {Array} array The array to iterate over.
1889
+ * @param {Function} iteratee The function invoked per iteration.
1890
+ * @returns {Array} Returns `array`.
1769
1891
  */
1770
- var forEach = createForEach(arrayEach, baseEach);
1892
+ function arrayEach(array, iteratee) {
1893
+ var index = -1,
1894
+ length = array.length;
1771
1895
 
1772
- module.exports = forEach;
1896
+ while (++index < length) {
1897
+ if (iteratee(array[index], index, array) === false) {
1898
+ break;
1899
+ }
1900
+ }
1901
+ return array;
1902
+ }
1903
+
1904
+ module.exports = arrayEach;
1773
1905
 
1774
1906
 
1775
1907
  /***/ },
1776
- /* 23 */
1908
+ /* 27 */
1777
1909
  /***/ function(module, exports, __webpack_require__) {
1778
1910
 
1779
- var isLength = __webpack_require__(35),
1780
- keys = __webpack_require__(17);
1911
+ var baseForOwn = __webpack_require__(46),
1912
+ createBaseEach = __webpack_require__(54);
1781
1913
 
1782
1914
  /**
1783
- * Gets the size of `collection` by returning its length for array-like
1784
- * values or the number of own enumerable properties for objects.
1785
- *
1786
- * @static
1787
- * @memberOf _
1788
- * @category Collection
1789
- * @param {Array|Object|string} collection The collection to inspect.
1790
- * @returns {number} Returns the size of `collection`.
1791
- * @example
1792
- *
1793
- * _.size([1, 2, 3]);
1794
- * // => 3
1795
- *
1796
- * _.size({ 'a': 1, 'b': 2 });
1797
- * // => 2
1915
+ * The base implementation of `_.forEach` without support for callback
1916
+ * shorthands and `this` binding.
1798
1917
  *
1799
- * _.size('pebbles');
1800
- * // => 7
1918
+ * @private
1919
+ * @param {Array|Object|string} collection The collection to iterate over.
1920
+ * @param {Function} iteratee The function invoked per iteration.
1921
+ * @returns {Array|Object|string} Returns `collection`.
1801
1922
  */
1802
- function size(collection) {
1803
- var length = collection ? collection.length : 0;
1804
- return isLength(length) ? length : keys(collection).length;
1805
- }
1923
+ var baseEach = createBaseEach(baseForOwn);
1806
1924
 
1807
- module.exports = size;
1925
+ module.exports = baseEach;
1808
1926
 
1809
1927
 
1810
1928
  /***/ },
1811
- /* 24 */
1929
+ /* 28 */
1812
1930
  /***/ function(module, exports, __webpack_require__) {
1813
1931
 
1814
- var arrayReduce = __webpack_require__(50),
1815
- baseEach = __webpack_require__(48),
1816
- createReduce = __webpack_require__(51);
1932
+ var bindCallback = __webpack_require__(41),
1933
+ isArray = __webpack_require__(36);
1817
1934
 
1818
1935
  /**
1819
- * Reduces `collection` to a value which is the accumulated result of running
1820
- * each element in `collection` through `iteratee`, where each successive
1821
- * invocation is supplied the return value of the previous. If `accumulator`
1822
- * is not provided the first element of `collection` is used as the initial
1823
- * value. The `iteratee` is bound to `thisArg` and invoked with four arguments:
1824
- * (accumulator, value, index|key, collection).
1936
+ * Creates a function for `_.forEach` or `_.forEachRight`.
1825
1937
  *
1826
- * Many lodash methods are guarded to work as interatees for methods like
1827
- * `_.reduce`, `_.reduceRight`, and `_.transform`.
1938
+ * @private
1939
+ * @param {Function} arrayFunc The function to iterate over an array.
1940
+ * @param {Function} eachFunc The function to iterate over a collection.
1941
+ * @returns {Function} Returns the new each function.
1942
+ */
1943
+ function createForEach(arrayFunc, eachFunc) {
1944
+ return function(collection, iteratee, thisArg) {
1945
+ return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))
1946
+ ? arrayFunc(collection, iteratee)
1947
+ : eachFunc(collection, bindCallback(iteratee, thisArg, 3));
1948
+ };
1949
+ }
1950
+
1951
+ module.exports = createForEach;
1952
+
1953
+
1954
+ /***/ },
1955
+ /* 29 */
1956
+ /***/ function(module, exports, __webpack_require__) {
1957
+
1958
+ /**
1959
+ * A specialized version of `_.reduce` for arrays without support for callback
1960
+ * shorthands and `this` binding.
1828
1961
  *
1829
- * The guarded methods are:
1830
- * `assign`, `defaults`, `includes`, `merge`, `sortByAll`, and `sortByOrder`
1962
+ * @private
1963
+ * @param {Array} array The array to iterate over.
1964
+ * @param {Function} iteratee The function invoked per iteration.
1965
+ * @param {*} [accumulator] The initial value.
1966
+ * @param {boolean} [initFromArray] Specify using the first element of `array`
1967
+ * as the initial value.
1968
+ * @returns {*} Returns the accumulated value.
1969
+ */
1970
+ function arrayReduce(array, iteratee, accumulator, initFromArray) {
1971
+ var index = -1,
1972
+ length = array.length;
1973
+
1974
+ if (initFromArray && length) {
1975
+ accumulator = array[++index];
1976
+ }
1977
+ while (++index < length) {
1978
+ accumulator = iteratee(accumulator, array[index], index, array);
1979
+ }
1980
+ return accumulator;
1981
+ }
1982
+
1983
+ module.exports = arrayReduce;
1984
+
1985
+
1986
+ /***/ },
1987
+ /* 30 */
1988
+ /***/ function(module, exports, __webpack_require__) {
1989
+
1990
+ var baseCallback = __webpack_require__(34),
1991
+ baseReduce = __webpack_require__(55),
1992
+ isArray = __webpack_require__(36);
1993
+
1994
+ /**
1995
+ * Creates a function for `_.reduce` or `_.reduceRight`.
1996
+ *
1997
+ * @private
1998
+ * @param {Function} arrayFunc The function to iterate over an array.
1999
+ * @param {Function} eachFunc The function to iterate over a collection.
2000
+ * @returns {Function} Returns the new each function.
2001
+ */
2002
+ function createReduce(arrayFunc, eachFunc) {
2003
+ return function(collection, iteratee, accumulator, thisArg) {
2004
+ var initFromArray = arguments.length < 3;
2005
+ return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))
2006
+ ? arrayFunc(collection, iteratee, accumulator, initFromArray)
2007
+ : baseReduce(collection, baseCallback(iteratee, thisArg, 4), accumulator, initFromArray, eachFunc);
2008
+ };
2009
+ }
2010
+
2011
+ module.exports = createReduce;
2012
+
2013
+
2014
+ /***/ },
2015
+ /* 31 */
2016
+ /***/ function(module, exports, __webpack_require__) {
2017
+
2018
+ var baseProperty = __webpack_require__(56);
2019
+
2020
+ /**
2021
+ * Gets the "length" property value of `object`.
2022
+ *
2023
+ * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)
2024
+ * that affects Safari on at least iOS 8.1-8.3 ARM64.
2025
+ *
2026
+ * @private
2027
+ * @param {Object} object The object to query.
2028
+ * @returns {*} Returns the "length" value.
2029
+ */
2030
+ var getLength = baseProperty('length');
2031
+
2032
+ module.exports = getLength;
2033
+
2034
+
2035
+ /***/ },
2036
+ /* 32 */
2037
+ /***/ function(module, exports, __webpack_require__) {
2038
+
2039
+ /**
2040
+ * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)
2041
+ * of an array-like value.
2042
+ */
2043
+ var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;
2044
+
2045
+ /**
2046
+ * Checks if `value` is a valid array-like length.
2047
+ *
2048
+ * **Note:** This function is based on [`ToLength`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength).
2049
+ *
2050
+ * @private
2051
+ * @param {*} value The value to check.
2052
+ * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
2053
+ */
2054
+ function isLength(value) {
2055
+ return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
2056
+ }
2057
+
2058
+ module.exports = isLength;
2059
+
2060
+
2061
+ /***/ },
2062
+ /* 33 */
2063
+ /***/ function(module, exports, __webpack_require__) {
2064
+
2065
+ /**
2066
+ * A specialized version of `_.map` for arrays without support for callback
2067
+ * shorthands and `this` binding.
2068
+ *
2069
+ * @private
2070
+ * @param {Array} array The array to iterate over.
2071
+ * @param {Function} iteratee The function invoked per iteration.
2072
+ * @returns {Array} Returns the new mapped array.
2073
+ */
2074
+ function arrayMap(array, iteratee) {
2075
+ var index = -1,
2076
+ length = array.length,
2077
+ result = Array(length);
2078
+
2079
+ while (++index < length) {
2080
+ result[index] = iteratee(array[index], index, array);
2081
+ }
2082
+ return result;
2083
+ }
2084
+
2085
+ module.exports = arrayMap;
2086
+
2087
+
2088
+ /***/ },
2089
+ /* 34 */
2090
+ /***/ function(module, exports, __webpack_require__) {
2091
+
2092
+ var baseMatches = __webpack_require__(57),
2093
+ baseMatchesProperty = __webpack_require__(58),
2094
+ bindCallback = __webpack_require__(41),
2095
+ identity = __webpack_require__(59),
2096
+ property = __webpack_require__(60);
2097
+
2098
+ /**
2099
+ * The base implementation of `_.callback` which supports specifying the
2100
+ * number of arguments to provide to `func`.
2101
+ *
2102
+ * @private
2103
+ * @param {*} [func=_.identity] The value to convert to a callback.
2104
+ * @param {*} [thisArg] The `this` binding of `func`.
2105
+ * @param {number} [argCount] The number of arguments to provide to `func`.
2106
+ * @returns {Function} Returns the callback.
2107
+ */
2108
+ function baseCallback(func, thisArg, argCount) {
2109
+ var type = typeof func;
2110
+ if (type == 'function') {
2111
+ return thisArg === undefined
2112
+ ? func
2113
+ : bindCallback(func, thisArg, argCount);
2114
+ }
2115
+ if (func == null) {
2116
+ return identity;
2117
+ }
2118
+ if (type == 'object') {
2119
+ return baseMatches(func);
2120
+ }
2121
+ return thisArg === undefined
2122
+ ? property(func)
2123
+ : baseMatchesProperty(func, thisArg);
2124
+ }
2125
+
2126
+ module.exports = baseCallback;
2127
+
2128
+
2129
+ /***/ },
2130
+ /* 35 */
2131
+ /***/ function(module, exports, __webpack_require__) {
2132
+
2133
+ var baseEach = __webpack_require__(27),
2134
+ isArrayLike = __webpack_require__(44);
2135
+
2136
+ /**
2137
+ * The base implementation of `_.map` without support for callback shorthands
2138
+ * and `this` binding.
2139
+ *
2140
+ * @private
2141
+ * @param {Array|Object|string} collection The collection to iterate over.
2142
+ * @param {Function} iteratee The function invoked per iteration.
2143
+ * @returns {Array} Returns the new mapped array.
2144
+ */
2145
+ function baseMap(collection, iteratee) {
2146
+ var index = -1,
2147
+ result = isArrayLike(collection) ? Array(collection.length) : [];
2148
+
2149
+ baseEach(collection, function(value, key, collection) {
2150
+ result[++index] = iteratee(value, key, collection);
2151
+ });
2152
+ return result;
2153
+ }
2154
+
2155
+ module.exports = baseMap;
2156
+
2157
+
2158
+ /***/ },
2159
+ /* 36 */
2160
+ /***/ function(module, exports, __webpack_require__) {
2161
+
2162
+ var isLength = __webpack_require__(32),
2163
+ isNative = __webpack_require__(38),
2164
+ isObjectLike = __webpack_require__(39);
2165
+
2166
+ /** `Object#toString` result references. */
2167
+ var arrayTag = '[object Array]';
2168
+
2169
+ /** Used for native method references. */
2170
+ var objectProto = Object.prototype;
2171
+
2172
+ /**
2173
+ * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
2174
+ * of values.
2175
+ */
2176
+ var objToString = objectProto.toString;
2177
+
2178
+ /* Native method references for those with the same name as other `lodash` methods. */
2179
+ var nativeIsArray = isNative(nativeIsArray = Array.isArray) && nativeIsArray;
2180
+
2181
+ /**
2182
+ * Checks if `value` is classified as an `Array` object.
1831
2183
  *
1832
2184
  * @static
1833
2185
  * @memberOf _
1834
- * @alias foldl, inject
1835
- * @category Collection
1836
- * @param {Array|Object|string} collection The collection to iterate over.
1837
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
1838
- * @param {*} [accumulator] The initial value.
1839
- * @param {*} [thisArg] The `this` binding of `iteratee`.
1840
- * @returns {*} Returns the accumulated value.
2186
+ * @category Lang
2187
+ * @param {*} value The value to check.
2188
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
1841
2189
  * @example
1842
2190
  *
1843
- * _.reduce([1, 2], function(sum, n) {
1844
- * return sum + n;
1845
- * });
1846
- * // => 3
2191
+ * _.isArray([1, 2, 3]);
2192
+ * // => true
1847
2193
  *
1848
- * _.reduce({ 'a': 1, 'b': 2 }, function(result, n, key) {
1849
- * result[key] = n * 3;
1850
- * return result;
1851
- * }, {});
1852
- * // => { 'a': 3, 'b': 6 } (iteration order is not guaranteed)
2194
+ * _.isArray(function() { return arguments; }());
2195
+ * // => false
1853
2196
  */
1854
- var reduce = createReduce(arrayReduce, baseEach);
2197
+ var isArray = nativeIsArray || function(value) {
2198
+ return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;
2199
+ };
1855
2200
 
1856
- module.exports = reduce;
2201
+ module.exports = isArray;
1857
2202
 
1858
2203
 
1859
2204
  /***/ },
1860
- /* 25 */
2205
+ /* 37 */
2206
+ /***/ function(module, exports, __webpack_require__) {
2207
+
2208
+ /**
2209
+ * The base implementation of `_.isFunction` without support for environments
2210
+ * with incorrect `typeof` results.
2211
+ *
2212
+ * @private
2213
+ * @param {*} value The value to check.
2214
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
2215
+ */
2216
+ function baseIsFunction(value) {
2217
+ // Avoid a Chakra JIT bug in compatibility modes of IE 11.
2218
+ // See https://github.com/jashkenas/underscore/issues/1621 for more details.
2219
+ return typeof value == 'function' || false;
2220
+ }
2221
+
2222
+ module.exports = baseIsFunction;
2223
+
2224
+
2225
+ /***/ },
2226
+ /* 38 */
1861
2227
  /***/ function(module, exports, __webpack_require__) {
1862
2228
 
2229
+ var escapeRegExp = __webpack_require__(61),
2230
+ isObjectLike = __webpack_require__(39);
2231
+
2232
+ /** `Object#toString` result references. */
2233
+ var funcTag = '[object Function]';
2234
+
2235
+ /** Used to detect host constructors (Safari > 5). */
2236
+ var reIsHostCtor = /^\[object .+?Constructor\]$/;
2237
+
2238
+ /** Used for native method references. */
2239
+ var objectProto = Object.prototype;
2240
+
2241
+ /** Used to resolve the decompiled source of functions. */
2242
+ var fnToString = Function.prototype.toString;
2243
+
2244
+ /**
2245
+ * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
2246
+ * of values.
2247
+ */
2248
+ var objToString = objectProto.toString;
2249
+
2250
+ /** Used to detect if a method is native. */
2251
+ var reIsNative = RegExp('^' +
2252
+ escapeRegExp(objToString)
2253
+ .replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
2254
+ );
2255
+
1863
2256
  /**
1864
- * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.
1865
- * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
2257
+ * Checks if `value` is a native function.
1866
2258
  *
1867
2259
  * @static
1868
2260
  * @memberOf _
1869
2261
  * @category Lang
1870
2262
  * @param {*} value The value to check.
1871
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
2263
+ * @returns {boolean} Returns `true` if `value` is a native function, else `false`.
1872
2264
  * @example
1873
2265
  *
1874
- * _.isObject({});
1875
- * // => true
1876
- *
1877
- * _.isObject([1, 2, 3]);
2266
+ * _.isNative(Array.prototype.push);
1878
2267
  * // => true
1879
2268
  *
1880
- * _.isObject(1);
2269
+ * _.isNative(_);
1881
2270
  * // => false
1882
2271
  */
1883
- function isObject(value) {
1884
- // Avoid a V8 JIT bug in Chrome 19-20.
1885
- // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.
1886
- var type = typeof value;
1887
- return type == 'function' || (!!value && type == 'object');
2272
+ function isNative(value) {
2273
+ if (value == null) {
2274
+ return false;
2275
+ }
2276
+ if (objToString.call(value) == funcTag) {
2277
+ return reIsNative.test(fnToString.call(value));
2278
+ }
2279
+ return isObjectLike(value) && reIsHostCtor.test(value);
1888
2280
  }
1889
2281
 
1890
- module.exports = isObject;
2282
+ module.exports = isNative;
1891
2283
 
1892
2284
 
1893
2285
  /***/ },
1894
- /* 26 */
2286
+ /* 39 */
1895
2287
  /***/ function(module, exports, __webpack_require__) {
1896
2288
 
1897
- var arrayCopy = __webpack_require__(52),
1898
- arrayEach = __webpack_require__(47),
1899
- baseCopy = __webpack_require__(53),
1900
- baseForOwn = __webpack_require__(32),
1901
- initCloneArray = __webpack_require__(54),
1902
- initCloneByTag = __webpack_require__(55),
1903
- initCloneObject = __webpack_require__(56),
1904
- isArray = __webpack_require__(44),
1905
- isObject = __webpack_require__(25),
1906
- keys = __webpack_require__(17);
2289
+ /**
2290
+ * Checks if `value` is object-like.
2291
+ *
2292
+ * @private
2293
+ * @param {*} value The value to check.
2294
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
2295
+ */
2296
+ function isObjectLike(value) {
2297
+ return !!value && typeof value == 'object';
2298
+ }
2299
+
2300
+ module.exports = isObjectLike;
2301
+
2302
+
2303
+ /***/ },
2304
+ /* 40 */
2305
+ /***/ function(module, exports, __webpack_require__) {
2306
+
2307
+ var arrayCopy = __webpack_require__(62),
2308
+ arrayEach = __webpack_require__(26),
2309
+ baseAssign = __webpack_require__(63),
2310
+ baseForOwn = __webpack_require__(46),
2311
+ initCloneArray = __webpack_require__(64),
2312
+ initCloneByTag = __webpack_require__(65),
2313
+ initCloneObject = __webpack_require__(66),
2314
+ isArray = __webpack_require__(36),
2315
+ isObject = __webpack_require__(25);
1907
2316
 
1908
2317
  /** `Object#toString` result references. */
1909
2318
  var argsTag = '[object Arguments]',
@@ -1974,7 +2383,7 @@ return /******/ (function(modules) { // webpackBootstrap
1974
2383
  if (customizer) {
1975
2384
  result = object ? customizer(value, key, object) : customizer(value);
1976
2385
  }
1977
- if (typeof result != 'undefined') {
2386
+ if (result !== undefined) {
1978
2387
  return result;
1979
2388
  }
1980
2389
  if (!isObject(value)) {
@@ -1993,7 +2402,7 @@ return /******/ (function(modules) { // webpackBootstrap
1993
2402
  if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
1994
2403
  result = initCloneObject(isFunc ? {} : value);
1995
2404
  if (!isDeep) {
1996
- return baseCopy(value, result, keys(value));
2405
+ return baseAssign(result, value);
1997
2406
  }
1998
2407
  } else {
1999
2408
  return cloneableTags[tag]
@@ -2026,10 +2435,10 @@ return /******/ (function(modules) { // webpackBootstrap
2026
2435
 
2027
2436
 
2028
2437
  /***/ },
2029
- /* 27 */
2438
+ /* 41 */
2030
2439
  /***/ function(module, exports, __webpack_require__) {
2031
2440
 
2032
- var identity = __webpack_require__(57);
2441
+ var identity = __webpack_require__(59);
2033
2442
 
2034
2443
  /**
2035
2444
  * A specialized version of `baseCallback` which only supports `this` binding
@@ -2045,7 +2454,7 @@ return /******/ (function(modules) { // webpackBootstrap
2045
2454
  if (typeof func != 'function') {
2046
2455
  return identity;
2047
2456
  }
2048
- if (typeof thisArg == 'undefined') {
2457
+ if (thisArg === undefined) {
2049
2458
  return func;
2050
2459
  }
2051
2460
  switch (argCount) {
@@ -2071,11 +2480,11 @@ return /******/ (function(modules) { // webpackBootstrap
2071
2480
 
2072
2481
 
2073
2482
  /***/ },
2074
- /* 28 */
2483
+ /* 42 */
2075
2484
  /***/ function(module, exports, __webpack_require__) {
2076
2485
 
2077
- var isIndex = __webpack_require__(58),
2078
- isLength = __webpack_require__(35),
2486
+ var isArrayLike = __webpack_require__(44),
2487
+ isIndex = __webpack_require__(67),
2079
2488
  isObject = __webpack_require__(25);
2080
2489
 
2081
2490
  /**
@@ -2092,13 +2501,9 @@ return /******/ (function(modules) { // webpackBootstrap
2092
2501
  return false;
2093
2502
  }
2094
2503
  var type = typeof index;
2095
- if (type == 'number') {
2096
- var length = object.length,
2097
- prereq = isLength(length) && isIndex(index, length);
2098
- } else {
2099
- prereq = type == 'string' && index in object;
2100
- }
2101
- if (prereq) {
2504
+ if (type == 'number'
2505
+ ? (isArrayLike(object) && isIndex(index, object.length))
2506
+ : (type == 'string' && index in object)) {
2102
2507
  var other = object[index];
2103
2508
  return value === value ? (value === other) : (other !== other);
2104
2509
  }
@@ -2109,110 +2514,112 @@ return /******/ (function(modules) { // webpackBootstrap
2109
2514
 
2110
2515
 
2111
2516
  /***/ },
2112
- /* 29 */
2517
+ /* 43 */
2113
2518
  /***/ function(module, exports, __webpack_require__) {
2114
2519
 
2520
+ var baseCallback = __webpack_require__(34),
2521
+ baseForOwn = __webpack_require__(46);
2522
+
2115
2523
  /**
2116
- * The base implementation of `_.isFunction` without support for environments
2117
- * with incorrect `typeof` results.
2524
+ * Creates a function for `_.mapKeys` or `_.mapValues`.
2118
2525
  *
2119
2526
  * @private
2120
- * @param {*} value The value to check.
2121
- * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
2527
+ * @param {boolean} [isMapKeys] Specify mapping keys instead of values.
2528
+ * @returns {Function} Returns the new map function.
2122
2529
  */
2123
- function baseIsFunction(value) {
2124
- // Avoid a Chakra JIT bug in compatibility modes of IE 11.
2125
- // See https://github.com/jashkenas/underscore/issues/1621 for more details.
2126
- return typeof value == 'function' || false;
2530
+ function createObjectMapper(isMapKeys) {
2531
+ return function(object, iteratee, thisArg) {
2532
+ var result = {};
2533
+ iteratee = baseCallback(iteratee, thisArg, 3);
2534
+
2535
+ baseForOwn(object, function(value, key, object) {
2536
+ var mapped = iteratee(value, key, object);
2537
+ key = isMapKeys ? mapped : key;
2538
+ value = isMapKeys ? value : mapped;
2539
+ result[key] = value;
2540
+ });
2541
+ return result;
2542
+ };
2127
2543
  }
2128
2544
 
2129
- module.exports = baseIsFunction;
2545
+ module.exports = createObjectMapper;
2130
2546
 
2131
2547
 
2132
2548
  /***/ },
2133
- /* 30 */
2549
+ /* 44 */
2134
2550
  /***/ function(module, exports, __webpack_require__) {
2135
2551
 
2136
- var escapeRegExp = __webpack_require__(59),
2137
- isObjectLike = __webpack_require__(31);
2138
-
2139
- /** `Object#toString` result references. */
2140
- var funcTag = '[object Function]';
2141
-
2142
- /** Used to detect host constructors (Safari > 5). */
2143
- var reHostCtor = /^\[object .+?Constructor\]$/;
2144
-
2145
- /** Used for native method references. */
2146
- var objectProto = Object.prototype;
2147
-
2148
- /** Used to resolve the decompiled source of functions. */
2149
- var fnToString = Function.prototype.toString;
2150
-
2151
- /**
2152
- * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
2153
- * of values.
2154
- */
2155
- var objToString = objectProto.toString;
2156
-
2157
- /** Used to detect if a method is native. */
2158
- var reNative = RegExp('^' +
2159
- escapeRegExp(objToString)
2160
- .replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
2161
- );
2552
+ var getLength = __webpack_require__(31),
2553
+ isLength = __webpack_require__(32);
2162
2554
 
2163
2555
  /**
2164
- * Checks if `value` is a native function.
2556
+ * Checks if `value` is array-like.
2165
2557
  *
2166
- * @static
2167
- * @memberOf _
2168
- * @category Lang
2558
+ * @private
2169
2559
  * @param {*} value The value to check.
2170
- * @returns {boolean} Returns `true` if `value` is a native function, else `false`.
2171
- * @example
2172
- *
2173
- * _.isNative(Array.prototype.push);
2174
- * // => true
2175
- *
2176
- * _.isNative(_);
2177
- * // => false
2560
+ * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
2178
2561
  */
2179
- function isNative(value) {
2180
- if (value == null) {
2181
- return false;
2182
- }
2183
- if (objToString.call(value) == funcTag) {
2184
- return reNative.test(fnToString.call(value));
2185
- }
2186
- return isObjectLike(value) && reHostCtor.test(value);
2562
+ function isArrayLike(value) {
2563
+ return value != null && isLength(getLength(value));
2187
2564
  }
2188
2565
 
2189
- module.exports = isNative;
2566
+ module.exports = isArrayLike;
2190
2567
 
2191
2568
 
2192
2569
  /***/ },
2193
- /* 31 */
2570
+ /* 45 */
2194
2571
  /***/ function(module, exports, __webpack_require__) {
2195
2572
 
2573
+ var isArguments = __webpack_require__(68),
2574
+ isArray = __webpack_require__(36),
2575
+ isIndex = __webpack_require__(67),
2576
+ isLength = __webpack_require__(32),
2577
+ keysIn = __webpack_require__(69),
2578
+ support = __webpack_require__(70);
2579
+
2580
+ /** Used for native method references. */
2581
+ var objectProto = Object.prototype;
2582
+
2583
+ /** Used to check objects for own properties. */
2584
+ var hasOwnProperty = objectProto.hasOwnProperty;
2585
+
2196
2586
  /**
2197
- * Checks if `value` is object-like.
2587
+ * A fallback implementation of `Object.keys` which creates an array of the
2588
+ * own enumerable property names of `object`.
2198
2589
  *
2199
2590
  * @private
2200
- * @param {*} value The value to check.
2201
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
2591
+ * @param {Object} object The object to query.
2592
+ * @returns {Array} Returns the array of property names.
2202
2593
  */
2203
- function isObjectLike(value) {
2204
- return !!value && typeof value == 'object';
2594
+ function shimKeys(object) {
2595
+ var props = keysIn(object),
2596
+ propsLength = props.length,
2597
+ length = propsLength && object.length;
2598
+
2599
+ var allowIndexes = length && isLength(length) &&
2600
+ (isArray(object) || (support.nonEnumArgs && isArguments(object)));
2601
+
2602
+ var index = -1,
2603
+ result = [];
2604
+
2605
+ while (++index < propsLength) {
2606
+ var key = props[index];
2607
+ if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {
2608
+ result.push(key);
2609
+ }
2610
+ }
2611
+ return result;
2205
2612
  }
2206
2613
 
2207
- module.exports = isObjectLike;
2614
+ module.exports = shimKeys;
2208
2615
 
2209
2616
 
2210
2617
  /***/ },
2211
- /* 32 */
2618
+ /* 46 */
2212
2619
  /***/ function(module, exports, __webpack_require__) {
2213
2620
 
2214
- var baseFor = __webpack_require__(60),
2215
- keys = __webpack_require__(17);
2621
+ var baseFor = __webpack_require__(71),
2622
+ keys = __webpack_require__(21);
2216
2623
 
2217
2624
  /**
2218
2625
  * The base implementation of `_.forOwn` without support for callback
@@ -2231,10 +2638,10 @@ return /******/ (function(modules) { // webpackBootstrap
2231
2638
 
2232
2639
 
2233
2640
  /***/ },
2234
- /* 33 */
2641
+ /* 47 */
2235
2642
  /***/ function(module, exports, __webpack_require__) {
2236
2643
 
2237
- var bindCallback = __webpack_require__(27);
2644
+ var bindCallback = __webpack_require__(41);
2238
2645
 
2239
2646
  /**
2240
2647
  * Creates a function for `_.forOwn` or `_.forOwnRight`.
@@ -2245,7 +2652,7 @@ return /******/ (function(modules) { // webpackBootstrap
2245
2652
  */
2246
2653
  function createForOwn(objectFunc) {
2247
2654
  return function(object, iteratee, thisArg) {
2248
- if (typeof iteratee != 'function' || typeof thisArg != 'undefined') {
2655
+ if (typeof iteratee != 'function' || thisArg !== undefined) {
2249
2656
  iteratee = bindCallback(iteratee, thisArg, 3);
2250
2657
  }
2251
2658
  return objectFunc(object, iteratee);
@@ -2256,127 +2663,123 @@ return /******/ (function(modules) { // webpackBootstrap
2256
2663
 
2257
2664
 
2258
2665
  /***/ },
2259
- /* 34 */
2666
+ /* 48 */
2260
2667
  /***/ function(module, exports, __webpack_require__) {
2261
2668
 
2262
- var baseMatches = __webpack_require__(61),
2263
- baseMatchesProperty = __webpack_require__(62),
2264
- baseProperty = __webpack_require__(63),
2265
- bindCallback = __webpack_require__(27),
2266
- identity = __webpack_require__(57);
2669
+ var baseCallback = __webpack_require__(34),
2670
+ baseFind = __webpack_require__(72);
2267
2671
 
2268
2672
  /**
2269
- * The base implementation of `_.callback` which supports specifying the
2270
- * number of arguments to provide to `func`.
2673
+ * Creates a `_.findKey` or `_.findLastKey` function.
2271
2674
  *
2272
2675
  * @private
2273
- * @param {*} [func=_.identity] The value to convert to a callback.
2274
- * @param {*} [thisArg] The `this` binding of `func`.
2275
- * @param {number} [argCount] The number of arguments to provide to `func`.
2276
- * @returns {Function} Returns the callback.
2676
+ * @param {Function} objectFunc The function to iterate over an object.
2677
+ * @returns {Function} Returns the new find function.
2277
2678
  */
2278
- function baseCallback(func, thisArg, argCount) {
2279
- var type = typeof func;
2280
- if (type == 'function') {
2281
- return typeof thisArg == 'undefined'
2282
- ? func
2283
- : bindCallback(func, thisArg, argCount);
2284
- }
2285
- if (func == null) {
2286
- return identity;
2287
- }
2288
- if (type == 'object') {
2289
- return baseMatches(func);
2290
- }
2291
- return typeof thisArg == 'undefined'
2292
- ? baseProperty(func + '')
2293
- : baseMatchesProperty(func + '', thisArg);
2679
+ function createFindKey(objectFunc) {
2680
+ return function(object, predicate, thisArg) {
2681
+ predicate = baseCallback(predicate, thisArg, 3);
2682
+ return baseFind(object, predicate, objectFunc, true);
2683
+ };
2294
2684
  }
2295
2685
 
2296
- module.exports = baseCallback;
2686
+ module.exports = createFindKey;
2297
2687
 
2298
2688
 
2299
2689
  /***/ },
2300
- /* 35 */
2690
+ /* 49 */
2301
2691
  /***/ function(module, exports, __webpack_require__) {
2302
2692
 
2693
+ var indexOfNaN = __webpack_require__(73);
2694
+
2303
2695
  /**
2304
- * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)
2305
- * of an array-like value.
2696
+ * The base implementation of `_.indexOf` without support for binary searches.
2697
+ *
2698
+ * @private
2699
+ * @param {Array} array The array to search.
2700
+ * @param {*} value The value to search for.
2701
+ * @param {number} fromIndex The index to search from.
2702
+ * @returns {number} Returns the index of the matched value, else `-1`.
2306
2703
  */
2307
- var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;
2704
+ function baseIndexOf(array, value, fromIndex) {
2705
+ if (value !== value) {
2706
+ return indexOfNaN(array, fromIndex);
2707
+ }
2708
+ var index = fromIndex - 1,
2709
+ length = array.length;
2710
+
2711
+ while (++index < length) {
2712
+ if (array[index] === value) {
2713
+ return index;
2714
+ }
2715
+ }
2716
+ return -1;
2717
+ }
2718
+
2719
+ module.exports = baseIndexOf;
2720
+
2721
+
2722
+ /***/ },
2723
+ /* 50 */
2724
+ /***/ function(module, exports, __webpack_require__) {
2725
+
2726
+ var isObject = __webpack_require__(25);
2308
2727
 
2309
2728
  /**
2310
- * Checks if `value` is a valid array-like length.
2311
- *
2312
- * **Note:** This function is based on [`ToLength`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength).
2729
+ * Checks if `value` is in `cache` mimicking the return signature of
2730
+ * `_.indexOf` by returning `0` if the value is found, else `-1`.
2313
2731
  *
2314
2732
  * @private
2315
- * @param {*} value The value to check.
2316
- * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
2733
+ * @param {Object} cache The cache to search.
2734
+ * @param {*} value The value to search for.
2735
+ * @returns {number} Returns `0` if `value` is found, else `-1`.
2317
2736
  */
2318
- function isLength(value) {
2319
- return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
2737
+ function cacheIndexOf(cache, value) {
2738
+ var data = cache.data,
2739
+ result = (typeof value == 'string' || isObject(value)) ? data.set.has(value) : data.hash[value];
2740
+
2741
+ return result ? 0 : -1;
2320
2742
  }
2321
2743
 
2322
- module.exports = isLength;
2744
+ module.exports = cacheIndexOf;
2323
2745
 
2324
2746
 
2325
2747
  /***/ },
2326
- /* 36 */
2748
+ /* 51 */
2327
2749
  /***/ function(module, exports, __webpack_require__) {
2328
2750
 
2329
- var isArguments = __webpack_require__(43),
2330
- isArray = __webpack_require__(44),
2331
- isIndex = __webpack_require__(58),
2332
- isLength = __webpack_require__(35),
2333
- keysIn = __webpack_require__(64),
2334
- support = __webpack_require__(65);
2335
-
2336
- /** Used for native method references. */
2337
- var objectProto = Object.prototype;
2751
+ /* WEBPACK VAR INJECTION */(function(global) {var SetCache = __webpack_require__(74),
2752
+ constant = __webpack_require__(75),
2753
+ isNative = __webpack_require__(38);
2338
2754
 
2339
- /** Used to check objects for own properties. */
2340
- var hasOwnProperty = objectProto.hasOwnProperty;
2755
+ /** Native method references. */
2756
+ var Set = isNative(Set = global.Set) && Set;
2757
+
2758
+ /* Native method references for those with the same name as other `lodash` methods. */
2759
+ var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate;
2341
2760
 
2342
2761
  /**
2343
- * A fallback implementation of `Object.keys` which creates an array of the
2344
- * own enumerable property names of `object`.
2762
+ * Creates a `Set` cache object to optimize linear searches of large arrays.
2345
2763
  *
2346
2764
  * @private
2347
- * @param {Object} object The object to inspect.
2348
- * @returns {Array} Returns the array of property names.
2765
+ * @param {Array} [values] The values to cache.
2766
+ * @returns {null|Object} Returns the new cache object if `Set` is supported, else `null`.
2349
2767
  */
2350
- function shimKeys(object) {
2351
- var props = keysIn(object),
2352
- propsLength = props.length,
2353
- length = propsLength && object.length;
2354
-
2355
- var allowIndexes = length && isLength(length) &&
2356
- (isArray(object) || (support.nonEnumArgs && isArguments(object)));
2357
-
2358
- var index = -1,
2359
- result = [];
2768
+ var createCache = !(nativeCreate && Set) ? constant(null) : function(values) {
2769
+ return new SetCache(values);
2770
+ };
2360
2771
 
2361
- while (++index < propsLength) {
2362
- var key = props[index];
2363
- if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {
2364
- result.push(key);
2365
- }
2366
- }
2367
- return result;
2368
- }
2772
+ module.exports = createCache;
2369
2773
 
2370
- module.exports = shimKeys;
2371
-
2774
+ /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
2372
2775
 
2373
2776
  /***/ },
2374
- /* 37 */
2777
+ /* 52 */
2375
2778
  /***/ function(module, exports, __webpack_require__) {
2376
2779
 
2377
- var baseIndexOf = __webpack_require__(40),
2378
- cacheIndexOf = __webpack_require__(41),
2379
- createCache = __webpack_require__(42);
2780
+ var baseIndexOf = __webpack_require__(49),
2781
+ cacheIndexOf = __webpack_require__(50),
2782
+ createCache = __webpack_require__(51);
2380
2783
 
2381
2784
  /**
2382
2785
  * The base implementation of `_.uniq` without support for callback shorthands
@@ -2434,7 +2837,7 @@ return /******/ (function(modules) { // webpackBootstrap
2434
2837
 
2435
2838
 
2436
2839
  /***/ },
2437
- /* 38 */
2840
+ /* 53 */
2438
2841
  /***/ function(module, exports, __webpack_require__) {
2439
2842
 
2440
2843
  /**
@@ -2469,1136 +2872,1280 @@ return /******/ (function(modules) { // webpackBootstrap
2469
2872
 
2470
2873
 
2471
2874
  /***/ },
2472
- /* 39 */
2875
+ /* 54 */
2473
2876
  /***/ function(module, exports, __webpack_require__) {
2474
2877
 
2475
- var baseCallback = __webpack_require__(34),
2476
- baseFind = __webpack_require__(66);
2878
+ var getLength = __webpack_require__(31),
2879
+ isLength = __webpack_require__(32),
2880
+ toObject = __webpack_require__(78);
2477
2881
 
2478
2882
  /**
2479
- * Creates a `_.findKey` or `_.findLastKey` function.
2883
+ * Creates a `baseEach` or `baseEachRight` function.
2480
2884
  *
2481
2885
  * @private
2482
- * @param {Function} objectFunc The function to iterate over an object.
2483
- * @returns {Function} Returns the new find function.
2886
+ * @param {Function} eachFunc The function to iterate over a collection.
2887
+ * @param {boolean} [fromRight] Specify iterating from right to left.
2888
+ * @returns {Function} Returns the new base function.
2484
2889
  */
2485
- function createFindKey(objectFunc) {
2486
- return function(object, predicate, thisArg) {
2487
- predicate = baseCallback(predicate, thisArg, 3);
2488
- return baseFind(object, predicate, objectFunc, true);
2890
+ function createBaseEach(eachFunc, fromRight) {
2891
+ return function(collection, iteratee) {
2892
+ var length = collection ? getLength(collection) : 0;
2893
+ if (!isLength(length)) {
2894
+ return eachFunc(collection, iteratee);
2895
+ }
2896
+ var index = fromRight ? length : -1,
2897
+ iterable = toObject(collection);
2898
+
2899
+ while ((fromRight ? index-- : ++index < length)) {
2900
+ if (iteratee(iterable[index], index, iterable) === false) {
2901
+ break;
2902
+ }
2903
+ }
2904
+ return collection;
2489
2905
  };
2490
2906
  }
2491
2907
 
2492
- module.exports = createFindKey;
2908
+ module.exports = createBaseEach;
2493
2909
 
2494
2910
 
2495
2911
  /***/ },
2496
- /* 40 */
2912
+ /* 55 */
2497
2913
  /***/ function(module, exports, __webpack_require__) {
2498
2914
 
2499
- var indexOfNaN = __webpack_require__(67);
2500
-
2501
2915
  /**
2502
- * The base implementation of `_.indexOf` without support for binary searches.
2916
+ * The base implementation of `_.reduce` and `_.reduceRight` without support
2917
+ * for callback shorthands and `this` binding, which iterates over `collection`
2918
+ * using the provided `eachFunc`.
2503
2919
  *
2504
2920
  * @private
2505
- * @param {Array} array The array to search.
2506
- * @param {*} value The value to search for.
2507
- * @param {number} fromIndex The index to search from.
2508
- * @returns {number} Returns the index of the matched value, else `-1`.
2921
+ * @param {Array|Object|string} collection The collection to iterate over.
2922
+ * @param {Function} iteratee The function invoked per iteration.
2923
+ * @param {*} accumulator The initial value.
2924
+ * @param {boolean} initFromCollection Specify using the first or last element
2925
+ * of `collection` as the initial value.
2926
+ * @param {Function} eachFunc The function to iterate over `collection`.
2927
+ * @returns {*} Returns the accumulated value.
2509
2928
  */
2510
- function baseIndexOf(array, value, fromIndex) {
2511
- if (value !== value) {
2512
- return indexOfNaN(array, fromIndex);
2513
- }
2514
- var index = fromIndex - 1,
2515
- length = array.length;
2516
-
2517
- while (++index < length) {
2518
- if (array[index] === value) {
2519
- return index;
2520
- }
2521
- }
2522
- return -1;
2929
+ function baseReduce(collection, iteratee, accumulator, initFromCollection, eachFunc) {
2930
+ eachFunc(collection, function(value, index, collection) {
2931
+ accumulator = initFromCollection
2932
+ ? (initFromCollection = false, value)
2933
+ : iteratee(accumulator, value, index, collection);
2934
+ });
2935
+ return accumulator;
2523
2936
  }
2524
2937
 
2525
- module.exports = baseIndexOf;
2938
+ module.exports = baseReduce;
2526
2939
 
2527
2940
 
2528
2941
  /***/ },
2529
- /* 41 */
2942
+ /* 56 */
2530
2943
  /***/ function(module, exports, __webpack_require__) {
2531
2944
 
2532
- var isObject = __webpack_require__(25);
2533
-
2534
2945
  /**
2535
- * Checks if `value` is in `cache` mimicking the return signature of
2536
- * `_.indexOf` by returning `0` if the value is found, else `-1`.
2946
+ * The base implementation of `_.property` without support for deep paths.
2537
2947
  *
2538
2948
  * @private
2539
- * @param {Object} cache The cache to search.
2540
- * @param {*} value The value to search for.
2541
- * @returns {number} Returns `0` if `value` is found, else `-1`.
2949
+ * @param {string} key The key of the property to get.
2950
+ * @returns {Function} Returns the new function.
2542
2951
  */
2543
- function cacheIndexOf(cache, value) {
2544
- var data = cache.data,
2545
- result = (typeof value == 'string' || isObject(value)) ? data.set.has(value) : data.hash[value];
2546
-
2547
- return result ? 0 : -1;
2952
+ function baseProperty(key) {
2953
+ return function(object) {
2954
+ return object == null ? undefined : object[key];
2955
+ };
2548
2956
  }
2549
2957
 
2550
- module.exports = cacheIndexOf;
2958
+ module.exports = baseProperty;
2551
2959
 
2552
2960
 
2553
2961
  /***/ },
2554
- /* 42 */
2962
+ /* 57 */
2555
2963
  /***/ function(module, exports, __webpack_require__) {
2556
2964
 
2557
- /* WEBPACK VAR INJECTION */(function(global) {var SetCache = __webpack_require__(68),
2558
- constant = __webpack_require__(69),
2559
- isNative = __webpack_require__(30);
2560
-
2561
- /** Native method references. */
2562
- var Set = isNative(Set = global.Set) && Set;
2563
-
2564
- /* Native method references for those with the same name as other `lodash` methods. */
2565
- var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate;
2965
+ var baseIsMatch = __webpack_require__(76),
2966
+ constant = __webpack_require__(75),
2967
+ isStrictComparable = __webpack_require__(77),
2968
+ keys = __webpack_require__(21),
2969
+ toObject = __webpack_require__(78);
2566
2970
 
2567
2971
  /**
2568
- * Creates a `Set` cache object to optimize linear searches of large arrays.
2972
+ * The base implementation of `_.matches` which does not clone `source`.
2569
2973
  *
2570
2974
  * @private
2571
- * @param {Array} [values] The values to cache.
2572
- * @returns {null|Object} Returns the new cache object if `Set` is supported, else `null`.
2975
+ * @param {Object} source The object of property values to match.
2976
+ * @returns {Function} Returns the new function.
2573
2977
  */
2574
- var createCache = !(nativeCreate && Set) ? constant(null) : function(values) {
2575
- return new SetCache(values);
2576
- };
2978
+ function baseMatches(source) {
2979
+ var props = keys(source),
2980
+ length = props.length;
2577
2981
 
2578
- module.exports = createCache;
2982
+ if (!length) {
2983
+ return constant(true);
2984
+ }
2985
+ if (length == 1) {
2986
+ var key = props[0],
2987
+ value = source[key];
2579
2988
 
2580
- /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
2989
+ if (isStrictComparable(value)) {
2990
+ return function(object) {
2991
+ if (object == null) {
2992
+ return false;
2993
+ }
2994
+ return object[key] === value && (value !== undefined || (key in toObject(object)));
2995
+ };
2996
+ }
2997
+ }
2998
+ var values = Array(length),
2999
+ strictCompareFlags = Array(length);
3000
+
3001
+ while (length--) {
3002
+ value = source[props[length]];
3003
+ values[length] = value;
3004
+ strictCompareFlags[length] = isStrictComparable(value);
3005
+ }
3006
+ return function(object) {
3007
+ return object != null && baseIsMatch(toObject(object), props, values, strictCompareFlags);
3008
+ };
3009
+ }
3010
+
3011
+ module.exports = baseMatches;
3012
+
2581
3013
 
2582
3014
  /***/ },
2583
- /* 43 */
3015
+ /* 58 */
2584
3016
  /***/ function(module, exports, __webpack_require__) {
2585
3017
 
2586
- var isLength = __webpack_require__(35),
2587
- isObjectLike = __webpack_require__(31);
2588
-
2589
- /** `Object#toString` result references. */
2590
- var argsTag = '[object Arguments]';
2591
-
2592
- /** Used for native method references. */
2593
- var objectProto = Object.prototype;
3018
+ var baseGet = __webpack_require__(79),
3019
+ baseIsEqual = __webpack_require__(80),
3020
+ baseSlice = __webpack_require__(81),
3021
+ isArray = __webpack_require__(36),
3022
+ isKey = __webpack_require__(82),
3023
+ isStrictComparable = __webpack_require__(77),
3024
+ last = __webpack_require__(83),
3025
+ toObject = __webpack_require__(78),
3026
+ toPath = __webpack_require__(84);
2594
3027
 
2595
3028
  /**
2596
- * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
2597
- * of values.
3029
+ * The base implementation of `_.matchesProperty` which does not which does
3030
+ * not clone `value`.
3031
+ *
3032
+ * @private
3033
+ * @param {string} path The path of the property to get.
3034
+ * @param {*} value The value to compare.
3035
+ * @returns {Function} Returns the new function.
2598
3036
  */
2599
- var objToString = objectProto.toString;
3037
+ function baseMatchesProperty(path, value) {
3038
+ var isArr = isArray(path),
3039
+ isCommon = isKey(path) && isStrictComparable(value),
3040
+ pathKey = (path + '');
3041
+
3042
+ path = toPath(path);
3043
+ return function(object) {
3044
+ if (object == null) {
3045
+ return false;
3046
+ }
3047
+ var key = pathKey;
3048
+ object = toObject(object);
3049
+ if ((isArr || !isCommon) && !(key in object)) {
3050
+ object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));
3051
+ if (object == null) {
3052
+ return false;
3053
+ }
3054
+ key = last(path);
3055
+ object = toObject(object);
3056
+ }
3057
+ return object[key] === value
3058
+ ? (value !== undefined || (key in object))
3059
+ : baseIsEqual(value, object[key], null, true);
3060
+ };
3061
+ }
2600
3062
 
3063
+ module.exports = baseMatchesProperty;
3064
+
3065
+
3066
+ /***/ },
3067
+ /* 59 */
3068
+ /***/ function(module, exports, __webpack_require__) {
3069
+
2601
3070
  /**
2602
- * Checks if `value` is classified as an `arguments` object.
3071
+ * This method returns the first argument provided to it.
2603
3072
  *
2604
3073
  * @static
2605
3074
  * @memberOf _
2606
- * @category Lang
2607
- * @param {*} value The value to check.
2608
- * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
3075
+ * @category Utility
3076
+ * @param {*} value Any value.
3077
+ * @returns {*} Returns `value`.
2609
3078
  * @example
2610
3079
  *
2611
- * _.isArguments(function() { return arguments; }());
2612
- * // => true
3080
+ * var object = { 'user': 'fred' };
2613
3081
  *
2614
- * _.isArguments([1, 2, 3]);
2615
- * // => false
3082
+ * _.identity(object) === object;
3083
+ * // => true
2616
3084
  */
2617
- function isArguments(value) {
2618
- var length = isObjectLike(value) ? value.length : undefined;
2619
- return isLength(length) && objToString.call(value) == argsTag;
3085
+ function identity(value) {
3086
+ return value;
2620
3087
  }
2621
3088
 
2622
- module.exports = isArguments;
3089
+ module.exports = identity;
2623
3090
 
2624
3091
 
2625
3092
  /***/ },
2626
- /* 44 */
3093
+ /* 60 */
2627
3094
  /***/ function(module, exports, __webpack_require__) {
2628
3095
 
2629
- var isLength = __webpack_require__(35),
2630
- isNative = __webpack_require__(30),
2631
- isObjectLike = __webpack_require__(31);
3096
+ var baseProperty = __webpack_require__(56),
3097
+ basePropertyDeep = __webpack_require__(85),
3098
+ isKey = __webpack_require__(82);
2632
3099
 
2633
- /** `Object#toString` result references. */
2634
- var arrayTag = '[object Array]';
3100
+ /**
3101
+ * Creates a function which returns the property value at `path` on a
3102
+ * given object.
3103
+ *
3104
+ * @static
3105
+ * @memberOf _
3106
+ * @category Utility
3107
+ * @param {Array|string} path The path of the property to get.
3108
+ * @returns {Function} Returns the new function.
3109
+ * @example
3110
+ *
3111
+ * var objects = [
3112
+ * { 'a': { 'b': { 'c': 2 } } },
3113
+ * { 'a': { 'b': { 'c': 1 } } }
3114
+ * ];
3115
+ *
3116
+ * _.map(objects, _.property('a.b.c'));
3117
+ * // => [2, 1]
3118
+ *
3119
+ * _.pluck(_.sortBy(objects, _.property(['a', 'b', 'c'])), 'a.b.c');
3120
+ * // => [1, 2]
3121
+ */
3122
+ function property(path) {
3123
+ return isKey(path) ? baseProperty(path) : basePropertyDeep(path);
3124
+ }
2635
3125
 
2636
- /** Used for native method references. */
2637
- var objectProto = Object.prototype;
3126
+ module.exports = property;
3127
+
3128
+
3129
+ /***/ },
3130
+ /* 61 */
3131
+ /***/ function(module, exports, __webpack_require__) {
3132
+
3133
+ var baseToString = __webpack_require__(86);
2638
3134
 
2639
3135
  /**
2640
- * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
2641
- * of values.
3136
+ * Used to match `RegExp` [special characters](http://www.regular-expressions.info/characters.html#special).
3137
+ * In addition to special characters the forward slash is escaped to allow for
3138
+ * easier `eval` use and `Function` compilation.
2642
3139
  */
2643
- var objToString = objectProto.toString;
2644
-
2645
- /* Native method references for those with the same name as other `lodash` methods. */
2646
- var nativeIsArray = isNative(nativeIsArray = Array.isArray) && nativeIsArray;
3140
+ var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g,
3141
+ reHasRegExpChars = RegExp(reRegExpChars.source);
2647
3142
 
2648
3143
  /**
2649
- * Checks if `value` is classified as an `Array` object.
3144
+ * Escapes the `RegExp` special characters "\", "/", "^", "$", ".", "|", "?",
3145
+ * "*", "+", "(", ")", "[", "]", "{" and "}" in `string`.
2650
3146
  *
2651
3147
  * @static
2652
3148
  * @memberOf _
2653
- * @category Lang
2654
- * @param {*} value The value to check.
2655
- * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
3149
+ * @category String
3150
+ * @param {string} [string=''] The string to escape.
3151
+ * @returns {string} Returns the escaped string.
2656
3152
  * @example
2657
3153
  *
2658
- * _.isArray([1, 2, 3]);
2659
- * // => true
2660
- *
2661
- * _.isArray(function() { return arguments; }());
2662
- * // => false
3154
+ * _.escapeRegExp('[lodash](https://lodash.com/)');
3155
+ * // => '\[lodash\]\(https:\/\/lodash\.com\/\)'
2663
3156
  */
2664
- var isArray = nativeIsArray || function(value) {
2665
- return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;
2666
- };
3157
+ function escapeRegExp(string) {
3158
+ string = baseToString(string);
3159
+ return (string && reHasRegExpChars.test(string))
3160
+ ? string.replace(reRegExpChars, '\\$&')
3161
+ : string;
3162
+ }
2667
3163
 
2668
- module.exports = isArray;
3164
+ module.exports = escapeRegExp;
2669
3165
 
2670
3166
 
2671
3167
  /***/ },
2672
- /* 45 */
3168
+ /* 62 */
2673
3169
  /***/ function(module, exports, __webpack_require__) {
2674
3170
 
2675
3171
  /**
2676
- * A specialized version of `_.map` for arrays without support for callback
2677
- * shorthands and `this` binding.
3172
+ * Copies the values of `source` to `array`.
2678
3173
  *
2679
3174
  * @private
2680
- * @param {Array} array The array to iterate over.
2681
- * @param {Function} iteratee The function invoked per iteration.
2682
- * @returns {Array} Returns the new mapped array.
3175
+ * @param {Array} source The array to copy values from.
3176
+ * @param {Array} [array=[]] The array to copy values to.
3177
+ * @returns {Array} Returns `array`.
2683
3178
  */
2684
- function arrayMap(array, iteratee) {
3179
+ function arrayCopy(source, array) {
2685
3180
  var index = -1,
2686
- length = array.length,
2687
- result = Array(length);
3181
+ length = source.length;
2688
3182
 
3183
+ array || (array = Array(length));
2689
3184
  while (++index < length) {
2690
- result[index] = iteratee(array[index], index, array);
3185
+ array[index] = source[index];
2691
3186
  }
2692
- return result;
3187
+ return array;
2693
3188
  }
2694
3189
 
2695
- module.exports = arrayMap;
3190
+ module.exports = arrayCopy;
2696
3191
 
2697
3192
 
2698
3193
  /***/ },
2699
- /* 46 */
3194
+ /* 63 */
2700
3195
  /***/ function(module, exports, __webpack_require__) {
2701
3196
 
2702
- var baseEach = __webpack_require__(48);
3197
+ var baseCopy = __webpack_require__(87),
3198
+ getSymbols = __webpack_require__(88),
3199
+ isNative = __webpack_require__(38),
3200
+ keys = __webpack_require__(21);
3201
+
3202
+ /** Native method references. */
3203
+ var preventExtensions = isNative(preventExtensions = Object.preventExtensions) && preventExtensions;
3204
+
3205
+ /** Used as `baseAssign`. */
3206
+ var nativeAssign = (function() {
3207
+ // Avoid `Object.assign` in Firefox 34-37 which have an early implementation
3208
+ // with a now defunct try/catch behavior. See https://bugzilla.mozilla.org/show_bug.cgi?id=1103344
3209
+ // for more details.
3210
+ //
3211
+ // Use `Object.preventExtensions` on a plain object instead of simply using
3212
+ // `Object('x')` because Chrome and IE fail to throw an error when attempting
3213
+ // to assign values to readonly indexes of strings.
3214
+ var func = preventExtensions && isNative(func = Object.assign) && func;
3215
+ try {
3216
+ if (func) {
3217
+ var object = preventExtensions({ '1': 0 });
3218
+ object[0] = 1;
3219
+ }
3220
+ } catch(e) {
3221
+ // Only attempt in strict mode.
3222
+ try { func(object, 'xo'); } catch(e) {}
3223
+ return !object[1] && func;
3224
+ }
3225
+ return false;
3226
+ }());
2703
3227
 
2704
3228
  /**
2705
- * The base implementation of `_.map` without support for callback shorthands
2706
- * and `this` binding.
3229
+ * The base implementation of `_.assign` without support for argument juggling,
3230
+ * multiple sources, and `customizer` functions.
2707
3231
  *
2708
3232
  * @private
2709
- * @param {Array|Object|string} collection The collection to iterate over.
2710
- * @param {Function} iteratee The function invoked per iteration.
2711
- * @returns {Array} Returns the new mapped array.
3233
+ * @param {Object} object The destination object.
3234
+ * @param {Object} source The source object.
3235
+ * @returns {Object} Returns `object`.
2712
3236
  */
2713
- function baseMap(collection, iteratee) {
2714
- var result = [];
2715
- baseEach(collection, function(value, key, collection) {
2716
- result.push(iteratee(value, key, collection));
2717
- });
2718
- return result;
2719
- }
3237
+ var baseAssign = nativeAssign || function(object, source) {
3238
+ return source == null
3239
+ ? object
3240
+ : baseCopy(source, getSymbols(source), baseCopy(source, keys(source), object));
3241
+ };
2720
3242
 
2721
- module.exports = baseMap;
3243
+ module.exports = baseAssign;
2722
3244
 
2723
3245
 
2724
3246
  /***/ },
2725
- /* 47 */
3247
+ /* 64 */
2726
3248
  /***/ function(module, exports, __webpack_require__) {
2727
3249
 
3250
+ /** Used for native method references. */
3251
+ var objectProto = Object.prototype;
3252
+
3253
+ /** Used to check objects for own properties. */
3254
+ var hasOwnProperty = objectProto.hasOwnProperty;
3255
+
2728
3256
  /**
2729
- * A specialized version of `_.forEach` for arrays without support for callback
2730
- * shorthands and `this` binding.
3257
+ * Initializes an array clone.
2731
3258
  *
2732
3259
  * @private
2733
- * @param {Array} array The array to iterate over.
2734
- * @param {Function} iteratee The function invoked per iteration.
2735
- * @returns {Array} Returns `array`.
3260
+ * @param {Array} array The array to clone.
3261
+ * @returns {Array} Returns the initialized clone.
2736
3262
  */
2737
- function arrayEach(array, iteratee) {
2738
- var index = -1,
2739
- length = array.length;
3263
+ function initCloneArray(array) {
3264
+ var length = array.length,
3265
+ result = new array.constructor(length);
2740
3266
 
2741
- while (++index < length) {
2742
- if (iteratee(array[index], index, array) === false) {
2743
- break;
2744
- }
3267
+ // Add array properties assigned by `RegExp#exec`.
3268
+ if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
3269
+ result.index = array.index;
3270
+ result.input = array.input;
2745
3271
  }
2746
- return array;
3272
+ return result;
2747
3273
  }
2748
3274
 
2749
- module.exports = arrayEach;
3275
+ module.exports = initCloneArray;
2750
3276
 
2751
3277
 
2752
3278
  /***/ },
2753
- /* 48 */
3279
+ /* 65 */
2754
3280
  /***/ function(module, exports, __webpack_require__) {
2755
3281
 
2756
- var baseForOwn = __webpack_require__(32),
2757
- createBaseEach = __webpack_require__(70);
3282
+ var bufferClone = __webpack_require__(89);
2758
3283
 
2759
- /**
2760
- * The base implementation of `_.forEach` without support for callback
2761
- * shorthands and `this` binding.
2762
- *
2763
- * @private
2764
- * @param {Array|Object|string} collection The collection to iterate over.
2765
- * @param {Function} iteratee The function invoked per iteration.
2766
- * @returns {Array|Object|string} Returns `collection`.
2767
- */
2768
- var baseEach = createBaseEach(baseForOwn);
3284
+ /** `Object#toString` result references. */
3285
+ var boolTag = '[object Boolean]',
3286
+ dateTag = '[object Date]',
3287
+ numberTag = '[object Number]',
3288
+ regexpTag = '[object RegExp]',
3289
+ stringTag = '[object String]';
2769
3290
 
2770
- module.exports = baseEach;
2771
-
2772
-
2773
- /***/ },
2774
- /* 49 */
2775
- /***/ function(module, exports, __webpack_require__) {
2776
-
2777
- var bindCallback = __webpack_require__(27),
2778
- isArray = __webpack_require__(44);
3291
+ var arrayBufferTag = '[object ArrayBuffer]',
3292
+ float32Tag = '[object Float32Array]',
3293
+ float64Tag = '[object Float64Array]',
3294
+ int8Tag = '[object Int8Array]',
3295
+ int16Tag = '[object Int16Array]',
3296
+ int32Tag = '[object Int32Array]',
3297
+ uint8Tag = '[object Uint8Array]',
3298
+ uint8ClampedTag = '[object Uint8ClampedArray]',
3299
+ uint16Tag = '[object Uint16Array]',
3300
+ uint32Tag = '[object Uint32Array]';
3301
+
3302
+ /** Used to match `RegExp` flags from their coerced string values. */
3303
+ var reFlags = /\w*$/;
2779
3304
 
2780
3305
  /**
2781
- * Creates a function for `_.forEach` or `_.forEachRight`.
3306
+ * Initializes an object clone based on its `toStringTag`.
3307
+ *
3308
+ * **Note:** This function only supports cloning values with tags of
3309
+ * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
2782
3310
  *
2783
3311
  * @private
2784
- * @param {Function} arrayFunc The function to iterate over an array.
2785
- * @param {Function} eachFunc The function to iterate over a collection.
2786
- * @returns {Function} Returns the new each function.
3312
+ * @param {Object} object The object to clone.
3313
+ * @param {string} tag The `toStringTag` of the object to clone.
3314
+ * @param {boolean} [isDeep] Specify a deep clone.
3315
+ * @returns {Object} Returns the initialized clone.
2787
3316
  */
2788
- function createForEach(arrayFunc, eachFunc) {
2789
- return function(collection, iteratee, thisArg) {
2790
- return (typeof iteratee == 'function' && typeof thisArg == 'undefined' && isArray(collection))
2791
- ? arrayFunc(collection, iteratee)
2792
- : eachFunc(collection, bindCallback(iteratee, thisArg, 3));
2793
- };
3317
+ function initCloneByTag(object, tag, isDeep) {
3318
+ var Ctor = object.constructor;
3319
+ switch (tag) {
3320
+ case arrayBufferTag:
3321
+ return bufferClone(object);
3322
+
3323
+ case boolTag:
3324
+ case dateTag:
3325
+ return new Ctor(+object);
3326
+
3327
+ case float32Tag: case float64Tag:
3328
+ case int8Tag: case int16Tag: case int32Tag:
3329
+ case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
3330
+ var buffer = object.buffer;
3331
+ return new Ctor(isDeep ? bufferClone(buffer) : buffer, object.byteOffset, object.length);
3332
+
3333
+ case numberTag:
3334
+ case stringTag:
3335
+ return new Ctor(object);
3336
+
3337
+ case regexpTag:
3338
+ var result = new Ctor(object.source, reFlags.exec(object));
3339
+ result.lastIndex = object.lastIndex;
3340
+ }
3341
+ return result;
2794
3342
  }
2795
3343
 
2796
- module.exports = createForEach;
3344
+ module.exports = initCloneByTag;
2797
3345
 
2798
3346
 
2799
3347
  /***/ },
2800
- /* 50 */
3348
+ /* 66 */
2801
3349
  /***/ function(module, exports, __webpack_require__) {
2802
3350
 
2803
3351
  /**
2804
- * A specialized version of `_.reduce` for arrays without support for callback
2805
- * shorthands and `this` binding.
3352
+ * Initializes an object clone.
2806
3353
  *
2807
3354
  * @private
2808
- * @param {Array} array The array to iterate over.
2809
- * @param {Function} iteratee The function invoked per iteration.
2810
- * @param {*} [accumulator] The initial value.
2811
- * @param {boolean} [initFromArray] Specify using the first element of `array`
2812
- * as the initial value.
2813
- * @returns {*} Returns the accumulated value.
3355
+ * @param {Object} object The object to clone.
3356
+ * @returns {Object} Returns the initialized clone.
2814
3357
  */
2815
- function arrayReduce(array, iteratee, accumulator, initFromArray) {
2816
- var index = -1,
2817
- length = array.length;
2818
-
2819
- if (initFromArray && length) {
2820
- accumulator = array[++index];
2821
- }
2822
- while (++index < length) {
2823
- accumulator = iteratee(accumulator, array[index], index, array);
3358
+ function initCloneObject(object) {
3359
+ var Ctor = object.constructor;
3360
+ if (!(typeof Ctor == 'function' && Ctor instanceof Ctor)) {
3361
+ Ctor = Object;
2824
3362
  }
2825
- return accumulator;
3363
+ return new Ctor;
2826
3364
  }
2827
3365
 
2828
- module.exports = arrayReduce;
3366
+ module.exports = initCloneObject;
2829
3367
 
2830
3368
 
2831
3369
  /***/ },
2832
- /* 51 */
3370
+ /* 67 */
2833
3371
  /***/ function(module, exports, __webpack_require__) {
2834
3372
 
2835
- var baseCallback = __webpack_require__(34),
2836
- baseReduce = __webpack_require__(71),
2837
- isArray = __webpack_require__(44);
3373
+ /**
3374
+ * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)
3375
+ * of an array-like value.
3376
+ */
3377
+ var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;
2838
3378
 
2839
3379
  /**
2840
- * Creates a function for `_.reduce` or `_.reduceRight`.
3380
+ * Checks if `value` is a valid array-like index.
2841
3381
  *
2842
3382
  * @private
2843
- * @param {Function} arrayFunc The function to iterate over an array.
2844
- * @param {Function} eachFunc The function to iterate over a collection.
2845
- * @returns {Function} Returns the new each function.
2846
- */
2847
- function createReduce(arrayFunc, eachFunc) {
2848
- return function(collection, iteratee, accumulator, thisArg) {
2849
- var initFromArray = arguments.length < 3;
2850
- return (typeof iteratee == 'function' && typeof thisArg == 'undefined' && isArray(collection))
2851
- ? arrayFunc(collection, iteratee, accumulator, initFromArray)
2852
- : baseReduce(collection, baseCallback(iteratee, thisArg, 4), accumulator, initFromArray, eachFunc);
2853
- };
3383
+ * @param {*} value The value to check.
3384
+ * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
3385
+ * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
3386
+ */
3387
+ function isIndex(value, length) {
3388
+ value = +value;
3389
+ length = length == null ? MAX_SAFE_INTEGER : length;
3390
+ return value > -1 && value % 1 == 0 && value < length;
2854
3391
  }
2855
3392
 
2856
- module.exports = createReduce;
3393
+ module.exports = isIndex;
2857
3394
 
2858
3395
 
2859
3396
  /***/ },
2860
- /* 52 */
3397
+ /* 68 */
2861
3398
  /***/ function(module, exports, __webpack_require__) {
2862
3399
 
3400
+ var isArrayLike = __webpack_require__(44),
3401
+ isObjectLike = __webpack_require__(39);
3402
+
3403
+ /** `Object#toString` result references. */
3404
+ var argsTag = '[object Arguments]';
3405
+
3406
+ /** Used for native method references. */
3407
+ var objectProto = Object.prototype;
3408
+
2863
3409
  /**
2864
- * Copies the values of `source` to `array`.
2865
- *
2866
- * @private
2867
- * @param {Array} source The array to copy values from.
2868
- * @param {Array} [array=[]] The array to copy values to.
2869
- * @returns {Array} Returns `array`.
3410
+ * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
3411
+ * of values.
2870
3412
  */
2871
- function arrayCopy(source, array) {
2872
- var index = -1,
2873
- length = source.length;
3413
+ var objToString = objectProto.toString;
2874
3414
 
2875
- array || (array = Array(length));
2876
- while (++index < length) {
2877
- array[index] = source[index];
2878
- }
2879
- return array;
3415
+ /**
3416
+ * Checks if `value` is classified as an `arguments` object.
3417
+ *
3418
+ * @static
3419
+ * @memberOf _
3420
+ * @category Lang
3421
+ * @param {*} value The value to check.
3422
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
3423
+ * @example
3424
+ *
3425
+ * _.isArguments(function() { return arguments; }());
3426
+ * // => true
3427
+ *
3428
+ * _.isArguments([1, 2, 3]);
3429
+ * // => false
3430
+ */
3431
+ function isArguments(value) {
3432
+ return isObjectLike(value) && isArrayLike(value) && objToString.call(value) == argsTag;
2880
3433
  }
2881
3434
 
2882
- module.exports = arrayCopy;
3435
+ module.exports = isArguments;
2883
3436
 
2884
3437
 
2885
3438
  /***/ },
2886
- /* 53 */
3439
+ /* 69 */
2887
3440
  /***/ function(module, exports, __webpack_require__) {
2888
3441
 
3442
+ var isArguments = __webpack_require__(68),
3443
+ isArray = __webpack_require__(36),
3444
+ isIndex = __webpack_require__(67),
3445
+ isLength = __webpack_require__(32),
3446
+ isObject = __webpack_require__(25),
3447
+ support = __webpack_require__(70);
3448
+
3449
+ /** Used for native method references. */
3450
+ var objectProto = Object.prototype;
3451
+
3452
+ /** Used to check objects for own properties. */
3453
+ var hasOwnProperty = objectProto.hasOwnProperty;
3454
+
2889
3455
  /**
2890
- * Copies the properties of `source` to `object`.
3456
+ * Creates an array of the own and inherited enumerable property names of `object`.
2891
3457
  *
2892
- * @private
2893
- * @param {Object} source The object to copy properties from.
2894
- * @param {Object} [object={}] The object to copy properties to.
2895
- * @param {Array} props The property names to copy.
2896
- * @returns {Object} Returns `object`.
3458
+ * **Note:** Non-object values are coerced to objects.
3459
+ *
3460
+ * @static
3461
+ * @memberOf _
3462
+ * @category Object
3463
+ * @param {Object} object The object to query.
3464
+ * @returns {Array} Returns the array of property names.
3465
+ * @example
3466
+ *
3467
+ * function Foo() {
3468
+ * this.a = 1;
3469
+ * this.b = 2;
3470
+ * }
3471
+ *
3472
+ * Foo.prototype.c = 3;
3473
+ *
3474
+ * _.keysIn(new Foo);
3475
+ * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
2897
3476
  */
2898
- function baseCopy(source, object, props) {
2899
- if (!props) {
2900
- props = object;
2901
- object = {};
3477
+ function keysIn(object) {
3478
+ if (object == null) {
3479
+ return [];
2902
3480
  }
2903
- var index = -1,
2904
- length = props.length;
3481
+ if (!isObject(object)) {
3482
+ object = Object(object);
3483
+ }
3484
+ var length = object.length;
3485
+ length = (length && isLength(length) &&
3486
+ (isArray(object) || (support.nonEnumArgs && isArguments(object))) && length) || 0;
3487
+
3488
+ var Ctor = object.constructor,
3489
+ index = -1,
3490
+ isProto = typeof Ctor == 'function' && Ctor.prototype === object,
3491
+ result = Array(length),
3492
+ skipIndexes = length > 0;
2905
3493
 
2906
3494
  while (++index < length) {
2907
- var key = props[index];
2908
- object[key] = source[key];
3495
+ result[index] = (index + '');
2909
3496
  }
2910
- return object;
3497
+ for (var key in object) {
3498
+ if (!(skipIndexes && isIndex(key, length)) &&
3499
+ !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
3500
+ result.push(key);
3501
+ }
3502
+ }
3503
+ return result;
2911
3504
  }
2912
3505
 
2913
- module.exports = baseCopy;
3506
+ module.exports = keysIn;
2914
3507
 
2915
3508
 
2916
3509
  /***/ },
2917
- /* 54 */
3510
+ /* 70 */
2918
3511
  /***/ function(module, exports, __webpack_require__) {
2919
3512
 
2920
- /** Used for native method references. */
3513
+ /* WEBPACK VAR INJECTION */(function(global) {/** Used for native method references. */
2921
3514
  var objectProto = Object.prototype;
2922
3515
 
2923
- /** Used to check objects for own properties. */
2924
- var hasOwnProperty = objectProto.hasOwnProperty;
3516
+ /** Used to detect DOM support. */
3517
+ var document = (document = global.window) && document.document;
3518
+
3519
+ /** Native method references. */
3520
+ var propertyIsEnumerable = objectProto.propertyIsEnumerable;
2925
3521
 
2926
3522
  /**
2927
- * Initializes an array clone.
3523
+ * An object environment feature flags.
2928
3524
  *
2929
- * @private
2930
- * @param {Array} array The array to clone.
2931
- * @returns {Array} Returns the initialized clone.
3525
+ * @static
3526
+ * @memberOf _
3527
+ * @type Object
2932
3528
  */
2933
- function initCloneArray(array) {
2934
- var length = array.length,
2935
- result = new array.constructor(length);
3529
+ var support = {};
2936
3530
 
2937
- // Add array properties assigned by `RegExp#exec`.
2938
- if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
2939
- result.index = array.index;
2940
- result.input = array.input;
3531
+ (function(x) {
3532
+ var Ctor = function() { this.x = x; },
3533
+ args = arguments,
3534
+ object = { '0': x, 'length': x },
3535
+ props = [];
3536
+
3537
+ Ctor.prototype = { 'valueOf': x, 'y': x };
3538
+ for (var key in new Ctor) { props.push(key); }
3539
+
3540
+ /**
3541
+ * Detect if functions can be decompiled by `Function#toString`
3542
+ * (all but Firefox OS certified apps, older Opera mobile browsers, and
3543
+ * the PlayStation 3; forced `false` for Windows 8 apps).
3544
+ *
3545
+ * @memberOf _.support
3546
+ * @type boolean
3547
+ */
3548
+ support.funcDecomp = /\bthis\b/.test(function() { return this; });
3549
+
3550
+ /**
3551
+ * Detect if `Function#name` is supported (all but IE).
3552
+ *
3553
+ * @memberOf _.support
3554
+ * @type boolean
3555
+ */
3556
+ support.funcNames = typeof Function.name == 'string';
3557
+
3558
+ /**
3559
+ * Detect if the DOM is supported.
3560
+ *
3561
+ * @memberOf _.support
3562
+ * @type boolean
3563
+ */
3564
+ try {
3565
+ support.dom = document.createDocumentFragment().nodeType === 11;
3566
+ } catch(e) {
3567
+ support.dom = false;
2941
3568
  }
2942
- return result;
2943
- }
2944
3569
 
2945
- module.exports = initCloneArray;
2946
-
3570
+ /**
3571
+ * Detect if `arguments` object indexes are non-enumerable.
3572
+ *
3573
+ * In Firefox < 4, IE < 9, PhantomJS, and Safari < 5.1 `arguments` object
3574
+ * indexes are non-enumerable. Chrome < 25 and Node.js < 0.11.0 treat
3575
+ * `arguments` object indexes as non-enumerable and fail `hasOwnProperty`
3576
+ * checks for indexes that exceed the number of function parameters and
3577
+ * whose associated argument values are `0`.
3578
+ *
3579
+ * @memberOf _.support
3580
+ * @type boolean
3581
+ */
3582
+ try {
3583
+ support.nonEnumArgs = !propertyIsEnumerable.call(args, 1);
3584
+ } catch(e) {
3585
+ support.nonEnumArgs = true;
3586
+ }
3587
+ }(1, 0));
3588
+
3589
+ module.exports = support;
3590
+
3591
+ /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
2947
3592
 
2948
3593
  /***/ },
2949
- /* 55 */
3594
+ /* 71 */
2950
3595
  /***/ function(module, exports, __webpack_require__) {
2951
3596
 
2952
- var bufferClone = __webpack_require__(72);
2953
-
2954
- /** `Object#toString` result references. */
2955
- var boolTag = '[object Boolean]',
2956
- dateTag = '[object Date]',
2957
- numberTag = '[object Number]',
2958
- regexpTag = '[object RegExp]',
2959
- stringTag = '[object String]';
3597
+ var createBaseFor = __webpack_require__(90);
2960
3598
 
2961
- var arrayBufferTag = '[object ArrayBuffer]',
2962
- float32Tag = '[object Float32Array]',
2963
- float64Tag = '[object Float64Array]',
2964
- int8Tag = '[object Int8Array]',
2965
- int16Tag = '[object Int16Array]',
2966
- int32Tag = '[object Int32Array]',
2967
- uint8Tag = '[object Uint8Array]',
2968
- uint8ClampedTag = '[object Uint8ClampedArray]',
2969
- uint16Tag = '[object Uint16Array]',
2970
- uint32Tag = '[object Uint32Array]';
3599
+ /**
3600
+ * The base implementation of `baseForIn` and `baseForOwn` which iterates
3601
+ * over `object` properties returned by `keysFunc` invoking `iteratee` for
3602
+ * each property. Iteratee functions may exit iteration early by explicitly
3603
+ * returning `false`.
3604
+ *
3605
+ * @private
3606
+ * @param {Object} object The object to iterate over.
3607
+ * @param {Function} iteratee The function invoked per iteration.
3608
+ * @param {Function} keysFunc The function to get the keys of `object`.
3609
+ * @returns {Object} Returns `object`.
3610
+ */
3611
+ var baseFor = createBaseFor();
2971
3612
 
2972
- /** Used to match `RegExp` flags from their coerced string values. */
2973
- var reFlags = /\w*$/;
3613
+ module.exports = baseFor;
3614
+
3615
+
3616
+ /***/ },
3617
+ /* 72 */
3618
+ /***/ function(module, exports, __webpack_require__) {
3619
+
3620
+ /**
3621
+ * The base implementation of `_.find`, `_.findLast`, `_.findKey`, and `_.findLastKey`,
3622
+ * without support for callback shorthands and `this` binding, which iterates
3623
+ * over `collection` using the provided `eachFunc`.
3624
+ *
3625
+ * @private
3626
+ * @param {Array|Object|string} collection The collection to search.
3627
+ * @param {Function} predicate The function invoked per iteration.
3628
+ * @param {Function} eachFunc The function to iterate over `collection`.
3629
+ * @param {boolean} [retKey] Specify returning the key of the found element
3630
+ * instead of the element itself.
3631
+ * @returns {*} Returns the found element or its key, else `undefined`.
3632
+ */
3633
+ function baseFind(collection, predicate, eachFunc, retKey) {
3634
+ var result;
3635
+ eachFunc(collection, function(value, key, collection) {
3636
+ if (predicate(value, key, collection)) {
3637
+ result = retKey ? key : value;
3638
+ return false;
3639
+ }
3640
+ });
3641
+ return result;
3642
+ }
2974
3643
 
3644
+ module.exports = baseFind;
3645
+
3646
+
3647
+ /***/ },
3648
+ /* 73 */
3649
+ /***/ function(module, exports, __webpack_require__) {
3650
+
2975
3651
  /**
2976
- * Initializes an object clone based on its `toStringTag`.
2977
- *
2978
- * **Note:** This function only supports cloning values with tags of
2979
- * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
2980
- *
3652
+ * Gets the index at which the first occurrence of `NaN` is found in `array`.
2981
3653
  *
2982
3654
  * @private
2983
- * @param {Object} object The object to clone.
2984
- * @param {string} tag The `toStringTag` of the object to clone.
2985
- * @param {boolean} [isDeep] Specify a deep clone.
2986
- * @returns {Object} Returns the initialized clone.
3655
+ * @param {Array} array The array to search.
3656
+ * @param {number} fromIndex The index to search from.
3657
+ * @param {boolean} [fromRight] Specify iterating from right to left.
3658
+ * @returns {number} Returns the index of the matched `NaN`, else `-1`.
2987
3659
  */
2988
- function initCloneByTag(object, tag, isDeep) {
2989
- var Ctor = object.constructor;
2990
- switch (tag) {
2991
- case arrayBufferTag:
2992
- return bufferClone(object);
2993
-
2994
- case boolTag:
2995
- case dateTag:
2996
- return new Ctor(+object);
2997
-
2998
- case float32Tag: case float64Tag:
2999
- case int8Tag: case int16Tag: case int32Tag:
3000
- case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
3001
- var buffer = object.buffer;
3002
- return new Ctor(isDeep ? bufferClone(buffer) : buffer, object.byteOffset, object.length);
3003
-
3004
- case numberTag:
3005
- case stringTag:
3006
- return new Ctor(object);
3660
+ function indexOfNaN(array, fromIndex, fromRight) {
3661
+ var length = array.length,
3662
+ index = fromIndex + (fromRight ? 0 : -1);
3007
3663
 
3008
- case regexpTag:
3009
- var result = new Ctor(object.source, reFlags.exec(object));
3010
- result.lastIndex = object.lastIndex;
3664
+ while ((fromRight ? index-- : ++index < length)) {
3665
+ var other = array[index];
3666
+ if (other !== other) {
3667
+ return index;
3668
+ }
3011
3669
  }
3012
- return result;
3670
+ return -1;
3013
3671
  }
3014
3672
 
3015
- module.exports = initCloneByTag;
3673
+ module.exports = indexOfNaN;
3016
3674
 
3017
3675
 
3018
3676
  /***/ },
3019
- /* 56 */
3677
+ /* 74 */
3020
3678
  /***/ function(module, exports, __webpack_require__) {
3021
3679
 
3680
+ /* WEBPACK VAR INJECTION */(function(global) {var cachePush = __webpack_require__(91),
3681
+ isNative = __webpack_require__(38);
3682
+
3683
+ /** Native method references. */
3684
+ var Set = isNative(Set = global.Set) && Set;
3685
+
3686
+ /* Native method references for those with the same name as other `lodash` methods. */
3687
+ var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate;
3688
+
3022
3689
  /**
3023
- * Initializes an object clone.
3690
+ *
3691
+ * Creates a cache object to store unique values.
3024
3692
  *
3025
3693
  * @private
3026
- * @param {Object} object The object to clone.
3027
- * @returns {Object} Returns the initialized clone.
3694
+ * @param {Array} [values] The values to cache.
3028
3695
  */
3029
- function initCloneObject(object) {
3030
- var Ctor = object.constructor;
3031
- if (!(typeof Ctor == 'function' && Ctor instanceof Ctor)) {
3032
- Ctor = Object;
3696
+ function SetCache(values) {
3697
+ var length = values ? values.length : 0;
3698
+
3699
+ this.data = { 'hash': nativeCreate(null), 'set': new Set };
3700
+ while (length--) {
3701
+ this.push(values[length]);
3033
3702
  }
3034
- return new Ctor;
3035
3703
  }
3036
3704
 
3037
- module.exports = initCloneObject;
3038
-
3705
+ // Add functions to the `Set` cache.
3706
+ SetCache.prototype.push = cachePush;
3707
+
3708
+ module.exports = SetCache;
3709
+
3710
+ /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
3039
3711
 
3040
3712
  /***/ },
3041
- /* 57 */
3713
+ /* 75 */
3042
3714
  /***/ function(module, exports, __webpack_require__) {
3043
3715
 
3044
3716
  /**
3045
- * This method returns the first argument provided to it.
3717
+ * Creates a function that returns `value`.
3046
3718
  *
3047
3719
  * @static
3048
3720
  * @memberOf _
3049
3721
  * @category Utility
3050
- * @param {*} value Any value.
3051
- * @returns {*} Returns `value`.
3722
+ * @param {*} value The value to return from the new function.
3723
+ * @returns {Function} Returns the new function.
3052
3724
  * @example
3053
3725
  *
3054
3726
  * var object = { 'user': 'fred' };
3727
+ * var getter = _.constant(object);
3055
3728
  *
3056
- * _.identity(object) === object;
3729
+ * getter() === object;
3057
3730
  * // => true
3058
3731
  */
3059
- function identity(value) {
3060
- return value;
3732
+ function constant(value) {
3733
+ return function() {
3734
+ return value;
3735
+ };
3061
3736
  }
3062
3737
 
3063
- module.exports = identity;
3738
+ module.exports = constant;
3064
3739
 
3065
3740
 
3066
3741
  /***/ },
3067
- /* 58 */
3742
+ /* 76 */
3068
3743
  /***/ function(module, exports, __webpack_require__) {
3069
3744
 
3070
- /**
3071
- * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)
3072
- * of an array-like value.
3073
- */
3074
- var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;
3745
+ var baseIsEqual = __webpack_require__(80);
3075
3746
 
3076
3747
  /**
3077
- * Checks if `value` is a valid array-like index.
3748
+ * The base implementation of `_.isMatch` without support for callback
3749
+ * shorthands and `this` binding.
3078
3750
  *
3079
3751
  * @private
3080
- * @param {*} value The value to check.
3081
- * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
3082
- * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
3752
+ * @param {Object} object The object to inspect.
3753
+ * @param {Array} props The source property names to match.
3754
+ * @param {Array} values The source values to match.
3755
+ * @param {Array} strictCompareFlags Strict comparison flags for source values.
3756
+ * @param {Function} [customizer] The function to customize comparing objects.
3757
+ * @returns {boolean} Returns `true` if `object` is a match, else `false`.
3083
3758
  */
3084
- function isIndex(value, length) {
3085
- value = +value;
3086
- length = length == null ? MAX_SAFE_INTEGER : length;
3087
- return value > -1 && value % 1 == 0 && value < length;
3088
- }
3089
-
3090
- module.exports = isIndex;
3091
-
3092
-
3093
- /***/ },
3094
- /* 59 */
3095
- /***/ function(module, exports, __webpack_require__) {
3096
-
3097
- var baseToString = __webpack_require__(73);
3759
+ function baseIsMatch(object, props, values, strictCompareFlags, customizer) {
3760
+ var index = -1,
3761
+ length = props.length,
3762
+ noCustomizer = !customizer;
3098
3763
 
3099
- /**
3100
- * Used to match `RegExp` [special characters](http://www.regular-expressions.info/characters.html#special).
3101
- * In addition to special characters the forward slash is escaped to allow for
3102
- * easier `eval` use and `Function` compilation.
3103
- */
3104
- var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g,
3105
- reHasRegExpChars = RegExp(reRegExpChars.source);
3764
+ while (++index < length) {
3765
+ if ((noCustomizer && strictCompareFlags[index])
3766
+ ? values[index] !== object[props[index]]
3767
+ : !(props[index] in object)
3768
+ ) {
3769
+ return false;
3770
+ }
3771
+ }
3772
+ index = -1;
3773
+ while (++index < length) {
3774
+ var key = props[index],
3775
+ objValue = object[key],
3776
+ srcValue = values[index];
3106
3777
 
3107
- /**
3108
- * Escapes the `RegExp` special characters "\", "/", "^", "$", ".", "|", "?",
3109
- * "*", "+", "(", ")", "[", "]", "{" and "}" in `string`.
3110
- *
3111
- * @static
3112
- * @memberOf _
3113
- * @category String
3114
- * @param {string} [string=''] The string to escape.
3115
- * @returns {string} Returns the escaped string.
3116
- * @example
3117
- *
3118
- * _.escapeRegExp('[lodash](https://lodash.com/)');
3119
- * // => '\[lodash\]\(https:\/\/lodash\.com\/\)'
3120
- */
3121
- function escapeRegExp(string) {
3122
- string = baseToString(string);
3123
- return (string && reHasRegExpChars.test(string))
3124
- ? string.replace(reRegExpChars, '\\$&')
3125
- : string;
3778
+ if (noCustomizer && strictCompareFlags[index]) {
3779
+ var result = objValue !== undefined || (key in object);
3780
+ } else {
3781
+ result = customizer ? customizer(objValue, srcValue, key) : undefined;
3782
+ if (result === undefined) {
3783
+ result = baseIsEqual(srcValue, objValue, customizer, true);
3784
+ }
3785
+ }
3786
+ if (!result) {
3787
+ return false;
3788
+ }
3789
+ }
3790
+ return true;
3126
3791
  }
3127
3792
 
3128
- module.exports = escapeRegExp;
3793
+ module.exports = baseIsMatch;
3129
3794
 
3130
3795
 
3131
3796
  /***/ },
3132
- /* 60 */
3797
+ /* 77 */
3133
3798
  /***/ function(module, exports, __webpack_require__) {
3134
3799
 
3135
- var createBaseFor = __webpack_require__(74);
3800
+ var isObject = __webpack_require__(25);
3136
3801
 
3137
3802
  /**
3138
- * The base implementation of `baseForIn` and `baseForOwn` which iterates
3139
- * over `object` properties returned by `keysFunc` invoking `iteratee` for
3140
- * each property. Iterator functions may exit iteration early by explicitly
3141
- * returning `false`.
3803
+ * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
3142
3804
  *
3143
3805
  * @private
3144
- * @param {Object} object The object to iterate over.
3145
- * @param {Function} iteratee The function invoked per iteration.
3146
- * @param {Function} keysFunc The function to get the keys of `object`.
3147
- * @returns {Object} Returns `object`.
3806
+ * @param {*} value The value to check.
3807
+ * @returns {boolean} Returns `true` if `value` if suitable for strict
3808
+ * equality comparisons, else `false`.
3148
3809
  */
3149
- var baseFor = createBaseFor();
3810
+ function isStrictComparable(value) {
3811
+ return value === value && !isObject(value);
3812
+ }
3150
3813
 
3151
- module.exports = baseFor;
3814
+ module.exports = isStrictComparable;
3152
3815
 
3153
3816
 
3154
3817
  /***/ },
3155
- /* 61 */
3818
+ /* 78 */
3156
3819
  /***/ function(module, exports, __webpack_require__) {
3157
3820
 
3158
- var baseIsMatch = __webpack_require__(75),
3159
- constant = __webpack_require__(69),
3160
- isStrictComparable = __webpack_require__(76),
3161
- keys = __webpack_require__(17),
3162
- toObject = __webpack_require__(77);
3821
+ var isObject = __webpack_require__(25);
3163
3822
 
3164
3823
  /**
3165
- * The base implementation of `_.matches` which does not clone `source`.
3824
+ * Converts `value` to an object if it is not one.
3166
3825
  *
3167
3826
  * @private
3168
- * @param {Object} source The object of property values to match.
3169
- * @returns {Function} Returns the new function.
3827
+ * @param {*} value The value to process.
3828
+ * @returns {Object} Returns the object.
3170
3829
  */
3171
- function baseMatches(source) {
3172
- var props = keys(source),
3173
- length = props.length;
3174
-
3175
- if (!length) {
3176
- return constant(true);
3177
- }
3178
- if (length == 1) {
3179
- var key = props[0],
3180
- value = source[key];
3181
-
3182
- if (isStrictComparable(value)) {
3183
- return function(object) {
3184
- return object != null && object[key] === value &&
3185
- (typeof value != 'undefined' || (key in toObject(object)));
3186
- };
3187
- }
3188
- }
3189
- var values = Array(length),
3190
- strictCompareFlags = Array(length);
3191
-
3192
- while (length--) {
3193
- value = source[props[length]];
3194
- values[length] = value;
3195
- strictCompareFlags[length] = isStrictComparable(value);
3196
- }
3197
- return function(object) {
3198
- return object != null && baseIsMatch(toObject(object), props, values, strictCompareFlags);
3199
- };
3830
+ function toObject(value) {
3831
+ return isObject(value) ? value : Object(value);
3200
3832
  }
3201
3833
 
3202
- module.exports = baseMatches;
3834
+ module.exports = toObject;
3203
3835
 
3204
3836
 
3205
3837
  /***/ },
3206
- /* 62 */
3838
+ /* 79 */
3207
3839
  /***/ function(module, exports, __webpack_require__) {
3208
3840
 
3209
- var baseIsEqual = __webpack_require__(78),
3210
- isStrictComparable = __webpack_require__(76),
3211
- toObject = __webpack_require__(77);
3841
+ var toObject = __webpack_require__(78);
3212
3842
 
3213
3843
  /**
3214
- * The base implementation of `_.matchesProperty` which does not coerce `key`
3215
- * to a string.
3844
+ * The base implementation of `get` without support for string paths
3845
+ * and default values.
3216
3846
  *
3217
3847
  * @private
3218
- * @param {string} key The key of the property to get.
3219
- * @param {*} value The value to compare.
3220
- * @returns {Function} Returns the new function.
3848
+ * @param {Object} object The object to query.
3849
+ * @param {Array} path The path of the property to get.
3850
+ * @param {string} [pathKey] The key representation of path.
3851
+ * @returns {*} Returns the resolved value.
3221
3852
  */
3222
- function baseMatchesProperty(key, value) {
3223
- if (isStrictComparable(value)) {
3224
- return function(object) {
3225
- return object != null && object[key] === value &&
3226
- (typeof value != 'undefined' || (key in toObject(object)));
3227
- };
3853
+ function baseGet(object, path, pathKey) {
3854
+ if (object == null) {
3855
+ return;
3228
3856
  }
3229
- return function(object) {
3230
- return object != null && baseIsEqual(value, object[key], null, true);
3231
- };
3857
+ if (pathKey !== undefined && pathKey in toObject(object)) {
3858
+ path = [pathKey];
3859
+ }
3860
+ var index = -1,
3861
+ length = path.length;
3862
+
3863
+ while (object != null && ++index < length) {
3864
+ object = object[path[index]];
3865
+ }
3866
+ return (index && index == length) ? object : undefined;
3232
3867
  }
3233
3868
 
3234
- module.exports = baseMatchesProperty;
3869
+ module.exports = baseGet;
3235
3870
 
3236
3871
 
3237
3872
  /***/ },
3238
- /* 63 */
3873
+ /* 80 */
3239
3874
  /***/ function(module, exports, __webpack_require__) {
3240
3875
 
3876
+ var baseIsEqualDeep = __webpack_require__(92);
3877
+
3241
3878
  /**
3242
- * The base implementation of `_.property` which does not coerce `key` to a string.
3879
+ * The base implementation of `_.isEqual` without support for `this` binding
3880
+ * `customizer` functions.
3243
3881
  *
3244
3882
  * @private
3245
- * @param {string} key The key of the property to get.
3246
- * @returns {Function} Returns the new function.
3883
+ * @param {*} value The value to compare.
3884
+ * @param {*} other The other value to compare.
3885
+ * @param {Function} [customizer] The function to customize comparing values.
3886
+ * @param {boolean} [isLoose] Specify performing partial comparisons.
3887
+ * @param {Array} [stackA] Tracks traversed `value` objects.
3888
+ * @param {Array} [stackB] Tracks traversed `other` objects.
3889
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
3247
3890
  */
3248
- function baseProperty(key) {
3249
- return function(object) {
3250
- return object == null ? undefined : object[key];
3251
- };
3891
+ function baseIsEqual(value, other, customizer, isLoose, stackA, stackB) {
3892
+ // Exit early for identical values.
3893
+ if (value === other) {
3894
+ return true;
3895
+ }
3896
+ var valType = typeof value,
3897
+ othType = typeof other;
3898
+
3899
+ // Exit early for unlike primitive values.
3900
+ if ((valType != 'function' && valType != 'object' && othType != 'function' && othType != 'object') ||
3901
+ value == null || other == null) {
3902
+ // Return `false` unless both values are `NaN`.
3903
+ return value !== value && other !== other;
3904
+ }
3905
+ return baseIsEqualDeep(value, other, baseIsEqual, customizer, isLoose, stackA, stackB);
3252
3906
  }
3253
3907
 
3254
- module.exports = baseProperty;
3908
+ module.exports = baseIsEqual;
3255
3909
 
3256
3910
 
3257
3911
  /***/ },
3258
- /* 64 */
3912
+ /* 81 */
3259
3913
  /***/ function(module, exports, __webpack_require__) {
3260
3914
 
3261
- var isArguments = __webpack_require__(43),
3262
- isArray = __webpack_require__(44),
3263
- isIndex = __webpack_require__(58),
3264
- isLength = __webpack_require__(35),
3265
- isObject = __webpack_require__(25),
3266
- support = __webpack_require__(65);
3267
-
3268
- /** Used for native method references. */
3269
- var objectProto = Object.prototype;
3270
-
3271
- /** Used to check objects for own properties. */
3272
- var hasOwnProperty = objectProto.hasOwnProperty;
3273
-
3274
3915
  /**
3275
- * Creates an array of the own and inherited enumerable property names of `object`.
3276
- *
3277
- * **Note:** Non-object values are coerced to objects.
3916
+ * The base implementation of `_.slice` without an iteratee call guard.
3278
3917
  *
3279
- * @static
3280
- * @memberOf _
3281
- * @category Object
3282
- * @param {Object} object The object to inspect.
3283
- * @returns {Array} Returns the array of property names.
3284
- * @example
3285
- *
3286
- * function Foo() {
3287
- * this.a = 1;
3288
- * this.b = 2;
3289
- * }
3290
- *
3291
- * Foo.prototype.c = 3;
3292
- *
3293
- * _.keysIn(new Foo);
3294
- * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
3918
+ * @private
3919
+ * @param {Array} array The array to slice.
3920
+ * @param {number} [start=0] The start position.
3921
+ * @param {number} [end=array.length] The end position.
3922
+ * @returns {Array} Returns the slice of `array`.
3295
3923
  */
3296
- function keysIn(object) {
3297
- if (object == null) {
3298
- return [];
3924
+ function baseSlice(array, start, end) {
3925
+ var index = -1,
3926
+ length = array.length;
3927
+
3928
+ start = start == null ? 0 : (+start || 0);
3929
+ if (start < 0) {
3930
+ start = -start > length ? 0 : (length + start);
3299
3931
  }
3300
- if (!isObject(object)) {
3301
- object = Object(object);
3932
+ end = (end === undefined || end > length) ? length : (+end || 0);
3933
+ if (end < 0) {
3934
+ end += length;
3302
3935
  }
3303
- var length = object.length;
3304
- length = (length && isLength(length) &&
3305
- (isArray(object) || (support.nonEnumArgs && isArguments(object))) && length) || 0;
3306
-
3307
- var Ctor = object.constructor,
3308
- index = -1,
3309
- isProto = typeof Ctor == 'function' && Ctor.prototype === object,
3310
- result = Array(length),
3311
- skipIndexes = length > 0;
3936
+ length = start > end ? 0 : ((end - start) >>> 0);
3937
+ start >>>= 0;
3312
3938
 
3939
+ var result = Array(length);
3313
3940
  while (++index < length) {
3314
- result[index] = (index + '');
3315
- }
3316
- for (var key in object) {
3317
- if (!(skipIndexes && isIndex(key, length)) &&
3318
- !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
3319
- result.push(key);
3320
- }
3941
+ result[index] = array[index + start];
3321
3942
  }
3322
3943
  return result;
3323
3944
  }
3324
3945
 
3325
- module.exports = keysIn;
3946
+ module.exports = baseSlice;
3326
3947
 
3327
3948
 
3328
3949
  /***/ },
3329
- /* 65 */
3950
+ /* 82 */
3330
3951
  /***/ function(module, exports, __webpack_require__) {
3331
3952
 
3332
- /* WEBPACK VAR INJECTION */(function(global) {/** Used for native method references. */
3333
- var objectProto = Object.prototype;
3334
-
3335
- /** Used to detect DOM support. */
3336
- var document = (document = global.window) && document.document;
3953
+ var isArray = __webpack_require__(36),
3954
+ toObject = __webpack_require__(78);
3337
3955
 
3338
- /** Native method references. */
3339
- var propertyIsEnumerable = objectProto.propertyIsEnumerable;
3956
+ /** Used to match property names within property paths. */
3957
+ var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/,
3958
+ reIsPlainProp = /^\w*$/;
3340
3959
 
3341
3960
  /**
3342
- * An object environment feature flags.
3961
+ * Checks if `value` is a property name and not a property path.
3343
3962
  *
3344
- * @static
3345
- * @memberOf _
3346
- * @type Object
3963
+ * @private
3964
+ * @param {*} value The value to check.
3965
+ * @param {Object} [object] The object to query keys on.
3966
+ * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
3347
3967
  */
3348
- var support = {};
3349
-
3350
- (function(x) {
3351
-
3352
- /**
3353
- * Detect if functions can be decompiled by `Function#toString`
3354
- * (all but Firefox OS certified apps, older Opera mobile browsers, and
3355
- * the PlayStation 3; forced `false` for Windows 8 apps).
3356
- *
3357
- * @memberOf _.support
3358
- * @type boolean
3359
- */
3360
- support.funcDecomp = /\bthis\b/.test(function() { return this; });
3361
-
3362
- /**
3363
- * Detect if `Function#name` is supported (all but IE).
3364
- *
3365
- * @memberOf _.support
3366
- * @type boolean
3367
- */
3368
- support.funcNames = typeof Function.name == 'string';
3369
-
3370
- /**
3371
- * Detect if the DOM is supported.
3372
- *
3373
- * @memberOf _.support
3374
- * @type boolean
3375
- */
3376
- try {
3377
- support.dom = document.createDocumentFragment().nodeType === 11;
3378
- } catch(e) {
3379
- support.dom = false;
3968
+ function isKey(value, object) {
3969
+ var type = typeof value;
3970
+ if ((type == 'string' && reIsPlainProp.test(value)) || type == 'number') {
3971
+ return true;
3380
3972
  }
3381
-
3382
- /**
3383
- * Detect if `arguments` object indexes are non-enumerable.
3384
- *
3385
- * In Firefox < 4, IE < 9, PhantomJS, and Safari < 5.1 `arguments` object
3386
- * indexes are non-enumerable. Chrome < 25 and Node.js < 0.11.0 treat
3387
- * `arguments` object indexes as non-enumerable and fail `hasOwnProperty`
3388
- * checks for indexes that exceed their function's formal parameters with
3389
- * associated values of `0`.
3390
- *
3391
- * @memberOf _.support
3392
- * @type boolean
3393
- */
3394
- try {
3395
- support.nonEnumArgs = !propertyIsEnumerable.call(arguments, 1);
3396
- } catch(e) {
3397
- support.nonEnumArgs = true;
3973
+ if (isArray(value)) {
3974
+ return false;
3398
3975
  }
3399
- }(0, 0));
3400
-
3401
- module.exports = support;
3976
+ var result = !reIsDeepProp.test(value);
3977
+ return result || (object != null && value in toObject(object));
3978
+ }
3402
3979
 
3403
- /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
3980
+ module.exports = isKey;
3981
+
3404
3982
 
3405
3983
  /***/ },
3406
- /* 66 */
3984
+ /* 83 */
3407
3985
  /***/ function(module, exports, __webpack_require__) {
3408
3986
 
3409
3987
  /**
3410
- * The base implementation of `_.find`, `_.findLast`, `_.findKey`, and `_.findLastKey`,
3411
- * without support for callback shorthands and `this` binding, which iterates
3412
- * over `collection` using the provided `eachFunc`.
3988
+ * Gets the last element of `array`.
3413
3989
  *
3414
- * @private
3415
- * @param {Array|Object|string} collection The collection to search.
3416
- * @param {Function} predicate The function invoked per iteration.
3417
- * @param {Function} eachFunc The function to iterate over `collection`.
3418
- * @param {boolean} [retKey] Specify returning the key of the found element
3419
- * instead of the element itself.
3420
- * @returns {*} Returns the found element or its key, else `undefined`.
3990
+ * @static
3991
+ * @memberOf _
3992
+ * @category Array
3993
+ * @param {Array} array The array to query.
3994
+ * @returns {*} Returns the last element of `array`.
3995
+ * @example
3996
+ *
3997
+ * _.last([1, 2, 3]);
3998
+ * // => 3
3421
3999
  */
3422
- function baseFind(collection, predicate, eachFunc, retKey) {
3423
- var result;
3424
- eachFunc(collection, function(value, key, collection) {
3425
- if (predicate(value, key, collection)) {
3426
- result = retKey ? key : value;
3427
- return false;
3428
- }
3429
- });
3430
- return result;
4000
+ function last(array) {
4001
+ var length = array ? array.length : 0;
4002
+ return length ? array[length - 1] : undefined;
3431
4003
  }
3432
4004
 
3433
- module.exports = baseFind;
4005
+ module.exports = last;
3434
4006
 
3435
4007
 
3436
4008
  /***/ },
3437
- /* 67 */
4009
+ /* 84 */
3438
4010
  /***/ function(module, exports, __webpack_require__) {
3439
4011
 
4012
+ var baseToString = __webpack_require__(86),
4013
+ isArray = __webpack_require__(36);
4014
+
4015
+ /** Used to match property names within property paths. */
4016
+ var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g;
4017
+
4018
+ /** Used to match backslashes in property paths. */
4019
+ var reEscapeChar = /\\(\\)?/g;
4020
+
3440
4021
  /**
3441
- * Gets the index at which the first occurrence of `NaN` is found in `array`.
4022
+ * Converts `value` to property path array if it is not one.
3442
4023
  *
3443
4024
  * @private
3444
- * @param {Array} array The array to search.
3445
- * @param {number} fromIndex The index to search from.
3446
- * @param {boolean} [fromRight] Specify iterating from right to left.
3447
- * @returns {number} Returns the index of the matched `NaN`, else `-1`.
4025
+ * @param {*} value The value to process.
4026
+ * @returns {Array} Returns the property path array.
3448
4027
  */
3449
- function indexOfNaN(array, fromIndex, fromRight) {
3450
- var length = array.length,
3451
- index = fromIndex + (fromRight ? 0 : -1);
3452
-
3453
- while ((fromRight ? index-- : ++index < length)) {
3454
- var other = array[index];
3455
- if (other !== other) {
3456
- return index;
3457
- }
4028
+ function toPath(value) {
4029
+ if (isArray(value)) {
4030
+ return value;
3458
4031
  }
3459
- return -1;
4032
+ var result = [];
4033
+ baseToString(value).replace(rePropName, function(match, number, quote, string) {
4034
+ result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));
4035
+ });
4036
+ return result;
3460
4037
  }
3461
4038
 
3462
- module.exports = indexOfNaN;
4039
+ module.exports = toPath;
3463
4040
 
3464
4041
 
3465
4042
  /***/ },
3466
- /* 68 */
4043
+ /* 85 */
3467
4044
  /***/ function(module, exports, __webpack_require__) {
3468
4045
 
3469
- /* WEBPACK VAR INJECTION */(function(global) {var cachePush = __webpack_require__(79),
3470
- isNative = __webpack_require__(30);
3471
-
3472
- /** Native method references. */
3473
- var Set = isNative(Set = global.Set) && Set;
3474
-
3475
- /* Native method references for those with the same name as other `lodash` methods. */
3476
- var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate;
4046
+ var baseGet = __webpack_require__(79),
4047
+ toPath = __webpack_require__(84);
3477
4048
 
3478
4049
  /**
3479
- *
3480
- * Creates a cache object to store unique values.
4050
+ * A specialized version of `baseProperty` which supports deep paths.
3481
4051
  *
3482
4052
  * @private
3483
- * @param {Array} [values] The values to cache.
4053
+ * @param {Array|string} path The path of the property to get.
4054
+ * @returns {Function} Returns the new function.
3484
4055
  */
3485
- function SetCache(values) {
3486
- var length = values ? values.length : 0;
3487
-
3488
- this.data = { 'hash': nativeCreate(null), 'set': new Set };
3489
- while (length--) {
3490
- this.push(values[length]);
3491
- }
3492
- }
3493
-
3494
- // Add functions to the `Set` cache.
3495
- SetCache.prototype.push = cachePush;
3496
-
3497
- module.exports = SetCache;
4056
+ function basePropertyDeep(path) {
4057
+ var pathKey = (path + '');
4058
+ path = toPath(path);
4059
+ return function(object) {
4060
+ return baseGet(object, path, pathKey);
4061
+ };
4062
+ }
3498
4063
 
3499
- /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
4064
+ module.exports = basePropertyDeep;
4065
+
3500
4066
 
3501
4067
  /***/ },
3502
- /* 69 */
4068
+ /* 86 */
3503
4069
  /***/ function(module, exports, __webpack_require__) {
3504
4070
 
3505
4071
  /**
3506
- * Creates a function that returns `value`.
3507
- *
3508
- * @static
3509
- * @memberOf _
3510
- * @category Utility
3511
- * @param {*} value The value to return from the new function.
3512
- * @returns {Function} Returns the new function.
3513
- * @example
3514
- *
3515
- * var object = { 'user': 'fred' };
3516
- * var getter = _.constant(object);
4072
+ * Converts `value` to a string if it is not one. An empty string is returned
4073
+ * for `null` or `undefined` values.
3517
4074
  *
3518
- * getter() === object;
3519
- * // => true
4075
+ * @private
4076
+ * @param {*} value The value to process.
4077
+ * @returns {string} Returns the string.
3520
4078
  */
3521
- function constant(value) {
3522
- return function() {
4079
+ function baseToString(value) {
4080
+ if (typeof value == 'string') {
3523
4081
  return value;
3524
- };
4082
+ }
4083
+ return value == null ? '' : (value + '');
3525
4084
  }
3526
4085
 
3527
- module.exports = constant;
4086
+ module.exports = baseToString;
3528
4087
 
3529
4088
 
3530
4089
  /***/ },
3531
- /* 70 */
4090
+ /* 87 */
3532
4091
  /***/ function(module, exports, __webpack_require__) {
3533
4092
 
3534
- var isLength = __webpack_require__(35),
3535
- toObject = __webpack_require__(77);
3536
-
3537
4093
  /**
3538
- * Creates a `baseEach` or `baseEachRight` function.
4094
+ * Copies properties of `source` to `object`.
3539
4095
  *
3540
4096
  * @private
3541
- * @param {Function} eachFunc The function to iterate over a collection.
3542
- * @param {boolean} [fromRight] Specify iterating from right to left.
3543
- * @returns {Function} Returns the new base function.
4097
+ * @param {Object} source The object to copy properties from.
4098
+ * @param {Array} props The property names to copy.
4099
+ * @param {Object} [object={}] The object to copy properties to.
4100
+ * @returns {Object} Returns `object`.
3544
4101
  */
3545
- function createBaseEach(eachFunc, fromRight) {
3546
- return function(collection, iteratee) {
3547
- var length = collection ? collection.length : 0;
3548
- if (!isLength(length)) {
3549
- return eachFunc(collection, iteratee);
3550
- }
3551
- var index = fromRight ? length : -1,
3552
- iterable = toObject(collection);
4102
+ function baseCopy(source, props, object) {
4103
+ object || (object = {});
3553
4104
 
3554
- while ((fromRight ? index-- : ++index < length)) {
3555
- if (iteratee(iterable[index], index, iterable) === false) {
3556
- break;
3557
- }
3558
- }
3559
- return collection;
3560
- };
4105
+ var index = -1,
4106
+ length = props.length;
4107
+
4108
+ while (++index < length) {
4109
+ var key = props[index];
4110
+ object[key] = source[key];
4111
+ }
4112
+ return object;
3561
4113
  }
3562
4114
 
3563
- module.exports = createBaseEach;
4115
+ module.exports = baseCopy;
3564
4116
 
3565
4117
 
3566
4118
  /***/ },
3567
- /* 71 */
4119
+ /* 88 */
3568
4120
  /***/ function(module, exports, __webpack_require__) {
3569
4121
 
4122
+ var constant = __webpack_require__(75),
4123
+ isNative = __webpack_require__(38),
4124
+ toObject = __webpack_require__(78);
4125
+
4126
+ /** Native method references. */
4127
+ var getOwnPropertySymbols = isNative(getOwnPropertySymbols = Object.getOwnPropertySymbols) && getOwnPropertySymbols;
4128
+
3570
4129
  /**
3571
- * The base implementation of `_.reduce` and `_.reduceRight` without support
3572
- * for callback shorthands and `this` binding, which iterates over `collection`
3573
- * using the provided `eachFunc`.
4130
+ * Creates an array of the own symbols of `object`.
3574
4131
  *
3575
4132
  * @private
3576
- * @param {Array|Object|string} collection The collection to iterate over.
3577
- * @param {Function} iteratee The function invoked per iteration.
3578
- * @param {*} accumulator The initial value.
3579
- * @param {boolean} initFromCollection Specify using the first or last element
3580
- * of `collection` as the initial value.
3581
- * @param {Function} eachFunc The function to iterate over `collection`.
3582
- * @returns {*} Returns the accumulated value.
4133
+ * @param {Object} object The object to query.
4134
+ * @returns {Array} Returns the array of symbols.
3583
4135
  */
3584
- function baseReduce(collection, iteratee, accumulator, initFromCollection, eachFunc) {
3585
- eachFunc(collection, function(value, index, collection) {
3586
- accumulator = initFromCollection
3587
- ? (initFromCollection = false, value)
3588
- : iteratee(accumulator, value, index, collection);
3589
- });
3590
- return accumulator;
3591
- }
4136
+ var getSymbols = !getOwnPropertySymbols ? constant([]) : function(object) {
4137
+ return getOwnPropertySymbols(toObject(object));
4138
+ };
3592
4139
 
3593
- module.exports = baseReduce;
4140
+ module.exports = getSymbols;
3594
4141
 
3595
4142
 
3596
4143
  /***/ },
3597
- /* 72 */
4144
+ /* 89 */
3598
4145
  /***/ function(module, exports, __webpack_require__) {
3599
4146
 
3600
- /* WEBPACK VAR INJECTION */(function(global) {var constant = __webpack_require__(69),
3601
- isNative = __webpack_require__(30);
4147
+ /* WEBPACK VAR INJECTION */(function(global) {var constant = __webpack_require__(75),
4148
+ isNative = __webpack_require__(38);
3602
4149
 
3603
4150
  /** Native method references. */
3604
4151
  var ArrayBuffer = isNative(ArrayBuffer = global.ArrayBuffer) && ArrayBuffer,
@@ -3656,32 +4203,10 @@ return /******/ (function(modules) { // webpackBootstrap
3656
4203
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
3657
4204
 
3658
4205
  /***/ },
3659
- /* 73 */
3660
- /***/ function(module, exports, __webpack_require__) {
3661
-
3662
- /**
3663
- * Converts `value` to a string if it is not one. An empty string is returned
3664
- * for `null` or `undefined` values.
3665
- *
3666
- * @private
3667
- * @param {*} value The value to process.
3668
- * @returns {string} Returns the string.
3669
- */
3670
- function baseToString(value) {
3671
- if (typeof value == 'string') {
3672
- return value;
3673
- }
3674
- return value == null ? '' : (value + '');
3675
- }
3676
-
3677
- module.exports = baseToString;
3678
-
3679
-
3680
- /***/ },
3681
- /* 74 */
4206
+ /* 90 */
3682
4207
  /***/ function(module, exports, __webpack_require__) {
3683
4208
 
3684
- var toObject = __webpack_require__(77);
4209
+ var toObject = __webpack_require__(78);
3685
4210
 
3686
4211
  /**
3687
4212
  * Creates a base function for `_.forIn` or `_.forInRight`.
@@ -3711,143 +4236,7 @@ return /******/ (function(modules) { // webpackBootstrap
3711
4236
 
3712
4237
 
3713
4238
  /***/ },
3714
- /* 75 */
3715
- /***/ function(module, exports, __webpack_require__) {
3716
-
3717
- var baseIsEqual = __webpack_require__(78);
3718
-
3719
- /**
3720
- * The base implementation of `_.isMatch` without support for callback
3721
- * shorthands and `this` binding.
3722
- *
3723
- * @private
3724
- * @param {Object} object The object to inspect.
3725
- * @param {Array} props The source property names to match.
3726
- * @param {Array} values The source values to match.
3727
- * @param {Array} strictCompareFlags Strict comparison flags for source values.
3728
- * @param {Function} [customizer] The function to customize comparing objects.
3729
- * @returns {boolean} Returns `true` if `object` is a match, else `false`.
3730
- */
3731
- function baseIsMatch(object, props, values, strictCompareFlags, customizer) {
3732
- var index = -1,
3733
- length = props.length,
3734
- noCustomizer = !customizer;
3735
-
3736
- while (++index < length) {
3737
- if ((noCustomizer && strictCompareFlags[index])
3738
- ? values[index] !== object[props[index]]
3739
- : !(props[index] in object)
3740
- ) {
3741
- return false;
3742
- }
3743
- }
3744
- index = -1;
3745
- while (++index < length) {
3746
- var key = props[index],
3747
- objValue = object[key],
3748
- srcValue = values[index];
3749
-
3750
- if (noCustomizer && strictCompareFlags[index]) {
3751
- var result = typeof objValue != 'undefined' || (key in object);
3752
- } else {
3753
- result = customizer ? customizer(objValue, srcValue, key) : undefined;
3754
- if (typeof result == 'undefined') {
3755
- result = baseIsEqual(srcValue, objValue, customizer, true);
3756
- }
3757
- }
3758
- if (!result) {
3759
- return false;
3760
- }
3761
- }
3762
- return true;
3763
- }
3764
-
3765
- module.exports = baseIsMatch;
3766
-
3767
-
3768
- /***/ },
3769
- /* 76 */
3770
- /***/ function(module, exports, __webpack_require__) {
3771
-
3772
- var isObject = __webpack_require__(25);
3773
-
3774
- /**
3775
- * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
3776
- *
3777
- * @private
3778
- * @param {*} value The value to check.
3779
- * @returns {boolean} Returns `true` if `value` if suitable for strict
3780
- * equality comparisons, else `false`.
3781
- */
3782
- function isStrictComparable(value) {
3783
- return value === value && (value === 0 ? ((1 / value) > 0) : !isObject(value));
3784
- }
3785
-
3786
- module.exports = isStrictComparable;
3787
-
3788
-
3789
- /***/ },
3790
- /* 77 */
3791
- /***/ function(module, exports, __webpack_require__) {
3792
-
3793
- var isObject = __webpack_require__(25);
3794
-
3795
- /**
3796
- * Converts `value` to an object if it is not one.
3797
- *
3798
- * @private
3799
- * @param {*} value The value to process.
3800
- * @returns {Object} Returns the object.
3801
- */
3802
- function toObject(value) {
3803
- return isObject(value) ? value : Object(value);
3804
- }
3805
-
3806
- module.exports = toObject;
3807
-
3808
-
3809
- /***/ },
3810
- /* 78 */
3811
- /***/ function(module, exports, __webpack_require__) {
3812
-
3813
- var baseIsEqualDeep = __webpack_require__(80);
3814
-
3815
- /**
3816
- * The base implementation of `_.isEqual` without support for `this` binding
3817
- * `customizer` functions.
3818
- *
3819
- * @private
3820
- * @param {*} value The value to compare.
3821
- * @param {*} other The other value to compare.
3822
- * @param {Function} [customizer] The function to customize comparing values.
3823
- * @param {boolean} [isLoose] Specify performing partial comparisons.
3824
- * @param {Array} [stackA] Tracks traversed `value` objects.
3825
- * @param {Array} [stackB] Tracks traversed `other` objects.
3826
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
3827
- */
3828
- function baseIsEqual(value, other, customizer, isLoose, stackA, stackB) {
3829
- // Exit early for identical values.
3830
- if (value === other) {
3831
- // Treat `+0` vs. `-0` as not equal.
3832
- return value !== 0 || (1 / value == 1 / other);
3833
- }
3834
- var valType = typeof value,
3835
- othType = typeof other;
3836
-
3837
- // Exit early for unlike primitive values.
3838
- if ((valType != 'function' && valType != 'object' && othType != 'function' && othType != 'object') ||
3839
- value == null || other == null) {
3840
- // Return `false` unless both values are `NaN`.
3841
- return value !== value && other !== other;
3842
- }
3843
- return baseIsEqualDeep(value, other, baseIsEqual, customizer, isLoose, stackA, stackB);
3844
- }
3845
-
3846
- module.exports = baseIsEqual;
3847
-
3848
-
3849
- /***/ },
3850
- /* 79 */
4239
+ /* 91 */
3851
4240
  /***/ function(module, exports, __webpack_require__) {
3852
4241
 
3853
4242
  var isObject = __webpack_require__(25);
@@ -3873,19 +4262,18 @@ return /******/ (function(modules) { // webpackBootstrap
3873
4262
 
3874
4263
 
3875
4264
  /***/ },
3876
- /* 80 */
4265
+ /* 92 */
3877
4266
  /***/ function(module, exports, __webpack_require__) {
3878
4267
 
3879
- var equalArrays = __webpack_require__(81),
3880
- equalByTag = __webpack_require__(82),
3881
- equalObjects = __webpack_require__(83),
3882
- isArray = __webpack_require__(44),
3883
- isTypedArray = __webpack_require__(84);
4268
+ var equalArrays = __webpack_require__(93),
4269
+ equalByTag = __webpack_require__(94),
4270
+ equalObjects = __webpack_require__(95),
4271
+ isArray = __webpack_require__(36),
4272
+ isTypedArray = __webpack_require__(96);
3884
4273
 
3885
4274
  /** `Object#toString` result references. */
3886
4275
  var argsTag = '[object Arguments]',
3887
4276
  arrayTag = '[object Array]',
3888
- funcTag = '[object Function]',
3889
4277
  objectTag = '[object Object]';
3890
4278
 
3891
4279
  /** Used for native method references. */
@@ -3937,27 +4325,23 @@ return /******/ (function(modules) { // webpackBootstrap
3937
4325
  othIsArr = isTypedArray(other);
3938
4326
  }
3939
4327
  }
3940
- var objIsObj = (objTag == objectTag || (isLoose && objTag == funcTag)),
3941
- othIsObj = (othTag == objectTag || (isLoose && othTag == funcTag)),
4328
+ var objIsObj = objTag == objectTag,
4329
+ othIsObj = othTag == objectTag,
3942
4330
  isSameTag = objTag == othTag;
3943
4331
 
3944
4332
  if (isSameTag && !(objIsArr || objIsObj)) {
3945
4333
  return equalByTag(object, other, objTag);
3946
4334
  }
3947
- if (isLoose) {
3948
- if (!isSameTag && !(objIsObj && othIsObj)) {
3949
- return false;
3950
- }
3951
- } else {
4335
+ if (!isLoose) {
3952
4336
  var valWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
3953
4337
  othWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
3954
4338
 
3955
4339
  if (valWrapped || othWrapped) {
3956
4340
  return equalFunc(valWrapped ? object.value() : object, othWrapped ? other.value() : other, customizer, isLoose, stackA, stackB);
3957
4341
  }
3958
- if (!isSameTag) {
3959
- return false;
3960
- }
4342
+ }
4343
+ if (!isSameTag) {
4344
+ return false;
3961
4345
  }
3962
4346
  // Assume cyclic values are equal.
3963
4347
  // For more information on detecting circular references see https://es5.github.io/#JO.
@@ -3986,7 +4370,7 @@ return /******/ (function(modules) { // webpackBootstrap
3986
4370
 
3987
4371
 
3988
4372
  /***/ },
3989
- /* 81 */
4373
+ /* 93 */
3990
4374
  /***/ function(module, exports, __webpack_require__) {
3991
4375
 
3992
4376
  /**
@@ -4023,7 +4407,7 @@ return /******/ (function(modules) { // webpackBootstrap
4023
4407
  ? customizer(othValue, arrValue, index)
4024
4408
  : customizer(arrValue, othValue, index);
4025
4409
  }
4026
- if (typeof result == 'undefined') {
4410
+ if (result === undefined) {
4027
4411
  // Recursively compare arrays (susceptible to call stack limits).
4028
4412
  if (isLoose) {
4029
4413
  var othIndex = othLength;
@@ -4046,7 +4430,7 @@ return /******/ (function(modules) { // webpackBootstrap
4046
4430
 
4047
4431
 
4048
4432
  /***/ },
4049
- /* 82 */
4433
+ /* 94 */
4050
4434
  /***/ function(module, exports, __webpack_require__) {
4051
4435
 
4052
4436
  /** `Object#toString` result references. */
@@ -4085,8 +4469,7 @@ return /******/ (function(modules) { // webpackBootstrap
4085
4469
  // Treat `NaN` vs. `NaN` as equal.
4086
4470
  return (object != +object)
4087
4471
  ? other != +other
4088
- // But, treat `-0` vs. `+0` as not equal.
4089
- : (object == 0 ? ((1 / object) == (1 / other)) : object == +other);
4472
+ : object == +other;
4090
4473
 
4091
4474
  case regexpTag:
4092
4475
  case stringTag:
@@ -4101,10 +4484,10 @@ return /******/ (function(modules) { // webpackBootstrap
4101
4484
 
4102
4485
 
4103
4486
  /***/ },
4104
- /* 83 */
4487
+ /* 95 */
4105
4488
  /***/ function(module, exports, __webpack_require__) {
4106
4489
 
4107
- var keys = __webpack_require__(17);
4490
+ var keys = __webpack_require__(21);
4108
4491
 
4109
4492
  /** Used for native method references. */
4110
4493
  var objectProto = Object.prototype;
@@ -4152,7 +4535,7 @@ return /******/ (function(modules) { // webpackBootstrap
4152
4535
  ? customizer(othValue, objValue, key)
4153
4536
  : customizer(objValue, othValue, key);
4154
4537
  }
4155
- if (typeof result == 'undefined') {
4538
+ if (result === undefined) {
4156
4539
  // Recursively compare objects (susceptible to call stack limits).
4157
4540
  result = (objValue && objValue === othValue) || equalFunc(objValue, othValue, customizer, isLoose, stackA, stackB);
4158
4541
  }
@@ -4181,11 +4564,11 @@ return /******/ (function(modules) { // webpackBootstrap
4181
4564
 
4182
4565
 
4183
4566
  /***/ },
4184
- /* 84 */
4567
+ /* 96 */
4185
4568
  /***/ function(module, exports, __webpack_require__) {
4186
4569
 
4187
- var isLength = __webpack_require__(35),
4188
- isObjectLike = __webpack_require__(31);
4570
+ var isLength = __webpack_require__(32),
4571
+ isObjectLike = __webpack_require__(39);
4189
4572
 
4190
4573
  /** `Object#toString` result references. */
4191
4574
  var argsTag = '[object Arguments]',