Compare commits

...

219 Commits

Author SHA1 Message Date
John-David Dalton
941ffee2d3 Bump to v4.14.2. 2016-08-07 21:46:32 -07:00
John-David Dalton
0a71f3372f Rebuild lodash and docs. 2016-08-07 20:56:55 -07:00
John-David Dalton
f817f68487 Update docdown to 0.7.1. 2016-08-07 16:07:06 -07:00
John-David Dalton
826975f392 Add trailing newline to generated docs. 2016-08-07 14:40:28 -07:00
John-David Dalton
5f244d3c31 Remove em elements from code blocks. 2016-08-07 14:14:23 -07:00
John-David Dalton
71be34859f Wrap doc site in raw tags. 2016-08-07 13:55:38 -07:00
John-David Dalton
f9a4705c9c Add node_modules to travis cache. 2016-08-06 23:01:52 -07:00
John-David Dalton
a546842792 Upgrade travis to phantom.js v2. 2016-08-06 20:38:08 -07:00
John-David Dalton
ba86e20179 Fix IE 9 test fails. 2016-08-06 20:08:43 -07:00
John-David Dalton
b32fc6f6e6 Minor function/method nit. [ci skip] 2016-08-06 17:15:54 -07:00
John-David Dalton
1f13a34687 Add nativeKeysIn and cleanup object coercion. 2016-08-06 17:07:45 -07:00
John-David Dalton
f212b4850d Update links to ecma-262/7.0. [ci skip] 2016-08-04 21:54:03 -07:00
John-David Dalton
1b4555afb6 Restructure keys methods. 2016-08-04 21:53:55 -07:00
John-David Dalton
358013c67e Cleanup overArg description. [ci skip] 2016-08-04 09:40:01 -07:00
John-David Dalton
a98667ca05 Remove old JIT and engine bug guards. 2016-08-03 22:06:03 -07:00
John-David Dalton
02e9f4c333 Simplify _.isEmpty. 2016-08-03 21:42:52 -07:00
John-David Dalton
d7951db01b Fix test fail in es builds. 2016-08-03 17:22:20 -07:00
John-David Dalton
21fba2df9f Reduce deps of _.initial and _.tail. 2016-08-03 13:04:10 -07:00
John-David Dalton
a4947139a6 Overwrite primitives in paths of set methods. [closes #2558] 2016-08-03 10:48:22 -07:00
John-David Dalton
c01e7580cd Avoid error in Edge accessing localStorage when loading tests via the file: protocol. 2016-08-03 08:34:40 -07:00
John-David Dalton
8b4f22ed75 Update marky-markdown wrapping fix. 2016-08-02 12:07:06 -07:00
John-David Dalton
669b76bf99 Update marky-markdown. 2016-08-02 00:16:07 -07:00
Greenkeeper
efee02ace7 Update docdown to 0.7.0. 2016-08-01 20:20:31 -07:00
John-David Dalton
cd8adf5611 Minor doc formatting nits. [ci skip] 2016-08-01 17:28:22 -07:00
John-David Dalton
d216106b88 Add private tag to unexposed functions. [ci skip] 2016-08-01 17:25:16 -07:00
John-David Dalton
6dd8fb12ad Ensure fp.nthArg returns a curried function. 2016-08-01 16:55:12 -07:00
John-David Dalton
a4999575d0 Cleanup npm link creation. 2016-08-01 14:39:37 -07:00
John-David Dalton
fcaff8ff28 Update timeout related doc type tags. [closes #2553] [ci skip] 2016-08-01 08:53:30 -07:00
John-David Dalton
cf0b3e3212 Update docdown options. 2016-07-31 22:16:11 -07:00
John-David Dalton
bccb4150fd Add _.every doc note on matching empty collections. [ci skip] 2016-07-31 16:32:55 -07:00
John-David Dalton
9a297b0eb5 Cleanup partial comparison notes. [ci skip] 2016-07-31 16:32:08 -07:00
Dan J Miller
9c4baf7645 Clarify how comparison with empty sources is handled by _.matches, _.isMatch and _.matchesProperty. (#2548) 2016-07-31 00:54:48 -07:00
John-David Dalton
73b2f20509 Use lodash-doc-globals. 2016-07-30 23:48:17 -07:00
John-David Dalton
642690e692 Fix failing amd test. 2016-07-30 12:10:46 -07:00
John-David Dalton
1468c74c36 Make doubley sure Date.now, clearTimeout, and setTimeout are mockable. 2016-07-30 12:10:46 -07:00
Greenkeeper
0bfa1ec2d0 Update lodash to 4.14.1. 2016-07-30 12:10:46 -07:00
John-David Dalton
7c74464d7a Remove prepublish hook because we don’ publish this branch. [ci skip] 2016-07-30 12:10:46 -07:00
John-David Dalton
de051ac1ac Increment package version to enable ci tests. 2016-07-30 12:10:46 -07:00
John-David Dalton
ba0c4c413d Bump to v4.14.1. 2016-07-29 00:40:38 -07:00
John-David Dalton
7e6f5ef4f5 Rebuild lodash and docs. 2016-07-29 00:40:38 -07:00
John-David Dalton
712eeb009f Add missing semicolon. [ci skip] 2016-07-29 00:40:38 -07:00
Johannes Scharlach
b54e28deb7 Prevent failing circular reference detection. (#2543) 2016-07-28 23:12:53 -07:00
John-David Dalton
1f44cebac3 Update coveralls to 2.11.12. 2016-07-28 23:12:53 -07:00
John-David Dalton
9c05e8392b Add stack.delete for other in equalArrays and equalObjects. 2016-07-28 23:12:53 -07:00
John-David Dalton
9a67fec48a Remove stack.delete from baseMergeDeep. 2016-07-28 23:12:53 -07:00
John-David Dalton
1966ac7979 Prevent failed circular reference detection in _.defaultsDeep. [closes #2537] 2016-07-28 23:12:53 -07:00
John-David Dalton
8b624217c5 Cleanup _.debounce and _.throttle docs. [ci skip] 2016-07-28 23:12:53 -07:00
John-David Dalton
40499af9b9 Fix freeModule typo. 2016-07-28 23:12:53 -07:00
John-David Dalton
b3bd359a0d Use stubArray for easier readability. 2016-07-28 23:12:52 -07:00
John-David Dalton
de07e3f874 Add keys methods tests for array-like values. 2016-07-28 23:12:52 -07:00
John-David Dalton
c7e8953b68 Cleanup array-like tests. 2016-07-28 23:12:52 -07:00
John-David Dalton
80e7fe4bf9 Remove freeGlobal prerequisite for freeExports. [closes #2527] 2016-07-28 23:12:52 -07:00
John-David Dalton
2bc199d7fc Move method equivalence notes. [ci skip] 2016-07-28 23:12:52 -07:00
John-David Dalton
9b710d8e81 Use _.toFinite in random and range methods. 2016-07-28 23:12:52 -07:00
John-David Dalton
cc6a0ee98d Minor .gitignore cleanup. 2016-07-28 23:12:52 -07:00
Brad Buchanan
c9492d79a1 Document behavior of _.debounce when wait is 0 (#2530)
Clarify that when `leading` is false a debounced method with `wait=0` will not invoke immediately, but on the next tick (like `setTimeout`), but when `leading` is true the invocation will be immediate.
2016-07-28 23:12:52 -07:00
Brad Buchanan
94c4719c0d Fix missing semicolon (#2529)
I started on a documentation change but `npm run validate` after my initial pull revealed this linting error:

```
> jscs lodash.js

requireSemicolons: Missing semicolon after statement at lodash.js :
  5864 |    function isFlattenable(value) {
  5865 |      return isArray(value) || isArguments(value) ||
  5866 |        !!(spreadableSymbol && value && value[spreadableSymbol])
-----------------------------------------------------------------------^
  5867 |    }
  5868 |
```
2016-07-28 23:12:51 -07:00
John-David Dalton
c253e8d7b8 Ensure paths with consecutive empty brackets or dots are parsed correctly. 2016-07-28 23:12:51 -07:00
John-David Dalton
98f12fb8e1 Update qunitjs to 2.0.1. 2016-07-28 23:12:51 -07:00
John-David Dalton
e05a40bb16 Bump to v4.14.0. 2016-07-28 23:12:51 -07:00
John-David Dalton
c73bb67486 Rebuild lodash and docs. 2016-07-28 23:12:40 -07:00
John-David Dalton
3ad0cbc86d Minor _.includes test cleanup. 2016-07-24 08:38:09 -07:00
John-David Dalton
6402af7db9 Use String#slice instead of String#indexOf for _.endsWith and _.startsWith. 2016-07-24 08:38:09 -07:00
John-David Dalton
6a41a79ded Move switch optimization to negate. 2016-07-23 23:33:30 -07:00
John-David Dalton
fbd9a804a9 Use negate in reject. 2016-07-23 22:11:34 -07:00
John-David Dalton
694e1175a1 Remove arity hint from lazy reject. 2016-07-23 22:11:34 -07:00
John-David Dalton
80dbd4cbfa Add props param to basePickBy. 2016-07-23 22:11:34 -07:00
John-David Dalton
d459f4ac7c Add more arity hints. 2016-07-23 22:11:34 -07:00
John-David Dalton
2c5c4bfbea Remove switch statement from baseRest. 2016-07-22 21:06:15 -07:00
John-David Dalton
a1a68bb5d7 Update async to 2.0.1 and request to 2.74.0. 2016-07-22 18:51:57 -07:00
John-David Dalton
984a10c1b1 Add isConcatSpreadable to flatten methods. 2016-07-22 18:51:57 -07:00
John-David Dalton
3c4c06cb5e Update benchmark.js to 2.1.1. 2016-07-21 08:39:58 -07:00
John-David Dalton
8d28a5ca3f Minor var palcement nit. 2016-07-19 17:58:58 -07:00
John-David Dalton
801c4a56c3 Remove old browser addListener helper. 2016-07-19 17:58:26 -07:00
John-David Dalton
ea000e6ce7 Style nit in sauce helper. 2016-07-19 17:58:26 -07:00
John-David Dalton
6723cdfa07 Update tested firefox version in sauce. 2016-07-18 11:29:43 -07:00
John-David Dalton
2cf10711f5 Remove toc links from site. 2016-07-18 09:01:25 -07:00
John-David Dalton
bde171e947 Update doc options. 2016-07-18 09:01:25 -07:00
John-David Dalton
2696615523 Update docdown to 0.6.1 and jscs to 3.0.7. 2016-07-18 09:01:13 -07:00
John-David Dalton
f98028d1d8 Cleanup doc notes. [ci skip] 2016-07-17 21:33:41 -07:00
John-David Dalton
97475fc365 Remove checkGlobal helper. 2016-07-17 20:10:01 -07:00
John-David Dalton
ea7aa52ea3 Cleanup “coerce arguments” bits of function descriptions. 2016-07-17 20:10:01 -07:00
John-David Dalton
ec4ae5978b Add baseRest. 2016-07-17 20:10:01 -07:00
Samuel Greene
90d73143e1 Don't rearg zipObjectDeep (#2503) 2016-07-17 20:10:01 -07:00
John-David Dalton
249f0cd72c Add _.isEqual test for transitive equivalence. 2016-07-17 20:10:01 -07:00
John-David Dalton
232cc1ab34 Minor comment typo. [ci skip] 2016-07-17 20:10:01 -07:00
Greenkeeper
2cea31cb1b Update async to version 2.0.0 and coveralls to 2.11.11. 2016-07-17 20:10:01 -07:00
John-David Dalton
02c4d60861 Remove thisGlobal use. 2016-07-17 20:10:01 -07:00
John-David Dalton
8c9073308a Add back excused Underscore isSet test for IE11. 2016-07-17 20:10:01 -07:00
John-David Dalton
8cb5455671 Add fp.zipAll. 2016-07-17 20:10:00 -07:00
John-David Dalton
8bc44e3bff Update qunit-extras to 2.1.0. 2016-07-17 20:10:00 -07:00
John-David Dalton
73f84baaec Add more excused underscore debounce tests. 2016-07-17 20:10:00 -07:00
John-David Dalton
d3acace1c4 Update uglify options to disable negate_iffe. 2016-07-17 20:10:00 -07:00
Greenkeeper
7f3539d001 Update request to 2.73.0. 2016-07-17 20:10:00 -07:00
John-David Dalton
3ef19f1ab1 Add lodash-webpack-plugin reference to readme. [ci skip] 2016-07-17 20:10:00 -07:00
John-David Dalton
749b2db846 Update jquery to 3.1.0 and marky-markdown to 7.0.2.
chore(package): update jquery to version 3.1.0 (#2483)

https://greenkeeper.io/
2016-07-17 20:10:00 -07:00
John-David Dalton
a3e99b5d89 Use optional-dev-dependency. 2016-07-17 20:10:00 -07:00
John-David Dalton
dbbb3fbb55 Add comments and cleanup build-site.js. 2016-07-17 20:10:00 -07:00
John-David Dalton
6eeac45d23 Update vendors. 2016-07-17 20:10:00 -07:00
John-David Dalton
5669cc0a0b Remove hrs. 2016-07-17 20:09:59 -07:00
John-David Dalton
d986901a1c Narrow header anchor selector. 2016-07-17 20:09:59 -07:00
John-David Dalton
5394bbf06a Make newline formatting explicit. 2016-07-17 20:09:59 -07:00
John-David Dalton
d7b2f922b5 Remove "v" prefix from version. 2016-07-17 20:09:59 -07:00
John-David Dalton
9ab55443eb Fix _.isEqualWith and _.isMatchWith test fails. 2016-07-17 20:09:59 -07:00
John-David Dalton
67c7a43e6f Move marky-markdown to an optional dep. 2016-07-17 20:09:59 -07:00
Alex Wachira
26a4bfb838 Make "lodash/fp" doc link point to untagged branch. [ci skip] 2016-07-17 20:09:59 -07:00
John-David Dalton
e7a16b2e64 Make "Contributing" doc link point to untagged branch. [ci skip] 2016-07-17 20:09:45 -07:00
John-David Dalton
a5612ed668 Update uglify-js to 2.7.0 and jscs to 3.0.6. 2016-07-17 20:09:03 -07:00
John-David Dalton
f55d15692b Remove more markymark meta data. 2016-07-17 20:08:13 -07:00
John-David Dalton
107994859b Remove markymark links from h4s. 2016-07-17 20:08:13 -07:00
John-David Dalton
a8d3689061 Ensure _.isEqual works more consistently with circular references. 2016-07-17 20:08:12 -07:00
Y-Less
4fb4ec5328 Links to creation equivalents for in-place modification functions. (#2468)
See issue #2467
2016-07-17 20:08:12 -07:00
John-David Dalton
9bc8519656 Cleanup build-site script. 2016-07-17 20:08:12 -07:00
Benjamin Tan
af36d2d8e5 Ensure proper tags are generated. (#2465) 2016-07-17 20:08:12 -07:00
Zack Hall
6b0069f10f Add doc-site build script (#2461) 2016-07-17 20:08:12 -07:00
John-David Dalton
a64b629333 Combine _.isMatch and _.matches tests. 2016-06-29 12:31:07 -07:00
John-David Dalton
fc4cc977ed Remove backticks from package name. 2016-06-29 12:31:07 -07:00
John-David Dalton
7483520c8c Cleanup .gitignore. 2016-06-29 12:31:07 -07:00
John-David Dalton
5d18fb8c70 Simplify uglify options. 2016-06-29 12:31:07 -07:00
John-David Dalton
1163bfac5c Add _.conformsTo tests. 2016-06-29 12:31:07 -07:00
John-David Dalton
d643bbd7e4 Add conformsTo to lodash doc block. [ci skip] 2016-06-26 09:55:47 -07:00
Dan J Miller
32158935f8 Change second param of _.invokeMap as path in docs. [ci skip] 2016-06-24 19:41:01 -07:00
John-David Dalton
50bf1ea784 Ensure _.first supports shortcut fusion. [closes #2447] 2016-06-24 07:05:27 -07:00
Greenkeeper
fa29123c5e Update deps. 2016-06-22 07:15:55 -07:00
John-David Dalton
314c652818 Update Chrome versions in sauce. 2016-06-22 07:15:45 -07:00
John-David Dalton
a3dd60370e Cleanup fp tests. 2016-06-18 22:31:45 -07:00
John-David Dalton
3d82567118 Add isEvenIndex helper to fp tests. 2016-06-18 22:31:45 -07:00
John-David Dalton
eaac5e02c0 Add fp.propertyOf test. 2016-06-18 21:59:56 -07:00
John-David Dalton
3bd5703bdb Downgrade QUnit for Backbone test support. 2016-06-18 21:30:38 -07:00
John-David Dalton
bf80a75474 Make fp.propertyOf and remap of fp.get. 2016-06-18 12:49:48 -07:00
John-David Dalton
bea7016223 Make fp.property and alias of fp.get. 2016-06-18 12:49:48 -07:00
John-David Dalton
c8ff2b4612 Update qunit to 2.0.0. 2016-06-18 12:49:48 -07:00
John-David Dalton
6c673cd19b Cleanup wrapper details helpers. 2016-06-18 12:49:47 -07:00
John-David Dalton
c1ae43e041 Update glob to 7.0.4 and markdown-doctest to 0.8.0. 2016-06-18 12:49:38 -07:00
Brandon Horst
9605072200 Formalize which value is picked by _.unionBy and _.unionWith to pick the result from the first array in which it occurs. 2016-06-18 12:47:44 -07:00
John-David Dalton
9cabc7c222 Ensute _.assignWith respects customizer results of undefined. [closes #2424] 2016-06-18 12:47:44 -07:00
Dan J Miller
b2b3391827 Fixed display of transforms param in overArgs docs. (#2422) 2016-06-18 12:47:43 -07:00
John-David Dalton
19e94b8889 Move split out functions. 2016-06-18 12:47:43 -07:00
John-David Dalton
4bee8c9ead Add docs for split out functions. [ci skip] 2016-06-18 12:47:43 -07:00
John-David Dalton
3f1ae77306 Assign pair[0] to a variable. 2016-06-18 12:47:43 -07:00
John-David Dalton
9f6d6d7b37 Remove isFlattenableIteratee predicate to resolve regression. [closes #2418] 2016-06-18 12:47:43 -07:00
John-David Dalton
adac412f58 Split out setWrapToString. 2016-06-18 12:47:43 -07:00
John-David Dalton
31ca38515a Make wrap functions more debuggable. 2016-06-18 12:47:43 -07:00
John-David Dalton
4a35929979 Cleanup wrap comments. 2016-06-18 12:47:42 -07:00
John-David Dalton
4a0610f107 Replace _.result use with _.get. 2016-06-18 12:47:42 -07:00
John-David Dalton
9a1b3d813a Rename wrapper function. 2016-06-18 12:47:42 -07:00
John-David Dalton
a7a4862491 Add missing context references. 2016-06-18 12:47:42 -07:00
John-David Dalton
5783536837 Update dojo to 1.11.2 and jquery to 3.0.0. 2016-06-18 12:47:42 -07:00
John-David Dalton
f8646d1a5d Minor space nit. 2016-06-10 12:19:28 -07:00
John-David Dalton
39bb7064e7 Minor doc nits. [ci skip] 2016-06-10 12:19:28 -07:00
John-David Dalton
388bf6934d Ensure fp.rearg returns a curried function. [closes #2413] 2016-06-08 23:55:25 -07:00
John-David Dalton
5122e9271c Add conforms to aliasToReal fp mapping. 2016-06-08 23:26:57 -07:00
John-David Dalton
32b36435f8 Add baseIsXyz helpers. 2016-06-08 10:53:49 -07:00
John-David Dalton
807ad48bbc Add compat note to addSetEntry. [ci skip] 2016-06-07 12:19:35 -07:00
John-David Dalton
b5842314b4 Make LARGE_ARRAY_SIZE check in stackSet align with others. 2016-06-07 08:33:48 -07:00
John-David Dalton
efb4db2b86 Isolate caches of tests. 2016-06-07 07:20:01 -07:00
John-David Dalton
ecbf8cd722 Add map cache test for changing values. 2016-06-07 07:08:33 -07:00
John-David Dalton
9992144130 Cleanup clone tests. 2016-06-07 07:08:14 -07:00
Greenkeeper
1f9cba6f53 Update markdown-doctest to 0.7.0. 2016-06-06 23:46:34 -07:00
John-David Dalton
2465a6bdbd Add fp.mergeAllWith test. 2016-06-06 23:46:06 -07:00
John-David Dalton
1a7199fd6b Cleanup fp tests. 2016-06-06 23:20:13 -07:00
John-David Dalton
57f0a4c6d7 Add conformsTo to fp aryMethod mapping. 2016-06-06 20:00:15 -07:00
John-David Dalton
138cf77916 Add fp.assignAllWith, fp.extendAllWith, and fp.mergeAllWith. 2016-06-06 19:58:51 -07:00
John-David Dalton
43d1ca89c2 Add _.ary and _.unary tests for this binding and minimum arg count. 2016-06-06 17:49:33 -07:00
John-David Dalton
51e619b18f Cleanup this binding test labels. 2016-06-06 17:48:35 -07:00
John-David Dalton
21df7426e2 Ensure _.divide and _.multiply return 1 when no arguments are specified. [closes #2405] 2016-06-06 15:58:24 -07:00
John-David Dalton
2f6b2ca0c7 Add back clearTimeout use for debounced.cancel. 2016-06-06 10:03:43 -07:00
John-David Dalton
cf1b9f9595 Update jscs to 3.0.4. 2016-06-05 22:55:57 -07:00
John-David Dalton
b0ec8339fa Cleanup and simplify doc examples. [ci skip] 2016-06-05 16:43:19 -07:00
John-David Dalton
762748684e Add _.conformsTo. 2016-06-05 15:08:39 -07:00
John-David Dalton
bdfd5880e9 Adjust freeExports and freeModule assignment. 2016-06-03 10:01:46 -07:00
John-David Dalton
9e55e5bcea Move root exposure back to the AMD branch. 2016-06-03 06:27:30 -07:00
John-David Dalton
887576e4a5 Update sauce-tunnel to 2.5.0. 2016-06-02 15:31:48 -07:00
John-David Dalton
ccd1d6ab29 Simplify _.isBuffer. 2016-06-02 14:48:25 -07:00
John-David Dalton
fcbb63ad60 Ensure helpers work when provided < 1 or > 1 argument. 2016-06-02 09:06:02 -07:00
John-David Dalton
1607e7914c Use faster C++ helpers when available. 2016-06-02 08:42:00 -07:00
John-David Dalton
68e98397ab Add matches to aliasToReal fp mapping. 2016-06-01 07:33:57 -07:00
John-David Dalton
3983d4f473 Update whereEq alias. 2016-06-01 00:19:19 -07:00
John-David Dalton
9eda959489 Another round of fp aliases. 2016-06-01 00:18:49 -07:00
John-David Dalton
4880f9923c Add fp.assignAll, fp.assignInAll, fp.defaultsAll, fp.defaultsDeepAll, and fp.mergeAll. 2016-06-01 00:02:23 -07:00
John-David Dalton
87e8a4290e Add more fp aliases. 2016-05-31 20:37:50 -07:00
John-David Dalton
fd96d59963 Add strict mode directive to a few more files. 2016-05-31 10:47:29 -07:00
John-David Dalton
1a1771f0b5 Align method descriptions with "This method" instead of "A method". [ci skip] 2016-05-31 10:46:57 -07:00
John-David Dalton
22ed53260f Add basePropertyOf helper. 2016-05-31 08:27:24 -07:00
John-David Dalton
77cf88a3bf Add util.pitch. 2016-05-30 22:00:20 -07:00
John-David Dalton
695d74d7c5 Add jsdocs to fp build modules. 2016-05-29 17:14:01 -07:00
John-David Dalton
a164735369 Shorten return statement descriptions for isXyz methods. [ci skip] 2016-05-29 17:14:00 -07:00
John-David Dalton
6ccea636b1 Remove argument number specifier in methodSpread note. [closes #2390] [ci skip] 2016-05-29 15:02:27 -07:00
John-David Dalton
0ccaf76661 Cleanup common lib docs. [ci skip] 2016-05-28 23:15:12 -07:00
John-David Dalton
593f6f9f86 Correct doc block for overArg helper in _baseConvert. [ci skip] 2016-05-28 10:16:28 -07:00
John-David Dalton
fbdda6df03 Add overArg helper. 2016-05-27 15:36:48 -07:00
John-David Dalton
a7dcce3e8d Simplify jsdoc arg signatures. 2016-05-27 14:38:32 -07:00
John-David Dalton
ee5718003b Simplify getSymbols fallback. 2016-05-27 13:46:00 -07:00
John-David Dalton
a43065ec08 Add baseGetTag helper. 2016-05-26 08:59:01 -07:00
John-David Dalton
1740ee91da Minor space nit. [ci skip] 2016-05-26 07:15:18 -07:00
John-David Dalton
90f95306f9 Make _.defaultTo return the defaultValue for NaN and nullish values. 2016-05-26 07:15:18 -07:00
John-David Dalton
0964f9175e Cleanup test descriptions with NaN. [ci skip] 2016-05-26 07:15:17 -07:00
John-David Dalton
dbde3f8826 Add link for sorted feature requests to contributing.md. [ci skip] 2016-05-26 07:15:17 -07:00
John-David Dalton
33e08baf3f Update umd doc note. [ci skip] 2016-05-26 07:15:12 -07:00
John-David Dalton
6e67ebab05 Cleanup _.defaultTo. 2016-05-25 08:46:14 -07:00
Mateo Calle
5fbc5303ff Added _.defaultTo. (#2381) 2016-05-24 21:35:56 -07:00
John-David Dalton
e582ad226a Use heavy round-tipped rightwards arrow instead of the plain rightwards arrow. 2016-05-24 21:19:50 -07:00
John-David Dalton
dfb71a3a50 Pop stacks when possible. 2016-05-24 21:15:23 -07:00
John-David Dalton
5355f4f25e Remove indexOfNaN in favor of baseFindIndex. 2016-05-24 12:42:14 -07:00
John-David Dalton
98c422d227 Avoid inspecting the entire key-value array when adding values to a stack. 2016-05-24 09:43:00 -07:00
John-David Dalton
e18b577d20 Add Map guard to stackSet. 2016-05-24 00:23:21 -07:00
John-David Dalton
7226df593e Clarify createSet doc description. [ci skip] 2016-05-24 00:22:59 -07:00
John-David Dalton
8a376f647e Cleanup iteratee arguments test labels. 2016-05-23 23:56:55 -07:00
John-David Dalton
050087f6c4 Cleanup "find" tests. 2016-05-23 23:56:23 -07:00
John-David Dalton
c67e347255 Make _.isEqual treat invalid dates as equiv. 2016-05-23 16:39:54 -07:00
John-David Dalton
3fdac985c7 Reduce createFind. 2016-05-23 16:39:04 -07:00
John-David Dalton
02ff3e6258 Remove "unique" mention from _.difference docs. [ci skip] [closes #2372] 2016-05-23 11:03:10 -07:00
John-David Dalton
65ce1b0bb5 Remove unnecessary type tag. [ci skip] 2016-05-23 10:07:25 -07:00
John-David Dalton
7e8528104b Increment package version to enable ci tests. 2016-05-23 10:07:25 -07:00
John-David Dalton
40ac55acb6 Bump to v4.13.1. 2016-05-23 08:58:01 -07:00
John-David Dalton
42c639d252 Rebuild lodash and docs. 2016-05-23 08:57:55 -07:00
John-David Dalton
d110b64ee4 Ensure _.find and _.findLast pass the correct key param to predicate. [closes #2367] 2016-05-23 08:47:43 -07:00
John-David Dalton
a2617d810c Add failing tests for #2367. 2016-05-23 08:47:24 -07:00
John-David Dalton
90d07bc04c Simplify isMaskable assignment. 2016-05-22 22:11:15 -07:00
57 changed files with 5952 additions and 4888 deletions

View File

@@ -13,8 +13,8 @@ Feature requests should be submitted in the
[issue tracker](https://github.com/lodash/lodash/issues), with a description of
the expected behavior & use case, where theyll remain closed until sufficient interest,
[e.g. :+1: reactions](https://help.github.com/articles/about-discussions-in-issues-and-pull-requests/),
has been shown by the community. Before submitting a request, please search for
similar ones in the
has been [shown by the community](https://github.com/lodash/lodash/issues?q=label%3A%22votes+needed%22+sort%3Areactions-%2B1-desc).
Before submitting a request, please search for similar ones in the
[closed issues](https://github.com/lodash/lodash/issues?q=is%3Aissue+is%3Aclosed+label%3Aenhancement).
## Pull Requests

7
.gitignore vendored
View File

@@ -1,9 +1,4 @@
.DS_Store
*.custom.*
*.log
*.map
lodash.compat.min.js
coverage
doc/*.html
node_modules
.opt-in
.opt-out

View File

@@ -2,47 +2,10 @@
delete global['__core-js_shared__'];
var _ = require('./lodash.js');
function mockQuery() {
return {
'on': function(eventName, callback) {
callback();
}
};
}
mockQuery.each = _.each;
var _ = require('./lodash.js'),
globals = require('lodash-doc-globals');
module.exports = {
'babel': false,
'globals': {
'_': _,
// Example mocks.
'asyncSave': _.noop,
'addContactToList': _.noop,
'batchLog': _.noop,
'calculateLayout': _.noop,
'createApplication': _.noop,
'data': { 'user': 'mock'},
'mainText': '',
'renewToken': _.noop,
'sendMail': _.noop,
'updatePosition': _.noop,
// DOM mocks.
'document': { 'body': { 'childNodes': [], 'nodeName': 'BODY' } },
'element': {},
'EventSource': _.noop,
'jQuery': mockQuery,
'window': {},
// Node.js mocks.
'Buffer': Buffer,
'fs': { 'writeFileSync': _.noop },
'path': require('path'),
'process': process,
'setImmediate': setImmediate
}
'globals': _.assign({ '_': _ }, globals)
};

View File

@@ -2,6 +2,10 @@ language: node_js
sudo: false
node_js:
- "6"
cache:
directories:
- node_modules
- travis_phantomjs
env:
global:
- BIN="node" ISTANBUL=false OPTION=""
@@ -34,6 +38,12 @@ notifications:
on_success: change
on_failure: always
before_install:
- "export PHANTOMJS_VERSION=2.1.1"
- "export PATH=$PWD/travis_phantomjs/phantomjs-$PHANTOMJS_VERSION-linux-x86_64/bin:$PATH"
- "if [ $(phantomjs --version) != $PHANTOMJS_VERSION ]; then rm -rf $PWD/travis_phantomjs; mkdir -p $PWD/travis_phantomjs; fi"
- "if [ $(phantomjs --version) != $PHANTOMJS_VERSION ]; then wget https://github.com/Medium/phantomjs/releases/download/v$PHANTOMJS_VERSION/phantomjs-$PHANTOMJS_VERSION-linux-x86_64.tar.bz2 -O $PWD/travis_phantomjs/phantomjs-$PHANTOMJS_VERSION-linux-x86_64.tar.bz2; fi"
- "if [ $(phantomjs --version) != $PHANTOMJS_VERSION ]; then tar -xvf $PWD/travis_phantomjs/phantomjs-$PHANTOMJS_VERSION-linux-x86_64.tar.bz2 -C $PWD/travis_phantomjs; fi"
- "phantomjs --version"
- "nvm use $TRAVIS_NODE_VERSION"
- "npm set loglevel error"
- "npm set progress false"
@@ -55,6 +65,7 @@ before_install:
node ./test/remove.js "$PTRN" ./lodash.js
done
fi
- "rm -rf ./node_modules/lodash-cli"
- "git clone --depth=10 --branch=master git://github.com/lodash/lodash-cli ./node_modules/lodash-cli"
- "mkdir -p ./node_modules/lodash-cli/node_modules/lodash && cd $_ && cp ../../../../lodash.js ./lodash.js && cp ../../../../package.json ./package.json"
- "cd ../../ && npm i && cd ../../"
@@ -64,7 +75,7 @@ script:
- "[ $ISTANBUL == false ] || istanbul cover -x \"**/vendor/**\" --report lcovonly ./test/test.js -- ./lodash.js"
- "[ $ISTANBUL == false ] || [ $TRAVIS_SECURE_ENV_VARS == false ] || (cat ./coverage/lcov.info | coveralls) || true"
- "[ $ISTANBUL == false ] || [ $TRAVIS_SECURE_ENV_VARS == false ] || (cat ./coverage/coverage.json | codecov) || true"
# Test in Node.js and PhantomJS.
- "[ $ISTANBUL == true ] || node ./node_modules/lodash-cli/bin/lodash -o ./dist/lodash.js"
- "[ $ISTANBUL == true ] || (node ./node_modules/lodash-cli/bin/lodash modularize exports=node -o ./ && node ./node_modules/lodash-cli/bin/lodash -d -o ./lodash.js)"

View File

@@ -1,9 +1,9 @@
# lodash v4.13.0
# lodash v4.14.2
[Site](https://lodash.com/) |
[Docs](https://lodash.com/docs) |
[FP Guide](https://github.com/lodash/lodash/wiki/FP-Guide) |
[Contributing](https://github.com/lodash/lodash/blob/4.13.0/.github/CONTRIBUTING.md) |
[Contributing](https://github.com/lodash/lodash/blob/master/.github/CONTRIBUTING.md) |
[Wiki](https://github.com/lodash/lodash/wiki "Changelog, Roadmap, etc.") |
[Code of Conduct](https://jquery.org/conduct/) |
[Twitter](https://twitter.com/bestiejs) |
@@ -20,11 +20,11 @@ $ lodash core -o ./dist/lodash.core.js
## Download
Lodash is released under the [MIT license](https://raw.githubusercontent.com/lodash/lodash/4.13.0/LICENSE) & supports [modern environments](#support).<br>
Lodash is released under the [MIT license](https://raw.githubusercontent.com/lodash/lodash/4.14.2/LICENSE) & supports [modern environments](#support).<br>
Review the [build differences](https://github.com/lodash/lodash/wiki/build-differences) & pick one thats right for you.
* [Core build](https://raw.githubusercontent.com/lodash/lodash/4.13.0/dist/lodash.core.js) ([~4 kB gzipped](https://raw.githubusercontent.com/lodash/lodash/4.13.0/dist/lodash.core.min.js))
* [Full build](https://raw.githubusercontent.com/lodash/lodash/4.13.0/dist/lodash.js) ([~22 kB gzipped](https://raw.githubusercontent.com/lodash/lodash/4.13.0/dist/lodash.min.js))
* [Core build](https://raw.githubusercontent.com/lodash/lodash/4.14.2/dist/lodash.core.js) ([~4 kB gzipped](https://raw.githubusercontent.com/lodash/lodash/4.14.2/dist/lodash.core.min.js))
* [Full build](https://raw.githubusercontent.com/lodash/lodash/4.14.2/dist/lodash.js) ([~22 kB gzipped](https://raw.githubusercontent.com/lodash/lodash/4.14.2/dist/lodash.min.js))
* [CDN copies](https://www.jsdelivr.com/projects/lodash)
## Why Lodash?
@@ -41,6 +41,6 @@ numbers, objects, strings, etc. Lodashs modular methods are great for:
Lodash is available in a [variety of builds](https://lodash.com/custom-builds) & module formats.
* [lodash](https://www.npmjs.com/package/lodash) & [per method packages](https://www.npmjs.com/browse/keyword/lodash-modularized)
* [lodash-es](https://www.npmjs.com/package/lodash-es), [babel-plugin-lodash](https://www.npmjs.com/package/babel-plugin-lodash), & [lodash-webpack-plugin](https://www.npmjs.com/package/lodash-webpack-plugin)
* [lodash/fp](https://github.com/lodash/lodash/tree/npm/fp)
* [lodash-amd](https://www.npmjs.com/package/lodash-amd)
* [lodash-es](https://www.npmjs.com/package/lodash-es) & [babel-plugin-lodash](https://www.npmjs.com/package/babel-plugin-lodash)
* [lodash/fp](https://github.com/lodash/lodash/tree/4.13.0-npm/fp)

548
dist/lodash.core.js vendored

File diff suppressed because it is too large Load Diff

View File

@@ -3,26 +3,26 @@
* lodash (Custom Build) /license | Underscore.js 1.8.3 underscorejs.org/LICENSE
* Build: `lodash core -o ./dist/lodash.core.js`
*/
;(function(){function n(n){n=null==n?n:Object(n);var t,r=[];for(t in n)r.push(t);return r}function t(n){return On(Object(n))}function r(n,t){return n.push.apply(n,t),n}function e(n,t,r,e,u){return u(n,function(n,u,o){r=e?(e=false,n):t(r,n,u,o)}),r}function u(n,t){return x(t,function(t){return n[t]})}function o(n){return n&&n.Object===Object?n:null}function i(n){return fn[n]}function c(n){return n instanceof f?n:new f(n)}function f(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t}function a(n,t,r,e){
var u;return(u=n===en)||(u=vn[r],u=(n===u||n!==n&&u!==u)&&!yn.call(e,r)),u?t:n}function l(n){return Q(n)?jn(n):{}}function p(n,t,r){if(typeof n!="function")throw new TypeError("Expected a function");return setTimeout(function(){n.apply(en,r)},t)}function s(n,t){var r=true;return En(n,function(n,e,u){return r=!!t(n,e,u)}),r}function h(n,t,r){for(var e=-1,u=n.length;++e<u;){var o=n[e],i=t(o);if(null!=i&&(c===en?i===i:r(i,c)))var c=i,f=o}return f}function v(n,t){var r=[];return En(n,function(n,e,u){t(n,e,u)&&r.push(n);
}),r}function y(n,t,e,u,o){var i=-1,c=n.length;for(e||(e=z),o||(o=[]);++i<c;){var f=n[i];t>0&&e(f)?t>1?y(f,t-1,e,u,o):r(o,f):u||(o[o.length]=f)}return o}function b(n,r){return n&&An(n,r,t)}function g(n,t){return v(t,function(t){return L(n[t])})}function _(n,t){return n>t}function j(n,t,r,e,u){return n===t?true:null==n||null==t||!Q(n)&&!W(t)?n!==n&&t!==t:d(n,t,j,r,e,u)}function d(n,t,r,e,u,o){var i=Tn(n),c=Tn(t),f="[object Array]",a="[object Array]";i||(f=gn.call(n),f="[object Arguments]"==f?"[object Object]":f),
c||(a=gn.call(t),a="[object Arguments]"==a?"[object Object]":a);var l="[object Object]"==f&&true,c="[object Object]"==a&&true,a=f==a;o||(o=[]);var p=J(o,function(t){return t[0]===n});return p&&p[1]?p[1]==t:(o.push([n,t]),a&&!l?(r=i?I(n,t,r,e,u,o):q(n,t,f),o.pop(),r):2&u||(i=l&&yn.call(n,"__wrapped__"),f=c&&yn.call(t,"__wrapped__"),!i&&!f)?a?(r=$(n,t,r,e,u,o),o.pop(),r):false:(i=i?n.value():n,t=f?t.value():t,r=r(i,t,e,u,o),o.pop(),r))}function m(n){return typeof n=="function"?n:null==n?tn:(typeof n=="object"?E:w)(n);
}function O(n,t){return t>n}function x(n,t){var r=-1,e=K(n)?Array(n.length):[];return En(n,function(n,u,o){e[++r]=t(n,u,o)}),e}function E(n){var r=t(n);return function(t){var e=r.length;if(null==t)return!e;for(t=Object(t);e--;){var u=r[e];if(!(u in t&&j(n[u],t[u],en,3)))return false}return true}}function A(n,t){return n=Object(n),P(t,function(t,r){return r in n&&(t[r]=n[r]),t},{})}function w(n){return function(t){return null==t?en:t[n]}}function k(n,t,r){var e=-1,u=n.length;for(0>t&&(t=-t>u?0:u+t),r=r>u?u:r,
0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Array(u);++e<u;)r[e]=n[e+t];return r}function N(n){return k(n,0,n.length)}function S(n,t){var r;return En(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}function F(n,t){return P(t,function(n,t){return t.func.apply(t.thisArg,r([n],t.args))},n)}function T(n,t,r,e){r||(r={});for(var u=-1,o=t.length;++u<o;){var i=t[u],c=e?e(r[i],n[i],i,r,n):n[i],f=r,a=f[i];yn.call(f,i)&&(a===c||a!==a&&c!==c)&&(c!==en||i in f)||(f[i]=c)}return r}function B(n){return V(function(t,r){var e=-1,u=r.length,o=u>1?r[u-1]:en,o=n.length>3&&typeof o=="function"?(u--,
o):en;for(t=Object(t);++e<u;){var i=r[e];i&&n(t,i,e,o)}return t})}function R(n){return function(){var t=arguments,r=l(n.prototype),t=n.apply(r,t);return Q(t)?t:r}}function D(n,t,r){function e(){for(var o=-1,i=arguments.length,c=-1,f=r.length,a=Array(f+i),l=this&&this!==sn&&this instanceof e?u:n;++c<f;)a[c]=r[c];for(;i--;)a[c++]=arguments[++o];return l.apply(t,a)}if(typeof n!="function")throw new TypeError("Expected a function");var u=R(n);return e}function I(n,t,r,e,u,o){var i=n.length,c=t.length;
if(i!=c&&!(2&u&&c>i))return false;for(var c=-1,f=true,a=1&u?[]:en;++c<i;){var l=n[c],p=t[c];if(void 0!==en){f=false;break}if(a){if(!S(t,function(n,t){return G(a,t)||l!==n&&!r(l,n,e,u,o)?void 0:a.push(t)})){f=false;break}}else if(l!==p&&!r(l,p,e,u,o)){f=false;break}}return f}function q(n,t,r){switch(r){case"[object Boolean]":case"[object Date]":return+n==+t;case"[object Error]":return n.name==t.name&&n.message==t.message;case"[object Number]":return n!=+n?t!=+t:n==+t;case"[object RegExp]":case"[object String]":return n==t+"";
}return false}function $(n,r,e,u,o,i){var c=2&o,f=t(n),a=f.length,l=t(r).length;if(a!=l&&!c)return false;for(var p=a;p--;){var s=f[p];if(!(c?s in r:yn.call(r,s)))return false}for(l=true;++p<a;){var s=f[p],h=n[s],v=r[s];if(void 0!==en||h!==v&&!e(h,v,u,o,i)){l=false;break}c||(c="constructor"==s)}return l&&!c&&(e=n.constructor,u=r.constructor,e!=u&&"constructor"in n&&"constructor"in r&&!(typeof e=="function"&&e instanceof e&&typeof u=="function"&&u instanceof u)&&(l=false)),l}function z(n){return Tn(n)||H(n)}function C(n){
return n&&n.length?n[0]:en}function G(n,t,r){var e=n?n.length:0;r=typeof r=="number"?0>r?xn(e+r,0):r:0,r=(r||0)-1;for(var u=t===t;++r<e;){var o=n[r];if(u?o===t:o!==o)return r}return-1}function J(n,t,r){n=K(n)?n:nn(n);var e,u=(e=n)?e.length:0;if(u)n:{for(r=null==r?0:Bn(r),0>r&&(r=xn(u+r,0)),t=m(t),u=e.length,r+=-1;++r<u;)if(t(e[r],r,e)){e=r;break n}e=-1}else e=-1;return e>-1?n[e]:en}function M(n,t){return En(n,m(t))}function P(n,t,r){return e(n,m(t),r,3>arguments.length,En)}function U(n,t){var r;if(typeof t!="function")throw new TypeError("Expected a function");
return n=Bn(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=en),r}}function V(n){var t;if(typeof n!="function")throw new TypeError("Expected a function");return t=xn(t===en?n.length-1:Bn(t),0),function(){for(var r=arguments,e=-1,u=xn(r.length-t,0),o=Array(u);++e<u;)o[e]=r[t+e];for(u=Array(t+1),e=-1;++e<t;)u[e]=r[e];return u[t]=o,n.apply(this,u)}}function H(n){return W(n)&&K(n)&&yn.call(n,"callee")&&(!dn.call(n,"callee")||"[object Arguments]"==gn.call(n))}function K(n){var t;return(t=null!=n)&&(t=wn(n),
t=typeof t=="number"&&t>-1&&0==t%1&&9007199254740991>=t),t&&!L(n)}function L(n){return n=Q(n)?gn.call(n):"","[object Function]"==n||"[object GeneratorFunction]"==n}function Q(n){var t=typeof n;return!!n&&("object"==t||"function"==t)}function W(n){return!!n&&typeof n=="object"}function X(n){return typeof n=="number"||W(n)&&"[object Number]"==gn.call(n)}function Y(n){return typeof n=="string"||!Tn(n)&&W(n)&&"[object String]"==gn.call(n)}function Z(n){return typeof n=="string"?n:null==n?"":n+""}function nn(n){
return n?u(n,t(n)):[]}function tn(n){return n}function rn(n,e,u){var o=t(e),i=g(e,o);null!=u||Q(e)&&(i.length||!o.length)||(u=e,e=n,n=this,i=g(e,t(e)));var c=!(Q(u)&&"chain"in u&&!u.chain),f=L(n);return En(i,function(t){var u=e[t];n[t]=u,f&&(n.prototype[t]=function(){var t=this.__chain__;if(c||t){var e=n(this.__wrapped__);return(e.__actions__=N(this.__actions__)).push({func:u,args:arguments,thisArg:n}),e.__chain__=t,e}return u.apply(n,r([this.value()],arguments))})}),n}var en,un=1/0,on=/[&<>"'`]/g,cn=RegExp(on.source),fn={
"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","`":"&#96;"},an=typeof exports=="object"&&exports,ln=an&&typeof module=="object"&&module,pn=o(typeof self=="object"&&self),sn=o(typeof global=="object"&&global)||pn||o(typeof this=="object"&&this)||Function("return this")(),hn=Array.prototype,vn=Object.prototype,yn=vn.hasOwnProperty,bn=0,gn=vn.toString,_n=sn._,jn=Object.create,dn=vn.propertyIsEnumerable,mn=sn.isFinite,On=Object.keys,xn=Math.max;f.prototype=l(c.prototype),f.prototype.constructor=f;
var En=function(n,t){return function(r,e){if(null==r)return r;if(!K(r))return n(r,e);for(var u=r.length,o=t?u:-1,i=Object(r);(t?o--:++o<u)&&false!==e(i[o],o,i););return r}}(b),An=function(n){return function(t,r,e){var u=-1,o=Object(t);e=e(t);for(var i=e.length;i--;){var c=e[n?i:++u];if(false===r(o[c],c,o))break}return t}}(),wn=w("length"),kn=String,Nn=V(function(n,t,r){return D(n,t,r)}),Sn=V(function(n,t){return p(n,1,t)}),Fn=V(function(n,t,r){return p(n,Rn(t)||0,r)}),Tn=Array.isArray,Bn=Number,Rn=Number,Dn=B(function(n,r){
T(r,t(r),n)}),In=B(function(t,r){T(r,n(r),t)}),qn=B(function(t,r,e,u){T(r,n(r),t,u)}),$n=V(function(n){return n.push(en,a),qn.apply(en,n)}),zn=V(function(n,t){return null==n?{}:A(n,x(y(t,1),kn))});c.assignIn=In,c.before=U,c.bind=Nn,c.chain=function(n){return n=c(n),n.__chain__=true,n},c.compact=function(n){return v(n,Boolean)},c.concat=function(){for(var n=arguments.length,t=Array(n?n-1:0),e=arguments[0],u=n;u--;)t[u-1]=arguments[u];return n?r(Tn(e)?N(e):[e],y(t,1)):[]},c.create=function(n,t){var r=l(n);
return t?Dn(r,t):r},c.defaults=$n,c.defer=Sn,c.delay=Fn,c.filter=function(n,t){return v(n,m(t))},c.flatten=function(n){return n&&n.length?y(n,1):[]},c.flattenDeep=function(n){return n&&n.length?y(n,un):[]},c.iteratee=m,c.keys=t,c.map=function(n,t){return x(n,m(t))},c.matches=function(n){return E(Dn({},n))},c.mixin=rn,c.negate=function(n){if(typeof n!="function")throw new TypeError("Expected a function");return function(){return!n.apply(this,arguments)}},c.once=function(n){return U(2,n)},c.pick=zn,
c.slice=function(n,t,r){var e=n?n.length:0;return r=r===en?e:+r,e?k(n,null==t?0:+t,r):[]},c.sortBy=function(n,t){var r=0;return t=m(t),x(x(n,function(n,e,u){return{value:n,index:r++,criteria:t(n,e,u)}}).sort(function(n,t){var r;n:{r=n.criteria;var e=t.criteria;if(r!==e){var u=r!==en,o=null===r,i=r===r,c=e!==en,f=null===e,a=e===e;if(!f&&r>e||o&&c&&a||!u&&a||!i){r=1;break n}if(!o&&e>r||f&&u&&i||!c&&i||!a){r=-1;break n}}r=0}return r||n.index-t.index}),w("value"))},c.tap=function(n,t){return t(n),n},
c.thru=function(n,t){return t(n)},c.toArray=function(n){return K(n)?n.length?N(n):[]:nn(n)},c.values=nn,c.extend=In,rn(c,c),c.clone=function(n){return Q(n)?Tn(n)?N(n):T(n,t(n)):n},c.escape=function(n){return(n=Z(n))&&cn.test(n)?n.replace(on,i):n},c.every=function(n,t,r){return t=r?en:t,s(n,m(t))},c.find=J,c.forEach=M,c.has=function(n,t){return null!=n&&yn.call(n,t)},c.head=C,c.identity=tn,c.indexOf=G,c.isArguments=H,c.isArray=Tn,c.isBoolean=function(n){return true===n||false===n||W(n)&&"[object Boolean]"==gn.call(n);
},c.isDate=function(n){return W(n)&&"[object Date]"==gn.call(n)},c.isEmpty=function(n){return K(n)&&(Tn(n)||Y(n)||L(n.splice)||H(n))?!n.length:!t(n).length},c.isEqual=function(n,t){return j(n,t)},c.isFinite=function(n){return typeof n=="number"&&mn(n)},c.isFunction=L,c.isNaN=function(n){return X(n)&&n!=+n},c.isNull=function(n){return null===n},c.isNumber=X,c.isObject=Q,c.isRegExp=function(n){return Q(n)&&"[object RegExp]"==gn.call(n)},c.isString=Y,c.isUndefined=function(n){return n===en},c.last=function(n){
var t=n?n.length:0;return t?n[t-1]:en},c.max=function(n){return n&&n.length?h(n,tn,_):en},c.min=function(n){return n&&n.length?h(n,tn,O):en},c.noConflict=function(){return sn._===this&&(sn._=_n),this},c.noop=function(){},c.reduce=P,c.result=function(n,t,r){return t=null==n?en:n[t],t===en&&(t=r),L(t)?t.call(n):t},c.size=function(n){return null==n?0:(n=K(n)?n:t(n),n.length)},c.some=function(n,t,r){return t=r?en:t,S(n,m(t))},c.uniqueId=function(n){var t=++bn;return Z(n)+t},c.each=M,c.first=C,rn(c,function(){
var n={};return b(c,function(t,r){yn.call(c.prototype,r)||(n[r]=t)}),n}(),{chain:false}),c.VERSION="4.13.0",En("pop join replace reverse split push shift sort splice unshift".split(" "),function(n){var t=(/^(?:replace|split)$/.test(n)?String.prototype:hn)[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|join|replace|shift)$/.test(n);c.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var u=this.value();return t.apply(Tn(u)?u:[],n)}return this[r](function(r){return t.apply(Tn(r)?r:[],n);
})}}),c.prototype.toJSON=c.prototype.valueOf=c.prototype.value=function(){return F(this.__wrapped__,this.__actions__)},(pn||{})._=c,typeof define=="function"&&typeof define.amd=="object"&&define.amd? define(function(){return c}):ln?((ln.exports=c)._=c,an._=c):sn._=c}).call(this);
;(function(){function n(n,t){return n.push.apply(n,t),n}function t(n){return function(t){return null==t?Z:t[n]}}function r(n,t,r,e,u){return u(n,function(n,u,o){r=e?(e=false,n):t(r,n,u,o)}),r}function e(n,t){return d(t,function(t){return n[t]})}function u(n){return n instanceof o?n:new o(n)}function o(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t}function i(n,t,r,e){return n===Z||J(n,an[r])&&!ln.call(e,r)?t:n}function c(n){return V(n)?vn(n):{}}function f(n,t,r){if(typeof n!="function")throw new TypeError("Expected a function");
return setTimeout(function(){n.apply(Z,r)},t)}function a(n,t){var r=true;return jn(n,function(n,e,u){return r=!!t(n,e,u)}),r}function l(n,t,r){for(var e=-1,u=n.length;++e<u;){var o=n[e],i=t(o);if(null!=i&&(c===Z?i===i:r(i,c)))var c=i,f=o}return f}function p(n,t){var r=[];return jn(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function s(t,r,e,u,o){var i=-1,c=t.length;for(e||(e=D),o||(o=[]);++i<c;){var f=t[i];0<r&&e(f)?1<r?s(f,r-1,e,u,o):n(o,f):u||(o[o.length]=f)}return o}function h(n,t){return n&&dn(n,t,Rn);
}function v(n,t){return p(t,function(t){return U(n[t])})}function b(n,t){return n>t}function y(n,t,r,e,u){return n===t||(null==n||null==t||!V(n)&&!H(t)?n!==n&&t!==t:g(n,t,y,r,e,u))}function g(n,t,r,e,u,o){var i=wn(n),c=wn(t),f="[object Array]",a="[object Array]";i||(f=sn.call(n),f="[object Arguments]"==f?"[object Object]":f),c||(a=sn.call(t),a="[object Arguments]"==a?"[object Object]":a);var l="[object Object]"==f&&true,c="[object Object]"==a&&true,a=f==a;o||(o=[]);var p=On(o,function(t){return t[0]==n;
}),s=On(o,function(n){return n[0]==t});if(p&&s)return p[1]==t;if(o.push([n,t]),o.push([t,n]),a&&!l){if(i)r=B(n,t,r,e,u,o);else n:{switch(f){case"[object Boolean]":case"[object Date]":case"[object Number]":r=J(+n,+t);break n;case"[object Error]":r=n.name==t.name&&n.message==t.message;break n;case"[object RegExp]":case"[object String]":r=n==t+"";break n}r=false}return o.pop(),r}return 2&u||(i=l&&ln.call(n,"__wrapped__"),f=c&&ln.call(t,"__wrapped__"),!i&&!f)?!!a&&(r=R(n,t,r,e,u,o),o.pop(),r):(i=i?n.value():n,
f=f?t.value():t,r=r(i,f,e,u,o),o.pop(),r)}function _(n){return typeof n=="function"?n:null==n?X:(typeof n=="object"?m:t)(n)}function j(n,t){return n<t}function d(n,t){var r=-1,e=P(n)?Array(n.length):[];return jn(n,function(n,u,o){e[++r]=t(n,u,o)}),e}function m(n){var t=gn(n);return function(r){var e=t.length;if(null==r)return!e;for(r=Object(r);e--;){var u=t[e];if(!(u in r&&y(n[u],r[u],Z,3)))return false}return true}}function O(n,t){return n=Object(n),C(t,function(t,r){return r in n&&(t[r]=n[r]),t},{})}function x(n){
var t;return t=_n(t===Z?n.length-1:t,0),function(){for(var r=arguments,e=-1,u=_n(r.length-t,0),o=Array(u);++e<u;)o[e]=r[t+e];for(e=-1,u=Array(t+1);++e<t;)u[e]=r[e];return u[t]=o,n.apply(this,u)}}function A(n,t,r){var e=-1,u=n.length;for(0>t&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Array(u);++e<u;)r[e]=n[e+t];return r}function E(n){return A(n,0,n.length)}function w(n,t){var r;return jn(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}function k(t,r){return C(r,function(t,r){return r.func.apply(r.thisArg,n([t],r.args));
},t)}function N(n,t,r,e){r||(r={});for(var u=-1,o=t.length;++u<o;){var i=t[u],c=e?e(r[i],n[i],i,r,n):Z,f=r,a=i,i=c===Z?n[i]:c,c=f[a];ln.call(f,a)&&J(c,i)&&(i!==Z||a in f)||(f[a]=i)}return r}function S(n){return x(function(t,r){var e=-1,u=r.length,o=1<u?r[u-1]:Z,o=3<n.length&&typeof o=="function"?(u--,o):Z;for(t=Object(t);++e<u;){var i=r[e];i&&n(t,i,e,o)}return t})}function T(n){return function(){var t=arguments,r=c(n.prototype),t=n.apply(r,t);return V(t)?t:r}}function F(n,t,r){function e(){for(var o=-1,i=arguments.length,c=-1,f=r.length,a=Array(f+i),l=this&&this!==un&&this instanceof e?u:n;++c<f;)a[c]=r[c];
for(;i--;)a[c++]=arguments[++o];return l.apply(t,a)}if(typeof n!="function")throw new TypeError("Expected a function");var u=T(n);return e}function B(n,t,r,e,u,o){var i=n.length,c=t.length;if(i!=c&&!(2&u&&c>i))return false;for(var c=-1,f=true,a=1&u?[]:Z;++c<i;){var l=n[c],p=t[c];if(void 0!==Z){f=false;break}if(a){if(!w(t,function(n,t){if(!$(a,t)&&(l===n||r(l,n,e,u,o)))return a.push(t)})){f=false;break}}else if(l!==p&&!r(l,p,e,u,o)){f=false;break}}return f}function R(n,t,r,e,u,o){var i=2&u,c=Rn(n),f=c.length,a=Rn(t).length;
if(f!=a&&!i)return false;for(var l=f;l--;){var p=c[l];if(!(i?p in t:ln.call(t,p)))return false}for(a=true;++l<f;){var p=c[l],s=n[p],h=t[p];if(void 0!==Z||s!==h&&!r(s,h,e,u,o)){a=false;break}i||(i="constructor"==p)}return a&&!i&&(r=n.constructor,e=t.constructor,r!=e&&"constructor"in n&&"constructor"in t&&!(typeof r=="function"&&r instanceof r&&typeof e=="function"&&e instanceof e)&&(a=false)),a}function D(n){return wn(n)||M(n)}function I(n){var t=[];if(null!=n)for(var r in Object(n))t.push(r);return t}function q(n){
return n&&n.length?n[0]:Z}function $(n,t,r){var e=n?n.length:0;r=typeof r=="number"?0>r?_n(e+r,0):r:0,r=(r||0)-1;for(var u=t===t;++r<e;){var o=n[r];if(u?o===t:o!==o)return r}return-1}function z(n,t){return jn(n,_(t))}function C(n,t,e){return r(n,_(t),e,3>arguments.length,jn)}function G(n,t){var r;if(typeof t!="function")throw new TypeError("Expected a function");return n=kn(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=Z),r}}function J(n,t){return n===t||n!==n&&t!==t}function M(n){
return H(n)&&P(n)&&ln.call(n,"callee")&&(!bn.call(n,"callee")||"[object Arguments]"==sn.call(n))}function P(n){var t;return(t=null!=n)&&(t=n.length,t=typeof t=="number"&&-1<t&&0==t%1&&9007199254740991>=t),t&&!U(n)}function U(n){return n=V(n)?sn.call(n):"","[object Function]"==n||"[object GeneratorFunction]"==n}function V(n){var t=typeof n;return!!n&&("object"==t||"function"==t)}function H(n){return!!n&&typeof n=="object"}function K(n){return typeof n=="number"||H(n)&&"[object Number]"==sn.call(n)}
function L(n){return typeof n=="string"||!wn(n)&&H(n)&&"[object String]"==sn.call(n)}function Q(n){return typeof n=="string"?n:null==n?"":n+""}function W(n){return n?e(n,Rn(n)):[]}function X(n){return n}function Y(t,r,e){var u=Rn(r),o=v(r,u);null!=e||V(r)&&(o.length||!u.length)||(e=r,r=t,t=this,o=v(r,Rn(r)));var i=!(V(e)&&"chain"in e&&!e.chain),c=U(t);return jn(o,function(e){var u=r[e];t[e]=u,c&&(t.prototype[e]=function(){var r=this.__chain__;if(i||r){var e=t(this.__wrapped__);return(e.__actions__=E(this.__actions__)).push({
func:u,args:arguments,thisArg:t}),e.__chain__=r,e}return u.apply(t,n([this.value()],arguments))})}),t}var Z,nn=1/0,tn=/[&<>"'`]/g,rn=RegExp(tn.source),en=typeof self=="object"&&self&&self.Object===Object&&self,un=typeof global=="object"&&global&&global.Object===Object&&global||en||Function("return this")(),on=(en=typeof exports=="object"&&exports&&!exports.nodeType&&exports)&&typeof module=="object"&&module&&!module.nodeType&&module,cn=function(n){return function(t){return null==n?Z:n[t]}}({"&":"&amp;",
"<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","`":"&#96;"}),fn=Array.prototype,an=Object.prototype,ln=an.hasOwnProperty,pn=0,sn=an.toString,hn=un._,vn=Object.create,bn=an.propertyIsEnumerable,yn=un.isFinite,gn=function(n,t){return function(r){return n(t(r))}}(Object.keys,Object),_n=Math.max;o.prototype=c(u.prototype),o.prototype.constructor=o;var jn=function(n,t){return function(r,e){if(null==r)return r;if(!P(r))return n(r,e);for(var u=r.length,o=t?u:-1,i=Object(r);(t?o--:++o<u)&&false!==e(i[o],o,i););
return r}}(h),dn=function(n){return function(t,r,e){var u=-1,o=Object(t);e=e(t);for(var i=e.length;i--;){var c=e[n?i:++u];if(false===r(o[c],c,o))break}return t}}(),mn=String,On=function(n){return function(t,r,e){var u=Object(t);if(!P(t)){var o=_(r);t=Rn(t),r=function(n){return o(u[n],n,u)}}return r=n(t,r,e),-1<r?u[o?t[r]:r]:Z}}(function(n,t,r){var e=n?n.length:0;if(!e)return-1;r=null==r?0:kn(r),0>r&&(r=_n(e+r,0));n:{for(t=_(t),e=n.length,r+=-1;++r<e;)if(t(n[r],r,n)){n=r;break n}n=-1}return n}),xn=x(function(n,t,r){
return F(n,t,r)}),An=x(function(n,t){return f(n,1,t)}),En=x(function(n,t,r){return f(n,Nn(t)||0,r)}),wn=Array.isArray,kn=Number,Nn=Number,Sn=S(function(n,t){N(t,gn(t),n)}),Tn=S(function(n,t){N(t,I(t),n)}),Fn=S(function(n,t,r,e){N(t,Dn(t),n,e)}),Bn=x(function(n){return n.push(Z,i),Fn.apply(Z,n)}),Rn=gn,Dn=I,In=x(function(n,t){return null==n?{}:O(n,d(s(t,1),mn))});u.assignIn=Tn,u.before=G,u.bind=xn,u.chain=function(n){return n=u(n),n.__chain__=true,n},u.compact=function(n){return p(n,Boolean)},u.concat=function(){
for(var t=arguments.length,r=Array(t?t-1:0),e=arguments[0],u=t;u--;)r[u-1]=arguments[u];return t?n(wn(e)?E(e):[e],s(r,1)):[]},u.create=function(n,t){var r=c(n);return t?Sn(r,t):r},u.defaults=Bn,u.defer=An,u.delay=En,u.filter=function(n,t){return p(n,_(t))},u.flatten=function(n){return n&&n.length?s(n,1):[]},u.flattenDeep=function(n){return n&&n.length?s(n,nn):[]},u.iteratee=_,u.keys=Rn,u.map=function(n,t){return d(n,_(t))},u.matches=function(n){return m(Sn({},n))},u.mixin=Y,u.negate=function(n){if(typeof n!="function")throw new TypeError("Expected a function");
return function(){return!n.apply(this,arguments)}},u.once=function(n){return G(2,n)},u.pick=In,u.slice=function(n,t,r){var e=n?n.length:0;return r=r===Z?e:+r,e?A(n,null==t?0:+t,r):[]},u.sortBy=function(n,r){var e=0;return r=_(r),d(d(n,function(n,t,u){return{value:n,index:e++,criteria:r(n,t,u)}}).sort(function(n,t){var r;n:{r=n.criteria;var e=t.criteria;if(r!==e){var u=r!==Z,o=null===r,i=r===r,c=e!==Z,f=null===e,a=e===e;if(!f&&r>e||o&&c&&a||!u&&a||!i){r=1;break n}if(!o&&r<e||f&&u&&i||!c&&i||!a){r=-1;
break n}}r=0}return r||n.index-t.index}),t("value"))},u.tap=function(n,t){return t(n),n},u.thru=function(n,t){return t(n)},u.toArray=function(n){return P(n)?n.length?E(n):[]:W(n)},u.values=W,u.extend=Tn,Y(u,u),u.clone=function(n){return V(n)?wn(n)?E(n):N(n,gn(n)):n},u.escape=function(n){return(n=Q(n))&&rn.test(n)?n.replace(tn,cn):n},u.every=function(n,t,r){return t=r?Z:t,a(n,_(t))},u.find=On,u.forEach=z,u.has=function(n,t){return null!=n&&ln.call(n,t)},u.head=q,u.identity=X,u.indexOf=$,u.isArguments=M,
u.isArray=wn,u.isBoolean=function(n){return true===n||false===n||H(n)&&"[object Boolean]"==sn.call(n)},u.isDate=function(n){return H(n)&&"[object Date]"==sn.call(n)},u.isEmpty=function(n){return P(n)&&(wn(n)||L(n)||U(n.splice)||M(n))?!n.length:!gn(n).length},u.isEqual=function(n,t){return y(n,t)},u.isFinite=function(n){return typeof n=="number"&&yn(n)},u.isFunction=U,u.isNaN=function(n){return K(n)&&n!=+n},u.isNull=function(n){return null===n},u.isNumber=K,u.isObject=V,u.isRegExp=function(n){return V(n)&&"[object RegExp]"==sn.call(n);
},u.isString=L,u.isUndefined=function(n){return n===Z},u.last=function(n){var t=n?n.length:0;return t?n[t-1]:Z},u.max=function(n){return n&&n.length?l(n,X,b):Z},u.min=function(n){return n&&n.length?l(n,X,j):Z},u.noConflict=function(){return un._===this&&(un._=hn),this},u.noop=function(){},u.reduce=C,u.result=function(n,t,r){return t=null==n?Z:n[t],t===Z&&(t=r),U(t)?t.call(n):t},u.size=function(n){return null==n?0:(n=P(n)?n:gn(n),n.length)},u.some=function(n,t,r){return t=r?Z:t,w(n,_(t))},u.uniqueId=function(n){
var t=++pn;return Q(n)+t},u.each=z,u.first=q,Y(u,function(){var n={};return h(u,function(t,r){ln.call(u.prototype,r)||(n[r]=t)}),n}(),{chain:false}),u.VERSION="4.14.2",jn("pop join replace reverse split push shift sort splice unshift".split(" "),function(n){var t=(/^(?:replace|split)$/.test(n)?String.prototype:fn)[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|join|replace|shift)$/.test(n);u.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var u=this.value();return t.apply(wn(u)?u:[],n);
}return this[r](function(r){return t.apply(wn(r)?r:[],n)})}}),u.prototype.toJSON=u.prototype.valueOf=u.prototype.value=function(){return k(this.__wrapped__,this.__actions__)},typeof define=="function"&&typeof define.amd=="object"&&define.amd?(un._=u, define(function(){return u})):on?((on.exports=u)._=u,en._=u):un._=u}).call(this);

236
dist/lodash.fp.js vendored
View File

@@ -151,11 +151,11 @@ return /******/ (function(modules) { // webpackBootstrap
* @param {Function} cloner The function to clone arguments.
* @returns {Function} Returns the new immutable function.
*/
function immutWrap(func, cloner) {
function wrapImmutable(func, cloner) {
return function() {
var length = arguments.length;
if (!length) {
return result;
return;
}
var args = Array(length);
while (length--) {
@@ -223,6 +223,7 @@ return /******/ (function(modules) { // webpackBootstrap
'keys': util.keys,
'rearg': util.rearg,
'spread': util.spread,
'toInteger': util.toInteger,
'toPath': util.toPath
};
@@ -236,6 +237,7 @@ return /******/ (function(modules) { // webpackBootstrap
keys = helpers.keys,
rearg = helpers.rearg,
spread = helpers.spread,
toInteger = helpers.toInteger,
toPath = helpers.toPath;
var aryMethodKeys = keys(mapping.aryMethod);
@@ -289,6 +291,18 @@ return /******/ (function(modules) { // webpackBootstrap
return func;
};
},
'nthArg': function(nthArg) {
return function(n) {
var arity = n < 0 ? 1 : (toInteger(n) + 1);
return curry(nthArg(n), arity);
};
},
'rearg': function(rearg) {
return function(func, indexes) {
var arity = indexes ? indexes.length : 0;
return curry(rearg(func, indexes), arity);
};
},
'runInContext': function(runInContext) {
return function(context) {
return baseConvert(util, runInContext(context), options);
@@ -298,6 +312,77 @@ return /******/ (function(modules) { // webpackBootstrap
/*--------------------------------------------------------------------------*/
/**
* Casts `func` to a function with an arity capped iteratee if needed.
*
* @private
* @param {string} name The name of the function to inspect.
* @param {Function} func The function to inspect.
* @returns {Function} Returns the cast function.
*/
function castCap(name, func) {
if (config.cap) {
var indexes = mapping.iterateeRearg[name];
if (indexes) {
return iterateeRearg(func, indexes);
}
var n = !isLib && mapping.iterateeAry[name];
if (n) {
return iterateeAry(func, n);
}
}
return func;
}
/**
* Casts `func` to a curried function if needed.
*
* @private
* @param {string} name The name of the function to inspect.
* @param {Function} func The function to inspect.
* @param {number} n The arity of `func`.
* @returns {Function} Returns the cast function.
*/
function castCurry(name, func, n) {
return (forceCurry || (config.curry && n > 1))
? curry(func, n)
: func;
}
/**
* Casts `func` to a fixed arity function if needed.
*
* @private
* @param {string} name The name of the function to inspect.
* @param {Function} func The function to inspect.
* @param {number} n The arity cap.
* @returns {Function} Returns the cast function.
*/
function castFixed(name, func, n) {
if (config.fixed && (forceFixed || !mapping.skipFixed[name])) {
var data = mapping.methodSpread[name],
start = data && data.start;
return start === undefined ? ary(func, n) : spread(func, start);
}
return func;
}
/**
* Casts `func` to an rearged function if needed.
*
* @private
* @param {string} name The name of the function to inspect.
* @param {Function} func The function to inspect.
* @param {number} n The arity of `func`.
* @returns {Function} Returns the cast function.
*/
function castRearg(name, func, n) {
return (config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name]))
? rearg(func, mapping.methodRearg[name] || mapping.aryRearg[n])
: func;
}
/**
* Creates a clone of `object` by `path`.
*
@@ -390,12 +475,11 @@ return /******/ (function(modules) { // webpackBootstrap
}
/**
* Creates a function that invokes `func` with its first argument passed
* thru `transform`.
* Creates a function that invokes `func` with its first argument transformed.
*
* @private
* @param {Function} func The function to wrap.
* @param {...Function} transform The functions to transform the first argument.
* @param {Function} transform The argument transform.
* @returns {Function} Returns the new function.
*/
function overArg(func, transform) {
@@ -435,42 +519,27 @@ return /******/ (function(modules) { // webpackBootstrap
}
else if (config.immutable) {
if (mutateMap.array[name]) {
wrapped = immutWrap(func, cloneArray);
wrapped = wrapImmutable(func, cloneArray);
}
else if (mutateMap.object[name]) {
wrapped = immutWrap(func, createCloner(func));
wrapped = wrapImmutable(func, createCloner(func));
}
else if (mutateMap.set[name]) {
wrapped = immutWrap(func, cloneByPath);
wrapped = wrapImmutable(func, cloneByPath);
}
}
each(aryMethodKeys, function(aryKey) {
each(mapping.aryMethod[aryKey], function(otherName) {
if (name == otherName) {
var aryN = !isLib && mapping.iterateeAry[name],
reargIndexes = mapping.iterateeRearg[name],
spreadStart = mapping.methodSpread[name];
var spreadData = mapping.methodSpread[name],
afterRearg = spreadData && spreadData.afterRearg;
result = wrapped;
if (config.fixed && (forceFixed || !mapping.skipFixed[name])) {
result = spreadStart === undefined
? ary(result, aryKey)
: spread(result, spreadStart);
}
if (config.rearg && aryKey > 1 && (forceRearg || !mapping.skipRearg[name])) {
result = rearg(result, mapping.methodRearg[name] || mapping.aryRearg[aryKey]);
}
if (config.cap) {
if (reargIndexes) {
result = iterateeRearg(result, reargIndexes);
} else if (aryN) {
result = iterateeAry(result, aryN);
}
}
if (forceCurry || (config.curry && aryKey > 1)) {
forceCurry && console.log(forceCurry, name);
result = curry(result, aryKey);
}
result = afterRearg
? castFixed(name, castRearg(name, wrapped, aryKey), aryKey)
: castRearg(name, castFixed(name, wrapped, aryKey), aryKey);
result = castCap(name, result);
result = castCurry(name, result, aryKey);
return false;
}
});
@@ -559,11 +628,20 @@ return /******/ (function(modules) { // webpackBootstrap
'entries': 'toPairs',
'entriesIn': 'toPairsIn',
'extend': 'assignIn',
'extendAll': 'assignInAll',
'extendAllWith': 'assignInAllWith',
'extendWith': 'assignInWith',
'first': 'head',
// Methods that are curried variants of others.
'conforms': 'conformsTo',
'matches': 'isMatch',
'property': 'get',
// Ramda aliases.
'__': 'placeholder',
'F': 'stubFalse',
'T': 'stubTrue',
'all': 'every',
'allPass': 'overEvery',
'always': 'constant',
@@ -577,8 +655,11 @@ return /******/ (function(modules) { // webpackBootstrap
'contains': 'includes',
'dissoc': 'unset',
'dissocPath': 'unset',
'dropLast': 'dropRight',
'dropLastWhile': 'dropRightWhile',
'equals': 'isEqual',
'identical': 'eq',
'indexBy': 'keyBy',
'init': 'initial',
'invertObj': 'invert',
'juxt': 'over',
@@ -595,36 +676,44 @@ return /******/ (function(modules) { // webpackBootstrap
'propEq': 'matchesProperty',
'propOr': 'getOr',
'props': 'at',
'symmetricDifference': 'xor',
'symmetricDifferenceBy': 'xorBy',
'symmetricDifferenceWith': 'xorWith',
'takeLast': 'takeRight',
'takeLastWhile': 'takeRightWhile',
'unapply': 'rest',
'unnest': 'flatten',
'useWith': 'overArgs',
'whereEq': 'filter',
'where': 'conformsTo',
'whereEq': 'isMatch',
'zipObj': 'zipObject'
};
/** Used to map ary to method names. */
exports.aryMethod = {
'1': [
'attempt', 'castArray', 'ceil', 'create', 'curry', 'curryRight', 'floor',
'flow', 'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method',
'methodOf', 'mixin', 'over', 'overEvery', 'overSome', 'rest', 'reverse',
'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create',
'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow',
'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll',
'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse',
'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart',
'uniqueId', 'words'
'uniqueId', 'words', 'zipAll'
],
'2': [
'add', 'after', 'ary', 'assign', 'assignIn', 'at', 'before', 'bind', 'bindAll',
'bindKey', 'chunk', 'cloneDeepWith', 'cloneWith', 'concat', 'countBy', 'curryN',
'curryRightN', 'debounce', 'defaults', 'defaultsDeep', 'delay', 'difference',
'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith',
'eq', 'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast',
'findLastIndex', 'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth',
'forEach', 'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight',
'get', 'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf',
'intersection', 'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch',
'join', 'keyBy', 'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues',
'matchesProperty', 'maxBy', 'meanBy', 'merge', 'minBy', 'multiply', 'nth',
'omit', 'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt',
'partial', 'partialRight', 'partition', 'pick', 'pickBy', 'pull', 'pullAll',
'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith',
'at', 'before', 'bind', 'bindAll', 'bindKey', 'chunk', 'cloneDeepWith',
'cloneWith', 'concat', 'conformsTo', 'countBy', 'curryN', 'curryRightN',
'debounce', 'defaults', 'defaultsDeep', 'defaultTo', 'delay', 'difference',
'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq',
'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',
'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth', 'forEach',
'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight', 'get',
'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf', 'intersection',
'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch', 'join', 'keyBy',
'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues', 'matchesProperty',
'maxBy', 'meanBy', 'merge', 'mergeAllWith', 'minBy', 'multiply', 'nth', 'omit',
'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt', 'partial',
'partialRight', 'partition', 'pick', 'pickBy', 'propertyOf', 'pull', 'pullAll',
'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove',
'repeat', 'restFrom', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex',
'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy',
@@ -703,7 +792,9 @@ return /******/ (function(modules) { // webpackBootstrap
/** Used to map method names to rearg configs. */
exports.methodRearg = {
'assignInAllWith': [1, 2, 0],
'assignInWith': [1, 2, 0],
'assignAllWith': [1, 2, 0],
'assignWith': [1, 2, 0],
'differenceBy': [1, 2, 0],
'differenceWith': [1, 2, 0],
@@ -712,6 +803,7 @@ return /******/ (function(modules) { // webpackBootstrap
'intersectionWith': [1, 2, 0],
'isEqualWith': [1, 2, 0],
'isMatchWith': [2, 1, 0],
'mergeAllWith': [1, 2, 0],
'mergeWith': [1, 2, 0],
'padChars': [2, 1, 0],
'padCharsEnd': [2, 1, 0],
@@ -731,11 +823,20 @@ return /******/ (function(modules) { // webpackBootstrap
/** Used to map method names to spread configs. */
exports.methodSpread = {
'invokeArgs': 2,
'invokeArgsMap': 2,
'partial': 1,
'partialRight': 1,
'without': 1
'assignAll': { 'start': 0 },
'assignAllWith': { 'afterRearg': true, 'start': 1 },
'assignInAll': { 'start': 0 },
'assignInAllWith': { 'afterRearg': true, 'start': 1 },
'defaultsAll': { 'start': 0 },
'defaultsDeepAll': { 'start': 0 },
'invokeArgs': { 'start': 2 },
'invokeArgsMap': { 'start': 2 },
'mergeAll': { 'start': 0 },
'mergeAllWith': { 'afterRearg': true, 'start': 1 },
'partial': { 'start': 1 },
'partialRight': { 'start': 1 },
'without': { 'start': 1 },
'zipAll': { 'start': 0 }
};
/** Used to identify methods which mutate arrays or objects. */
@@ -752,13 +853,21 @@ return /******/ (function(modules) { // webpackBootstrap
},
'object': {
'assign': true,
'assignAll': true,
'assignAllWith': true,
'assignIn': true,
'assignInAll': true,
'assignInAllWith': true,
'assignInWith': true,
'assignWith': true,
'defaults': true,
'defaultsAll': true,
'defaultsDeep': true,
'defaultsDeepAll': true,
'merge': true,
'mergeWith': true
'mergeAll': true,
'mergeAllWith': true,
'mergeWith': true,
},
'set': {
'set': true,
@@ -798,8 +907,14 @@ return /******/ (function(modules) { // webpackBootstrap
/** Used to map method names to other names. */
exports.remap = {
'assignAll': 'assign',
'assignAllWith': 'assignWith',
'assignInAll': 'assignIn',
'assignInAllWith': 'assignInWith',
'curryN': 'curry',
'curryRightN': 'curryRight',
'defaultsAll': 'defaults',
'defaultsDeepAll': 'defaultsDeep',
'findFrom': 'find',
'findIndexFrom': 'findIndex',
'findLastFrom': 'findLast',
@@ -810,14 +925,18 @@ return /******/ (function(modules) { // webpackBootstrap
'invokeArgs': 'invoke',
'invokeArgsMap': 'invokeMap',
'lastIndexOfFrom': 'lastIndexOf',
'mergeAll': 'merge',
'mergeAllWith': 'mergeWith',
'padChars': 'pad',
'padCharsEnd': 'padEnd',
'padCharsStart': 'padStart',
'propertyOf': 'get',
'restFrom': 'rest',
'spreadFrom': 'spread',
'trimChars': 'trim',
'trimCharsEnd': 'trimEnd',
'trimCharsStart': 'trimStart'
'trimCharsStart': 'trimStart',
'zipAll': 'zip'
};
/** Used to track methods that skip fixing their arity. */
@@ -827,6 +946,7 @@ return /******/ (function(modules) { // webpackBootstrap
'flowRight': true,
'iteratee': true,
'mixin': true,
'rearg': true,
'runInContext': true
};
@@ -852,12 +972,14 @@ return /******/ (function(modules) { // webpackBootstrap
'overArgs': true,
'partial': true,
'partialRight': true,
'propertyOf': true,
'random': true,
'range': true,
'rangeRight': true,
'subtract': true,
'zip': true,
'zipObject': true
'zipObject': true,
'zipObjectDeep': true
};

33
dist/lodash.fp.min.js vendored
View File

@@ -1,17 +1,20 @@
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.fp=e():t.fp=e()}(this,function(){return function(t){function e(n){if(r[n])return r[n].exports;var i=r[n]={exports:{},id:n,loaded:!1};return t[n].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var r={};return e.m=t,e.c=r,e.p="",e(0)}([function(t,e,r){function n(t,e){return i(t,t,e)}var i=r(1);"function"==typeof _&&(_=n(_.runInContext())),
t.exports=n},function(t,e,r){function n(t,e){return 2==e?function(e,r){return t.apply(void 0,arguments)}:function(e){return t.apply(void 0,arguments)}}function i(t,e){return 2==e?function(e,r){return t(e,r)}:function(e){return t(e)}}function a(t){for(var e=t?t.length:0,r=Array(e);e--;)r[e]=t[e];return r}function o(t){return function(e){return t({},e)}}function s(t,e){return function(){var r=arguments.length;if(!r)return i;for(var n=Array(r);r--;)n[r]=arguments[r];var i=n[0]=e.apply(void 0,n);return t.apply(void 0,n),
i}}function u(t,e,r,c){function f(t,e){e=D(e);for(var r=-1,n=e.length,i=n-1,a=w(Object(t)),o=a;null!=o&&++r<n;){var s=e[r],u=o[s];null!=u&&(o[e[r]]=w(r==i?u:Object(u))),o=o[s]}return a}function h(t){return N.runInContext.convert(t)(void 0)}function y(t,e){var r=c;return function(n){var i=I?E:F,a=I?E[t]:e,o=C(C({},r),n);return u(i,t,a,o)}}function m(t,e){return v(t,function(t){return"function"==typeof t?i(t,e):t})}function g(t,e){return v(t,function(t){var r=e.length;return n(z(i(t,r),e),r)})}function v(t,e){
return function(){var r=arguments.length;if(!r)return t();for(var n=Array(r);r--;)n[r]=arguments[r];var i=A.rearg?0:r-1;return n[i]=e(n[i]),t.apply(void 0,n)}}function x(t,e){t=p.aliasToReal[t]||t;var r,n=e,i=_[t];return i?n=i(e):A.immutable&&(d.array[t]?n=s(e,a):d.object[t]?n=s(e,o(e)):d.set[t]&&(n=s(e,f))),M(T,function(e){return M(p.aryMethod[e],function(i){if(t==i){var a=!I&&p.iterateeAry[t],o=p.iterateeRearg[t],s=p.methodSpread[t];return r=n,!A.fixed||!b&&p.skipFixed[t]||(r=void 0===s?j(r,e):K(r,s)),
A.rearg&&e>1&&(k||!p.skipRearg[t])&&(r=z(r,p.methodRearg[t]||p.aryRearg[e])),A.cap&&(o?r=g(r,o):a&&(r=m(r,a))),(O||A.curry&&e>1)&&(O&&console.log(O,t),r=L(r,e)),!1}}),!r}),r||(r=n),r==e&&(r=O?L(r,1):function(){return e.apply(this,arguments)}),r.convert=y(t,e),p.placeholder[t]&&(W=!0,r.placeholder=e.placeholder=B),r}var W,I="function"==typeof e,R=e===Object(e);if(R&&(c=r,r=e,e=void 0),null==r)throw new TypeError;c||(c={});var A={cap:"cap"in c?c.cap:!0,curry:"curry"in c?c.curry:!0,fixed:"fixed"in c?c.fixed:!0,
immutable:"immutable"in c?c.immutable:!0,rearg:"rearg"in c?c.rearg:!0},O="curry"in c&&c.curry,b="fixed"in c&&c.fixed,k="rearg"in c&&c.rearg,B=I?r:l,E=I?r.runInContext():void 0,F=I?r:{ary:t.ary,assign:t.assign,clone:t.clone,curry:t.curry,forEach:t.forEach,isArray:t.isArray,isFunction:t.isFunction,iteratee:t.iteratee,keys:t.keys,rearg:t.rearg,spread:t.spread,toPath:t.toPath},j=F.ary,C=F.assign,w=F.clone,L=F.curry,M=F.forEach,q=F.isArray,P=F.isFunction,S=F.keys,z=F.rearg,K=F.spread,D=F.toPath,T=S(p.aryMethod),_={
castArray:function(t){return function(){var e=arguments[0];return q(e)?t(a(e)):t.apply(void 0,arguments)}},iteratee:function(t){return function(){var e=arguments[0],r=arguments[1],n=t(e,r),a=n.length;return A.cap&&"number"==typeof r?(r=r>2?r-2:1,a&&r>=a?n:i(n,r)):n}},mixin:function(t){return function(e){var r=this;if(!P(r))return t(r,Object(e));var n=[];return M(S(e),function(t){P(e[t])&&n.push([t,r.prototype[t]])}),t(r,Object(e)),M(n,function(t){var e=t[1];P(e)?r.prototype[t[0]]=e:delete r.prototype[t[0]];
}),r}},runInContext:function(e){return function(r){return u(t,e(r),c)}}};if(!R)return x(e,r);var N=r,V=[];return M(T,function(t){M(p.aryMethod[t],function(t){var e=N[p.remap[t]||t];e&&V.push([t,x(t,e)])})}),M(S(N),function(t){var e=N[t];if("function"==typeof e){for(var r=V.length;r--;)if(V[r][0]==t)return;e.convert=y(t,e),V.push([t,e])}}),M(V,function(t){N[t[0]]=t[1]}),N.convert=h,W&&(N.placeholder=B),M(S(N),function(t){M(p.realToAlias[t]||[],function(e){N[e]=N[t]})}),N}var p=r(2),d=p.mutate,l=r(3);
t.exports=u},function(t,e){e.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendWith:"assignInWith",first:"head",__:"placeholder",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",equals:"isEqual",identical:"eq",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",
nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",unapply:"rest",unnest:"flatten",useWith:"overArgs",whereEq:"filter",zipObj:"zipObject"},e.aryMethod={1:["attempt","castArray","ceil","create","curry","curryRight","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","methodOf","mixin","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words"],
2:["add","after","ary","assign","assignIn","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],
(function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.fp=e():t.fp=e()})(this,function(){return function(t){function e(n){if(r[n])return r[n].exports;var i=r[n]={exports:{},id:n,loaded:!1};return t[n].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var r={};return e.m=t,e.c=r,e.p="",e(0)}([function(t,e,r){function n(t,e){return i(t,t,e)}var i=r(1);"function"==typeof _&&(_=n(_.runInContext())),
t.exports=n},function(t,e,r){function n(t,e){return 2==e?function(e,r){return t.apply(void 0,arguments)}:function(e){return t.apply(void 0,arguments)}}function i(t,e){return 2==e?function(e,r){return t(e,r)}:function(e){return t(e)}}function a(t){for(var e=t?t.length:0,r=Array(e);e--;)r[e]=t[e];return r}function o(t){return function(e){return t({},e)}}function s(t,e){return function(){var r=arguments.length;if(r){for(var n=Array(r);r--;)n[r]=arguments[r];var i=n[0]=e.apply(void 0,n);return t.apply(void 0,n),
i}}}function l(t,e,r,d){function c(t,e){if(B.cap){var r=u.iterateeRearg[t];if(r)return x(e,r);var n=!b&&u.iterateeAry[t];if(n)return W(e,n)}return e}function h(t,e,r){return E||B.curry&&r>1?q(e,r):e}function g(t,e,r){if(B.fixed&&(F||!u.skipFixed[t])){var n=u.methodSpread[t],i=n&&n.start;return void 0===i?M(e,r):N(e,i)}return e}function y(t,e,r){return B.rearg&&r>1&&(j||!u.skipRearg[t])?_(e,u.methodRearg[t]||u.aryRearg[r]):e}function m(t,e){e=U(e);for(var r=-1,n=e.length,i=n-1,a=z(Object(t)),o=a;null!=o&&++r<n;){
var s=e[r],l=o[s];null!=l&&(o[e[r]]=z(r==i?l:Object(l))),o=o[s]}return a}function v(t){return J.runInContext.convert(t)(void 0)}function A(t,e){var r=d;return function(n){var i=b?C:w,a=b?C[t]:e,o=D(D({},r),n);return l(i,t,a,o)}}function W(t,e){return I(t,function(t){return"function"==typeof t?i(t,e):t})}function x(t,e){return I(t,function(t){var r=e.length;return n(_(i(t,r),e),r)})}function I(t,e){return function(){var r=arguments.length;if(!r)return t();for(var n=Array(r);r--;)n[r]=arguments[r];var i=B.rearg?0:r-1;
return n[i]=e(n[i]),t.apply(void 0,n)}}function R(t,e){t=u.aliasToReal[t]||t;var r,n=e,i=H[t];return i?n=i(e):B.immutable&&(p.array[t]?n=s(e,a):p.object[t]?n=s(e,o(e)):p.set[t]&&(n=s(e,m))),P(G,function(e){return P(u.aryMethod[e],function(i){if(t==i){var a=u.methodSpread[t],o=a&&a.afterRearg;return r=o?g(t,y(t,n,e),e):y(t,g(t,n,e),e),r=c(t,r),r=h(t,r,e),!1}}),!r}),r||(r=n),r==e&&(r=E?q(r,1):function(){return e.apply(this,arguments)}),r.convert=A(t,e),u.placeholder[t]&&(O=!0,r.placeholder=e.placeholder=L),
r}var O,b="function"==typeof e,k=e===Object(e);if(k&&(d=r,r=e,e=void 0),null==r)throw new TypeError;d||(d={});var B={cap:!("cap"in d)||d.cap,curry:!("curry"in d)||d.curry,fixed:!("fixed"in d)||d.fixed,immutable:!("immutable"in d)||d.immutable,rearg:!("rearg"in d)||d.rearg},E="curry"in d&&d.curry,F="fixed"in d&&d.fixed,j="rearg"in d&&d.rearg,L=b?r:f,C=b?r.runInContext():void 0,w=b?r:{ary:t.ary,assign:t.assign,clone:t.clone,curry:t.curry,forEach:t.forEach,isArray:t.isArray,isFunction:t.isFunction,iteratee:t.iteratee,
keys:t.keys,rearg:t.rearg,spread:t.spread,toInteger:t.toInteger,toPath:t.toPath},M=w.ary,D=w.assign,z=w.clone,q=w.curry,P=w.forEach,S=w.isArray,T=w.isFunction,K=w.keys,_=w.rearg,N=w.spread,V=w.toInteger,U=w.toPath,G=K(u.aryMethod),H={castArray:function(t){return function(){var e=arguments[0];return S(e)?t(a(e)):t.apply(void 0,arguments)}},iteratee:function(t){return function(){var e=arguments[0],r=arguments[1],n=t(e,r),a=n.length;return B.cap&&"number"==typeof r?(r=r>2?r-2:1,a&&a<=r?n:i(n,r)):n}},
mixin:function(t){return function(e){var r=this;if(!T(r))return t(r,Object(e));var n=[];return P(K(e),function(t){T(e[t])&&n.push([t,r.prototype[t]])}),t(r,Object(e)),P(n,function(t){var e=t[1];T(e)?r.prototype[t[0]]=e:delete r.prototype[t[0]]}),r}},nthArg:function(t){return function(e){var r=e<0?1:V(e)+1;return q(t(e),r)}},rearg:function(t){return function(e,r){var n=r?r.length:0;return q(t(e,r),n)}},runInContext:function(e){return function(r){return l(t,e(r),d)}}};if(!k)return R(e,r);var J=r,Q=[];
return P(G,function(t){P(u.aryMethod[t],function(t){var e=J[u.remap[t]||t];e&&Q.push([t,R(t,e)])})}),P(K(J),function(t){var e=J[t];if("function"==typeof e){for(var r=Q.length;r--;)if(Q[r][0]==t)return;e.convert=A(t,e),Q.push([t,e])}}),P(Q,function(t){J[t[0]]=t[1]}),J.convert=v,O&&(J.placeholder=L),P(K(J),function(t){P(u.realToAlias[t]||[],function(e){J[e]=J[t]})}),J}var u=r(2),p=u.mutate,f=r(3);t.exports=l},function(t,e){e.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",
extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",
indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"},
e.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],
3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],
4:["fill","setWith","updateWith"]},e.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]},e.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,
transform:2},e.iterateeRearg={mapKeys:[1]},e.methodRearg={assignInWith:[1,2,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],
zipWith:[1,2,0]},e.methodSpread={invokeArgs:2,invokeArgsMap:2,partial:1,partialRight:1,without:1},e.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignIn:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsDeep:!0,merge:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}},e.placeholder={bind:!0,bindKey:!0,curry:!0,curryRight:!0,partial:!0,partialRight:!0},e.realToAlias=function(){var t=Object.prototype.hasOwnProperty,r=e.aliasToReal,n={};
for(var i in r){var a=r[i];t.call(n,a)?n[a].push(i):n[a]=[i]}return n}(),e.remap={curryN:"curry",curryRightN:"curryRight",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart"
},e.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,runInContext:!0},e.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0}},function(t,e){t.exports={}}])});
transform:2},e.iterateeRearg={mapKeys:[1]},e.methodRearg={assignInAllWith:[1,2,0],assignInWith:[1,2,0],assignAllWith:[1,2,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,2,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],
unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]},e.methodSpread={assignAll:{start:0},assignAllWith:{afterRearg:!0,start:1},assignInAll:{start:0},assignInAllWith:{afterRearg:!0,start:1},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{afterRearg:!0,start:1},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}},e.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,
pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}},e.placeholder={bind:!0,bindKey:!0,curry:!0,curryRight:!0,partial:!0,partialRight:!0},e.realToAlias=function(){var t=Object.prototype.hasOwnProperty,r=e.aliasToReal,n={};
for(var i in r){var a=r[i];t.call(n,a)?n[a].push(i):n[a]=[i]}return n}(),e.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",
mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"},e.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0},e.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,
overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}},function(t,e){t.exports={}}])});

1765
dist/lodash.js vendored

File diff suppressed because it is too large Load Diff

244
dist/lodash.min.js vendored
View File

@@ -4,124 +4,126 @@
*/
;(function(){function t(t,n){return t.set(n[0],n[1]),t}function n(t,n){return t.add(n),t}function r(t,n,r){switch(r.length){case 0:return t.call(n);case 1:return t.call(n,r[0]);case 2:return t.call(n,r[0],r[1]);case 3:return t.call(n,r[0],r[1],r[2])}return t.apply(n,r)}function e(t,n,r,e){for(var u=-1,o=t?t.length:0;++u<o;){var i=t[u];n(e,i,r(i),t)}return e}function u(t,n){for(var r=-1,e=t?t.length:0;++r<e&&false!==n(t[r],r,t););return t}function o(t,n){for(var r=t?t.length:0;r--&&false!==n(t[r],r,t););
return t}function i(t,n){for(var r=-1,e=t?t.length:0;++r<e;)if(!n(t[r],r,t))return false;return true}function f(t,n){for(var r=-1,e=t?t.length:0,u=0,o=[];++r<e;){var i=t[r];n(i,r,t)&&(o[u++]=i)}return o}function c(t,n){return!(!t||!t.length)&&-1<d(t,n,0)}function a(t,n,r){for(var e=-1,u=t?t.length:0;++e<u;)if(r(n,t[e]))return true;return false}function l(t,n){for(var r=-1,e=t?t.length:0,u=Array(e);++r<e;)u[r]=n(t[r],r,t);return u}function s(t,n){for(var r=-1,e=n.length,u=t.length;++r<e;)t[u+r]=n[r];return t}function h(t,n,r,e){
var u=-1,o=t?t.length:0;for(e&&o&&(r=t[++u]);++u<o;)r=n(r,t[u],u,t);return r}function p(t,n,r,e){var u=t?t.length:0;for(e&&u&&(r=t[--u]);u--;)r=n(r,t[u],u,t);return r}function _(t,n){for(var r=-1,e=t?t.length:0;++r<e;)if(n(t[r],r,t))return true;return false}function v(t,n,r){var e;return r(t,function(t,r,u){return n(t,r,u)?(e=r,false):void 0}),e}function g(t,n,r,e){var u=t.length;for(r+=e?1:-1;e?r--:++r<u;)if(n(t[r],r,t))return r;return-1}function d(t,n,r){if(n!==n)return M(t,r);--r;for(var e=t.length;++r<e;)if(t[r]===n)return r;
return-1}function y(t,n,r,e){--r;for(var u=t.length;++r<u;)if(e(t[r],n))return r;return-1}function b(t,n){var r=t?t.length:0;return r?w(t,n)/r:V}function x(t,n,r,e,u){return u(t,function(t,u,o){r=e?(e=false,t):n(r,t,u,o)}),r}function j(t,n){var r=t.length;for(t.sort(n);r--;)t[r]=t[r].c;return t}function w(t,n){for(var r,e=-1,u=t.length;++e<u;){var o=n(t[e]);o!==T&&(r=r===T?o:r+o)}return r}function m(t,n){for(var r=-1,e=Array(t);++r<t;)e[r]=n(r);return e}function A(t,n){return l(n,function(n){return[n,t[n]];
})}function O(t){return function(n){return t(n)}}function k(t,n){return l(n,function(n){return t[n]})}function E(t,n){return t.has(n)}function S(t,n){for(var r=-1,e=t.length;++r<e&&-1<d(n,t[r],0););return r}function I(t,n){for(var r=t.length;r--&&-1<d(n,t[r],0););return r}function R(t){return t&&t.Object===Object?t:null}function W(t){return zt[t]}function B(t){return Ut[t]}function L(t){return"\\"+Dt[t]}function M(t,n,r){var e=t.length;for(n+=r?1:-1;r?n--:++n<e;){var u=t[n];if(u!==u)return n}return-1;
}function C(t){var n=false;if(null!=t&&typeof t.toString!="function")try{n=!!(t+"")}catch(r){}return n}function z(t){for(var n,r=[];!(n=t.next()).done;)r.push(n.value);return r}function U(t){var n=-1,r=Array(t.size);return t.forEach(function(t,e){r[++n]=[e,t]}),r}function $(t,n){for(var r=-1,e=t.length,u=0,o=[];++r<e;){var i=t[r];i!==n&&"__lodash_placeholder__"!==i||(t[r]="__lodash_placeholder__",o[u++]=r)}return o}function D(t){var n=-1,r=Array(t.size);return t.forEach(function(t){r[++n]=t}),r}function F(t){
var n=-1,r=Array(t.size);return t.forEach(function(t){r[++n]=[t,t]}),r}function N(t){if(!t||!Wt.test(t))return t.length;for(var n=It.lastIndex=0;It.test(t);)n++;return n}function P(t){return $t[t]}function Z(R){function At(t,n){return R.setTimeout.call(Kt,t,n)}function Ot(t){if(Ze(t)&&!vi(t)&&!(t instanceof Ut)){if(t instanceof zt)return t;if(Ru.call(t,"__wrapped__"))return ce(t)}return new zt(t)}function kt(){}function zt(t,n){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!n,this.__index__=0,
this.__values__=T}function Ut(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=false,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function $t(t){var n=-1,r=t?t.length:0;for(this.clear();++n<r;){var e=t[n];this.set(e[0],e[1])}}function Dt(t){var n=-1,r=t?t.length:0;for(this.clear();++n<r;){var e=t[n];this.set(e[0],e[1])}}function Pt(t){var n=-1,r=t?t.length:0;for(this.clear();++n<r;){var e=t[n];this.set(e[0],e[1])}}function Zt(t){var n=-1,r=t?t.length:0;
for(this.__data__=new Pt;++n<r;)this.add(t[n])}function qt(t){this.__data__=new Dt(t)}function Vt(t,n,r,e){return t===T||Me(t,Ou[r])&&!Ru.call(e,r)?n:t}function Jt(t,n,r){(r===T||Me(t[n],r))&&(typeof n!="number"||r!==T||n in t)||(t[n]=r)}function Yt(t,n,r){var e=t[n];Ru.call(t,n)&&Me(e,r)&&(r!==T||n in t)||(t[n]=r)}function Ht(t,n){for(var r=t.length;r--;)if(Me(t[r][0],n))return r;return-1}function Qt(t,n,r,e){return mo(t,function(t,u,o){n(e,t,r(t),o)}),e}function Xt(t,n){return t&&sr(n,ou(n),t)}
function tn(t,n){for(var r=-1,e=null==t,u=n.length,o=Array(u);++r<u;)o[r]=e?T:eu(t,n[r]);return o}function nn(t,n,r){return t===t&&(r!==T&&(t=r>=t?t:r),n!==T&&(t=t>=n?t:n)),t}function rn(t,n,r,e,o,i,f){var c;if(e&&(c=i?e(t,o,i,f):e(t)),c!==T)return c;if(!Pe(t))return t;if(o=vi(t)){if(c=Vr(t),!n)return lr(t,c)}else{var a=Tr(t),l="[object Function]"==a||"[object GeneratorFunction]"==a;if(gi(t))return or(t,n);if("[object Object]"==a||"[object Arguments]"==a||l&&!i){if(C(t))return i?t:{};if(c=Kr(l?{}:t),
!n)return hr(t,Xt(c,t))}else{if(!Ct[a])return i?t:{};c=Gr(t,a,rn,n)}}if(f||(f=new qt),i=f.get(t))return i;if(f.set(t,c),!o)var s=r?gn(t,ou,Zr):ou(t);return u(s||t,function(u,o){s&&(o=u,u=t[o]),Yt(c,o,rn(u,n,r,e,o,t,f))}),c}function en(t){var n=ou(t),r=n.length;return function(e){if(null==e)return!r;for(var u=r;u--;){var o=n[u],i=t[o],f=e[o];if(f===T&&!(o in Object(e))||!i(f))return false}return true}}function un(t){return Pe(t)?Zu(t):{}}function on(t,n,r){if(typeof t!="function")throw new mu("Expected a function");
return At(function(){t.apply(T,r)},n)}function fn(t,n,r,e){var u=-1,o=c,i=true,f=t.length,s=[],h=n.length;if(!f)return s;r&&(n=l(n,O(r))),e?(o=a,i=false):n.length>=200&&(o=E,i=false,n=new Zt(n));t:for(;++u<f;){var p=t[u],_=r?r(p):p,p=e||0!==p?p:0;if(i&&_===_){for(var v=h;v--;)if(n[v]===_)continue t;s.push(p)}else o(n,_,e)||s.push(p)}return s}function cn(t,n){var r=true;return mo(t,function(t,e,u){return r=!!n(t,e,u)}),r}function an(t,n,r){for(var e=-1,u=t.length;++e<u;){var o=t[e],i=n(o);if(null!=i&&(f===T?i===i&&!Ge(i):r(i,f)))var f=i,c=o;
}return c}function ln(t,n){var r=[];return mo(t,function(t,e,u){n(t,e,u)&&r.push(t)}),r}function sn(t,n,r,e,u){var o=-1,i=t.length;for(r||(r=Yr),u||(u=[]);++o<i;){var f=t[o];n>0&&r(f)?n>1?sn(f,n-1,r,e,u):s(u,f):e||(u[u.length]=f)}return u}function hn(t,n){return t&&Oo(t,n,ou)}function pn(t,n){return t&&ko(t,n,ou)}function _n(t,n){return f(n,function(n){return De(t[n])})}function vn(t,n){n=te(n,t)?[n]:er(n);for(var r=0,e=n.length;null!=t&&e>r;)t=t[ie(n[r++])];return r&&r==e?t:T}function gn(t,n,r){
return n=n(t),vi(t)?n:s(n,r(t))}function dn(t,n){return t>n}function yn(t,n){return null!=t&&(Ru.call(t,n)||typeof t=="object"&&n in t&&null===Gu(Object(t)))}function bn(t,n){return null!=t&&n in Object(t)}function xn(t,n,r){for(var e=r?a:c,u=t[0].length,o=t.length,i=o,f=Array(o),s=1/0,h=[];i--;){var p=t[i];i&&n&&(p=l(p,O(n))),s=Xu(p.length,s),f[i]=!r&&(n||u>=120&&p.length>=120)?new Zt(i&&p):T}var p=t[0],_=-1,v=f[0];t:for(;++_<u&&s>h.length;){var g=p[_],d=n?n(g):g,g=r||0!==g?g:0;if(v?!E(v,d):!e(h,d,r)){
for(i=o;--i;){var y=f[i];if(y?!E(y,d):!e(t[i],d,r))continue t}v&&v.push(d),h.push(g)}}return h}function jn(t,n,r){var e={};return hn(t,function(t,u,o){n(e,r(t),u,o)}),e}function wn(t,n,e){return te(n,t)||(n=er(n),t=oe(t,n),n=_e(n)),n=null==t?t:t[ie(n)],null==n?T:r(n,t,e)}function mn(t,n,r,e,u){if(t===n)n=true;else if(null==t||null==n||!Pe(t)&&!Ze(n))n=t!==t&&n!==n;else t:{var o=vi(t),i=vi(n),f="[object Array]",c="[object Array]";o||(f=Tr(t),f="[object Arguments]"==f?"[object Object]":f),i||(c=Tr(n),
c="[object Arguments]"==c?"[object Object]":c);var a="[object Object]"==f&&!C(t),i="[object Object]"==c&&!C(n);if((c=f==c)&&!a)u||(u=new qt),n=o||Je(t)?Cr(t,n,mn,r,e,u):zr(t,n,f,mn,r,e,u);else{if(!(2&e)&&(o=a&&Ru.call(t,"__wrapped__"),f=i&&Ru.call(n,"__wrapped__"),o||f)){t=o?t.value():t,n=f?n.value():n,u||(u=new qt),n=mn(t,n,r,e,u);break t}if(c)n:if(u||(u=new qt),o=2&e,f=ou(t),i=f.length,c=ou(n).length,i==c||o){for(a=i;a--;){var l=f[a];if(!(o?l in n:yn(n,l))){n=false;break n}}if(c=u.get(t))n=c==n;else{
c=true,u.set(t,n);for(var s=o;++a<i;){var l=f[a],h=t[l],p=n[l];if(r)var _=o?r(p,h,l,n,t,u):r(h,p,l,t,n,u);if(_===T?h!==p&&!mn(h,p,r,e,u):!_){c=false;break}s||(s="constructor"==l)}c&&!s&&(r=t.constructor,e=n.constructor,r!=e&&"constructor"in t&&"constructor"in n&&!(typeof r=="function"&&r instanceof r&&typeof e=="function"&&e instanceof e)&&(c=false)),u["delete"](t),n=c}}else n=false;else n=false}}return n}function An(t,n,r,e){var u=r.length,o=u,i=!e;if(null==t)return!o;for(t=Object(t);u--;){var f=r[u];if(i&&f[2]?f[1]!==t[f[0]]:!(f[0]in t))return false;
}for(;++u<o;){var f=r[u],c=f[0],a=t[c],l=f[1];if(i&&f[2]){if(a===T&&!(c in t))return false}else{if(f=new qt,e)var s=e(a,l,c,t,n,f);if(s===T?!mn(l,a,e,3,f):!s)return false}}return true}function On(t){return!Pe(t)||Su&&Su in t?false:(De(t)||C(t)?Cu:yt).test(fe(t))}function kn(t){return typeof t=="function"?t:null==t?hu:typeof t=="object"?vi(t)?Wn(t[0],t[1]):Rn(t):gu(t)}function En(t){t=null==t?t:Object(t);var n,r=[];for(n in t)r.push(n);return r}function Sn(t,n){return n>t}function In(t,n){var r=-1,e=ze(t)?Array(t.length):[];
return mo(t,function(t,u,o){e[++r]=n(t,u,o)}),e}function Rn(t){var n=Nr(t);return 1==n.length&&n[0][2]?ee(n[0][0],n[0][1]):function(r){return r===t||An(r,t,n)}}function Wn(t,n){return te(t)&&n===n&&!Pe(n)?ee(ie(t),n):function(r){var e=eu(r,t);return e===T&&e===n?uu(r,t):mn(n,e,T,3)}}function Bn(t,n,r,e,o){if(t!==n){if(!vi(n)&&!Je(n))var i=iu(n);u(i||n,function(u,f){if(i&&(f=u,u=n[f]),Pe(u)){o||(o=new qt);var c=f,a=o,l=t[c],s=n[c],h=a.get(s);if(h)Jt(t,c,h);else{var h=e?e(l,s,c+"",t,n,a):T,p=h===T;p&&(h=s,
vi(s)||Je(s)?vi(l)?h=l:Ue(l)?h=lr(l):(p=false,h=rn(s,true)):qe(s)||Ce(s)?Ce(l)?h=nu(l):!Pe(l)||r&&De(l)?(p=false,h=rn(s,true)):h=l:p=false),a.set(s,h),p&&Bn(h,s,r,e,a),a["delete"](s),Jt(t,c,h)}}else c=e?e(t[f],u,f+"",t,n,o):T,c===T&&(c=u),Jt(t,f,c)})}}function Ln(t,n){var r=t.length;return r?(n+=0>n?r:0,Qr(n,r)?t[n]:T):void 0}function Mn(t,n,r){var e=-1;return n=l(n.length?n:[hu],O(Dr())),t=In(t,function(t){return{a:l(n,function(n){return n(t)}),b:++e,c:t}}),j(t,function(t,n){var e;t:{e=-1;for(var u=t.a,o=n.a,i=u.length,f=r.length;++e<i;){
var c=fr(u[e],o[e]);if(c){e=e>=f?c:c*("desc"==r[e]?-1:1);break t}}e=t.b-n.b}return e})}function Cn(t,n){return t=Object(t),h(n,function(n,r){return r in t&&(n[r]=t[r]),n},{})}function zn(t,n){for(var r=-1,e=gn(t,iu,Wo),u=e.length,o={};++r<u;){var i=e[r],f=t[i];n(f,i)&&(o[i]=f)}return o}function Un(t){return function(n){return null==n?T:n[t]}}function $n(t){return function(n){return vn(n,t)}}function Dn(t,n,r,e){var u=e?y:d,o=-1,i=n.length,f=t;for(t===n&&(n=lr(n)),r&&(f=l(t,O(r)));++o<i;)for(var c=0,a=n[o],a=r?r(a):a;-1<(c=u(f,a,c,e));)f!==t&&qu.call(f,c,1),
qu.call(t,c,1);return t}function Fn(t,n){for(var r=t?n.length:0,e=r-1;r--;){var u=n[r];if(r==e||u!==o){var o=u;if(Qr(u))qu.call(t,u,1);else if(te(u,t))delete t[ie(u)];else{var u=er(u),i=oe(t,u);null!=i&&delete i[ie(_e(u))]}}}}function Nn(t,n){return t+Ku(no()*(n-t+1))}function Pn(t,n){var r="";if(!t||1>n||n>9007199254740991)return r;do n%2&&(r+=t),(n=Ku(n/2))&&(t+=t);while(n);return r}function Zn(t,n,r,e){n=te(n,t)?[n]:er(n);for(var u=-1,o=n.length,i=o-1,f=t;null!=f&&++u<o;){var c=ie(n[u]);if(Pe(f)){
var a=r;if(u!=i){var l=f[c],a=e?e(l,c,f):T;a===T&&(a=null==l?Qr(n[u+1])?[]:{}:l)}Yt(f,c,a)}f=f[c]}return t}function Tn(t,n,r){var e=-1,u=t.length;for(0>n&&(n=-n>u?0:u+n),r=r>u?u:r,0>r&&(r+=u),u=n>r?0:r-n>>>0,n>>>=0,r=Array(u);++e<u;)r[e]=t[e+n];return r}function qn(t,n){var r;return mo(t,function(t,e,u){return r=n(t,e,u),!r}),!!r}function Vn(t,n,r){var e=0,u=t?t.length:e;if(typeof n=="number"&&n===n&&2147483647>=u){for(;u>e;){var o=e+u>>>1,i=t[o];null!==i&&!Ge(i)&&(r?n>=i:n>i)?e=o+1:u=o}return u}
return Kn(t,n,hu,r)}function Kn(t,n,r,e){n=r(n);for(var u=0,o=t?t.length:0,i=n!==n,f=null===n,c=Ge(n),a=n===T;o>u;){var l=Ku((u+o)/2),s=r(t[l]),h=s!==T,p=null===s,_=s===s,v=Ge(s);(i?e||_:a?_&&(e||h):f?_&&h&&(e||!p):c?_&&h&&!p&&(e||!v):p||v?0:e?n>=s:n>s)?u=l+1:o=l}return Xu(o,4294967294)}function Gn(t,n){for(var r=-1,e=t.length,u=0,o=[];++r<e;){var i=t[r],f=n?n(i):i;if(!r||!Me(f,c)){var c=f;o[u++]=0===i?0:i}}return o}function Jn(t){return typeof t=="number"?t:Ge(t)?V:+t}function Yn(t){if(typeof t=="string")return t;
if(Ge(t))return wo?wo.call(t):"";var n=t+"";return"0"==n&&1/t==-q?"-0":n}function Hn(t,n,r){var e=-1,u=c,o=t.length,i=true,f=[],l=f;if(r)i=false,u=a;else if(o>=200){if(u=n?null:So(t))return D(u);i=false,u=E,l=new Zt}else l=n?[]:f;t:for(;++e<o;){var s=t[e],h=n?n(s):s,s=r||0!==s?s:0;if(i&&h===h){for(var p=l.length;p--;)if(l[p]===h)continue t;n&&l.push(h),f.push(s)}else u(l,h,r)||(l!==f&&l.push(h),f.push(s))}return f}function Qn(t,n,r,e){for(var u=t.length,o=e?u:-1;(e?o--:++o<u)&&n(t[o],o,t););return r?Tn(t,e?0:o,e?o+1:u):Tn(t,e?o+1:0,e?u:o);
}function Xn(t,n){var r=t;return r instanceof Ut&&(r=r.value()),h(n,function(t,n){return n.func.apply(n.thisArg,s([t],n.args))},r)}function tr(t,n,r){for(var e=-1,u=t.length;++e<u;)var o=o?s(fn(o,t[e],n,r),fn(t[e],o,n,r)):t[e];return o&&o.length?Hn(o,n,r):[]}function nr(t,n,r){for(var e=-1,u=t.length,o=n.length,i={};++e<u;)r(i,t[e],o>e?n[e]:T);return i}function rr(t){return Ue(t)?t:[]}function er(t){return vi(t)?t:Mo(t)}function ur(t,n,r){var e=t.length;return r=r===T?e:r,!n&&r>=e?t:Tn(t,n,r)}function or(t,n){
if(n)return t.slice();var r=new t.constructor(t.length);return t.copy(r),r}function ir(t){var n=new t.constructor(t.byteLength);return new Du(n).set(new Du(t)),n}function fr(t,n){if(t!==n){var r=t!==T,e=null===t,u=t===t,o=Ge(t),i=n!==T,f=null===n,c=n===n,a=Ge(n);if(!f&&!a&&!o&&t>n||o&&i&&c&&!f&&!a||e&&i&&c||!r&&c||!u)return 1;if(!e&&!o&&!a&&n>t||a&&r&&u&&!e&&!o||f&&r&&u||!i&&u||!c)return-1}return 0}function cr(t,n,r,e){var u=-1,o=t.length,i=r.length,f=-1,c=n.length,a=Qu(o-i,0),l=Array(c+a);for(e=!e;++f<c;)l[f]=n[f];
for(;++u<i;)(e||o>u)&&(l[r[u]]=t[u]);for(;a--;)l[f++]=t[u++];return l}function ar(t,n,r,e){var u=-1,o=t.length,i=-1,f=r.length,c=-1,a=n.length,l=Qu(o-f,0),s=Array(l+a);for(e=!e;++u<l;)s[u]=t[u];for(l=u;++c<a;)s[l+c]=n[c];for(;++i<f;)(e||o>u)&&(s[l+r[i]]=t[u++]);return s}function lr(t,n){var r=-1,e=t.length;for(n||(n=Array(e));++r<e;)n[r]=t[r];return n}function sr(t,n,r,e){r||(r={});for(var u=-1,o=n.length;++u<o;){var i=n[u],f=e?e(r[i],t[i],i,r,t):t[i];Yt(r,i,f)}return r}function hr(t,n){return sr(t,Zr(t),n);
}function pr(t,n){return function(r,u){var o=vi(r)?e:Qt,i=n?n():{};return o(r,t,Dr(u),i)}}function _r(t){return Le(function(n,r){var e=-1,u=r.length,o=u>1?r[u-1]:T,i=u>2?r[2]:T,o=t.length>3&&typeof o=="function"?(u--,o):T;for(i&&Xr(r[0],r[1],i)&&(o=3>u?T:o,u=1),n=Object(n);++e<u;)(i=r[e])&&t(n,i,e,o);return n})}function vr(t,n){return function(r,e){if(null==r)return r;if(!ze(r))return t(r,e);for(var u=r.length,o=n?u:-1,i=Object(r);(n?o--:++o<u)&&false!==e(i[o],o,i););return r}}function gr(t){return function(n,r,e){
var u=-1,o=Object(n);e=e(n);for(var i=e.length;i--;){var f=e[t?i:++u];if(false===r(o[f],f,o))break}return n}}function dr(t,n,r){function e(){return(this&&this!==Kt&&this instanceof e?o:t).apply(u?r:this,arguments)}var u=1&n,o=xr(t);return e}function yr(t){return function(n){n=ru(n);var r=Wt.test(n)?n.match(It):T,e=r?r[0]:n.charAt(0);return n=r?ur(r,1).join(""):n.slice(1),e[t]()+n}}function br(t){return function(n){return h(lu(au(n).replace(Et,"")),t,"")}}function xr(t){return function(){var n=arguments;
switch(n.length){case 0:return new t;case 1:return new t(n[0]);case 2:return new t(n[0],n[1]);case 3:return new t(n[0],n[1],n[2]);case 4:return new t(n[0],n[1],n[2],n[3]);case 5:return new t(n[0],n[1],n[2],n[3],n[4]);case 6:return new t(n[0],n[1],n[2],n[3],n[4],n[5]);case 7:return new t(n[0],n[1],n[2],n[3],n[4],n[5],n[6])}var r=un(t.prototype),n=t.apply(r,n);return Pe(n)?n:r}}function jr(t,n,e){function u(){for(var i=arguments.length,f=Array(i),c=i,a=$r(u);c--;)f[c]=arguments[c];return c=3>i&&f[0]!==a&&f[i-1]!==a?[]:$(f,a),
i-=c.length,e>i?Wr(t,n,mr,u.placeholder,T,f,c,T,T,e-i):r(this&&this!==Kt&&this instanceof u?o:t,this,f)}var o=xr(t);return u}function wr(t){return Le(function(n){n=sn(n,1);var r=n.length,e=r,u=zt.prototype.thru;for(t&&n.reverse();e--;){var o=n[e];if(typeof o!="function")throw new mu("Expected a function");if(u&&!i&&"wrapper"==Ur(o))var i=new zt([],true)}for(e=i?e:r;++e<r;)var o=n[e],u=Ur(o),f="wrapper"==u?Io(o):T,i=f&&ne(f[0])&&424==f[1]&&!f[4].length&&1==f[9]?i[Ur(f[0])].apply(i,f[3]):1==o.length&&ne(o)?i[u]():i.thru(o);
return function(){var t=arguments,e=t[0];if(i&&1==t.length&&vi(e)&&e.length>=200)return i.plant(e).value();for(var u=0,t=r?n[u].apply(this,t):e;++u<r;)t=n[u].call(this,t);return t}})}function mr(t,n,r,e,u,o,i,f,c,a){function l(){for(var d=arguments.length,y=Array(d),b=d;b--;)y[b]=arguments[b];if(_){var x,j=$r(l),b=y.length;for(x=0;b--;)y[b]===j&&x++}if(e&&(y=cr(y,e,u,_)),o&&(y=ar(y,o,i,_)),d-=x,_&&a>d)return j=$(y,j),Wr(t,n,mr,l.placeholder,r,y,j,f,c,a-d);if(j=h?r:this,b=p?j[t]:t,d=y.length,f){x=y.length;
for(var w=Xu(f.length,x),m=lr(y);w--;){var A=f[w];y[w]=Qr(A,x)?m[A]:T}}else v&&d>1&&y.reverse();return s&&d>c&&(y.length=c),this&&this!==Kt&&this instanceof l&&(b=g||xr(b)),b.apply(j,y)}var s=128&n,h=1&n,p=2&n,_=24&n,v=512&n,g=p?T:xr(t);return l}function Ar(t,n){return function(r,e){return jn(r,t,n(e))}}function Or(t){return function(n,r){var e;if(n===T&&r===T)return 0;if(n!==T&&(e=n),r!==T){if(e===T)return r;typeof n=="string"||typeof r=="string"?(n=Yn(n),r=Yn(r)):(n=Jn(n),r=Jn(r)),e=t(n,r)}return e;
}}function kr(t){return Le(function(n){return n=1==n.length&&vi(n[0])?l(n[0],O(Dr())):l(sn(n,1,Hr),O(Dr())),Le(function(e){var u=this;return t(n,function(t){return r(t,u,e)})})})}function Er(t,n){n=n===T?" ":Yn(n);var r=n.length;return 2>r?r?Pn(n,t):n:(r=Pn(n,Vu(t/N(n))),Wt.test(n)?ur(r.match(It),0,t).join(""):r.slice(0,t))}function Sr(t,n,e,u){function o(){for(var n=-1,c=arguments.length,a=-1,l=u.length,s=Array(l+c),h=this&&this!==Kt&&this instanceof o?f:t;++a<l;)s[a]=u[a];for(;c--;)s[a++]=arguments[++n];
return r(h,i?e:this,s)}var i=1&n,f=xr(t);return o}function Ir(t){return function(n,r,e){e&&typeof e!="number"&&Xr(n,r,e)&&(r=e=T),n=tu(n),n=n===n?n:0,r===T?(r=n,n=0):r=tu(r)||0,e=e===T?r>n?1:-1:tu(e)||0;var u=-1;r=Qu(Vu((r-n)/(e||1)),0);for(var o=Array(r);r--;)o[t?r:++u]=n,n+=e;return o}}function Rr(t){return function(n,r){return typeof n=="string"&&typeof r=="string"||(n=tu(n),r=tu(r)),t(n,r)}}function Wr(t,n,r,e,u,o,i,f,c,a){var l=8&n,s=l?i:T;i=l?T:i;var h=l?o:T;return o=l?T:o,n=(n|(l?32:64))&~(l?64:32),
4&n||(n&=-4),n=[t,n,u,h,s,o,i,f,c,a],r=r.apply(T,n),ne(t)&&Lo(r,n),r.placeholder=e,r}function Br(t){var n=ju[t];return function(t,r){if(t=tu(t),r=Xu(Qe(r),292)){var e=(ru(t)+"e").split("e"),e=n(e[0]+"e"+(+e[1]+r)),e=(ru(e)+"e").split("e");return+(e[0]+"e"+(+e[1]-r))}return n(t)}}function Lr(t){return function(n){var r=Tr(n);return"[object Map]"==r?U(n):"[object Set]"==r?F(n):A(n,t(n))}}function Mr(t,n,r,e,u,o,i,f){var c=2&n;if(!c&&typeof t!="function")throw new mu("Expected a function");var a=e?e.length:0;
if(a||(n&=-97,e=u=T),i=i===T?i:Qu(Qe(i),0),f=f===T?f:Qe(f),a-=u?u.length:0,64&n){var l=e,s=u;e=u=T}var h=c?T:Io(t);return o=[t,n,r,e,u,l,s,o,i,f],h&&(r=o[1],t=h[1],n=r|t,e=128==t&&8==r||128==t&&256==r&&h[8]>=o[7].length||384==t&&h[8]>=h[7].length&&8==r,131>n||e)&&(1&t&&(o[2]=h[2],n|=1&r?0:4),(r=h[3])&&(e=o[3],o[3]=e?cr(e,r,h[4]):r,o[4]=e?$(o[3],"__lodash_placeholder__"):h[4]),(r=h[5])&&(e=o[5],o[5]=e?ar(e,r,h[6]):r,o[6]=e?$(o[5],"__lodash_placeholder__"):h[6]),(r=h[7])&&(o[7]=r),128&t&&(o[8]=null==o[8]?h[8]:Xu(o[8],h[8])),
null==o[9]&&(o[9]=h[9]),o[0]=h[0],o[1]=n),t=o[0],n=o[1],r=o[2],e=o[3],u=o[4],f=o[9]=null==o[9]?c?0:t.length:Qu(o[9]-a,0),!f&&24&n&&(n&=-25),(h?Eo:Lo)(n&&1!=n?8==n||16==n?jr(t,n,f):32!=n&&33!=n||u.length?mr.apply(T,o):Sr(t,n,r,e):dr(t,n,r),o)}function Cr(t,n,r,e,u,o){var i=2&u,f=t.length,c=n.length;if(f!=c&&!(i&&c>f))return false;if(c=o.get(t))return c==n;var c=-1,a=true,l=1&u?new Zt:T;for(o.set(t,n);++c<f;){var s=t[c],h=n[c];if(e)var p=i?e(h,s,c,n,t,o):e(s,h,c,t,n,o);if(p!==T){if(p)continue;a=false;break}
if(l){if(!_(n,function(t,n){return l.has(n)||s!==t&&!r(s,t,e,u,o)?void 0:l.add(n)})){a=false;break}}else if(s!==h&&!r(s,h,e,u,o)){a=false;break}}return o["delete"](t),a}function zr(t,n,r,e,u,o,i){switch(r){case"[object DataView]":if(t.byteLength!=n.byteLength||t.byteOffset!=n.byteOffset)break;t=t.buffer,n=n.buffer;case"[object ArrayBuffer]":if(t.byteLength!=n.byteLength||!e(new Du(t),new Du(n)))break;return true;case"[object Boolean]":case"[object Date]":return+t==+n;case"[object Error]":return t.name==n.name&&t.message==n.message;
case"[object Number]":return t!=+t?n!=+n:t==+n;case"[object RegExp]":case"[object String]":return t==n+"";case"[object Map]":var f=U;case"[object Set]":if(f||(f=D),t.size!=n.size&&!(2&o))break;return(r=i.get(t))?r==n:(o|=1,i.set(t,n),Cr(f(t),f(n),e,u,o,i));case"[object Symbol]":if(jo)return jo.call(t)==jo.call(n)}return false}function Ur(t){for(var n=t.name+"",r=po[n],e=Ru.call(po,n)?r.length:0;e--;){var u=r[e],o=u.func;if(null==o||o==t)return u.name}return n}function $r(t){return(Ru.call(Ot,"placeholder")?Ot:t).placeholder;
}function Dr(){var t=Ot.iteratee||pu,t=t===pu?kn:t;return arguments.length?t(arguments[0],arguments[1]):t}function Fr(t,n){var r=t.__data__,e=typeof n;return("string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==n:null===n)?r[typeof n=="string"?"string":"hash"]:r.map}function Nr(t){for(var n=ou(t),r=n.length;r--;){var e=n[r],u=t[e];n[r]=[e,u,u===u&&!Pe(u)]}return n}function Pr(t,n){var r=null==t?T:t[n];return On(r)?r:T}function Zr(t){return Nu(Object(t))}function Tr(t){return Lu.call(t);
}function qr(t,n,r){n=te(n,t)?[n]:er(n);for(var e,u=-1,o=n.length;++u<o;){var i=ie(n[u]);if(!(e=null!=t&&r(t,i)))break;t=t[i]}return e?e:(o=t?t.length:0,!!o&&Ne(o)&&Qr(i,o)&&(vi(t)||Ke(t)||Ce(t)))}function Vr(t){var n=t.length,r=t.constructor(n);return n&&"string"==typeof t[0]&&Ru.call(t,"index")&&(r.index=t.index,r.input=t.input),r}function Kr(t){return typeof t.constructor!="function"||re(t)?{}:un(Gu(Object(t)))}function Gr(r,e,u,o){var i=r.constructor;switch(e){case"[object ArrayBuffer]":return ir(r);
case"[object Boolean]":case"[object Date]":return new i(+r);case"[object DataView]":return e=o?ir(r.buffer):r.buffer,new r.constructor(e,r.byteOffset,r.byteLength);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return e=o?ir(r.buffer):r.buffer,new r.constructor(e,r.byteOffset,r.length);case"[object Map]":
return e=o?u(U(r),true):U(r),h(e,t,new r.constructor);case"[object Number]":case"[object String]":return new i(r);case"[object RegExp]":return e=new r.constructor(r.source,_t.exec(r)),e.lastIndex=r.lastIndex,e;case"[object Set]":return e=o?u(D(r),true):D(r),h(e,n,new r.constructor);case"[object Symbol]":return jo?Object(jo.call(r)):{}}}function Jr(t){var n=t?t.length:T;return Ne(n)&&(vi(t)||Ke(t)||Ce(t))?m(n,String):null}function Yr(t){return vi(t)||Ce(t)}function Hr(t){return vi(t)&&!(2==t.length&&!De(t[0]));
}function Qr(t,n){return n=null==n?9007199254740991:n,!!n&&(typeof t=="number"||xt.test(t))&&t>-1&&0==t%1&&n>t}function Xr(t,n,r){if(!Pe(r))return false;var e=typeof n;return("number"==e?ze(r)&&Qr(n,r.length):"string"==e&&n in r)?Me(r[n],t):false}function te(t,n){if(vi(t))return false;var r=typeof t;return"number"==r||"symbol"==r||"boolean"==r||null==t||Ge(t)?true:ut.test(t)||!et.test(t)||null!=n&&t in Object(n)}function ne(t){var n=Ur(t),r=Ot[n];return typeof r=="function"&&n in Ut.prototype?t===r?true:(n=Io(r),
!!n&&t===n[0]):false}function re(t){var n=t&&t.constructor;return t===(typeof n=="function"&&n.prototype||Ou)}function ee(t,n){return function(r){return null==r?false:r[t]===n&&(n!==T||t in Object(r))}}function ue(t,n,r,e,u,o){return Pe(t)&&Pe(n)&&Bn(t,n,T,ue,o.set(n,t)),t}function oe(t,n){return 1==n.length?t:vn(t,Tn(n,0,-1))}function ie(t){if(typeof t=="string"||Ge(t))return t;var n=t+"";return"0"==n&&1/t==-q?"-0":n}function fe(t){if(null!=t){try{return Iu.call(t)}catch(n){}return t+""}return""}function ce(t){
if(t instanceof Ut)return t.clone();var n=new zt(t.__wrapped__,t.__chain__);return n.__actions__=lr(t.__actions__),n.__index__=t.__index__,n.__values__=t.__values__,n}function ae(t,n,r){var e=t?t.length:0;return e?(n=r||n===T?1:Qe(n),Tn(t,0>n?0:n,e)):[]}function le(t,n,r){var e=t?t.length:0;return e?(n=r||n===T?1:Qe(n),n=e-n,Tn(t,0,0>n?0:n)):[]}function se(t,n,r){var e=t?t.length:0;return e?(r=null==r?0:Qe(r),0>r&&(r=Qu(e+r,0)),g(t,Dr(n,3),r)):-1}function he(t,n,r){var e=t?t.length:0;if(!e)return-1;
var u=e-1;return r!==T&&(u=Qe(r),u=0>r?Qu(e+u,0):Xu(u,e-1)),g(t,Dr(n,3),u,true)}function pe(t){return t&&t.length?t[0]:T}function _e(t){var n=t?t.length:0;return n?t[n-1]:T}function ve(t,n){return t&&t.length&&n&&n.length?Dn(t,n):t}function ge(t){return t?eo.call(t):t}function de(t){if(!t||!t.length)return[];var n=0;return t=f(t,function(t){return Ue(t)?(n=Qu(t.length,n),true):void 0}),m(n,function(n){return l(t,Un(n))})}function ye(t,n){if(!t||!t.length)return[];var e=de(t);return null==n?e:l(e,function(t){
return r(n,T,t)})}function be(t){return t=Ot(t),t.__chain__=true,t}function xe(t,n){return n(t)}function je(){return this}function we(t,n){return(vi(t)?u:mo)(t,Dr(n,3))}function me(t,n){return(vi(t)?o:Ao)(t,Dr(n,3))}function Ae(t,n){return(vi(t)?l:In)(t,Dr(n,3))}function Oe(t,n,r){var e=-1,u=Ye(t),o=u.length,i=o-1;for(n=(r?Xr(t,n,r):n===T)?1:nn(Qe(n),0,o);++e<n;)t=Nn(e,i),r=u[t],u[t]=u[e],u[e]=r;return u.length=n,u}function ke(){return bu.now()}function Ee(t,n,r){return n=r?T:n,n=t&&null==n?t.length:n,
Mr(t,128,T,T,T,T,n)}function Se(t,n){var r;if(typeof n!="function")throw new mu("Expected a function");return t=Qe(t),function(){return 0<--t&&(r=n.apply(this,arguments)),1>=t&&(n=T),r}}function Ie(t,n,r){return n=r?T:n,t=Mr(t,8,T,T,T,T,T,n),t.placeholder=Ie.placeholder,t}function Re(t,n,r){return n=r?T:n,t=Mr(t,16,T,T,T,T,T,n),t.placeholder=Re.placeholder,t}function We(t,n,r){function e(n){var r=c,e=a;return c=a=T,_=n,s=t.apply(e,r)}function u(t){var r=t-p;return t-=_,p===T||r>=n||0>r||g&&t>=l}function o(){
var t=ke();if(u(t))return i(t);var r;r=t-_,t=n-(t-p),r=g?Xu(t,l-r):t,h=At(o,r)}function i(t){return h=T,d&&c?e(t):(c=a=T,s)}function f(){var t=ke(),r=u(t);if(c=arguments,a=this,p=t,r){if(h===T)return _=t=p,h=At(o,n),v?e(t):s;if(g)return h=At(o,n),e(p)}return h===T&&(h=At(o,n)),s}var c,a,l,s,h,p,_=0,v=false,g=false,d=true;if(typeof t!="function")throw new mu("Expected a function");return n=tu(n)||0,Pe(r)&&(v=!!r.leading,l=(g="maxWait"in r)?Qu(tu(r.maxWait)||0,n):l,d="trailing"in r?!!r.trailing:d),f.cancel=function(){
_=0,c=p=a=h=T},f.flush=function(){return h===T?s:i(ke())},f}function Be(t,n){function r(){var e=arguments,u=n?n.apply(this,e):e[0],o=r.cache;return o.has(u)?o.get(u):(e=t.apply(this,e),r.cache=o.set(u,e),e)}if(typeof t!="function"||n&&typeof n!="function")throw new mu("Expected a function");return r.cache=new(Be.Cache||Pt),r}function Le(t,n){if(typeof t!="function")throw new mu("Expected a function");return n=Qu(n===T?t.length-1:Qe(n),0),function(){for(var e=arguments,u=-1,o=Qu(e.length-n,0),i=Array(o);++u<o;)i[u]=e[n+u];
switch(n){case 0:return t.call(this,i);case 1:return t.call(this,e[0],i);case 2:return t.call(this,e[0],e[1],i)}for(o=Array(n+1),u=-1;++u<n;)o[u]=e[u];return o[n]=i,r(t,this,o)}}function Me(t,n){return t===n||t!==t&&n!==n}function Ce(t){return Ue(t)&&Ru.call(t,"callee")&&(!Tu.call(t,"callee")||"[object Arguments]"==Lu.call(t))}function ze(t){return null!=t&&Ne(Ro(t))&&!De(t)}function Ue(t){return Ze(t)&&ze(t)}function $e(t){return Ze(t)?"[object Error]"==Lu.call(t)||typeof t.message=="string"&&typeof t.name=="string":false;
}function De(t){return t=Pe(t)?Lu.call(t):"","[object Function]"==t||"[object GeneratorFunction]"==t}function Fe(t){return typeof t=="number"&&t==Qe(t)}function Ne(t){return typeof t=="number"&&t>-1&&0==t%1&&9007199254740991>=t}function Pe(t){var n=typeof t;return!!t&&("object"==n||"function"==n)}function Ze(t){return!!t&&typeof t=="object"}function Te(t){return typeof t=="number"||Ze(t)&&"[object Number]"==Lu.call(t)}function qe(t){return!Ze(t)||"[object Object]"!=Lu.call(t)||C(t)?false:(t=Gu(Object(t)),
null===t?true:(t=Ru.call(t,"constructor")&&t.constructor,typeof t=="function"&&t instanceof t&&Iu.call(t)==Bu))}function Ve(t){return Pe(t)&&"[object RegExp]"==Lu.call(t)}function Ke(t){return typeof t=="string"||!vi(t)&&Ze(t)&&"[object String]"==Lu.call(t)}function Ge(t){return typeof t=="symbol"||Ze(t)&&"[object Symbol]"==Lu.call(t)}function Je(t){return Ze(t)&&Ne(t.length)&&!!Mt[Lu.call(t)]}function Ye(t){if(!t)return[];if(ze(t))return Ke(t)?t.match(It):lr(t);if(Pu&&t[Pu])return z(t[Pu]());var n=Tr(t);
return("[object Map]"==n?U:"[object Set]"==n?D:fu)(t)}function He(t){return t?(t=tu(t),t===q||t===-q?1.7976931348623157e308*(0>t?-1:1):t===t?t:0):0===t?t:0}function Qe(t){t=He(t);var n=t%1;return t===t?n?t-n:t:0}function Xe(t){return t?nn(Qe(t),0,4294967295):0}function tu(t){if(typeof t=="number")return t;if(Ge(t))return V;if(Pe(t)&&(t=De(t.valueOf)?t.valueOf():t,t=Pe(t)?t+"":t),typeof t!="string")return 0===t?t:+t;t=t.replace(ct,"");var n=dt.test(t);return n||bt.test(t)?Nt(t.slice(2),n?2:8):gt.test(t)?V:+t;
}function nu(t){return sr(t,iu(t))}function ru(t){return null==t?"":Yn(t)}function eu(t,n,r){return t=null==t?T:vn(t,n),t===T?r:t}function uu(t,n){return null!=t&&qr(t,n,bn)}function ou(t){var n=re(t);if(!n&&!ze(t))return Hu(Object(t));var r,e=Jr(t),u=!!e,e=e||[],o=e.length;for(r in t)!yn(t,r)||u&&("length"==r||Qr(r,o))||n&&"constructor"==r||e.push(r);return e}function iu(t){for(var n=-1,r=re(t),e=En(t),u=e.length,o=Jr(t),i=!!o,o=o||[],f=o.length;++n<u;){var c=e[n];i&&("length"==c||Qr(c,f))||"constructor"==c&&(r||!Ru.call(t,c))||o.push(c);
}return o}function fu(t){return t?k(t,ou(t)):[]}function cu(t){return Pi(ru(t).toLowerCase())}function au(t){return(t=ru(t))&&t.replace(jt,W).replace(St,"")}function lu(t,n,r){return t=ru(t),n=r?T:n,n===T&&(n=Bt.test(t)?Rt:st),t.match(n)||[]}function su(t){return function(){return t}}function hu(t){return t}function pu(t){return kn(typeof t=="function"?t:rn(t,true))}function _u(t,n,r){var e=ou(n),o=_n(n,e);null!=r||Pe(n)&&(o.length||!e.length)||(r=n,n=t,t=this,o=_n(n,ou(n)));var i=!(Pe(r)&&"chain"in r&&!r.chain),f=De(t);
return u(o,function(r){var e=n[r];t[r]=e,f&&(t.prototype[r]=function(){var n=this.__chain__;if(i||n){var r=t(this.__wrapped__);return(r.__actions__=lr(this.__actions__)).push({func:e,args:arguments,thisArg:t}),r.__chain__=n,r}return e.apply(t,s([this.value()],arguments))})}),t}function vu(){}function gu(t){return te(t)?Un(ie(t)):$n(t)}function du(){return[]}function yu(){return false}R=R?Gt.defaults({},R,Gt.pick(Kt,Lt)):Kt;var bu=R.Date,xu=R.Error,ju=R.Math,wu=R.RegExp,mu=R.TypeError,Au=R.Array.prototype,Ou=R.Object.prototype,ku=R.String.prototype,Eu=R["__core-js_shared__"],Su=function(){
var t=/[^.]+$/.exec(Eu&&Eu.keys&&Eu.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),Iu=R.Function.prototype.toString,Ru=Ou.hasOwnProperty,Wu=0,Bu=Iu.call(Object),Lu=Ou.toString,Mu=Kt._,Cu=wu("^"+Iu.call(Ru).replace(it,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),zu=Tt?R.Buffer:T,Uu=R.Reflect,$u=R.Symbol,Du=R.Uint8Array,Fu=Uu?Uu.f:T,Nu=Object.getOwnPropertySymbols,Pu=typeof(Pu=$u&&$u.iterator)=="symbol"?Pu:T,Zu=Object.create,Tu=Ou.propertyIsEnumerable,qu=Au.splice,Vu=ju.ceil,Ku=ju.floor,Gu=Object.getPrototypeOf,Ju=R.isFinite,Yu=Au.join,Hu=Object.keys,Qu=ju.max,Xu=ju.min,to=R.parseInt,no=ju.random,ro=ku.replace,eo=Au.reverse,uo=ku.split,oo=Pr(R,"DataView"),io=Pr(R,"Map"),fo=Pr(R,"Promise"),co=Pr(R,"Set"),ao=Pr(R,"WeakMap"),lo=Pr(Object,"create"),so=ao&&new ao,ho=!Tu.call({
valueOf:1},"valueOf"),po={},_o=fe(oo),vo=fe(io),go=fe(fo),yo=fe(co),bo=fe(ao),xo=$u?$u.prototype:T,jo=xo?xo.valueOf:T,wo=xo?xo.toString:T;Ot.templateSettings={escape:tt,evaluate:nt,interpolate:rt,variable:"",imports:{_:Ot}},Ot.prototype=kt.prototype,Ot.prototype.constructor=Ot,zt.prototype=un(kt.prototype),zt.prototype.constructor=zt,Ut.prototype=un(kt.prototype),Ut.prototype.constructor=Ut,$t.prototype.clear=function(){this.__data__=lo?lo(null):{}},$t.prototype["delete"]=function(t){return this.has(t)&&delete this.__data__[t];
},$t.prototype.get=function(t){var n=this.__data__;return lo?(t=n[t],"__lodash_hash_undefined__"===t?T:t):Ru.call(n,t)?n[t]:T},$t.prototype.has=function(t){var n=this.__data__;return lo?n[t]!==T:Ru.call(n,t)},$t.prototype.set=function(t,n){return this.__data__[t]=lo&&n===T?"__lodash_hash_undefined__":n,this},Dt.prototype.clear=function(){this.__data__=[]},Dt.prototype["delete"]=function(t){var n=this.__data__;return t=Ht(n,t),0>t?false:(t==n.length-1?n.pop():qu.call(n,t,1),true)},Dt.prototype.get=function(t){
var n=this.__data__;return t=Ht(n,t),0>t?T:n[t][1]},Dt.prototype.has=function(t){return-1<Ht(this.__data__,t)},Dt.prototype.set=function(t,n){var r=this.__data__,e=Ht(r,t);return 0>e?r.push([t,n]):r[e][1]=n,this},Pt.prototype.clear=function(){this.__data__={hash:new $t,map:new(io||Dt),string:new $t}},Pt.prototype["delete"]=function(t){return Fr(this,t)["delete"](t)},Pt.prototype.get=function(t){return Fr(this,t).get(t)},Pt.prototype.has=function(t){return Fr(this,t).has(t)},Pt.prototype.set=function(t,n){
return Fr(this,t).set(t,n),this},Zt.prototype.add=Zt.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},Zt.prototype.has=function(t){return this.__data__.has(t)},qt.prototype.clear=function(){this.__data__=new Dt},qt.prototype["delete"]=function(t){return this.__data__["delete"](t)},qt.prototype.get=function(t){return this.__data__.get(t)},qt.prototype.has=function(t){return this.__data__.has(t)},qt.prototype.set=function(t,n){var r=this.__data__;return r instanceof Dt&&200==r.__data__.length&&(r=this.__data__=new Pt(r.__data__)),
r.set(t,n),this};var mo=vr(hn),Ao=vr(pn,true),Oo=gr(),ko=gr(true);Fu&&!Tu.call({valueOf:1},"valueOf")&&(En=function(t){return z(Fu(t))});var Eo=so?function(t,n){return so.set(t,n),t}:hu,So=co&&1/D(new co([,-0]))[1]==q?function(t){return new co(t)}:vu,Io=so?function(t){return so.get(t)}:vu,Ro=Un("length");Nu||(Zr=du);var Wo=Nu?function(t){for(var n=[];t;)s(n,Zr(t)),t=Gu(Object(t));return n}:Zr;(oo&&"[object DataView]"!=Tr(new oo(new ArrayBuffer(1)))||io&&"[object Map]"!=Tr(new io)||fo&&"[object Promise]"!=Tr(fo.resolve())||co&&"[object Set]"!=Tr(new co)||ao&&"[object WeakMap]"!=Tr(new ao))&&(Tr=function(t){
var n=Lu.call(t);if(t=(t="[object Object]"==n?t.constructor:T)?fe(t):T)switch(t){case _o:return"[object DataView]";case vo:return"[object Map]";case go:return"[object Promise]";case yo:return"[object Set]";case bo:return"[object WeakMap]"}return n});var Bo=Eu?De:yu,Lo=function(){var t=0,n=0;return function(r,e){var u=ke(),o=16-(u-n);if(n=u,o>0){if(150<=++t)return r}else t=0;return Eo(r,e)}}(),Mo=Be(function(t){var n=[];return ru(t).replace(ot,function(t,r,e,u){n.push(e?u.replace(ht,"$1"):r||t)}),
n}),Co=Le(function(t,n){return Ue(t)?fn(t,sn(n,1,Ue,true)):[]}),zo=Le(function(t,n){var r=_e(n);return Ue(r)&&(r=T),Ue(t)?fn(t,sn(n,1,Ue,true),Dr(r)):[]}),Uo=Le(function(t,n){var r=_e(n);return Ue(r)&&(r=T),Ue(t)?fn(t,sn(n,1,Ue,true),T,r):[]}),$o=Le(function(t){var n=l(t,rr);return n.length&&n[0]===t[0]?xn(n):[]}),Do=Le(function(t){var n=_e(t),r=l(t,rr);return n===_e(r)?n=T:r.pop(),r.length&&r[0]===t[0]?xn(r,Dr(n)):[]}),Fo=Le(function(t){var n=_e(t),r=l(t,rr);return n===_e(r)?n=T:r.pop(),r.length&&r[0]===t[0]?xn(r,T,n):[];
}),No=Le(ve),Po=Le(function(t,n){n=sn(n,1);var r=t?t.length:0,e=tn(t,n);return Fn(t,l(n,function(t){return Qr(t,r)?+t:t}).sort(fr)),e}),Zo=Le(function(t){return Hn(sn(t,1,Ue,true))}),To=Le(function(t){var n=_e(t);return Ue(n)&&(n=T),Hn(sn(t,1,Ue,true),Dr(n))}),qo=Le(function(t){var n=_e(t);return Ue(n)&&(n=T),Hn(sn(t,1,Ue,true),T,n)}),Vo=Le(function(t,n){return Ue(t)?fn(t,n):[]}),Ko=Le(function(t){return tr(f(t,Ue))}),Go=Le(function(t){var n=_e(t);return Ue(n)&&(n=T),tr(f(t,Ue),Dr(n))}),Jo=Le(function(t){
var n=_e(t);return Ue(n)&&(n=T),tr(f(t,Ue),T,n)}),Yo=Le(de),Ho=Le(function(t){var n=t.length,n=n>1?t[n-1]:T,n=typeof n=="function"?(t.pop(),n):T;return ye(t,n)}),Qo=Le(function(t){function n(n){return tn(n,t)}t=sn(t,1);var r=t.length,e=r?t[0]:0,u=this.__wrapped__;return!(r>1||this.__actions__.length)&&u instanceof Ut&&Qr(e)?(u=u.slice(e,+e+(r?1:0)),u.__actions__.push({func:xe,args:[n],thisArg:T}),new zt(u,this.__chain__).thru(function(t){return r&&!t.length&&t.push(T),t})):this.thru(n)}),Xo=pr(function(t,n,r){
Ru.call(t,r)?++t[r]:t[r]=1}),ti=pr(function(t,n,r){Ru.call(t,r)?t[r].push(n):t[r]=[n]}),ni=Le(function(t,n,e){var u=-1,o=typeof n=="function",i=te(n),f=ze(t)?Array(t.length):[];return mo(t,function(t){var c=o?n:i&&null!=t?t[n]:T;f[++u]=c?r(c,t,e):wn(t,n,e)}),f}),ri=pr(function(t,n,r){t[r]=n}),ei=pr(function(t,n,r){t[r?0:1].push(n)},function(){return[[],[]]}),ui=Le(function(t,n){if(null==t)return[];var r=n.length;return r>1&&Xr(t,n[0],n[1])?n=[]:r>2&&Xr(n[0],n[1],n[2])&&(n=[n[0]]),n=1==n.length&&vi(n[0])?n[0]:sn(n,1,Hr),
Mn(t,n,[])}),oi=Le(function(t,n,r){var e=1;if(r.length)var u=$(r,$r(oi)),e=32|e;return Mr(t,e,n,r,u)}),ii=Le(function(t,n,r){var e=3;if(r.length)var u=$(r,$r(ii)),e=32|e;return Mr(n,e,t,r,u)}),fi=Le(function(t,n){return on(t,1,n)}),ci=Le(function(t,n,r){return on(t,tu(n)||0,r)});Be.Cache=Pt;var ai=Le(function(t,n){n=1==n.length&&vi(n[0])?l(n[0],O(Dr())):l(sn(n,1,Hr),O(Dr()));var e=n.length;return Le(function(u){for(var o=-1,i=Xu(u.length,e);++o<i;)u[o]=n[o].call(this,u[o]);return r(t,this,u)})}),li=Le(function(t,n){
var r=$(n,$r(li));return Mr(t,32,T,n,r)}),si=Le(function(t,n){var r=$(n,$r(si));return Mr(t,64,T,n,r)}),hi=Le(function(t,n){return Mr(t,256,T,T,T,sn(n,1))}),pi=Rr(dn),_i=Rr(function(t,n){return t>=n}),vi=Array.isArray,gi=zu?function(t){return t instanceof zu}:yu,di=Rr(Sn),yi=Rr(function(t,n){return n>=t}),bi=_r(function(t,n){if(ho||re(n)||ze(n))sr(n,ou(n),t);else for(var r in n)Ru.call(n,r)&&Yt(t,r,n[r])}),xi=_r(function(t,n){if(ho||re(n)||ze(n))sr(n,iu(n),t);else for(var r in n)Yt(t,r,n[r])}),ji=_r(function(t,n,r,e){
sr(n,iu(n),t,e)}),wi=_r(function(t,n,r,e){sr(n,ou(n),t,e)}),mi=Le(function(t,n){return tn(t,sn(n,1))}),Ai=Le(function(t){return t.push(T,Vt),r(ji,T,t)}),Oi=Le(function(t){return t.push(T,ue),r(Ri,T,t)}),ki=Ar(function(t,n,r){t[n]=r},su(hu)),Ei=Ar(function(t,n,r){Ru.call(t,n)?t[n].push(r):t[n]=[r]},Dr),Si=Le(wn),Ii=_r(function(t,n,r){Bn(t,n,r)}),Ri=_r(function(t,n,r,e){Bn(t,n,r,e)}),Wi=Le(function(t,n){return null==t?{}:(n=l(sn(n,1),ie),Cn(t,fn(gn(t,iu,Wo),n)))}),Bi=Le(function(t,n){return null==t?{}:Cn(t,l(sn(n,1),ie));
}),Li=Lr(ou),Mi=Lr(iu),Ci=br(function(t,n,r){return n=n.toLowerCase(),t+(r?cu(n):n)}),zi=br(function(t,n,r){return t+(r?"-":"")+n.toLowerCase()}),Ui=br(function(t,n,r){return t+(r?" ":"")+n.toLowerCase()}),$i=yr("toLowerCase"),Di=br(function(t,n,r){return t+(r?"_":"")+n.toLowerCase()}),Fi=br(function(t,n,r){return t+(r?" ":"")+Pi(n)}),Ni=br(function(t,n,r){return t+(r?" ":"")+n.toUpperCase()}),Pi=yr("toUpperCase"),Zi=Le(function(t,n){try{return r(t,T,n)}catch(e){return $e(e)?e:new xu(e)}}),Ti=Le(function(t,n){
return u(sn(n,1),function(n){n=ie(n),t[n]=oi(t[n],t)}),t}),qi=wr(),Vi=wr(true),Ki=Le(function(t,n){return function(r){return wn(r,t,n)}}),Gi=Le(function(t,n){return function(r){return wn(t,r,n)}}),Ji=kr(l),Yi=kr(i),Hi=kr(_),Qi=Ir(),Xi=Ir(true),tf=Or(function(t,n){return t+n}),nf=Br("ceil"),rf=Or(function(t,n){return t/n}),ef=Br("floor"),uf=Or(function(t,n){return t*n}),of=Br("round"),ff=Or(function(t,n){return t-n});return Ot.after=function(t,n){if(typeof n!="function")throw new mu("Expected a function");
return t=Qe(t),function(){return 1>--t?n.apply(this,arguments):void 0}},Ot.ary=Ee,Ot.assign=bi,Ot.assignIn=xi,Ot.assignInWith=ji,Ot.assignWith=wi,Ot.at=mi,Ot.before=Se,Ot.bind=oi,Ot.bindAll=Ti,Ot.bindKey=ii,Ot.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return vi(t)?t:[t]},Ot.chain=be,Ot.chunk=function(t,n,r){if(n=(r?Xr(t,n,r):n===T)?1:Qu(Qe(n),0),r=t?t.length:0,!r||1>n)return[];for(var e=0,u=0,o=Array(Vu(r/n));r>e;)o[u++]=Tn(t,e,e+=n);return o},Ot.compact=function(t){for(var n=-1,r=t?t.length:0,e=0,u=[];++n<r;){
var o=t[n];o&&(u[e++]=o)}return u},Ot.concat=function(){for(var t=arguments.length,n=Array(t?t-1:0),r=arguments[0],e=t;e--;)n[e-1]=arguments[e];return t?s(vi(r)?lr(r):[r],sn(n,1)):[]},Ot.cond=function(t){var n=t?t.length:0,e=Dr();return t=n?l(t,function(t){if("function"!=typeof t[1])throw new mu("Expected a function");return[e(t[0]),t[1]]}):[],Le(function(e){for(var u=-1;++u<n;){var o=t[u];if(r(o[0],this,e))return r(o[1],this,e)}})},Ot.conforms=function(t){return en(rn(t,true))},Ot.constant=su,Ot.countBy=Xo,
Ot.create=function(t,n){var r=un(t);return n?Xt(r,n):r},Ot.curry=Ie,Ot.curryRight=Re,Ot.debounce=We,Ot.defaults=Ai,Ot.defaultsDeep=Oi,Ot.defer=fi,Ot.delay=ci,Ot.difference=Co,Ot.differenceBy=zo,Ot.differenceWith=Uo,Ot.drop=ae,Ot.dropRight=le,Ot.dropRightWhile=function(t,n){return t&&t.length?Qn(t,Dr(n,3),true,true):[]},Ot.dropWhile=function(t,n){return t&&t.length?Qn(t,Dr(n,3),true):[]},Ot.fill=function(t,n,r,e){var u=t?t.length:0;if(!u)return[];for(r&&typeof r!="number"&&Xr(t,n,r)&&(r=0,e=u),u=t.length,
r=Qe(r),0>r&&(r=-r>u?0:u+r),e=e===T||e>u?u:Qe(e),0>e&&(e+=u),e=r>e?0:Xe(e);e>r;)t[r++]=n;return t},Ot.filter=function(t,n){return(vi(t)?f:ln)(t,Dr(n,3))},Ot.flatMap=function(t,n){return sn(Ae(t,n),1)},Ot.flatMapDeep=function(t,n){return sn(Ae(t,n),q)},Ot.flatMapDepth=function(t,n,r){return r=r===T?1:Qe(r),sn(Ae(t,n),r)},Ot.flatten=function(t){return t&&t.length?sn(t,1):[]},Ot.flattenDeep=function(t){return t&&t.length?sn(t,q):[]},Ot.flattenDepth=function(t,n){return t&&t.length?(n=n===T?1:Qe(n),sn(t,n)):[];
},Ot.flip=function(t){return Mr(t,512)},Ot.flow=qi,Ot.flowRight=Vi,Ot.fromPairs=function(t){for(var n=-1,r=t?t.length:0,e={};++n<r;){var u=t[n];e[u[0]]=u[1]}return e},Ot.functions=function(t){return null==t?[]:_n(t,ou(t))},Ot.functionsIn=function(t){return null==t?[]:_n(t,iu(t))},Ot.groupBy=ti,Ot.initial=function(t){return le(t,1)},Ot.intersection=$o,Ot.intersectionBy=Do,Ot.intersectionWith=Fo,Ot.invert=ki,Ot.invertBy=Ei,Ot.invokeMap=ni,Ot.iteratee=pu,Ot.keyBy=ri,Ot.keys=ou,Ot.keysIn=iu,Ot.map=Ae,
Ot.mapKeys=function(t,n){var r={};return n=Dr(n,3),hn(t,function(t,e,u){r[n(t,e,u)]=t}),r},Ot.mapValues=function(t,n){var r={};return n=Dr(n,3),hn(t,function(t,e,u){r[e]=n(t,e,u)}),r},Ot.matches=function(t){return Rn(rn(t,true))},Ot.matchesProperty=function(t,n){return Wn(t,rn(n,true))},Ot.memoize=Be,Ot.merge=Ii,Ot.mergeWith=Ri,Ot.method=Ki,Ot.methodOf=Gi,Ot.mixin=_u,Ot.negate=function(t){if(typeof t!="function")throw new mu("Expected a function");return function(){return!t.apply(this,arguments)}},Ot.nthArg=function(t){
return t=Qe(t),Le(function(n){return Ln(n,t)})},Ot.omit=Wi,Ot.omitBy=function(t,n){return n=Dr(n),zn(t,function(t,r){return!n(t,r)})},Ot.once=function(t){return Se(2,t)},Ot.orderBy=function(t,n,r,e){return null==t?[]:(vi(n)||(n=null==n?[]:[n]),r=e?T:r,vi(r)||(r=null==r?[]:[r]),Mn(t,n,r))},Ot.over=Ji,Ot.overArgs=ai,Ot.overEvery=Yi,Ot.overSome=Hi,Ot.partial=li,Ot.partialRight=si,Ot.partition=ei,Ot.pick=Bi,Ot.pickBy=function(t,n){return null==t?{}:zn(t,Dr(n))},Ot.property=gu,Ot.propertyOf=function(t){
return function(n){return null==t?T:vn(t,n)}},Ot.pull=No,Ot.pullAll=ve,Ot.pullAllBy=function(t,n,r){return t&&t.length&&n&&n.length?Dn(t,n,Dr(r)):t},Ot.pullAllWith=function(t,n,r){return t&&t.length&&n&&n.length?Dn(t,n,T,r):t},Ot.pullAt=Po,Ot.range=Qi,Ot.rangeRight=Xi,Ot.rearg=hi,Ot.reject=function(t,n){var r=vi(t)?f:ln;return n=Dr(n,3),r(t,function(t,r,e){return!n(t,r,e)})},Ot.remove=function(t,n){var r=[];if(!t||!t.length)return r;var e=-1,u=[],o=t.length;for(n=Dr(n,3);++e<o;){var i=t[e];n(i,e,t)&&(r.push(i),
u.push(e))}return Fn(t,u),r},Ot.rest=Le,Ot.reverse=ge,Ot.sampleSize=Oe,Ot.set=function(t,n,r){return null==t?t:Zn(t,n,r)},Ot.setWith=function(t,n,r,e){return e=typeof e=="function"?e:T,null==t?t:Zn(t,n,r,e)},Ot.shuffle=function(t){return Oe(t,4294967295)},Ot.slice=function(t,n,r){var e=t?t.length:0;return e?(r&&typeof r!="number"&&Xr(t,n,r)?(n=0,r=e):(n=null==n?0:Qe(n),r=r===T?e:Qe(r)),Tn(t,n,r)):[]},Ot.sortBy=ui,Ot.sortedUniq=function(t){return t&&t.length?Gn(t):[]},Ot.sortedUniqBy=function(t,n){
return t&&t.length?Gn(t,Dr(n)):[]},Ot.split=function(t,n,r){return r&&typeof r!="number"&&Xr(t,n,r)&&(n=r=T),r=r===T?4294967295:r>>>0,r?(t=ru(t))&&(typeof n=="string"||null!=n&&!Ve(n))&&(n=Yn(n),""==n&&Wt.test(t))?ur(t.match(It),0,r):uo.call(t,n,r):[]},Ot.spread=function(t,n){if(typeof t!="function")throw new mu("Expected a function");return n=n===T?0:Qu(Qe(n),0),Le(function(e){var u=e[n];return e=ur(e,0,n),u&&s(e,u),r(t,this,e)})},Ot.tail=function(t){return ae(t,1)},Ot.take=function(t,n,r){return t&&t.length?(n=r||n===T?1:Qe(n),
Tn(t,0,0>n?0:n)):[]},Ot.takeRight=function(t,n,r){var e=t?t.length:0;return e?(n=r||n===T?1:Qe(n),n=e-n,Tn(t,0>n?0:n,e)):[]},Ot.takeRightWhile=function(t,n){return t&&t.length?Qn(t,Dr(n,3),false,true):[]},Ot.takeWhile=function(t,n){return t&&t.length?Qn(t,Dr(n,3)):[]},Ot.tap=function(t,n){return n(t),t},Ot.throttle=function(t,n,r){var e=true,u=true;if(typeof t!="function")throw new mu("Expected a function");return Pe(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),We(t,n,{leading:e,maxWait:n,
trailing:u})},Ot.thru=xe,Ot.toArray=Ye,Ot.toPairs=Li,Ot.toPairsIn=Mi,Ot.toPath=function(t){return vi(t)?l(t,ie):Ge(t)?[t]:lr(Mo(t))},Ot.toPlainObject=nu,Ot.transform=function(t,n,r){var e=vi(t)||Je(t);if(n=Dr(n,4),null==r)if(e||Pe(t)){var o=t.constructor;r=e?vi(t)?new o:[]:De(o)?un(Gu(Object(t))):{}}else r={};return(e?u:hn)(t,function(t,e,u){return n(r,t,e,u)}),r},Ot.unary=function(t){return Ee(t,1)},Ot.union=Zo,Ot.unionBy=To,Ot.unionWith=qo,Ot.uniq=function(t){return t&&t.length?Hn(t):[]},Ot.uniqBy=function(t,n){
return t&&t.length?Hn(t,Dr(n)):[]},Ot.uniqWith=function(t,n){return t&&t.length?Hn(t,T,n):[]},Ot.unset=function(t,n){var r;if(null==t)r=true;else{r=t;var e=n,e=te(e,r)?[e]:er(e);r=oe(r,e),e=ie(_e(e)),r=!(null!=r&&yn(r,e))||delete r[e]}return r},Ot.unzip=de,Ot.unzipWith=ye,Ot.update=function(t,n,r){return null==t?t:Zn(t,n,(typeof r=="function"?r:hu)(vn(t,n)),void 0)},Ot.updateWith=function(t,n,r,e){return e=typeof e=="function"?e:T,null!=t&&(t=Zn(t,n,(typeof r=="function"?r:hu)(vn(t,n)),e)),t},Ot.values=fu,
Ot.valuesIn=function(t){return null==t?[]:k(t,iu(t))},Ot.without=Vo,Ot.words=lu,Ot.wrap=function(t,n){return n=null==n?hu:n,li(n,t)},Ot.xor=Ko,Ot.xorBy=Go,Ot.xorWith=Jo,Ot.zip=Yo,Ot.zipObject=function(t,n){return nr(t||[],n||[],Yt)},Ot.zipObjectDeep=function(t,n){return nr(t||[],n||[],Zn)},Ot.zipWith=Ho,Ot.entries=Li,Ot.entriesIn=Mi,Ot.extend=xi,Ot.extendWith=ji,_u(Ot,Ot),Ot.add=tf,Ot.attempt=Zi,Ot.camelCase=Ci,Ot.capitalize=cu,Ot.ceil=nf,Ot.clamp=function(t,n,r){return r===T&&(r=n,n=T),r!==T&&(r=tu(r),
r=r===r?r:0),n!==T&&(n=tu(n),n=n===n?n:0),nn(tu(t),n,r)},Ot.clone=function(t){return rn(t,false,true)},Ot.cloneDeep=function(t){return rn(t,true,true)},Ot.cloneDeepWith=function(t,n){return rn(t,true,true,n)},Ot.cloneWith=function(t,n){return rn(t,false,true,n)},Ot.deburr=au,Ot.divide=rf,Ot.endsWith=function(t,n,r){t=ru(t),n=Yn(n);var e=t.length;return r=r===T?e:nn(Qe(r),0,e),r-=n.length,r>=0&&t.indexOf(n,r)==r},Ot.eq=Me,Ot.escape=function(t){return(t=ru(t))&&X.test(t)?t.replace(H,B):t},Ot.escapeRegExp=function(t){
return(t=ru(t))&&ft.test(t)?t.replace(it,"\\$&"):t},Ot.every=function(t,n,r){var e=vi(t)?i:cn;return r&&Xr(t,n,r)&&(n=T),e(t,Dr(n,3))},Ot.find=function(t,n,r){return t=ze(t)?t:fu(t),n=se(t,n,r),n>-1?t[n]:T},Ot.findIndex=se,Ot.findKey=function(t,n){return v(t,Dr(n,3),hn)},Ot.findLast=function(t,n,r){return t=ze(t)?t:fu(t),n=he(t,n,r),n>-1?t[n]:T},Ot.findLastIndex=he,Ot.findLastKey=function(t,n){return v(t,Dr(n,3),pn)},Ot.floor=ef,Ot.forEach=we,Ot.forEachRight=me,Ot.forIn=function(t,n){return null==t?t:Oo(t,Dr(n,3),iu);
},Ot.forInRight=function(t,n){return null==t?t:ko(t,Dr(n,3),iu)},Ot.forOwn=function(t,n){return t&&hn(t,Dr(n,3))},Ot.forOwnRight=function(t,n){return t&&pn(t,Dr(n,3))},Ot.get=eu,Ot.gt=pi,Ot.gte=_i,Ot.has=function(t,n){return null!=t&&qr(t,n,yn)},Ot.hasIn=uu,Ot.head=pe,Ot.identity=hu,Ot.includes=function(t,n,r,e){return t=ze(t)?t:fu(t),r=r&&!e?Qe(r):0,e=t.length,0>r&&(r=Qu(e+r,0)),Ke(t)?e>=r&&-1<t.indexOf(n,r):!!e&&-1<d(t,n,r)},Ot.indexOf=function(t,n,r){var e=t?t.length:0;return e?(r=null==r?0:Qe(r),
0>r&&(r=Qu(e+r,0)),d(t,n,r)):-1},Ot.inRange=function(t,n,r){return n=tu(n)||0,r===T?(r=n,n=0):r=tu(r)||0,t=tu(t),t>=Xu(n,r)&&t<Qu(n,r)},Ot.invoke=Si,Ot.isArguments=Ce,Ot.isArray=vi,Ot.isArrayBuffer=function(t){return Ze(t)&&"[object ArrayBuffer]"==Lu.call(t)},Ot.isArrayLike=ze,Ot.isArrayLikeObject=Ue,Ot.isBoolean=function(t){return true===t||false===t||Ze(t)&&"[object Boolean]"==Lu.call(t)},Ot.isBuffer=gi,Ot.isDate=function(t){return Ze(t)&&"[object Date]"==Lu.call(t)},Ot.isElement=function(t){return!!t&&1===t.nodeType&&Ze(t)&&!qe(t);
},Ot.isEmpty=function(t){if(ze(t)&&(vi(t)||Ke(t)||De(t.splice)||Ce(t)||gi(t)))return!t.length;if(Ze(t)){var n=Tr(t);if("[object Map]"==n||"[object Set]"==n)return!t.size}for(var r in t)if(Ru.call(t,r))return false;return!(ho&&ou(t).length)},Ot.isEqual=function(t,n){return mn(t,n)},Ot.isEqualWith=function(t,n,r){var e=(r=typeof r=="function"?r:T)?r(t,n):T;return e===T?mn(t,n,r):!!e},Ot.isError=$e,Ot.isFinite=function(t){return typeof t=="number"&&Ju(t)},Ot.isFunction=De,Ot.isInteger=Fe,Ot.isLength=Ne,Ot.isMap=function(t){
return Ze(t)&&"[object Map]"==Tr(t)},Ot.isMatch=function(t,n){return t===n||An(t,n,Nr(n))},Ot.isMatchWith=function(t,n,r){return r=typeof r=="function"?r:T,An(t,n,Nr(n),r)},Ot.isNaN=function(t){return Te(t)&&t!=+t},Ot.isNative=function(t){if(Bo(t))throw new xu("This method is not supported with `core-js`. Try https://github.com/es-shims.");return On(t)},Ot.isNil=function(t){return null==t},Ot.isNull=function(t){return null===t},Ot.isNumber=Te,Ot.isObject=Pe,Ot.isObjectLike=Ze,Ot.isPlainObject=qe,
Ot.isRegExp=Ve,Ot.isSafeInteger=function(t){return Fe(t)&&t>=-9007199254740991&&9007199254740991>=t},Ot.isSet=function(t){return Ze(t)&&"[object Set]"==Tr(t)},Ot.isString=Ke,Ot.isSymbol=Ge,Ot.isTypedArray=Je,Ot.isUndefined=function(t){return t===T},Ot.isWeakMap=function(t){return Ze(t)&&"[object WeakMap]"==Tr(t)},Ot.isWeakSet=function(t){return Ze(t)&&"[object WeakSet]"==Lu.call(t)},Ot.join=function(t,n){return t?Yu.call(t,n):""},Ot.kebabCase=zi,Ot.last=_e,Ot.lastIndexOf=function(t,n,r){var e=t?t.length:0;
if(!e)return-1;var u=e;if(r!==T&&(u=Qe(r),u=(0>u?Qu(e+u,0):Xu(u,e-1))+1),n!==n)return M(t,u-1,true);for(;u--;)if(t[u]===n)return u;return-1},Ot.lowerCase=Ui,Ot.lowerFirst=$i,Ot.lt=di,Ot.lte=yi,Ot.max=function(t){return t&&t.length?an(t,hu,dn):T},Ot.maxBy=function(t,n){return t&&t.length?an(t,Dr(n),dn):T},Ot.mean=function(t){return b(t,hu)},Ot.meanBy=function(t,n){return b(t,Dr(n))},Ot.min=function(t){return t&&t.length?an(t,hu,Sn):T},Ot.minBy=function(t,n){return t&&t.length?an(t,Dr(n),Sn):T},Ot.stubArray=du,
Ot.stubFalse=yu,Ot.stubObject=function(){return{}},Ot.stubString=function(){return""},Ot.stubTrue=function(){return true},Ot.multiply=uf,Ot.nth=function(t,n){return t&&t.length?Ln(t,Qe(n)):T},Ot.noConflict=function(){return Kt._===this&&(Kt._=Mu),this},Ot.noop=vu,Ot.now=ke,Ot.pad=function(t,n,r){t=ru(t);var e=(n=Qe(n))?N(t):0;return!n||e>=n?t:(n=(n-e)/2,Er(Ku(n),r)+t+Er(Vu(n),r))},Ot.padEnd=function(t,n,r){t=ru(t);var e=(n=Qe(n))?N(t):0;return n&&n>e?t+Er(n-e,r):t},Ot.padStart=function(t,n,r){t=ru(t);
var e=(n=Qe(n))?N(t):0;return n&&n>e?Er(n-e,r)+t:t},Ot.parseInt=function(t,n,r){return r||null==n?n=0:n&&(n=+n),t=ru(t).replace(ct,""),to(t,n||(vt.test(t)?16:10))},Ot.random=function(t,n,r){if(r&&typeof r!="boolean"&&Xr(t,n,r)&&(n=r=T),r===T&&(typeof n=="boolean"?(r=n,n=T):typeof t=="boolean"&&(r=t,t=T)),t===T&&n===T?(t=0,n=1):(t=tu(t)||0,n===T?(n=t,t=0):n=tu(n)||0),t>n){var e=t;t=n,n=e}return r||t%1||n%1?(r=no(),Xu(t+r*(n-t+Ft("1e-"+((r+"").length-1))),n)):Nn(t,n)},Ot.reduce=function(t,n,r){var e=vi(t)?h:x,u=3>arguments.length;
return e(t,Dr(n,4),r,u,mo)},Ot.reduceRight=function(t,n,r){var e=vi(t)?p:x,u=3>arguments.length;return e(t,Dr(n,4),r,u,Ao)},Ot.repeat=function(t,n,r){return n=(r?Xr(t,n,r):n===T)?1:Qe(n),Pn(ru(t),n)},Ot.replace=function(){var t=arguments,n=ru(t[0]);return 3>t.length?n:ro.call(n,t[1],t[2])},Ot.result=function(t,n,r){n=te(n,t)?[n]:er(n);var e=-1,u=n.length;for(u||(t=T,u=1);++e<u;){var o=null==t?T:t[ie(n[e])];o===T&&(e=u,o=r),t=De(o)?o.call(t):o}return t},Ot.round=of,Ot.runInContext=Z,Ot.sample=function(t){
t=ze(t)?t:fu(t);var n=t.length;return n>0?t[Nn(0,n-1)]:T},Ot.size=function(t){if(null==t)return 0;if(ze(t)){var n=t.length;return n&&Ke(t)?N(t):n}return Ze(t)&&(n=Tr(t),"[object Map]"==n||"[object Set]"==n)?t.size:ou(t).length},Ot.snakeCase=Di,Ot.some=function(t,n,r){var e=vi(t)?_:qn;return r&&Xr(t,n,r)&&(n=T),e(t,Dr(n,3))},Ot.sortedIndex=function(t,n){return Vn(t,n)},Ot.sortedIndexBy=function(t,n,r){return Kn(t,n,Dr(r))},Ot.sortedIndexOf=function(t,n){var r=t?t.length:0;if(r){var e=Vn(t,n);if(r>e&&Me(t[e],n))return e;
}return-1},Ot.sortedLastIndex=function(t,n){return Vn(t,n,true)},Ot.sortedLastIndexBy=function(t,n,r){return Kn(t,n,Dr(r),true)},Ot.sortedLastIndexOf=function(t,n){if(t&&t.length){var r=Vn(t,n,true)-1;if(Me(t[r],n))return r}return-1},Ot.startCase=Fi,Ot.startsWith=function(t,n,r){return t=ru(t),r=nn(Qe(r),0,t.length),t.lastIndexOf(Yn(n),r)==r},Ot.subtract=ff,Ot.sum=function(t){return t&&t.length?w(t,hu):0},Ot.sumBy=function(t,n){return t&&t.length?w(t,Dr(n)):0},Ot.template=function(t,n,r){var e=Ot.templateSettings;
r&&Xr(t,n,r)&&(n=T),t=ru(t),n=ji({},n,e,Vt),r=ji({},n.imports,e.imports,Vt);var u,o,i=ou(r),f=k(r,i),c=0;r=n.interpolate||wt;var a="__p+='";r=wu((n.escape||wt).source+"|"+r.source+"|"+(r===rt?pt:wt).source+"|"+(n.evaluate||wt).source+"|$","g");var l="sourceURL"in n?"//# sourceURL="+n.sourceURL+"\n":"";if(t.replace(r,function(n,r,e,i,f,l){return e||(e=i),a+=t.slice(c,l).replace(mt,L),r&&(u=true,a+="'+__e("+r+")+'"),f&&(o=true,a+="';"+f+";\n__p+='"),e&&(a+="'+((__t=("+e+"))==null?'':__t)+'"),c=l+n.length,
n}),a+="';",(n=n.variable)||(a="with(obj){"+a+"}"),a=(o?a.replace(K,""):a).replace(G,"$1").replace(J,"$1;"),a="function("+(n||"obj")+"){"+(n?"":"obj||(obj={});")+"var __t,__p=''"+(u?",__e=_.escape":"")+(o?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+a+"return __p}",n=Zi(function(){return Function(i,l+"return "+a).apply(T,f)}),n.source=a,$e(n))throw n;return n},Ot.times=function(t,n){if(t=Qe(t),1>t||t>9007199254740991)return[];var r=4294967295,e=Xu(t,4294967295);for(n=Dr(n),
t-=4294967295,e=m(e,n);++r<t;)n(r);return e},Ot.toFinite=He,Ot.toInteger=Qe,Ot.toLength=Xe,Ot.toLower=function(t){return ru(t).toLowerCase()},Ot.toNumber=tu,Ot.toSafeInteger=function(t){return nn(Qe(t),-9007199254740991,9007199254740991)},Ot.toString=ru,Ot.toUpper=function(t){return ru(t).toUpperCase()},Ot.trim=function(t,n,r){return(t=ru(t))&&(r||n===T)?t.replace(ct,""):t&&(n=Yn(n))?(t=t.match(It),n=n.match(It),ur(t,S(t,n),I(t,n)+1).join("")):t},Ot.trimEnd=function(t,n,r){return(t=ru(t))&&(r||n===T)?t.replace(lt,""):t&&(n=Yn(n))?(t=t.match(It),
n=I(t,n.match(It))+1,ur(t,0,n).join("")):t},Ot.trimStart=function(t,n,r){return(t=ru(t))&&(r||n===T)?t.replace(at,""):t&&(n=Yn(n))?(t=t.match(It),n=S(t,n.match(It)),ur(t,n).join("")):t},Ot.truncate=function(t,n){var r=30,e="...";if(Pe(n))var u="separator"in n?n.separator:u,r="length"in n?Qe(n.length):r,e="omission"in n?Yn(n.omission):e;t=ru(t);var o=t.length;if(Wt.test(t))var i=t.match(It),o=i.length;if(r>=o)return t;if(o=r-N(e),1>o)return e;if(r=i?ur(i,0,o).join(""):t.slice(0,o),u===T)return r+e;
if(i&&(o+=r.length-o),Ve(u)){if(t.slice(o).search(u)){var f=r;for(u.global||(u=wu(u.source,ru(_t.exec(u))+"g")),u.lastIndex=0;i=u.exec(f);)var c=i.index;r=r.slice(0,c===T?o:c)}}else t.indexOf(Yn(u),o)!=o&&(u=r.lastIndexOf(u),u>-1&&(r=r.slice(0,u)));return r+e},Ot.unescape=function(t){return(t=ru(t))&&Q.test(t)?t.replace(Y,P):t},Ot.uniqueId=function(t){var n=++Wu;return ru(t)+n},Ot.upperCase=Ni,Ot.upperFirst=Pi,Ot.each=we,Ot.eachRight=me,Ot.first=pe,_u(Ot,function(){var t={};return hn(Ot,function(n,r){
Ru.call(Ot.prototype,r)||(t[r]=n)}),t}(),{chain:false}),Ot.VERSION="4.13.0",u("bind bindKey curry curryRight partial partialRight".split(" "),function(t){Ot[t].placeholder=Ot}),u(["drop","take"],function(t,n){Ut.prototype[t]=function(r){var e=this.__filtered__;if(e&&!n)return new Ut(this);r=r===T?1:Qu(Qe(r),0);var u=this.clone();return e?u.__takeCount__=Xu(r,u.__takeCount__):u.__views__.push({size:Xu(r,4294967295),type:t+(0>u.__dir__?"Right":"")}),u},Ut.prototype[t+"Right"]=function(n){return this.reverse()[t](n).reverse();
}}),u(["filter","map","takeWhile"],function(t,n){var r=n+1,e=1==r||3==r;Ut.prototype[t]=function(t){var n=this.clone();return n.__iteratees__.push({iteratee:Dr(t,3),type:r}),n.__filtered__=n.__filtered__||e,n}}),u(["head","last"],function(t,n){var r="take"+(n?"Right":"");Ut.prototype[t]=function(){return this[r](1).value()[0]}}),u(["initial","tail"],function(t,n){var r="drop"+(n?"":"Right");Ut.prototype[t]=function(){return this.__filtered__?new Ut(this):this[r](1)}}),Ut.prototype.compact=function(){
return this.filter(hu)},Ut.prototype.find=function(t){return this.filter(t).head()},Ut.prototype.findLast=function(t){return this.reverse().find(t)},Ut.prototype.invokeMap=Le(function(t,n){return typeof t=="function"?new Ut(this):this.map(function(r){return wn(r,t,n)})}),Ut.prototype.reject=function(t){return t=Dr(t,3),this.filter(function(n){return!t(n)})},Ut.prototype.slice=function(t,n){t=Qe(t);var r=this;return r.__filtered__&&(t>0||0>n)?new Ut(r):(0>t?r=r.takeRight(-t):t&&(r=r.drop(t)),n!==T&&(n=Qe(n),
r=0>n?r.dropRight(-n):r.take(n-t)),r)},Ut.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},Ut.prototype.toArray=function(){return this.take(4294967295)},hn(Ut.prototype,function(t,n){var r=/^(?:filter|find|map|reject)|While$/.test(n),e=/^(?:head|last)$/.test(n),u=Ot[e?"take"+("last"==n?"Right":""):n],o=e||/^find/.test(n);u&&(Ot.prototype[n]=function(){function n(t){return t=u.apply(Ot,s([t],f)),e&&h?t[0]:t}var i=this.__wrapped__,f=e?[1]:arguments,c=i instanceof Ut,a=f[0],l=c||vi(i);
l&&r&&typeof a=="function"&&1!=a.length&&(c=l=false);var h=this.__chain__,p=!!this.__actions__.length,a=o&&!h,c=c&&!p;return!o&&l?(i=c?i:new Ut(this),i=t.apply(i,f),i.__actions__.push({func:xe,args:[n],thisArg:T}),new zt(i,h)):a&&c?t.apply(this,f):(i=this.thru(n),a?e?i.value()[0]:i.value():i)})}),u("pop push shift sort splice unshift".split(" "),function(t){var n=Au[t],r=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",e=/^(?:pop|shift)$/.test(t);Ot.prototype[t]=function(){var t=arguments;if(e&&!this.__chain__){
var u=this.value();return n.apply(vi(u)?u:[],t)}return this[r](function(r){return n.apply(vi(r)?r:[],t)})}}),hn(Ut.prototype,function(t,n){var r=Ot[n];if(r){var e=r.name+"";(po[e]||(po[e]=[])).push({name:n,func:r})}}),po[mr(T,2).name]=[{name:"wrapper",func:T}],Ut.prototype.clone=function(){var t=new Ut(this.__wrapped__);return t.__actions__=lr(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=lr(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=lr(this.__views__),
t},Ut.prototype.reverse=function(){if(this.__filtered__){var t=new Ut(this);t.__dir__=-1,t.__filtered__=true}else t=this.clone(),t.__dir__*=-1;return t},Ut.prototype.value=function(){var t,n=this.__wrapped__.value(),r=this.__dir__,e=vi(n),u=0>r,o=e?n.length:0;t=o;for(var i=this.__views__,f=0,c=-1,a=i.length;++c<a;){var l=i[c],s=l.size;switch(l.type){case"drop":f+=s;break;case"dropRight":t-=s;break;case"take":t=Xu(t,f+s);break;case"takeRight":f=Qu(f,t-s)}}if(t={start:f,end:t},i=t.start,f=t.end,t=f-i,
u=u?f:i-1,i=this.__iteratees__,f=i.length,c=0,a=Xu(t,this.__takeCount__),!e||200>o||o==t&&a==t)return Xn(n,this.__actions__);e=[];t:for(;t--&&a>c;){for(u+=r,o=-1,l=n[u];++o<f;){var h=i[o],s=h.type,h=(0,h.iteratee)(l);if(2==s)l=h;else if(!h){if(1==s)continue t;break t}}e[c++]=l}return e},Ot.prototype.at=Qo,Ot.prototype.chain=function(){return be(this)},Ot.prototype.commit=function(){return new zt(this.value(),this.__chain__)},Ot.prototype.next=function(){this.__values__===T&&(this.__values__=Ye(this.value()));
var t=this.__index__>=this.__values__.length,n=t?T:this.__values__[this.__index__++];return{done:t,value:n}},Ot.prototype.plant=function(t){for(var n,r=this;r instanceof kt;){var e=ce(r);e.__index__=0,e.__values__=T,n?u.__wrapped__=e:n=e;var u=e,r=r.__wrapped__}return u.__wrapped__=t,n},Ot.prototype.reverse=function(){var t=this.__wrapped__;return t instanceof Ut?(this.__actions__.length&&(t=new Ut(this)),t=t.reverse(),t.__actions__.push({func:xe,args:[ge],thisArg:T}),new zt(t,this.__chain__)):this.thru(ge);
},Ot.prototype.toJSON=Ot.prototype.valueOf=Ot.prototype.value=function(){return Xn(this.__wrapped__,this.__actions__)},Pu&&(Ot.prototype[Pu]=je),Ot}var T,q=1/0,V=NaN,K=/\b__p\+='';/g,G=/\b(__p\+=)''\+/g,J=/(__e\(.*?\)|\b__t\))\+'';/g,Y=/&(?:amp|lt|gt|quot|#39|#96);/g,H=/[&<>"'`]/g,Q=RegExp(Y.source),X=RegExp(H.source),tt=/<%-([\s\S]+?)%>/g,nt=/<%([\s\S]+?)%>/g,rt=/<%=([\s\S]+?)%>/g,et=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ut=/^\w*$/,ot=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(\.|\[\])(?:\4|$))/g,it=/[\\^$.*+?()[\]{}|]/g,ft=RegExp(it.source),ct=/^\s+|\s+$/g,at=/^\s+/,lt=/\s+$/,st=/[a-zA-Z0-9]+/g,ht=/\\(\\)?/g,pt=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,_t=/\w*$/,vt=/^0x/i,gt=/^[-+]0x[0-9a-f]+$/i,dt=/^0b[01]+$/i,yt=/^\[object .+?Constructor\]$/,bt=/^0o[0-7]+$/i,xt=/^(?:0|[1-9]\d*)$/,jt=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,wt=/($^)/,mt=/['\n\r\u2028\u2029\\]/g,At="[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?)*",Ot="(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])"+At,kt="(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]?|[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])",Et=RegExp("['\u2019]","g"),St=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]","g"),It=RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|"+kt+At,"g"),Rt=RegExp(["[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+(?:['\u2019](?:d|ll|m|re|s|t|ve))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde]|$)|(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde](?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])|$)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?(?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:d|ll|m|re|s|t|ve))?|[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?|\\d+",Ot].join("|"),"g"),Wt=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0\\ufe0e\\ufe0f]"),Bt=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Lt="Array Buffer DataView Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Map Math Object Promise Reflect RegExp Set String Symbol TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap _ isFinite parseInt setTimeout".split(" "),Mt={};
Mt["[object Float32Array]"]=Mt["[object Float64Array]"]=Mt["[object Int8Array]"]=Mt["[object Int16Array]"]=Mt["[object Int32Array]"]=Mt["[object Uint8Array]"]=Mt["[object Uint8ClampedArray]"]=Mt["[object Uint16Array]"]=Mt["[object Uint32Array]"]=true,Mt["[object Arguments]"]=Mt["[object Array]"]=Mt["[object ArrayBuffer]"]=Mt["[object Boolean]"]=Mt["[object DataView]"]=Mt["[object Date]"]=Mt["[object Error]"]=Mt["[object Function]"]=Mt["[object Map]"]=Mt["[object Number]"]=Mt["[object Object]"]=Mt["[object RegExp]"]=Mt["[object Set]"]=Mt["[object String]"]=Mt["[object WeakMap]"]=false;
var Ct={};Ct["[object Arguments]"]=Ct["[object Array]"]=Ct["[object ArrayBuffer]"]=Ct["[object DataView]"]=Ct["[object Boolean]"]=Ct["[object Date]"]=Ct["[object Float32Array]"]=Ct["[object Float64Array]"]=Ct["[object Int8Array]"]=Ct["[object Int16Array]"]=Ct["[object Int32Array]"]=Ct["[object Map]"]=Ct["[object Number]"]=Ct["[object Object]"]=Ct["[object RegExp]"]=Ct["[object Set]"]=Ct["[object String]"]=Ct["[object Symbol]"]=Ct["[object Uint8Array]"]=Ct["[object Uint8ClampedArray]"]=Ct["[object Uint16Array]"]=Ct["[object Uint32Array]"]=true,
Ct["[object Error]"]=Ct["[object Function]"]=Ct["[object WeakMap]"]=false;var zt={"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O",
"\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss"},Ut={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","`":"&#96;"},$t={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'","&#96;":"`"},Dt={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Ft=parseFloat,Nt=parseInt,Pt=typeof exports=="object"&&exports,Zt=Pt&&typeof module=="object"&&module,Tt=Zt&&Zt.exports===Pt,qt=R(typeof self=="object"&&self),Vt=R(typeof this=="object"&&this),Kt=R(typeof global=="object"&&global)||qt||Vt||Function("return this")(),Gt=Z();
(qt||{})._=Gt,typeof define=="function"&&typeof define.amd=="object"&&define.amd? define(function(){return Gt}):Zt?((Zt.exports=Gt)._=Gt,Pt._=Gt):Kt._=Gt}).call(this);
var u=-1,o=t?t.length:0;for(e&&o&&(r=t[++u]);++u<o;)r=n(r,t[u],u,t);return r}function p(t,n,r,e){var u=t?t.length:0;for(e&&u&&(r=t[--u]);u--;)r=n(r,t[u],u,t);return r}function _(t,n){for(var r=-1,e=t?t.length:0;++r<e;)if(n(t[r],r,t))return true;return false}function v(t,n,r){var e;return r(t,function(t,r,u){if(n(t,r,u))return e=r,false}),e}function g(t,n,r,e){var u=t.length;for(r+=e?1:-1;e?r--:++r<u;)if(n(t[r],r,t))return r;return-1}function d(t,n,r){if(n!==n)return g(t,b,r);--r;for(var e=t.length;++r<e;)if(t[r]===n)return r;
return-1}function y(t,n,r,e){--r;for(var u=t.length;++r<u;)if(e(t[r],n))return r;return-1}function b(t){return t!==t}function x(t,n){var r=t?t.length:0;return r?O(t,n)/r:Z}function j(t){return function(n){return null==n?N:n[t]}}function m(t){return function(n){return null==t?N:t[n]}}function w(t,n,r,e,u){return u(t,function(t,u,o){r=e?(e=false,t):n(r,t,u,o)}),r}function A(t,n){var r=t.length;for(t.sort(n);r--;)t[r]=t[r].c;return t}function O(t,n){for(var r,e=-1,u=t.length;++e<u;){var o=n(t[e]);o!==N&&(r=r===N?o:r+o);
}return r}function k(t,n){for(var r=-1,e=Array(t);++r<t;)e[r]=n(r);return e}function E(t,n){return l(n,function(n){return[n,t[n]]})}function S(t){return function(n){return t(n)}}function I(t,n){return l(n,function(n){return t[n]})}function R(t,n){return t.has(n)}function W(t,n){for(var r=-1,e=t.length;++r<e&&-1<d(n,t[r],0););return r}function B(t,n){for(var r=t.length;r--&&-1<d(n,t[r],0););return r}function M(t){return"\\"+Ft[t]}function C(t){var n=false;if(null!=t&&typeof t.toString!="function")try{
n=!!(t+"")}catch(t){}return n}function L(t){var n=-1,r=Array(t.size);return t.forEach(function(t,e){r[++n]=[e,t]}),r}function D(t){var n=Object;return function(r){return t(n(r))}}function z(t,n){for(var r=-1,e=t.length,u=0,o=[];++r<e;){var i=t[r];i!==n&&"__lodash_placeholder__"!==i||(t[r]="__lodash_placeholder__",o[u++]=r)}return o}function U(t){var n=-1,r=Array(t.size);return t.forEach(function(t){r[++n]=t}),r}function $(t){var n=-1,r=Array(t.size);return t.forEach(function(t){r[++n]=[t,t]}),r}function F(t){
if(!t||!Ct.test(t))return t.length;for(var n=Bt.lastIndex=0;Bt.test(t);)n++;return n}function T(m){function Et(t){return Gu.call(t)}function St(t){if(ou(t)&&!Fi(t)&&!(t instanceof Ft)){if(t instanceof $t)return t;if(qu.call(t,"__wrapped__"))return Ee(t)}return new $t(t)}function It(){}function $t(t,n){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!n,this.__index__=0,this.__values__=N}function Ft(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=false,this.__iteratees__=[],
this.__takeCount__=4294967295,this.__views__=[]}function Pt(t){var n=-1,r=t?t.length:0;for(this.clear();++n<r;){var e=t[n];this.set(e[0],e[1])}}function Zt(t){var n=-1,r=t?t.length:0;for(this.clear();++n<r;){var e=t[n];this.set(e[0],e[1])}}function Vt(t){var n=-1,r=t?t.length:0;for(this.clear();++n<r;){var e=t[n];this.set(e[0],e[1])}}function Kt(t){var n=-1,r=t?t.length:0;for(this.__data__=new Vt;++n<r;)this.add(t[n])}function Jt(t){this.__data__=new Zt(t)}function fn(t,n){var r,e=Fi(t)||cu(t)||He(t)?k(t.length,String):[],u=e.length,o=!!u;
for(r in t)!n&&!qu.call(t,r)||o&&("length"==r||ge(r,u))||e.push(r);return e}function cn(t,n,r,e){return t===N||Ye(t,Fu[r])&&!qu.call(e,r)?n:t}function an(t,n,r){(r===N||Ye(t[n],r))&&(typeof n!="number"||r!==N||n in t)||(t[n]=r)}function ln(t,n,r){var e=t[n];qu.call(t,n)&&Ye(e,r)&&(r!==N||n in t)||(t[n]=r)}function sn(t,n){for(var r=t.length;r--;)if(Ye(t[r][0],n))return r;return-1}function hn(t,n,r,e){return No(t,function(t,u,o){n(e,t,r(t),o)}),e}function pn(t,n){return t&&Br(n,bu(n),t)}function _n(t,n){
for(var r=-1,e=null==t,u=n.length,o=Cu(u);++r<u;)o[r]=e?N:du(t,n[r]);return o}function vn(t,n,r){return t===t&&(r!==N&&(t=t<=r?t:r),n!==N&&(t=t>=n?t:n)),t}function gn(t,n,r,e,o,i,f){var c;if(e&&(c=i?e(t,o,i,f):e(t)),c!==N)return c;if(!uu(t))return t;if(o=Fi(t)){if(c=he(t),!n)return Wr(t,c)}else{var a=Et(t),l="[object Function]"==a||"[object GeneratorFunction]"==a;if(Ni(t))return kr(t,n);if("[object Object]"==a||"[object Arguments]"==a||l&&!i){if(C(t))return i?t:{};if(c=pe(l?{}:t),!n)return Mr(t,pn(c,t));
}else{if(!Ut[a])return i?t:{};c=_e(t,a,gn,n)}}if(f||(f=new Jt),i=f.get(t))return i;if(f.set(t,c),!o)var s=r?Rn(t,bu,Yo):bu(t);return u(s||t,function(u,o){s&&(o=u,u=t[o]),ln(c,o,gn(u,n,r,e,o,t,f))}),c}function dn(t){var n=bu(t);return function(r){return yn(r,t,n)}}function yn(t,n,r){var e=r.length;if(null==t)return!e;for(t=Object(t);e--;){var u=r[e],o=n[u],i=t[u];if(i===N&&!(u in t)||!o(i))return false}return true}function bn(t){return uu(t)?ro(t):{}}function xn(t,n,r){if(typeof t!="function")throw new Uu("Expected a function");
return ti(function(){t.apply(N,r)},n)}function jn(t,n,r,e){var u=-1,o=c,i=true,f=t.length,s=[],h=n.length;if(!f)return s;r&&(n=l(n,S(r))),e?(o=a,i=false):200<=n.length&&(o=R,i=false,n=new Kt(n));t:for(;++u<f;){var p=t[u],_=r?r(p):p,p=e||0!==p?p:0;if(i&&_===_){for(var v=h;v--;)if(n[v]===_)continue t;s.push(p)}else o(n,_,e)||s.push(p)}return s}function mn(t,n){var r=true;return No(t,function(t,e,u){return r=!!n(t,e,u)}),r}function wn(t,n,r){for(var e=-1,u=t.length;++e<u;){var o=t[e],i=n(o);if(null!=i&&(f===N?i===i&&!au(i):r(i,f)))var f=i,c=o;
}return c}function An(t,n){var r=[];return No(t,function(t,e,u){n(t,e,u)&&r.push(t)}),r}function On(t,n,r,e,u){var o=-1,i=t.length;for(r||(r=ve),u||(u=[]);++o<i;){var f=t[o];0<n&&r(f)?1<n?On(f,n-1,r,e,u):s(u,f):e||(u[u.length]=f)}return u}function kn(t,n){return t&&Zo(t,n,bu)}function En(t,n){return t&&qo(t,n,bu)}function Sn(t,n){return f(n,function(n){return nu(t[n])})}function In(t,n){n=ye(n,t)?[n]:Ar(n);for(var r=0,e=n.length;null!=t&&r<e;)t=t[Ae(n[r++])];return r&&r==e?t:N}function Rn(t,n,r){
return n=n(t),Fi(t)?n:s(n,r(t))}function Wn(t,n){return t>n}function Bn(t,n){return null!=t&&qu.call(t,n)}function Mn(t,n){return null!=t&&n in Object(t)}function Cn(t,n,r){for(var e=r?a:c,u=t[0].length,o=t.length,i=o,f=Cu(o),s=1/0,h=[];i--;){var p=t[i];i&&n&&(p=l(p,S(n))),s=yo(p.length,s),f[i]=!r&&(n||120<=u&&120<=p.length)?new Kt(i&&p):N}var p=t[0],_=-1,v=f[0];t:for(;++_<u&&h.length<s;){var g=p[_],d=n?n(g):g,g=r||0!==g?g:0;if(v?!R(v,d):!e(h,d,r)){for(i=o;--i;){var y=f[i];if(y?!R(y,d):!e(t[i],d,r))continue t;
}v&&v.push(d),h.push(g)}}return h}function Ln(t,n,r){var e={};return kn(t,function(t,u,o){n(e,r(t),u,o)}),e}function Dn(t,n,e){return ye(n,t)||(n=Ar(n),t=we(t,n),n=We(n)),n=null==t?t:t[Ae(n)],null==n?N:r(n,t,e)}function zn(t){return ou(t)&&"[object ArrayBuffer]"==Gu.call(t)}function Un(t){return ou(t)&&"[object Date]"==Gu.call(t)}function $n(t,n,r,e,u){if(t===n)n=true;else if(null==t||null==n||!uu(t)&&!ou(n))n=t!==t&&n!==n;else t:{var o=Fi(t),i=Fi(n),f="[object Array]",c="[object Array]";o||(f=Et(t),
f="[object Arguments]"==f?"[object Object]":f),i||(c=Et(n),c="[object Arguments]"==c?"[object Object]":c);var a="[object Object]"==f&&!C(t),i="[object Object]"==c&&!C(n);if((c=f==c)&&!a)u||(u=new Jt),n=o||Ki(t)?ee(t,n,$n,r,e,u):ue(t,n,f,$n,r,e,u);else{if(!(2&e)&&(o=a&&qu.call(t,"__wrapped__"),f=i&&qu.call(n,"__wrapped__"),o||f)){t=o?t.value():t,n=f?n.value():n,u||(u=new Jt),n=$n(t,n,r,e,u);break t}if(c)n:if(u||(u=new Jt),o=2&e,f=bu(t),i=f.length,c=bu(n).length,i==c||o){for(a=i;a--;){var l=f[a];if(!(o?l in n:qu.call(n,l))){
n=false;break n}}if((c=u.get(t))&&u.get(n))n=c==n;else{c=true,u.set(t,n),u.set(n,t);for(var s=o;++a<i;){var l=f[a],h=t[l],p=n[l];if(r)var _=o?r(p,h,l,n,t,u):r(h,p,l,t,n,u);if(_===N?h!==p&&!$n(h,p,r,e,u):!_){c=false;break}s||(s="constructor"==l)}c&&!s&&(r=t.constructor,e=n.constructor,r!=e&&"constructor"in t&&"constructor"in n&&!(typeof r=="function"&&r instanceof r&&typeof e=="function"&&e instanceof e)&&(c=false)),u.delete(t),u.delete(n),n=c}}else n=false;else n=false}}return n}function Fn(t){return ou(t)&&"[object Map]"==Et(t);
}function Tn(t,n,r,e){var u=r.length,o=u,i=!e;if(null==t)return!o;for(t=Object(t);u--;){var f=r[u];if(i&&f[2]?f[1]!==t[f[0]]:!(f[0]in t))return false}for(;++u<o;){var f=r[u],c=f[0],a=t[c],l=f[1];if(i&&f[2]){if(a===N&&!(c in t))return false}else{if(f=new Jt,e)var s=e(a,l,c,t,n,f);if(s===N?!$n(l,a,e,3,f):!s)return false}}return true}function Nn(t){return!(!uu(t)||Pu&&Pu in t)&&(nu(t)||C(t)?Yu:jt).test(Oe(t))}function Pn(t){return uu(t)&&"[object RegExp]"==Gu.call(t)}function Zn(t){return ou(t)&&"[object Set]"==Et(t);
}function qn(t){return ou(t)&&eu(t.length)&&!!zt[Gu.call(t)]}function Vn(t){return typeof t=="function"?t:null==t?Eu:typeof t=="object"?Fi(t)?Qn(t[0],t[1]):Hn(t):Wu(t)}function Kn(t){if(!xe(t))return vo(t);var n,r=[];for(n in Object(t))qu.call(t,n)&&"constructor"!=n&&r.push(n);return r}function Gn(t){if(!uu(t)){var n=[];if(null!=t)for(var r in Object(t))n.push(r);return n}r=xe(t);var e=[];for(n in t)("constructor"!=n||!r&&qu.call(t,n))&&e.push(n);return e}function Jn(t,n){return t<n}function Yn(t,n){
var r=-1,e=Qe(t)?Cu(t.length):[];return No(t,function(t,u,o){e[++r]=n(t,u,o)}),e}function Hn(t){var n=ae(t);return 1==n.length&&n[0][2]?je(n[0][0],n[0][1]):function(r){return r===t||Tn(r,t,n)}}function Qn(t,n){return ye(t)&&n===n&&!uu(n)?je(Ae(t),n):function(r){var e=du(r,t);return e===N&&e===n?yu(r,t):$n(n,e,N,3)}}function Xn(t,n,r,e,o){if(t!==n){if(!Fi(n)&&!Ki(n))var i=Gn(n);u(i||n,function(u,f){if(i&&(f=u,u=n[f]),uu(u)){o||(o=new Jt);var c=f,a=o,l=t[c],s=n[c],h=a.get(s);if(h)an(t,c,h);else{var h=e?e(l,s,c+"",t,n,a):N,p=h===N;
p&&(h=s,Fi(s)||Ki(s)?Fi(l)?h=l:Xe(l)?h=Wr(l):(p=false,h=gn(s,true)):fu(s)||He(s)?He(l)?h=vu(l):!uu(l)||r&&nu(l)?(p=false,h=gn(s,true)):h=l:p=false),p&&(a.set(s,h),Xn(h,s,r,e,a),a.delete(s)),an(t,c,h)}}else c=e?e(t[f],u,f+"",t,n,o):N,c===N&&(c=u),an(t,f,c)})}}function tr(t,n){var r=t.length;if(r)return n+=0>n?r:0,ge(n,r)?t[n]:N}function nr(t,n,r){var e=-1;return n=l(n.length?n:[Eu],S(fe())),t=Yn(t,function(t){return{a:l(n,function(n){return n(t)}),b:++e,c:t}}),A(t,function(t,n){var e;t:{e=-1;for(var u=t.a,o=n.a,i=u.length,f=r.length;++e<i;){
var c=Sr(u[e],o[e]);if(c){e=e>=f?c:c*("desc"==r[e]?-1:1);break t}}e=t.b-n.b}return e})}function rr(t,n){return t=Object(t),er(t,n,function(n,r){return r in t})}function er(t,n,r){for(var e=-1,u=n.length,o={};++e<u;){var i=n[e],f=t[i];r(f,i)&&(o[i]=f)}return o}function ur(t){return function(n){return In(n,t)}}function or(t,n,r,e){var u=e?y:d,o=-1,i=n.length,f=t;for(t===n&&(n=Wr(n)),r&&(f=l(t,S(r)));++o<i;)for(var c=0,a=n[o],a=r?r(a):a;-1<(c=u(f,a,c,e));)f!==t&&uo.call(f,c,1),uo.call(t,c,1);return t;
}function ir(t,n){for(var r=t?n.length:0,e=r-1;r--;){var u=n[r];if(r==e||u!==o){var o=u;if(ge(u))uo.call(t,u,1);else if(ye(u,t))delete t[Ae(u)];else{var u=Ar(u),i=we(t,u);null!=i&&delete i[Ae(We(u))]}}}}function fr(t,n){return t+lo(xo()*(n-t+1))}function cr(t,n){var r="";if(!t||1>n||9007199254740991<n)return r;do n%2&&(r+=t),(n=lo(n/2))&&(t+=t);while(n);return r}function ar(t,n){return n=go(n===N?t.length-1:n,0),function(){for(var e=arguments,u=-1,o=go(e.length-n,0),i=Cu(o);++u<o;)i[u]=e[n+u];for(u=-1,
o=Cu(n+1);++u<n;)o[u]=e[u];return o[n]=i,r(t,this,o)}}function lr(t,n,r,e){if(!uu(t))return t;n=ye(n,t)?[n]:Ar(n);for(var u=-1,o=n.length,i=o-1,f=t;null!=f&&++u<o;){var c=Ae(n[u]),a=r;if(u!=i){var l=f[c],a=e?e(l,c,f):N;a===N&&(a=uu(l)?l:ge(n[u+1])?[]:{})}ln(f,c,a),f=f[c]}return t}function sr(t,n,r){var e=-1,u=t.length;for(0>n&&(n=-n>u?0:u+n),r=r>u?u:r,0>r&&(r+=u),u=n>r?0:r-n>>>0,n>>>=0,r=Cu(u);++e<u;)r[e]=t[e+n];return r}function hr(t,n){var r;return No(t,function(t,e,u){return r=n(t,e,u),!r}),!!r;
}function pr(t,n,r){var e=0,u=t?t.length:e;if(typeof n=="number"&&n===n&&2147483647>=u){for(;e<u;){var o=e+u>>>1,i=t[o];null!==i&&!au(i)&&(r?i<=n:i<n)?e=o+1:u=o}return u}return _r(t,n,Eu,r)}function _r(t,n,r,e){n=r(n);for(var u=0,o=t?t.length:0,i=n!==n,f=null===n,c=au(n),a=n===N;u<o;){var l=lo((u+o)/2),s=r(t[l]),h=s!==N,p=null===s,_=s===s,v=au(s);(i?e||_:a?_&&(e||h):f?_&&h&&(e||!p):c?_&&h&&!p&&(e||!v):p||v?0:e?s<=n:s<n)?u=l+1:o=l}return yo(o,4294967294)}function vr(t,n){for(var r=-1,e=t.length,u=0,o=[];++r<e;){
var i=t[r],f=n?n(i):i;if(!r||!Ye(f,c)){var c=f;o[u++]=0===i?0:i}}return o}function gr(t){return typeof t=="number"?t:au(t)?Z:+t}function dr(t){if(typeof t=="string")return t;if(au(t))return To?To.call(t):"";var n=t+"";return"0"==n&&1/t==-P?"-0":n}function yr(t,n,r){var e=-1,u=c,o=t.length,i=true,f=[],l=f;if(r)i=false,u=a;else if(200<=o){if(u=n?null:Go(t))return U(u);i=false,u=R,l=new Kt}else l=n?[]:f;t:for(;++e<o;){var s=t[e],h=n?n(s):s,s=r||0!==s?s:0;if(i&&h===h){for(var p=l.length;p--;)if(l[p]===h)continue t;
n&&l.push(h),f.push(s)}else u(l,h,r)||(l!==f&&l.push(h),f.push(s))}return f}function br(t,n,r,e){for(var u=t.length,o=e?u:-1;(e?o--:++o<u)&&n(t[o],o,t););return r?sr(t,e?0:o,e?o+1:u):sr(t,e?o+1:0,e?u:o)}function xr(t,n){var r=t;return r instanceof Ft&&(r=r.value()),h(n,function(t,n){return n.func.apply(n.thisArg,s([t],n.args))},r)}function jr(t,n,r){for(var e=-1,u=t.length;++e<u;)var o=o?s(jn(o,t[e],n,r),jn(t[e],o,n,r)):t[e];return o&&o.length?yr(o,n,r):[]}function mr(t,n,r){for(var e=-1,u=t.length,o=n.length,i={};++e<u;)r(i,t[e],e<o?n[e]:N);
return i}function wr(t){return Xe(t)?t:[]}function Ar(t){return Fi(t)?t:ri(t)}function Or(t,n,r){var e=t.length;return r=r===N?e:r,!n&&r>=e?t:sr(t,n,r)}function kr(t,n){if(n)return t.slice();var r=new t.constructor(t.length);return t.copy(r),r}function Er(t){var n=new t.constructor(t.byteLength);return new Xu(n).set(new Xu(t)),n}function Sr(t,n){if(t!==n){var r=t!==N,e=null===t,u=t===t,o=au(t),i=n!==N,f=null===n,c=n===n,a=au(n);if(!f&&!a&&!o&&t>n||o&&i&&c&&!f&&!a||e&&i&&c||!r&&c||!u)return 1;if(!e&&!o&&!a&&t<n||a&&r&&u&&!e&&!o||f&&r&&u||!i&&u||!c)return-1;
}return 0}function Ir(t,n,r,e){var u=-1,o=t.length,i=r.length,f=-1,c=n.length,a=go(o-i,0),l=Cu(c+a);for(e=!e;++f<c;)l[f]=n[f];for(;++u<i;)(e||u<o)&&(l[r[u]]=t[u]);for(;a--;)l[f++]=t[u++];return l}function Rr(t,n,r,e){var u=-1,o=t.length,i=-1,f=r.length,c=-1,a=n.length,l=go(o-f,0),s=Cu(l+a);for(e=!e;++u<l;)s[u]=t[u];for(l=u;++c<a;)s[l+c]=n[c];for(;++i<f;)(e||u<o)&&(s[l+r[i]]=t[u++]);return s}function Wr(t,n){var r=-1,e=t.length;for(n||(n=Cu(e));++r<e;)n[r]=t[r];return n}function Br(t,n,r,e){r||(r={});
for(var u=-1,o=n.length;++u<o;){var i=n[u],f=e?e(r[i],t[i],i,r,t):N;ln(r,i,f===N?t[i]:f)}return r}function Mr(t,n){return Br(t,Yo(t),n)}function Cr(t,n){return function(r,u){var o=Fi(r)?e:hn,i=n?n():{};return o(r,t,fe(u,2),i)}}function Lr(t){return ar(function(n,r){var e=-1,u=r.length,o=1<u?r[u-1]:N,i=2<u?r[2]:N,o=3<t.length&&typeof o=="function"?(u--,o):N;for(i&&de(r[0],r[1],i)&&(o=3>u?N:o,u=1),n=Object(n);++e<u;)(i=r[e])&&t(n,i,e,o);return n})}function Dr(t,n){return function(r,e){if(null==r)return r;
if(!Qe(r))return t(r,e);for(var u=r.length,o=n?u:-1,i=Object(r);(n?o--:++o<u)&&false!==e(i[o],o,i););return r}}function zr(t){return function(n,r,e){var u=-1,o=Object(n);e=e(n);for(var i=e.length;i--;){var f=e[t?i:++u];if(false===r(o[f],f,o))break}return n}}function Ur(t,n,r){function e(){return(this&&this!==qt&&this instanceof e?o:t).apply(u?r:this,arguments)}var u=1&n,o=Tr(t);return e}function $r(t){return function(n){n=gu(n);var r=Ct.test(n)?n.match(Bt):N,e=r?r[0]:n.charAt(0);return n=r?Or(r,1).join(""):n.slice(1),
e[t]()+n}}function Fr(t){return function(n){return h(Ou(Au(n).replace(Rt,"")),t,"")}}function Tr(t){return function(){var n=arguments;switch(n.length){case 0:return new t;case 1:return new t(n[0]);case 2:return new t(n[0],n[1]);case 3:return new t(n[0],n[1],n[2]);case 4:return new t(n[0],n[1],n[2],n[3]);case 5:return new t(n[0],n[1],n[2],n[3],n[4]);case 6:return new t(n[0],n[1],n[2],n[3],n[4],n[5]);case 7:return new t(n[0],n[1],n[2],n[3],n[4],n[5],n[6])}var r=bn(t.prototype),n=t.apply(r,n);return uu(n)?n:r;
}}function Nr(t,n,e){function u(){for(var i=arguments.length,f=Cu(i),c=i,a=ie(u);c--;)f[c]=arguments[c];return c=3>i&&f[0]!==a&&f[i-1]!==a?[]:z(f,a),i-=c.length,i<e?Xr(t,n,qr,u.placeholder,N,f,c,N,N,e-i):r(this&&this!==qt&&this instanceof u?o:t,this,f)}var o=Tr(t);return u}function Pr(t){return function(n,r,e){var u=Object(n);if(!Qe(n)){var o=fe(r,3);n=bu(n),r=function(t){return o(u[t],t,u)}}return r=t(n,r,e),-1<r?u[o?n[r]:r]:N}}function Zr(t){return ar(function(n){n=On(n,1);var r=n.length,e=r,u=$t.prototype.thru;
for(t&&n.reverse();e--;){var o=n[e];if(typeof o!="function")throw new Uu("Expected a function");if(u&&!i&&"wrapper"==oe(o))var i=new $t([],(true))}for(e=i?e:r;++e<r;)var o=n[e],u=oe(o),f="wrapper"==u?Jo(o):N,i=f&&be(f[0])&&424==f[1]&&!f[4].length&&1==f[9]?i[oe(f[0])].apply(i,f[3]):1==o.length&&be(o)?i[u]():i.thru(o);return function(){var t=arguments,e=t[0];if(i&&1==t.length&&Fi(e)&&200<=e.length)return i.plant(e).value();for(var u=0,t=r?n[u].apply(this,t):e;++u<r;)t=n[u].call(this,t);return t}})}function qr(t,n,r,e,u,o,i,f,c,a){
function l(){for(var d=arguments.length,y=Cu(d),b=d;b--;)y[b]=arguments[b];if(_){var x,j=ie(l),b=y.length;for(x=0;b--;)y[b]===j&&x++}if(e&&(y=Ir(y,e,u,_)),o&&(y=Rr(y,o,i,_)),d-=x,_&&d<a)return j=z(y,j),Xr(t,n,qr,l.placeholder,r,y,j,f,c,a-d);if(j=h?r:this,b=p?j[t]:t,d=y.length,f){x=y.length;for(var m=yo(f.length,x),w=Wr(y);m--;){var A=f[m];y[m]=ge(A,x)?w[A]:N}}else v&&1<d&&y.reverse();return s&&c<d&&(y.length=c),this&&this!==qt&&this instanceof l&&(b=g||Tr(b)),b.apply(j,y)}var s=128&n,h=1&n,p=2&n,_=24&n,v=512&n,g=p?N:Tr(t);
return l}function Vr(t,n){return function(r,e){return Ln(r,t,n(e))}}function Kr(t,n){return function(r,e){var u;if(r===N&&e===N)return n;if(r!==N&&(u=r),e!==N){if(u===N)return e;typeof r=="string"||typeof e=="string"?(r=dr(r),e=dr(e)):(r=gr(r),e=gr(e)),u=t(r,e)}return u}}function Gr(t){return ar(function(n){return n=1==n.length&&Fi(n[0])?l(n[0],S(fe())):l(On(n,1),S(fe())),ar(function(e){var u=this;return t(n,function(t){return r(t,u,e)})})})}function Jr(t,n){n=n===N?" ":dr(n);var r=n.length;return 2>r?r?cr(n,t):n:(r=cr(n,ao(t/F(n))),
Ct.test(n)?Or(r.match(Bt),0,t).join(""):r.slice(0,t))}function Yr(t,n,e,u){function o(){for(var n=-1,c=arguments.length,a=-1,l=u.length,s=Cu(l+c),h=this&&this!==qt&&this instanceof o?f:t;++a<l;)s[a]=u[a];for(;c--;)s[a++]=arguments[++n];return r(h,i?e:this,s)}var i=1&n,f=Tr(t);return o}function Hr(t){return function(n,r,e){e&&typeof e!="number"&&de(n,r,e)&&(r=e=N),n=su(n),r===N?(r=n,n=0):r=su(r),e=e===N?n<r?1:-1:su(e);var u=-1;r=go(ao((r-n)/(e||1)),0);for(var o=Cu(r);r--;)o[t?r:++u]=n,n+=e;return o;
}}function Qr(t){return function(n,r){return typeof n=="string"&&typeof r=="string"||(n=_u(n),r=_u(r)),t(n,r)}}function Xr(t,n,r,e,u,o,i,f,c,a){var l=8&n,s=l?i:N;i=l?N:i;var h=l?o:N;return o=l?N:o,n=(n|(l?32:64))&~(l?64:32),4&n||(n&=-4),u=[t,n,u,h,s,o,i,f,c,a],r=r.apply(N,u),be(t)&&Xo(r,u),r.placeholder=e,ni(r,t,n)}function te(t){var n=Du[t];return function(t,r){if(t=_u(t),r=yo(hu(r),292)){var e=(gu(t)+"e").split("e"),e=n(e[0]+"e"+(+e[1]+r)),e=(gu(e)+"e").split("e");return+(e[0]+"e"+(+e[1]-r))}return n(t);
}}function ne(t){return function(n){var r=Et(n);return"[object Map]"==r?L(n):"[object Set]"==r?$(n):E(n,t(n))}}function re(t,n,r,e,u,o,i,f){var c=2&n;if(!c&&typeof t!="function")throw new Uu("Expected a function");var a=e?e.length:0;if(a||(n&=-97,e=u=N),i=i===N?i:go(hu(i),0),f=f===N?f:hu(f),a-=u?u.length:0,64&n){var l=e,s=u;e=u=N}var h=c?N:Jo(t);return o=[t,n,r,e,u,l,s,o,i,f],h&&(r=o[1],t=h[1],n=r|t,e=128==t&&8==r||128==t&&256==r&&o[7].length<=h[8]||384==t&&h[7].length<=h[8]&&8==r,131>n||e)&&(1&t&&(o[2]=h[2],
n|=1&r?0:4),(r=h[3])&&(e=o[3],o[3]=e?Ir(e,r,h[4]):r,o[4]=e?z(o[3],"__lodash_placeholder__"):h[4]),(r=h[5])&&(e=o[5],o[5]=e?Rr(e,r,h[6]):r,o[6]=e?z(o[5],"__lodash_placeholder__"):h[6]),(r=h[7])&&(o[7]=r),128&t&&(o[8]=null==o[8]?h[8]:yo(o[8],h[8])),null==o[9]&&(o[9]=h[9]),o[0]=h[0],o[1]=n),t=o[0],n=o[1],r=o[2],e=o[3],u=o[4],f=o[9]=null==o[9]?c?0:t.length:go(o[9]-a,0),!f&&24&n&&(n&=-25),ni((h?Vo:Xo)(n&&1!=n?8==n||16==n?Nr(t,n,f):32!=n&&33!=n||u.length?qr.apply(N,o):Yr(t,n,r,e):Ur(t,n,r),o),t,n)}function ee(t,n,r,e,u,o){
var i=2&u,f=t.length,c=n.length;if(f!=c&&!(i&&c>f))return false;if((c=o.get(t))&&o.get(n))return c==n;var c=-1,a=true,l=1&u?new Kt:N;for(o.set(t,n),o.set(n,t);++c<f;){var s=t[c],h=n[c];if(e)var p=i?e(h,s,c,n,t,o):e(s,h,c,t,n,o);if(p!==N){if(p)continue;a=false;break}if(l){if(!_(n,function(t,n){if(!l.has(n)&&(s===t||r(s,t,e,u,o)))return l.add(n)})){a=false;break}}else if(s!==h&&!r(s,h,e,u,o)){a=false;break}}return o.delete(t),o.delete(n),a}function ue(t,n,r,e,u,o,i){switch(r){case"[object DataView]":if(t.byteLength!=n.byteLength||t.byteOffset!=n.byteOffset)break;
t=t.buffer,n=n.buffer;case"[object ArrayBuffer]":if(t.byteLength!=n.byteLength||!e(new Xu(t),new Xu(n)))break;return true;case"[object Boolean]":case"[object Date]":case"[object Number]":return Ye(+t,+n);case"[object Error]":return t.name==n.name&&t.message==n.message;case"[object RegExp]":case"[object String]":return t==n+"";case"[object Map]":var f=L;case"[object Set]":if(f||(f=U),t.size!=n.size&&!(2&o))break;return(r=i.get(t))?r==n:(o|=1,i.set(t,n),n=ee(f(t),f(n),e,u,o,i),i.delete(t),n);case"[object Symbol]":
if(Fo)return Fo.call(t)==Fo.call(n)}return false}function oe(t){for(var n=t.name+"",r=Mo[n],e=qu.call(Mo,n)?r.length:0;e--;){var u=r[e],o=u.func;if(null==o||o==t)return u.name}return n}function ie(t){return(qu.call(St,"placeholder")?St:t).placeholder}function fe(){var t=St.iteratee||Su,t=t===Su?Vn:t;return arguments.length?t(arguments[0],arguments[1]):t}function ce(t,n){var r=t.__data__,e=typeof n;return("string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==n:null===n)?r[typeof n=="string"?"string":"hash"]:r.map;
}function ae(t){for(var n=bu(t),r=n.length;r--;){var e=n[r],u=t[e];n[r]=[e,u,u===u&&!uu(u)]}return n}function le(t,n){var r=null==t?N:t[n];return Nn(r)?r:N}function se(t,n,r){n=ye(n,t)?[n]:Ar(n);for(var e,u=-1,o=n.length;++u<o;){var i=Ae(n[u]);if(!(e=null!=t&&r(t,i)))break;t=t[i]}return e?e:(o=t?t.length:0,!!o&&eu(o)&&ge(i,o)&&(Fi(t)||cu(t)||He(t)))}function he(t){var n=t.length,r=t.constructor(n);return n&&"string"==typeof t[0]&&qu.call(t,"index")&&(r.index=t.index,r.input=t.input),r}function pe(t){
return typeof t.constructor!="function"||xe(t)?{}:bn(to(t))}function _e(r,e,u,o){var i=r.constructor;switch(e){case"[object ArrayBuffer]":return Er(r);case"[object Boolean]":case"[object Date]":return new i((+r));case"[object DataView]":return e=o?Er(r.buffer):r.buffer,new r.constructor(e,r.byteOffset,r.byteLength);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":
case"[object Uint16Array]":case"[object Uint32Array]":return e=o?Er(r.buffer):r.buffer,new r.constructor(e,r.byteOffset,r.length);case"[object Map]":return e=o?u(L(r),true):L(r),h(e,t,new r.constructor);case"[object Number]":case"[object String]":return new i(r);case"[object RegExp]":return e=new r.constructor(r.source,dt.exec(r)),e.lastIndex=r.lastIndex,e;case"[object Set]":return e=o?u(U(r),true):U(r),h(e,n,new r.constructor);case"[object Symbol]":return Fo?Object(Fo.call(r)):{}}}function ve(t){return Fi(t)||He(t)||!!(oo&&t&&t[oo]);
}function ge(t,n){return n=null==n?9007199254740991:n,!!n&&(typeof t=="number"||wt.test(t))&&-1<t&&0==t%1&&t<n}function de(t,n,r){if(!uu(r))return false;var e=typeof n;return!!("number"==e?Qe(r)&&ge(n,r.length):"string"==e&&n in r)&&Ye(r[n],t)}function ye(t,n){if(Fi(t))return false;var r=typeof t;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=t&&!au(t))||(et.test(t)||!rt.test(t)||null!=n&&t in Object(n))}function be(t){var n=oe(t),r=St[n];return typeof r=="function"&&n in Ft.prototype&&(t===r||(n=Jo(r),
!!n&&t===n[0]))}function xe(t){var n=t&&t.constructor;return t===(typeof n=="function"&&n.prototype||Fu)}function je(t,n){return function(r){return null!=r&&(r[t]===n&&(n!==N||t in Object(r)))}}function me(t,n,r,e,u,o){return uu(t)&&uu(n)&&(o.set(n,t),Xn(t,n,N,me,o),o.delete(n)),t}function we(t,n){return 1==n.length?t:In(t,sr(n,0,-1))}function Ae(t){if(typeof t=="string"||au(t))return t;var n=t+"";return"0"==n&&1/t==-P?"-0":n}function Oe(t){if(null!=t){try{return Zu.call(t)}catch(t){}return t+""}
return""}function ke(t,n){return u(q,function(r){var e="_."+r[0];n&r[1]&&!c(t,e)&&t.push(e)}),t.sort()}function Ee(t){if(t instanceof Ft)return t.clone();var n=new $t(t.__wrapped__,t.__chain__);return n.__actions__=Wr(t.__actions__),n.__index__=t.__index__,n.__values__=t.__values__,n}function Se(t,n,r){var e=t?t.length:0;return e?(r=null==r?0:hu(r),0>r&&(r=go(e+r,0)),g(t,fe(n,3),r)):-1}function Ie(t,n,r){var e=t?t.length:0;if(!e)return-1;var u=e-1;return r!==N&&(u=hu(r),u=0>r?go(e+u,0):yo(u,e-1)),
g(t,fe(n,3),u,true)}function Re(t){return t&&t.length?t[0]:N}function We(t){var n=t?t.length:0;return n?t[n-1]:N}function Be(t,n){return t&&t.length&&n&&n.length?or(t,n):t}function Me(t){return t?mo.call(t):t}function Ce(t){if(!t||!t.length)return[];var n=0;return t=f(t,function(t){if(Xe(t))return n=go(t.length,n),true}),k(n,function(n){return l(t,j(n))})}function Le(t,n){if(!t||!t.length)return[];var e=Ce(t);return null==n?e:l(e,function(t){return r(n,N,t)})}function De(t){return t=St(t),t.__chain__=true,
t}function ze(t,n){return n(t)}function Ue(){return this}function $e(t,n){return(Fi(t)?u:No)(t,fe(n,3))}function Fe(t,n){return(Fi(t)?o:Po)(t,fe(n,3))}function Te(t,n){return(Fi(t)?l:Yn)(t,fe(n,3))}function Ne(t,n,r){var e=-1,u=lu(t),o=u.length,i=o-1;for(n=(r?de(t,n,r):n===N)?1:vn(hu(n),0,o);++e<n;)t=fr(e,i),r=u[t],u[t]=u[e],u[e]=r;return u.length=n,u}function Pe(t,n,r){return n=r?N:n,n=t&&null==n?t.length:n,re(t,128,N,N,N,N,n)}function Ze(t,n){var r;if(typeof n!="function")throw new Uu("Expected a function");
return t=hu(t),function(){return 0<--t&&(r=n.apply(this,arguments)),1>=t&&(n=N),r}}function qe(t,n,r){return n=r?N:n,t=re(t,8,N,N,N,N,N,n),t.placeholder=qe.placeholder,t}function Ve(t,n,r){return n=r?N:n,t=re(t,16,N,N,N,N,N,n),t.placeholder=Ve.placeholder,t}function Ke(t,n,r){function e(n){var r=c,e=a;return c=a=N,_=n,s=t.apply(e,r)}function u(t){var r=t-p;return t-=_,p===N||r>=n||0>r||g&&t>=l}function o(){var t=Ii();if(u(t))return i(t);var r,e=ti;r=t-_,t=n-(t-p),r=g?yo(t,l-r):t,h=e(o,r)}function i(t){
return h=N,d&&c?e(t):(c=a=N,s)}function f(){var t=Ii(),r=u(t);if(c=arguments,a=this,p=t,r){if(h===N)return _=t=p,h=ti(o,n),v?e(t):s;if(g)return h=ti(o,n),e(p)}return h===N&&(h=ti(o,n)),s}var c,a,l,s,h,p,_=0,v=false,g=false,d=true;if(typeof t!="function")throw new Uu("Expected a function");return n=_u(n)||0,uu(r)&&(v=!!r.leading,l=(g="maxWait"in r)?go(_u(r.maxWait)||0,n):l,d="trailing"in r?!!r.trailing:d),f.cancel=function(){h!==N&&Ko(h),_=0,c=p=a=h=N},f.flush=function(){return h===N?s:i(Ii())},f}function Ge(t,n){
function r(){var e=arguments,u=n?n.apply(this,e):e[0],o=r.cache;return o.has(u)?o.get(u):(e=t.apply(this,e),r.cache=o.set(u,e),e)}if(typeof t!="function"||n&&typeof n!="function")throw new Uu("Expected a function");return r.cache=new(Ge.Cache||Vt),r}function Je(t){if(typeof t!="function")throw new Uu("Expected a function");return function(){var n=arguments;switch(n.length){case 0:return!t.call(this);case 1:return!t.call(this,n[0]);case 2:return!t.call(this,n[0],n[1]);case 3:return!t.call(this,n[0],n[1],n[2]);
}return!t.apply(this,n)}}function Ye(t,n){return t===n||t!==t&&n!==n}function He(t){return Xe(t)&&qu.call(t,"callee")&&(!eo.call(t,"callee")||"[object Arguments]"==Gu.call(t))}function Qe(t){return null!=t&&eu(t.length)&&!nu(t)}function Xe(t){return ou(t)&&Qe(t)}function tu(t){return!!ou(t)&&("[object Error]"==Gu.call(t)||typeof t.message=="string"&&typeof t.name=="string")}function nu(t){return t=uu(t)?Gu.call(t):"","[object Function]"==t||"[object GeneratorFunction]"==t}function ru(t){return typeof t=="number"&&t==hu(t);
}function eu(t){return typeof t=="number"&&-1<t&&0==t%1&&9007199254740991>=t}function uu(t){var n=typeof t;return!!t&&("object"==n||"function"==n)}function ou(t){return!!t&&typeof t=="object"}function iu(t){return typeof t=="number"||ou(t)&&"[object Number]"==Gu.call(t)}function fu(t){return!(!ou(t)||"[object Object]"!=Gu.call(t)||C(t))&&(t=to(t),null===t||(t=qu.call(t,"constructor")&&t.constructor,typeof t=="function"&&t instanceof t&&Zu.call(t)==Ku))}function cu(t){return typeof t=="string"||!Fi(t)&&ou(t)&&"[object String]"==Gu.call(t);
}function au(t){return typeof t=="symbol"||ou(t)&&"[object Symbol]"==Gu.call(t)}function lu(t){if(!t)return[];if(Qe(t))return cu(t)?t.match(Bt):Wr(t);if(no&&t[no]){t=t[no]();for(var n,r=[];!(n=t.next()).done;)r.push(n.value);return r}return n=Et(t),("[object Map]"==n?L:"[object Set]"==n?U:mu)(t)}function su(t){return t?(t=_u(t),t===P||t===-P?1.7976931348623157e308*(0>t?-1:1):t===t?t:0):0===t?t:0}function hu(t){t=su(t);var n=t%1;return t===t?n?t-n:t:0}function pu(t){return t?vn(hu(t),0,4294967295):0;
}function _u(t){if(typeof t=="number")return t;if(au(t))return Z;if(uu(t)&&(t=nu(t.valueOf)?t.valueOf():t,t=uu(t)?t+"":t),typeof t!="string")return 0===t?t:+t;t=t.replace(ct,"");var n=xt.test(t);return n||mt.test(t)?Nt(t.slice(2),n?2:8):bt.test(t)?Z:+t}function vu(t){return Br(t,xu(t))}function gu(t){return null==t?"":dr(t)}function du(t,n,r){return t=null==t?N:In(t,n),t===N?r:t}function yu(t,n){return null!=t&&se(t,n,Mn)}function bu(t){return Qe(t)?fn(t):Kn(t)}function xu(t){return Qe(t)?fn(t,true):Gn(t);
}function ju(t,n){return null==t?{}:er(t,Rn(t,xu,Ho),fe(n))}function mu(t){return t?I(t,bu(t)):[]}function wu(t){return xf(gu(t).toLowerCase())}function Au(t){return(t=gu(t))&&t.replace(At,rn).replace(Wt,"")}function Ou(t,n,r){return t=gu(t),n=r?N:n,n===N&&(n=Lt.test(t)?Mt:_t),t.match(n)||[]}function ku(t){return function(){return t}}function Eu(t){return t}function Su(t){return Vn(typeof t=="function"?t:gn(t,true))}function Iu(t,n,r){var e=bu(n),o=Sn(n,e);null!=r||uu(n)&&(o.length||!e.length)||(r=n,
n=t,t=this,o=Sn(n,bu(n)));var i=!(uu(r)&&"chain"in r&&!r.chain),f=nu(t);return u(o,function(r){var e=n[r];t[r]=e,f&&(t.prototype[r]=function(){var n=this.__chain__;if(i||n){var r=t(this.__wrapped__);return(r.__actions__=Wr(this.__actions__)).push({func:e,args:arguments,thisArg:t}),r.__chain__=n,r}return e.apply(t,s([this.value()],arguments))})}),t}function Ru(){}function Wu(t){return ye(t)?j(Ae(t)):ur(t)}function Bu(){return[]}function Mu(){return false}m=m?on.defaults({},m,on.pick(qt,Dt)):qt;var Cu=m.Array,Lu=m.Error,Du=m.Math,zu=m.RegExp,Uu=m.TypeError,$u=m.Array.prototype,Fu=m.Object.prototype,Tu=m.String.prototype,Nu=m["__core-js_shared__"],Pu=function(){
var t=/[^.]+$/.exec(Nu&&Nu.keys&&Nu.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),Zu=m.Function.prototype.toString,qu=Fu.hasOwnProperty,Vu=0,Ku=Zu.call(Object),Gu=Fu.toString,Ju=qt._,Yu=zu("^"+Zu.call(qu).replace(it,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Hu=Gt?m.Buffer:N,Qu=m.Symbol,Xu=m.Uint8Array,to=D(Object.getPrototypeOf),no=Qu?Qu.iterator:N,ro=m.Object.create,eo=Fu.propertyIsEnumerable,uo=$u.splice,oo=Qu?Qu.isConcatSpreadable:N,io=m.clearTimeout!==qt.clearTimeout&&m.clearTimeout,fo=m.Date&&m.Date.now!==qt.Date.now&&m.Date.now,co=m.setTimeout!==qt.setTimeout&&m.setTimeout,ao=Du.ceil,lo=Du.floor,so=Object.getOwnPropertySymbols,ho=Hu?Hu.isBuffer:N,po=m.isFinite,_o=$u.join,vo=D(Object.keys),go=Du.max,yo=Du.min,bo=m.parseInt,xo=Du.random,jo=Tu.replace,mo=$u.reverse,wo=Tu.split,Ao=le(m,"DataView"),Oo=le(m,"Map"),ko=le(m,"Promise"),Eo=le(m,"Set"),So=le(m,"WeakMap"),Io=le(m.Object,"create"),Ro=function(){
var t=le(m.Object,"defineProperty"),n=le.name;return n&&2<n.length?t:N}(),Wo=So&&new So,Bo=!eo.call({valueOf:1},"valueOf"),Mo={},Co=Oe(Ao),Lo=Oe(Oo),Do=Oe(ko),zo=Oe(Eo),Uo=Oe(So),$o=Qu?Qu.prototype:N,Fo=$o?$o.valueOf:N,To=$o?$o.toString:N;St.templateSettings={escape:X,evaluate:tt,interpolate:nt,variable:"",imports:{_:St}},St.prototype=It.prototype,St.prototype.constructor=St,$t.prototype=bn(It.prototype),$t.prototype.constructor=$t,Ft.prototype=bn(It.prototype),Ft.prototype.constructor=Ft,Pt.prototype.clear=function(){
this.__data__=Io?Io(null):{}},Pt.prototype.delete=function(t){return this.has(t)&&delete this.__data__[t]},Pt.prototype.get=function(t){var n=this.__data__;return Io?(t=n[t],"__lodash_hash_undefined__"===t?N:t):qu.call(n,t)?n[t]:N},Pt.prototype.has=function(t){var n=this.__data__;return Io?n[t]!==N:qu.call(n,t)},Pt.prototype.set=function(t,n){return this.__data__[t]=Io&&n===N?"__lodash_hash_undefined__":n,this},Zt.prototype.clear=function(){this.__data__=[]},Zt.prototype.delete=function(t){var n=this.__data__;
return t=sn(n,t),!(0>t)&&(t==n.length-1?n.pop():uo.call(n,t,1),true)},Zt.prototype.get=function(t){var n=this.__data__;return t=sn(n,t),0>t?N:n[t][1]},Zt.prototype.has=function(t){return-1<sn(this.__data__,t)},Zt.prototype.set=function(t,n){var r=this.__data__,e=sn(r,t);return 0>e?r.push([t,n]):r[e][1]=n,this},Vt.prototype.clear=function(){this.__data__={hash:new Pt,map:new(Oo||Zt),string:new Pt}},Vt.prototype.delete=function(t){return ce(this,t).delete(t)},Vt.prototype.get=function(t){return ce(this,t).get(t);
},Vt.prototype.has=function(t){return ce(this,t).has(t)},Vt.prototype.set=function(t,n){return ce(this,t).set(t,n),this},Kt.prototype.add=Kt.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},Kt.prototype.has=function(t){return this.__data__.has(t)},Jt.prototype.clear=function(){this.__data__=new Zt},Jt.prototype.delete=function(t){return this.__data__.delete(t)},Jt.prototype.get=function(t){return this.__data__.get(t)},Jt.prototype.has=function(t){return this.__data__.has(t);
},Jt.prototype.set=function(t,n){var r=this.__data__;if(r instanceof Zt){if(r=r.__data__,!Oo||199>r.length)return r.push([t,n]),this;r=this.__data__=new Vt(r)}return r.set(t,n),this};var No=Dr(kn),Po=Dr(En,true),Zo=zr(),qo=zr(true),Vo=Wo?function(t,n){return Wo.set(t,n),t}:Eu,Ko=io||function(t){return qt.clearTimeout(t)},Go=Eo&&1/U(new Eo([,-0]))[1]==P?function(t){return new Eo(t)}:Ru,Jo=Wo?function(t){return Wo.get(t)}:Ru,Yo=so?D(so):Bu,Ho=so?function(t){for(var n=[];t;)s(n,Yo(t)),t=to(t);return n}:Bu;
(Ao&&"[object DataView]"!=Et(new Ao(new ArrayBuffer(1)))||Oo&&"[object Map]"!=Et(new Oo)||ko&&"[object Promise]"!=Et(ko.resolve())||Eo&&"[object Set]"!=Et(new Eo)||So&&"[object WeakMap]"!=Et(new So))&&(Et=function(t){var n=Gu.call(t);if(t=(t="[object Object]"==n?t.constructor:N)?Oe(t):N)switch(t){case Co:return"[object DataView]";case Lo:return"[object Map]";case Do:return"[object Promise]";case zo:return"[object Set]";case Uo:return"[object WeakMap]"}return n});var Qo=Nu?nu:Mu,Xo=function(){var t=0,n=0;
return function(r,e){var u=Ii(),o=16-(u-n);if(n=u,0<o){if(150<=++t)return r}else t=0;return Vo(r,e)}}(),ti=co||function(t,n){return qt.setTimeout(t,n)},ni=Ro?function(t,n,r){n+="";var e;e=(e=n.match(ht))?e[1].split(pt):[],r=ke(e,r),e=r.length;var u=e-1;return r[u]=(1<e?"& ":"")+r[u],r=r.join(2<e?", ":" "),n=n.replace(st,"{\n/* [wrapped with "+r+"] */\n"),Ro(t,"toString",{configurable:true,enumerable:false,value:ku(n)})}:Eu,ri=Ge(function(t){t=gu(t);var n=[];return ut.test(t)&&n.push(""),t.replace(ot,function(t,r,e,u){
n.push(e?u.replace(vt,"$1"):r||t)}),n}),ei=ar(function(t,n){return Xe(t)?jn(t,On(n,1,Xe,true)):[]}),ui=ar(function(t,n){var r=We(n);return Xe(r)&&(r=N),Xe(t)?jn(t,On(n,1,Xe,true),fe(r,2)):[]}),oi=ar(function(t,n){var r=We(n);return Xe(r)&&(r=N),Xe(t)?jn(t,On(n,1,Xe,true),N,r):[]}),ii=ar(function(t){var n=l(t,wr);return n.length&&n[0]===t[0]?Cn(n):[]}),fi=ar(function(t){var n=We(t),r=l(t,wr);return n===We(r)?n=N:r.pop(),r.length&&r[0]===t[0]?Cn(r,fe(n,2)):[]}),ci=ar(function(t){var n=We(t),r=l(t,wr);return n===We(r)?n=N:r.pop(),
r.length&&r[0]===t[0]?Cn(r,N,n):[]}),ai=ar(Be),li=ar(function(t,n){n=On(n,1);var r=t?t.length:0,e=_n(t,n);return ir(t,l(n,function(t){return ge(t,r)?+t:t}).sort(Sr)),e}),si=ar(function(t){return yr(On(t,1,Xe,true))}),hi=ar(function(t){var n=We(t);return Xe(n)&&(n=N),yr(On(t,1,Xe,true),fe(n,2))}),pi=ar(function(t){var n=We(t);return Xe(n)&&(n=N),yr(On(t,1,Xe,true),N,n)}),_i=ar(function(t,n){return Xe(t)?jn(t,n):[]}),vi=ar(function(t){return jr(f(t,Xe))}),gi=ar(function(t){var n=We(t);return Xe(n)&&(n=N),
jr(f(t,Xe),fe(n,2))}),di=ar(function(t){var n=We(t);return Xe(n)&&(n=N),jr(f(t,Xe),N,n)}),yi=ar(Ce),bi=ar(function(t){var n=t.length,n=1<n?t[n-1]:N,n=typeof n=="function"?(t.pop(),n):N;return Le(t,n)}),xi=ar(function(t){function n(n){return _n(n,t)}t=On(t,1);var r=t.length,e=r?t[0]:0,u=this.__wrapped__;return!(1<r||this.__actions__.length)&&u instanceof Ft&&ge(e)?(u=u.slice(e,+e+(r?1:0)),u.__actions__.push({func:ze,args:[n],thisArg:N}),new $t(u,this.__chain__).thru(function(t){return r&&!t.length&&t.push(N),
t})):this.thru(n)}),ji=Cr(function(t,n,r){qu.call(t,r)?++t[r]:t[r]=1}),mi=Pr(Se),wi=Pr(Ie),Ai=Cr(function(t,n,r){qu.call(t,r)?t[r].push(n):t[r]=[n]}),Oi=ar(function(t,n,e){var u=-1,o=typeof n=="function",i=ye(n),f=Qe(t)?Cu(t.length):[];return No(t,function(t){var c=o?n:i&&null!=t?t[n]:N;f[++u]=c?r(c,t,e):Dn(t,n,e)}),f}),ki=Cr(function(t,n,r){t[r]=n}),Ei=Cr(function(t,n,r){t[r?0:1].push(n)},function(){return[[],[]]}),Si=ar(function(t,n){if(null==t)return[];var r=n.length;return 1<r&&de(t,n[0],n[1])?n=[]:2<r&&de(n[0],n[1],n[2])&&(n=[n[0]]),
nr(t,On(n,1),[])}),Ii=fo||function(){return qt.Date.now()},Ri=ar(function(t,n,r){var e=1;if(r.length)var u=z(r,ie(Ri)),e=32|e;return re(t,e,n,r,u)}),Wi=ar(function(t,n,r){var e=3;if(r.length)var u=z(r,ie(Wi)),e=32|e;return re(n,e,t,r,u)}),Bi=ar(function(t,n){return xn(t,1,n)}),Mi=ar(function(t,n,r){return xn(t,_u(n)||0,r)});Ge.Cache=Vt;var Ci=ar(function(t,n){n=1==n.length&&Fi(n[0])?l(n[0],S(fe())):l(On(n,1),S(fe()));var e=n.length;return ar(function(u){for(var o=-1,i=yo(u.length,e);++o<i;)u[o]=n[o].call(this,u[o]);
return r(t,this,u)})}),Li=ar(function(t,n){var r=z(n,ie(Li));return re(t,32,N,n,r)}),Di=ar(function(t,n){var r=z(n,ie(Di));return re(t,64,N,n,r)}),zi=ar(function(t,n){return re(t,256,N,N,N,On(n,1))}),Ui=Qr(Wn),$i=Qr(function(t,n){return t>=n}),Fi=Cu.isArray,Ti=Yt?S(Yt):zn,Ni=ho||Mu,Pi=Ht?S(Ht):Un,Zi=Qt?S(Qt):Fn,qi=Xt?S(Xt):Pn,Vi=tn?S(tn):Zn,Ki=nn?S(nn):qn,Gi=Qr(Jn),Ji=Qr(function(t,n){return t<=n}),Yi=Lr(function(t,n){if(Bo||xe(n)||Qe(n))Br(n,bu(n),t);else for(var r in n)qu.call(n,r)&&ln(t,r,n[r]);
}),Hi=Lr(function(t,n){Br(n,xu(n),t)}),Qi=Lr(function(t,n,r,e){Br(n,xu(n),t,e)}),Xi=Lr(function(t,n,r,e){Br(n,bu(n),t,e)}),tf=ar(function(t,n){return _n(t,On(n,1))}),nf=ar(function(t){return t.push(N,cn),r(Qi,N,t)}),rf=ar(function(t){return t.push(N,me),r(cf,N,t)}),ef=Vr(function(t,n,r){t[n]=r},ku(Eu)),uf=Vr(function(t,n,r){qu.call(t,n)?t[n].push(r):t[n]=[r]},fe),of=ar(Dn),ff=Lr(function(t,n,r){Xn(t,n,r)}),cf=Lr(function(t,n,r,e){Xn(t,n,r,e)}),af=ar(function(t,n){return null==t?{}:(n=l(On(n,1),Ae),
rr(t,jn(Rn(t,xu,Ho),n)))}),lf=ar(function(t,n){return null==t?{}:rr(t,l(On(n,1),Ae))}),sf=ne(bu),hf=ne(xu),pf=Fr(function(t,n,r){return n=n.toLowerCase(),t+(r?wu(n):n)}),_f=Fr(function(t,n,r){return t+(r?"-":"")+n.toLowerCase()}),vf=Fr(function(t,n,r){return t+(r?" ":"")+n.toLowerCase()}),gf=$r("toLowerCase"),df=Fr(function(t,n,r){return t+(r?"_":"")+n.toLowerCase()}),yf=Fr(function(t,n,r){return t+(r?" ":"")+xf(n)}),bf=Fr(function(t,n,r){return t+(r?" ":"")+n.toUpperCase()}),xf=$r("toUpperCase"),jf=ar(function(t,n){
try{return r(t,N,n)}catch(t){return tu(t)?t:new Lu(t)}}),mf=ar(function(t,n){return u(On(n,1),function(n){n=Ae(n),t[n]=Ri(t[n],t)}),t}),wf=Zr(),Af=Zr(true),Of=ar(function(t,n){return function(r){return Dn(r,t,n)}}),kf=ar(function(t,n){return function(r){return Dn(t,r,n)}}),Ef=Gr(l),Sf=Gr(i),If=Gr(_),Rf=Hr(),Wf=Hr(true),Bf=Kr(function(t,n){return t+n},0),Mf=te("ceil"),Cf=Kr(function(t,n){return t/n},1),Lf=te("floor"),Df=Kr(function(t,n){return t*n},1),zf=te("round"),Uf=Kr(function(t,n){return t-n},0);return St.after=function(t,n){
if(typeof n!="function")throw new Uu("Expected a function");return t=hu(t),function(){if(1>--t)return n.apply(this,arguments)}},St.ary=Pe,St.assign=Yi,St.assignIn=Hi,St.assignInWith=Qi,St.assignWith=Xi,St.at=tf,St.before=Ze,St.bind=Ri,St.bindAll=mf,St.bindKey=Wi,St.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Fi(t)?t:[t]},St.chain=De,St.chunk=function(t,n,r){if(n=(r?de(t,n,r):n===N)?1:go(hu(n),0),r=t?t.length:0,!r||1>n)return[];for(var e=0,u=0,o=Cu(ao(r/n));e<r;)o[u++]=sr(t,e,e+=n);
return o},St.compact=function(t){for(var n=-1,r=t?t.length:0,e=0,u=[];++n<r;){var o=t[n];o&&(u[e++]=o)}return u},St.concat=function(){for(var t=arguments.length,n=Cu(t?t-1:0),r=arguments[0],e=t;e--;)n[e-1]=arguments[e];return t?s(Fi(r)?Wr(r):[r],On(n,1)):[]},St.cond=function(t){var n=t?t.length:0,e=fe();return t=n?l(t,function(t){if("function"!=typeof t[1])throw new Uu("Expected a function");return[e(t[0]),t[1]]}):[],ar(function(e){for(var u=-1;++u<n;){var o=t[u];if(r(o[0],this,e))return r(o[1],this,e);
}})},St.conforms=function(t){return dn(gn(t,true))},St.constant=ku,St.countBy=ji,St.create=function(t,n){var r=bn(t);return n?pn(r,n):r},St.curry=qe,St.curryRight=Ve,St.debounce=Ke,St.defaults=nf,St.defaultsDeep=rf,St.defer=Bi,St.delay=Mi,St.difference=ei,St.differenceBy=ui,St.differenceWith=oi,St.drop=function(t,n,r){var e=t?t.length:0;return e?(n=r||n===N?1:hu(n),sr(t,0>n?0:n,e)):[]},St.dropRight=function(t,n,r){var e=t?t.length:0;return e?(n=r||n===N?1:hu(n),n=e-n,sr(t,0,0>n?0:n)):[]},St.dropRightWhile=function(t,n){
return t&&t.length?br(t,fe(n,3),true,true):[]},St.dropWhile=function(t,n){return t&&t.length?br(t,fe(n,3),true):[]},St.fill=function(t,n,r,e){var u=t?t.length:0;if(!u)return[];for(r&&typeof r!="number"&&de(t,n,r)&&(r=0,e=u),u=t.length,r=hu(r),0>r&&(r=-r>u?0:u+r),e=e===N||e>u?u:hu(e),0>e&&(e+=u),e=r>e?0:pu(e);r<e;)t[r++]=n;return t},St.filter=function(t,n){return(Fi(t)?f:An)(t,fe(n,3))},St.flatMap=function(t,n){return On(Te(t,n),1)},St.flatMapDeep=function(t,n){return On(Te(t,n),P)},St.flatMapDepth=function(t,n,r){
return r=r===N?1:hu(r),On(Te(t,n),r)},St.flatten=function(t){return t&&t.length?On(t,1):[]},St.flattenDeep=function(t){return t&&t.length?On(t,P):[]},St.flattenDepth=function(t,n){return t&&t.length?(n=n===N?1:hu(n),On(t,n)):[]},St.flip=function(t){return re(t,512)},St.flow=wf,St.flowRight=Af,St.fromPairs=function(t){for(var n=-1,r=t?t.length:0,e={};++n<r;){var u=t[n];e[u[0]]=u[1]}return e},St.functions=function(t){return null==t?[]:Sn(t,bu(t))},St.functionsIn=function(t){return null==t?[]:Sn(t,xu(t));
},St.groupBy=Ai,St.initial=function(t){return t&&t.length?sr(t,0,-1):[]},St.intersection=ii,St.intersectionBy=fi,St.intersectionWith=ci,St.invert=ef,St.invertBy=uf,St.invokeMap=Oi,St.iteratee=Su,St.keyBy=ki,St.keys=bu,St.keysIn=xu,St.map=Te,St.mapKeys=function(t,n){var r={};return n=fe(n,3),kn(t,function(t,e,u){r[n(t,e,u)]=t}),r},St.mapValues=function(t,n){var r={};return n=fe(n,3),kn(t,function(t,e,u){r[e]=n(t,e,u)}),r},St.matches=function(t){return Hn(gn(t,true))},St.matchesProperty=function(t,n){
return Qn(t,gn(n,true))},St.memoize=Ge,St.merge=ff,St.mergeWith=cf,St.method=Of,St.methodOf=kf,St.mixin=Iu,St.negate=Je,St.nthArg=function(t){return t=hu(t),ar(function(n){return tr(n,t)})},St.omit=af,St.omitBy=function(t,n){return ju(t,Je(fe(n)))},St.once=function(t){return Ze(2,t)},St.orderBy=function(t,n,r,e){return null==t?[]:(Fi(n)||(n=null==n?[]:[n]),r=e?N:r,Fi(r)||(r=null==r?[]:[r]),nr(t,n,r))},St.over=Ef,St.overArgs=Ci,St.overEvery=Sf,St.overSome=If,St.partial=Li,St.partialRight=Di,St.partition=Ei,
St.pick=lf,St.pickBy=ju,St.property=Wu,St.propertyOf=function(t){return function(n){return null==t?N:In(t,n)}},St.pull=ai,St.pullAll=Be,St.pullAllBy=function(t,n,r){return t&&t.length&&n&&n.length?or(t,n,fe(r,2)):t},St.pullAllWith=function(t,n,r){return t&&t.length&&n&&n.length?or(t,n,N,r):t},St.pullAt=li,St.range=Rf,St.rangeRight=Wf,St.rearg=zi,St.reject=function(t,n){return(Fi(t)?f:An)(t,Je(fe(n,3)))},St.remove=function(t,n){var r=[];if(!t||!t.length)return r;var e=-1,u=[],o=t.length;for(n=fe(n,3);++e<o;){
var i=t[e];n(i,e,t)&&(r.push(i),u.push(e))}return ir(t,u),r},St.rest=function(t,n){if(typeof t!="function")throw new Uu("Expected a function");return n=n===N?n:hu(n),ar(t,n)},St.reverse=Me,St.sampleSize=Ne,St.set=function(t,n,r){return null==t?t:lr(t,n,r)},St.setWith=function(t,n,r,e){return e=typeof e=="function"?e:N,null==t?t:lr(t,n,r,e)},St.shuffle=function(t){return Ne(t,4294967295)},St.slice=function(t,n,r){var e=t?t.length:0;return e?(r&&typeof r!="number"&&de(t,n,r)?(n=0,r=e):(n=null==n?0:hu(n),
r=r===N?e:hu(r)),sr(t,n,r)):[]},St.sortBy=Si,St.sortedUniq=function(t){return t&&t.length?vr(t):[]},St.sortedUniqBy=function(t,n){return t&&t.length?vr(t,fe(n,2)):[]},St.split=function(t,n,r){return r&&typeof r!="number"&&de(t,n,r)&&(n=r=N),r=r===N?4294967295:r>>>0,r?(t=gu(t))&&(typeof n=="string"||null!=n&&!qi(n))&&(n=dr(n),""==n&&Ct.test(t))?Or(t.match(Bt),0,r):wo.call(t,n,r):[]},St.spread=function(t,n){if(typeof t!="function")throw new Uu("Expected a function");return n=n===N?0:go(hu(n),0),ar(function(e){
var u=e[n];return e=Or(e,0,n),u&&s(e,u),r(t,this,e)})},St.tail=function(t){var n=t?t.length:0;return n?sr(t,1,n):[]},St.take=function(t,n,r){return t&&t.length?(n=r||n===N?1:hu(n),sr(t,0,0>n?0:n)):[]},St.takeRight=function(t,n,r){var e=t?t.length:0;return e?(n=r||n===N?1:hu(n),n=e-n,sr(t,0>n?0:n,e)):[]},St.takeRightWhile=function(t,n){return t&&t.length?br(t,fe(n,3),false,true):[]},St.takeWhile=function(t,n){return t&&t.length?br(t,fe(n,3)):[]},St.tap=function(t,n){return n(t),t},St.throttle=function(t,n,r){
var e=true,u=true;if(typeof t!="function")throw new Uu("Expected a function");return uu(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),Ke(t,n,{leading:e,maxWait:n,trailing:u})},St.thru=ze,St.toArray=lu,St.toPairs=sf,St.toPairsIn=hf,St.toPath=function(t){return Fi(t)?l(t,Ae):au(t)?[t]:Wr(ri(t))},St.toPlainObject=vu,St.transform=function(t,n,r){var e=Fi(t)||Ki(t);if(n=fe(n,4),null==r)if(e||uu(t)){var o=t.constructor;r=e?Fi(t)?new o:[]:nu(o)?bn(to(t)):{}}else r={};return(e?u:kn)(t,function(t,e,u){
return n(r,t,e,u)}),r},St.unary=function(t){return Pe(t,1)},St.union=si,St.unionBy=hi,St.unionWith=pi,St.uniq=function(t){return t&&t.length?yr(t):[]},St.uniqBy=function(t,n){return t&&t.length?yr(t,fe(n,2)):[]},St.uniqWith=function(t,n){return t&&t.length?yr(t,N,n):[]},St.unset=function(t,n){var r;if(null==t)r=true;else{r=t;var e=n,e=ye(e,r)?[e]:Ar(e);r=we(r,e),e=Ae(We(e)),r=!(null!=r&&qu.call(r,e))||delete r[e]}return r},St.unzip=Ce,St.unzipWith=Le,St.update=function(t,n,r){return null==t?t:lr(t,n,(typeof r=="function"?r:Eu)(In(t,n)),void 0);
},St.updateWith=function(t,n,r,e){return e=typeof e=="function"?e:N,null!=t&&(t=lr(t,n,(typeof r=="function"?r:Eu)(In(t,n)),e)),t},St.values=mu,St.valuesIn=function(t){return null==t?[]:I(t,xu(t))},St.without=_i,St.words=Ou,St.wrap=function(t,n){return n=null==n?Eu:n,Li(n,t)},St.xor=vi,St.xorBy=gi,St.xorWith=di,St.zip=yi,St.zipObject=function(t,n){return mr(t||[],n||[],ln)},St.zipObjectDeep=function(t,n){return mr(t||[],n||[],lr)},St.zipWith=bi,St.entries=sf,St.entriesIn=hf,St.extend=Hi,St.extendWith=Qi,
Iu(St,St),St.add=Bf,St.attempt=jf,St.camelCase=pf,St.capitalize=wu,St.ceil=Mf,St.clamp=function(t,n,r){return r===N&&(r=n,n=N),r!==N&&(r=_u(r),r=r===r?r:0),n!==N&&(n=_u(n),n=n===n?n:0),vn(_u(t),n,r)},St.clone=function(t){return gn(t,false,true)},St.cloneDeep=function(t){return gn(t,true,true)},St.cloneDeepWith=function(t,n){return gn(t,true,true,n)},St.cloneWith=function(t,n){return gn(t,false,true,n)},St.conformsTo=function(t,n){return null==n||yn(t,n,bu(n))},St.deburr=Au,St.defaultTo=function(t,n){return null==t||t!==t?n:t;
},St.divide=Cf,St.endsWith=function(t,n,r){t=gu(t),n=dr(n);var e=t.length,e=r=r===N?e:vn(hu(r),0,e);return r-=n.length,0<=r&&t.slice(r,e)==n},St.eq=Ye,St.escape=function(t){return(t=gu(t))&&Q.test(t)?t.replace(Y,en):t},St.escapeRegExp=function(t){return(t=gu(t))&&ft.test(t)?t.replace(it,"\\$&"):t},St.every=function(t,n,r){var e=Fi(t)?i:mn;return r&&de(t,n,r)&&(n=N),e(t,fe(n,3))},St.find=mi,St.findIndex=Se,St.findKey=function(t,n){return v(t,fe(n,3),kn)},St.findLast=wi,St.findLastIndex=Ie,St.findLastKey=function(t,n){
return v(t,fe(n,3),En)},St.floor=Lf,St.forEach=$e,St.forEachRight=Fe,St.forIn=function(t,n){return null==t?t:Zo(t,fe(n,3),xu)},St.forInRight=function(t,n){return null==t?t:qo(t,fe(n,3),xu)},St.forOwn=function(t,n){return t&&kn(t,fe(n,3))},St.forOwnRight=function(t,n){return t&&En(t,fe(n,3))},St.get=du,St.gt=Ui,St.gte=$i,St.has=function(t,n){return null!=t&&se(t,n,Bn)},St.hasIn=yu,St.head=Re,St.identity=Eu,St.includes=function(t,n,r,e){return t=Qe(t)?t:mu(t),r=r&&!e?hu(r):0,e=t.length,0>r&&(r=go(e+r,0)),
cu(t)?r<=e&&-1<t.indexOf(n,r):!!e&&-1<d(t,n,r)},St.indexOf=function(t,n,r){var e=t?t.length:0;return e?(r=null==r?0:hu(r),0>r&&(r=go(e+r,0)),d(t,n,r)):-1},St.inRange=function(t,n,r){return n=su(n),r===N?(r=n,n=0):r=su(r),t=_u(t),t>=yo(n,r)&&t<go(n,r)},St.invoke=of,St.isArguments=He,St.isArray=Fi,St.isArrayBuffer=Ti,St.isArrayLike=Qe,St.isArrayLikeObject=Xe,St.isBoolean=function(t){return true===t||false===t||ou(t)&&"[object Boolean]"==Gu.call(t)},St.isBuffer=Ni,St.isDate=Pi,St.isElement=function(t){return!!t&&1===t.nodeType&&ou(t)&&!fu(t);
},St.isEmpty=function(t){if(Qe(t)&&(Fi(t)||cu(t)||nu(t.splice)||He(t)||Ni(t)))return!t.length;if(ou(t)){var n=Et(t);if("[object Map]"==n||"[object Set]"==n)return!t.size}var r,n=xe(t);for(r in t)if(qu.call(t,r)&&(!n||"constructor"!=r))return false;return!(Bo&&vo(t).length)},St.isEqual=function(t,n){return $n(t,n)},St.isEqualWith=function(t,n,r){var e=(r=typeof r=="function"?r:N)?r(t,n):N;return e===N?$n(t,n,r):!!e},St.isError=tu,St.isFinite=function(t){return typeof t=="number"&&po(t)},St.isFunction=nu,
St.isInteger=ru,St.isLength=eu,St.isMap=Zi,St.isMatch=function(t,n){return t===n||Tn(t,n,ae(n))},St.isMatchWith=function(t,n,r){return r=typeof r=="function"?r:N,Tn(t,n,ae(n),r)},St.isNaN=function(t){return iu(t)&&t!=+t},St.isNative=function(t){if(Qo(t))throw new Lu("This method is not supported with core-js. Try https://github.com/es-shims.");return Nn(t)},St.isNil=function(t){return null==t},St.isNull=function(t){return null===t},St.isNumber=iu,St.isObject=uu,St.isObjectLike=ou,St.isPlainObject=fu,
St.isRegExp=qi,St.isSafeInteger=function(t){return ru(t)&&-9007199254740991<=t&&9007199254740991>=t},St.isSet=Vi,St.isString=cu,St.isSymbol=au,St.isTypedArray=Ki,St.isUndefined=function(t){return t===N},St.isWeakMap=function(t){return ou(t)&&"[object WeakMap]"==Et(t)},St.isWeakSet=function(t){return ou(t)&&"[object WeakSet]"==Gu.call(t)},St.join=function(t,n){return t?_o.call(t,n):""},St.kebabCase=_f,St.last=We,St.lastIndexOf=function(t,n,r){var e=t?t.length:0;if(!e)return-1;var u=e;if(r!==N&&(u=hu(r),
u=(0>u?go(e+u,0):yo(u,e-1))+1),n!==n)return g(t,b,u-1,true);for(;u--;)if(t[u]===n)return u;return-1},St.lowerCase=vf,St.lowerFirst=gf,St.lt=Gi,St.lte=Ji,St.max=function(t){return t&&t.length?wn(t,Eu,Wn):N},St.maxBy=function(t,n){return t&&t.length?wn(t,fe(n,2),Wn):N},St.mean=function(t){return x(t,Eu)},St.meanBy=function(t,n){return x(t,fe(n,2))},St.min=function(t){return t&&t.length?wn(t,Eu,Jn):N},St.minBy=function(t,n){return t&&t.length?wn(t,fe(n,2),Jn):N},St.stubArray=Bu,St.stubFalse=Mu,St.stubObject=function(){
return{}},St.stubString=function(){return""},St.stubTrue=function(){return true},St.multiply=Df,St.nth=function(t,n){return t&&t.length?tr(t,hu(n)):N},St.noConflict=function(){return qt._===this&&(qt._=Ju),this},St.noop=Ru,St.now=Ii,St.pad=function(t,n,r){t=gu(t);var e=(n=hu(n))?F(t):0;return!n||e>=n?t:(n=(n-e)/2,Jr(lo(n),r)+t+Jr(ao(n),r))},St.padEnd=function(t,n,r){t=gu(t);var e=(n=hu(n))?F(t):0;return n&&e<n?t+Jr(n-e,r):t},St.padStart=function(t,n,r){t=gu(t);var e=(n=hu(n))?F(t):0;return n&&e<n?Jr(n-e,r)+t:t;
},St.parseInt=function(t,n,r){return r||null==n?n=0:n&&(n=+n),t=gu(t).replace(ct,""),bo(t,n||(yt.test(t)?16:10))},St.random=function(t,n,r){if(r&&typeof r!="boolean"&&de(t,n,r)&&(n=r=N),r===N&&(typeof n=="boolean"?(r=n,n=N):typeof t=="boolean"&&(r=t,t=N)),t===N&&n===N?(t=0,n=1):(t=su(t),n===N?(n=t,t=0):n=su(n)),t>n){var e=t;t=n,n=e}return r||t%1||n%1?(r=xo(),yo(t+r*(n-t+Tt("1e-"+((r+"").length-1))),n)):fr(t,n)},St.reduce=function(t,n,r){var e=Fi(t)?h:w,u=3>arguments.length;return e(t,fe(n,4),r,u,No);
},St.reduceRight=function(t,n,r){var e=Fi(t)?p:w,u=3>arguments.length;return e(t,fe(n,4),r,u,Po)},St.repeat=function(t,n,r){return n=(r?de(t,n,r):n===N)?1:hu(n),cr(gu(t),n)},St.replace=function(){var t=arguments,n=gu(t[0]);return 3>t.length?n:jo.call(n,t[1],t[2])},St.result=function(t,n,r){n=ye(n,t)?[n]:Ar(n);var e=-1,u=n.length;for(u||(t=N,u=1);++e<u;){var o=null==t?N:t[Ae(n[e])];o===N&&(e=u,o=r),t=nu(o)?o.call(t):o}return t},St.round=zf,St.runInContext=T,St.sample=function(t){t=Qe(t)?t:mu(t);var n=t.length;
return 0<n?t[fr(0,n-1)]:N},St.size=function(t){if(null==t)return 0;if(Qe(t)){var n=t.length;return n&&cu(t)?F(t):n}return ou(t)&&(n=Et(t),"[object Map]"==n||"[object Set]"==n)?t.size:Kn(t).length},St.snakeCase=df,St.some=function(t,n,r){var e=Fi(t)?_:hr;return r&&de(t,n,r)&&(n=N),e(t,fe(n,3))},St.sortedIndex=function(t,n){return pr(t,n)},St.sortedIndexBy=function(t,n,r){return _r(t,n,fe(r,2))},St.sortedIndexOf=function(t,n){var r=t?t.length:0;if(r){var e=pr(t,n);if(e<r&&Ye(t[e],n))return e}return-1;
},St.sortedLastIndex=function(t,n){return pr(t,n,true)},St.sortedLastIndexBy=function(t,n,r){return _r(t,n,fe(r,2),true)},St.sortedLastIndexOf=function(t,n){if(t&&t.length){var r=pr(t,n,true)-1;if(Ye(t[r],n))return r}return-1},St.startCase=yf,St.startsWith=function(t,n,r){return t=gu(t),r=vn(hu(r),0,t.length),n=dr(n),t.slice(r,r+n.length)==n},St.subtract=Uf,St.sum=function(t){return t&&t.length?O(t,Eu):0},St.sumBy=function(t,n){return t&&t.length?O(t,fe(n,2)):0},St.template=function(t,n,r){var e=St.templateSettings;
r&&de(t,n,r)&&(n=N),t=gu(t),n=Qi({},n,e,cn),r=Qi({},n.imports,e.imports,cn);var u,o,i=bu(r),f=I(r,i),c=0;r=n.interpolate||Ot;var a="__p+='";r=zu((n.escape||Ot).source+"|"+r.source+"|"+(r===nt?gt:Ot).source+"|"+(n.evaluate||Ot).source+"|$","g");var l="sourceURL"in n?"//# sourceURL="+n.sourceURL+"\n":"";if(t.replace(r,function(n,r,e,i,f,l){return e||(e=i),a+=t.slice(c,l).replace(kt,M),r&&(u=true,a+="'+__e("+r+")+'"),f&&(o=true,a+="';"+f+";\n__p+='"),e&&(a+="'+((__t=("+e+"))==null?'':__t)+'"),c=l+n.length,
n}),a+="';",(n=n.variable)||(a="with(obj){"+a+"}"),a=(o?a.replace(V,""):a).replace(K,"$1").replace(G,"$1;"),a="function("+(n||"obj")+"){"+(n?"":"obj||(obj={});")+"var __t,__p=''"+(u?",__e=_.escape":"")+(o?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+a+"return __p}",n=jf(function(){return Function(i,l+"return "+a).apply(N,f)}),n.source=a,tu(n))throw n;return n},St.times=function(t,n){if(t=hu(t),1>t||9007199254740991<t)return[];var r=4294967295,e=yo(t,4294967295);for(n=fe(n),
t-=4294967295,e=k(e,n);++r<t;)n(r);return e},St.toFinite=su,St.toInteger=hu,St.toLength=pu,St.toLower=function(t){return gu(t).toLowerCase()},St.toNumber=_u,St.toSafeInteger=function(t){return vn(hu(t),-9007199254740991,9007199254740991)},St.toString=gu,St.toUpper=function(t){return gu(t).toUpperCase()},St.trim=function(t,n,r){return(t=gu(t))&&(r||n===N)?t.replace(ct,""):t&&(n=dr(n))?(t=t.match(Bt),r=n.match(Bt),n=W(t,r),r=B(t,r)+1,Or(t,n,r).join("")):t},St.trimEnd=function(t,n,r){return(t=gu(t))&&(r||n===N)?t.replace(lt,""):t&&(n=dr(n))?(t=t.match(Bt),
n=B(t,n.match(Bt))+1,Or(t,0,n).join("")):t},St.trimStart=function(t,n,r){return(t=gu(t))&&(r||n===N)?t.replace(at,""):t&&(n=dr(n))?(t=t.match(Bt),n=W(t,n.match(Bt)),Or(t,n).join("")):t},St.truncate=function(t,n){var r=30,e="...";if(uu(n))var u="separator"in n?n.separator:u,r="length"in n?hu(n.length):r,e="omission"in n?dr(n.omission):e;t=gu(t);var o=t.length;if(Ct.test(t))var i=t.match(Bt),o=i.length;if(r>=o)return t;if(o=r-F(e),1>o)return e;if(r=i?Or(i,0,o).join(""):t.slice(0,o),u===N)return r+e;
if(i&&(o+=r.length-o),qi(u)){if(t.slice(o).search(u)){var f=r;for(u.global||(u=zu(u.source,gu(dt.exec(u))+"g")),u.lastIndex=0;i=u.exec(f);)var c=i.index;r=r.slice(0,c===N?o:c)}}else t.indexOf(dr(u),o)!=o&&(u=r.lastIndexOf(u),-1<u&&(r=r.slice(0,u)));return r+e},St.unescape=function(t){return(t=gu(t))&&H.test(t)?t.replace(J,un):t},St.uniqueId=function(t){var n=++Vu;return gu(t)+n},St.upperCase=bf,St.upperFirst=xf,St.each=$e,St.eachRight=Fe,St.first=Re,Iu(St,function(){var t={};return kn(St,function(n,r){
qu.call(St.prototype,r)||(t[r]=n)}),t}(),{chain:false}),St.VERSION="4.14.2",u("bind bindKey curry curryRight partial partialRight".split(" "),function(t){St[t].placeholder=St}),u(["drop","take"],function(t,n){Ft.prototype[t]=function(r){var e=this.__filtered__;if(e&&!n)return new Ft(this);r=r===N?1:go(hu(r),0);var u=this.clone();return e?u.__takeCount__=yo(r,u.__takeCount__):u.__views__.push({size:yo(r,4294967295),type:t+(0>u.__dir__?"Right":"")}),u},Ft.prototype[t+"Right"]=function(n){return this.reverse()[t](n).reverse();
}}),u(["filter","map","takeWhile"],function(t,n){var r=n+1,e=1==r||3==r;Ft.prototype[t]=function(t){var n=this.clone();return n.__iteratees__.push({iteratee:fe(t,3),type:r}),n.__filtered__=n.__filtered__||e,n}}),u(["head","last"],function(t,n){var r="take"+(n?"Right":"");Ft.prototype[t]=function(){return this[r](1).value()[0]}}),u(["initial","tail"],function(t,n){var r="drop"+(n?"":"Right");Ft.prototype[t]=function(){return this.__filtered__?new Ft(this):this[r](1)}}),Ft.prototype.compact=function(){
return this.filter(Eu)},Ft.prototype.find=function(t){return this.filter(t).head()},Ft.prototype.findLast=function(t){return this.reverse().find(t)},Ft.prototype.invokeMap=ar(function(t,n){return typeof t=="function"?new Ft(this):this.map(function(r){return Dn(r,t,n)})}),Ft.prototype.reject=function(t){return this.filter(Je(fe(t)))},Ft.prototype.slice=function(t,n){t=hu(t);var r=this;return r.__filtered__&&(0<t||0>n)?new Ft(r):(0>t?r=r.takeRight(-t):t&&(r=r.drop(t)),n!==N&&(n=hu(n),r=0>n?r.dropRight(-n):r.take(n-t)),
r)},Ft.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},Ft.prototype.toArray=function(){return this.take(4294967295)},kn(Ft.prototype,function(t,n){var r=/^(?:filter|find|map|reject)|While$/.test(n),e=/^(?:head|last)$/.test(n),u=St[e?"take"+("last"==n?"Right":""):n],o=e||/^find/.test(n);u&&(St.prototype[n]=function(){function n(t){return t=u.apply(St,s([t],f)),e&&h?t[0]:t}var i=this.__wrapped__,f=e?[1]:arguments,c=i instanceof Ft,a=f[0],l=c||Fi(i);l&&r&&typeof a=="function"&&1!=a.length&&(c=l=false);
var h=this.__chain__,p=!!this.__actions__.length,a=o&&!h,c=c&&!p;return!o&&l?(i=c?i:new Ft(this),i=t.apply(i,f),i.__actions__.push({func:ze,args:[n],thisArg:N}),new $t(i,h)):a&&c?t.apply(this,f):(i=this.thru(n),a?e?i.value()[0]:i.value():i)})}),u("pop push shift sort splice unshift".split(" "),function(t){var n=$u[t],r=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",e=/^(?:pop|shift)$/.test(t);St.prototype[t]=function(){var t=arguments;if(e&&!this.__chain__){var u=this.value();return n.apply(Fi(u)?u:[],t);
}return this[r](function(r){return n.apply(Fi(r)?r:[],t)})}}),kn(Ft.prototype,function(t,n){var r=St[n];if(r){var e=r.name+"";(Mo[e]||(Mo[e]=[])).push({name:n,func:r})}}),Mo[qr(N,2).name]=[{name:"wrapper",func:N}],Ft.prototype.clone=function(){var t=new Ft(this.__wrapped__);return t.__actions__=Wr(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Wr(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Wr(this.__views__),t},Ft.prototype.reverse=function(){
if(this.__filtered__){var t=new Ft(this);t.__dir__=-1,t.__filtered__=true}else t=this.clone(),t.__dir__*=-1;return t},Ft.prototype.value=function(){var t,n=this.__wrapped__.value(),r=this.__dir__,e=Fi(n),u=0>r,o=e?n.length:0;t=o;for(var i=this.__views__,f=0,c=-1,a=i.length;++c<a;){var l=i[c],s=l.size;switch(l.type){case"drop":f+=s;break;case"dropRight":t-=s;break;case"take":t=yo(t,f+s);break;case"takeRight":f=go(f,t-s)}}if(t={start:f,end:t},i=t.start,f=t.end,t=f-i,u=u?f:i-1,i=this.__iteratees__,f=i.length,
c=0,a=yo(t,this.__takeCount__),!e||200>o||o==t&&a==t)return xr(n,this.__actions__);e=[];t:for(;t--&&c<a;){for(u+=r,o=-1,l=n[u];++o<f;){var h=i[o],s=h.type,h=(0,h.iteratee)(l);if(2==s)l=h;else if(!h){if(1==s)continue t;break t}}e[c++]=l}return e},St.prototype.at=xi,St.prototype.chain=function(){return De(this)},St.prototype.commit=function(){return new $t(this.value(),this.__chain__)},St.prototype.next=function(){this.__values__===N&&(this.__values__=lu(this.value()));var t=this.__index__>=this.__values__.length,n=t?N:this.__values__[this.__index__++];
return{done:t,value:n}},St.prototype.plant=function(t){for(var n,r=this;r instanceof It;){var e=Ee(r);e.__index__=0,e.__values__=N,n?u.__wrapped__=e:n=e;var u=e,r=r.__wrapped__}return u.__wrapped__=t,n},St.prototype.reverse=function(){var t=this.__wrapped__;return t instanceof Ft?(this.__actions__.length&&(t=new Ft(this)),t=t.reverse(),t.__actions__.push({func:ze,args:[Me],thisArg:N}),new $t(t,this.__chain__)):this.thru(Me)},St.prototype.toJSON=St.prototype.valueOf=St.prototype.value=function(){return xr(this.__wrapped__,this.__actions__);
},St.prototype.first=St.prototype.head,no&&(St.prototype[no]=Ue),St}var N,P=1/0,Z=NaN,q=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],V=/\b__p\+='';/g,K=/\b(__p\+=)''\+/g,G=/(__e\(.*?\)|\b__t\))\+'';/g,J=/&(?:amp|lt|gt|quot|#39|#96);/g,Y=/[&<>"'`]/g,H=RegExp(J.source),Q=RegExp(Y.source),X=/<%-([\s\S]+?)%>/g,tt=/<%([\s\S]+?)%>/g,nt=/<%=([\s\S]+?)%>/g,rt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,et=/^\w*$/,ut=/^\./,ot=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,it=/[\\^$.*+?()[\]{}|]/g,ft=RegExp(it.source),ct=/^\s+|\s+$/g,at=/^\s+/,lt=/\s+$/,st=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,ht=/\{\n\/\* \[wrapped with (.+)\] \*/,pt=/,? & /,_t=/[a-zA-Z0-9]+/g,vt=/\\(\\)?/g,gt=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,dt=/\w*$/,yt=/^0x/i,bt=/^[-+]0x[0-9a-f]+$/i,xt=/^0b[01]+$/i,jt=/^\[object .+?Constructor\]$/,mt=/^0o[0-7]+$/i,wt=/^(?:0|[1-9]\d*)$/,At=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,Ot=/($^)/,kt=/['\n\r\u2028\u2029\\]/g,Et="[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?)*",St="(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])"+Et,It="(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]?|[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])",Rt=RegExp("['\u2019]","g"),Wt=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]","g"),Bt=RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|"+It+Et,"g"),Mt=RegExp(["[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+(?:['\u2019](?:d|ll|m|re|s|t|ve))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde]|$)|(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde](?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])|$)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?(?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:d|ll|m|re|s|t|ve))?|[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?|\\d+",St].join("|"),"g"),Ct=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0\\ufe0e\\ufe0f]"),Lt=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Dt="Array Buffer DataView Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Map Math Object Promise RegExp Set String Symbol TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap _ clearTimeout isFinite parseInt setTimeout".split(" "),zt={};
zt["[object Float32Array]"]=zt["[object Float64Array]"]=zt["[object Int8Array]"]=zt["[object Int16Array]"]=zt["[object Int32Array]"]=zt["[object Uint8Array]"]=zt["[object Uint8ClampedArray]"]=zt["[object Uint16Array]"]=zt["[object Uint32Array]"]=true,zt["[object Arguments]"]=zt["[object Array]"]=zt["[object ArrayBuffer]"]=zt["[object Boolean]"]=zt["[object DataView]"]=zt["[object Date]"]=zt["[object Error]"]=zt["[object Function]"]=zt["[object Map]"]=zt["[object Number]"]=zt["[object Object]"]=zt["[object RegExp]"]=zt["[object Set]"]=zt["[object String]"]=zt["[object WeakMap]"]=false;
var Ut={};Ut["[object Arguments]"]=Ut["[object Array]"]=Ut["[object ArrayBuffer]"]=Ut["[object DataView]"]=Ut["[object Boolean]"]=Ut["[object Date]"]=Ut["[object Float32Array]"]=Ut["[object Float64Array]"]=Ut["[object Int8Array]"]=Ut["[object Int16Array]"]=Ut["[object Int32Array]"]=Ut["[object Map]"]=Ut["[object Number]"]=Ut["[object Object]"]=Ut["[object RegExp]"]=Ut["[object Set]"]=Ut["[object String]"]=Ut["[object Symbol]"]=Ut["[object Uint8Array]"]=Ut["[object Uint8ClampedArray]"]=Ut["[object Uint16Array]"]=Ut["[object Uint32Array]"]=true,
Ut["[object Error]"]=Ut["[object Function]"]=Ut["[object WeakMap]"]=false;var $t,Ft={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Tt=parseFloat,Nt=parseInt,Pt=typeof global=="object"&&global&&global.Object===Object&&global,Zt=typeof self=="object"&&self&&self.Object===Object&&self,qt=Pt||Zt||Function("return this")(),Vt=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Kt=Vt&&typeof module=="object"&&module&&!module.nodeType&&module,Gt=Kt&&Kt.exports===Vt,Jt=Gt&&Pt.g;
t:{try{$t=Jt&&Jt.f("util");break t}catch(t){}$t=void 0}var Yt=$t&&$t.isArrayBuffer,Ht=$t&&$t.isDate,Qt=$t&&$t.isMap,Xt=$t&&$t.isRegExp,tn=$t&&$t.isSet,nn=$t&&$t.isTypedArray,rn=m({"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i",
"\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss"}),en=m({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","`":"&#96;"}),un=m({"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'",
"&#96;":"`"}),on=T();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(qt._=on, define(function(){return on})):Kt?((Kt.exports=on)._=on,Vt._=on):qt._=on}).call(this);

105
dist/mapping.fp.js vendored
View File

@@ -63,11 +63,20 @@ return /******/ (function(modules) { // webpackBootstrap
'entries': 'toPairs',
'entriesIn': 'toPairsIn',
'extend': 'assignIn',
'extendAll': 'assignInAll',
'extendAllWith': 'assignInAllWith',
'extendWith': 'assignInWith',
'first': 'head',
// Methods that are curried variants of others.
'conforms': 'conformsTo',
'matches': 'isMatch',
'property': 'get',
// Ramda aliases.
'__': 'placeholder',
'F': 'stubFalse',
'T': 'stubTrue',
'all': 'every',
'allPass': 'overEvery',
'always': 'constant',
@@ -81,8 +90,11 @@ return /******/ (function(modules) { // webpackBootstrap
'contains': 'includes',
'dissoc': 'unset',
'dissocPath': 'unset',
'dropLast': 'dropRight',
'dropLastWhile': 'dropRightWhile',
'equals': 'isEqual',
'identical': 'eq',
'indexBy': 'keyBy',
'init': 'initial',
'invertObj': 'invert',
'juxt': 'over',
@@ -99,36 +111,44 @@ return /******/ (function(modules) { // webpackBootstrap
'propEq': 'matchesProperty',
'propOr': 'getOr',
'props': 'at',
'symmetricDifference': 'xor',
'symmetricDifferenceBy': 'xorBy',
'symmetricDifferenceWith': 'xorWith',
'takeLast': 'takeRight',
'takeLastWhile': 'takeRightWhile',
'unapply': 'rest',
'unnest': 'flatten',
'useWith': 'overArgs',
'whereEq': 'filter',
'where': 'conformsTo',
'whereEq': 'isMatch',
'zipObj': 'zipObject'
};
/** Used to map ary to method names. */
exports.aryMethod = {
'1': [
'attempt', 'castArray', 'ceil', 'create', 'curry', 'curryRight', 'floor',
'flow', 'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method',
'methodOf', 'mixin', 'over', 'overEvery', 'overSome', 'rest', 'reverse',
'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create',
'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow',
'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll',
'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse',
'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart',
'uniqueId', 'words'
'uniqueId', 'words', 'zipAll'
],
'2': [
'add', 'after', 'ary', 'assign', 'assignIn', 'at', 'before', 'bind', 'bindAll',
'bindKey', 'chunk', 'cloneDeepWith', 'cloneWith', 'concat', 'countBy', 'curryN',
'curryRightN', 'debounce', 'defaults', 'defaultsDeep', 'delay', 'difference',
'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith',
'eq', 'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast',
'findLastIndex', 'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth',
'forEach', 'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight',
'get', 'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf',
'intersection', 'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch',
'join', 'keyBy', 'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues',
'matchesProperty', 'maxBy', 'meanBy', 'merge', 'minBy', 'multiply', 'nth',
'omit', 'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt',
'partial', 'partialRight', 'partition', 'pick', 'pickBy', 'pull', 'pullAll',
'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith',
'at', 'before', 'bind', 'bindAll', 'bindKey', 'chunk', 'cloneDeepWith',
'cloneWith', 'concat', 'conformsTo', 'countBy', 'curryN', 'curryRightN',
'debounce', 'defaults', 'defaultsDeep', 'defaultTo', 'delay', 'difference',
'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq',
'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',
'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth', 'forEach',
'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight', 'get',
'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf', 'intersection',
'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch', 'join', 'keyBy',
'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues', 'matchesProperty',
'maxBy', 'meanBy', 'merge', 'mergeAllWith', 'minBy', 'multiply', 'nth', 'omit',
'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt', 'partial',
'partialRight', 'partition', 'pick', 'pickBy', 'propertyOf', 'pull', 'pullAll',
'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove',
'repeat', 'restFrom', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex',
'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy',
@@ -207,7 +227,9 @@ return /******/ (function(modules) { // webpackBootstrap
/** Used to map method names to rearg configs. */
exports.methodRearg = {
'assignInAllWith': [1, 2, 0],
'assignInWith': [1, 2, 0],
'assignAllWith': [1, 2, 0],
'assignWith': [1, 2, 0],
'differenceBy': [1, 2, 0],
'differenceWith': [1, 2, 0],
@@ -216,6 +238,7 @@ return /******/ (function(modules) { // webpackBootstrap
'intersectionWith': [1, 2, 0],
'isEqualWith': [1, 2, 0],
'isMatchWith': [2, 1, 0],
'mergeAllWith': [1, 2, 0],
'mergeWith': [1, 2, 0],
'padChars': [2, 1, 0],
'padCharsEnd': [2, 1, 0],
@@ -235,11 +258,20 @@ return /******/ (function(modules) { // webpackBootstrap
/** Used to map method names to spread configs. */
exports.methodSpread = {
'invokeArgs': 2,
'invokeArgsMap': 2,
'partial': 1,
'partialRight': 1,
'without': 1
'assignAll': { 'start': 0 },
'assignAllWith': { 'afterRearg': true, 'start': 1 },
'assignInAll': { 'start': 0 },
'assignInAllWith': { 'afterRearg': true, 'start': 1 },
'defaultsAll': { 'start': 0 },
'defaultsDeepAll': { 'start': 0 },
'invokeArgs': { 'start': 2 },
'invokeArgsMap': { 'start': 2 },
'mergeAll': { 'start': 0 },
'mergeAllWith': { 'afterRearg': true, 'start': 1 },
'partial': { 'start': 1 },
'partialRight': { 'start': 1 },
'without': { 'start': 1 },
'zipAll': { 'start': 0 }
};
/** Used to identify methods which mutate arrays or objects. */
@@ -256,13 +288,21 @@ return /******/ (function(modules) { // webpackBootstrap
},
'object': {
'assign': true,
'assignAll': true,
'assignAllWith': true,
'assignIn': true,
'assignInAll': true,
'assignInAllWith': true,
'assignInWith': true,
'assignWith': true,
'defaults': true,
'defaultsAll': true,
'defaultsDeep': true,
'defaultsDeepAll': true,
'merge': true,
'mergeWith': true
'mergeAll': true,
'mergeAllWith': true,
'mergeWith': true,
},
'set': {
'set': true,
@@ -302,8 +342,14 @@ return /******/ (function(modules) { // webpackBootstrap
/** Used to map method names to other names. */
exports.remap = {
'assignAll': 'assign',
'assignAllWith': 'assignWith',
'assignInAll': 'assignIn',
'assignInAllWith': 'assignInWith',
'curryN': 'curry',
'curryRightN': 'curryRight',
'defaultsAll': 'defaults',
'defaultsDeepAll': 'defaultsDeep',
'findFrom': 'find',
'findIndexFrom': 'findIndex',
'findLastFrom': 'findLast',
@@ -314,14 +360,18 @@ return /******/ (function(modules) { // webpackBootstrap
'invokeArgs': 'invoke',
'invokeArgsMap': 'invokeMap',
'lastIndexOfFrom': 'lastIndexOf',
'mergeAll': 'merge',
'mergeAllWith': 'mergeWith',
'padChars': 'pad',
'padCharsEnd': 'padEnd',
'padCharsStart': 'padStart',
'propertyOf': 'get',
'restFrom': 'rest',
'spreadFrom': 'spread',
'trimChars': 'trim',
'trimCharsEnd': 'trimEnd',
'trimCharsStart': 'trimStart'
'trimCharsStart': 'trimStart',
'zipAll': 'zip'
};
/** Used to track methods that skip fixing their arity. */
@@ -331,6 +381,7 @@ return /******/ (function(modules) { // webpackBootstrap
'flowRight': true,
'iteratee': true,
'mixin': true,
'rearg': true,
'runInContext': true
};
@@ -356,12 +407,14 @@ return /******/ (function(modules) { // webpackBootstrap
'overArgs': true,
'partial': true,
'partialRight': true,
'propertyOf': true,
'random': true,
'range': true,
'rangeRight': true,
'subtract': true,
'zip': true,
'zipObject': true
'zipObject': true,
'zipObjectDeep': true
};

File diff suppressed because it is too large Load Diff

View File

@@ -71,11 +71,11 @@ function createCloner(func) {
* @param {Function} cloner The function to clone arguments.
* @returns {Function} Returns the new immutable function.
*/
function immutWrap(func, cloner) {
function wrapImmutable(func, cloner) {
return function() {
var length = arguments.length;
if (!length) {
return result;
return;
}
var args = Array(length);
while (length--) {
@@ -143,6 +143,7 @@ function baseConvert(util, name, func, options) {
'keys': util.keys,
'rearg': util.rearg,
'spread': util.spread,
'toInteger': util.toInteger,
'toPath': util.toPath
};
@@ -156,6 +157,7 @@ function baseConvert(util, name, func, options) {
keys = helpers.keys,
rearg = helpers.rearg,
spread = helpers.spread,
toInteger = helpers.toInteger,
toPath = helpers.toPath;
var aryMethodKeys = keys(mapping.aryMethod);
@@ -209,6 +211,18 @@ function baseConvert(util, name, func, options) {
return func;
};
},
'nthArg': function(nthArg) {
return function(n) {
var arity = n < 0 ? 1 : (toInteger(n) + 1);
return curry(nthArg(n), arity);
};
},
'rearg': function(rearg) {
return function(func, indexes) {
var arity = indexes ? indexes.length : 0;
return curry(rearg(func, indexes), arity);
};
},
'runInContext': function(runInContext) {
return function(context) {
return baseConvert(util, runInContext(context), options);
@@ -218,6 +232,77 @@ function baseConvert(util, name, func, options) {
/*--------------------------------------------------------------------------*/
/**
* Casts `func` to a function with an arity capped iteratee if needed.
*
* @private
* @param {string} name The name of the function to inspect.
* @param {Function} func The function to inspect.
* @returns {Function} Returns the cast function.
*/
function castCap(name, func) {
if (config.cap) {
var indexes = mapping.iterateeRearg[name];
if (indexes) {
return iterateeRearg(func, indexes);
}
var n = !isLib && mapping.iterateeAry[name];
if (n) {
return iterateeAry(func, n);
}
}
return func;
}
/**
* Casts `func` to a curried function if needed.
*
* @private
* @param {string} name The name of the function to inspect.
* @param {Function} func The function to inspect.
* @param {number} n The arity of `func`.
* @returns {Function} Returns the cast function.
*/
function castCurry(name, func, n) {
return (forceCurry || (config.curry && n > 1))
? curry(func, n)
: func;
}
/**
* Casts `func` to a fixed arity function if needed.
*
* @private
* @param {string} name The name of the function to inspect.
* @param {Function} func The function to inspect.
* @param {number} n The arity cap.
* @returns {Function} Returns the cast function.
*/
function castFixed(name, func, n) {
if (config.fixed && (forceFixed || !mapping.skipFixed[name])) {
var data = mapping.methodSpread[name],
start = data && data.start;
return start === undefined ? ary(func, n) : spread(func, start);
}
return func;
}
/**
* Casts `func` to an rearged function if needed.
*
* @private
* @param {string} name The name of the function to inspect.
* @param {Function} func The function to inspect.
* @param {number} n The arity of `func`.
* @returns {Function} Returns the cast function.
*/
function castRearg(name, func, n) {
return (config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name]))
? rearg(func, mapping.methodRearg[name] || mapping.aryRearg[n])
: func;
}
/**
* Creates a clone of `object` by `path`.
*
@@ -310,12 +395,11 @@ function baseConvert(util, name, func, options) {
}
/**
* Creates a function that invokes `func` with its first argument passed
* thru `transform`.
* Creates a function that invokes `func` with its first argument transformed.
*
* @private
* @param {Function} func The function to wrap.
* @param {...Function} transform The functions to transform the first argument.
* @param {Function} transform The argument transform.
* @returns {Function} Returns the new function.
*/
function overArg(func, transform) {
@@ -355,42 +439,27 @@ function baseConvert(util, name, func, options) {
}
else if (config.immutable) {
if (mutateMap.array[name]) {
wrapped = immutWrap(func, cloneArray);
wrapped = wrapImmutable(func, cloneArray);
}
else if (mutateMap.object[name]) {
wrapped = immutWrap(func, createCloner(func));
wrapped = wrapImmutable(func, createCloner(func));
}
else if (mutateMap.set[name]) {
wrapped = immutWrap(func, cloneByPath);
wrapped = wrapImmutable(func, cloneByPath);
}
}
each(aryMethodKeys, function(aryKey) {
each(mapping.aryMethod[aryKey], function(otherName) {
if (name == otherName) {
var aryN = !isLib && mapping.iterateeAry[name],
reargIndexes = mapping.iterateeRearg[name],
spreadStart = mapping.methodSpread[name];
var spreadData = mapping.methodSpread[name],
afterRearg = spreadData && spreadData.afterRearg;
result = wrapped;
if (config.fixed && (forceFixed || !mapping.skipFixed[name])) {
result = spreadStart === undefined
? ary(result, aryKey)
: spread(result, spreadStart);
}
if (config.rearg && aryKey > 1 && (forceRearg || !mapping.skipRearg[name])) {
result = rearg(result, mapping.methodRearg[name] || mapping.aryRearg[aryKey]);
}
if (config.cap) {
if (reargIndexes) {
result = iterateeRearg(result, reargIndexes);
} else if (aryN) {
result = iterateeAry(result, aryN);
}
}
if (forceCurry || (config.curry && aryKey > 1)) {
forceCurry && console.log(forceCurry, name);
result = curry(result, aryKey);
}
result = afterRearg
? castFixed(name, castRearg(name, wrapped, aryKey), aryKey)
: castRearg(name, castFixed(name, wrapped, aryKey), aryKey);
result = castCap(name, result);
result = castCurry(name, result, aryKey);
return false;
}
});

View File

@@ -7,11 +7,20 @@ exports.aliasToReal = {
'entries': 'toPairs',
'entriesIn': 'toPairsIn',
'extend': 'assignIn',
'extendAll': 'assignInAll',
'extendAllWith': 'assignInAllWith',
'extendWith': 'assignInWith',
'first': 'head',
// Methods that are curried variants of others.
'conforms': 'conformsTo',
'matches': 'isMatch',
'property': 'get',
// Ramda aliases.
'__': 'placeholder',
'F': 'stubFalse',
'T': 'stubTrue',
'all': 'every',
'allPass': 'overEvery',
'always': 'constant',
@@ -25,8 +34,11 @@ exports.aliasToReal = {
'contains': 'includes',
'dissoc': 'unset',
'dissocPath': 'unset',
'dropLast': 'dropRight',
'dropLastWhile': 'dropRightWhile',
'equals': 'isEqual',
'identical': 'eq',
'indexBy': 'keyBy',
'init': 'initial',
'invertObj': 'invert',
'juxt': 'over',
@@ -43,36 +55,44 @@ exports.aliasToReal = {
'propEq': 'matchesProperty',
'propOr': 'getOr',
'props': 'at',
'symmetricDifference': 'xor',
'symmetricDifferenceBy': 'xorBy',
'symmetricDifferenceWith': 'xorWith',
'takeLast': 'takeRight',
'takeLastWhile': 'takeRightWhile',
'unapply': 'rest',
'unnest': 'flatten',
'useWith': 'overArgs',
'whereEq': 'filter',
'where': 'conformsTo',
'whereEq': 'isMatch',
'zipObj': 'zipObject'
};
/** Used to map ary to method names. */
exports.aryMethod = {
'1': [
'attempt', 'castArray', 'ceil', 'create', 'curry', 'curryRight', 'floor',
'flow', 'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method',
'methodOf', 'mixin', 'over', 'overEvery', 'overSome', 'rest', 'reverse',
'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create',
'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow',
'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll',
'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse',
'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart',
'uniqueId', 'words'
'uniqueId', 'words', 'zipAll'
],
'2': [
'add', 'after', 'ary', 'assign', 'assignIn', 'at', 'before', 'bind', 'bindAll',
'bindKey', 'chunk', 'cloneDeepWith', 'cloneWith', 'concat', 'countBy', 'curryN',
'curryRightN', 'debounce', 'defaults', 'defaultsDeep', 'delay', 'difference',
'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith',
'eq', 'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast',
'findLastIndex', 'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth',
'forEach', 'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight',
'get', 'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf',
'intersection', 'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch',
'join', 'keyBy', 'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues',
'matchesProperty', 'maxBy', 'meanBy', 'merge', 'minBy', 'multiply', 'nth',
'omit', 'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt',
'partial', 'partialRight', 'partition', 'pick', 'pickBy', 'pull', 'pullAll',
'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith',
'at', 'before', 'bind', 'bindAll', 'bindKey', 'chunk', 'cloneDeepWith',
'cloneWith', 'concat', 'conformsTo', 'countBy', 'curryN', 'curryRightN',
'debounce', 'defaults', 'defaultsDeep', 'defaultTo', 'delay', 'difference',
'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq',
'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',
'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth', 'forEach',
'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight', 'get',
'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf', 'intersection',
'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch', 'join', 'keyBy',
'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues', 'matchesProperty',
'maxBy', 'meanBy', 'merge', 'mergeAllWith', 'minBy', 'multiply', 'nth', 'omit',
'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt', 'partial',
'partialRight', 'partition', 'pick', 'pickBy', 'propertyOf', 'pull', 'pullAll',
'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove',
'repeat', 'restFrom', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex',
'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy',
@@ -151,7 +171,9 @@ exports.iterateeRearg = {
/** Used to map method names to rearg configs. */
exports.methodRearg = {
'assignInAllWith': [1, 2, 0],
'assignInWith': [1, 2, 0],
'assignAllWith': [1, 2, 0],
'assignWith': [1, 2, 0],
'differenceBy': [1, 2, 0],
'differenceWith': [1, 2, 0],
@@ -160,6 +182,7 @@ exports.methodRearg = {
'intersectionWith': [1, 2, 0],
'isEqualWith': [1, 2, 0],
'isMatchWith': [2, 1, 0],
'mergeAllWith': [1, 2, 0],
'mergeWith': [1, 2, 0],
'padChars': [2, 1, 0],
'padCharsEnd': [2, 1, 0],
@@ -179,11 +202,20 @@ exports.methodRearg = {
/** Used to map method names to spread configs. */
exports.methodSpread = {
'invokeArgs': 2,
'invokeArgsMap': 2,
'partial': 1,
'partialRight': 1,
'without': 1
'assignAll': { 'start': 0 },
'assignAllWith': { 'afterRearg': true, 'start': 1 },
'assignInAll': { 'start': 0 },
'assignInAllWith': { 'afterRearg': true, 'start': 1 },
'defaultsAll': { 'start': 0 },
'defaultsDeepAll': { 'start': 0 },
'invokeArgs': { 'start': 2 },
'invokeArgsMap': { 'start': 2 },
'mergeAll': { 'start': 0 },
'mergeAllWith': { 'afterRearg': true, 'start': 1 },
'partial': { 'start': 1 },
'partialRight': { 'start': 1 },
'without': { 'start': 1 },
'zipAll': { 'start': 0 }
};
/** Used to identify methods which mutate arrays or objects. */
@@ -200,13 +232,21 @@ exports.mutate = {
},
'object': {
'assign': true,
'assignAll': true,
'assignAllWith': true,
'assignIn': true,
'assignInAll': true,
'assignInAllWith': true,
'assignInWith': true,
'assignWith': true,
'defaults': true,
'defaultsAll': true,
'defaultsDeep': true,
'defaultsDeepAll': true,
'merge': true,
'mergeWith': true
'mergeAll': true,
'mergeAllWith': true,
'mergeWith': true,
},
'set': {
'set': true,
@@ -246,8 +286,14 @@ exports.realToAlias = (function() {
/** Used to map method names to other names. */
exports.remap = {
'assignAll': 'assign',
'assignAllWith': 'assignWith',
'assignInAll': 'assignIn',
'assignInAllWith': 'assignInWith',
'curryN': 'curry',
'curryRightN': 'curryRight',
'defaultsAll': 'defaults',
'defaultsDeepAll': 'defaultsDeep',
'findFrom': 'find',
'findIndexFrom': 'findIndex',
'findLastFrom': 'findLast',
@@ -258,14 +304,18 @@ exports.remap = {
'invokeArgs': 'invoke',
'invokeArgsMap': 'invokeMap',
'lastIndexOfFrom': 'lastIndexOf',
'mergeAll': 'merge',
'mergeAllWith': 'mergeWith',
'padChars': 'pad',
'padCharsEnd': 'padEnd',
'padCharsStart': 'padStart',
'propertyOf': 'get',
'restFrom': 'rest',
'spreadFrom': 'spread',
'trimChars': 'trim',
'trimCharsEnd': 'trimEnd',
'trimCharsStart': 'trimStart'
'trimCharsStart': 'trimStart',
'zipAll': 'zip'
};
/** Used to track methods that skip fixing their arity. */
@@ -275,6 +325,7 @@ exports.skipFixed = {
'flowRight': true,
'iteratee': true,
'mixin': true,
'rearg': true,
'runInContext': true
};
@@ -300,10 +351,12 @@ exports.skipRearg = {
'overArgs': true,
'partial': true,
'partialRight': true,
'propertyOf': true,
'random': true,
'range': true,
'rangeRight': true,
'subtract': true,
'zip': true,
'zipObject': true
'zipObject': true,
'zipObjectDeep': true
};

View File

@@ -23,7 +23,7 @@ function copy(srcPath, destPath) {
}
/**
* Creates an object of compiled template and base name pairs that match `pattern`.
* Creates an object of base name and compiled template pairs that match `pattern`.
*
* @memberOf file
* @param {string} pattern The glob pattern to be match.

View File

@@ -13,8 +13,8 @@ var uglifyOptions = require('./uglify.options');
* invokes `callback` upon completion. The callback is invoked with one argument:
* (error).
*
* If unspecified, `destPath` is `srcPath` with an extension of `.min.js`. For
* example, a `srcPath` of `path/to/foo.js` would have a `destPath` of `path/to/foo.min.js`.
* If unspecified, `destPath` is `srcPath` with an extension of `.min.js`.
* (e.g. the `destPath` of `path/to/foo.js` would be `path/to/foo.min.js`)
*
* @param {string} srcPath The path of the file to minify.
* @param {string} [destPath] The path to write the file to.

View File

@@ -8,16 +8,14 @@
*/
module.exports = {
'compress': {
'negate_iife': false,
'pure_getters': true,
'unsafe': true,
'warnings': false
},
'mangle': {
'except': ['define']
},
'output': {
'ascii_only': true,
'comments': /^!|@cc_on|@license|@preserve/i,
'comments': /@license/,
'max_line_len': 500
}
};

View File

@@ -6,10 +6,10 @@ var _ = require('lodash');
/**
* Creates a hash object. If a `properties` object is provided, its own
* enumerable properties are assigned to the created object.
* enumerable properties are assigned to the created hash.
*
* @memberOf util
* @param {Object} [properties] The properties to assign to the object.
* @param {Object} [properties] The properties to assign to the hash.
* @returns {Object} Returns the new hash object.
*/
function Hash(properties) {
@@ -22,6 +22,19 @@ function Hash(properties) {
Hash.prototype = Object.create(null);
/**
* This method throws any error it receives.
*
* @memberOf util
* @param {Object} [error] The error object.
*/
function pitch(error) {
if (error != null) {
throw error;
}
}
module.exports = {
'Hash': Hash
'Hash': Hash,
'pitch': pitch
};

View File

@@ -5,7 +5,8 @@ var _ = require('lodash'),
path = require('path'),
webpack = require('webpack');
var file = require('../common/file');
var file = require('../common/file'),
util = require('../common/util');
var basePath = path.join(__dirname, '..', '..'),
distPath = path.join(basePath, 'dist'),
@@ -38,18 +39,18 @@ var mappingConfig = {
/*----------------------------------------------------------------------------*/
function onComplete(error) {
if (error) {
throw error;
}
}
/**
* Creates browser builds of the FP converter and mappings at the `target` path.
*
* @private
* @param {string} target The output directory path.
*/
function build() {
async.series([
_.partial(webpack, mappingConfig),
_.partial(webpack, fpConfig),
file.min(path.join(distPath, filename))
], onComplete);
], util.pitch);
}
build();

View File

@@ -5,7 +5,8 @@ var _ = require('lodash'),
path = require('path');
var file = require('../common/file'),
mapping = require('../common/mapping');
mapping = require('../common/mapping'),
util = require('../common/util');
var templatePath = path.join(__dirname, 'template/doc'),
template = file.globTemplate(path.join(templatePath, '*.jst'));
@@ -18,16 +19,31 @@ var templateData = {
'toFuncList': toFuncList
};
function toArgOrder(array) {
/**
* Converts arranged argument `indexes` into a named argument string
* representation of their order.
*
* @private
* @param {number[]} indexes The arranged argument indexes.
* @returns {string} Returns the named argument string.
*/
function toArgOrder(indexes) {
var reordered = [];
_.each(array, function(newIndex, index) {
_.each(indexes, function(newIndex, index) {
reordered[newIndex] = argNames[index];
});
return '`(' + reordered.join(', ') + ')`';
}
function toFuncList(array) {
var chunks = _.chunk(array.slice().sort(), 5),
/**
* Converts `funcNames` into a chunked list string representation.
*
* @private
* @param {string[]} funcNames The function names.
* @returns {string} Returns the function list string.
*/
function toFuncList(funcNames) {
var chunks = _.chunk(funcNames.slice().sort(), 5),
lastChunk = _.last(chunks),
last = lastChunk ? lastChunk.pop() : undefined;
@@ -51,15 +67,15 @@ function toFuncList(array) {
/*----------------------------------------------------------------------------*/
function onComplete(error) {
if (error) {
throw error;
}
}
/**
* Creates the FP-Guide wiki at the `target` path.
*
* @private
* @param {string} target The output file path.
*/
function build(target) {
target = path.resolve(target);
fs.writeFile(target, template.wiki(templateData), onComplete);
fs.writeFile(target, template.wiki(templateData), util.pitch);
}
build(_.last(process.argv));

View File

@@ -6,7 +6,8 @@ var _ = require('lodash'),
path = require('path');
var file = require('../common/file'),
mapping = require('../common/mapping');
mapping = require('../common/mapping'),
util = require('../common/util');
var templatePath = path.join(__dirname, 'template/modules'),
template = file.globTemplate(path.join(templatePath, '*.jst'));
@@ -42,21 +43,50 @@ var ignored = [
'lodash.min.js'
];
function isAlias(funcName) {
return _.has(mapping.aliasToReal, funcName);
/**
* Checks if `name` is a method alias.
*
* @private
* @param {string} name The name to check.
* @returns {boolean} Returns `true` if `name` is a method alias, else `false`.
*/
function isAlias(name) {
return _.has(mapping.aliasToReal, name);
}
function isCategory(funcName) {
return _.includes(categories, funcName);
/**
* Checks if `name` is a category name.
*
* @private
* @param {string} name The name to check.
* @returns {boolean} Returns `true` if `name` is a category name, else `false`.
*/
function isCategory(name) {
return _.includes(categories, name);
}
function isThru(funcName) {
return !_.includes(aryMethods, funcName);
/**
* Checks if `name` belongs to a method that's passed thru and not wrapped.
*
* @private
* @param {string} name The name to check.
* @returns {boolean} Returns `true` if `name` is of a pass thru method,
* else `false`.
*/
function isThru(name) {
return !_.includes(aryMethods, name);
}
/**
* Gets metadata for `func`.
*
* @private
* @param {Function} func The function to query.
* @returns {*} Returns the metadata for `func`.
*/
function getTemplate(moduleName) {
var data = {
'name': _.result(mapping.aliasToReal, moduleName, moduleName),
'name': _.get(mapping.aliasToReal, moduleName, moduleName),
'mapping': mapping
};
@@ -74,12 +104,12 @@ function getTemplate(moduleName) {
/*----------------------------------------------------------------------------*/
function onComplete(error) {
if (error) {
throw error;
}
}
/**
* Creates FP modules at the `target` path.
*
* @private
* @param {string} target The output directory path.
*/
function build(target) {
target = path.resolve(target);
@@ -114,7 +144,7 @@ function build(target) {
actions.push(file.write(path.join(target, 'fp.js'), template.fp()));
actions.push(file.write(path.join(fpPath, 'convert.js'), template.convert()));
async.series(actions, onComplete);
async.series(actions, util.pitch);
}
build(_.last(process.argv));

View File

@@ -14,15 +14,15 @@ In a browser:
<script>
// Loading `lodash.fp.js` converts `_` to its fp variant.
_.defaults({ 'a': 2, 'b': 2 })({ 'a': 1 });
// { 'a: 1, 'b': 2 }
// { 'a: 1, 'b': 2 }
// Use `noConflict` to restore the pre-fp variant.
var fp = _.noConflict();
_.defaults({ 'a': 1 }, { 'a': 2, 'b': 2 });
// { 'a: 1, 'b': 2 }
// { 'a: 1, 'b': 2 }
fp.defaults({ 'a': 2, 'b': 2 })({ 'a': 1 });
// { 'a: 1, 'b': 2 }
// { 'a: 1, 'b': 2 }
</script>
```
@@ -51,12 +51,12 @@ Iteratee arguments are capped to avoid gotchas with variadic iteratees.
// The `lodash/map` iteratee receives three arguments:
// (value, index|key, collection)
_.map(['6', '8', '10'], parseInt);
// [6, NaN, 2]
// [6, NaN, 2]
// The `lodash/fp/map` iteratee is capped at one argument:
// (value)
fp.map(parseInt)(['6', '8', '10']);
// [6, 8, 10]
// [6, 8, 10]
```
Methods that cap iteratees to one argument:<br>
@@ -73,13 +73,13 @@ Methods have fixed arities to support auto-currying.
```js
// `lodash/padStart` accepts an optional `chars` param.
_.padStart('a', 3, '-')
// '--a'
// '--a'
// `lodash/fp/padStart` does not.
fp.padStart(3)('a');
// ' a'
// ' a'
fp.padCharsStart('-')(3)('a');
// '--a'
// '--a'
```
Methods with a fixed arity of one:<br>
@@ -102,13 +102,13 @@ Method arguments are rearranged to make composition easier.
// (collection, iteratee)
var compact = _.partial(_.filter, _, Boolean);
compact(['a', null, 'c']);
// ['a', 'c']
// ['a', 'c']
// `lodash/fp/filter` is iteratee-first data-last:
// (iteratee, collection)
var compact = fp.filter(Boolean);
compact(['a', null, 'c']);
// ['a', 'c']
// ['a', 'c']
```
##### Most methods follow these rules
@@ -124,7 +124,7 @@ A fixed arity of four has an argument order of:<br>
##### Exceptions to the rules
Methods that accept an array of arguments as their second parameter:<br>
Methods that accept an array of arguments:<br>
<%= toFuncList(_.keys(mapping.methodSpread)) %>
Methods with unchanged argument orders:<br>
@@ -161,11 +161,11 @@ arguments of the curried returned function.
```js
// The equivalent of `2 > 5`.
_.gt(2)(5);
// false
// false
// The equivalent of `_.gt(5, 2)` or `5 > 2`.
_.gt(_, 2)(5);
// true
// true
```
## Chaining

View File

@@ -10,5 +10,6 @@ module.exports = {
'keys': require('../_baseKeys'),
'rearg': require('../rearg'),
'spread': require('../spread'),
'toInteger': require('../toInteger'),
'toPath': require('../toPath')
};

View File

@@ -1,5 +1,5 @@
var convert = require('./convert'),
func = convert('<%= name %>', require('../<%= _.result(mapping.remap, name, name) %>'));
func = convert('<%= name %>', require('../<%= _.get(mapping.remap, name, name) %>'));
func.placeholder = require('./placeholder');
module.exports = func;

View File

@@ -1,5 +1,5 @@
var convert = require('./convert'),
func = convert('<%= name %>', require('../<%= _.result(mapping.remap, name, name) %>'), require('./_falseOptions'));
func = convert('<%= name %>', require('../<%= _.get(mapping.remap, name, name) %>'), require('./_falseOptions'));
func.placeholder = require('./placeholder');
module.exports = func;

View File

@@ -3,7 +3,8 @@
var async = require('async'),
path = require('path');
var file = require('../common/file');
var file = require('../common/file'),
util = require('../common/util');
var basePath = path.join(__dirname, '..', '..'),
distPath = path.join(basePath, 'dist'),
@@ -14,17 +15,17 @@ var baseLodash = path.join(basePath, filename),
/*----------------------------------------------------------------------------*/
function onComplete(error) {
if (error) {
throw error;
}
}
/**
* Creates browser builds of Lodash at the `target` path.
*
* @private
* @param {string} target The output directory path.
*/
function build() {
async.series([
file.copy(baseLodash, distLodash),
file.min(distLodash)
], onComplete);
], util.pitch);
}
build();

View File

@@ -5,6 +5,8 @@ var _ = require('lodash'),
fs = require('fs-extra'),
path = require('path');
var util = require('../common/util');
var basePath = path.join(__dirname, '..', '..'),
docPath = path.join(basePath, 'doc'),
readmePath = path.join(docPath, 'README.md');
@@ -14,42 +16,68 @@ var pkg = require('../../package.json'),
var config = {
'base': {
'entryLinks': [
'<% if (name == "templateSettings" || !/^(?:methods|properties|seq)$/i.test(category)) {' +
'print("[&#x24C3;](https://www.npmjs.com/package/lodash." + name.toLowerCase() + " \\"See the npm package\\")")' +
'} %>'
],
'path': path.join(basePath, 'lodash.js'),
'title': '<a href="https://lodash.com/">lodash</a> <span>v' + version + '</span>',
'toc': 'categories',
'url': 'https://github.com/lodash/lodash/blob/' + version + '/lodash.js'
},
'github': {
'hash': 'github'
'style': 'github',
'sublinks': [npmLink('&#x24C3;', 'See the npm package')]
},
'site': {
'tocLink': '#docs'
'entryLink': '<a href="${entryHref}" class="fa fa-link"></a>',
'sourceLink': '[source](${sourceHref})',
'tocHref': '',
'tocLink': '',
'sublinks': [npmLink('npm package')]
}
};
function postprocess(string) {
/**
* Composes a npm link from `text` and optional `title`.
*
* @private
* @param {string} text The link text.
* @param {string} [title] The link title.
* @returns {string} Returns the composed npm link.
*/
function npmLink(text, title) {
return (
'<% if (name == "templateSettings" || !/^(?:methods|properties|seq)$/i.test(category)) {' +
'print(' +
'"[' + text + '](https://www.npmjs.com/package/lodash." + name.toLowerCase() + ' +
'"' + (title == null ? '' : ' \\"' + title + '\\"') + ')"' +
');' +
'} %>'
);
}
/**
* Post-process `markdown` to make adjustments.
*
* @private
* @param {string} markdown The markdown to process.
* @returns {string} Returns the processed markdown.
*/
function postprocess(markdown) {
// Wrap symbol property identifiers in brackets.
return string.replace(/\.(Symbol\.(?:[a-z]+[A-Z]?)+)/g, '[$1]');
return markdown.replace(/\.(Symbol\.(?:[a-z]+[A-Z]?)+)/g, '[$1]');
}
/*----------------------------------------------------------------------------*/
function onComplete(error) {
if (error) {
throw error;
}
}
/**
* Creates the documentation markdown formatted for 'github' or 'site'.
*
* @private
* @param {string} type The format type.
*/
function build(type) {
var options = _.defaults({}, config.base, config[type]),
markdown = docdown(options);
fs.writeFile(readmePath, postprocess(markdown), onComplete);
fs.writeFile(readmePath, postprocess(markdown), util.pitch);
}
build(_.last(process.argv));

View File

@@ -4,7 +4,8 @@ var _ = require('lodash'),
async = require('async'),
path = require('path');
var file = require('../common/file');
var file = require('../common/file'),
util = require('../common/util');
var basePath = path.join(__dirname, '..', '..'),
distPath = path.join(basePath, 'dist');
@@ -17,18 +18,18 @@ var filePairs = [
/*----------------------------------------------------------------------------*/
function onComplete(error) {
if (error) {
throw error;
}
}
/**
* Creates supplementary Lodash modules at the `target` path.
*
* @private
* @param {string} target The output directory path.
*/
function build(target) {
var actions = _.map(filePairs, function(pair) {
return file.copy(pair[0], path.join(target, pair[1]));
});
async.series(actions, onComplete);
async.series(actions, util.pitch);
}
build(_.last(process.argv));

73
lib/main/build-site.js Normal file
View File

@@ -0,0 +1,73 @@
'use strict';
var _ = require('lodash'),
fs = require('fs'),
marky = require('marky-markdown'),
path = require('path'),
util = require('../common/util');
var basePath = path.join(__dirname, '..', '..'),
docPath = path.join(basePath, 'doc'),
readmePath = path.join(docPath, 'README.md');
function build(type) {
var markdown = fs
// Load markdown.
.readFileSync(readmePath, 'utf8')
// Uncomment docdown HTML hints.
.replace(/(<)!--\s*|\s*--(>)/g, '$1$2');
var $ = marky(markdown, { 'sanitize': false }),
$header = $('h1').first().remove(),
version = _.trim($header.find('span').first().text()).slice(1);
// Remove docdown horizontal rules.
$('hr').remove();
// Remove marky-markdown additions.
$('[id^="user-content-"]')
.attr('class', null)
.attr('id', null);
$(':header:not(h3) > a').each(function() {
var $a = $(this);
$a.replaceWith($a.html());
});
// Fix marky-markdown wrapping around headers.
$('p:empty + h3').prev().remove();
$('h3 ~ p:empty').each(function() {
var $p = $(this),
node = this.previousSibling;
while ((node = node.previousSibling) && node.name != 'h3' && node.name != 'p') {
$p.prepend(node.nextSibling);
}
});
$('h3 code em').parent().each(function() {
var $code = $(this);
$code.html($code.html().replace(/<\/?em>/g, '_'));
});
var html = [
// Append YAML front matter.
'---',
'id: docs',
'layout: docs',
'title: Lodash Documentation',
'version: ' + (version || null),
'---',
'',
// Wrap in raw tags to avoid Liquid template tag processing.
'{% raw %}',
_.trim($.html()),
'{% endraw %}',
''
].join('\n');
fs.writeFile(path.join(docPath, version + '.html'), html, util.pitch);
}
build();

1765
lodash.js

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"name": "lodash",
"version": "4.13.0",
"version": "4.14.2",
"license": "MIT",
"private": true,
"main": "lodash.js",
@@ -13,7 +13,7 @@
"doc": "node lib/main/build-doc github && npm run test:doc",
"doc:fp": "node lib/fp/build-doc",
"doc:site": "node lib/main/build-doc site",
"prepublish": "npm run build",
"doc:sitehtml": "optional-dev-dependency marky-markdown@^8.0.0 && npm run doc:site && node lib/main/build-site",
"pretest": "npm run build",
"style": "npm run style:main && npm run style:fp && npm run style:perf && npm run style:test",
"style:fp": "jscs fp/*.js lib/**/*.js",
@@ -27,29 +27,31 @@
"validate": "npm run style && npm run test"
},
"devDependencies": {
"async": "^1.5.2",
"benchmark": "^2.1.0",
"async": "^2.0.1",
"benchmark": "^2.1.1",
"chalk": "^1.1.3",
"codecov.io": "~0.1.6",
"coveralls": "^2.11.9",
"coveralls": "^2.11.12",
"curl-amd": "~0.8.12",
"docdown": "~0.5.1",
"dojo": "^1.11.1",
"docdown": "~0.7.1",
"dojo": "^1.11.2",
"ecstatic": "^1.4.1",
"fs-extra": "~0.30.0",
"glob": "^7.0.3",
"istanbul": "0.4.3",
"jquery": "^2.2.4",
"jscs": "^3.0.1",
"lodash": "4.11.2",
"markdown-doctest": "^0.6.0",
"glob": "^7.0.5",
"istanbul": "0.4.4",
"jquery": "^3.1.0",
"jscs": "^3.0.7",
"lodash": "4.14.1",
"lodash-doc-globals": "^0.1.1",
"markdown-doctest": "^0.8.1",
"optional-dev-dependency": "^1.3.0",
"platform": "^1.3.1",
"qunit-extras": "^2.0.0",
"qunitjs": "~1.23.1",
"request": "^2.69.0",
"qunit-extras": "^2.1.0",
"qunitjs": "^2.0.1",
"request": "^2.74.0",
"requirejs": "^2.2.0",
"sauce-tunnel": "^2.4.0",
"uglify-js": "2.6.2",
"sauce-tunnel": "^2.5.0",
"uglify-js": "2.7.0",
"webpack": "^1.13.1"
}
}

View File

@@ -15,27 +15,8 @@
/*--------------------------------------------------------------------------*/
/**
* Registers an event listener on an element.
*
* @private
* @param {Element} element The element.
* @param {string} eventName The name of the event.
* @param {Function} handler The event handler.
* @returns {Element} The element.
*/
function addListener(element, eventName, handler) {
if (typeof element.addEventListener != 'undefined') {
element.addEventListener(eventName, handler, false);
} else if (typeof element.attachEvent != 'undefined') {
element.attachEvent('on' + eventName, handler);
}
}
/*--------------------------------------------------------------------------*/
// Initialize controls.
addListener(window, 'load', function() {
addEventListener('load', function() {
function eventHandler(event) {
var buildIndex = buildList.selectedIndex,
otherIndex = otherList.selectedIndex,
@@ -96,8 +77,8 @@
return -1;
}());
addListener(buildList, 'change', eventHandler);
addListener(otherList, 'change', eventHandler);
buildList.addEventListener('change', eventHandler);
otherList.addEventListener('change', eventHandler);
});
// The lodash build file path.

View File

@@ -10,16 +10,27 @@
height: 100%;
}
#FirebugUI {
top: 2em;
top: 2.5em;
}
#perf-toolbar {
background-color: #EEE;
color: #5E740B;
font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
font-size: small;
padding: 0.5em 0 0.5em 2em;
padding: 0.5em 1em 0.5em 1em;
overflow: hidden;
}
#perf-toolbar label {
display: inline-block;
margin-right: 0.5em;
}
#perf-toolbar span {
display: inline-block;
float: right;
line-height: 2.1em;
margin-left: 1em;
margin-top: 0;
}
</style>
</head>
<body>

View File

@@ -1,4 +1,5 @@
;(function() {
'use strict';
/** Used to access the Firebug Lite panel (set by `run`). */
var fbPanel;

View File

@@ -15,27 +15,8 @@
/*--------------------------------------------------------------------------*/
/**
* Registers an event listener on an element.
*
* @private
* @param {Element} element The element.
* @param {string} eventName The name of the event.
* @param {Function} handler The event handler.
* @returns {Element} The element.
*/
function addListener(element, eventName, handler) {
if (typeof element.addEventListener != 'undefined') {
element.addEventListener(eventName, handler, false);
} else if (typeof element.attachEvent != 'undefined') {
element.attachEvent('on' + eventName, handler);
}
}
/*--------------------------------------------------------------------------*/
// Initialize controls.
addListener(window, 'load', function() {
addEventListener('load', function() {
function eventHandler(event) {
var buildIndex = buildList.selectedIndex,
loaderIndex = loaderList.selectedIndex,
@@ -59,8 +40,8 @@
setTimeout(init, 15);
return;
}
toolbar.appendChild(span1);
toolbar.appendChild(span2);
toolbar.insertBefore(span2, toolbar.lastChild);
toolbar.insertBefore(span1, span2);
buildList.selectedIndex = (function() {
switch (build) {
@@ -84,12 +65,11 @@
return -1;
}());
addListener(buildList, 'change', eventHandler);
addListener(loaderList, 'change', eventHandler);
buildList.addEventListener('change', eventHandler);
loaderList.addEventListener('change', eventHandler);
}
var span1 = document.createElement('span');
span1.style.cssText = 'float:right';
span1.innerHTML =
'<label for="qunit-build">Build: </label>' +
'<select id="qunit-build">' +
@@ -100,7 +80,6 @@
'</select>';
var span2 = document.createElement('span');
span2.style.cssText = 'float:right';
span2.innerHTML =
'<label for="qunit-loader">Loader: </label>' +
'<select id="qunit-loader">' +
@@ -110,6 +89,12 @@
'<option value="requirejs">RequireJS</option>' +
'</select>';
span1.style.cssText =
span2.style.cssText = 'display:inline-block;float:right;line-height:2.1em;margin-left:1em;margin-top:0;';
span1.firstChild.style.cssText =
span2.firstChild.style.cssText = 'display:inline-block;margin-right:.5em;';
var buildList = span1.lastChild,
loaderList = span2.lastChild;

View File

@@ -1,3 +1,5 @@
'use strict';
self.console || (self.console = { 'log': function() {} });
addEventListener('message', function(e) {

View File

@@ -104,10 +104,10 @@ var browserNameMap = {
/** List of platforms to load the runner on. */
var platforms = [
['Linux', 'android', '5.1'],
['Windows 10', 'chrome', '51'],
['Windows 10', 'chrome', '50'],
['Windows 10', 'chrome', '49'],
['Windows 10', 'firefox', '47'],
['Windows 10', 'firefox', '46'],
['Windows 10', 'firefox', '45'],
['Windows 10', 'microsoftedge', '13'],
['Windows 10', 'internet explorer', '11'],
['Windows 8', 'internet explorer', '10'],
@@ -294,7 +294,7 @@ function optionToArray(name, string) {
function optionToValue(name, string) {
var result = string.match(RegExp('^' + name + '(?:=([\\s\\S]+))?$'));
if (result) {
result = _.result(result, 1);
result = _.get(result, 1);
result = result ? _.trim(result) : true;
}
if (result === 'false') {
@@ -366,8 +366,8 @@ function onJobStart(error, res, body) {
if (this.stopping) {
return;
}
var statusCode = _.result(res, 'statusCode'),
taskId = _.first(_.result(body, 'js tests'));
var statusCode = _.get(res, 'statusCode'),
taskId = _.first(_.get(body, 'js tests'));
if (error || !taskId || statusCode != 200) {
if (this.attempts < this.retries) {
@@ -408,19 +408,19 @@ function onJobStatus(error, res, body) {
if (!this.running || this.stopping) {
return;
}
var completed = _.result(body, 'completed', false),
data = _.first(_.result(body, 'js tests')),
var completed = _.get(body, 'completed', false),
data = _.first(_.get(body, 'js tests')),
elapsed = (_.now() - this.timestamp) / 1000,
jobId = _.result(data, 'job_id', null),
jobResult = _.result(data, 'result', null),
jobStatus = _.result(data, 'status', ''),
jobUrl = _.result(data, 'url', null),
jobId = _.get(data, 'job_id', null),
jobResult = _.get(data, 'result', null),
jobStatus = _.get(data, 'status', ''),
jobUrl = _.get(data, 'url', null),
expired = (elapsed >= queueTimeout && !_.includes(jobStatus, 'in progress')),
options = this.options,
platform = options.platforms[0];
if (_.isObject(jobResult)) {
var message = _.result(jobResult, 'message');
var message = _.get(jobResult, 'message');
} else {
if (typeof jobResult == 'string') {
message = jobResult;
@@ -442,7 +442,7 @@ function onJobStatus(error, res, body) {
}
var description = browserName(platform[1]) + ' ' + platform[2] + ' on ' + _.startCase(platform[0]),
errored = !jobResult || !jobResult.passed || reError.test(message) || reError.test(jobStatus),
failures = _.result(jobResult, 'failed'),
failures = _.get(jobResult, 'failed'),
label = options.name + ':',
tunnel = this.tunnel;
@@ -463,7 +463,7 @@ function onJobStatus(error, res, body) {
return;
}
else {
if (typeof message == 'undefined') {
if (message === undefined) {
message = 'Results are unavailable. ' + details;
}
console.error(label, description, chalk.red('failed') + ';', message);

View File

@@ -1,4 +1,5 @@
;(function() {
'use strict';
/** Used as a safe reference for `undefined` in pre-ES5 environments. */
var undefined;
@@ -22,6 +23,7 @@
/** Math helpers. */
var add = function(x, y) { return x + y; },
isEven = function(n) { return n % 2 == 0; },
isEvenIndex = function(n, index) { return isEven(index); },
square = function(n) { return n * n; };
// Leak to avoid sporadic `noglobals` fails on Edge in Sauce Labs.
@@ -140,11 +142,8 @@
if (!document) {
var array = [1, 2, 3, 4],
lodash = convert({ 'remove': _.remove }, allFalseOptions);
var actual = lodash.remove(array, function(n, index) {
return isEven(index);
});
lodash = convert({ 'remove': _.remove }, allFalseOptions),
actual = lodash.remove(array, isEvenIndex);
assert.deepEqual(array, [2, 4]);
assert.deepEqual(actual, [1, 3]);
@@ -159,11 +158,8 @@
assert.expect(3);
var array = [1, 2, 3, 4],
lodash = convert(_.runInContext(), allFalseOptions);
var actual = lodash.remove(array, function(n, index) {
return isEven(index);
});
lodash = convert(_.runInContext(), allFalseOptions),
actual = lodash.remove(array, isEvenIndex);
assert.deepEqual(array, [2, 4]);
assert.deepEqual(actual, [1, 3]);
@@ -175,11 +171,8 @@
var array = [1, 2, 3, 4],
runInContext = convert('runInContext', _.runInContext, allFalseOptions),
lodash = runInContext();
var actual = lodash.remove(array, function(n, index) {
return isEven(index);
});
lodash = runInContext(),
actual = lodash.remove(array, isEvenIndex);
assert.deepEqual(array, [2, 4]);
assert.deepEqual(actual, [1, 3]);
@@ -192,7 +185,7 @@
var array = [1, 2, 3, 4],
value = _.clone(array),
remove = convert('remove', _.remove, { 'cap': false }),
actual = remove(function(n, index) { return isEven(index); })(value);
actual = remove(isEvenIndex)(value);
assert.deepEqual(value, [1, 2, 3, 4]);
assert.deepEqual(actual, [2, 4]);
@@ -295,11 +288,8 @@
var array = [1, 2, 3, 4],
lodash = func(allFalseOptions),
remove = isFp ? lodash.remove : lodash;
var actual = remove(array, function(n, index) {
return isEven(index);
});
remove = isFp ? lodash.remove : lodash,
actual = remove(array, isEvenIndex);
assert.deepEqual(array, [2, 4]);
assert.deepEqual(actual, [1, 3]);
@@ -311,11 +301,8 @@
var array = [1, 2, 3, 4],
lodash = func({ 'cap': false }),
remove = (isFp ? lodash.remove : lodash).convert({ 'rearg': false });
var actual = remove(array)(function(n, index) {
return isEven(index);
});
remove = (isFp ? lodash.remove : lodash).convert({ 'rearg': false }),
actual = remove(array)(isEvenIndex);
assert.deepEqual(array, [1, 2, 3, 4]);
assert.deepEqual(actual, [2, 4]);
@@ -344,7 +331,7 @@
var aryCap = index + 1;
var methodNames = _.filter(mapping.aryMethod[aryCap], function(methodName) {
var key = _.result(mapping.remap, methodName, methodName),
var key = _.get(mapping.remap, methodName, methodName),
arity = _[key].length;
return arity != 0 && arity < aryCap;
@@ -384,7 +371,7 @@
'method', 'methodOf', 'rest', 'runInContext'
];
var exceptions = funcMethods.concat('mixin', 'template'),
var exceptions = funcMethods.concat('mixin', 'nthArg', 'template'),
expected = _.map(mapping.aryMethod[1], _.constant(true));
var actual = _.map(mapping.aryMethod[1], function(methodName) {
@@ -413,7 +400,7 @@
'wrap'
];
var exceptions = _.difference(funcMethods.concat('matchesProperty'), ['cloneDeepWith', 'cloneWith', 'delay']),
var exceptions = _.without(funcMethods.concat('matchesProperty'), 'delay'),
expected = _.map(mapping.aryMethod[2], _.constant(true));
var actual = _.map(mapping.aryMethod[2], function(methodName) {
@@ -727,6 +714,20 @@
});
});
_.each(['assignAll', 'assignInAll', 'defaultsAll', 'defaultsDeepAll', 'mergeAll'], function(methodName) {
var func = fp[methodName];
QUnit.test('`fp.' + methodName + '` should not mutate values', function(assert) {
assert.expect(2);
var objects = [{ 'a': 1 }, { 'b': 2 }],
actual = func(objects);
assert.deepEqual(objects[0], { 'a': 1 });
assert.deepEqual(actual, { 'a': 1, 'b': 2 });
});
});
/*--------------------------------------------------------------------------*/
QUnit.module('assignWith methods');
@@ -749,13 +750,36 @@
QUnit.test('`fp.' + methodName + '` should not mutate values', function(assert) {
assert.expect(2);
var object = { 'a': 1 };
var objects = [{ 'a': 1 }, { 'b': 2 }],
actual = func(_.nthArg(1))(objects[0])(objects[1]);
var actual = func(function(objValue, srcValue) {
return srcValue;
})(object)({ 'b': 2 });
assert.deepEqual(objects[0], { 'a': 1 });
assert.deepEqual(actual, { 'a': 1, 'b': 2 });
});
});
assert.deepEqual(object, { 'a': 1 });
_.each(['assignAllWith', 'assignInAllWith', 'extendAllWith'], function(methodName) {
var func = fp[methodName];
QUnit.test('`fp.' + methodName + '` should provide the correct `customizer` arguments', function(assert) {
assert.expect(1);
var args;
func(function() {
args || (args = _.map(arguments, _.cloneDeep));
})([{ 'a': 1 }, { 'b': 2 }]);
assert.deepEqual(args, [undefined, 2, 'b', { 'a': 1 }, { 'b': 2 }]);
});
QUnit.test('`fp.' + methodName + '` should not mutate values', function(assert) {
assert.expect(2);
var objects = [{ 'a': 1 }, { 'b': 2 }],
actual = func(_.nthArg(1))(objects);
assert.deepEqual(objects[0], { 'a': 1 });
assert.deepEqual(actual, { 'a': 1, 'b': 2 });
});
});
@@ -833,6 +857,19 @@
/*--------------------------------------------------------------------------*/
QUnit.module('fp.defaultTo');
(function() {
QUnit.test('should have an argument order of `defaultValue` then `value`', function(assert) {
assert.expect(2);
assert.strictEqual(fp.defaultTo(1)(0), 0);
assert.strictEqual(fp.defaultTo(1)(undefined), 1);
});
}());
/*--------------------------------------------------------------------------*/
QUnit.module('fp.difference');
(function() {
@@ -910,10 +947,9 @@
var object = { 'a': 1 },
extend = convert('extend', _.extend),
value = _.clone(object),
actual = extend(value)(new Foo);
actual = extend(object)(new Foo);
assert.deepEqual(value, object);
assert.deepEqual(object, { 'a': 1 });
assert.deepEqual(actual, { 'a': 1, 'b': 2 });
});
}());
@@ -1012,8 +1048,8 @@
var array = [1, 2, 3, 1, 2, 3];
assert.deepEqual(func(resolve(1))(2)(array), 3);
assert.deepEqual(func(resolve(2))(-3)(array), 4);
assert.strictEqual(func(resolve(1))(2)(array), 3);
assert.strictEqual(func(resolve(2))(-3)(array), 4);
});
});
@@ -1030,8 +1066,8 @@
var array = [1, 2, 3, 1, 2, 3];
assert.deepEqual(func(resolve(2))(3)(array), 1);
assert.deepEqual(func(resolve(3))(-3)(array), 2);
assert.strictEqual(func(resolve(2))(3)(array), 1);
assert.strictEqual(func(resolve(3))(-3)(array), 2);
});
});
@@ -1273,7 +1309,7 @@
var args,
iteration = 0,
objects = [{ 'a': 1 }, { 'a': 2 }],
stack = { '__data__': { '__data__': [objects] } },
stack = { '__data__': { '__data__': [objects, objects.slice().reverse()] } },
expected = [1, 2, 'a', objects[0], objects[1], stack];
fp.isEqualWith(function() {
@@ -1409,11 +1445,11 @@
var args,
stack = { '__data__': { '__data__': [] } },
expected = [[1], [2, 3], 'a', { 'a': [1] }, { 'a': [2, 3] }, stack];
expected = [[1, 2], [3], 'a', { 'a': [1, 2] }, { 'a': [3] }, stack];
fp.mergeWith(function() {
args || (args = _.map(arguments, _.cloneDeep));
})({ 'a': [1] })({ 'a': [2, 3] });
})({ 'a': [1, 2] })({ 'a': [3] });
args[5] = _.omitBy(args[5], _.isFunction);
args[5].__data__ = _.omitBy(args[5].__data__, _.isFunction);
@@ -1424,17 +1460,44 @@
QUnit.test('should not mutate values', function(assert) {
assert.expect(2);
var object = { 'a': { 'b': 2, 'c': 3 } };
object.a.b = [1];
var objects = [{ 'a': [1, 2] }, { 'a': [3] }],
actual = fp.mergeWith(_.noop, objects[0], objects[1]);
var actual = fp.mergeWith(function(objValue, srcValue) {
if (_.isArray(objValue)) {
return objValue.concat(srcValue);
}
}, object, { 'a': { 'b': [2, 3] } });
assert.deepEqual(objects[0], { 'a': [1, 2] });
assert.deepEqual(actual, { 'a': [3, 2] });
});
}());
assert.deepEqual(object, { 'a': { 'b': [1], 'c': 3 } });
assert.deepEqual(actual, { 'a': { 'b': [1, 2, 3], 'c': 3 } });
/*--------------------------------------------------------------------------*/
QUnit.module('fp.mergeAllWith');
(function() {
QUnit.test('should provide the correct `customizer` arguments', function(assert) {
assert.expect(1);
var args,
stack = { '__data__': { '__data__': [] } },
expected = [[1, 2], [3], 'a', { 'a': [1, 2] }, { 'a': [3] }, stack];
fp.mergeAllWith(function() {
args || (args = _.map(arguments, _.cloneDeep));
})([{ 'a': [1, 2] }, { 'a': [3] }]);
args[5] = _.omitBy(args[5], _.isFunction);
args[5].__data__ = _.omitBy(args[5].__data__, _.isFunction);
assert.deepEqual(args, expected);
});
QUnit.test('should not mutate values', function(assert) {
assert.expect(2);
var objects = [{ 'a': [1, 2] }, { 'a': [3] }],
actual = fp.mergeAllWith(_.noop, objects);
assert.deepEqual(objects[0], { 'a': [1, 2] });
assert.deepEqual(actual, { 'a': [3, 2] });
});
}());
@@ -1515,11 +1578,27 @@
Foo.mixin = object.mixin;
Foo.mixin(source);
assert.strictEqual(typeof Foo.a, 'function');
assert.ok('a' in Foo);
assert.notOk('a' in Foo.prototype);
object.mixin(source);
assert.strictEqual(typeof object.a, 'function');
assert.ok('a' in object);
});
}());
/*--------------------------------------------------------------------------*/
QUnit.module('fp.nthArg');
(function() {
QUnit.test('should return a curried function', function(assert) {
assert.expect(2);
var func = fp.nthArg(1);
assert.strictEqual(func(1)(2), 2);
func = fp.nthArg(-1);
assert.strictEqual(func(1), 1);
});
}());
@@ -1621,6 +1700,21 @@
/*--------------------------------------------------------------------------*/
QUnit.module('fp.propertyOf');
(function() {
QUnit.test('should be curried', function(assert) {
assert.expect(2);
var object = { 'a': 1 };
assert.strictEqual(fp.propertyOf(object, 'a'), 1);
assert.strictEqual(fp.propertyOf(object)('a'), 1);
});
}());
/*--------------------------------------------------------------------------*/
QUnit.module('fp.pull');
(function() {
@@ -1701,6 +1795,30 @@
/*--------------------------------------------------------------------------*/
QUnit.module('fp.rearg');
(function() {
function fn(a, b, c) {
return [a, b, c];
}
QUnit.test('should be curried', function(assert) {
assert.expect(1);
var rearged = fp.rearg([1, 2, 0])(fn);
assert.deepEqual(rearged('c', 'a', 'b'), ['a', 'b', 'c']);
});
QUnit.test('should return a curried function', function(assert) {
assert.expect(1);
var rearged = fp.rearg([1, 2, 0], fn);
assert.deepEqual(rearged('c')('a')('b'), ['a', 'b', 'c']);
});
}());
/*--------------------------------------------------------------------------*/
QUnit.module('reduce methods');
_.each(['reduce', 'reduceRight'], function(methodName) {
@@ -1951,11 +2069,8 @@
QUnit.test('should work with an `iteratee` argument', function(assert) {
assert.expect(1);
var expected = objects.slice(0, 3);
var actual = fp.uniqBy(function(object) {
return object.a;
})(objects);
var expected = objects.slice(0, 3),
actual = fp.uniqBy(_.property('a'))(objects);
assert.deepEqual(actual, expected);
});
@@ -2135,6 +2250,18 @@
/*--------------------------------------------------------------------------*/
QUnit.module('fp.zipAll');
(function() {
QUnit.test('should zip together an array of arrays', function(assert) {
assert.expect(1);
assert.deepEqual(fp.zipAll([[1, 2], [3, 4], [5, 6]]), [[1, 3, 5], [2, 4, 6]]);
});
}());
/*--------------------------------------------------------------------------*/
QUnit.module('fp.zipObject');
(function() {
@@ -2169,5 +2296,6 @@
if (!document) {
QUnit.config.noglobals = true;
QUnit.load();
QUnit.start();
}
}.call(this));

File diff suppressed because it is too large Load Diff

View File

@@ -56,9 +56,6 @@
'works on an arguments object',
'can handle very deep arrays'
],
'head': [
'is an alias for first'
],
'indexOf': [
"sorted indexOf doesn't uses binary search",
'0'
@@ -86,9 +83,6 @@
'an array of pairs zipped together into an object',
'an object converted to pairs and back to an object'
],
'range': [
'range with two arguments a &amp; b, b&lt;a generates an empty array'
],
'rest': [
'returns the whole array when index is 0',
'returns elements starting at the given index',
@@ -129,7 +123,8 @@
'Iterating objects with sketchy length properties': true,
'Resistant to collection length and properties changing while iterating': true,
'countBy': [
'true'
'{}',
'[{}]'
],
'each': [
'context object property accessed'
@@ -141,24 +136,17 @@
],
'filter': [
'given context',
'[{"a":1,"b":2},{"a":1,"b":3},{"a":1,"b":4}]',
'[{"a":1,"b":2},{"a":2,"b":2}]',
'Empty object accepts all items',
'OO-filter'
],
'find': [
'{"a":1,"b":4}',
'undefined when not found',
'undefined when searching empty list',
'works on objects',
'undefined',
'called with context'
],
'findWhere': [
'checks properties given function'
],
'groupBy': [
'true'
'{}',
'[{}]'
],
'includes': [
"doesn't delegate to binary search"
@@ -198,8 +186,7 @@
'partition': [
'can reference the array index',
'Died on test #8',
'partition takes a context argument',
'function(a){[code]}'
'partition takes a context argument'
],
'pluck': [
'[1]'
@@ -223,15 +210,15 @@
'checks properties given function'
],
'Can use various collection methods on NodeLists': [
'<span id="id2"></span>',
'<span id="id1"></span>'
'<span id="id2"></span>'
]
},
'Functions': {
'debounce asap': true,
'debounce asap cancel': true,
'debounce after system time is set backwards': true,
'debounce asap recursively': true,
'debounce after system time is set backwards': true,
'debounce re-entrant': true,
'throttle repeatedly with results': true,
'more throttle does not trigger leading call when leading is set to false': true,
'throttle does not trigger trailing call when trailing is set to false': true,
@@ -245,17 +232,17 @@
'bindAll': [
'throws an error for bindAll with no functions named'
],
'debounce': [
'incr was debounced'
],
'iteratee': [
'"bbiz"',
'"foo"',
'1'
],
'memoize': [
'{"bar":"BAR","foo":"FOO"}',
'Died on test #8'
],
'partial':[
'can partially apply with placeholders',
'accepts more arguments than the number of placeholders',
'accepts fewer arguments than the number of placeholders',
'unfilled placeholders are undefined',
'keeps prototype',
'allows the placeholder to be swapped out'
]
},
'Objects': {
@@ -265,10 +252,6 @@
'is not fooled by sparse arrays with additional properties',
'[]'
],
'defaults': [
'defaults skips nulls',
'defaults skips undefined'
],
'extend': [
'extending null results in null',
'extending undefined results in undefined'
@@ -285,15 +268,13 @@
'Commutative equality is implemented for `0` and `-0`',
'`new Number(0)` and `-0` are not equal',
'Commutative equality is implemented for `new Number(0)` and `-0`',
'Invalid dates are not equal',
'false'
],
'isFinite': [
'Numeric strings are numbers',
'Number instances can be finite'
],
'isMatch': [
'doesnt falsey match constructor on undefined/null'
],
'isSet': [
'Died on test #9'
],
@@ -309,10 +290,6 @@
'called with context',
'mapValue identity'
],
'matcher': [
'null matches null',
'treats primitives as empty'
],
'omit': [
'can accept a predicate',
'function is given context'
@@ -323,7 +300,6 @@
]
},
'Utility': {
'noConflict (node vm)': true,
'now': [
'Produces the correct time in milliseconds'
],

View File

@@ -394,6 +394,7 @@
var Model = Backbone.Model = function(attributes, options) {
var attrs = attributes || {};
options || (options = {});
this.preinitialize.apply(this, arguments);
this.cid = _.uniqueId(this.cidPrefix);
this.attributes = {};
if (options.collection) this.collection = options.collection;
@@ -422,6 +423,10 @@
// You may want to override this if you're experiencing name clashes with model ids.
cidPrefix: 'c',
// preinitialize is an empty function by default. You can override it with a function
// or object. preinitialize will run before any instantiation logic is run in the Model.
preinitialize: function(){},
// Initialize is an empty function by default. Override it with your own
// initialization logic.
initialize: function(){},
@@ -562,12 +567,14 @@
if (!diff) return this.hasChanged() ? _.clone(this.changed) : false;
var old = this._changing ? this._previousAttributes : this.attributes;
var changed = {};
var hasChanged;
for (var attr in diff) {
var val = diff[attr];
if (_.isEqual(old[attr], val)) continue;
changed[attr] = val;
hasChanged = true;
}
return _.size(changed) ? changed : false;
return hasChanged ? changed : false;
},
// Get the previous value of an attribute, recorded at the time the last
@@ -754,6 +761,7 @@
// its models in sort order, as they're added and removed.
var Collection = Backbone.Collection = function(models, options) {
options || (options = {});
this.preinitialize.apply(this, arguments);
if (options.model) this.model = options.model;
if (options.comparator !== void 0) this.comparator = options.comparator;
this._reset();
@@ -783,6 +791,11 @@
// This should be overridden in most cases.
model: Model,
// preinitialize is an empty function by default. You can override it with a function
// or object. preinitialize will run before any instantiation logic is run in the Collection.
preinitialize: function(){},
// Initialize is an empty function by default. Override it with your own
// initialization logic.
initialize: function(){},
@@ -1219,6 +1232,7 @@
// if an existing element is not provided...
var View = Backbone.View = function(options) {
this.cid = _.uniqueId('view');
this.preinitialize.apply(this, arguments);
_.extend(this, _.pick(options, viewOptions));
this._ensureElement();
this.initialize.apply(this, arguments);
@@ -1242,6 +1256,10 @@
return this.$el.find(selector);
},
// preinitialize is an empty function by default. You can override it with a function
// or object. preinitialize will run before any instantiation logic is run in the View
preinitialize: function(){},
// Initialize is an empty function by default. Override it with your own
// initialization logic.
initialize: function(){},
@@ -1467,6 +1485,7 @@
// matched. Creating a new one sets its `routes` hash, if not set statically.
var Router = Backbone.Router = function(options) {
options || (options = {});
this.preinitialize.apply(this, arguments);
if (options.routes) this.routes = options.routes;
this._bindRoutes();
this.initialize.apply(this, arguments);
@@ -1482,6 +1501,10 @@
// Set up all inheritable **Backbone.Router** properties and methods.
_.extend(Router.prototype, Events, {
// preinitialize is an empty function by default. You can override it with a function
// or object. preinitialize will run before any instantiation logic is run in the Router.
preinitialize: function(){},
// Initialize is an empty function by default. Override it with your own
// initialization logic.
initialize: function(){},
@@ -1812,11 +1835,14 @@
}
var url = rootPath + fragment;
// Strip the hash and decode for matching.
fragment = this.decodeFragment(fragment.replace(pathStripper, ''));
// Strip the fragment of the query and hash for matching.
fragment = fragment.replace(pathStripper, '');
if (this.fragment === fragment) return;
this.fragment = fragment;
// Decode for matching.
var decodedFragment = this.decodeFragment(fragment);
if (this.fragment === decodedFragment) return;
this.fragment = decodedFragment;
// If pushState is available, we use it to set the fragment as a real URL.
if (this._usePushState) {

View File

@@ -1,4 +1,4 @@
(function() {
(function(QUnit) {
var a, b, c, d, e, col, otherCol;
@@ -593,7 +593,7 @@
assert.equal(error, 'fail');
assert.equal(options.validationError, 'fail');
});
assert.equal(collection.create({'foo': 'bar'}, {validate: true}), false);
assert.equal(collection.create({foo: 'bar'}, {validate: true}), false);
});
QUnit.test('create will pass extra options to success callback', function(assert) {
@@ -661,6 +661,31 @@
assert.equal(coll.one, 1);
});
QUnit.test('preinitialize', function(assert) {
assert.expect(1);
var Collection = Backbone.Collection.extend({
preinitialize: function() {
this.one = 1;
}
});
var coll = new Collection;
assert.equal(coll.one, 1);
});
QUnit.test('preinitialize occurs before the collection is set up', function(assert) {
assert.expect(2);
var Collection = Backbone.Collection.extend({
preinitialize: function() {
assert.notEqual(this.model, FooModel);
}
});
var FooModel = Backbone.Model.extend({id: 'foo'});
var coll = new Collection({}, {
model: FooModel
});
assert.equal(coll.model, FooModel);
});
QUnit.test('toJSON', function(assert) {
assert.expect(1);
assert.equal(JSON.stringify(col), '[{"id":3,"label":"a"},{"id":2,"label":"b"},{"id":1,"label":"c"},{"id":0,"label":"d"}]');
@@ -1724,10 +1749,10 @@
return new M(attrs);
}
});
var c2 = new C2({'_id': 1});
var c2 = new C2({_id: 1});
assert.equal(c2.get(1), void 0);
assert.equal(c2.modelId(c2.at(0).attributes), void 0);
var m = new M({'_id': 2});
var m = new M({_id: 2});
c2.add(m);
assert.equal(c2.get(2), void 0);
assert.equal(c2.modelId(m.attributes), void 0);
@@ -1995,4 +2020,4 @@
assert.equal(fired, false);
});
})();
})(QUnit);

View File

@@ -1,4 +1,4 @@
(function() {
(function(QUnit) {
QUnit.module('Backbone.Events');
@@ -703,4 +703,4 @@
two.trigger('y', 2);
});
})();
})(QUnit);

View File

@@ -1,4 +1,4 @@
(function() {
(function(QUnit) {
var ProxyModel = Backbone.Model.extend();
var Klass = Backbone.Collection.extend({
@@ -63,6 +63,36 @@
assert.equal(model.get('value'), 2);
});
QUnit.test('preinitialize', function(assert) {
assert.expect(2);
var Model = Backbone.Model.extend({
preinitialize: function() {
this.one = 1;
}
});
var model = new Model({}, {collection: collection});
assert.equal(model.one, 1);
assert.equal(model.collection, collection);
});
QUnit.test('preinitialize occurs before the model is set up', function(assert) {
assert.expect(6);
var Model = Backbone.Model.extend({
preinitialize: function() {
assert.equal(this.collection, undefined);
assert.equal(this.cid, undefined);
assert.equal(this.id, undefined);
}
});
var model = new Model({id: 'foo'}, {collection: collection});
assert.equal(model.collection, collection);
assert.equal(model.id, 'foo');
assert.notEqual(model.cid, undefined);
});
QUnit.test('parse can return null', function(assert) {
assert.expect(1);
var Model = Backbone.Model.extend({
@@ -1415,4 +1445,4 @@
assert.equal(model.id, 3);
});
})();
})(QUnit);

View File

@@ -1,4 +1,4 @@
(function() {
(function(QUnit) {
QUnit.module('Backbone.noConflict');
@@ -10,4 +10,4 @@
assert.equal(window.Backbone, noconflictBackbone, 'Backbone is still pointing to the original Backbone');
});
})();
})(QUnit);

View File

@@ -1,4 +1,4 @@
(function() {
(function(QUnit) {
var router = null;
var location = null;
@@ -28,7 +28,8 @@
'fragment',
'pathname',
'protocol'
));
));
// In IE, anchor.pathname does not contain a leading slash though
// window.location.pathname does.
if (!/^\//.test(this.pathname)) this.pathname = '/' + this.pathname;
@@ -42,7 +43,7 @@
QUnit.module('Backbone.Router', {
setup: function() {
beforeEach: function() {
location = new Location('http://example.com');
Backbone.history = _.extend(new Backbone.History, {location: location});
router = new Router({testing: 101});
@@ -53,7 +54,7 @@
Backbone.history.on('route', onRoute);
},
teardown: function() {
afterEach: function() {
Backbone.history.stop();
Backbone.history.off('route', onRoute);
}
@@ -95,6 +96,10 @@
'*anything': 'anything'
},
preinitialize: function(options) {
this.testpreinit = 'foo';
},
initialize: function(options) {
this.testing = options.testing;
this.route('implicit', 'implicit');
@@ -121,19 +126,19 @@
this.charType = 'escaped';
},
contacts: function(){
contacts: function() {
this.contact = 'index';
},
newContact: function(){
newContact: function() {
this.contact = 'new';
},
loadContact: function(){
loadContact: function() {
this.contact = 'load';
},
optionalItem: function(arg){
optionalItem: function(arg) {
this.arg = arg !== void 0 ? arg : null;
},
@@ -181,6 +186,11 @@
assert.equal(router.testing, 101);
});
QUnit.test('preinitialize', function(assert) {
assert.expect(1);
assert.equal(router.testpreinit, 'foo');
});
QUnit.test('routes (simple)', function(assert) {
assert.expect(4);
location.replace('http://example.com#search/news');
@@ -234,10 +244,11 @@
assert.ok(Backbone.history.navigate('search/manhattan/p20', true));
});
QUnit.test('route precedence via navigate', function(assert){
QUnit.test('route precedence via navigate', function(assert) {
assert.expect(6);
// check both 0.9.x and backwards-compatibility options
_.each([{trigger: true}, true], function( options ){
// Check both 0.9.x and backwards-compatibility options
_.each([{trigger: true}, true], function(options) {
Backbone.history.navigate('contacts', options);
assert.equal(router.contact, 'index');
Backbone.history.navigate('contacts/new', options);
@@ -249,7 +260,7 @@
QUnit.test('loadUrl is not called for identical routes.', function(assert) {
assert.expect(0);
Backbone.history.loadUrl = function(){ assert.ok(false); };
Backbone.history.loadUrl = function() { assert.ok(false); };
location.replace('http://example.com#route');
Backbone.history.navigate('route');
Backbone.history.navigate('/route');
@@ -345,9 +356,9 @@
assert.strictEqual(router.path, 'c/d/e');
});
QUnit.test("fires event when router doesn't have callback on it", function(assert) {
QUnit.test('fires event when router doesn\'t have callback on it', function(assert) {
assert.expect(1);
router.on('route:noCallback', function(){ assert.ok(true); });
router.on('route:noCallback', function() { assert.ok(true); });
location.replace('http://example.com#noCallback');
Backbone.history.checkUrl();
});
@@ -536,8 +547,8 @@
Backbone.history = _.extend(new Backbone.History, {
location: location,
history: {
pushState: function(){},
replaceState: function(){}
pushState: function() {},
replaceState: function() {}
}
});
Backbone.history.start({root: 'root'});
@@ -551,8 +562,8 @@
Backbone.history = _.extend(new Backbone.History, {
location: location,
history: {
pushState: function(){},
replaceState: function(state, title, url){
pushState: function() {},
replaceState: function(state, title, url) {
assert.strictEqual(url, '/root/x/y');
}
}
@@ -570,8 +581,8 @@
Backbone.history = _.extend(new Backbone.History, {
location: location,
history: {
pushState: function(){},
replaceState: function(){}
pushState: function() {},
replaceState: function() {}
}
});
Backbone.history.start({root: ''});
@@ -625,8 +636,8 @@
Backbone.history = _.extend(new Backbone.History, {
location: location,
history: {
pushState: function(){},
replaceState: function(state, title, url){
pushState: function() {},
replaceState: function(state, title, url) {
assert.strictEqual(url, '/root/x/y?a=b');
}
}
@@ -641,8 +652,8 @@
assert.expect(1);
var MyRouter = Backbone.Router.extend({
routes: {'': 'empty'},
empty: function(){},
route: function(route){
empty: function() {},
route: function(route) {
assert.strictEqual(route, '');
}
});
@@ -655,7 +666,8 @@
assert.strictEqual(history.getFragment('fragment '), 'fragment');
});
QUnit.test('#1820 - Leading slash and trailing space.', 1, function(assert) {
QUnit.test('#1820 - Leading slash and trailing space.', function(assert) {
assert.expect(1);
var history = new Backbone.History;
assert.strictEqual(history.getFragment('/fragment '), 'fragment');
});
@@ -670,7 +682,7 @@
assert.strictEqual(router.z, '123');
});
QUnit.test("#2062 - Trigger 'route' event on router instance.", function(assert) {
QUnit.test('#2062 - Trigger "route" event on router instance.', function(assert) {
assert.expect(2);
router.on('route', function(name, args) {
assert.strictEqual(name, 'routeEvent');
@@ -709,8 +721,8 @@
Backbone.history = _.extend(new Backbone.History, {
location: location,
history: {
pushState: function(){},
replaceState: function(){ assert.ok(false); }
pushState: function() {},
replaceState: function() { assert.ok(false); }
}
});
Backbone.history.start({
@@ -726,8 +738,8 @@
Backbone.history = _.extend(new Backbone.History, {
location: location,
history: {
pushState: function(){},
replaceState: function(){}
pushState: function() {},
replaceState: function() {}
}
});
@@ -753,7 +765,7 @@
Backbone.history = _.extend(new Backbone.History, {
location: location,
history: {
pushState: function(state, title, url){
pushState: function(state, title, url) {
assert.strictEqual(url, '/root');
}
}
@@ -785,7 +797,7 @@
Backbone.history = _.extend(new Backbone.History, {
location: location,
history: {
pushState: function(state, title, url){
pushState: function(state, title, url) {
assert.strictEqual(url, '/root?x=1');
}
}
@@ -823,7 +835,7 @@
assert.expect(1);
var MyRouter = Backbone.Router.extend({
routes: {
path: function(params){
path: function(params) {
assert.strictEqual(params, 'x=y%3Fz');
}
}
@@ -921,7 +933,7 @@
Backbone.history = _.extend(new Backbone.History, {location: location});
var MyRouter = Backbone.Router.extend({
routes: {'foo/:id/bar': 'foo'},
foo: function(){},
foo: function() {},
execute: function(callback, args, name) {
assert.strictEqual(callback, this.foo);
assert.deepEqual(args, ['123', 'x=y']);
@@ -953,8 +965,8 @@
Backbone.history = _.extend(new Backbone.History, {
location: location,
history: {
pushState: function(){ assert.ok(false); },
replaceState: function(){ assert.ok(false); }
pushState: function() { assert.ok(false); },
replaceState: function() { assert.ok(false); }
}
});
Backbone.history.start({pushState: true});
@@ -991,14 +1003,14 @@
Backbone.history.start({root: '/root', pushState: true});
});
QUnit.test("Paths that don't match the root should not match no root", function(assert) {
QUnit.test('Paths that don\'t match the root should not match no root', function(assert) {
assert.expect(0);
location.replace('http://example.com/foo');
Backbone.history.stop();
Backbone.history = _.extend(new Backbone.History, {location: location});
var MyRouter = Backbone.Router.extend({
routes: {
foo: function(){
foo: function() {
assert.ok(false, 'should not match unless root matches');
}
}
@@ -1007,14 +1019,14 @@
Backbone.history.start({root: 'root', pushState: true});
});
QUnit.test("Paths that don't match the root should not match roots of the same length", function(assert) {
QUnit.test('Paths that don\'t match the root should not match roots of the same length', function(assert) {
assert.expect(0);
location.replace('http://example.com/xxxx/foo');
Backbone.history.stop();
Backbone.history = _.extend(new Backbone.History, {location: location});
var MyRouter = Backbone.Router.extend({
routes: {
foo: function(){
foo: function() {
assert.ok(false, 'should not match unless root matches');
}
}
@@ -1029,7 +1041,7 @@
Backbone.history.stop();
Backbone.history = _.extend(new Backbone.History, {location: location});
var MyRouter = Backbone.Router.extend({
routes: {foo: function(){ assert.ok(true); }}
routes: {foo: function() { assert.ok(true); }}
});
var myRouter = new MyRouter;
Backbone.history.start({root: 'x+y.z', pushState: true});
@@ -1041,7 +1053,7 @@
Backbone.history.stop();
Backbone.history = _.extend(new Backbone.History, {location: location});
var MyRouter = Backbone.Router.extend({
routes: {foo: function(){ assert.ok(true); }}
routes: {foo: function() { assert.ok(true); }}
});
var myRouter = new MyRouter;
Backbone.history.start({root: '®ooτ', pushState: true});
@@ -1053,10 +1065,17 @@
Backbone.history.stop();
Backbone.history = _.extend(new Backbone.History, {location: location});
var MyRouter = Backbone.Router.extend({
routes: {'': function(){ assert.ok(true); }}
routes: {'': function() { assert.ok(true); }}
});
var myRouter = new MyRouter;
Backbone.history.start({root: '®ooτ', pushState: true});
});
})();
QUnit.test('#4025 - navigate updates URL hash as is', function(assert) {
assert.expect(1);
var route = 'search/has%20space';
Backbone.history.navigate(route);
assert.strictEqual(location.hash, '#' + route);
});
})(QUnit);

View File

@@ -1,4 +1,4 @@
(function() {
(function(QUnit) {
var sync = Backbone.sync;
var ajax = Backbone.ajax;
@@ -14,7 +14,7 @@
var env = QUnit.config.current.testEnvironment;
// We never want to actually call these during tests.
history.pushState = history.replaceState = function(){};
history.pushState = history.replaceState = function() {};
// Capture ajax settings for comparison.
Backbone.ajax = function(settings) {
@@ -42,4 +42,4 @@
history.replaceState = replaceState;
});
})();
})(QUnit);

View File

@@ -1,4 +1,4 @@
(function() {
(function(QUnit) {
var Library = Backbone.Collection.extend({
url: function() { return '/library'; }
@@ -158,7 +158,7 @@
QUnit.test('Backbone.ajax', function(assert) {
assert.expect(1);
Backbone.ajax = function(settings){
Backbone.ajax = function(settings) {
assert.strictEqual(settings.url, '/test');
};
var model = new Backbone.Model();
@@ -236,4 +236,4 @@
this.ajaxSettings.error({}, 'textStatus', 'errorThrown');
});
})();
})(QUnit);

View File

@@ -1,13 +1,13 @@
(function() {
(function(QUnit) {
var view;
QUnit.module('Backbone.View', {
beforeEach: function(assert) {
beforeEach: function() {
$('#qunit-fixture').append(
'<div id="testElement"><h1>Test</h1></div>'
);
);
view = new Backbone.View({
id: 'test-view',
@@ -61,6 +61,28 @@
assert.strictEqual(new View().one, 1);
});
QUnit.test('preinitialize', function(assert) {
assert.expect(1);
var View = Backbone.View.extend({
preinitialize: function() {
this.one = 1;
}
});
assert.strictEqual(new View().one, 1);
});
QUnit.test('preinitialize occurs before the view is set up', function(assert) {
assert.expect(2);
var View = Backbone.View.extend({
preinitialize: function() {
assert.equal(this.el, undefined);
}
});
var _view = new View({});
assert.notEqual(_view.el, undefined);
});
QUnit.test('render', function(assert) {
assert.expect(1);
var myView = new Backbone.View;
@@ -72,8 +94,8 @@
var counter1 = 0, counter2 = 0;
var myView = new Backbone.View({el: '#testElement'});
myView.increment = function(){ counter1++; };
myView.$el.on('click', function(){ counter2++; });
myView.increment = function() { counter1++; };
myView.$el.on('click', function() { counter2++; });
var events = {'click h1': 'increment'};
@@ -129,11 +151,10 @@
assert.equal(myView.counter, 3);
});
QUnit.test('delegateEvents ignore undefined methods', function(assert) {
assert.expect(0);
var myView = new Backbone.View({el: '<p></p>'});
myView.delegateEvents({'click': 'undefinedMethod'});
myView.delegateEvents({click: 'undefinedMethod'});
myView.$el.trigger('click');
});
@@ -142,8 +163,8 @@
var counter1 = 0, counter2 = 0;
var myView = new Backbone.View({el: '#testElement'});
myView.increment = function(){ counter1++; };
myView.$el.on('click', function(){ counter2++; });
myView.increment = function() { counter1++; };
myView.$el.on('click', function() { counter2++; });
var events = {'click h1': 'increment'};
@@ -203,7 +224,7 @@
assert.expect(2);
var myView = new Backbone.View({el: '#testElement'});
myView.delegate('click', function() { assert.ok(true); });
var handler = function(){ assert.ok(false); };
var handler = function() { assert.ok(false); };
myView.delegate('click', 'h1', handler);
myView.undelegate('click', 'h1', handler);
myView.$('h1').trigger('click');
@@ -405,8 +426,8 @@
assert.expect(0);
var View = Backbone.View.extend({
initialize: function() {
this.listenTo(this.model, 'all x', function(){ assert.ok(false); });
this.listenTo(this.collection, 'all x', function(){ assert.ok(false); });
this.listenTo(this.model, 'all x', function() { assert.ok(false); });
this.listenTo(this.collection, 'all x', function() { assert.ok(false); });
}
});
@@ -492,4 +513,4 @@
assert.notEqual($oldEl, myView.$el);
});
})();
})(QUnit);

View File

@@ -15,6 +15,10 @@
result = _.map([[1, 2, 3], [1, 2, 3]], _.first);
assert.deepEqual(result, [1, 1], 'works well with _.map');
assert.equal(_.first(null), void 0, 'returns undefined when called on null');
Array.prototype[0] = 'boo';
assert.equal(_.first([]), void 0, 'return undefined when called on a empty array');
delete Array.prototype[0];
});
QUnit.test('head', function(assert) {
@@ -66,6 +70,10 @@
result = _.map([[1, 2, 3], [1, 2, 3]], _.last);
assert.deepEqual(result, [3, 3], 'works well with _.map');
assert.equal(_.last(null), void 0, 'returns undefined when called on null');
var arr = [];
arr[-1] = 'boo';
assert.equal(_.last(arr), void 0, 'return undefined when called on a empty array');
});
QUnit.test('compact', function(assert) {

View File

@@ -188,7 +188,7 @@
var prod = _.reduce([1, 2, 3, 4], function(memo, num){ return memo * num; });
assert.equal(prod, 24, 'can reduce via multiplication');
assert.ok(_.reduce(null, _.noop, 138) === 138, 'handles a null (with initial value) properly');
assert.strictEqual(_.reduce(null, _.noop, 138), 138, 'handles a null (with initial value) properly');
assert.equal(_.reduce([], _.noop, void 0), void 0, 'undefined can be passed as a special case');
assert.equal(_.reduce([_], _.noop), _, 'collection of length one with no initial value returns the first item');
assert.equal(_.reduce([], _.noop), void 0, 'returns undefined when collection is empty and no initial value');
@@ -212,7 +212,7 @@
var sum = _.reduceRight({a: 1, b: 2, c: 3}, function(memo, num){ return memo + num; });
assert.equal(sum, 6, 'default initial value on object');
assert.ok(_.reduceRight(null, _.noop, 138) === 138, 'handles a null (with initial value) properly');
assert.strictEqual(_.reduceRight(null, _.noop, 138), 138, 'handles a null (with initial value) properly');
assert.equal(_.reduceRight([_], _.noop), _, 'collection of length one with no initial value returns the first item');
assert.equal(_.reduceRight([], _.noop, void 0), void 0, 'undefined can be passed as a special case');
@@ -268,8 +268,8 @@
var list = [{a: 1, b: 2}, {a: 2, b: 2}, {a: 1, b: 3}, {a: 1, b: 4}, {a: 2, b: 4}];
assert.deepEqual(_.find(list, {a: 1}), {a: 1, b: 2}, 'can be used as findWhere');
assert.deepEqual(_.find(list, {b: 4}), {a: 1, b: 4});
assert.ok(!_.find(list, {c: 1}), 'undefined when not found');
assert.ok(!_.find([], {c: 1}), 'undefined when searching empty list');
assert.notOk(_.find(list, {c: 1}), 'undefined when not found');
assert.notOk(_.find([], {c: 1}), 'undefined when searching empty list');
var result = _.find([1, 2, 3], function(num){ return num * 2 === 4; });
assert.equal(result, 2, 'found the first "2" and broke the loop');
@@ -348,25 +348,25 @@
QUnit.test('every', function(assert) {
assert.ok(_.every([], _.identity), 'the empty set');
assert.ok(_.every([true, true, true], _.identity), 'every true values');
assert.ok(!_.every([true, false, true], _.identity), 'one false value');
assert.notOk(_.every([true, false, true], _.identity), 'one false value');
assert.ok(_.every([0, 10, 28], function(num){ return num % 2 === 0; }), 'even numbers');
assert.ok(!_.every([0, 11, 28], function(num){ return num % 2 === 0; }), 'an odd number');
assert.ok(_.every([1], _.identity) === true, 'cast to boolean - true');
assert.ok(_.every([0], _.identity) === false, 'cast to boolean - false');
assert.ok(!_.every([void 0, void 0, void 0], _.identity), 'works with arrays of undefined');
assert.notOk(_.every([0, 11, 28], function(num){ return num % 2 === 0; }), 'an odd number');
assert.strictEqual(_.every([1], _.identity), true, 'cast to boolean - true');
assert.strictEqual(_.every([0], _.identity), false, 'cast to boolean - false');
assert.notOk(_.every([void 0, void 0, void 0], _.identity), 'works with arrays of undefined');
var list = [{a: 1, b: 2}, {a: 2, b: 2}, {a: 1, b: 3}, {a: 1, b: 4}];
assert.ok(!_.every(list, {a: 1, b: 2}), 'Can be called with object');
assert.notOk(_.every(list, {a: 1, b: 2}), 'Can be called with object');
assert.ok(_.every(list, 'a'), 'String mapped to object property');
list = [{a: 1, b: 2}, {a: 2, b: 2, c: true}];
assert.ok(_.every(list, {b: 2}), 'Can be called with object');
assert.ok(!_.every(list, 'c'), 'String mapped to object property');
assert.notOk(_.every(list, 'c'), 'String mapped to object property');
assert.ok(_.every({a: 1, b: 2, c: 3, d: 4}, _.isNumber), 'takes objects');
assert.ok(!_.every({a: 1, b: 2, c: 3, d: 4}, _.isObject), 'takes objects');
assert.notOk(_.every({a: 1, b: 2, c: 3, d: 4}, _.isObject), 'takes objects');
assert.ok(_.every(['a', 'b', 'c', 'd'], _.hasOwnProperty, {a: 1, b: 2, c: 3, d: 4}), 'context works');
assert.ok(!_.every(['a', 'b', 'c', 'd', 'f'], _.hasOwnProperty, {a: 1, b: 2, c: 3, d: 4}), 'context works');
assert.notOk(_.every(['a', 'b', 'c', 'd', 'f'], _.hasOwnProperty, {a: 1, b: 2, c: 3, d: 4}), 'context works');
});
QUnit.test('all', function(assert) {
@@ -374,29 +374,29 @@
});
QUnit.test('some', function(assert) {
assert.ok(!_.some([]), 'the empty set');
assert.ok(!_.some([false, false, false]), 'all false values');
assert.notOk(_.some([]), 'the empty set');
assert.notOk(_.some([false, false, false]), 'all false values');
assert.ok(_.some([false, false, true]), 'one true value');
assert.ok(_.some([null, 0, 'yes', false]), 'a string');
assert.ok(!_.some([null, 0, '', false]), 'falsy values');
assert.ok(!_.some([1, 11, 29], function(num){ return num % 2 === 0; }), 'all odd numbers');
assert.notOk(_.some([null, 0, '', false]), 'falsy values');
assert.notOk(_.some([1, 11, 29], function(num){ return num % 2 === 0; }), 'all odd numbers');
assert.ok(_.some([1, 10, 29], function(num){ return num % 2 === 0; }), 'an even number');
assert.ok(_.some([1], _.identity) === true, 'cast to boolean - true');
assert.ok(_.some([0], _.identity) === false, 'cast to boolean - false');
assert.strictEqual(_.some([1], _.identity), true, 'cast to boolean - true');
assert.strictEqual(_.some([0], _.identity), false, 'cast to boolean - false');
assert.ok(_.some([false, false, true]));
var list = [{a: 1, b: 2}, {a: 2, b: 2}, {a: 1, b: 3}, {a: 1, b: 4}];
assert.ok(!_.some(list, {a: 5, b: 2}), 'Can be called with object');
assert.notOk(_.some(list, {a: 5, b: 2}), 'Can be called with object');
assert.ok(_.some(list, 'a'), 'String mapped to object property');
list = [{a: 1, b: 2}, {a: 2, b: 2, c: true}];
assert.ok(_.some(list, {b: 2}), 'Can be called with object');
assert.ok(!_.some(list, 'd'), 'String mapped to object property');
assert.notOk(_.some(list, 'd'), 'String mapped to object property');
assert.ok(_.some({a: '1', b: '2', c: '3', d: '4', e: 6}, _.isNumber), 'takes objects');
assert.ok(!_.some({a: 1, b: 2, c: 3, d: 4}, _.isObject), 'takes objects');
assert.notOk(_.some({a: 1, b: 2, c: 3, d: 4}, _.isObject), 'takes objects');
assert.ok(_.some(['a', 'b', 'c', 'd'], _.hasOwnProperty, {a: 1, b: 2, c: 3, d: 4}), 'context works');
assert.ok(!_.some(['x', 'y', 'z'], _.hasOwnProperty, {a: 1, b: 2, c: 3, d: 4}), 'context works');
assert.notOk(_.some(['x', 'y', 'z'], _.hasOwnProperty, {a: 1, b: 2, c: 3, d: 4}), 'context works');
});
QUnit.test('any', function(assert) {
@@ -408,11 +408,11 @@
assert.strictEqual(_.includes(val, 'hasOwnProperty'), false);
});
assert.strictEqual(_.includes([1, 2, 3], 2), true, 'two is in the array');
assert.ok(!_.includes([1, 3, 9], 2), 'two is not in the array');
assert.notOk(_.includes([1, 3, 9], 2), 'two is not in the array');
assert.strictEqual(_.includes([5, 4, 3, 2, 1], 5, true), true, 'doesn\'t delegate to binary search');
assert.ok(_.includes({moe: 1, larry: 3, curly: 9}, 3) === true, '_.includes on objects checks their values');
assert.strictEqual(_.includes({moe: 1, larry: 3, curly: 9}, 3), true, '_.includes on objects checks their values');
assert.ok(_([1, 2, 3]).includes(2), 'OO-style includes');
var numbers = [1, 2, 3, 1, 2, 3, 1, 2, 3];
@@ -549,7 +549,7 @@
assert.equal(-Infinity, _.max(void 0), 'can handle null/undefined');
assert.equal(-Infinity, _.max(null, _.identity), 'can handle null/undefined');
assert.equal(3, _.max([1, 2, 3]), 'can perform a regular Math.max');
assert.equal(_.max([1, 2, 3]), 3, 'can perform a regular Math.max');
var neg = _.max([1, 2, 3], function(num){ return -num; });
assert.equal(neg, 1, 'can perform a computation-based max');
@@ -558,24 +558,24 @@
assert.equal(-Infinity, _.max([]), 'Maximum value of an empty array');
assert.equal(_.max({a: 'a'}), -Infinity, 'Maximum value of a non-numeric collection');
assert.equal(299999, _.max(_.range(1, 300000)), 'Maximum value of a too-big array');
assert.equal(_.max(_.range(1, 300000)), 299999, 'Maximum value of a too-big array');
assert.equal(3, _.max([1, 2, 3, 'test']), 'Finds correct max in array starting with num and containing a NaN');
assert.equal(3, _.max(['test', 1, 2, 3]), 'Finds correct max in array starting with NaN');
assert.equal(_.max([1, 2, 3, 'test']), 3, 'Finds correct max in array starting with num and containing a NaN');
assert.equal(_.max(['test', 1, 2, 3]), 3, 'Finds correct max in array starting with NaN');
assert.equal(3, _.max([1, 2, 3, null]), 'Finds correct max in array starting with num and containing a `null`');
assert.equal(3, _.max([null, 1, 2, 3]), 'Finds correct max in array starting with a `null`');
assert.equal(_.max([1, 2, 3, null]), 3, 'Finds correct max in array starting with num and containing a `null`');
assert.equal(_.max([null, 1, 2, 3]), 3, 'Finds correct max in array starting with a `null`');
assert.equal(3, _.max([1, 2, 3, '']), 'Finds correct max in array starting with num and containing an empty string');
assert.equal(3, _.max(['', 1, 2, 3]), 'Finds correct max in array starting with an empty string');
assert.equal(_.max([1, 2, 3, '']), 3, 'Finds correct max in array starting with num and containing an empty string');
assert.equal(_.max(['', 1, 2, 3]), 3, 'Finds correct max in array starting with an empty string');
assert.equal(3, _.max([1, 2, 3, false]), 'Finds correct max in array starting with num and containing a false');
assert.equal(3, _.max([false, 1, 2, 3]), 'Finds correct max in array starting with a false');
assert.equal(_.max([1, 2, 3, false]), 3, 'Finds correct max in array starting with num and containing a false');
assert.equal(_.max([false, 1, 2, 3]), 3, 'Finds correct max in array starting with a false');
assert.equal(4, _.max([0, 1, 2, 3, 4]), 'Finds correct max in array containing a zero');
assert.equal(0, _.max([-3, -2, -1, 0]), 'Finds correct max in array containing negative numbers');
assert.equal(_.max([0, 1, 2, 3, 4]), 4, 'Finds correct max in array containing a zero');
assert.equal(_.max([-3, -2, -1, 0]), 0, 'Finds correct max in array containing negative numbers');
assert.deepEqual([3, 6], _.map([[1, 2, 3], [4, 5, 6]], _.max), 'Finds correct max in array when mapping through multiple arrays');
assert.deepEqual(_.map([[1, 2, 3], [4, 5, 6]], _.max), [3, 6], 'Finds correct max in array when mapping through multiple arrays');
var a = {x: -Infinity};
var b = {x: -Infinity};
@@ -590,35 +590,35 @@
});
QUnit.test('min', function(assert) {
assert.equal(Infinity, _.min(null), 'can handle null/undefined');
assert.equal(Infinity, _.min(void 0), 'can handle null/undefined');
assert.equal(Infinity, _.min(null, _.identity), 'can handle null/undefined');
assert.equal(_.min(null), Infinity, 'can handle null/undefined');
assert.equal(_.min(void 0), Infinity, 'can handle null/undefined');
assert.equal(_.min(null, _.identity), Infinity, 'can handle null/undefined');
assert.equal(1, _.min([1, 2, 3]), 'can perform a regular Math.min');
assert.equal(_.min([1, 2, 3]), 1, 'can perform a regular Math.min');
var neg = _.min([1, 2, 3], function(num){ return -num; });
assert.equal(neg, 3, 'can perform a computation-based min');
assert.equal(Infinity, _.min({}), 'Minimum value of an empty object');
assert.equal(Infinity, _.min([]), 'Minimum value of an empty array');
assert.equal(_.min({}), Infinity, 'Minimum value of an empty object');
assert.equal(_.min([]), Infinity, 'Minimum value of an empty array');
assert.equal(_.min({a: 'a'}), Infinity, 'Minimum value of a non-numeric collection');
assert.deepEqual([1, 4], _.map([[1, 2, 3], [4, 5, 6]], _.min), 'Finds correct min in array when mapping through multiple arrays');
assert.deepEqual(_.map([[1, 2, 3], [4, 5, 6]], _.min), [1, 4], 'Finds correct min in array when mapping through multiple arrays');
var now = new Date(9999999999);
var then = new Date(0);
assert.equal(_.min([now, then]), then);
assert.equal(1, _.min(_.range(1, 300000)), 'Minimum value of a too-big array');
assert.equal(_.min(_.range(1, 300000)), 1, 'Minimum value of a too-big array');
assert.equal(1, _.min([1, 2, 3, 'test']), 'Finds correct min in array starting with num and containing a NaN');
assert.equal(1, _.min(['test', 1, 2, 3]), 'Finds correct min in array starting with NaN');
assert.equal(_.min([1, 2, 3, 'test']), 1, 'Finds correct min in array starting with num and containing a NaN');
assert.equal(_.min(['test', 1, 2, 3]), 1, 'Finds correct min in array starting with NaN');
assert.equal(1, _.min([1, 2, 3, null]), 'Finds correct min in array starting with num and containing a `null`');
assert.equal(1, _.min([null, 1, 2, 3]), 'Finds correct min in array starting with a `null`');
assert.equal(_.min([1, 2, 3, null]), 1, 'Finds correct min in array starting with num and containing a `null`');
assert.equal(_.min([null, 1, 2, 3]), 1, 'Finds correct min in array starting with a `null`');
assert.equal(0, _.min([0, 1, 2, 3, 4]), 'Finds correct min in array containing a zero');
assert.equal(-3, _.min([-3, -2, -1, 0]), 'Finds correct min in array containing negative numbers');
assert.equal(_.min([0, 1, 2, 3, 4]), 0, 'Finds correct min in array containing a zero');
assert.equal(_.min([-3, -2, -1, 0]), -3, 'Finds correct min in array containing negative numbers');
var a = {x: Infinity};
var b = {x: Infinity};
@@ -692,7 +692,7 @@
assert.deepEqual(grouped['5'], ['three', 'seven', 'eight']);
var context = {};
_.groupBy([{}], function(){ assert.ok(this === context); }, context);
_.groupBy([{}], function(){ assert.strictEqual(this, context); }, context);
grouped = _.groupBy([4.2, 6.1, 6.4], function(num) {
return Math.floor(num) > 4 ? 'hasOwnProperty' : 'constructor';
@@ -701,7 +701,7 @@
assert.equal(grouped.hasOwnProperty.length, 2);
var array = [{}];
_.groupBy(array, function(value, index, obj){ assert.ok(obj === array); });
_.groupBy(array, function(value, index, obj){ assert.strictEqual(obj, array); });
array = [1, 2, 1, 2, 3];
grouped = _.groupBy(array);
@@ -747,7 +747,7 @@
assert.equal(grouped['5'], 3);
var context = {};
_.countBy([{}], function(){ assert.ok(this === context); }, context);
_.countBy([{}], function(){ assert.strictEqual(this, context); }, context);
grouped = _.countBy([4.2, 6.1, 6.4], function(num) {
return Math.floor(num) > 4 ? 'hasOwnProperty' : 'constructor';
@@ -756,7 +756,7 @@
assert.equal(grouped.hasOwnProperty, 2);
var array = [{}];
_.countBy(array, function(value, index, obj){ assert.ok(obj === array); });
_.countBy(array, function(value, index, obj){ assert.strictEqual(obj, array); });
array = [1, 2, 1, 2, 3];
grouped = _.countBy(array);
@@ -797,10 +797,10 @@
});
QUnit.test('toArray', function(assert) {
assert.ok(!_.isArray(arguments), 'arguments object is not an array');
assert.notOk(_.isArray(arguments), 'arguments object is not an array');
assert.ok(_.isArray(_.toArray(arguments)), 'arguments object converted into array');
var a = [1, 2, 3];
assert.ok(_.toArray(a) !== a, 'array is cloned');
assert.notStrictEqual(_.toArray(a), a, 'array is cloned');
assert.deepEqual(_.toArray(a), [1, 2, 3], 'cloned array contains same elements');
var numbers = _.toArray({one: 1, two: 2, three: 3});
@@ -882,7 +882,7 @@
assert.deepEqual(_.map(elementChildren, 'id'), ['id1', 'id2']);
assert.deepEqual(_.map(parent.childNodes, 'nodeType'), [1, 3, 1]);
assert.ok(!_.every(parent.childNodes, _.isElement));
assert.notOk(_.every(parent.childNodes, _.isElement));
assert.ok(_.some(parent.childNodes, _.isElement));
function compareNode(node) {

View File

@@ -35,7 +35,7 @@
QUnit.test('isEqual', function(assert) {
assert.ok(!_.isEqual(iNumber, 101));
assert.notOk(_.isEqual(iNumber, 101));
assert.ok(_.isEqual(iNumber, 100));
// Objects from another frame.
@@ -46,13 +46,13 @@
});
QUnit.test('isEmpty', function(assert) {
assert.ok(!_([iNumber]).isEmpty(), '[1] is not empty');
assert.ok(!_.isEmpty(iArray), '[] is empty');
assert.notOk(_([iNumber]).isEmpty(), '[1] is not empty');
assert.notOk(_.isEmpty(iArray), '[] is empty');
assert.ok(_.isEmpty(iObject), '{} is empty');
});
QUnit.test('isElement', function(assert) {
assert.ok(!_.isElement('div'), 'strings are not dom elements');
assert.notOk(_.isElement('div'), 'strings are not dom elements');
assert.ok(_.isElement(document.body), 'the body tag is a DOM element');
assert.ok(_.isElement(iElement), 'even from another frame');
});
@@ -113,12 +113,12 @@
if (typeof ActiveXObject != 'undefined') {
QUnit.test('IE host objects', function(assert) {
var xml = new ActiveXObject('Msxml2.DOMDocument.3.0');
assert.ok(!_.isNumber(xml));
assert.ok(!_.isBoolean(xml));
assert.ok(!_.isNaN(xml));
assert.ok(!_.isFunction(xml));
assert.ok(!_.isNull(xml));
assert.ok(!_.isUndefined(xml));
assert.notOk(_.isNumber(xml));
assert.notOk(_.isBoolean(xml));
assert.notOk(_.isNaN(xml));
assert.notOk(_.isFunction(xml));
assert.notOk(_.isNull(xml));
assert.notOk(_.isUndefined(xml));
});
QUnit.test('#1621 IE 11 compat mode DOM elements are not functions', function(assert) {

View File

@@ -180,7 +180,7 @@
var done = assert.async();
var delayed = false;
_.delay(function(){ delayed = true; }, 100);
setTimeout(function(){ assert.ok(!delayed, "didn't delay the function quite yet"); }, 50);
setTimeout(function(){ assert.notOk(delayed, "didn't delay the function quite yet"); }, 50);
setTimeout(function(){ assert.ok(delayed, 'delayed the function'); done(); }, 150);
});
@@ -694,6 +694,43 @@
assert.deepEqual(_.toArray(cb(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)), _.range(1, 11));
});
// Test custom iteratee
var builtinIteratee = _.iteratee;
_.iteratee = function(value) {
// RegEx values return a function that returns the number of matches
if (_.isRegExp(value)) return function(obj) {
return (obj.match(value) || []).length;
};
return value;
};
var collection = ['foo', 'bar', 'bbiz'];
// Test all methods that claim to be transformed through `_.iteratee`
assert.deepEqual(_.countBy(collection, /b/g), {0: 1, 1: 1, 2: 1});
assert.equal(_.every(collection, /b/g), false);
assert.deepEqual(_.filter(collection, /b/g), ['bar', 'bbiz']);
assert.equal(_.find(collection, /b/g), 'bar');
assert.equal(_.findIndex(collection, /b/g), 1);
assert.equal(_.findKey(collection, /b/g), 1);
assert.equal(_.findLastIndex(collection, /b/g), 2);
assert.deepEqual(_.groupBy(collection, /b/g), {0: ['foo'], 1: ['bar'], 2: ['bbiz']});
assert.deepEqual(_.indexBy(collection, /b/g), {0: 'foo', 1: 'bar', 2: 'bbiz'});
assert.deepEqual(_.map(collection, /b/g), [0, 1, 2]);
assert.equal(_.max(collection, /b/g), 'bbiz');
assert.equal(_.min(collection, /b/g), 'foo');
assert.deepEqual(_.partition(collection, /b/g), [['bar', 'bbiz'], ['foo']]);
assert.deepEqual(_.reject(collection, /b/g), ['foo']);
assert.equal(_.some(collection, /b/g), true);
assert.deepEqual(_.sortBy(collection, /b/g), ['foo', 'bar', 'bbiz']);
assert.equal(_.sortedIndex(collection, 'blah', /b/g), 1);
assert.deepEqual(_.uniq(collection, /b/g), ['foo', 'bar', 'bbiz']);
var objCollection = {a: 'foo', b: 'bar', c: 'bbiz'};
assert.deepEqual(_.mapObject(objCollection, /b/g), {a: 0, b: 1, c: 2});
// Restore the builtin iteratee
_.iteratee = builtinIteratee;
});
QUnit.test('restArgs', function(assert) {

View File

@@ -123,7 +123,7 @@
subObj.c = 'd';
assert.deepEqual(_.extend({}, subObj), {a: 'b', c: 'd'}, 'extend copies all properties from source');
_.extend(subObj, {});
assert.ok(!subObj.hasOwnProperty('a'), "extend does not convert destination object's 'in' properties to 'own' properties");
assert.notOk(subObj.hasOwnProperty('a'), "extend does not convert destination object's 'in' properties to 'own' properties");
try {
result = {};
@@ -205,7 +205,7 @@
return this[key] === 3 && this === instance;
}, instance), {c: 3}, 'function is given context');
assert.ok(!_.has(_.pick({}, 'foo'), 'foo'), 'does not set own property if property not in object');
assert.notOk(_.has(_.pick({}, 'foo'), 'foo'), 'does not set own property if property not in object');
_.pick(data, function(value, key, obj) {
assert.equal(obj, data, 'passes same object as third parameter of iteratee');
});
@@ -309,7 +309,7 @@
Child.prototype.foo = 'foo';
var created = _.create(Child.prototype, new Child);
assert.ok(!created.hasOwnProperty('foo'), 'should only add own properties');
assert.notOk(created.hasOwnProperty('foo'), 'should only add own properties');
});
QUnit.test('isEqual', function(assert) {
@@ -326,10 +326,10 @@
assert.ok(_.isEqual(null, null), '`null` is equal to `null`');
assert.ok(_.isEqual(), '`undefined` is equal to `undefined`');
assert.ok(!_.isEqual(0, -0), '`0` is not equal to `-0`');
assert.ok(!_.isEqual(-0, 0), 'Commutative equality is implemented for `0` and `-0`');
assert.ok(!_.isEqual(null, void 0), '`null` is not equal to `undefined`');
assert.ok(!_.isEqual(void 0, null), 'Commutative equality is implemented for `null` and `undefined`');
assert.notOk(_.isEqual(0, -0), '`0` is not equal to `-0`');
assert.notOk(_.isEqual(-0, 0), 'Commutative equality is implemented for `0` and `-0`');
assert.notOk(_.isEqual(null, void 0), '`null` is not equal to `undefined`');
assert.notOk(_.isEqual(void 0, null), 'Commutative equality is implemented for `null` and `undefined`');
// String object and primitive comparisons.
assert.ok(_.isEqual('Curly', 'Curly'), 'Identical string primitives are equal');
@@ -337,76 +337,76 @@
assert.ok(_.isEqual(new String('Curly'), 'Curly'), 'String primitives and their corresponding object wrappers are equal');
assert.ok(_.isEqual('Curly', new String('Curly')), 'Commutative equality is implemented for string objects and primitives');
assert.ok(!_.isEqual('Curly', 'Larry'), 'String primitives with different values are not equal');
assert.ok(!_.isEqual(new String('Curly'), new String('Larry')), 'String objects with different primitive values are not equal');
assert.ok(!_.isEqual(new String('Curly'), {toString: function(){ return 'Curly'; }}), 'String objects and objects with a custom `toString` method are not equal');
assert.notOk(_.isEqual('Curly', 'Larry'), 'String primitives with different values are not equal');
assert.notOk(_.isEqual(new String('Curly'), new String('Larry')), 'String objects with different primitive values are not equal');
assert.notOk(_.isEqual(new String('Curly'), {toString: function(){ return 'Curly'; }}), 'String objects and objects with a custom `toString` method are not equal');
// Number object and primitive comparisons.
assert.ok(_.isEqual(75, 75), 'Identical number primitives are equal');
assert.ok(_.isEqual(new Number(75), new Number(75)), 'Number objects with identical primitive values are equal');
assert.ok(_.isEqual(75, new Number(75)), 'Number primitives and their corresponding object wrappers are equal');
assert.ok(_.isEqual(new Number(75), 75), 'Commutative equality is implemented for number objects and primitives');
assert.ok(!_.isEqual(new Number(0), -0), '`new Number(0)` and `-0` are not equal');
assert.ok(!_.isEqual(0, new Number(-0)), 'Commutative equality is implemented for `new Number(0)` and `-0`');
assert.notOk(_.isEqual(new Number(0), -0), '`new Number(0)` and `-0` are not equal');
assert.notOk(_.isEqual(0, new Number(-0)), 'Commutative equality is implemented for `new Number(0)` and `-0`');
assert.ok(!_.isEqual(new Number(75), new Number(63)), 'Number objects with different primitive values are not equal');
assert.ok(!_.isEqual(new Number(63), {valueOf: function(){ return 63; }}), 'Number objects and objects with a `valueOf` method are not equal');
assert.notOk(_.isEqual(new Number(75), new Number(63)), 'Number objects with different primitive values are not equal');
assert.notOk(_.isEqual(new Number(63), {valueOf: function(){ return 63; }}), 'Number objects and objects with a `valueOf` method are not equal');
// Comparisons involving `NaN`.
assert.ok(_.isEqual(NaN, NaN), '`NaN` is equal to `NaN`');
assert.ok(_.isEqual(new Number(NaN), NaN), 'Object(`NaN`) is equal to `NaN`');
assert.ok(!_.isEqual(61, NaN), 'A number primitive is not equal to `NaN`');
assert.ok(!_.isEqual(new Number(79), NaN), 'A number object is not equal to `NaN`');
assert.ok(!_.isEqual(Infinity, NaN), '`Infinity` is not equal to `NaN`');
assert.notOk(_.isEqual(61, NaN), 'A number primitive is not equal to `NaN`');
assert.notOk(_.isEqual(new Number(79), NaN), 'A number object is not equal to `NaN`');
assert.notOk(_.isEqual(Infinity, NaN), '`Infinity` is not equal to `NaN`');
// Boolean object and primitive comparisons.
assert.ok(_.isEqual(true, true), 'Identical boolean primitives are equal');
assert.ok(_.isEqual(new Boolean, new Boolean), 'Boolean objects with identical primitive values are equal');
assert.ok(_.isEqual(true, new Boolean(true)), 'Boolean primitives and their corresponding object wrappers are equal');
assert.ok(_.isEqual(new Boolean(true), true), 'Commutative equality is implemented for booleans');
assert.ok(!_.isEqual(new Boolean(true), new Boolean), 'Boolean objects with different primitive values are not equal');
assert.notOk(_.isEqual(new Boolean(true), new Boolean), 'Boolean objects with different primitive values are not equal');
// Common type coercions.
assert.ok(!_.isEqual(new Boolean(false), true), '`new Boolean(false)` is not equal to `true`');
assert.ok(!_.isEqual('75', 75), 'String and number primitives with like values are not equal');
assert.ok(!_.isEqual(new Number(63), new String(63)), 'String and number objects with like values are not equal');
assert.ok(!_.isEqual(75, '75'), 'Commutative equality is implemented for like string and number values');
assert.ok(!_.isEqual(0, ''), 'Number and string primitives with like values are not equal');
assert.ok(!_.isEqual(1, true), 'Number and boolean primitives with like values are not equal');
assert.ok(!_.isEqual(new Boolean(false), new Number(0)), 'Boolean and number objects with like values are not equal');
assert.ok(!_.isEqual(false, new String('')), 'Boolean primitives and string objects with like values are not equal');
assert.ok(!_.isEqual(12564504e5, new Date(2009, 9, 25)), 'Dates and their corresponding numeric primitive values are not equal');
assert.notOk(_.isEqual(new Boolean(false), true), '`new Boolean(false)` is not equal to `true`');
assert.notOk(_.isEqual('75', 75), 'String and number primitives with like values are not equal');
assert.notOk(_.isEqual(new Number(63), new String(63)), 'String and number objects with like values are not equal');
assert.notOk(_.isEqual(75, '75'), 'Commutative equality is implemented for like string and number values');
assert.notOk(_.isEqual(0, ''), 'Number and string primitives with like values are not equal');
assert.notOk(_.isEqual(1, true), 'Number and boolean primitives with like values are not equal');
assert.notOk(_.isEqual(new Boolean(false), new Number(0)), 'Boolean and number objects with like values are not equal');
assert.notOk(_.isEqual(false, new String('')), 'Boolean primitives and string objects with like values are not equal');
assert.notOk(_.isEqual(12564504e5, new Date(2009, 9, 25)), 'Dates and their corresponding numeric primitive values are not equal');
// Dates.
assert.ok(_.isEqual(new Date(2009, 9, 25), new Date(2009, 9, 25)), 'Date objects referencing identical times are equal');
assert.ok(!_.isEqual(new Date(2009, 9, 25), new Date(2009, 11, 13)), 'Date objects referencing different times are not equal');
assert.ok(!_.isEqual(new Date(2009, 11, 13), {
assert.notOk(_.isEqual(new Date(2009, 9, 25), new Date(2009, 11, 13)), 'Date objects referencing different times are not equal');
assert.notOk(_.isEqual(new Date(2009, 11, 13), {
getTime: function(){
return 12606876e5;
}
}), 'Date objects and objects with a `getTime` method are not equal');
assert.ok(!_.isEqual(new Date('Curly'), new Date('Curly')), 'Invalid dates are not equal');
assert.notOk(_.isEqual(new Date('Curly'), new Date('Curly')), 'Invalid dates are not equal');
// Functions.
assert.ok(!_.isEqual(First, Second), 'Different functions with identical bodies and source code representations are not equal');
assert.notOk(_.isEqual(First, Second), 'Different functions with identical bodies and source code representations are not equal');
// RegExps.
assert.ok(_.isEqual(/(?:)/gim, /(?:)/gim), 'RegExps with equivalent patterns and flags are equal');
assert.ok(_.isEqual(/(?:)/gi, /(?:)/ig), 'Flag order is not significant');
assert.ok(!_.isEqual(/(?:)/g, /(?:)/gi), 'RegExps with equivalent patterns and different flags are not equal');
assert.ok(!_.isEqual(/Moe/gim, /Curly/gim), 'RegExps with different patterns and equivalent flags are not equal');
assert.ok(!_.isEqual(/(?:)/gi, /(?:)/g), 'Commutative equality is implemented for RegExps');
assert.ok(!_.isEqual(/Curly/g, {source: 'Larry', global: true, ignoreCase: false, multiline: false}), 'RegExps and RegExp-like objects are not equal');
assert.notOk(_.isEqual(/(?:)/g, /(?:)/gi), 'RegExps with equivalent patterns and different flags are not equal');
assert.notOk(_.isEqual(/Moe/gim, /Curly/gim), 'RegExps with different patterns and equivalent flags are not equal');
assert.notOk(_.isEqual(/(?:)/gi, /(?:)/g), 'Commutative equality is implemented for RegExps');
assert.notOk(_.isEqual(/Curly/g, {source: 'Larry', global: true, ignoreCase: false, multiline: false}), 'RegExps and RegExp-like objects are not equal');
// Empty arrays, array-like objects, and object literals.
assert.ok(_.isEqual({}, {}), 'Empty object literals are equal');
assert.ok(_.isEqual([], []), 'Empty array literals are equal');
assert.ok(_.isEqual([{}], [{}]), 'Empty nested arrays and objects are equal');
assert.ok(!_.isEqual({length: 0}, []), 'Array-like objects and arrays are not equal.');
assert.ok(!_.isEqual([], {length: 0}), 'Commutative equality is implemented for array-like objects');
assert.notOk(_.isEqual({length: 0}, []), 'Array-like objects and arrays are not equal.');
assert.notOk(_.isEqual([], {length: 0}), 'Commutative equality is implemented for array-like objects');
assert.ok(!_.isEqual({}, []), 'Object literals and array literals are not equal');
assert.ok(!_.isEqual([], {}), 'Commutative equality is implemented for objects and arrays');
assert.notOk(_.isEqual({}, []), 'Object literals and array literals are not equal');
assert.notOk(_.isEqual([], {}), 'Commutative equality is implemented for objects and arrays');
// Arrays with primitive and object values.
assert.ok(_.isEqual([1, 'Larry', true], [1, 'Larry', true]), 'Arrays containing identical primitives are equal');
@@ -424,14 +424,14 @@
// Array elements and properties.
assert.ok(_.isEqual(a, b), 'Arrays containing equivalent elements and different non-numeric properties are equal');
a.push('White Rocks');
assert.ok(!_.isEqual(a, b), 'Arrays of different lengths are not equal');
assert.notOk(_.isEqual(a, b), 'Arrays of different lengths are not equal');
a.push('East Boulder');
b.push('Gunbarrel Ranch', 'Teller Farm');
assert.ok(!_.isEqual(a, b), 'Arrays of identical lengths containing different elements are not equal');
assert.notOk(_.isEqual(a, b), 'Arrays of identical lengths containing different elements are not equal');
// Sparse arrays.
assert.ok(_.isEqual(Array(3), Array(3)), 'Sparse arrays of identical lengths are equal');
assert.ok(!_.isEqual(Array(3), Array(6)), 'Sparse arrays of different lengths are not equal when both are empty');
assert.notOk(_.isEqual(Array(3), Array(6)), 'Sparse arrays of different lengths are not equal when both are empty');
var sparse = [];
sparse[1] = 5;
@@ -440,11 +440,11 @@
// Simple objects.
assert.ok(_.isEqual({a: 'Curly', b: 1, c: true}, {a: 'Curly', b: 1, c: true}), 'Objects containing identical primitives are equal');
assert.ok(_.isEqual({a: /Curly/g, b: new Date(2009, 11, 13)}, {a: /Curly/g, b: new Date(2009, 11, 13)}), 'Objects containing equivalent members are equal');
assert.ok(!_.isEqual({a: 63, b: 75}, {a: 61, b: 55}), 'Objects of identical sizes with different values are not equal');
assert.ok(!_.isEqual({a: 63, b: 75}, {a: 61, c: 55}), 'Objects of identical sizes with different property names are not equal');
assert.ok(!_.isEqual({a: 1, b: 2}, {a: 1}), 'Objects of different sizes are not equal');
assert.ok(!_.isEqual({a: 1}, {a: 1, b: 2}), 'Commutative equality is implemented for objects');
assert.ok(!_.isEqual({x: 1, y: void 0}, {x: 1, z: 2}), 'Objects with identical keys and different values are not equivalent');
assert.notOk(_.isEqual({a: 63, b: 75}, {a: 61, b: 55}), 'Objects of identical sizes with different values are not equal');
assert.notOk(_.isEqual({a: 63, b: 75}, {a: 61, c: 55}), 'Objects of identical sizes with different property names are not equal');
assert.notOk(_.isEqual({a: 1, b: 2}, {a: 1}), 'Objects of different sizes are not equal');
assert.notOk(_.isEqual({a: 1}, {a: 1, b: 2}), 'Commutative equality is implemented for objects');
assert.notOk(_.isEqual({x: 1, y: void 0}, {x: 1, z: 2}), 'Objects with identical keys and different values are not equivalent');
// `A` contains nested objects and arrays.
a = {
@@ -479,9 +479,9 @@
// Instances.
assert.ok(_.isEqual(new First, new First), 'Object instances are equal');
assert.ok(!_.isEqual(new First, new Second), 'Objects with different constructors and identical own properties are not equal');
assert.ok(!_.isEqual({value: 1}, new First), 'Object instances and objects sharing equivalent properties are not equal');
assert.ok(!_.isEqual({value: 2}, new Second), 'The prototype chain of objects should not be examined');
assert.notOk(_.isEqual(new First, new Second), 'Objects with different constructors and identical own properties are not equal');
assert.notOk(_.isEqual({value: 1}, new First), 'Object instances and objects sharing equivalent properties are not equal');
assert.notOk(_.isEqual({value: 2}, new Second), 'The prototype chain of objects should not be examined');
// Circular Arrays.
(a = []).push(a);
@@ -492,13 +492,13 @@
assert.ok(_.isEqual(a, b), 'Arrays containing circular references and equivalent properties are equal');
a.push('Shemp');
b.push('Curly');
assert.ok(!_.isEqual(a, b), 'Arrays containing circular references and different properties are not equal');
assert.notOk(_.isEqual(a, b), 'Arrays containing circular references and different properties are not equal');
// More circular arrays #767.
a = ['everything is checked but', 'this', 'is not'];
a[1] = a;
b = ['everything is checked but', ['this', 'array'], 'is not'];
assert.ok(!_.isEqual(a, b), 'Comparison of circular references with non-circular references are not equal');
assert.notOk(_.isEqual(a, b), 'Comparison of circular references with non-circular references are not equal');
// Circular Objects.
a = {abc: null};
@@ -511,13 +511,13 @@
assert.ok(_.isEqual(a, b), 'Objects containing circular references and equivalent properties are equal');
a.def = new Number(75);
b.def = new Number(63);
assert.ok(!_.isEqual(a, b), 'Objects containing circular references and different properties are not equal');
assert.notOk(_.isEqual(a, b), 'Objects containing circular references and different properties are not equal');
// More circular objects #767.
a = {everything: 'is checked', but: 'this', is: 'not'};
a.but = a;
b = {everything: 'is checked', but: {that: 'object'}, is: 'not'};
assert.ok(!_.isEqual(a, b), 'Comparison of circular references with non-circular object references are not equal');
assert.notOk(_.isEqual(a, b), 'Comparison of circular references with non-circular object references are not equal');
// Cyclic Structures.
a = [{abc: null}];
@@ -530,7 +530,7 @@
assert.ok(_.isEqual(a, b), 'Cyclic structures containing equivalent properties are equal');
a[0].def = new String('Larry');
b[0].def = new String('Curly');
assert.ok(!_.isEqual(a, b), 'Cyclic structures containing different properties are not equal');
assert.notOk(_.isEqual(a, b), 'Cyclic structures containing different properties are not equal');
// Complex Circular References.
a = {foo: {b: {foo: {c: {foo: null}}}}};
@@ -540,7 +540,7 @@
assert.ok(_.isEqual(a, b), 'Cyclic structures with nested and identically-named properties are equal');
// Chaining.
assert.ok(!_.isEqual(_({x: 1, y: void 0}).chain(), _({x: 1, z: 2}).chain()), 'Chained objects containing different values are not equal');
assert.notOk(_.isEqual(_({x: 1, y: void 0}).chain(), _({x: 1, z: 2}).chain()), 'Chained objects containing different values are not equal');
a = _({x: 1, y: 2}).chain();
b = _({x: 1, y: 2}).chain();
@@ -576,15 +576,15 @@
});
QUnit.test('isEmpty', function(assert) {
assert.ok(!_([1]).isEmpty(), '[1] is not empty');
assert.notOk(_([1]).isEmpty(), '[1] is not empty');
assert.ok(_.isEmpty([]), '[] is empty');
assert.ok(!_.isEmpty({one: 1}), '{one: 1} is not empty');
assert.notOk(_.isEmpty({one: 1}), '{one: 1} is not empty');
assert.ok(_.isEmpty({}), '{} is empty');
assert.ok(_.isEmpty(new RegExp('')), 'objects with prototype properties are empty');
assert.ok(_.isEmpty(null), 'null is empty');
assert.ok(_.isEmpty(), 'undefined is empty');
assert.ok(_.isEmpty(''), 'the empty string is empty');
assert.ok(!_.isEmpty('moe'), 'but other strings are not');
assert.notOk(_.isEmpty('moe'), 'but other strings are not');
var obj = {one: 1};
delete obj.one;
@@ -592,27 +592,27 @@
var args = function(){ return arguments; };
assert.ok(_.isEmpty(args()), 'empty arguments object is empty');
assert.ok(!_.isEmpty(args('')), 'non-empty arguments object is not empty');
assert.notOk(_.isEmpty(args('')), 'non-empty arguments object is not empty');
// covers collecting non-enumerable properties in IE < 9
var nonEnumProp = {toString: 5};
assert.ok(!_.isEmpty(nonEnumProp), 'non-enumerable property is not empty');
assert.notOk(_.isEmpty(nonEnumProp), 'non-enumerable property is not empty');
});
if (typeof document === 'object') {
QUnit.test('isElement', function(assert) {
assert.ok(!_.isElement('div'), 'strings are not dom elements');
assert.notOk(_.isElement('div'), 'strings are not dom elements');
assert.ok(_.isElement(testElement), 'an element is a DOM element');
});
}
QUnit.test('isArguments', function(assert) {
var args = (function(){ return arguments; }(1, 2, 3));
assert.ok(!_.isArguments('string'), 'a string is not an arguments object');
assert.ok(!_.isArguments(_.isArguments), 'a function is not an arguments object');
assert.notOk(_.isArguments('string'), 'a string is not an arguments object');
assert.notOk(_.isArguments(_.isArguments), 'a function is not an arguments object');
assert.ok(_.isArguments(args), 'but the arguments object is an arguments object');
assert.ok(!_.isArguments(_.toArray(args)), 'but not when it\'s converted into an array');
assert.ok(!_.isArguments([1, 2, 3]), 'and not vanilla arrays.');
assert.notOk(_.isArguments(_.toArray(args)), 'but not when it\'s converted into an array');
assert.notOk(_.isArguments([1, 2, 3]), 'and not vanilla arrays.');
});
QUnit.test('isObject', function(assert) {
@@ -622,24 +622,24 @@
assert.ok(_.isObject(testElement), 'and DOM element');
}
assert.ok(_.isObject(function() {}), 'and functions');
assert.ok(!_.isObject(null), 'but not null');
assert.ok(!_.isObject(void 0), 'and not undefined');
assert.ok(!_.isObject('string'), 'and not string');
assert.ok(!_.isObject(12), 'and not number');
assert.ok(!_.isObject(true), 'and not boolean');
assert.notOk(_.isObject(null), 'but not null');
assert.notOk(_.isObject(void 0), 'and not undefined');
assert.notOk(_.isObject('string'), 'and not string');
assert.notOk(_.isObject(12), 'and not number');
assert.notOk(_.isObject(true), 'and not boolean');
assert.ok(_.isObject(new String('string')), 'but new String()');
});
QUnit.test('isArray', function(assert) {
assert.ok(!_.isArray(void 0), 'undefined vars are not arrays');
assert.ok(!_.isArray(arguments), 'the arguments object is not an array');
assert.notOk(_.isArray(void 0), 'undefined vars are not arrays');
assert.notOk(_.isArray(arguments), 'the arguments object is not an array');
assert.ok(_.isArray([1, 2, 3]), 'but arrays are');
});
QUnit.test('isString', function(assert) {
var obj = new String('I am a string object');
if (testElement) {
assert.ok(!_.isString(testElement), 'an element is not a string');
assert.notOk(_.isString(testElement), 'an element is not a string');
}
assert.ok(_.isString([1, 2, 3].join(', ')), 'but strings are');
assert.strictEqual(_.isString('I am a string literal'), true, 'string literals are');
@@ -648,9 +648,9 @@
});
QUnit.test('isSymbol', function(assert) {
assert.ok(!_.isSymbol(0), 'numbers are not symbols');
assert.ok(!_.isSymbol(''), 'strings are not symbols');
assert.ok(!_.isSymbol(_.isSymbol), 'functions are not symbols');
assert.notOk(_.isSymbol(0), 'numbers are not symbols');
assert.notOk(_.isSymbol(''), 'strings are not symbols');
assert.notOk(_.isSymbol(_.isSymbol), 'functions are not symbols');
if (typeof Symbol === 'function') {
assert.ok(_.isSymbol(Symbol()), 'symbols are symbols');
assert.ok(_.isSymbol(Symbol('description')), 'described symbols are symbols');
@@ -659,43 +659,43 @@
});
QUnit.test('isNumber', function(assert) {
assert.ok(!_.isNumber('string'), 'a string is not a number');
assert.ok(!_.isNumber(arguments), 'the arguments object is not a number');
assert.ok(!_.isNumber(void 0), 'undefined is not a number');
assert.notOk(_.isNumber('string'), 'a string is not a number');
assert.notOk(_.isNumber(arguments), 'the arguments object is not a number');
assert.notOk(_.isNumber(void 0), 'undefined is not a number');
assert.ok(_.isNumber(3 * 4 - 7 / 10), 'but numbers are');
assert.ok(_.isNumber(NaN), 'NaN *is* a number');
assert.ok(_.isNumber(Infinity), 'Infinity is a number');
assert.ok(!_.isNumber('1'), 'numeric strings are not numbers');
assert.notOk(_.isNumber('1'), 'numeric strings are not numbers');
});
QUnit.test('isBoolean', function(assert) {
assert.ok(!_.isBoolean(2), 'a number is not a boolean');
assert.ok(!_.isBoolean('string'), 'a string is not a boolean');
assert.ok(!_.isBoolean('false'), 'the string "false" is not a boolean');
assert.ok(!_.isBoolean('true'), 'the string "true" is not a boolean');
assert.ok(!_.isBoolean(arguments), 'the arguments object is not a boolean');
assert.ok(!_.isBoolean(void 0), 'undefined is not a boolean');
assert.ok(!_.isBoolean(NaN), 'NaN is not a boolean');
assert.ok(!_.isBoolean(null), 'null is not a boolean');
assert.notOk(_.isBoolean(2), 'a number is not a boolean');
assert.notOk(_.isBoolean('string'), 'a string is not a boolean');
assert.notOk(_.isBoolean('false'), 'the string "false" is not a boolean');
assert.notOk(_.isBoolean('true'), 'the string "true" is not a boolean');
assert.notOk(_.isBoolean(arguments), 'the arguments object is not a boolean');
assert.notOk(_.isBoolean(void 0), 'undefined is not a boolean');
assert.notOk(_.isBoolean(NaN), 'NaN is not a boolean');
assert.notOk(_.isBoolean(null), 'null is not a boolean');
assert.ok(_.isBoolean(true), 'but true is');
assert.ok(_.isBoolean(false), 'and so is false');
});
QUnit.test('isMap', function(assert) {
assert.ok(!_.isMap('string'), 'a string is not a map');
assert.ok(!_.isMap(2), 'a number is not a map');
assert.ok(!_.isMap({}), 'an object is not a map');
assert.ok(!_.isMap(false), 'a boolean is not a map');
assert.ok(!_.isMap(void 0), 'undefined is not a map');
assert.ok(!_.isMap([1, 2, 3]), 'an array is not a map');
assert.notOk(_.isMap('string'), 'a string is not a map');
assert.notOk(_.isMap(2), 'a number is not a map');
assert.notOk(_.isMap({}), 'an object is not a map');
assert.notOk(_.isMap(false), 'a boolean is not a map');
assert.notOk(_.isMap(void 0), 'undefined is not a map');
assert.notOk(_.isMap([1, 2, 3]), 'an array is not a map');
if (typeof Set === 'function') {
assert.ok(!_.isMap(new Set()), 'a set is not a map');
assert.notOk(_.isMap(new Set()), 'a set is not a map');
}
if (typeof WeakSet === 'function') {
assert.ok(!_.isMap(new WeakSet()), 'a weakset is not a map');
assert.notOk(_.isMap(new WeakSet()), 'a weakset is not a map');
}
if (typeof WeakMap === 'function') {
assert.ok(!_.isMap(new WeakMap()), 'a weakmap is not a map');
assert.notOk(_.isMap(new WeakMap()), 'a weakmap is not a map');
}
if (typeof Map === 'function') {
var keyString = 'a string';
@@ -706,20 +706,20 @@
});
QUnit.test('isWeakMap', function(assert) {
assert.ok(!_.isWeakMap('string'), 'a string is not a weakmap');
assert.ok(!_.isWeakMap(2), 'a number is not a weakmap');
assert.ok(!_.isWeakMap({}), 'an object is not a weakmap');
assert.ok(!_.isWeakMap(false), 'a boolean is not a weakmap');
assert.ok(!_.isWeakMap(void 0), 'undefined is not a weakmap');
assert.ok(!_.isWeakMap([1, 2, 3]), 'an array is not a weakmap');
assert.notOk(_.isWeakMap('string'), 'a string is not a weakmap');
assert.notOk(_.isWeakMap(2), 'a number is not a weakmap');
assert.notOk(_.isWeakMap({}), 'an object is not a weakmap');
assert.notOk(_.isWeakMap(false), 'a boolean is not a weakmap');
assert.notOk(_.isWeakMap(void 0), 'undefined is not a weakmap');
assert.notOk(_.isWeakMap([1, 2, 3]), 'an array is not a weakmap');
if (typeof Set === 'function') {
assert.ok(!_.isWeakMap(new Set()), 'a set is not a weakmap');
assert.notOk(_.isWeakMap(new Set()), 'a set is not a weakmap');
}
if (typeof WeakSet === 'function') {
assert.ok(!_.isWeakMap(new WeakSet()), 'a weakset is not a weakmap');
assert.notOk(_.isWeakMap(new WeakSet()), 'a weakset is not a weakmap');
}
if (typeof Map === 'function') {
assert.ok(!_.isWeakMap(new Map()), 'a map is not a weakmap');
assert.notOk(_.isWeakMap(new Map()), 'a map is not a weakmap');
}
if (typeof WeakMap === 'function') {
var keyObj = {}, obj = new WeakMap();
@@ -729,20 +729,20 @@
});
QUnit.test('isSet', function(assert) {
assert.ok(!_.isSet('string'), 'a string is not a set');
assert.ok(!_.isSet(2), 'a number is not a set');
assert.ok(!_.isSet({}), 'an object is not a set');
assert.ok(!_.isSet(false), 'a boolean is not a set');
assert.ok(!_.isSet(void 0), 'undefined is not a set');
assert.ok(!_.isSet([1, 2, 3]), 'an array is not a set');
assert.notOk(_.isSet('string'), 'a string is not a set');
assert.notOk(_.isSet(2), 'a number is not a set');
assert.notOk(_.isSet({}), 'an object is not a set');
assert.notOk(_.isSet(false), 'a boolean is not a set');
assert.notOk(_.isSet(void 0), 'undefined is not a set');
assert.notOk(_.isSet([1, 2, 3]), 'an array is not a set');
if (typeof Map === 'function') {
assert.ok(!_.isSet(new Map()), 'a map is not a set');
assert.notOk(_.isSet(new Map()), 'a map is not a set');
}
if (typeof WeakMap === 'function') {
assert.ok(!_.isSet(new WeakMap()), 'a weakmap is not a set');
assert.notOk(_.isSet(new WeakMap()), 'a weakmap is not a set');
}
if (typeof WeakSet === 'function') {
assert.ok(!_.isSet(new WeakSet()), 'a weakset is not a set');
assert.notOk(_.isSet(new WeakSet()), 'a weakset is not a set');
}
if (typeof Set === 'function') {
var obj = new Set();
@@ -753,20 +753,20 @@
QUnit.test('isWeakSet', function(assert) {
assert.ok(!_.isWeakSet('string'), 'a string is not a weakset');
assert.ok(!_.isWeakSet(2), 'a number is not a weakset');
assert.ok(!_.isWeakSet({}), 'an object is not a weakset');
assert.ok(!_.isWeakSet(false), 'a boolean is not a weakset');
assert.ok(!_.isWeakSet(void 0), 'undefined is not a weakset');
assert.ok(!_.isWeakSet([1, 2, 3]), 'an array is not a weakset');
assert.notOk(_.isWeakSet('string'), 'a string is not a weakset');
assert.notOk(_.isWeakSet(2), 'a number is not a weakset');
assert.notOk(_.isWeakSet({}), 'an object is not a weakset');
assert.notOk(_.isWeakSet(false), 'a boolean is not a weakset');
assert.notOk(_.isWeakSet(void 0), 'undefined is not a weakset');
assert.notOk(_.isWeakSet([1, 2, 3]), 'an array is not a weakset');
if (typeof Map === 'function') {
assert.ok(!_.isWeakSet(new Map()), 'a map is not a weakset');
assert.notOk(_.isWeakSet(new Map()), 'a map is not a weakset');
}
if (typeof WeakMap === 'function') {
assert.ok(!_.isWeakSet(new WeakMap()), 'a weakmap is not a weakset');
assert.notOk(_.isWeakSet(new WeakMap()), 'a weakmap is not a weakset');
}
if (typeof Set === 'function') {
assert.ok(!_.isWeakSet(new Set()), 'a set is not a weakset');
assert.notOk(_.isWeakSet(new Set()), 'a set is not a weakset');
}
if (typeof WeakSet === 'function') {
var obj = new WeakSet();
@@ -776,19 +776,19 @@
});
QUnit.test('isFunction', function(assert) {
assert.ok(!_.isFunction(void 0), 'undefined vars are not functions');
assert.ok(!_.isFunction([1, 2, 3]), 'arrays are not functions');
assert.ok(!_.isFunction('moe'), 'strings are not functions');
assert.notOk(_.isFunction(void 0), 'undefined vars are not functions');
assert.notOk(_.isFunction([1, 2, 3]), 'arrays are not functions');
assert.notOk(_.isFunction('moe'), 'strings are not functions');
assert.ok(_.isFunction(_.isFunction), 'but functions are');
assert.ok(_.isFunction(function(){}), 'even anonymous ones');
if (testElement) {
assert.ok(!_.isFunction(testElement), 'elements are not functions');
assert.notOk(_.isFunction(testElement), 'elements are not functions');
}
var nodelist = typeof document != 'undefined' && document.childNodes;
if (nodelist) {
assert.ok(!_.isFunction(nodelist));
assert.notOk(_.isFunction(nodelist));
}
});
@@ -806,65 +806,68 @@
}
QUnit.test('isDate', function(assert) {
assert.ok(!_.isDate(100), 'numbers are not dates');
assert.ok(!_.isDate({}), 'objects are not dates');
assert.notOk(_.isDate(100), 'numbers are not dates');
assert.notOk(_.isDate({}), 'objects are not dates');
assert.ok(_.isDate(new Date()), 'but dates are');
});
QUnit.test('isRegExp', function(assert) {
assert.ok(!_.isRegExp(_.identity), 'functions are not RegExps');
assert.notOk(_.isRegExp(_.identity), 'functions are not RegExps');
assert.ok(_.isRegExp(/identity/), 'but RegExps are');
});
QUnit.test('isFinite', function(assert) {
assert.ok(!_.isFinite(void 0), 'undefined is not finite');
assert.ok(!_.isFinite(null), 'null is not finite');
assert.ok(!_.isFinite(NaN), 'NaN is not finite');
assert.ok(!_.isFinite(Infinity), 'Infinity is not finite');
assert.ok(!_.isFinite(-Infinity), '-Infinity is not finite');
assert.notOk(_.isFinite(void 0), 'undefined is not finite');
assert.notOk(_.isFinite(null), 'null is not finite');
assert.notOk(_.isFinite(NaN), 'NaN is not finite');
assert.notOk(_.isFinite(Infinity), 'Infinity is not finite');
assert.notOk(_.isFinite(-Infinity), '-Infinity is not finite');
assert.ok(_.isFinite('12'), 'Numeric strings are numbers');
assert.ok(!_.isFinite('1a'), 'Non numeric strings are not numbers');
assert.ok(!_.isFinite(''), 'Empty strings are not numbers');
assert.notOk(_.isFinite('1a'), 'Non numeric strings are not numbers');
assert.notOk(_.isFinite(''), 'Empty strings are not numbers');
var obj = new Number(5);
assert.ok(_.isFinite(obj), 'Number instances can be finite');
assert.ok(_.isFinite(0), '0 is finite');
assert.ok(_.isFinite(123), 'Ints are finite');
assert.ok(_.isFinite(-12.44), 'Floats are finite');
if (typeof Symbol === 'function') {
assert.ok(!_.isFinite(Symbol()), 'symbols are not numbers');
assert.ok(!_.isFinite(Symbol('description')), 'described symbols are not numbers');
assert.ok(!_.isFinite(Object(Symbol())), 'boxed symbols are not numbers');
assert.notOk(_.isFinite(Symbol()), 'symbols are not numbers');
assert.notOk(_.isFinite(Symbol('description')), 'described symbols are not numbers');
assert.notOk(_.isFinite(Object(Symbol())), 'boxed symbols are not numbers');
}
});
QUnit.test('isNaN', function(assert) {
assert.ok(!_.isNaN(void 0), 'undefined is not NaN');
assert.ok(!_.isNaN(null), 'null is not NaN');
assert.ok(!_.isNaN(0), '0 is not NaN');
assert.ok(!_.isNaN(new Number(0)), 'wrapped 0 is not NaN');
assert.notOk(_.isNaN(void 0), 'undefined is not NaN');
assert.notOk(_.isNaN(null), 'null is not NaN');
assert.notOk(_.isNaN(0), '0 is not NaN');
assert.notOk(_.isNaN(new Number(0)), 'wrapped 0 is not NaN');
assert.ok(_.isNaN(NaN), 'but NaN is');
assert.ok(_.isNaN(new Number(NaN)), 'wrapped NaN is still NaN');
if (typeof Symbol !== 'undefined'){
assert.notOk(_.isNaN(Symbol()), 'symbol is not NaN');
}
});
QUnit.test('isNull', function(assert) {
assert.ok(!_.isNull(void 0), 'undefined is not null');
assert.ok(!_.isNull(NaN), 'NaN is not null');
assert.notOk(_.isNull(void 0), 'undefined is not null');
assert.notOk(_.isNull(NaN), 'NaN is not null');
assert.ok(_.isNull(null), 'but null is');
});
QUnit.test('isUndefined', function(assert) {
assert.ok(!_.isUndefined(1), 'numbers are defined');
assert.ok(!_.isUndefined(null), 'null is defined');
assert.ok(!_.isUndefined(false), 'false is defined');
assert.ok(!_.isUndefined(NaN), 'NaN is defined');
assert.notOk(_.isUndefined(1), 'numbers are defined');
assert.notOk(_.isUndefined(null), 'null is defined');
assert.notOk(_.isUndefined(false), 'false is defined');
assert.notOk(_.isUndefined(NaN), 'NaN is defined');
assert.ok(_.isUndefined(), 'nothing is undefined');
assert.ok(_.isUndefined(void 0), 'undefined is undefined');
});
QUnit.test('isError', function(assert) {
assert.ok(!_.isError(1), 'numbers are not Errors');
assert.ok(!_.isError(null), 'null is not an Error');
assert.ok(!_.isError(Error), 'functions are not Errors');
assert.notOk(_.isError(1), 'numbers are not Errors');
assert.notOk(_.isError(null), 'null is not an Error');
assert.notOk(_.isError(Error), 'functions are not Errors');
assert.ok(_.isError(new Error()), 'Errors are Errors');
assert.ok(_.isError(new EvalError()), 'EvalErrors are Errors');
assert.ok(_.isError(new RangeError()), 'RangeErrors are Errors');
@@ -893,13 +896,13 @@
QUnit.test('has', function(assert) {
var obj = {foo: 'bar', func: function(){}};
assert.ok(_.has(obj, 'foo'), 'has() checks that the object has a property.');
assert.ok(!_.has(obj, 'baz'), "has() returns false if the object doesn't have the property.");
assert.notOk(_.has(obj, 'baz'), "has() returns false if the object doesn't have the property.");
assert.ok(_.has(obj, 'func'), 'has() works for functions too.');
obj.hasOwnProperty = null;
assert.ok(_.has(obj, 'foo'), 'has() works even when the hasOwnProperty method is deleted.');
var child = {};
child.prototype = obj;
assert.ok(!_.has(child, 'foo'), 'has() does not check the prototype chain for a property.');
assert.notOk(_.has(child, 'foo'), 'has() does not check the prototype chain for a property.');
assert.strictEqual(_.has(null, 'foo'), false, 'has() returns false for null');
assert.strictEqual(_.has(void 0, 'foo'), false, 'has() returns false for undefined');
});
@@ -958,8 +961,8 @@
assert.equal(_.matcher({})(null), true, 'Empty spec called with null object returns true');
assert.equal(_.matcher({a: 1})(null), false, 'Non-empty spec called with null object returns false');
assert.ok(_.find(stooges, _.matcher({hair: false})) === curly, 'returns a predicate that can be used by finding functions.');
assert.ok(_.find(stooges, _.matcher(moe)) === moe, 'can be used to locate an object exists in a collection.');
assert.strictEqual(_.find(stooges, _.matcher({hair: false})), curly, 'returns a predicate that can be used by finding functions.');
assert.strictEqual(_.find(stooges, _.matcher(moe)), moe, 'can be used to locate an object exists in a collection.');
assert.deepEqual(_.filter([null, void 0], _.matcher({a: 1})), [], 'Do not throw on null values.');
assert.deepEqual(_.filter([null, void 0], _.matcher(null)), [null, void 0], 'null matches null');

View File

@@ -52,8 +52,8 @@
QUnit.test('#750 - Return _ instance.', function(assert) {
assert.expect(2);
var instance = _([]);
assert.ok(_(instance) === instance);
assert.ok(new _(instance) === instance);
assert.strictEqual(_(instance), instance);
assert.strictEqual(new _(instance), instance);
});
QUnit.test('identity', function(assert) {
@@ -137,11 +137,12 @@
});
QUnit.test('mixin', function(assert) {
_.mixin({
var ret = _.mixin({
myReverse: function(string) {
return string.split('').reverse().join('');
}
});
assert.equal(ret, _, 'returns the _ object to facilitate chaining');
assert.equal(_.myReverse('panacea'), 'aecanap', 'mixed in a function to _');
assert.equal(_('champ').myReverse(), 'pmahc', 'mixed in a function to the OOP wrapper');
});
@@ -188,7 +189,7 @@
var str = 'some string & another string & yet another';
var escaped = _.escape(str);
assert.ok(escaped.indexOf('&') !== -1, 'handles & aka &amp;');
assert.notStrictEqual(escaped.indexOf('&'), -1, 'handles & aka &amp;');
assert.equal(_.unescape(str), str, 'can unescape &amp;');
});
@@ -370,9 +371,9 @@
});
QUnit.test('#547 - _.templateSettings is unchanged by custom settings.', function(assert) {
assert.ok(!_.templateSettings.variable);
assert.notOk(_.templateSettings.variable);
_.template('', {}, {variable: 'x'});
assert.ok(!_.templateSettings.variable);
assert.notOk(_.templateSettings.variable);
});
QUnit.test('#556 - undefined template variables.', function(assert) {
@@ -397,11 +398,11 @@
assert.expect(2);
var count = 0;
var template = _.template('<%= f() %>');
template({f: function(){ assert.ok(!count++); }});
template({f: function(){ assert.notOk(count++); }});
var countEscaped = 0;
var templateEscaped = _.template('<%- f() %>');
templateEscaped({f: function(){ assert.ok(!countEscaped++); }});
templateEscaped({f: function(){ assert.notOk(countEscaped++); }});
});
QUnit.test('#746 - _.template settings are not modified.', function(assert) {

View File

@@ -84,18 +84,23 @@
};
};
var builtinIteratee;
// An internal function to generate callbacks that can be applied to each
// element in a collection, returning the desired result — either `identity`,
// an arbitrary callback, a property matcher, or a property accessor.
var cb = function(value, context, argCount) {
if (_.iteratee !== builtinIteratee) return _.iteratee(value, context);
if (value == null) return _.identity;
if (_.isFunction(value)) return optimizeCb(value, context, argCount);
if (_.isObject(value)) return _.matcher(value);
return _.property(value);
};
// An external wrapper for the internal callback generator.
_.iteratee = function(value, context) {
// External wrapper for our callback generator. Users may customize
// `_.iteratee` if they want additional predicate/iteratee shorthand styles.
// This abstraction hides the internal-only argCount argument.
_.iteratee = builtinIteratee = function(value, context) {
return cb(value, context, Infinity);
};
@@ -439,7 +444,7 @@
// Keep surrogate pair characters together
return obj.match(reStrSymbol);
}
if (isArrayLike(obj)) return _.map(obj);
if (isArrayLike(obj)) return _.map(obj, _.identity);
return _.values(obj);
};
@@ -462,7 +467,7 @@
// values in the array. Aliased as `head` and `take`. The **guard** check
// allows it to work with `_.map`.
_.first = _.head = _.take = function(array, n, guard) {
if (array == null) return void 0;
if (array == null || array.length < 1) return void 0;
if (n == null || guard) return array[0];
return _.initial(array, array.length - n);
};
@@ -477,7 +482,7 @@
// Get the last element of an array. Passing **n** will return the last N
// values in the array.
_.last = function(array, n, guard) {
if (array == null) return void 0;
if (array == null || array.length < 1) return void 0;
if (n == null || guard) return array[array.length - 1];
return _.rest(array, Math.max(0, array.length - n));
};
@@ -491,7 +496,7 @@
// Trim out all falsy values from an array.
_.compact = function(array) {
return _.filter(array);
return _.filter(array, Boolean);
};
// Internal implementation of a recursive `flatten` function.
@@ -1094,7 +1099,7 @@
return result;
});
// Return a copy of the object without the blacklisted properties.
// Return a copy of the object without the blacklisted properties.
_.omit = restArgs(function(obj, keys) {
var iteratee = keys[0], context;
if (_.isFunction(iteratee)) {
@@ -1403,7 +1408,7 @@
return new Date().getTime();
};
// List of HTML entities for escaping.
// List of HTML entities for escaping.
var escapeMap = {
'&': '&amp;',
'<': '&lt;',
@@ -1568,6 +1573,7 @@
return chainResult(this, func.apply(_, args));
};
});
return _;
};
// Add all of the Underscore functions to the wrapper object.
@@ -1602,7 +1608,7 @@
_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;
_.prototype.toString = function() {
return '' + this._wrapped;
return String(this._wrapped);
};
// AMD registration happens at the end for compatibility with AMD loaders