diff --git a/dist/lodash.underscore.js b/dist/lodash.underscore.js
index 32ce69e61..1aed620b0 100644
--- a/dist/lodash.underscore.js
+++ b/dist/lodash.underscore.js
@@ -3,7 +3,7 @@
* Lo-Dash 3.0.0-pre (Custom Build)
* Build: `lodash underscore -o ./dist/lodash.underscore.js`
* Copyright 2012-2014 The Dojo Foundation
- * Based on Underscore.js 1.6.0
+ * Based on Underscore.js 1.7.0
* Copyright 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
* Available under MIT license
*/
@@ -655,6 +655,30 @@
return false;
}
+ /**
+ * The base implementation of `_.assign` without support for argument juggling,
+ * multiple sources, and `this` binding.
+ *
+ * @private
+ * @param {Object} object The destination object.
+ * @param {Object} source The source object.
+ * @param {Function} [customizer] The function to customize assigning values.
+ * @returns {Object} Returns the destination object.
+ */
+ function baseAssign(object, source, customizer) {
+ var index = -1,
+ props = keys(source),
+ length = props.length;
+
+ while (++index < length) {
+ var key = props[index];
+ object[key] = customizer
+ ? customizer(object[key], source[key], key, object, source)
+ : source[key];
+ }
+ return object;
+ }
+
/**
* The base implementation of `_.bindAll` without support for individual
* method name arguments.
@@ -1215,7 +1239,7 @@
if (func) {
var arity = func.length;
- arity -= args.length;
+ arity = nativeMax(arity - args.length, 0);
}
return (bitmask & PARTIAL_FLAG)
? createWrapper(func, bitmask, arity, thisArg, args, holders)
@@ -4064,18 +4088,48 @@
*/
function memoize(func, resolver) {
if (!isFunction(func) || (resolver && !isFunction(resolver))) {
- throw new TypeError(funcErrorText);
+ throw new TypeError(FUNC_ERROR_TEXT);
}
- var cache = {};
- return function() {
+ var memoized = function() {
var key = resolver ? resolver.apply(this, arguments) : arguments[0];
if (key == '__proto__') {
return func.apply(this, arguments);
}
+ var cache = memoized.cache;
return hasOwnProperty.call(cache, key)
? cache[key]
: (cache[key] = func.apply(this, arguments));
};
+ memoized.cache = {};
+ return memoized;
+ }
+
+ /**
+ * Creates a function that negates the result of the predicate `func`. The
+ * `func` predicate is invoked with the `this` binding and arguments of the
+ * created function.
+ *
+ * @static
+ * @memberOf _
+ * @category Function
+ * @param {Function} predicate The predicate to negate.
+ * @returns {Function} Returns the new function.
+ * @example
+ *
+ * function isEven(n) {
+ * return n % 2 == 0;
+ * }
+ *
+ * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));
+ * // => [1, 3, 5]
+ */
+ function negate(predicate) {
+ if (!isFunction(predicate)) {
+ throw new TypeError(FUNC_ERROR_TEXT);
+ }
+ return function() {
+ return !predicate.apply(this, arguments);
+ };
}
/**
@@ -4252,10 +4306,7 @@
length = 2;
}
while (++index < length) {
- var source = args[index];
- for (var key in source) {
- object[key] = source[key];
- }
+ baseAssign(object, args[index]);
}
return object;
}
@@ -4975,14 +5026,19 @@
* });
* // => { 'name': 'fred' }
*/
- function omit(object) {
+ function omit(object, predicate, thisArg) {
if (object == null) {
return {};
}
- var iterable = toObject(object),
- props = arrayMap(baseFlatten(arguments, false, false, 1), String);
-
- return pickByArray(iterable, baseDifference(keysIn(iterable), props));
+ var iterable = toObject(object);
+ if (typeof predicate != 'function') {
+ var props = arrayMap(baseFlatten(arguments, false, false, 1), String);
+ return pickByArray(iterable, baseDifference(keysIn(iterable), props));
+ }
+ predicate = baseCallback(predicate, thisArg, 3);
+ return pickByCallback(iterable, function(value, key, object) {
+ return !predicate(value, key, object);
+ });
}
/**
@@ -5039,10 +5095,14 @@
* });
* // => { 'name': 'fred' }
*/
- function pick(object) {
- return object == null
- ? {}
- : pickByArray(toObject(object), baseFlatten(arguments, false, false, 1));
+ function pick(object, predicate, thisArg) {
+ if (object == null) {
+ return {};
+ }
+ var iterable = toObject(object);
+ return typeof predicate == 'function'
+ ? pickByCallback(iterable, baseCallback(predicate, thisArg, 3))
+ : pickByArray(iterable, baseFlatten(arguments, false, false, 1));
}
/**
@@ -5217,12 +5277,12 @@
* };\
* ');
*/
- function template(string, data, options) {
+ function template(string, options, otherOptions) {
var _ = lodash,
settings = _.templateSettings;
string = String(string == null ? '' : string);
- options = defaults({}, options, settings);
+ options = defaults({}, otherOptions || options, settings);
var index = 0,
source = "__p += '",
@@ -5267,7 +5327,7 @@
if (isError(result)) {
throw result;
}
- return data ? result(data) : result;
+ return result;
}
/**
@@ -5325,6 +5385,44 @@
}
}
+ /**
+ * Creates a function bound to an optional `thisArg`. If `func` is a property
+ * name the created callback returns the property value for a given element.
+ * If `func` is an object the created callback returns `true` for elements
+ * that contain the equivalent object properties, otherwise it returns `false`.
+ *
+ * @static
+ * @memberOf _
+ * @alias iteratee
+ * @category Utility
+ * @param {*} [func=identity] The value to convert to a callback.
+ * @param {*} [thisArg] The `this` binding of the created callback.
+ * @returns {Function} Returns the new function.
+ * @example
+ *
+ * var characters = [
+ * { 'name': 'barney', 'age': 36 },
+ * { 'name': 'fred', 'age': 40 }
+ * ];
+ *
+ * // wrap to create custom callback shorthands
+ * _.callback = _.wrap(_.callback, function(callback, func, thisArg) {
+ * var match = /^(.+?)__([gl]t)(.+)$/.exec(func);
+ * if (!match) {
+ * return callback(func, thisArg);
+ * }
+ * return function(object) {
+ * return match[2] == 'gt' ? object[match[1]] > match[3] : object[match[1]] < match[3];
+ * };
+ * });
+ *
+ * _.filter(characters, 'age__gt38');
+ * // => [{ 'name': 'fred', 'age': 40 }]
+ */
+ function callback(func, thisArg) {
+ return baseCallback(func, thisArg);
+ }
+
/**
* Creates a function that returns `value`.
*
@@ -5486,6 +5584,22 @@
return this;
}
+ /**
+ * A no-operation function.
+ *
+ * @static
+ * @memberOf _
+ * @category Utility
+ * @example
+ *
+ * var object = { 'name': 'fred' };
+ * _.noop(object) === undefined;
+ * // => true
+ */
+ function noop() {
+ // no operation performed
+ }
+
/**
* Gets the number of milliseconds that have elapsed since the Unix epoch
* (1 January 1970 00:00:00 UTC).
@@ -5745,6 +5859,7 @@
// add functions that return wrapped values when chaining
lodash.after = after;
+ lodash.before = before;
lodash.bind = bind;
lodash.bindAll = bindAll;
lodash.chain = chain;
@@ -5772,6 +5887,7 @@
lodash.matches = matches;
lodash.memoize = memoize;
lodash.mixin = mixin;
+ lodash.negate = negate;
lodash.omit = omit;
lodash.once = once;
lodash.pairs = pairs;
@@ -5803,6 +5919,7 @@
lodash.compose = flowRight;
lodash.each = forEach;
lodash.extend = assign;
+ lodash.iteratee = callback;
lodash.methods = functions;
lodash.object = zipObject;
lodash.select = filter;
@@ -5843,6 +5960,7 @@
lodash.max = max;
lodash.min = min;
lodash.noConflict = noConflict;
+ lodash.noop = noop;
lodash.now = now;
lodash.random = random;
lodash.reduce = reduce;
diff --git a/dist/lodash.underscore.min.js b/dist/lodash.underscore.min.js
index b0144d385..4664e881d 100644
--- a/dist/lodash.underscore.min.js
+++ b/dist/lodash.underscore.min.js
@@ -1,45 +1,45 @@
/**
* @license
- * Lo-Dash 3.0.0-pre (Custom Build) lodash.com/license | Underscore.js 1.6.0 underscorejs.org/LICENSE
+ * Lo-Dash 3.0.0-pre (Custom Build) lodash.com/license | Underscore.js 1.7.0 underscorejs.org/LICENSE
* Build: `lodash underscore -o ./dist/lodash.underscore.js`
*/
-;(function(){function n(n,r,t){t=(t||0)-1;for(var e=n?n.length:0;++te||typeof t=="undefined"){t=1;break n}if(tu(r,i)&&o.push(i)}return o}function b(n,r){var t=n?n.length:0;if(typeof t!="number"||-1>=t||t>Br){for(var t=-1,e=Nt(n),u=e.length;++t=t||t>Br){for(var t=Nt(n),e=t.length;e--;){var u=t[e];if(r(n[u],u,n)===Fr)break}return n}for(e=z(n);t--&&r(e[t],t,e)!==Fr;);return n
-}function d(n,r){var t=true;return b(n,function(n,e,u){return(t=!!r(n,e,u))||Fr}),t}function j(n,r){var t=[];return b(n,function(n,e,u){r(n,e,u)&&t.push(n)}),t}function w(n,r,t){var e;return t(n,function(n,t,u){return r(n,t,u)?(e=n,Fr):void 0}),e}function A(n,r,t,e){e=(e||0)-1;for(var u=n.length,o=-1,i=[];++ee(i,f)&&(r&&i.push(f),o.push(a))}return o}function M(n,r){return function(t,e,u){var o=r?r():{};if(e=v(e,u,3),$t(t)){u=-1;for(var i=t.length;++ur?0:r)}function P(r,t,e){var u=r?r.length:0;if(typeof e=="number")e=0>e?At(u+e,0):e||0;else if(e)return e=H(r,t),u&&r[e]===t?e:-1;
-return n(r,t,e)}function V(n,r,t){return G(n,null==r||t?1:0>r?0:r)}function G(n,t,e){var u=-1,o=n?n.length:0;if(t=null==t?0:+t||0,0>t&&(t=-t>o?0:o+t),e=typeof e=="undefined"||e>o?o:+e||0,0>e&&(e+=o),e&&e==o&&!t)return r(n);for(o=t>e?0:e-t,e=Array(o);++u>>1,a=t(n[i]),f=au&&(u=i)}else r=v(r,t,3),b(n,function(n,t,o){t=r(n,t,o),(t>e||-1/0===t&&t===u)&&(e=t,u=n)});return u}function rr(n,r){return Z(n,Er(r))}function tr(n,r,t,e){return($t(n)?s:S)(n,v(r,e,4),t,3>arguments.length,b)}function er(n,r,t,e){return($t(n)?g:S)(n,v(r,e,4),t,3>arguments.length,_)}function ur(n){n=z(n);for(var r=-1,t=n.length,e=Array(t);++rarguments.length?R(n,kr,r):O(n,kr|Ir,G(arguments,2),[],r)}function ar(n,r,t){function e(){var t=r-(Rt()-c);0>=t||t>r?(a&&clearTimeout(a),t=s,a=p=s=Or,t&&(g=Rt(),f=n.apply(l,i),p||a||(i=l=null))):p=setTimeout(e,t)}function u(){p&&clearTimeout(p),a=p=s=Or,(v||h!==r)&&(g=Rt(),f=n.apply(l,i),p||a||(i=l=null))}function o(){if(i=arguments,c=Rt(),l=this,s=v&&(p||!y),false===h)var t=y&&!p;else{a||y||(g=c);var o=h-(c-g),m=0>=o||o>h;m?(a&&(a=clearTimeout(a)),g=c,f=n.apply(l,i)):a||(a=setTimeout(u,o))
-}return m&&p?p=clearTimeout(p):p||r===h||(p=setTimeout(e,r)),t&&(m=true,f=n.apply(l,i)),!m||p||a||(i=l=null),f}var i,a,f,c,l,p,s,g=0,h=false,v=true;if(!hr(n))throw new TypeError(Mr);if(r=0>r?0:r,true===t)var y=true,v=false;else vr(t)&&(y=t.leading,h="maxWait"in t&&At(+t.maxWait||0,r),v="trailing"in t?t.trailing:v);return o.cancel=function(){p&&clearTimeout(p),a&&clearTimeout(a),a=p=s=Or},o}function fr(n){for(var r=G(arguments,1),t=r,e=fr.placeholder,u=-1,o=t.length,i=-1,a=[];++u"'`]/g,Wr=/^\[object .+?Constructor\]$/,Dr=/($^)/,zr=/[.*+?^${}()|[\]\/\\]/g,Cr=/['\n\r\u2028\u2029\\]/g,Pr="[object Arguments]",Vr="[object Boolean]",Gr="[object Date]",Hr="[object Error]",Jr="[object Number]",Kr="[object Object]",Lr="[object RegExp]",Qr="[object String]",Xr={};
-Xr[Pr]=Xr["[object Array]"]=Xr["[object Float32Array]"]=Xr["[object Float64Array]"]=Xr["[object Int8Array]"]=Xr["[object Int16Array]"]=Xr["[object Int32Array]"]=Xr["[object Uint8Array]"]=Xr["[object Uint8ClampedArray]"]=Xr["[object Uint16Array]"]=Xr["[object Uint32Array]"]=true,Xr["[object ArrayBuffer]"]=Xr[Vr]=Xr[Gr]=Xr[Hr]=Xr["[object Function]"]=Xr["[object Map]"]=Xr[Jr]=Xr[Kr]=Xr[Lr]=Xr["[object Set]"]=Xr[Qr]=Xr["[object WeakMap]"]=false;var Yr={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},Zr={"&":"&","<":"<",">":">",""":'"',"'":"'","`":"`"},nt={"function":true,object:true},rt={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},tt=nt[typeof window]&&window||this,et=nt[typeof exports]&&exports&&!exports.nodeType&&exports,ut=nt[typeof module]&&module&&!module.nodeType&&module,ot=et&&ut&&typeof global=="object"&&global;
-!ot||ot.global!==ot&&ot.window!==ot&&ot.self!==ot||(tt=ot);var it=ut&&ut.exports===et&&et,at=Array.prototype,ft=Object.prototype,ct=Function.prototype.toString,lt=ft.hasOwnProperty,pt=tt._,st=ft.toString,gt=RegExp("^"+function(n){return n=null==n?"":n+"",zr.lastIndex=0,zr.test(n)?n.replace(zr,"\\$&"):n}(st).replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),ht=Math.ceil,vt=Math.floor,yt=at.push,mt=ft.propertyIsEnumerable,bt=at.splice,_t=yr(_t=Object.create)&&_t,dt=yr(dt=Array.isArray)&&dt,jt=tt.isFinite,wt=yr(wt=Object.keys)&&wt,At=Math.max,xt=Math.min,Tt=yr(Tt=Date.now)&&Tt,Et=Math.random,Ot={};
-!function(){var n={0:1,length:1};Ot.spliceObjects=(bt.call(n,0,1),!n[0])}(0,0),i.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,variable:""},_t||(y=function(){function n(){}return function(r){if(vr(r)){n.prototype=r;var t=new n;n.prototype=null}return t||tt.Object()}}());var kt=V,St=C,It=M(function(n,r,t){lt.call(n,t)?++n[t]:n[t]=1}),Ft=M(function(n,r,t){lt.call(n,t)?n[t].push(r):n[t]=[r]}),Mt=M(function(n,r,t){n[t]=r}),qt=M(function(n,r,t){n[t?0:1].push(r)
-},function(){return[[],[]]}),Bt=fr(function(n,r){var t;if(!hr(r))throw new TypeError(Mr);return function(){return 0<--n?t=r.apply(this,arguments):r=null,t}},2);sr(arguments)||(sr=function(n){var r=n&&typeof n=="object"?n.length:Or;return typeof r=="number"&&-1--n?r.apply(this,arguments):void 0}},i.bind=ir,i.bindAll=function(n){for(var r=n,t=1r?0:r)},i.intersection=function(){for(var n=[],r=-1,t=arguments.length;++ri(f,e)){for(r=t;--r;)if(0>i(n[r],e))continue n;
-f.push(e)}return f},i.invert=function(n){for(var r=-1,t=Nt(n),e=t.length,u={};++ro?0:o>>>0);
-for(r=v(r,e,3),b(n,function(n,t,e){i[++u]={a:r(n,t,e),b:u,c:n}}),o=i.length,i.sort(t);o--;)i[o]=i[o].c;return i},i.take=St,i.tap=function(n,r){return r(n),n},i.throttle=function(n,r,t){var e=true,u=true;if(!hr(n))throw new TypeError(funcErrorText);return false===t?e=false:vr(t)&&(e="leading"in t?t.leading:e,u="trailing"in t?t.trailing:u),ar(n,r,{leading:e,maxWait:r,trailing:u})},i.times=function(n,r,t){n=jt(n=+n)&&-1r)return function(){};
-if(!c(n,hr))throw new TypeError(Mr);return function(){for(var t=r,e=n[t].apply(this,arguments);t--;)e=n[t].call(this,e);return e}},i.each=Y,i.extend=cr,i.methods=pr,i.object=function(n,r){var t=-1,e=n?n.length:0,u={};for(r||!e||$t(n[0])||(r=[]);++tr?0:r))},i.lastIndexOf=function(n,r,t){var e=n?n.length:0;for(typeof t=="number"&&(e=(0>t?At(e+t,0):xt(t||0,e-1))+1);e--;)if(n[e]===r)return e;
-return-1},i.max=nr,i.min=function(n,r,t){var e=1/0,u=e,o=typeof r;if("number"!=o&&"string"!=o||!t||t[r]!==n||(r=null),null==r)for(t=-1,n=z(n),o=n.length;++tr?0:+r||0,n.length),n)
-},Tr(cr({},i)),i.VERSION="3.0.0-pre",i.prototype.chain=function(){return this.__chain__=true,this},i.prototype.value=function(){return this.__wrapped__},f("pop push reverse shift sort splice unshift".split(" "),function(n){var r=at[n];i.prototype[n]=function(){var n=this.__wrapped__;return r.apply(n,arguments),Ot.spliceObjects||0!==n.length||delete n[0],this}}),f(["concat","join","slice"],function(n){var r=at[n];i.prototype[n]=function(){var n=r.apply(this.__wrapped__,arguments);return this.__chain__&&(n=new a(n),n.__chain__=true),n
-}}),typeof define=="function"&&typeof define.amd=="object"&&define.amd?(tt._=i, define("underscore",function(){return i})):et&&ut?it?(ut.exports=i)._=i:et._=i:tt._=i}).call(this);
\ No newline at end of file
+;(function(){function n(n,r,t){t=(t||0)-1;for(var e=n?n.length:0;++te||typeof t=="undefined"){t=1;break n}if(tu(r,i)&&o.push(i)}return o}function b(n,r){var t=n?n.length:0;if(typeof t!="number"||-1>=t||t>Ur)return x(n,r,Dt);for(var e=-1,u=V(n);++e=t||t>Ur){for(var t=Dt(n),e=t.length;e--;){var u=t[e];if(r(n[u],u,n)===$r)break}return n}for(e=V(n);t--&&r(e[t],t,e)!==$r;);return n}function d(n,r){var t=true;return b(n,function(n,e,u){return(t=!!r(n,e,u))||$r
+}),t}function j(n,r){var t=[];return b(n,function(n,e,u){r(n,e,u)&&t.push(n)}),t}function w(n,r,t){var e;return t(n,function(n,t,u){return r(n,t,u)?(e=n,$r):void 0}),e}function A(n,r,t,e){e=(e||0)-1;for(var u=n.length,o=-1,i=[];++ee(i,a)&&(r&&i.push(a),o.push(f))}return o}function B(n,r){return function(t,e,u){var o=r?r():{};if(e=v(e,u,3),Wt(t)){u=-1;
+for(var i=t.length;++ur?0:r)
+}function H(r,t,e){var u=r?r.length:0;if(typeof e=="number")e=0>e?Ot(u+e,0):e||0;else if(e)return e=L(r,t),u&&r[e]===t?e:-1;return n(r,t,e)}function J(n,r,t){return K(n,null==r||t?1:0>r?0:r)}function K(n,t,e){var u=-1,o=n?n.length:0;if(t=null==t?0:+t||0,0>t&&(t=-t>o?0:o+t),e=typeof e=="undefined"||e>o?o:+e||0,0>e&&(e+=o),e&&e==o&&!t)return r(n);for(o=t>e?0:e-t,e=Array(o);++u>>1,f=t(n[i]),a=fu&&(u=i)}else r=v(r,t,3),b(n,function(n,t,o){t=r(n,t,o),(t>e||-1/0===t&&t===u)&&(e=t,u=n)});return u}function ur(n,r){return tr(n,Ir(r))}function or(n,r,t,e){return(Wt(n)?s:F)(n,v(r,e,4),t,3>arguments.length,b)}function ir(n,r,t,e){return(Wt(n)?g:F)(n,v(r,e,4),t,3>arguments.length,_)}function fr(n){n=V(n);for(var r=-1,t=n.length,e=Array(t);++rarguments.length?W(n,Mr,r):S(n,Mr|Br,K(arguments,2),[],r)}function pr(n,r,t){function e(){var t=r-(zt()-c);0>=t||t>r?(f&&clearTimeout(f),t=s,f=p=s=Fr,t&&(g=zt(),a=n.apply(l,i),p||f||(i=l=null))):p=setTimeout(e,t)}function u(){p&&clearTimeout(p),f=p=s=Fr,(v||h!==r)&&(g=zt(),a=n.apply(l,i),p||f||(i=l=null))}function o(){if(i=arguments,c=zt(),l=this,s=v&&(p||!y),false===h)var t=y&&!p;
+else{f||y||(g=c);var o=h-(c-g),m=0>=o||o>h;m?(f&&(f=clearTimeout(f)),g=c,a=n.apply(l,i)):f||(f=setTimeout(u,o))}return m&&p?p=clearTimeout(p):p||r===h||(p=setTimeout(e,r)),t&&(m=true,a=n.apply(l,i)),!m||p||f||(i=l=null),a}var i,f,a,c,l,p,s,g=0,h=false,v=true;if(!br(n))throw new TypeError(Nr);if(r=0>r?0:r,true===t)var y=true,v=false;else _r(t)&&(y=t.leading,h="maxWait"in t&&Ot(+t.maxWait||0,r),v="trailing"in t?t.trailing:v);return o.cancel=function(){p&&clearTimeout(p),f&&clearTimeout(f),f=p=s=Fr},o}function sr(n){for(var r=K(arguments,1),t=r,e=sr.placeholder,u=-1,o=t.length,i=-1,f=[];++u"'`]/g,Pr=/^\[object .+?Constructor\]$/,Vr=/($^)/,Gr=/[.*+?^${}()|[\]\/\\]/g,Hr=/['\n\r\u2028\u2029\\]/g,Jr="[object Arguments]",Kr="[object Boolean]",Lr="[object Date]",Qr="[object Error]",Xr="[object Number]",Yr="[object Object]",Zr="[object RegExp]",nt="[object String]",rt={};
+rt[Jr]=rt["[object Array]"]=rt["[object Float32Array]"]=rt["[object Float64Array]"]=rt["[object Int8Array]"]=rt["[object Int16Array]"]=rt["[object Int32Array]"]=rt["[object Uint8Array]"]=rt["[object Uint8ClampedArray]"]=rt["[object Uint16Array]"]=rt["[object Uint32Array]"]=true,rt["[object ArrayBuffer]"]=rt[Kr]=rt[Lr]=rt[Qr]=rt["[object Function]"]=rt["[object Map]"]=rt[Xr]=rt[Yr]=rt[Zr]=rt["[object Set]"]=rt[nt]=rt["[object WeakMap]"]=false;var tt={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},et={"&":"&","<":"<",">":">",""":'"',"'":"'","`":"`"},ut={"function":true,object:true},ot={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},it=ut[typeof window]&&window||this,ft=ut[typeof exports]&&exports&&!exports.nodeType&&exports,at=ut[typeof module]&&module&&!module.nodeType&&module,ct=ft&&at&&typeof global=="object"&&global;
+!ct||ct.global!==ct&&ct.window!==ct&&ct.self!==ct||(it=ct);var lt=at&&at.exports===ft&&ft,pt=Array.prototype,st=Object.prototype,gt=Function.prototype.toString,ht=st.hasOwnProperty,vt=it._,yt=st.toString,mt=RegExp("^"+function(n){return n=null==n?"":n+"",Gr.lastIndex=0,Gr.test(n)?n.replace(Gr,"\\$&"):n}(yt).replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),bt=Math.ceil,_t=Math.floor,dt=pt.push,jt=st.propertyIsEnumerable,wt=pt.splice,At=dr(At=Object.create)&&At,xt=dr(xt=Array.isArray)&&xt,Tt=it.isFinite,Et=dr(Et=Object.keys)&&Et,Ot=Math.max,kt=Math.min,St=dr(St=Date.now)&&St,It=Math.random,Ft={};
+!function(){var n={0:1,length:1};Ft.spliceObjects=(wt.call(n,0,1),!n[0])}(0,0),i.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,variable:""},At||(y=function(){function n(){}return function(r){if(_r(r)){n.prototype=r;var t=new n;n.prototype=null}return t||it.Object()}}());var Mt=J,qt=G,Bt=B(function(n,r,t){ht.call(n,t)?++n[t]:n[t]=1}),$t=B(function(n,r,t){ht.call(n,t)?n[t].push(r):n[t]=[r]}),Nt=B(function(n,r,t){n[t]=r}),Rt=B(function(n,r,t){n[t?0:1].push(r)
+},function(){return[[],[]]}),Ut=sr(cr,2);yr(arguments)||(yr=function(n){var r=n&&typeof n=="object"?n.length:Fr;return typeof r=="number"&&-1--n?r.apply(this,arguments):void 0}},i.before=cr,i.bind=lr,i.bindAll=function(n){for(var r=n,t=1r?0:r)},i.intersection=function(){for(var n=[],r=-1,t=arguments.length;++ri(a,e)){for(r=t;--r;)if(0>i(n[r],e))continue n;a.push(e)}return a},i.invert=function(n){for(var r=-1,t=Dt(n),e=t.length,u={};++ro?0:o>>>0);for(r=v(r,e,3),b(n,function(n,t,e){i[++u]={a:r(n,t,e),b:u,c:n}}),o=i.length,i.sort(t);o--;)i[o]=i[o].c;return i},i.take=qt,i.tap=function(n,r){return r(n),n},i.throttle=function(n,r,t){var e=true,u=true;if(!br(n))throw new TypeError(funcErrorText);return false===t?e=false:_r(t)&&(e="leading"in t?t.leading:e,u="trailing"in t?t.trailing:u),pr(n,r,{leading:e,maxWait:r,trailing:u})},i.times=function(n,r,t){n=Tt(n=+n)&&-1r)return function(){};if(!c(n,br))throw new TypeError(Nr);return function(){for(var t=r,e=n[t].apply(this,arguments);t--;)e=n[t].call(this,e);return e}},i.each=rr,i.extend=gr,i.iteratee=function(n,r){return v(n,r)},i.methods=vr,i.object=function(n,r){var t=-1,e=n?n.length:0,u={};for(r||!e||Wt(n[0])||(r=[]);++tr?0:r))
+},i.lastIndexOf=function(n,r,t){var e=n?n.length:0;for(typeof t=="number"&&(e=(0>t?Ot(e+t,0):kt(t||0,e-1))+1);e--;)if(n[e]===r)return e;return-1},i.max=er,i.min=function(n,r,t){var e=1/0,u=e,o=typeof r;if("number"!=o&&"string"!=o||!t||t[r]!==n||(r=null),null==r)for(t=-1,n=V(n),o=n.length;++tr?0:+r||0,n.length),n)
+},Sr(gr({},i)),i.VERSION="3.0.0-pre",i.prototype.chain=function(){return this.__chain__=true,this},i.prototype.value=function(){return this.__wrapped__},a("pop push reverse shift sort splice unshift".split(" "),function(n){var r=pt[n];i.prototype[n]=function(){var n=this.__wrapped__;return r.apply(n,arguments),Ft.spliceObjects||0!==n.length||delete n[0],this}}),a(["concat","join","slice"],function(n){var r=pt[n];i.prototype[n]=function(){var n=r.apply(this.__wrapped__,arguments);return this.__chain__&&(n=new f(n),n.__chain__=true),n
+}}),typeof define=="function"&&typeof define.amd=="object"&&define.amd?(it._=i, define("underscore",function(){return i})):ft&&at?lt?(at.exports=i)._=i:ft._=i:it._=i}).call(this);
\ No newline at end of file
diff --git a/lodash.js b/lodash.js
index d4d6145d4..cefd78a29 100644
--- a/lodash.js
+++ b/lodash.js
@@ -2,7 +2,7 @@
* @license
* Lo-Dash 3.0.0-pre
* Copyright 2012-2014 The Dojo Foundation
- * Based on Underscore.js 1.6.0
+ * Based on Underscore.js 1.7.0
* Copyright 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
* Available under MIT license
*/
diff --git a/test/backbone.html b/test/backbone.html
index d8446139e..94404469c 100644
--- a/test/backbone.html
+++ b/test/backbone.html
@@ -44,15 +44,6 @@
QUnit.config.asyncRetries = 10;
QUnit.config.hidepassed = true;
- // excuse tests we intentionally fail or those with problems
- QUnit.config.excused = {
- 'Backbone.Router': {
- '#1695 - hashChange to pushState with search.': [
- 'Expected 1 assertions, but 0 were run'
- ]
- }
- };
-
// load Lo-Dash
if (!ui.isModularize) {
document.write('