-
Notifications
You must be signed in to change notification settings - Fork 0
/
multivariate-normal.min.js
8 lines (8 loc) · 220 KB
/
multivariate-normal.min.js
1
2
3
4
5
6
7
8
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.MultivariateNormal=f()}})(function(){var define,module,exports;return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _validation=require("./validation.js");var _gaussian=require("gaussian");var _gaussian2=_interopRequireDefault(_gaussian);var _numeric=require("numeric");var _numeric2=_interopRequireDefault(_numeric);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}var standardNormalDist=(0,_gaussian2.default)(0,1);var standardNormalVector=function standardNormalVector(length){var ary=[];for(var i=0;i<length;i++){ary.push(standardNormalDist.ppf(Math.random()))}return ary};var Distribution=function Distribution(n,mean,cov,_ref){var u=_ref.u;var s=_ref.s;var v=_ref.v;return{sample:function sample(){var sqrtS=s.map(Math.sqrt);var scaledV=v.map(function(row){return row.map(function(val,colIdx){return val*sqrtS[colIdx]})});var standardNormal=standardNormalVector(n);var variants=_numeric2.default.dot(standardNormal,_numeric2.default.transpose(scaledV));return variants.map(function(variant,idx){return variant+mean[idx]})},getMean:function getMean(){return mean},setMean:function setMean(unvalidatedMean){var newMean=(0,_validation.validateMean)(unvalidatedMean,n);return Distribution(n,newMean,cov,{u:u,s:s,v:v})},getCov:function getCov(){return cov},setCov:function setCov(unvalidatedCov){var _validateCovAndGetSVD=(0,_validation.validateCovAndGetSVD)(unvalidatedCov,n);var newCov=_validateCovAndGetSVD.cov;var newSVD=_validateCovAndGetSVD.svd;return Distribution(n,mean,newCov,newSVD)}}};exports.default=Distribution},{"./validation.js":3,gaussian:4,numeric:6}],2:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _lodash=require("lodash");var _lodash2=_interopRequireDefault(_lodash);var _validation=require("./validation.js");var _distribution=require("./distribution.js");var _distribution2=_interopRequireDefault(_distribution);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}var MultivariateNormal=function MultivariateNormal(unvalidatedMean,unvalidatedCov){if(!_lodash2.default.isArray(unvalidatedMean)){throw new Error("mean must be an array")}var n=unvalidatedMean.length;var mean=(0,_validation.validateMean)(unvalidatedMean,n);var _validateCovAndGetSVD=(0,_validation.validateCovAndGetSVD)(unvalidatedCov,n);var cov=_validateCovAndGetSVD.cov;var svd=_validateCovAndGetSVD.svd;return(0,_distribution2.default)(n,mean,cov,svd)};exports.default=MultivariateNormal},{"./distribution.js":1,"./validation.js":3,lodash:5}],3:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.validateCovAndGetSVD=exports.validateMean=undefined;var _lodash=require("lodash");var _lodash2=_interopRequireDefault(_lodash);var _numeric=require("numeric");var _numeric2=_interopRequireDefault(_numeric);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}var deepFreeze=function deepFreeze(ary){if(_lodash2.default.isArray(ary)){ary.forEach(deepFreeze);Object.freeze(ary)}};var validateMean=function validateMean(mean,n){if(!_lodash2.default.isArray(mean)){throw new Error("Mean must be an array")}if(!_lodash2.default.every(mean,_lodash2.default.isNumber)){throw new Error("Mean must be an array of numbers")}if(mean.length!==n){throw new Error("Expected mean to have length "+n+", but had length "+mean.length)}Object.freeze(mean);return mean};var validateCovAndGetSVD=function validateCovAndGetSVD(cov,n){if(!_lodash2.default.isArray(cov)){throw new Error("Covariance must be an array")}if(cov.length!==n){throw new Error("Covariance matrix had "+cov.length+" rows, but it should be a "+n+"x"+n+" square matrix")}cov.forEach(function(row,idx){if(!_lodash2.default.isArray(row)){throw new Error("Row "+idx+" of covariance matrix was not an array")}if(row.length!==n){throw new Error("Row "+idx+" of covariance matrix had length "+row.length+", but it should have length "+n)}if(!_lodash2.default.every(row,_lodash2.default.isNumber)){throw new Error("Row "+idx+" of covariance matrix contained a non-numeric value")}});var eigenvalues=_numeric2.default.eig(cov).lambda.x;if(_lodash2.default.some(eigenvalues,function(v){return v<0})){throw new Error("Covariance isn't positive semidefinite")}if(!_numeric2.default.same(_numeric2.default.transpose(cov),cov)){throw new Error("Covariance isn't symmetric")}var _Numeric$svd=_numeric2.default.svd(cov);var u=_Numeric$svd.U;var s=_Numeric$svd.S;var v=_Numeric$svd.V;deepFreeze(cov);deepFreeze(u);deepFreeze(s);deepFreeze(v);return{cov:cov,svd:{u:u,s:s,v:v}}};exports.validateMean=validateMean;exports.validateCovAndGetSVD=validateCovAndGetSVD},{lodash:5,numeric:6}],4:[function(require,module,exports){(function(exports){var erfc=function(x){var z=Math.abs(x);var t=1/(1+z/2);var r=t*Math.exp(-z*z-1.26551223+t*(1.00002368+t*(.37409196+t*(.09678418+t*(-.18628806+t*(.27886807+t*(-1.13520398+t*(1.48851587+t*(-.82215223+t*.17087277)))))))));return x>=0?r:2-r};var ierfc=function(x){if(x>=2){return-100}if(x<=0){return 100}var xx=x<1?x:2-x;var t=Math.sqrt(-2*Math.log(xx/2));var r=-.70711*((2.30753+t*.27061)/(1+t*(.99229+t*.04481))-t);for(var j=0;j<2;j++){var err=erfc(r)-xx;r+=err/(1.1283791670955126*Math.exp(-(r*r))-r*err)}return x<1?r:-r};var Gaussian=function(mean,variance){if(variance<=0){throw new Error("Variance must be > 0 (but was "+variance+")")}this.mean=mean;this.variance=variance;this.standardDeviation=Math.sqrt(variance)};Gaussian.prototype.pdf=function(x){var m=this.standardDeviation*Math.sqrt(2*Math.PI);var e=Math.exp(-Math.pow(x-this.mean,2)/(2*this.variance));return e/m};Gaussian.prototype.cdf=function(x){return.5*erfc(-(x-this.mean)/(this.standardDeviation*Math.sqrt(2)))};Gaussian.prototype.ppf=function(x){return this.mean-this.standardDeviation*Math.sqrt(2)*ierfc(2*x)};Gaussian.prototype.mul=function(d){if(typeof d==="number"){return this.scale(d)}var precision=1/this.variance;var dprecision=1/d.variance;return fromPrecisionMean(precision+dprecision,precision*this.mean+dprecision*d.mean)};Gaussian.prototype.div=function(d){if(typeof d==="number"){return this.scale(1/d)}var precision=1/this.variance;var dprecision=1/d.variance;return fromPrecisionMean(precision-dprecision,precision*this.mean-dprecision*d.mean)};Gaussian.prototype.add=function(d){return gaussian(this.mean+d.mean,this.variance+d.variance)};Gaussian.prototype.sub=function(d){return gaussian(this.mean-d.mean,this.variance+d.variance)};Gaussian.prototype.scale=function(c){return gaussian(this.mean*c,this.variance*c*c)};var gaussian=function(mean,variance){return new Gaussian(mean,variance)};var fromPrecisionMean=function(precision,precisionmean){return gaussian(precisionmean/precision,1/precision)};exports(gaussian)})(typeof exports!=="undefined"?function(e){module.exports=e}:function(e){this["gaussian"]=e})},{}],5:[function(require,module,exports){(function(global){(function(){var undefined;var VERSION="4.11.2";var LARGE_ARRAY_SIZE=200;var FUNC_ERROR_TEXT="Expected a function";var HASH_UNDEFINED="__lodash_hash_undefined__";var PLACEHOLDER="__lodash_placeholder__";var BIND_FLAG=1,BIND_KEY_FLAG=2,CURRY_BOUND_FLAG=4,CURRY_FLAG=8,CURRY_RIGHT_FLAG=16,PARTIAL_FLAG=32,PARTIAL_RIGHT_FLAG=64,ARY_FLAG=128,REARG_FLAG=256,FLIP_FLAG=512;var UNORDERED_COMPARE_FLAG=1,PARTIAL_COMPARE_FLAG=2;var DEFAULT_TRUNC_LENGTH=30,DEFAULT_TRUNC_OMISSION="...";var HOT_COUNT=150,HOT_SPAN=16;var LAZY_FILTER_FLAG=1,LAZY_MAP_FLAG=2,LAZY_WHILE_FLAG=3;var INFINITY=1/0,MAX_SAFE_INTEGER=9007199254740991,MAX_INTEGER=1.7976931348623157e308,NAN=0/0;var MAX_ARRAY_LENGTH=4294967295,MAX_ARRAY_INDEX=MAX_ARRAY_LENGTH-1,HALF_MAX_ARRAY_LENGTH=MAX_ARRAY_LENGTH>>>1;var argsTag="[object Arguments]",arrayTag="[object Array]",boolTag="[object Boolean]",dateTag="[object Date]",errorTag="[object Error]",funcTag="[object Function]",genTag="[object GeneratorFunction]",mapTag="[object Map]",numberTag="[object Number]",objectTag="[object Object]",promiseTag="[object Promise]",regexpTag="[object RegExp]",setTag="[object Set]",stringTag="[object String]",symbolTag="[object Symbol]",weakMapTag="[object WeakMap]",weakSetTag="[object WeakSet]";var arrayBufferTag="[object ArrayBuffer]",dataViewTag="[object DataView]",float32Tag="[object Float32Array]",float64Tag="[object Float64Array]",int8Tag="[object Int8Array]",int16Tag="[object Int16Array]",int32Tag="[object Int32Array]",uint8Tag="[object Uint8Array]",uint8ClampedTag="[object Uint8ClampedArray]",uint16Tag="[object Uint16Array]",uint32Tag="[object Uint32Array]";var reEmptyStringLeading=/\b__p \+= '';/g,reEmptyStringMiddle=/\b(__p \+=) '' \+/g,reEmptyStringTrailing=/(__e\(.*?\)|\b__t\)) \+\n'';/g;var reEscapedHtml=/&(?:amp|lt|gt|quot|#39|#96);/g,reUnescapedHtml=/[&<>"'`]/g,reHasEscapedHtml=RegExp(reEscapedHtml.source),reHasUnescapedHtml=RegExp(reUnescapedHtml.source);var reEscape=/<%-([\s\S]+?)%>/g,reEvaluate=/<%([\s\S]+?)%>/g,reInterpolate=/<%=([\s\S]+?)%>/g;var reIsDeepProp=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,reIsPlainProp=/^\w*$/,rePropName=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]/g;var reRegExpChar=/[\\^$.*+?()[\]{}|]/g,reHasRegExpChar=RegExp(reRegExpChar.source);var reTrim=/^\s+|\s+$/g,reTrimStart=/^\s+/,reTrimEnd=/\s+$/;var reBasicWord=/[a-zA-Z0-9]+/g;var reEscapeChar=/\\(\\)?/g;var reEsTemplate=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;var reFlags=/\w*$/;var reHasHexPrefix=/^0x/i;var reIsBadHex=/^[-+]0x[0-9a-f]+$/i;var reIsBinary=/^0b[01]+$/i;var reIsHostCtor=/^\[object .+?Constructor\]$/;var reIsOctal=/^0o[0-7]+$/i;var reIsUint=/^(?:0|[1-9]\d*)$/;var reLatin1=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g;var reNoMatch=/($^)/;var reUnescapedString=/['\n\r\u2028\u2029\\]/g;var rsAstralRange="\\ud800-\\udfff",rsComboMarksRange="\\u0300-\\u036f\\ufe20-\\ufe23",rsComboSymbolsRange="\\u20d0-\\u20f0",rsDingbatRange="\\u2700-\\u27bf",rsLowerRange="a-z\\xdf-\\xf6\\xf8-\\xff",rsMathOpRange="\\xac\\xb1\\xd7\\xf7",rsNonCharRange="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",rsPunctuationRange="\\u2000-\\u206f",rsSpaceRange=" \\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",rsUpperRange="A-Z\\xc0-\\xd6\\xd8-\\xde",rsVarRange="\\ufe0e\\ufe0f",rsBreakRange=rsMathOpRange+rsNonCharRange+rsPunctuationRange+rsSpaceRange;var rsApos="['’]",rsAstral="["+rsAstralRange+"]",rsBreak="["+rsBreakRange+"]",rsCombo="["+rsComboMarksRange+rsComboSymbolsRange+"]",rsDigits="\\d+",rsDingbat="["+rsDingbatRange+"]",rsLower="["+rsLowerRange+"]",rsMisc="[^"+rsAstralRange+rsBreakRange+rsDigits+rsDingbatRange+rsLowerRange+rsUpperRange+"]",rsFitz="\\ud83c[\\udffb-\\udfff]",rsModifier="(?:"+rsCombo+"|"+rsFitz+")",rsNonAstral="[^"+rsAstralRange+"]",rsRegional="(?:\\ud83c[\\udde6-\\uddff]){2}",rsSurrPair="[\\ud800-\\udbff][\\udc00-\\udfff]",rsUpper="["+rsUpperRange+"]",rsZWJ="\\u200d";var rsLowerMisc="(?:"+rsLower+"|"+rsMisc+")",rsUpperMisc="(?:"+rsUpper+"|"+rsMisc+")",rsOptLowerContr="(?:"+rsApos+"(?:d|ll|m|re|s|t|ve))?",rsOptUpperContr="(?:"+rsApos+"(?:D|LL|M|RE|S|T|VE))?",reOptMod=rsModifier+"?",rsOptVar="["+rsVarRange+"]?",rsOptJoin="(?:"+rsZWJ+"(?:"+[rsNonAstral,rsRegional,rsSurrPair].join("|")+")"+rsOptVar+reOptMod+")*",rsSeq=rsOptVar+reOptMod+rsOptJoin,rsEmoji="(?:"+[rsDingbat,rsRegional,rsSurrPair].join("|")+")"+rsSeq,rsSymbol="(?:"+[rsNonAstral+rsCombo+"?",rsCombo,rsRegional,rsSurrPair,rsAstral].join("|")+")";var reApos=RegExp(rsApos,"g");var reComboMark=RegExp(rsCombo,"g");var reComplexSymbol=RegExp(rsFitz+"(?="+rsFitz+")|"+rsSymbol+rsSeq,"g");var reComplexWord=RegExp([rsUpper+"?"+rsLower+"+"+rsOptLowerContr+"(?="+[rsBreak,rsUpper,"$"].join("|")+")",rsUpperMisc+"+"+rsOptUpperContr+"(?="+[rsBreak,rsUpper+rsLowerMisc,"$"].join("|")+")",rsUpper+"?"+rsLowerMisc+"+"+rsOptLowerContr,rsUpper+"+"+rsOptUpperContr,rsDigits,rsEmoji].join("|"),"g");var reHasComplexSymbol=RegExp("["+rsZWJ+rsAstralRange+rsComboMarksRange+rsComboSymbolsRange+rsVarRange+"]");var reHasComplexWord=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;var contextProps=["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","_","clearTimeout","isFinite","parseInt","setTimeout"];var templateCounter=-1;var typedArrayTags={};typedArrayTags[float32Tag]=typedArrayTags[float64Tag]=typedArrayTags[int8Tag]=typedArrayTags[int16Tag]=typedArrayTags[int32Tag]=typedArrayTags[uint8Tag]=typedArrayTags[uint8ClampedTag]=typedArrayTags[uint16Tag]=typedArrayTags[uint32Tag]=true;typedArrayTags[argsTag]=typedArrayTags[arrayTag]=typedArrayTags[arrayBufferTag]=typedArrayTags[boolTag]=typedArrayTags[dataViewTag]=typedArrayTags[dateTag]=typedArrayTags[errorTag]=typedArrayTags[funcTag]=typedArrayTags[mapTag]=typedArrayTags[numberTag]=typedArrayTags[objectTag]=typedArrayTags[regexpTag]=typedArrayTags[setTag]=typedArrayTags[stringTag]=typedArrayTags[weakMapTag]=false;var cloneableTags={};cloneableTags[argsTag]=cloneableTags[arrayTag]=cloneableTags[arrayBufferTag]=cloneableTags[dataViewTag]=cloneableTags[boolTag]=cloneableTags[dateTag]=cloneableTags[float32Tag]=cloneableTags[float64Tag]=cloneableTags[int8Tag]=cloneableTags[int16Tag]=cloneableTags[int32Tag]=cloneableTags[mapTag]=cloneableTags[numberTag]=cloneableTags[objectTag]=cloneableTags[regexpTag]=cloneableTags[setTag]=cloneableTags[stringTag]=cloneableTags[symbolTag]=cloneableTags[uint8Tag]=cloneableTags[uint8ClampedTag]=cloneableTags[uint16Tag]=cloneableTags[uint32Tag]=true;cloneableTags[errorTag]=cloneableTags[funcTag]=cloneableTags[weakMapTag]=false;var deburredLetters={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss"};var htmlEscapes={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"};var htmlUnescapes={"&":"&","<":"<",">":">",""":'"',"'":"'","`":"`"};var objectTypes={"function":true,object:true};var stringEscapes={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"};var freeParseFloat=parseFloat,freeParseInt=parseInt;var freeExports=objectTypes[typeof exports]&&exports&&!exports.nodeType?exports:undefined;var freeModule=objectTypes[typeof module]&&module&&!module.nodeType?module:undefined;var moduleExports=freeModule&&freeModule.exports===freeExports?freeExports:undefined;var freeGlobal=checkGlobal(freeExports&&freeModule&&typeof global=="object"&&global);var freeSelf=checkGlobal(objectTypes[typeof self]&&self);var freeWindow=checkGlobal(objectTypes[typeof window]&&window);var thisGlobal=checkGlobal(objectTypes[typeof this]&&this);var root=freeGlobal||freeWindow!==(thisGlobal&&thisGlobal.window)&&freeWindow||freeSelf||thisGlobal||Function("return this")();function addMapEntry(map,pair){map.set(pair[0],pair[1]);return map}function addSetEntry(set,value){set.add(value);return set}function apply(func,thisArg,args){var length=args.length;switch(length){case 0:return func.call(thisArg);case 1:return func.call(thisArg,args[0]);case 2:return func.call(thisArg,args[0],args[1]);case 3:return func.call(thisArg,args[0],args[1],args[2])}return func.apply(thisArg,args)}function arrayAggregator(array,setter,iteratee,accumulator){var index=-1,length=array.length;while(++index<length){var value=array[index];setter(accumulator,value,iteratee(value),array)}return accumulator}function arrayConcat(array,other){var index=-1,length=array.length,othIndex=-1,othLength=other.length,result=Array(length+othLength);while(++index<length){result[index]=array[index]}while(++othIndex<othLength){result[index++]=other[othIndex]}return result}function arrayEach(array,iteratee){var index=-1,length=array.length;while(++index<length){if(iteratee(array[index],index,array)===false){break}}return array}function arrayEachRight(array,iteratee){var length=array.length;while(length--){if(iteratee(array[length],length,array)===false){break}}return array}function arrayEvery(array,predicate){var index=-1,length=array.length;while(++index<length){if(!predicate(array[index],index,array)){return false}}return true}function arrayFilter(array,predicate){var index=-1,length=array.length,resIndex=0,result=[];while(++index<length){var value=array[index];if(predicate(value,index,array)){result[resIndex++]=value}}return result}function arrayIncludes(array,value){return!!array.length&&baseIndexOf(array,value,0)>-1}function arrayIncludesWith(array,value,comparator){var index=-1,length=array.length;while(++index<length){if(comparator(value,array[index])){return true}}return false}function arrayMap(array,iteratee){var index=-1,length=array.length,result=Array(length);while(++index<length){result[index]=iteratee(array[index],index,array)}return result}function arrayPush(array,values){var index=-1,length=values.length,offset=array.length;while(++index<length){array[offset+index]=values[index]}return array}function arrayReduce(array,iteratee,accumulator,initAccum){var index=-1,length=array.length;if(initAccum&&length){accumulator=array[++index]}while(++index<length){accumulator=iteratee(accumulator,array[index],index,array)}return accumulator}function arrayReduceRight(array,iteratee,accumulator,initAccum){var length=array.length;if(initAccum&&length){accumulator=array[--length]}while(length--){accumulator=iteratee(accumulator,array[length],length,array)}return accumulator}function arraySome(array,predicate){var index=-1,length=array.length;while(++index<length){if(predicate(array[index],index,array)){return true}}return false}function baseFind(collection,predicate,eachFunc,retKey){var result;eachFunc(collection,function(value,key,collection){if(predicate(value,key,collection)){result=retKey?key:value;return false}});return result}function baseFindIndex(array,predicate,fromRight){var length=array.length,index=fromRight?length:-1;while(fromRight?index--:++index<length){if(predicate(array[index],index,array)){return index}}return-1}function baseIndexOf(array,value,fromIndex){if(value!==value){return indexOfNaN(array,fromIndex)}var index=fromIndex-1,length=array.length;while(++index<length){if(array[index]===value){return index}}return-1}function baseIndexOfWith(array,value,fromIndex,comparator){var index=fromIndex-1,length=array.length;while(++index<length){if(comparator(array[index],value)){return index}}return-1}function baseMean(array,iteratee){var length=array?array.length:0;return length?baseSum(array,iteratee)/length:NAN}function baseReduce(collection,iteratee,accumulator,initAccum,eachFunc){eachFunc(collection,function(value,index,collection){accumulator=initAccum?(initAccum=false,value):iteratee(accumulator,value,index,collection)});return accumulator}function baseSortBy(array,comparer){var length=array.length;array.sort(comparer);while(length--){array[length]=array[length].value}return array}function baseSum(array,iteratee){var result,index=-1,length=array.length;while(++index<length){var current=iteratee(array[index]);if(current!==undefined){result=result===undefined?current:result+current}}return result}function baseTimes(n,iteratee){var index=-1,result=Array(n);while(++index<n){result[index]=iteratee(index)}return result}function baseToPairs(object,props){return arrayMap(props,function(key){return[key,object[key]]})}function baseUnary(func){return function(value){return func(value)}}function baseValues(object,props){return arrayMap(props,function(key){return object[key]})}function charsStartIndex(strSymbols,chrSymbols){var index=-1,length=strSymbols.length;while(++index<length&&baseIndexOf(chrSymbols,strSymbols[index],0)>-1){}return index}function charsEndIndex(strSymbols,chrSymbols){var index=strSymbols.length;while(index--&&baseIndexOf(chrSymbols,strSymbols[index],0)>-1){}return index}function checkGlobal(value){return value&&value.Object===Object?value:null}function countHolders(array,placeholder){var length=array.length,result=0;while(length--){if(array[length]===placeholder){result++}}return result}function deburrLetter(letter){return deburredLetters[letter]}function escapeHtmlChar(chr){return htmlEscapes[chr]}function escapeStringChar(chr){return"\\"+stringEscapes[chr]}function indexOfNaN(array,fromIndex,fromRight){var length=array.length,index=fromIndex+(fromRight?0:-1);while(fromRight?index--:++index<length){var other=array[index];if(other!==other){return index}}return-1}function isHostObject(value){var result=false;if(value!=null&&typeof value.toString!="function"){try{result=!!(value+"")}catch(e){}}return result}function iteratorToArray(iterator){var data,result=[];while(!(data=iterator.next()).done){result.push(data.value)}return result}function mapToArray(map){var index=-1,result=Array(map.size);map.forEach(function(value,key){result[++index]=[key,value]});return result}function replaceHolders(array,placeholder){var index=-1,length=array.length,resIndex=0,result=[];while(++index<length){var value=array[index];if(value===placeholder||value===PLACEHOLDER){array[index]=PLACEHOLDER;result[resIndex++]=index}}return result}function setToArray(set){var index=-1,result=Array(set.size);set.forEach(function(value){result[++index]=value});return result}function stringSize(string){if(!(string&&reHasComplexSymbol.test(string))){return string.length}var result=reComplexSymbol.lastIndex=0;while(reComplexSymbol.test(string)){result++}return result}function stringToArray(string){return string.match(reComplexSymbol)}function unescapeHtmlChar(chr){return htmlUnescapes[chr]}function runInContext(context){context=context?_.defaults({},context,_.pick(root,contextProps)):root;var Date=context.Date,Error=context.Error,Math=context.Math,RegExp=context.RegExp,TypeError=context.TypeError;var arrayProto=context.Array.prototype,objectProto=context.Object.prototype,stringProto=context.String.prototype;var funcToString=context.Function.prototype.toString;var hasOwnProperty=objectProto.hasOwnProperty;var idCounter=0;var objectCtorString=funcToString.call(Object);var objectToString=objectProto.toString;var oldDash=root._;var reIsNative=RegExp("^"+funcToString.call(hasOwnProperty).replace(reRegExpChar,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");var Buffer=moduleExports?context.Buffer:undefined,Reflect=context.Reflect,Symbol=context.Symbol,Uint8Array=context.Uint8Array,clearTimeout=context.clearTimeout,enumerate=Reflect?Reflect.enumerate:undefined,getOwnPropertySymbols=Object.getOwnPropertySymbols,iteratorSymbol=typeof(iteratorSymbol=Symbol&&Symbol.iterator)=="symbol"?iteratorSymbol:undefined,objectCreate=Object.create,propertyIsEnumerable=objectProto.propertyIsEnumerable,setTimeout=context.setTimeout,splice=arrayProto.splice;var nativeCeil=Math.ceil,nativeFloor=Math.floor,nativeGetPrototype=Object.getPrototypeOf,nativeIsFinite=context.isFinite,nativeJoin=arrayProto.join,nativeKeys=Object.keys,nativeMax=Math.max,nativeMin=Math.min,nativeParseInt=context.parseInt,nativeRandom=Math.random,nativeReplace=stringProto.replace,nativeReverse=arrayProto.reverse,nativeSplit=stringProto.split;var DataView=getNative(context,"DataView"),Map=getNative(context,"Map"),Promise=getNative(context,"Promise"),Set=getNative(context,"Set"),WeakMap=getNative(context,"WeakMap"),nativeCreate=getNative(Object,"create");var metaMap=WeakMap&&new WeakMap;var nonEnumShadows=!propertyIsEnumerable.call({valueOf:1},"valueOf");var realNames={};var dataViewCtorString=toSource(DataView),mapCtorString=toSource(Map),promiseCtorString=toSource(Promise),setCtorString=toSource(Set),weakMapCtorString=toSource(WeakMap);var symbolProto=Symbol?Symbol.prototype:undefined,symbolValueOf=symbolProto?symbolProto.valueOf:undefined,symbolToString=symbolProto?symbolProto.toString:undefined;function lodash(value){if(isObjectLike(value)&&!isArray(value)&&!(value instanceof LazyWrapper)){if(value instanceof LodashWrapper){return value}if(hasOwnProperty.call(value,"__wrapped__")){return wrapperClone(value)}}return new LodashWrapper(value)}function baseLodash(){}function LodashWrapper(value,chainAll){this.__wrapped__=value;this.__actions__=[];this.__chain__=!!chainAll;this.__index__=0;this.__values__=undefined}lodash.templateSettings={escape:reEscape,evaluate:reEvaluate,interpolate:reInterpolate,variable:"",imports:{_:lodash}};lodash.prototype=baseLodash.prototype;lodash.prototype.constructor=lodash;LodashWrapper.prototype=baseCreate(baseLodash.prototype);LodashWrapper.prototype.constructor=LodashWrapper;function LazyWrapper(value){this.__wrapped__=value;this.__actions__=[];this.__dir__=1;this.__filtered__=false;this.__iteratees__=[];this.__takeCount__=MAX_ARRAY_LENGTH;this.__views__=[]}function lazyClone(){var result=new LazyWrapper(this.__wrapped__);result.__actions__=copyArray(this.__actions__);result.__dir__=this.__dir__;result.__filtered__=this.__filtered__;result.__iteratees__=copyArray(this.__iteratees__);result.__takeCount__=this.__takeCount__;result.__views__=copyArray(this.__views__);return result}function lazyReverse(){if(this.__filtered__){var result=new LazyWrapper(this);result.__dir__=-1;result.__filtered__=true}else{result=this.clone();result.__dir__*=-1}return result}function lazyValue(){var array=this.__wrapped__.value(),dir=this.__dir__,isArr=isArray(array),isRight=dir<0,arrLength=isArr?array.length:0,view=getView(0,arrLength,this.__views__),start=view.start,end=view.end,length=end-start,index=isRight?end:start-1,iteratees=this.__iteratees__,iterLength=iteratees.length,resIndex=0,takeCount=nativeMin(length,this.__takeCount__);if(!isArr||arrLength<LARGE_ARRAY_SIZE||arrLength==length&&takeCount==length){return baseWrapperValue(array,this.__actions__)}var result=[];outer:while(length--&&resIndex<takeCount){index+=dir;var iterIndex=-1,value=array[index];while(++iterIndex<iterLength){var data=iteratees[iterIndex],iteratee=data.iteratee,type=data.type,computed=iteratee(value);if(type==LAZY_MAP_FLAG){value=computed}else if(!computed){if(type==LAZY_FILTER_FLAG){continue outer}else{break outer}}}result[resIndex++]=value}return result}LazyWrapper.prototype=baseCreate(baseLodash.prototype);LazyWrapper.prototype.constructor=LazyWrapper;function Hash(){}function hashDelete(hash,key){return hashHas(hash,key)&&delete hash[key]}function hashGet(hash,key){if(nativeCreate){var result=hash[key];return result===HASH_UNDEFINED?undefined:result}return hasOwnProperty.call(hash,key)?hash[key]:undefined}function hashHas(hash,key){return nativeCreate?hash[key]!==undefined:hasOwnProperty.call(hash,key)}function hashSet(hash,key,value){hash[key]=nativeCreate&&value===undefined?HASH_UNDEFINED:value}Hash.prototype=nativeCreate?nativeCreate(null):objectProto;function MapCache(values){var index=-1,length=values?values.length:0;this.clear();while(++index<length){var entry=values[index];this.set(entry[0],entry[1])}}function mapClear(){this.__data__={hash:new Hash,map:Map?new Map:[],string:new Hash}}function mapDelete(key){var data=this.__data__;if(isKeyable(key)){return hashDelete(typeof key=="string"?data.string:data.hash,key)}return Map?data.map["delete"](key):assocDelete(data.map,key)}function mapGet(key){var data=this.__data__;if(isKeyable(key)){return hashGet(typeof key=="string"?data.string:data.hash,key)}return Map?data.map.get(key):assocGet(data.map,key)}function mapHas(key){var data=this.__data__;if(isKeyable(key)){return hashHas(typeof key=="string"?data.string:data.hash,key)}return Map?data.map.has(key):assocHas(data.map,key)}function mapSet(key,value){var data=this.__data__;if(isKeyable(key)){hashSet(typeof key=="string"?data.string:data.hash,key,value)}else if(Map){data.map.set(key,value)}else{assocSet(data.map,key,value)}return this}MapCache.prototype.clear=mapClear;MapCache.prototype["delete"]=mapDelete;MapCache.prototype.get=mapGet;MapCache.prototype.has=mapHas;MapCache.prototype.set=mapSet;function SetCache(values){var index=-1,length=values?values.length:0;this.__data__=new MapCache;while(++index<length){this.push(values[index])}}function cacheHas(cache,value){var map=cache.__data__;if(isKeyable(value)){var data=map.__data__,hash=typeof value=="string"?data.string:data.hash;return hash[value]===HASH_UNDEFINED}return map.has(value)}function cachePush(value){var map=this.__data__;if(isKeyable(value)){var data=map.__data__,hash=typeof value=="string"?data.string:data.hash;hash[value]=HASH_UNDEFINED}else{map.set(value,HASH_UNDEFINED)}}SetCache.prototype.push=cachePush;function Stack(values){var index=-1,length=values?values.length:0;this.clear();while(++index<length){var entry=values[index];this.set(entry[0],entry[1])}}function stackClear(){this.__data__={array:[],map:null}}function stackDelete(key){var data=this.__data__,array=data.array;return array?assocDelete(array,key):data.map["delete"](key)}function stackGet(key){var data=this.__data__,array=data.array;return array?assocGet(array,key):data.map.get(key)}function stackHas(key){var data=this.__data__,array=data.array;return array?assocHas(array,key):data.map.has(key)}function stackSet(key,value){var data=this.__data__,array=data.array;if(array){if(array.length<LARGE_ARRAY_SIZE-1){assocSet(array,key,value)}else{data.array=null;data.map=new MapCache(array)}}var map=data.map;if(map){map.set(key,value)}return this}Stack.prototype.clear=stackClear;Stack.prototype["delete"]=stackDelete;Stack.prototype.get=stackGet;Stack.prototype.has=stackHas;Stack.prototype.set=stackSet;function assocDelete(array,key){var index=assocIndexOf(array,key);if(index<0){return false}var lastIndex=array.length-1;if(index==lastIndex){array.pop()}else{splice.call(array,index,1)}return true}function assocGet(array,key){var index=assocIndexOf(array,key);return index<0?undefined:array[index][1]}function assocHas(array,key){return assocIndexOf(array,key)>-1}function assocIndexOf(array,key){var length=array.length;while(length--){if(eq(array[length][0],key)){return length}}return-1}function assocSet(array,key,value){var index=assocIndexOf(array,key);if(index<0){array.push([key,value])}else{array[index][1]=value}}function assignInDefaults(objValue,srcValue,key,object){if(objValue===undefined||eq(objValue,objectProto[key])&&!hasOwnProperty.call(object,key)){return srcValue}return objValue}function assignMergeValue(object,key,value){if(value!==undefined&&!eq(object[key],value)||typeof key=="number"&&value===undefined&&!(key in object)){object[key]=value}}function assignValue(object,key,value){var objValue=object[key];if(!(hasOwnProperty.call(object,key)&&eq(objValue,value))||value===undefined&&!(key in object)){object[key]=value}}function baseAggregator(collection,setter,iteratee,accumulator){baseEach(collection,function(value,key,collection){setter(accumulator,value,iteratee(value),collection);
});return accumulator}function baseAssign(object,source){return object&©Object(source,keys(source),object)}function baseAt(object,paths){var index=-1,isNil=object==null,length=paths.length,result=Array(length);while(++index<length){result[index]=isNil?undefined:get(object,paths[index])}return result}function baseClamp(number,lower,upper){if(number===number){if(upper!==undefined){number=number<=upper?number:upper}if(lower!==undefined){number=number>=lower?number:lower}}return number}function baseClone(value,isDeep,isFull,customizer,key,object,stack){var result;if(customizer){result=object?customizer(value,key,object,stack):customizer(value)}if(result!==undefined){return result}if(!isObject(value)){return value}var isArr=isArray(value);if(isArr){result=initCloneArray(value);if(!isDeep){return copyArray(value,result)}}else{var tag=getTag(value),isFunc=tag==funcTag||tag==genTag;if(isBuffer(value)){return cloneBuffer(value,isDeep)}if(tag==objectTag||tag==argsTag||isFunc&&!object){if(isHostObject(value)){return object?value:{}}result=initCloneObject(isFunc?{}:value);if(!isDeep){return copySymbols(value,baseAssign(result,value))}}else{if(!cloneableTags[tag]){return object?value:{}}result=initCloneByTag(value,tag,baseClone,isDeep)}}stack||(stack=new Stack);var stacked=stack.get(value);if(stacked){return stacked}stack.set(value,result);if(!isArr){var props=isFull?getAllKeys(value):keys(value)}arrayEach(props||value,function(subValue,key){if(props){key=subValue;subValue=value[key]}assignValue(result,key,baseClone(subValue,isDeep,isFull,customizer,key,value,stack))});return result}function baseConforms(source){var props=keys(source),length=props.length;return function(object){if(object==null){return!length}var index=length;while(index--){var key=props[index],predicate=source[key],value=object[key];if(value===undefined&&!(key in Object(object))||!predicate(value)){return false}}return true}}function baseCreate(proto){return isObject(proto)?objectCreate(proto):{}}function baseDelay(func,wait,args){if(typeof func!="function"){throw new TypeError(FUNC_ERROR_TEXT)}return setTimeout(function(){func.apply(undefined,args)},wait)}function baseDifference(array,values,iteratee,comparator){var index=-1,includes=arrayIncludes,isCommon=true,length=array.length,result=[],valuesLength=values.length;if(!length){return result}if(iteratee){values=arrayMap(values,baseUnary(iteratee))}if(comparator){includes=arrayIncludesWith;isCommon=false}else if(values.length>=LARGE_ARRAY_SIZE){includes=cacheHas;isCommon=false;values=new SetCache(values)}outer:while(++index<length){var value=array[index],computed=iteratee?iteratee(value):value;value=comparator||value!==0?value:0;if(isCommon&&computed===computed){var valuesIndex=valuesLength;while(valuesIndex--){if(values[valuesIndex]===computed){continue outer}}result.push(value)}else if(!includes(values,computed,comparator)){result.push(value)}}return result}var baseEach=createBaseEach(baseForOwn);var baseEachRight=createBaseEach(baseForOwnRight,true);function baseEvery(collection,predicate){var result=true;baseEach(collection,function(value,index,collection){result=!!predicate(value,index,collection);return result});return result}function baseExtremum(array,iteratee,comparator){var index=-1,length=array.length;while(++index<length){var value=array[index],current=iteratee(value);if(current!=null&&(computed===undefined?current===current&&!isSymbol(current):comparator(current,computed))){var computed=current,result=value}}return result}function baseFill(array,value,start,end){var length=array.length;start=toInteger(start);if(start<0){start=-start>length?0:length+start}end=end===undefined||end>length?length:toInteger(end);if(end<0){end+=length}end=start>end?0:toLength(end);while(start<end){array[start++]=value}return array}function baseFilter(collection,predicate){var result=[];baseEach(collection,function(value,index,collection){if(predicate(value,index,collection)){result.push(value)}});return result}function baseFlatten(array,depth,predicate,isStrict,result){var index=-1,length=array.length;predicate||(predicate=isFlattenable);result||(result=[]);while(++index<length){var value=array[index];if(depth>0&&predicate(value)){if(depth>1){baseFlatten(value,depth-1,predicate,isStrict,result)}else{arrayPush(result,value)}}else if(!isStrict){result[result.length]=value}}return result}var baseFor=createBaseFor();var baseForRight=createBaseFor(true);function baseForOwn(object,iteratee){return object&&baseFor(object,iteratee,keys)}function baseForOwnRight(object,iteratee){return object&&baseForRight(object,iteratee,keys)}function baseFunctions(object,props){return arrayFilter(props,function(key){return isFunction(object[key])})}function baseGet(object,path){path=isKey(path,object)?[path]:castPath(path);var index=0,length=path.length;while(object!=null&&index<length){object=object[toKey(path[index++])]}return index&&index==length?object:undefined}function baseGetAllKeys(object,keysFunc,symbolsFunc){var result=keysFunc(object);return isArray(object)?result:arrayPush(result,symbolsFunc(object))}function baseGt(value,other){return value>other}function baseHas(object,key){return hasOwnProperty.call(object,key)||typeof object=="object"&&key in object&&getPrototype(object)===null}function baseHasIn(object,key){return key in Object(object)}function baseInRange(number,start,end){return number>=nativeMin(start,end)&&number<nativeMax(start,end)}function baseIntersection(arrays,iteratee,comparator){var includes=comparator?arrayIncludesWith:arrayIncludes,length=arrays[0].length,othLength=arrays.length,othIndex=othLength,caches=Array(othLength),maxLength=Infinity,result=[];while(othIndex--){var array=arrays[othIndex];if(othIndex&&iteratee){array=arrayMap(array,baseUnary(iteratee))}maxLength=nativeMin(array.length,maxLength);caches[othIndex]=!comparator&&(iteratee||length>=120&&array.length>=120)?new SetCache(othIndex&&array):undefined}array=arrays[0];var index=-1,seen=caches[0];outer:while(++index<length&&result.length<maxLength){var value=array[index],computed=iteratee?iteratee(value):value;value=comparator||value!==0?value:0;if(!(seen?cacheHas(seen,computed):includes(result,computed,comparator))){othIndex=othLength;while(--othIndex){var cache=caches[othIndex];if(!(cache?cacheHas(cache,computed):includes(arrays[othIndex],computed,comparator))){continue outer}}if(seen){seen.push(computed)}result.push(value)}}return result}function baseInverter(object,setter,iteratee,accumulator){baseForOwn(object,function(value,key,object){setter(accumulator,iteratee(value),key,object)});return accumulator}function baseInvoke(object,path,args){if(!isKey(path,object)){path=castPath(path);object=parent(object,path);path=last(path)}var func=object==null?object:object[toKey(path)];return func==null?undefined:apply(func,object,args)}function baseIsEqual(value,other,customizer,bitmask,stack){if(value===other){return true}if(value==null||other==null||!isObject(value)&&!isObjectLike(other)){return value!==value&&other!==other}return baseIsEqualDeep(value,other,baseIsEqual,customizer,bitmask,stack)}function baseIsEqualDeep(object,other,equalFunc,customizer,bitmask,stack){var objIsArr=isArray(object),othIsArr=isArray(other),objTag=arrayTag,othTag=arrayTag;if(!objIsArr){objTag=getTag(object);objTag=objTag==argsTag?objectTag:objTag}if(!othIsArr){othTag=getTag(other);othTag=othTag==argsTag?objectTag:othTag}var objIsObj=objTag==objectTag&&!isHostObject(object),othIsObj=othTag==objectTag&&!isHostObject(other),isSameTag=objTag==othTag;if(isSameTag&&!objIsObj){stack||(stack=new Stack);return objIsArr||isTypedArray(object)?equalArrays(object,other,equalFunc,customizer,bitmask,stack):equalByTag(object,other,objTag,equalFunc,customizer,bitmask,stack)}if(!(bitmask&PARTIAL_COMPARE_FLAG)){var objIsWrapped=objIsObj&&hasOwnProperty.call(object,"__wrapped__"),othIsWrapped=othIsObj&&hasOwnProperty.call(other,"__wrapped__");if(objIsWrapped||othIsWrapped){var objUnwrapped=objIsWrapped?object.value():object,othUnwrapped=othIsWrapped?other.value():other;stack||(stack=new Stack);return equalFunc(objUnwrapped,othUnwrapped,customizer,bitmask,stack)}}if(!isSameTag){return false}stack||(stack=new Stack);return equalObjects(object,other,equalFunc,customizer,bitmask,stack)}function baseIsMatch(object,source,matchData,customizer){var index=matchData.length,length=index,noCustomizer=!customizer;if(object==null){return!length}object=Object(object);while(index--){var data=matchData[index];if(noCustomizer&&data[2]?data[1]!==object[data[0]]:!(data[0]in object)){return false}}while(++index<length){data=matchData[index];var key=data[0],objValue=object[key],srcValue=data[1];if(noCustomizer&&data[2]){if(objValue===undefined&&!(key in object)){return false}}else{var stack=new Stack;if(customizer){var result=customizer(objValue,srcValue,key,object,source,stack)}if(!(result===undefined?baseIsEqual(srcValue,objValue,customizer,UNORDERED_COMPARE_FLAG|PARTIAL_COMPARE_FLAG,stack):result)){return false}}}return true}function baseIteratee(value){if(typeof value=="function"){return value}if(value==null){return identity}if(typeof value=="object"){return isArray(value)?baseMatchesProperty(value[0],value[1]):baseMatches(value)}return property(value)}function baseKeys(object){return nativeKeys(Object(object))}function baseKeysIn(object){object=object==null?object:Object(object);var result=[];for(var key in object){result.push(key)}return result}if(enumerate&&!propertyIsEnumerable.call({valueOf:1},"valueOf")){baseKeysIn=function(object){return iteratorToArray(enumerate(object))}}function baseLt(value,other){return value<other}function baseMap(collection,iteratee){var index=-1,result=isArrayLike(collection)?Array(collection.length):[];baseEach(collection,function(value,key,collection){result[++index]=iteratee(value,key,collection)});return result}function baseMatches(source){var matchData=getMatchData(source);if(matchData.length==1&&matchData[0][2]){return matchesStrictComparable(matchData[0][0],matchData[0][1])}return function(object){return object===source||baseIsMatch(object,source,matchData)}}function baseMatchesProperty(path,srcValue){if(isKey(path)&&isStrictComparable(srcValue)){return matchesStrictComparable(toKey(path),srcValue)}return function(object){var objValue=get(object,path);return objValue===undefined&&objValue===srcValue?hasIn(object,path):baseIsEqual(srcValue,objValue,undefined,UNORDERED_COMPARE_FLAG|PARTIAL_COMPARE_FLAG)}}function baseMerge(object,source,srcIndex,customizer,stack){if(object===source){return}if(!(isArray(source)||isTypedArray(source))){var props=keysIn(source)}arrayEach(props||source,function(srcValue,key){if(props){key=srcValue;srcValue=source[key]}if(isObject(srcValue)){stack||(stack=new Stack);baseMergeDeep(object,source,key,srcIndex,baseMerge,customizer,stack)}else{var newValue=customizer?customizer(object[key],srcValue,key+"",object,source,stack):undefined;if(newValue===undefined){newValue=srcValue}assignMergeValue(object,key,newValue)}})}function baseMergeDeep(object,source,key,srcIndex,mergeFunc,customizer,stack){var objValue=object[key],srcValue=source[key],stacked=stack.get(srcValue);if(stacked){assignMergeValue(object,key,stacked);return}var newValue=customizer?customizer(objValue,srcValue,key+"",object,source,stack):undefined;var isCommon=newValue===undefined;if(isCommon){newValue=srcValue;if(isArray(srcValue)||isTypedArray(srcValue)){if(isArray(objValue)){newValue=objValue}else if(isArrayLikeObject(objValue)){newValue=copyArray(objValue)}else{isCommon=false;newValue=baseClone(srcValue,true)}}else if(isPlainObject(srcValue)||isArguments(srcValue)){if(isArguments(objValue)){newValue=toPlainObject(objValue)}else if(!isObject(objValue)||srcIndex&&isFunction(objValue)){isCommon=false;newValue=baseClone(srcValue,true)}else{newValue=objValue}}else{isCommon=false}}stack.set(srcValue,newValue);if(isCommon){mergeFunc(newValue,srcValue,srcIndex,customizer,stack)}stack["delete"](srcValue);assignMergeValue(object,key,newValue)}function baseNth(array,n){var length=array.length;if(!length){return}n+=n<0?length:0;return isIndex(n,length)?array[n]:undefined}function baseOrderBy(collection,iteratees,orders){var index=-1;iteratees=arrayMap(iteratees.length?iteratees:[identity],baseUnary(getIteratee()));var result=baseMap(collection,function(value,key,collection){var criteria=arrayMap(iteratees,function(iteratee){return iteratee(value)});return{criteria:criteria,index:++index,value:value}});return baseSortBy(result,function(object,other){return compareMultiple(object,other,orders)})}function basePick(object,props){object=Object(object);return arrayReduce(props,function(result,key){if(key in object){result[key]=object[key]}return result},{})}function basePickBy(object,predicate){var index=-1,props=getAllKeysIn(object),length=props.length,result={};while(++index<length){var key=props[index],value=object[key];if(predicate(value,key)){result[key]=value}}return result}function baseProperty(key){return function(object){return object==null?undefined:object[key]}}function basePropertyDeep(path){return function(object){return baseGet(object,path)}}function basePullAll(array,values,iteratee,comparator){var indexOf=comparator?baseIndexOfWith:baseIndexOf,index=-1,length=values.length,seen=array;if(iteratee){seen=arrayMap(array,baseUnary(iteratee))}while(++index<length){var fromIndex=0,value=values[index],computed=iteratee?iteratee(value):value;while((fromIndex=indexOf(seen,computed,fromIndex,comparator))>-1){if(seen!==array){splice.call(seen,fromIndex,1)}splice.call(array,fromIndex,1)}}return array}function basePullAt(array,indexes){var length=array?indexes.length:0,lastIndex=length-1;while(length--){var index=indexes[length];if(length==lastIndex||index!==previous){var previous=index;if(isIndex(index)){splice.call(array,index,1)}else if(!isKey(index,array)){var path=castPath(index),object=parent(array,path);if(object!=null){delete object[toKey(last(path))]}}else{delete array[toKey(index)]}}}return array}function baseRandom(lower,upper){return lower+nativeFloor(nativeRandom()*(upper-lower+1))}function baseRange(start,end,step,fromRight){var index=-1,length=nativeMax(nativeCeil((end-start)/(step||1)),0),result=Array(length);while(length--){result[fromRight?length:++index]=start;start+=step}return result}function baseRepeat(string,n){var result="";if(!string||n<1||n>MAX_SAFE_INTEGER){return result}do{if(n%2){result+=string}n=nativeFloor(n/2);if(n){string+=string}}while(n);return result}function baseSet(object,path,value,customizer){path=isKey(path,object)?[path]:castPath(path);var index=-1,length=path.length,lastIndex=length-1,nested=object;while(nested!=null&&++index<length){var key=toKey(path[index]);if(isObject(nested)){var newValue=value;if(index!=lastIndex){var objValue=nested[key];newValue=customizer?customizer(objValue,key,nested):undefined;if(newValue===undefined){newValue=objValue==null?isIndex(path[index+1])?[]:{}:objValue}}assignValue(nested,key,newValue)}nested=nested[key]}return object}var baseSetData=!metaMap?identity:function(func,data){metaMap.set(func,data);return func};function baseSlice(array,start,end){var index=-1,length=array.length;if(start<0){start=-start>length?0:length+start}end=end>length?length:end;if(end<0){end+=length}length=start>end?0:end-start>>>0;start>>>=0;var result=Array(length);while(++index<length){result[index]=array[index+start]}return result}function baseSome(collection,predicate){var result;baseEach(collection,function(value,index,collection){result=predicate(value,index,collection);return!result});return!!result}function baseSortedIndex(array,value,retHighest){var low=0,high=array?array.length:low;if(typeof value=="number"&&value===value&&high<=HALF_MAX_ARRAY_LENGTH){while(low<high){var mid=low+high>>>1,computed=array[mid];if(computed!==null&&!isSymbol(computed)&&(retHighest?computed<=value:computed<value)){low=mid+1}else{high=mid}}return high}return baseSortedIndexBy(array,value,identity,retHighest)}function baseSortedIndexBy(array,value,iteratee,retHighest){value=iteratee(value);var low=0,high=array?array.length:0,valIsNaN=value!==value,valIsNull=value===null,valIsSymbol=isSymbol(value),valIsUndefined=value===undefined;while(low<high){var mid=nativeFloor((low+high)/2),computed=iteratee(array[mid]),othIsDefined=computed!==undefined,othIsNull=computed===null,othIsReflexive=computed===computed,othIsSymbol=isSymbol(computed);if(valIsNaN){var setLow=retHighest||othIsReflexive}else if(valIsUndefined){setLow=othIsReflexive&&(retHighest||othIsDefined)}else if(valIsNull){setLow=othIsReflexive&&othIsDefined&&(retHighest||!othIsNull)}else if(valIsSymbol){setLow=othIsReflexive&&othIsDefined&&!othIsNull&&(retHighest||!othIsSymbol)}else if(othIsNull||othIsSymbol){setLow=false}else{setLow=retHighest?computed<=value:computed<value}if(setLow){low=mid+1}else{high=mid}}return nativeMin(high,MAX_ARRAY_INDEX)}function baseSortedUniq(array,iteratee){var index=-1,length=array.length,resIndex=0,result=[];while(++index<length){var value=array[index],computed=iteratee?iteratee(value):value;if(!index||!eq(computed,seen)){var seen=computed;result[resIndex++]=value===0?0:value}}return result}function baseToNumber(value){if(typeof value=="number"){return value}if(isSymbol(value)){return NAN}return+value}function baseToString(value){if(typeof value=="string"){return value}if(isSymbol(value)){return symbolToString?symbolToString.call(value):""}var result=value+"";return result=="0"&&1/value==-INFINITY?"-0":result}function baseUniq(array,iteratee,comparator){var index=-1,includes=arrayIncludes,length=array.length,isCommon=true,result=[],seen=result;if(comparator){isCommon=false;includes=arrayIncludesWith}else if(length>=LARGE_ARRAY_SIZE){var set=iteratee?null:createSet(array);if(set){return setToArray(set)}isCommon=false;includes=cacheHas;seen=new SetCache}else{seen=iteratee?[]:result}outer:while(++index<length){var value=array[index],computed=iteratee?iteratee(value):value;value=comparator||value!==0?value:0;if(isCommon&&computed===computed){var seenIndex=seen.length;while(seenIndex--){if(seen[seenIndex]===computed){continue outer}}if(iteratee){seen.push(computed)}result.push(value)}else if(!includes(seen,computed,comparator)){if(seen!==result){seen.push(computed)}result.push(value)}}return result}function baseUnset(object,path){path=isKey(path,object)?[path]:castPath(path);object=parent(object,path);var key=toKey(last(path));return!(object!=null&&baseHas(object,key))||delete object[key]}function baseUpdate(object,path,updater,customizer){return baseSet(object,path,updater(baseGet(object,path)),customizer)}function baseWhile(array,predicate,isDrop,fromRight){var length=array.length,index=fromRight?length:-1;while((fromRight?index--:++index<length)&&predicate(array[index],index,array)){}return isDrop?baseSlice(array,fromRight?0:index,fromRight?index+1:length):baseSlice(array,fromRight?index+1:0,fromRight?length:index)}function baseWrapperValue(value,actions){var result=value;if(result instanceof LazyWrapper){result=result.value()}return arrayReduce(actions,function(result,action){return action.func.apply(action.thisArg,arrayPush([result],action.args))},result)}function baseXor(arrays,iteratee,comparator){var index=-1,length=arrays.length;while(++index<length){var result=result?arrayPush(baseDifference(result,arrays[index],iteratee,comparator),baseDifference(arrays[index],result,iteratee,comparator)):arrays[index]}return result&&result.length?baseUniq(result,iteratee,comparator):[]}function baseZipObject(props,values,assignFunc){var index=-1,length=props.length,valsLength=values.length,result={};while(++index<length){var value=index<valsLength?values[index]:undefined;assignFunc(result,props[index],value)}return result}function castArrayLikeObject(value){return isArrayLikeObject(value)?value:[]}function castFunction(value){return typeof value=="function"?value:identity}function castPath(value){return isArray(value)?value:stringToPath(value)}function castSlice(array,start,end){var length=array.length;end=end===undefined?length:end;return!start&&end>=length?array:baseSlice(array,start,end)}function cloneBuffer(buffer,isDeep){if(isDeep){return buffer.slice()}var result=new buffer.constructor(buffer.length);buffer.copy(result);return result}function cloneArrayBuffer(arrayBuffer){var result=new arrayBuffer.constructor(arrayBuffer.byteLength);new Uint8Array(result).set(new Uint8Array(arrayBuffer));return result}function cloneDataView(dataView,isDeep){var buffer=isDeep?cloneArrayBuffer(dataView.buffer):dataView.buffer;return new dataView.constructor(buffer,dataView.byteOffset,dataView.byteLength)}function cloneMap(map,isDeep,cloneFunc){var array=isDeep?cloneFunc(mapToArray(map),true):mapToArray(map);return arrayReduce(array,addMapEntry,new map.constructor)}function cloneRegExp(regexp){var result=new regexp.constructor(regexp.source,reFlags.exec(regexp));result.lastIndex=regexp.lastIndex;return result}function cloneSet(set,isDeep,cloneFunc){var array=isDeep?cloneFunc(setToArray(set),true):setToArray(set);return arrayReduce(array,addSetEntry,new set.constructor)}function cloneSymbol(symbol){return symbolValueOf?Object(symbolValueOf.call(symbol)):{}}function cloneTypedArray(typedArray,isDeep){var buffer=isDeep?cloneArrayBuffer(typedArray.buffer):typedArray.buffer;return new typedArray.constructor(buffer,typedArray.byteOffset,typedArray.length)}function compareAscending(value,other){if(value!==other){var valIsDefined=value!==undefined,valIsNull=value===null,valIsReflexive=value===value,valIsSymbol=isSymbol(value);var othIsDefined=other!==undefined,othIsNull=other===null,othIsReflexive=other===other,othIsSymbol=isSymbol(other);if(!othIsNull&&!othIsSymbol&&!valIsSymbol&&value>other||valIsSymbol&&othIsDefined&&othIsReflexive&&!othIsNull&&!othIsSymbol||valIsNull&&othIsDefined&&othIsReflexive||!valIsDefined&&othIsReflexive||!valIsReflexive){return 1}if(!valIsNull&&!valIsSymbol&&!othIsSymbol&&value<other||othIsSymbol&&valIsDefined&&valIsReflexive&&!valIsNull&&!valIsSymbol||othIsNull&&valIsDefined&&valIsReflexive||!othIsDefined&&valIsReflexive||!othIsReflexive){return-1}}return 0}function compareMultiple(object,other,orders){var index=-1,objCriteria=object.criteria,othCriteria=other.criteria,length=objCriteria.length,ordersLength=orders.length;while(++index<length){var result=compareAscending(objCriteria[index],othCriteria[index]);if(result){if(index>=ordersLength){return result}var order=orders[index];return result*(order=="desc"?-1:1)}}return object.index-other.index}function composeArgs(args,partials,holders,isCurried){var argsIndex=-1,argsLength=args.length,holdersLength=holders.length,leftIndex=-1,leftLength=partials.length,rangeLength=nativeMax(argsLength-holdersLength,0),result=Array(leftLength+rangeLength),isUncurried=!isCurried;while(++leftIndex<leftLength){result[leftIndex]=partials[leftIndex]}while(++argsIndex<holdersLength){if(isUncurried||argsIndex<argsLength){result[holders[argsIndex]]=args[argsIndex]}}while(rangeLength--){result[leftIndex++]=args[argsIndex++]}return result}function composeArgsRight(args,partials,holders,isCurried){var argsIndex=-1,argsLength=args.length,holdersIndex=-1,holdersLength=holders.length,rightIndex=-1,rightLength=partials.length,rangeLength=nativeMax(argsLength-holdersLength,0),result=Array(rangeLength+rightLength),isUncurried=!isCurried;while(++argsIndex<rangeLength){result[argsIndex]=args[argsIndex]}var offset=argsIndex;while(++rightIndex<rightLength){result[offset+rightIndex]=partials[rightIndex]}while(++holdersIndex<holdersLength){if(isUncurried||argsIndex<argsLength){result[offset+holders[holdersIndex]]=args[argsIndex++]}}return result}function copyArray(source,array){var index=-1,length=source.length;array||(array=Array(length));while(++index<length){array[index]=source[index]}return array}function copyObject(source,props,object,customizer){object||(object={});var index=-1,length=props.length;while(++index<length){var key=props[index];var newValue=customizer?customizer(object[key],source[key],key,object,source):source[key];assignValue(object,key,newValue)}return object}function copySymbols(source,object){return copyObject(source,getSymbols(source),object)}function createAggregator(setter,initializer){return function(collection,iteratee){var func=isArray(collection)?arrayAggregator:baseAggregator,accumulator=initializer?initializer():{};return func(collection,setter,getIteratee(iteratee),accumulator)}}function createAssigner(assigner){return rest(function(object,sources){var index=-1,length=sources.length,customizer=length>1?sources[length-1]:undefined,guard=length>2?sources[2]:undefined;customizer=typeof customizer=="function"?(length--,customizer):undefined;if(guard&&isIterateeCall(sources[0],sources[1],guard)){customizer=length<3?undefined:customizer;length=1}object=Object(object);while(++index<length){var source=sources[index];if(source){assigner(object,source,index,customizer)}}return object})}function createBaseEach(eachFunc,fromRight){return function(collection,iteratee){if(collection==null){return collection}if(!isArrayLike(collection)){return eachFunc(collection,iteratee)}var length=collection.length,index=fromRight?length:-1,iterable=Object(collection);while(fromRight?index--:++index<length){if(iteratee(iterable[index],index,iterable)===false){break}}return collection}}function createBaseFor(fromRight){return function(object,iteratee,keysFunc){var index=-1,iterable=Object(object),props=keysFunc(object),length=props.length;while(length--){var key=props[fromRight?length:++index];if(iteratee(iterable[key],key,iterable)===false){break}}return object}}function createBaseWrapper(func,bitmask,thisArg){var isBind=bitmask&BIND_FLAG,Ctor=createCtorWrapper(func);function wrapper(){var fn=this&&this!==root&&this instanceof wrapper?Ctor:func;return fn.apply(isBind?thisArg:this,arguments)}return wrapper}function createCaseFirst(methodName){return function(string){string=toString(string);var strSymbols=reHasComplexSymbol.test(string)?stringToArray(string):undefined;var chr=strSymbols?strSymbols[0]:string.charAt(0);var trailing=strSymbols?castSlice(strSymbols,1).join(""):string.slice(1);return chr[methodName]()+trailing}}function createCompounder(callback){return function(string){return arrayReduce(words(deburr(string).replace(reApos,"")),callback,"")}}function createCtorWrapper(Ctor){return function(){var args=arguments;switch(args.length){case 0:return new Ctor;case 1:return new Ctor(args[0]);case 2:return new Ctor(args[0],args[1]);case 3:return new Ctor(args[0],args[1],args[2]);case 4:return new Ctor(args[0],args[1],args[2],args[3]);case 5:return new Ctor(args[0],args[1],args[2],args[3],args[4]);case 6:return new Ctor(args[0],args[1],args[2],args[3],args[4],args[5]);case 7:return new Ctor(args[0],args[1],args[2],args[3],args[4],args[5],args[6])}var thisBinding=baseCreate(Ctor.prototype),result=Ctor.apply(thisBinding,args);return isObject(result)?result:thisBinding}}function createCurryWrapper(func,bitmask,arity){var Ctor=createCtorWrapper(func);function wrapper(){var length=arguments.length,args=Array(length),index=length,placeholder=getPlaceholder(wrapper);while(index--){args[index]=arguments[index]}var holders=length<3&&args[0]!==placeholder&&args[length-1]!==placeholder?[]:replaceHolders(args,placeholder);length-=holders.length;if(length<arity){return createRecurryWrapper(func,bitmask,createHybridWrapper,wrapper.placeholder,undefined,args,holders,undefined,undefined,arity-length)}var fn=this&&this!==root&&this instanceof wrapper?Ctor:func;return apply(fn,this,args)}return wrapper}function createFlow(fromRight){return rest(function(funcs){funcs=baseFlatten(funcs,1);var length=funcs.length,index=length,prereq=LodashWrapper.prototype.thru;if(fromRight){funcs.reverse()}while(index--){var func=funcs[index];if(typeof func!="function"){throw new TypeError(FUNC_ERROR_TEXT)}if(prereq&&!wrapper&&getFuncName(func)=="wrapper"){var wrapper=new LodashWrapper([],true)}}index=wrapper?index:length;while(++index<length){func=funcs[index];var funcName=getFuncName(func),data=funcName=="wrapper"?getData(func):undefined;if(data&&isLaziable(data[0])&&data[1]==(ARY_FLAG|CURRY_FLAG|PARTIAL_FLAG|REARG_FLAG)&&!data[4].length&&data[9]==1){wrapper=wrapper[getFuncName(data[0])].apply(wrapper,data[3])}else{wrapper=func.length==1&&isLaziable(func)?wrapper[funcName]():wrapper.thru(func)}}return function(){var args=arguments,value=args[0];if(wrapper&&args.length==1&&isArray(value)&&value.length>=LARGE_ARRAY_SIZE){return wrapper.plant(value).value()}var index=0,result=length?funcs[index].apply(this,args):value;while(++index<length){result=funcs[index].call(this,result)}return result}})}function createHybridWrapper(func,bitmask,thisArg,partials,holders,partialsRight,holdersRight,argPos,ary,arity){var isAry=bitmask&ARY_FLAG,isBind=bitmask&BIND_FLAG,isBindKey=bitmask&BIND_KEY_FLAG,isCurried=bitmask&(CURRY_FLAG|CURRY_RIGHT_FLAG),isFlip=bitmask&FLIP_FLAG,Ctor=isBindKey?undefined:createCtorWrapper(func);function wrapper(){var length=arguments.length,index=length,args=Array(length);while(index--){args[index]=arguments[index]}if(isCurried){var placeholder=getPlaceholder(wrapper),holdersCount=countHolders(args,placeholder)}if(partials){args=composeArgs(args,partials,holders,isCurried)}if(partialsRight){args=composeArgsRight(args,partialsRight,holdersRight,isCurried)}length-=holdersCount;if(isCurried&&length<arity){var newHolders=replaceHolders(args,placeholder);return createRecurryWrapper(func,bitmask,createHybridWrapper,wrapper.placeholder,thisArg,args,newHolders,argPos,ary,arity-length)}var thisBinding=isBind?thisArg:this,fn=isBindKey?thisBinding[func]:func;length=args.length;if(argPos){args=reorder(args,argPos)}else if(isFlip&&length>1){args.reverse()}if(isAry&&ary<length){args.length=ary}if(this&&this!==root&&this instanceof wrapper){fn=Ctor||createCtorWrapper(fn)}return fn.apply(thisBinding,args)}return wrapper}function createInverter(setter,toIteratee){return function(object,iteratee){return baseInverter(object,setter,toIteratee(iteratee),{})}}function createMathOperation(operator){return function(value,other){var result;if(value===undefined&&other===undefined){return 0}if(value!==undefined){result=value}if(other!==undefined){if(result===undefined){return other}if(typeof value=="string"||typeof other=="string"){value=baseToString(value);other=baseToString(other)}else{value=baseToNumber(value);other=baseToNumber(other)}result=operator(value,other)}return result}}function createOver(arrayFunc){return rest(function(iteratees){iteratees=iteratees.length==1&&isArray(iteratees[0])?arrayMap(iteratees[0],baseUnary(getIteratee())):arrayMap(baseFlatten(iteratees,1,isFlattenableIteratee),baseUnary(getIteratee()));return rest(function(args){var thisArg=this;return arrayFunc(iteratees,function(iteratee){return apply(iteratee,thisArg,args)})})})}function createPadding(length,chars){chars=chars===undefined?" ":baseToString(chars);var charsLength=chars.length;if(charsLength<2){return charsLength?baseRepeat(chars,length):chars}var result=baseRepeat(chars,nativeCeil(length/stringSize(chars)));return reHasComplexSymbol.test(chars)?castSlice(stringToArray(result),0,length).join(""):result.slice(0,length)}function createPartialWrapper(func,bitmask,thisArg,partials){var isBind=bitmask&BIND_FLAG,Ctor=createCtorWrapper(func);function wrapper(){var argsIndex=-1,argsLength=arguments.length,leftIndex=-1,leftLength=partials.length,args=Array(leftLength+argsLength),fn=this&&this!==root&&this instanceof wrapper?Ctor:func;while(++leftIndex<leftLength){args[leftIndex]=partials[leftIndex]}while(argsLength--){args[leftIndex++]=arguments[++argsIndex]}return apply(fn,isBind?thisArg:this,args)}return wrapper}function createRange(fromRight){return function(start,end,step){if(step&&typeof step!="number"&&isIterateeCall(start,end,step)){end=step=undefined}start=toNumber(start);start=start===start?start:0;if(end===undefined){end=start;start=0}else{end=toNumber(end)||0}step=step===undefined?start<end?1:-1:toNumber(step)||0;
return baseRange(start,end,step,fromRight)}}function createRelationalOperation(operator){return function(value,other){if(!(typeof value=="string"&&typeof other=="string")){value=toNumber(value);other=toNumber(other)}return operator(value,other)}}function createRecurryWrapper(func,bitmask,wrapFunc,placeholder,thisArg,partials,holders,argPos,ary,arity){var isCurry=bitmask&CURRY_FLAG,newHolders=isCurry?holders:undefined,newHoldersRight=isCurry?undefined:holders,newPartials=isCurry?partials:undefined,newPartialsRight=isCurry?undefined:partials;bitmask|=isCurry?PARTIAL_FLAG:PARTIAL_RIGHT_FLAG;bitmask&=~(isCurry?PARTIAL_RIGHT_FLAG:PARTIAL_FLAG);if(!(bitmask&CURRY_BOUND_FLAG)){bitmask&=~(BIND_FLAG|BIND_KEY_FLAG)}var newData=[func,bitmask,thisArg,newPartials,newHolders,newPartialsRight,newHoldersRight,argPos,ary,arity];var result=wrapFunc.apply(undefined,newData);if(isLaziable(func)){setData(result,newData)}result.placeholder=placeholder;return result}function createRound(methodName){var func=Math[methodName];return function(number,precision){number=toNumber(number);precision=toInteger(precision);if(precision){var pair=(toString(number)+"e").split("e"),value=func(pair[0]+"e"+(+pair[1]+precision));pair=(toString(value)+"e").split("e");return+(pair[0]+"e"+(+pair[1]-precision))}return func(number)}}var createSet=!(Set&&1/setToArray(new Set([,-0]))[1]==INFINITY)?noop:function(values){return new Set(values)};function createWrapper(func,bitmask,thisArg,partials,holders,argPos,ary,arity){var isBindKey=bitmask&BIND_KEY_FLAG;if(!isBindKey&&typeof func!="function"){throw new TypeError(FUNC_ERROR_TEXT)}var length=partials?partials.length:0;if(!length){bitmask&=~(PARTIAL_FLAG|PARTIAL_RIGHT_FLAG);partials=holders=undefined}ary=ary===undefined?ary:nativeMax(toInteger(ary),0);arity=arity===undefined?arity:toInteger(arity);length-=holders?holders.length:0;if(bitmask&PARTIAL_RIGHT_FLAG){var partialsRight=partials,holdersRight=holders;partials=holders=undefined}var data=isBindKey?undefined:getData(func);var newData=[func,bitmask,thisArg,partials,holders,partialsRight,holdersRight,argPos,ary,arity];if(data){mergeData(newData,data)}func=newData[0];bitmask=newData[1];thisArg=newData[2];partials=newData[3];holders=newData[4];arity=newData[9]=newData[9]==null?isBindKey?0:func.length:nativeMax(newData[9]-length,0);if(!arity&&bitmask&(CURRY_FLAG|CURRY_RIGHT_FLAG)){bitmask&=~(CURRY_FLAG|CURRY_RIGHT_FLAG)}if(!bitmask||bitmask==BIND_FLAG){var result=createBaseWrapper(func,bitmask,thisArg)}else if(bitmask==CURRY_FLAG||bitmask==CURRY_RIGHT_FLAG){result=createCurryWrapper(func,bitmask,arity)}else if((bitmask==PARTIAL_FLAG||bitmask==(BIND_FLAG|PARTIAL_FLAG))&&!holders.length){result=createPartialWrapper(func,bitmask,thisArg,partials)}else{result=createHybridWrapper.apply(undefined,newData)}var setter=data?baseSetData:setData;return setter(result,newData)}function equalArrays(array,other,equalFunc,customizer,bitmask,stack){var index=-1,isPartial=bitmask&PARTIAL_COMPARE_FLAG,isUnordered=bitmask&UNORDERED_COMPARE_FLAG,arrLength=array.length,othLength=other.length;if(arrLength!=othLength&&!(isPartial&&othLength>arrLength)){return false}var stacked=stack.get(array);if(stacked){return stacked==other}var result=true;stack.set(array,other);while(++index<arrLength){var arrValue=array[index],othValue=other[index];if(customizer){var compared=isPartial?customizer(othValue,arrValue,index,other,array,stack):customizer(arrValue,othValue,index,array,other,stack)}if(compared!==undefined){if(compared){continue}result=false;break}if(isUnordered){if(!arraySome(other,function(othValue){return arrValue===othValue||equalFunc(arrValue,othValue,customizer,bitmask,stack)})){result=false;break}}else if(!(arrValue===othValue||equalFunc(arrValue,othValue,customizer,bitmask,stack))){result=false;break}}stack["delete"](array);return result}function equalByTag(object,other,tag,equalFunc,customizer,bitmask,stack){switch(tag){case dataViewTag:if(object.byteLength!=other.byteLength||object.byteOffset!=other.byteOffset){return false}object=object.buffer;other=other.buffer;case arrayBufferTag:if(object.byteLength!=other.byteLength||!equalFunc(new Uint8Array(object),new Uint8Array(other))){return false}return true;case boolTag:case dateTag:return+object==+other;case errorTag:return object.name==other.name&&object.message==other.message;case numberTag:return object!=+object?other!=+other:object==+other;case regexpTag:case stringTag:return object==other+"";case mapTag:var convert=mapToArray;case setTag:var isPartial=bitmask&PARTIAL_COMPARE_FLAG;convert||(convert=setToArray);if(object.size!=other.size&&!isPartial){return false}var stacked=stack.get(object);if(stacked){return stacked==other}bitmask|=UNORDERED_COMPARE_FLAG;stack.set(object,other);return equalArrays(convert(object),convert(other),equalFunc,customizer,bitmask,stack);case symbolTag:if(symbolValueOf){return symbolValueOf.call(object)==symbolValueOf.call(other)}}return false}function equalObjects(object,other,equalFunc,customizer,bitmask,stack){var isPartial=bitmask&PARTIAL_COMPARE_FLAG,objProps=keys(object),objLength=objProps.length,othProps=keys(other),othLength=othProps.length;if(objLength!=othLength&&!isPartial){return false}var index=objLength;while(index--){var key=objProps[index];if(!(isPartial?key in other:baseHas(other,key))){return false}}var stacked=stack.get(object);if(stacked){return stacked==other}var result=true;stack.set(object,other);var skipCtor=isPartial;while(++index<objLength){key=objProps[index];var objValue=object[key],othValue=other[key];if(customizer){var compared=isPartial?customizer(othValue,objValue,key,other,object,stack):customizer(objValue,othValue,key,object,other,stack)}if(!(compared===undefined?objValue===othValue||equalFunc(objValue,othValue,customizer,bitmask,stack):compared)){result=false;break}skipCtor||(skipCtor=key=="constructor")}if(result&&!skipCtor){var objCtor=object.constructor,othCtor=other.constructor;if(objCtor!=othCtor&&("constructor"in object&&"constructor"in other)&&!(typeof objCtor=="function"&&objCtor instanceof objCtor&&typeof othCtor=="function"&&othCtor instanceof othCtor)){result=false}}stack["delete"](object);return result}function getAllKeys(object){return baseGetAllKeys(object,keys,getSymbols)}function getAllKeysIn(object){return baseGetAllKeys(object,keysIn,getSymbolsIn)}var getData=!metaMap?noop:function(func){return metaMap.get(func)};function getFuncName(func){var result=func.name+"",array=realNames[result],length=hasOwnProperty.call(realNames,result)?array.length:0;while(length--){var data=array[length],otherFunc=data.func;if(otherFunc==null||otherFunc==func){return data.name}}return result}function getIteratee(){var result=lodash.iteratee||iteratee;result=result===iteratee?baseIteratee:result;return arguments.length?result(arguments[0],arguments[1]):result}var getLength=baseProperty("length");function getMatchData(object){var result=toPairs(object),length=result.length;while(length--){result[length][2]=isStrictComparable(result[length][1])}return result}function getNative(object,key){var value=object[key];return isNative(value)?value:undefined}function getPlaceholder(func){var object=hasOwnProperty.call(lodash,"placeholder")?lodash:func;return object.placeholder}function getPrototype(value){return nativeGetPrototype(Object(value))}function getSymbols(object){return getOwnPropertySymbols(Object(object))}if(!getOwnPropertySymbols){getSymbols=function(){return[]}}var getSymbolsIn=!getOwnPropertySymbols?getSymbols:function(object){var result=[];while(object){arrayPush(result,getSymbols(object));object=getPrototype(object)}return result};function getTag(value){return objectToString.call(value)}if(DataView&&getTag(new DataView(new ArrayBuffer(1)))!=dataViewTag||Map&&getTag(new Map)!=mapTag||Promise&&getTag(Promise.resolve())!=promiseTag||Set&&getTag(new Set)!=setTag||WeakMap&&getTag(new WeakMap)!=weakMapTag){getTag=function(value){var result=objectToString.call(value),Ctor=result==objectTag?value.constructor:undefined,ctorString=Ctor?toSource(Ctor):undefined;if(ctorString){switch(ctorString){case dataViewCtorString:return dataViewTag;case mapCtorString:return mapTag;case promiseCtorString:return promiseTag;case setCtorString:return setTag;case weakMapCtorString:return weakMapTag}}return result}}function getView(start,end,transforms){var index=-1,length=transforms.length;while(++index<length){var data=transforms[index],size=data.size;switch(data.type){case"drop":start+=size;break;case"dropRight":end-=size;break;case"take":end=nativeMin(end,start+size);break;case"takeRight":start=nativeMax(start,end-size);break}}return{start:start,end:end}}function hasPath(object,path,hasFunc){path=isKey(path,object)?[path]:castPath(path);var result,index=-1,length=path.length;while(++index<length){var key=toKey(path[index]);if(!(result=object!=null&&hasFunc(object,key))){break}object=object[key]}if(result){return result}var length=object?object.length:0;return!!length&&isLength(length)&&isIndex(key,length)&&(isArray(object)||isString(object)||isArguments(object))}function initCloneArray(array){var length=array.length,result=array.constructor(length);if(length&&typeof array[0]=="string"&&hasOwnProperty.call(array,"index")){result.index=array.index;result.input=array.input}return result}function initCloneObject(object){return typeof object.constructor=="function"&&!isPrototype(object)?baseCreate(getPrototype(object)):{}}function initCloneByTag(object,tag,cloneFunc,isDeep){var Ctor=object.constructor;switch(tag){case arrayBufferTag:return cloneArrayBuffer(object);case boolTag:case dateTag:return new Ctor(+object);case dataViewTag:return cloneDataView(object,isDeep);case float32Tag:case float64Tag:case int8Tag:case int16Tag:case int32Tag:case uint8Tag:case uint8ClampedTag:case uint16Tag:case uint32Tag:return cloneTypedArray(object,isDeep);case mapTag:return cloneMap(object,isDeep,cloneFunc);case numberTag:case stringTag:return new Ctor(object);case regexpTag:return cloneRegExp(object);case setTag:return cloneSet(object,isDeep,cloneFunc);case symbolTag:return cloneSymbol(object)}}function indexKeys(object){var length=object?object.length:undefined;if(isLength(length)&&(isArray(object)||isString(object)||isArguments(object))){return baseTimes(length,String)}return null}function isFlattenable(value){return isArrayLikeObject(value)&&(isArray(value)||isArguments(value))}function isFlattenableIteratee(value){return isArray(value)&&!(value.length==2&&!isFunction(value[0]))}function isIndex(value,length){length=length==null?MAX_SAFE_INTEGER:length;return!!length&&(typeof value=="number"||reIsUint.test(value))&&(value>-1&&value%1==0&&value<length)}function isIterateeCall(value,index,object){if(!isObject(object)){return false}var type=typeof index;if(type=="number"?isArrayLike(object)&&isIndex(index,object.length):type=="string"&&index in object){return eq(object[index],value)}return false}function isKey(value,object){if(isArray(value)){return false}var type=typeof value;if(type=="number"||type=="symbol"||type=="boolean"||value==null||isSymbol(value)){return true}return reIsPlainProp.test(value)||!reIsDeepProp.test(value)||object!=null&&value in Object(object)}function isKeyable(value){var type=typeof value;return type=="string"||type=="number"||type=="symbol"||type=="boolean"?value!=="__proto__":value===null}function isLaziable(func){var funcName=getFuncName(func),other=lodash[funcName];if(typeof other!="function"||!(funcName in LazyWrapper.prototype)){return false}if(func===other){return true}var data=getData(other);return!!data&&func===data[0]}function isPrototype(value){var Ctor=value&&value.constructor,proto=typeof Ctor=="function"&&Ctor.prototype||objectProto;return value===proto}function isStrictComparable(value){return value===value&&!isObject(value)}function matchesStrictComparable(key,srcValue){return function(object){if(object==null){return false}return object[key]===srcValue&&(srcValue!==undefined||key in Object(object))}}function mergeData(data,source){var bitmask=data[1],srcBitmask=source[1],newBitmask=bitmask|srcBitmask,isCommon=newBitmask<(BIND_FLAG|BIND_KEY_FLAG|ARY_FLAG);var isCombo=srcBitmask==ARY_FLAG&&bitmask==CURRY_FLAG||srcBitmask==ARY_FLAG&&bitmask==REARG_FLAG&&data[7].length<=source[8]||srcBitmask==(ARY_FLAG|REARG_FLAG)&&source[7].length<=source[8]&&bitmask==CURRY_FLAG;if(!(isCommon||isCombo)){return data}if(srcBitmask&BIND_FLAG){data[2]=source[2];newBitmask|=bitmask&BIND_FLAG?0:CURRY_BOUND_FLAG}var value=source[3];if(value){var partials=data[3];data[3]=partials?composeArgs(partials,value,source[4]):value;data[4]=partials?replaceHolders(data[3],PLACEHOLDER):source[4]}value=source[5];if(value){partials=data[5];data[5]=partials?composeArgsRight(partials,value,source[6]):value;data[6]=partials?replaceHolders(data[5],PLACEHOLDER):source[6]}value=source[7];if(value){data[7]=value}if(srcBitmask&ARY_FLAG){data[8]=data[8]==null?source[8]:nativeMin(data[8],source[8])}if(data[9]==null){data[9]=source[9]}data[0]=source[0];data[1]=newBitmask;return data}function mergeDefaults(objValue,srcValue,key,object,source,stack){if(isObject(objValue)&&isObject(srcValue)){baseMerge(objValue,srcValue,undefined,mergeDefaults,stack.set(srcValue,objValue))}return objValue}function parent(object,path){return path.length==1?object:baseGet(object,baseSlice(path,0,-1))}function reorder(array,indexes){var arrLength=array.length,length=nativeMin(indexes.length,arrLength),oldArray=copyArray(array);while(length--){var index=indexes[length];array[length]=isIndex(index,arrLength)?oldArray[index]:undefined}return array}var setData=function(){var count=0,lastCalled=0;return function(key,value){var stamp=now(),remaining=HOT_SPAN-(stamp-lastCalled);lastCalled=stamp;if(remaining>0){if(++count>=HOT_COUNT){return key}}else{count=0}return baseSetData(key,value)}}();var stringToPath=memoize(function(string){var result=[];toString(string).replace(rePropName,function(match,number,quote,string){result.push(quote?string.replace(reEscapeChar,"$1"):number||match)});return result});function toKey(value){if(typeof value=="string"||isSymbol(value)){return value}var result=value+"";return result=="0"&&1/value==-INFINITY?"-0":result}function toSource(func){if(func!=null){try{return funcToString.call(func)}catch(e){}try{return func+""}catch(e){}}return""}function wrapperClone(wrapper){if(wrapper instanceof LazyWrapper){return wrapper.clone()}var result=new LodashWrapper(wrapper.__wrapped__,wrapper.__chain__);result.__actions__=copyArray(wrapper.__actions__);result.__index__=wrapper.__index__;result.__values__=wrapper.__values__;return result}function chunk(array,size,guard){if(guard?isIterateeCall(array,size,guard):size===undefined){size=1}else{size=nativeMax(toInteger(size),0)}var length=array?array.length:0;if(!length||size<1){return[]}var index=0,resIndex=0,result=Array(nativeCeil(length/size));while(index<length){result[resIndex++]=baseSlice(array,index,index+=size)}return result}function compact(array){var index=-1,length=array?array.length:0,resIndex=0,result=[];while(++index<length){var value=array[index];if(value){result[resIndex++]=value}}return result}function concat(){var length=arguments.length,array=castArray(arguments[0]);if(length<2){return length?copyArray(array):[]}var args=Array(length-1);while(length--){args[length-1]=arguments[length]}return arrayConcat(array,baseFlatten(args,1))}var difference=rest(function(array,values){return isArrayLikeObject(array)?baseDifference(array,baseFlatten(values,1,isArrayLikeObject,true)):[]});var differenceBy=rest(function(array,values){var iteratee=last(values);if(isArrayLikeObject(iteratee)){iteratee=undefined}return isArrayLikeObject(array)?baseDifference(array,baseFlatten(values,1,isArrayLikeObject,true),getIteratee(iteratee)):[]});var differenceWith=rest(function(array,values){var comparator=last(values);if(isArrayLikeObject(comparator)){comparator=undefined}return isArrayLikeObject(array)?baseDifference(array,baseFlatten(values,1,isArrayLikeObject,true),undefined,comparator):[]});function drop(array,n,guard){var length=array?array.length:0;if(!length){return[]}n=guard||n===undefined?1:toInteger(n);return baseSlice(array,n<0?0:n,length)}function dropRight(array,n,guard){var length=array?array.length:0;if(!length){return[]}n=guard||n===undefined?1:toInteger(n);n=length-n;return baseSlice(array,0,n<0?0:n)}function dropRightWhile(array,predicate){return array&&array.length?baseWhile(array,getIteratee(predicate,3),true,true):[]}function dropWhile(array,predicate){return array&&array.length?baseWhile(array,getIteratee(predicate,3),true):[]}function fill(array,value,start,end){var length=array?array.length:0;if(!length){return[]}if(start&&typeof start!="number"&&isIterateeCall(array,value,start)){start=0;end=length}return baseFill(array,value,start,end)}function findIndex(array,predicate){return array&&array.length?baseFindIndex(array,getIteratee(predicate,3)):-1}function findLastIndex(array,predicate){return array&&array.length?baseFindIndex(array,getIteratee(predicate,3),true):-1}function flatten(array){var length=array?array.length:0;return length?baseFlatten(array,1):[]}function flattenDeep(array){var length=array?array.length:0;return length?baseFlatten(array,INFINITY):[]}function flattenDepth(array,depth){var length=array?array.length:0;if(!length){return[]}depth=depth===undefined?1:toInteger(depth);return baseFlatten(array,depth)}function fromPairs(pairs){var index=-1,length=pairs?pairs.length:0,result={};while(++index<length){var pair=pairs[index];result[pair[0]]=pair[1]}return result}function head(array){return array&&array.length?array[0]:undefined}function indexOf(array,value,fromIndex){var length=array?array.length:0;if(!length){return-1}fromIndex=toInteger(fromIndex);if(fromIndex<0){fromIndex=nativeMax(length+fromIndex,0)}return baseIndexOf(array,value,fromIndex)}function initial(array){return dropRight(array,1)}var intersection=rest(function(arrays){var mapped=arrayMap(arrays,castArrayLikeObject);return mapped.length&&mapped[0]===arrays[0]?baseIntersection(mapped):[]});var intersectionBy=rest(function(arrays){var iteratee=last(arrays),mapped=arrayMap(arrays,castArrayLikeObject);if(iteratee===last(mapped)){iteratee=undefined}else{mapped.pop()}return mapped.length&&mapped[0]===arrays[0]?baseIntersection(mapped,getIteratee(iteratee)):[]});var intersectionWith=rest(function(arrays){var comparator=last(arrays),mapped=arrayMap(arrays,castArrayLikeObject);if(comparator===last(mapped)){comparator=undefined}else{mapped.pop()}return mapped.length&&mapped[0]===arrays[0]?baseIntersection(mapped,undefined,comparator):[]});function join(array,separator){return array?nativeJoin.call(array,separator):""}function last(array){var length=array?array.length:0;return length?array[length-1]:undefined}function lastIndexOf(array,value,fromIndex){var length=array?array.length:0;if(!length){return-1}var index=length;if(fromIndex!==undefined){index=toInteger(fromIndex);index=(index<0?nativeMax(length+index,0):nativeMin(index,length-1))+1}if(value!==value){return indexOfNaN(array,index,true)}while(index--){if(array[index]===value){return index}}return-1}function nth(array,n){return array&&array.length?baseNth(array,toInteger(n)):undefined}var pull=rest(pullAll);function pullAll(array,values){return array&&array.length&&values&&values.length?basePullAll(array,values):array}function pullAllBy(array,values,iteratee){return array&&array.length&&values&&values.length?basePullAll(array,values,getIteratee(iteratee)):array}function pullAllWith(array,values,comparator){return array&&array.length&&values&&values.length?basePullAll(array,values,undefined,comparator):array}var pullAt=rest(function(array,indexes){indexes=baseFlatten(indexes,1);var length=array?array.length:0,result=baseAt(array,indexes);basePullAt(array,arrayMap(indexes,function(index){return isIndex(index,length)?+index:index}).sort(compareAscending));return result});function remove(array,predicate){var result=[];if(!(array&&array.length)){return result}var index=-1,indexes=[],length=array.length;predicate=getIteratee(predicate,3);while(++index<length){var value=array[index];if(predicate(value,index,array)){result.push(value);indexes.push(index)}}basePullAt(array,indexes);return result}function reverse(array){return array?nativeReverse.call(array):array}function slice(array,start,end){var length=array?array.length:0;if(!length){return[]}if(end&&typeof end!="number"&&isIterateeCall(array,start,end)){start=0;end=length}else{start=start==null?0:toInteger(start);end=end===undefined?length:toInteger(end)}return baseSlice(array,start,end)}function sortedIndex(array,value){return baseSortedIndex(array,value)}function sortedIndexBy(array,value,iteratee){return baseSortedIndexBy(array,value,getIteratee(iteratee))}function sortedIndexOf(array,value){var length=array?array.length:0;if(length){var index=baseSortedIndex(array,value);if(index<length&&eq(array[index],value)){return index}}return-1}function sortedLastIndex(array,value){return baseSortedIndex(array,value,true)}function sortedLastIndexBy(array,value,iteratee){return baseSortedIndexBy(array,value,getIteratee(iteratee),true)}function sortedLastIndexOf(array,value){var length=array?array.length:0;if(length){var index=baseSortedIndex(array,value,true)-1;if(eq(array[index],value)){return index}}return-1}function sortedUniq(array){return array&&array.length?baseSortedUniq(array):[]}function sortedUniqBy(array,iteratee){return array&&array.length?baseSortedUniq(array,getIteratee(iteratee)):[]}function tail(array){return drop(array,1)}function take(array,n,guard){if(!(array&&array.length)){return[]}n=guard||n===undefined?1:toInteger(n);return baseSlice(array,0,n<0?0:n)}function takeRight(array,n,guard){var length=array?array.length:0;if(!length){return[]}n=guard||n===undefined?1:toInteger(n);n=length-n;return baseSlice(array,n<0?0:n,length)}function takeRightWhile(array,predicate){return array&&array.length?baseWhile(array,getIteratee(predicate,3),false,true):[]}function takeWhile(array,predicate){return array&&array.length?baseWhile(array,getIteratee(predicate,3)):[]}var union=rest(function(arrays){return baseUniq(baseFlatten(arrays,1,isArrayLikeObject,true))});var unionBy=rest(function(arrays){var iteratee=last(arrays);if(isArrayLikeObject(iteratee)){iteratee=undefined}return baseUniq(baseFlatten(arrays,1,isArrayLikeObject,true),getIteratee(iteratee))});var unionWith=rest(function(arrays){var comparator=last(arrays);if(isArrayLikeObject(comparator)){comparator=undefined}return baseUniq(baseFlatten(arrays,1,isArrayLikeObject,true),undefined,comparator)});function uniq(array){return array&&array.length?baseUniq(array):[]}function uniqBy(array,iteratee){return array&&array.length?baseUniq(array,getIteratee(iteratee)):[]}function uniqWith(array,comparator){return array&&array.length?baseUniq(array,undefined,comparator):[]}function unzip(array){if(!(array&&array.length)){return[]}var length=0;array=arrayFilter(array,function(group){if(isArrayLikeObject(group)){length=nativeMax(group.length,length);return true}});return baseTimes(length,function(index){return arrayMap(array,baseProperty(index))})}function unzipWith(array,iteratee){if(!(array&&array.length)){return[]}var result=unzip(array);if(iteratee==null){return result}return arrayMap(result,function(group){return apply(iteratee,undefined,group)})}var without=rest(function(array,values){return isArrayLikeObject(array)?baseDifference(array,values):[]});var xor=rest(function(arrays){return baseXor(arrayFilter(arrays,isArrayLikeObject))});var xorBy=rest(function(arrays){var iteratee=last(arrays);if(isArrayLikeObject(iteratee)){iteratee=undefined}return baseXor(arrayFilter(arrays,isArrayLikeObject),getIteratee(iteratee))});var xorWith=rest(function(arrays){var comparator=last(arrays);if(isArrayLikeObject(comparator)){comparator=undefined}return baseXor(arrayFilter(arrays,isArrayLikeObject),undefined,comparator)});var zip=rest(unzip);function zipObject(props,values){return baseZipObject(props||[],values||[],assignValue)}function zipObjectDeep(props,values){return baseZipObject(props||[],values||[],baseSet)}var zipWith=rest(function(arrays){var length=arrays.length,iteratee=length>1?arrays[length-1]:undefined;iteratee=typeof iteratee=="function"?(arrays.pop(),iteratee):undefined;return unzipWith(arrays,iteratee)});function chain(value){var result=lodash(value);result.__chain__=true;return result}function tap(value,interceptor){interceptor(value);return value}function thru(value,interceptor){return interceptor(value)}var wrapperAt=rest(function(paths){paths=baseFlatten(paths,1);var length=paths.length,start=length?paths[0]:0,value=this.__wrapped__,interceptor=function(object){return baseAt(object,paths)};if(length>1||this.__actions__.length||!(value instanceof LazyWrapper)||!isIndex(start)){return this.thru(interceptor)}value=value.slice(start,+start+(length?1:0));value.__actions__.push({func:thru,args:[interceptor],thisArg:undefined});return new LodashWrapper(value,this.__chain__).thru(function(array){if(length&&!array.length){array.push(undefined)}return array})});function wrapperChain(){return chain(this)}function wrapperCommit(){return new LodashWrapper(this.value(),this.__chain__)}function wrapperNext(){if(this.__values__===undefined){this.__values__=toArray(this.value())}var done=this.__index__>=this.__values__.length,value=done?undefined:this.__values__[this.__index__++];return{done:done,value:value}}function wrapperToIterator(){return this}function wrapperPlant(value){var result,parent=this;while(parent instanceof baseLodash){var clone=wrapperClone(parent);clone.__index__=0;clone.__values__=undefined;if(result){previous.__wrapped__=clone}else{result=clone}var previous=clone;parent=parent.__wrapped__}previous.__wrapped__=value;return result}function wrapperReverse(){var value=this.__wrapped__;if(value instanceof LazyWrapper){var wrapped=value;if(this.__actions__.length){wrapped=new LazyWrapper(this)}wrapped=wrapped.reverse();wrapped.__actions__.push({func:thru,args:[reverse],thisArg:undefined});return new LodashWrapper(wrapped,this.__chain__)}return this.thru(reverse)}function wrapperValue(){return baseWrapperValue(this.__wrapped__,this.__actions__)}var countBy=createAggregator(function(result,value,key){hasOwnProperty.call(result,key)?++result[key]:result[key]=1});function every(collection,predicate,guard){var func=isArray(collection)?arrayEvery:baseEvery;if(guard&&isIterateeCall(collection,predicate,guard)){predicate=undefined}return func(collection,getIteratee(predicate,3))}function filter(collection,predicate){var func=isArray(collection)?arrayFilter:baseFilter;return func(collection,getIteratee(predicate,3))}function find(collection,predicate){predicate=getIteratee(predicate,3);if(isArray(collection)){var index=baseFindIndex(collection,predicate);return index>-1?collection[index]:undefined}return baseFind(collection,predicate,baseEach)}function findLast(collection,predicate){predicate=getIteratee(predicate,3);if(isArray(collection)){var index=baseFindIndex(collection,predicate,true);return index>-1?collection[index]:undefined}return baseFind(collection,predicate,baseEachRight)}function flatMap(collection,iteratee){return baseFlatten(map(collection,iteratee),1)}function flatMapDeep(collection,iteratee){return baseFlatten(map(collection,iteratee),INFINITY)}function flatMapDepth(collection,iteratee,depth){depth=depth===undefined?1:toInteger(depth);return baseFlatten(map(collection,iteratee),depth)}function forEach(collection,iteratee){return typeof iteratee=="function"&&isArray(collection)?arrayEach(collection,iteratee):baseEach(collection,getIteratee(iteratee))}function forEachRight(collection,iteratee){return typeof iteratee=="function"&&isArray(collection)?arrayEachRight(collection,iteratee):baseEachRight(collection,getIteratee(iteratee))}var groupBy=createAggregator(function(result,value,key){if(hasOwnProperty.call(result,key)){result[key].push(value)}else{result[key]=[value]}});function includes(collection,value,fromIndex,guard){collection=isArrayLike(collection)?collection:values(collection);fromIndex=fromIndex&&!guard?toInteger(fromIndex):0;var length=collection.length;if(fromIndex<0){fromIndex=nativeMax(length+fromIndex,0)}return isString(collection)?fromIndex<=length&&collection.indexOf(value,fromIndex)>-1:!!length&&baseIndexOf(collection,value,fromIndex)>-1}var invokeMap=rest(function(collection,path,args){var index=-1,isFunc=typeof path=="function",isProp=isKey(path),result=isArrayLike(collection)?Array(collection.length):[];baseEach(collection,function(value){var func=isFunc?path:isProp&&value!=null?value[path]:undefined;result[++index]=func?apply(func,value,args):baseInvoke(value,path,args)});return result});var keyBy=createAggregator(function(result,value,key){result[key]=value});function map(collection,iteratee){var func=isArray(collection)?arrayMap:baseMap;return func(collection,getIteratee(iteratee,3))}function orderBy(collection,iteratees,orders,guard){if(collection==null){return[]}if(!isArray(iteratees)){iteratees=iteratees==null?[]:[iteratees]}orders=guard?undefined:orders;if(!isArray(orders)){orders=orders==null?[]:[orders]}return baseOrderBy(collection,iteratees,orders)}var partition=createAggregator(function(result,value,key){result[key?0:1].push(value)},function(){return[[],[]]});function reduce(collection,iteratee,accumulator){var func=isArray(collection)?arrayReduce:baseReduce,initAccum=arguments.length<3;return func(collection,getIteratee(iteratee,4),accumulator,initAccum,baseEach)}function reduceRight(collection,iteratee,accumulator){var func=isArray(collection)?arrayReduceRight:baseReduce,initAccum=arguments.length<3;return func(collection,getIteratee(iteratee,4),accumulator,initAccum,baseEachRight)}function reject(collection,predicate){var func=isArray(collection)?arrayFilter:baseFilter;predicate=getIteratee(predicate,3);return func(collection,function(value,index,collection){return!predicate(value,index,collection)})}function sample(collection){var array=isArrayLike(collection)?collection:values(collection),length=array.length;return length>0?array[baseRandom(0,length-1)]:undefined}function sampleSize(collection,n,guard){var index=-1,result=toArray(collection),length=result.length,lastIndex=length-1;if(guard?isIterateeCall(collection,n,guard):n===undefined){n=1}else{n=baseClamp(toInteger(n),0,length)}while(++index<n){var rand=baseRandom(index,lastIndex),value=result[rand];result[rand]=result[index];result[index]=value}result.length=n;return result}function shuffle(collection){return sampleSize(collection,MAX_ARRAY_LENGTH)}function size(collection){if(collection==null){return 0}if(isArrayLike(collection)){var result=collection.length;return result&&isString(collection)?stringSize(collection):result}if(isObjectLike(collection)){var tag=getTag(collection);if(tag==mapTag||tag==setTag){return collection.size}}return keys(collection).length}function some(collection,predicate,guard){var func=isArray(collection)?arraySome:baseSome;if(guard&&isIterateeCall(collection,predicate,guard)){predicate=undefined}return func(collection,getIteratee(predicate,3))}var sortBy=rest(function(collection,iteratees){if(collection==null){return[]}var length=iteratees.length;if(length>1&&isIterateeCall(collection,iteratees[0],iteratees[1])){iteratees=[]}else if(length>2&&isIterateeCall(iteratees[0],iteratees[1],iteratees[2])){iteratees=[iteratees[0]]}iteratees=iteratees.length==1&&isArray(iteratees[0])?iteratees[0]:baseFlatten(iteratees,1,isFlattenableIteratee);return baseOrderBy(collection,iteratees,[])});var now=Date.now;function after(n,func){if(typeof func!="function"){throw new TypeError(FUNC_ERROR_TEXT)}n=toInteger(n);return function(){if(--n<1){return func.apply(this,arguments)}}}function ary(func,n,guard){n=guard?undefined:n;n=func&&n==null?func.length:n;return createWrapper(func,ARY_FLAG,undefined,undefined,undefined,undefined,n)}function before(n,func){var result;if(typeof func!="function"){throw new TypeError(FUNC_ERROR_TEXT);
}n=toInteger(n);return function(){if(--n>0){result=func.apply(this,arguments)}if(n<=1){func=undefined}return result}}var bind=rest(function(func,thisArg,partials){var bitmask=BIND_FLAG;if(partials.length){var holders=replaceHolders(partials,getPlaceholder(bind));bitmask|=PARTIAL_FLAG}return createWrapper(func,bitmask,thisArg,partials,holders)});var bindKey=rest(function(object,key,partials){var bitmask=BIND_FLAG|BIND_KEY_FLAG;if(partials.length){var holders=replaceHolders(partials,getPlaceholder(bindKey));bitmask|=PARTIAL_FLAG}return createWrapper(key,bitmask,object,partials,holders)});function curry(func,arity,guard){arity=guard?undefined:arity;var result=createWrapper(func,CURRY_FLAG,undefined,undefined,undefined,undefined,undefined,arity);result.placeholder=curry.placeholder;return result}function curryRight(func,arity,guard){arity=guard?undefined:arity;var result=createWrapper(func,CURRY_RIGHT_FLAG,undefined,undefined,undefined,undefined,undefined,arity);result.placeholder=curryRight.placeholder;return result}function debounce(func,wait,options){var lastArgs,lastThis,maxWait,result,timerId,lastCallTime=0,lastInvokeTime=0,leading=false,maxing=false,trailing=true;if(typeof func!="function"){throw new TypeError(FUNC_ERROR_TEXT)}wait=toNumber(wait)||0;if(isObject(options)){leading=!!options.leading;maxing="maxWait"in options;maxWait=maxing?nativeMax(toNumber(options.maxWait)||0,wait):maxWait;trailing="trailing"in options?!!options.trailing:trailing}function invokeFunc(time){var args=lastArgs,thisArg=lastThis;lastArgs=lastThis=undefined;lastInvokeTime=time;result=func.apply(thisArg,args);return result}function leadingEdge(time){lastInvokeTime=time;timerId=setTimeout(timerExpired,wait);return leading?invokeFunc(time):result}function remainingWait(time){var timeSinceLastCall=time-lastCallTime,timeSinceLastInvoke=time-lastInvokeTime,result=wait-timeSinceLastCall;return maxing?nativeMin(result,maxWait-timeSinceLastInvoke):result}function shouldInvoke(time){var timeSinceLastCall=time-lastCallTime,timeSinceLastInvoke=time-lastInvokeTime;return!lastCallTime||timeSinceLastCall>=wait||timeSinceLastCall<0||maxing&&timeSinceLastInvoke>=maxWait}function timerExpired(){var time=now();if(shouldInvoke(time)){return trailingEdge(time)}timerId=setTimeout(timerExpired,remainingWait(time))}function trailingEdge(time){clearTimeout(timerId);timerId=undefined;if(trailing&&lastArgs){return invokeFunc(time)}lastArgs=lastThis=undefined;return result}function cancel(){if(timerId!==undefined){clearTimeout(timerId)}lastCallTime=lastInvokeTime=0;lastArgs=lastThis=timerId=undefined}function flush(){return timerId===undefined?result:trailingEdge(now())}function debounced(){var time=now(),isInvoking=shouldInvoke(time);lastArgs=arguments;lastThis=this;lastCallTime=time;if(isInvoking){if(timerId===undefined){return leadingEdge(lastCallTime)}if(maxing){clearTimeout(timerId);timerId=setTimeout(timerExpired,wait);return invokeFunc(lastCallTime)}}if(timerId===undefined){timerId=setTimeout(timerExpired,wait)}return result}debounced.cancel=cancel;debounced.flush=flush;return debounced}var defer=rest(function(func,args){return baseDelay(func,1,args)});var delay=rest(function(func,wait,args){return baseDelay(func,toNumber(wait)||0,args)});function flip(func){return createWrapper(func,FLIP_FLAG)}function memoize(func,resolver){if(typeof func!="function"||resolver&&typeof resolver!="function"){throw new TypeError(FUNC_ERROR_TEXT)}var memoized=function(){var args=arguments,key=resolver?resolver.apply(this,args):args[0],cache=memoized.cache;if(cache.has(key)){return cache.get(key)}var result=func.apply(this,args);memoized.cache=cache.set(key,result);return result};memoized.cache=new(memoize.Cache||MapCache);return memoized}memoize.Cache=MapCache;function negate(predicate){if(typeof predicate!="function"){throw new TypeError(FUNC_ERROR_TEXT)}return function(){return!predicate.apply(this,arguments)}}function once(func){return before(2,func)}var overArgs=rest(function(func,transforms){transforms=transforms.length==1&&isArray(transforms[0])?arrayMap(transforms[0],baseUnary(getIteratee())):arrayMap(baseFlatten(transforms,1,isFlattenableIteratee),baseUnary(getIteratee()));var funcsLength=transforms.length;return rest(function(args){var index=-1,length=nativeMin(args.length,funcsLength);while(++index<length){args[index]=transforms[index].call(this,args[index])}return apply(func,this,args)})});var partial=rest(function(func,partials){var holders=replaceHolders(partials,getPlaceholder(partial));return createWrapper(func,PARTIAL_FLAG,undefined,partials,holders)});var partialRight=rest(function(func,partials){var holders=replaceHolders(partials,getPlaceholder(partialRight));return createWrapper(func,PARTIAL_RIGHT_FLAG,undefined,partials,holders)});var rearg=rest(function(func,indexes){return createWrapper(func,REARG_FLAG,undefined,undefined,undefined,baseFlatten(indexes,1))});function rest(func,start){if(typeof func!="function"){throw new TypeError(FUNC_ERROR_TEXT)}start=nativeMax(start===undefined?func.length-1:toInteger(start),0);return function(){var args=arguments,index=-1,length=nativeMax(args.length-start,0),array=Array(length);while(++index<length){array[index]=args[start+index]}switch(start){case 0:return func.call(this,array);case 1:return func.call(this,args[0],array);case 2:return func.call(this,args[0],args[1],array)}var otherArgs=Array(start+1);index=-1;while(++index<start){otherArgs[index]=args[index]}otherArgs[start]=array;return apply(func,this,otherArgs)}}function spread(func,start){if(typeof func!="function"){throw new TypeError(FUNC_ERROR_TEXT)}start=start===undefined?0:nativeMax(toInteger(start),0);return rest(function(args){var array=args[start],otherArgs=castSlice(args,0,start);if(array){arrayPush(otherArgs,array)}return apply(func,this,otherArgs)})}function throttle(func,wait,options){var leading=true,trailing=true;if(typeof func!="function"){throw new TypeError(FUNC_ERROR_TEXT)}if(isObject(options)){leading="leading"in options?!!options.leading:leading;trailing="trailing"in options?!!options.trailing:trailing}return debounce(func,wait,{leading:leading,maxWait:wait,trailing:trailing})}function unary(func){return ary(func,1)}function wrap(value,wrapper){wrapper=wrapper==null?identity:wrapper;return partial(wrapper,value)}function castArray(){if(!arguments.length){return[]}var value=arguments[0];return isArray(value)?value:[value]}function clone(value){return baseClone(value,false,true)}function cloneWith(value,customizer){return baseClone(value,false,true,customizer)}function cloneDeep(value){return baseClone(value,true,true)}function cloneDeepWith(value,customizer){return baseClone(value,true,true,customizer)}function eq(value,other){return value===other||value!==value&&other!==other}var gt=createRelationalOperation(baseGt);var gte=createRelationalOperation(function(value,other){return value>=other});function isArguments(value){return isArrayLikeObject(value)&&hasOwnProperty.call(value,"callee")&&(!propertyIsEnumerable.call(value,"callee")||objectToString.call(value)==argsTag)}var isArray=Array.isArray;function isArrayBuffer(value){return isObjectLike(value)&&objectToString.call(value)==arrayBufferTag}function isArrayLike(value){return value!=null&&isLength(getLength(value))&&!isFunction(value)}function isArrayLikeObject(value){return isObjectLike(value)&&isArrayLike(value)}function isBoolean(value){return value===true||value===false||isObjectLike(value)&&objectToString.call(value)==boolTag}var isBuffer=!Buffer?constant(false):function(value){return value instanceof Buffer};function isDate(value){return isObjectLike(value)&&objectToString.call(value)==dateTag}function isElement(value){return!!value&&value.nodeType===1&&isObjectLike(value)&&!isPlainObject(value)}function isEmpty(value){if(isArrayLike(value)&&(isArray(value)||isString(value)||isFunction(value.splice)||isArguments(value)||isBuffer(value))){return!value.length}if(isObjectLike(value)){var tag=getTag(value);if(tag==mapTag||tag==setTag){return!value.size}}for(var key in value){if(hasOwnProperty.call(value,key)){return false}}return!(nonEnumShadows&&keys(value).length)}function isEqual(value,other){return baseIsEqual(value,other)}function isEqualWith(value,other,customizer){customizer=typeof customizer=="function"?customizer:undefined;var result=customizer?customizer(value,other):undefined;return result===undefined?baseIsEqual(value,other,customizer):!!result}function isError(value){if(!isObjectLike(value)){return false}return objectToString.call(value)==errorTag||typeof value.message=="string"&&typeof value.name=="string"}function isFinite(value){return typeof value=="number"&&nativeIsFinite(value)}function isFunction(value){var tag=isObject(value)?objectToString.call(value):"";return tag==funcTag||tag==genTag}function isInteger(value){return typeof value=="number"&&value==toInteger(value)}function isLength(value){return typeof value=="number"&&value>-1&&value%1==0&&value<=MAX_SAFE_INTEGER}function isObject(value){var type=typeof value;return!!value&&(type=="object"||type=="function")}function isObjectLike(value){return!!value&&typeof value=="object"}function isMap(value){return isObjectLike(value)&&getTag(value)==mapTag}function isMatch(object,source){return object===source||baseIsMatch(object,source,getMatchData(source))}function isMatchWith(object,source,customizer){customizer=typeof customizer=="function"?customizer:undefined;return baseIsMatch(object,source,getMatchData(source),customizer)}function isNaN(value){return isNumber(value)&&value!=+value}function isNative(value){if(!isObject(value)){return false}var pattern=isFunction(value)||isHostObject(value)?reIsNative:reIsHostCtor;return pattern.test(toSource(value))}function isNull(value){return value===null}function isNil(value){return value==null}function isNumber(value){return typeof value=="number"||isObjectLike(value)&&objectToString.call(value)==numberTag}function isPlainObject(value){if(!isObjectLike(value)||objectToString.call(value)!=objectTag||isHostObject(value)){return false}var proto=getPrototype(value);if(proto===null){return true}var Ctor=hasOwnProperty.call(proto,"constructor")&&proto.constructor;return typeof Ctor=="function"&&Ctor instanceof Ctor&&funcToString.call(Ctor)==objectCtorString}function isRegExp(value){return isObject(value)&&objectToString.call(value)==regexpTag}function isSafeInteger(value){return isInteger(value)&&value>=-MAX_SAFE_INTEGER&&value<=MAX_SAFE_INTEGER}function isSet(value){return isObjectLike(value)&&getTag(value)==setTag}function isString(value){return typeof value=="string"||!isArray(value)&&isObjectLike(value)&&objectToString.call(value)==stringTag}function isSymbol(value){return typeof value=="symbol"||isObjectLike(value)&&objectToString.call(value)==symbolTag}function isTypedArray(value){return isObjectLike(value)&&isLength(value.length)&&!!typedArrayTags[objectToString.call(value)]}function isUndefined(value){return value===undefined}function isWeakMap(value){return isObjectLike(value)&&getTag(value)==weakMapTag}function isWeakSet(value){return isObjectLike(value)&&objectToString.call(value)==weakSetTag}var lt=createRelationalOperation(baseLt);var lte=createRelationalOperation(function(value,other){return value<=other});function toArray(value){if(!value){return[]}if(isArrayLike(value)){return isString(value)?stringToArray(value):copyArray(value)}if(iteratorSymbol&&value[iteratorSymbol]){return iteratorToArray(value[iteratorSymbol]())}var tag=getTag(value),func=tag==mapTag?mapToArray:tag==setTag?setToArray:values;return func(value)}function toInteger(value){if(!value){return value===0?value:0}value=toNumber(value);if(value===INFINITY||value===-INFINITY){var sign=value<0?-1:1;return sign*MAX_INTEGER}var remainder=value%1;return value===value?remainder?value-remainder:value:0}function toLength(value){return value?baseClamp(toInteger(value),0,MAX_ARRAY_LENGTH):0}function toNumber(value){if(typeof value=="number"){return value}if(isSymbol(value)){return NAN}if(isObject(value)){var other=isFunction(value.valueOf)?value.valueOf():value;value=isObject(other)?other+"":other}if(typeof value!="string"){return value===0?value:+value}value=value.replace(reTrim,"");var isBinary=reIsBinary.test(value);return isBinary||reIsOctal.test(value)?freeParseInt(value.slice(2),isBinary?2:8):reIsBadHex.test(value)?NAN:+value}function toPlainObject(value){return copyObject(value,keysIn(value))}function toSafeInteger(value){return baseClamp(toInteger(value),-MAX_SAFE_INTEGER,MAX_SAFE_INTEGER)}function toString(value){return value==null?"":baseToString(value)}var assign=createAssigner(function(object,source){if(nonEnumShadows||isPrototype(source)||isArrayLike(source)){copyObject(source,keys(source),object);return}for(var key in source){if(hasOwnProperty.call(source,key)){assignValue(object,key,source[key])}}});var assignIn=createAssigner(function(object,source){if(nonEnumShadows||isPrototype(source)||isArrayLike(source)){copyObject(source,keysIn(source),object);return}for(var key in source){assignValue(object,key,source[key])}});var assignInWith=createAssigner(function(object,source,srcIndex,customizer){copyObject(source,keysIn(source),object,customizer)});var assignWith=createAssigner(function(object,source,srcIndex,customizer){copyObject(source,keys(source),object,customizer)});var at=rest(function(object,paths){return baseAt(object,baseFlatten(paths,1))});function create(prototype,properties){var result=baseCreate(prototype);return properties?baseAssign(result,properties):result}var defaults=rest(function(args){args.push(undefined,assignInDefaults);return apply(assignInWith,undefined,args)});var defaultsDeep=rest(function(args){args.push(undefined,mergeDefaults);return apply(mergeWith,undefined,args)});function findKey(object,predicate){return baseFind(object,getIteratee(predicate,3),baseForOwn,true)}function findLastKey(object,predicate){return baseFind(object,getIteratee(predicate,3),baseForOwnRight,true)}function forIn(object,iteratee){return object==null?object:baseFor(object,getIteratee(iteratee),keysIn)}function forInRight(object,iteratee){return object==null?object:baseForRight(object,getIteratee(iteratee),keysIn)}function forOwn(object,iteratee){return object&&baseForOwn(object,getIteratee(iteratee))}function forOwnRight(object,iteratee){return object&&baseForOwnRight(object,getIteratee(iteratee))}function functions(object){return object==null?[]:baseFunctions(object,keys(object))}function functionsIn(object){return object==null?[]:baseFunctions(object,keysIn(object))}function get(object,path,defaultValue){var result=object==null?undefined:baseGet(object,path);return result===undefined?defaultValue:result}function has(object,path){return object!=null&&hasPath(object,path,baseHas)}function hasIn(object,path){return object!=null&&hasPath(object,path,baseHasIn)}var invert=createInverter(function(result,value,key){result[value]=key},constant(identity));var invertBy=createInverter(function(result,value,key){if(hasOwnProperty.call(result,value)){result[value].push(key)}else{result[value]=[key]}},getIteratee);var invoke=rest(baseInvoke);function keys(object){var isProto=isPrototype(object);if(!(isProto||isArrayLike(object))){return baseKeys(object)}var indexes=indexKeys(object),skipIndexes=!!indexes,result=indexes||[],length=result.length;for(var key in object){if(baseHas(object,key)&&!(skipIndexes&&(key=="length"||isIndex(key,length)))&&!(isProto&&key=="constructor")){result.push(key)}}return result}function keysIn(object){var index=-1,isProto=isPrototype(object),props=baseKeysIn(object),propsLength=props.length,indexes=indexKeys(object),skipIndexes=!!indexes,result=indexes||[],length=result.length;while(++index<propsLength){var key=props[index];if(!(skipIndexes&&(key=="length"||isIndex(key,length)))&&!(key=="constructor"&&(isProto||!hasOwnProperty.call(object,key)))){result.push(key)}}return result}function mapKeys(object,iteratee){var result={};iteratee=getIteratee(iteratee,3);baseForOwn(object,function(value,key,object){result[iteratee(value,key,object)]=value});return result}function mapValues(object,iteratee){var result={};iteratee=getIteratee(iteratee,3);baseForOwn(object,function(value,key,object){result[key]=iteratee(value,key,object)});return result}var merge=createAssigner(function(object,source,srcIndex){baseMerge(object,source,srcIndex)});var mergeWith=createAssigner(function(object,source,srcIndex,customizer){baseMerge(object,source,srcIndex,customizer)});var omit=rest(function(object,props){if(object==null){return{}}props=arrayMap(baseFlatten(props,1),toKey);return basePick(object,baseDifference(getAllKeysIn(object),props))});function omitBy(object,predicate){predicate=getIteratee(predicate);return basePickBy(object,function(value,key){return!predicate(value,key)})}var pick=rest(function(object,props){return object==null?{}:basePick(object,arrayMap(baseFlatten(props,1),toKey))});function pickBy(object,predicate){return object==null?{}:basePickBy(object,getIteratee(predicate))}function result(object,path,defaultValue){path=isKey(path,object)?[path]:castPath(path);var index=-1,length=path.length;if(!length){object=undefined;length=1}while(++index<length){var value=object==null?undefined:object[toKey(path[index])];if(value===undefined){index=length;value=defaultValue}object=isFunction(value)?value.call(object):value}return object}function set(object,path,value){return object==null?object:baseSet(object,path,value)}function setWith(object,path,value,customizer){customizer=typeof customizer=="function"?customizer:undefined;return object==null?object:baseSet(object,path,value,customizer)}function toPairs(object){return baseToPairs(object,keys(object))}function toPairsIn(object){return baseToPairs(object,keysIn(object))}function transform(object,iteratee,accumulator){var isArr=isArray(object)||isTypedArray(object);iteratee=getIteratee(iteratee,4);if(accumulator==null){if(isArr||isObject(object)){var Ctor=object.constructor;if(isArr){accumulator=isArray(object)?new Ctor:[]}else{accumulator=isFunction(Ctor)?baseCreate(getPrototype(object)):{}}}else{accumulator={}}}(isArr?arrayEach:baseForOwn)(object,function(value,index,object){return iteratee(accumulator,value,index,object)});return accumulator}function unset(object,path){return object==null?true:baseUnset(object,path)}function update(object,path,updater){return object==null?object:baseUpdate(object,path,castFunction(updater))}function updateWith(object,path,updater,customizer){customizer=typeof customizer=="function"?customizer:undefined;return object==null?object:baseUpdate(object,path,castFunction(updater),customizer)}function values(object){return object?baseValues(object,keys(object)):[]}function valuesIn(object){return object==null?[]:baseValues(object,keysIn(object))}function clamp(number,lower,upper){if(upper===undefined){upper=lower;lower=undefined}if(upper!==undefined){upper=toNumber(upper);upper=upper===upper?upper:0}if(lower!==undefined){lower=toNumber(lower);lower=lower===lower?lower:0}return baseClamp(toNumber(number),lower,upper)}function inRange(number,start,end){start=toNumber(start)||0;if(end===undefined){end=start;start=0}else{end=toNumber(end)||0}number=toNumber(number);return baseInRange(number,start,end)}function random(lower,upper,floating){if(floating&&typeof floating!="boolean"&&isIterateeCall(lower,upper,floating)){upper=floating=undefined}if(floating===undefined){if(typeof upper=="boolean"){floating=upper;upper=undefined}else if(typeof lower=="boolean"){floating=lower;lower=undefined}}if(lower===undefined&&upper===undefined){lower=0;upper=1}else{lower=toNumber(lower)||0;if(upper===undefined){upper=lower;lower=0}else{upper=toNumber(upper)||0}}if(lower>upper){var temp=lower;lower=upper;upper=temp}if(floating||lower%1||upper%1){var rand=nativeRandom();return nativeMin(lower+rand*(upper-lower+freeParseFloat("1e-"+((rand+"").length-1))),upper)}return baseRandom(lower,upper)}var camelCase=createCompounder(function(result,word,index){word=word.toLowerCase();return result+(index?capitalize(word):word)});function capitalize(string){return upperFirst(toString(string).toLowerCase())}function deburr(string){string=toString(string);return string&&string.replace(reLatin1,deburrLetter).replace(reComboMark,"")}function endsWith(string,target,position){string=toString(string);target=baseToString(target);var length=string.length;position=position===undefined?length:baseClamp(toInteger(position),0,length);position-=target.length;return position>=0&&string.indexOf(target,position)==position}function escape(string){string=toString(string);return string&&reHasUnescapedHtml.test(string)?string.replace(reUnescapedHtml,escapeHtmlChar):string}function escapeRegExp(string){string=toString(string);return string&&reHasRegExpChar.test(string)?string.replace(reRegExpChar,"\\$&"):string}var kebabCase=createCompounder(function(result,word,index){return result+(index?"-":"")+word.toLowerCase()});var lowerCase=createCompounder(function(result,word,index){return result+(index?" ":"")+word.toLowerCase()});var lowerFirst=createCaseFirst("toLowerCase");function pad(string,length,chars){string=toString(string);length=toInteger(length);var strLength=length?stringSize(string):0;if(!length||strLength>=length){return string}var mid=(length-strLength)/2;return createPadding(nativeFloor(mid),chars)+string+createPadding(nativeCeil(mid),chars)}function padEnd(string,length,chars){string=toString(string);length=toInteger(length);var strLength=length?stringSize(string):0;return length&&strLength<length?string+createPadding(length-strLength,chars):string}function padStart(string,length,chars){string=toString(string);length=toInteger(length);var strLength=length?stringSize(string):0;return length&&strLength<length?createPadding(length-strLength,chars)+string:string}function parseInt(string,radix,guard){if(guard||radix==null){radix=0}else if(radix){radix=+radix}string=toString(string).replace(reTrim,"");return nativeParseInt(string,radix||(reHasHexPrefix.test(string)?16:10))}function repeat(string,n,guard){if(guard?isIterateeCall(string,n,guard):n===undefined){n=1}else{n=toInteger(n)}return baseRepeat(toString(string),n)}function replace(){var args=arguments,string=toString(args[0]);return args.length<3?string:nativeReplace.call(string,args[1],args[2])}var snakeCase=createCompounder(function(result,word,index){return result+(index?"_":"")+word.toLowerCase()});function split(string,separator,limit){if(limit&&typeof limit!="number"&&isIterateeCall(string,separator,limit)){separator=limit=undefined}limit=limit===undefined?MAX_ARRAY_LENGTH:limit>>>0;if(!limit){return[]}string=toString(string);if(string&&(typeof separator=="string"||separator!=null&&!isRegExp(separator))){separator=baseToString(separator);if(separator==""&&reHasComplexSymbol.test(string)){return castSlice(stringToArray(string),0,limit)}}return nativeSplit.call(string,separator,limit)}var startCase=createCompounder(function(result,word,index){return result+(index?" ":"")+upperFirst(word)});function startsWith(string,target,position){string=toString(string);position=baseClamp(toInteger(position),0,string.length);return string.lastIndexOf(baseToString(target),position)==position}function template(string,options,guard){var settings=lodash.templateSettings;if(guard&&isIterateeCall(string,options,guard)){options=undefined}string=toString(string);options=assignInWith({},options,settings,assignInDefaults);var imports=assignInWith({},options.imports,settings.imports,assignInDefaults),importsKeys=keys(imports),importsValues=baseValues(imports,importsKeys);var isEscaping,isEvaluating,index=0,interpolate=options.interpolate||reNoMatch,source="__p += '";var reDelimiters=RegExp((options.escape||reNoMatch).source+"|"+interpolate.source+"|"+(interpolate===reInterpolate?reEsTemplate:reNoMatch).source+"|"+(options.evaluate||reNoMatch).source+"|$","g");var sourceURL="//# sourceURL="+("sourceURL"in options?options.sourceURL:"lodash.templateSources["+ ++templateCounter+"]")+"\n";string.replace(reDelimiters,function(match,escapeValue,interpolateValue,esTemplateValue,evaluateValue,offset){interpolateValue||(interpolateValue=esTemplateValue);source+=string.slice(index,offset).replace(reUnescapedString,escapeStringChar);if(escapeValue){isEscaping=true;source+="' +\n__e("+escapeValue+") +\n'"}if(evaluateValue){isEvaluating=true;source+="';\n"+evaluateValue+";\n__p += '"}if(interpolateValue){source+="' +\n((__t = ("+interpolateValue+")) == null ? '' : __t) +\n'"}index=offset+match.length;return match});source+="';\n";var variable=options.variable;if(!variable){source="with (obj) {\n"+source+"\n}\n"}source=(isEvaluating?source.replace(reEmptyStringLeading,""):source).replace(reEmptyStringMiddle,"$1").replace(reEmptyStringTrailing,"$1;");source="function("+(variable||"obj")+") {\n"+(variable?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(isEscaping?", __e = _.escape":"")+(isEvaluating?", __j = Array.prototype.join;\n"+"function print() { __p += __j.call(arguments, '') }\n":";\n")+source+"return __p\n}";var result=attempt(function(){return Function(importsKeys,sourceURL+"return "+source).apply(undefined,importsValues)});result.source=source;if(isError(result)){throw result}return result}function toLower(value){return toString(value).toLowerCase()}function toUpper(value){return toString(value).toUpperCase()}function trim(string,chars,guard){string=toString(string);if(string&&(guard||chars===undefined)){return string.replace(reTrim,"")}if(!string||!(chars=baseToString(chars))){return string}var strSymbols=stringToArray(string),chrSymbols=stringToArray(chars),start=charsStartIndex(strSymbols,chrSymbols),end=charsEndIndex(strSymbols,chrSymbols)+1;return castSlice(strSymbols,start,end).join("")}function trimEnd(string,chars,guard){string=toString(string);if(string&&(guard||chars===undefined)){return string.replace(reTrimEnd,"")}if(!string||!(chars=baseToString(chars))){return string}var strSymbols=stringToArray(string),end=charsEndIndex(strSymbols,stringToArray(chars))+1;return castSlice(strSymbols,0,end).join("")}function trimStart(string,chars,guard){string=toString(string);if(string&&(guard||chars===undefined)){return string.replace(reTrimStart,"")}if(!string||!(chars=baseToString(chars))){return string}var strSymbols=stringToArray(string),start=charsStartIndex(strSymbols,stringToArray(chars));return castSlice(strSymbols,start).join("")}function truncate(string,options){var length=DEFAULT_TRUNC_LENGTH,omission=DEFAULT_TRUNC_OMISSION;if(isObject(options)){var separator="separator"in options?options.separator:separator;length="length"in options?toInteger(options.length):length;omission="omission"in options?baseToString(options.omission):omission}string=toString(string);var strLength=string.length;if(reHasComplexSymbol.test(string)){var strSymbols=stringToArray(string);strLength=strSymbols.length}if(length>=strLength){return string}var end=length-stringSize(omission);if(end<1){return omission}var result=strSymbols?castSlice(strSymbols,0,end).join(""):string.slice(0,end);if(separator===undefined){return result+omission}if(strSymbols){end+=result.length-end}if(isRegExp(separator)){if(string.slice(end).search(separator)){var match,substring=result;if(!separator.global){separator=RegExp(separator.source,toString(reFlags.exec(separator))+"g")}separator.lastIndex=0;while(match=separator.exec(substring)){var newEnd=match.index}result=result.slice(0,newEnd===undefined?end:newEnd)}}else if(string.indexOf(baseToString(separator),end)!=end){var index=result.lastIndexOf(separator);if(index>-1){result=result.slice(0,index)}}return result+omission}function unescape(string){string=toString(string);return string&&reHasEscapedHtml.test(string)?string.replace(reEscapedHtml,unescapeHtmlChar):string}var upperCase=createCompounder(function(result,word,index){return result+(index?" ":"")+word.toUpperCase()});var upperFirst=createCaseFirst("toUpperCase");function words(string,pattern,guard){string=toString(string);pattern=guard?undefined:pattern;if(pattern===undefined){pattern=reHasComplexWord.test(string)?reComplexWord:reBasicWord}return string.match(pattern)||[]}var attempt=rest(function(func,args){try{return apply(func,undefined,args)}catch(e){return isError(e)?e:new Error(e)}});var bindAll=rest(function(object,methodNames){arrayEach(baseFlatten(methodNames,1),function(key){key=toKey(key);object[key]=bind(object[key],object)});return object});function cond(pairs){var length=pairs?pairs.length:0,toIteratee=getIteratee();pairs=!length?[]:arrayMap(pairs,function(pair){if(typeof pair[1]!="function"){throw new TypeError(FUNC_ERROR_TEXT)}return[toIteratee(pair[0]),pair[1]]});return rest(function(args){var index=-1;while(++index<length){var pair=pairs[index];if(apply(pair[0],this,args)){return apply(pair[1],this,args)}}})}function conforms(source){return baseConforms(baseClone(source,true))}function constant(value){return function(){return value}}var flow=createFlow();var flowRight=createFlow(true);function identity(value){return value}function iteratee(func){return baseIteratee(typeof func=="function"?func:baseClone(func,true))}function matches(source){return baseMatches(baseClone(source,true))}function matchesProperty(path,srcValue){return baseMatchesProperty(path,baseClone(srcValue,true))}var method=rest(function(path,args){return function(object){return baseInvoke(object,path,args)}});var methodOf=rest(function(object,args){return function(path){return baseInvoke(object,path,args)}});function mixin(object,source,options){var props=keys(source),methodNames=baseFunctions(source,props);if(options==null&&!(isObject(source)&&(methodNames.length||!props.length))){options=source;source=object;object=this;methodNames=baseFunctions(source,keys(source))}var chain=!(isObject(options)&&"chain"in options)||!!options.chain,isFunc=isFunction(object);arrayEach(methodNames,function(methodName){var func=source[methodName];object[methodName]=func;if(isFunc){object.prototype[methodName]=function(){var chainAll=this.__chain__;if(chain||chainAll){var result=object(this.__wrapped__),actions=result.__actions__=copyArray(this.__actions__);actions.push({func:func,args:arguments,thisArg:object});result.__chain__=chainAll;return result}return func.apply(object,arrayPush([this.value()],arguments))}}});return object}function noConflict(){if(root._===this){root._=oldDash}return this}function noop(){}function nthArg(n){n=toInteger(n);return rest(function(args){return baseNth(args,n)})}var over=createOver(arrayMap);var overEvery=createOver(arrayEvery);var overSome=createOver(arraySome);function property(path){return isKey(path)?baseProperty(toKey(path)):basePropertyDeep(path)}function propertyOf(object){return function(path){return object==null?undefined:baseGet(object,path)}}var range=createRange();var rangeRight=createRange(true);function times(n,iteratee){n=toInteger(n);if(n<1||n>MAX_SAFE_INTEGER){return[]}var index=MAX_ARRAY_LENGTH,length=nativeMin(n,MAX_ARRAY_LENGTH);iteratee=getIteratee(iteratee);n-=MAX_ARRAY_LENGTH;var result=baseTimes(length,iteratee);while(++index<n){iteratee(index)}return result}function toPath(value){if(isArray(value)){return arrayMap(value,toKey)}return isSymbol(value)?[value]:copyArray(stringToPath(value))}function uniqueId(prefix){var id=++idCounter;return toString(prefix)+id}var add=createMathOperation(function(augend,addend){return augend+addend});var ceil=createRound("ceil");var divide=createMathOperation(function(dividend,divisor){return dividend/divisor});var floor=createRound("floor");function max(array){return array&&array.length?baseExtremum(array,identity,baseGt):undefined}function maxBy(array,iteratee){return array&&array.length?baseExtremum(array,getIteratee(iteratee),baseGt):undefined}function mean(array){return baseMean(array,identity)}function meanBy(array,iteratee){return baseMean(array,getIteratee(iteratee))}function min(array){return array&&array.length?baseExtremum(array,identity,baseLt):undefined}function minBy(array,iteratee){
return array&&array.length?baseExtremum(array,getIteratee(iteratee),baseLt):undefined}var multiply=createMathOperation(function(multiplier,multiplicand){return multiplier*multiplicand});var round=createRound("round");var subtract=createMathOperation(function(minuend,subtrahend){return minuend-subtrahend});function sum(array){return array&&array.length?baseSum(array,identity):0}function sumBy(array,iteratee){return array&&array.length?baseSum(array,getIteratee(iteratee)):0}lodash.after=after;lodash.ary=ary;lodash.assign=assign;lodash.assignIn=assignIn;lodash.assignInWith=assignInWith;lodash.assignWith=assignWith;lodash.at=at;lodash.before=before;lodash.bind=bind;lodash.bindAll=bindAll;lodash.bindKey=bindKey;lodash.castArray=castArray;lodash.chain=chain;lodash.chunk=chunk;lodash.compact=compact;lodash.concat=concat;lodash.cond=cond;lodash.conforms=conforms;lodash.constant=constant;lodash.countBy=countBy;lodash.create=create;lodash.curry=curry;lodash.curryRight=curryRight;lodash.debounce=debounce;lodash.defaults=defaults;lodash.defaultsDeep=defaultsDeep;lodash.defer=defer;lodash.delay=delay;lodash.difference=difference;lodash.differenceBy=differenceBy;lodash.differenceWith=differenceWith;lodash.drop=drop;lodash.dropRight=dropRight;lodash.dropRightWhile=dropRightWhile;lodash.dropWhile=dropWhile;lodash.fill=fill;lodash.filter=filter;lodash.flatMap=flatMap;lodash.flatMapDeep=flatMapDeep;lodash.flatMapDepth=flatMapDepth;lodash.flatten=flatten;lodash.flattenDeep=flattenDeep;lodash.flattenDepth=flattenDepth;lodash.flip=flip;lodash.flow=flow;lodash.flowRight=flowRight;lodash.fromPairs=fromPairs;lodash.functions=functions;lodash.functionsIn=functionsIn;lodash.groupBy=groupBy;lodash.initial=initial;lodash.intersection=intersection;lodash.intersectionBy=intersectionBy;lodash.intersectionWith=intersectionWith;lodash.invert=invert;lodash.invertBy=invertBy;lodash.invokeMap=invokeMap;lodash.iteratee=iteratee;lodash.keyBy=keyBy;lodash.keys=keys;lodash.keysIn=keysIn;lodash.map=map;lodash.mapKeys=mapKeys;lodash.mapValues=mapValues;lodash.matches=matches;lodash.matchesProperty=matchesProperty;lodash.memoize=memoize;lodash.merge=merge;lodash.mergeWith=mergeWith;lodash.method=method;lodash.methodOf=methodOf;lodash.mixin=mixin;lodash.negate=negate;lodash.nthArg=nthArg;lodash.omit=omit;lodash.omitBy=omitBy;lodash.once=once;lodash.orderBy=orderBy;lodash.over=over;lodash.overArgs=overArgs;lodash.overEvery=overEvery;lodash.overSome=overSome;lodash.partial=partial;lodash.partialRight=partialRight;lodash.partition=partition;lodash.pick=pick;lodash.pickBy=pickBy;lodash.property=property;lodash.propertyOf=propertyOf;lodash.pull=pull;lodash.pullAll=pullAll;lodash.pullAllBy=pullAllBy;lodash.pullAllWith=pullAllWith;lodash.pullAt=pullAt;lodash.range=range;lodash.rangeRight=rangeRight;lodash.rearg=rearg;lodash.reject=reject;lodash.remove=remove;lodash.rest=rest;lodash.reverse=reverse;lodash.sampleSize=sampleSize;lodash.set=set;lodash.setWith=setWith;lodash.shuffle=shuffle;lodash.slice=slice;lodash.sortBy=sortBy;lodash.sortedUniq=sortedUniq;lodash.sortedUniqBy=sortedUniqBy;lodash.split=split;lodash.spread=spread;lodash.tail=tail;lodash.take=take;lodash.takeRight=takeRight;lodash.takeRightWhile=takeRightWhile;lodash.takeWhile=takeWhile;lodash.tap=tap;lodash.throttle=throttle;lodash.thru=thru;lodash.toArray=toArray;lodash.toPairs=toPairs;lodash.toPairsIn=toPairsIn;lodash.toPath=toPath;lodash.toPlainObject=toPlainObject;lodash.transform=transform;lodash.unary=unary;lodash.union=union;lodash.unionBy=unionBy;lodash.unionWith=unionWith;lodash.uniq=uniq;lodash.uniqBy=uniqBy;lodash.uniqWith=uniqWith;lodash.unset=unset;lodash.unzip=unzip;lodash.unzipWith=unzipWith;lodash.update=update;lodash.updateWith=updateWith;lodash.values=values;lodash.valuesIn=valuesIn;lodash.without=without;lodash.words=words;lodash.wrap=wrap;lodash.xor=xor;lodash.xorBy=xorBy;lodash.xorWith=xorWith;lodash.zip=zip;lodash.zipObject=zipObject;lodash.zipObjectDeep=zipObjectDeep;lodash.zipWith=zipWith;lodash.entries=toPairs;lodash.entriesIn=toPairsIn;lodash.extend=assignIn;lodash.extendWith=assignInWith;mixin(lodash,lodash);lodash.add=add;lodash.attempt=attempt;lodash.camelCase=camelCase;lodash.capitalize=capitalize;lodash.ceil=ceil;lodash.clamp=clamp;lodash.clone=clone;lodash.cloneDeep=cloneDeep;lodash.cloneDeepWith=cloneDeepWith;lodash.cloneWith=cloneWith;lodash.deburr=deburr;lodash.divide=divide;lodash.endsWith=endsWith;lodash.eq=eq;lodash.escape=escape;lodash.escapeRegExp=escapeRegExp;lodash.every=every;lodash.find=find;lodash.findIndex=findIndex;lodash.findKey=findKey;lodash.findLast=findLast;lodash.findLastIndex=findLastIndex;lodash.findLastKey=findLastKey;lodash.floor=floor;lodash.forEach=forEach;lodash.forEachRight=forEachRight;lodash.forIn=forIn;lodash.forInRight=forInRight;lodash.forOwn=forOwn;lodash.forOwnRight=forOwnRight;lodash.get=get;lodash.gt=gt;lodash.gte=gte;lodash.has=has;lodash.hasIn=hasIn;lodash.head=head;lodash.identity=identity;lodash.includes=includes;lodash.indexOf=indexOf;lodash.inRange=inRange;lodash.invoke=invoke;lodash.isArguments=isArguments;lodash.isArray=isArray;lodash.isArrayBuffer=isArrayBuffer;lodash.isArrayLike=isArrayLike;lodash.isArrayLikeObject=isArrayLikeObject;lodash.isBoolean=isBoolean;lodash.isBuffer=isBuffer;lodash.isDate=isDate;lodash.isElement=isElement;lodash.isEmpty=isEmpty;lodash.isEqual=isEqual;lodash.isEqualWith=isEqualWith;lodash.isError=isError;lodash.isFinite=isFinite;lodash.isFunction=isFunction;lodash.isInteger=isInteger;lodash.isLength=isLength;lodash.isMap=isMap;lodash.isMatch=isMatch;lodash.isMatchWith=isMatchWith;lodash.isNaN=isNaN;lodash.isNative=isNative;lodash.isNil=isNil;lodash.isNull=isNull;lodash.isNumber=isNumber;lodash.isObject=isObject;lodash.isObjectLike=isObjectLike;lodash.isPlainObject=isPlainObject;lodash.isRegExp=isRegExp;lodash.isSafeInteger=isSafeInteger;lodash.isSet=isSet;lodash.isString=isString;lodash.isSymbol=isSymbol;lodash.isTypedArray=isTypedArray;lodash.isUndefined=isUndefined;lodash.isWeakMap=isWeakMap;lodash.isWeakSet=isWeakSet;lodash.join=join;lodash.kebabCase=kebabCase;lodash.last=last;lodash.lastIndexOf=lastIndexOf;lodash.lowerCase=lowerCase;lodash.lowerFirst=lowerFirst;lodash.lt=lt;lodash.lte=lte;lodash.max=max;lodash.maxBy=maxBy;lodash.mean=mean;lodash.meanBy=meanBy;lodash.min=min;lodash.minBy=minBy;lodash.multiply=multiply;lodash.nth=nth;lodash.noConflict=noConflict;lodash.noop=noop;lodash.now=now;lodash.pad=pad;lodash.padEnd=padEnd;lodash.padStart=padStart;lodash.parseInt=parseInt;lodash.random=random;lodash.reduce=reduce;lodash.reduceRight=reduceRight;lodash.repeat=repeat;lodash.replace=replace;lodash.result=result;lodash.round=round;lodash.runInContext=runInContext;lodash.sample=sample;lodash.size=size;lodash.snakeCase=snakeCase;lodash.some=some;lodash.sortedIndex=sortedIndex;lodash.sortedIndexBy=sortedIndexBy;lodash.sortedIndexOf=sortedIndexOf;lodash.sortedLastIndex=sortedLastIndex;lodash.sortedLastIndexBy=sortedLastIndexBy;lodash.sortedLastIndexOf=sortedLastIndexOf;lodash.startCase=startCase;lodash.startsWith=startsWith;lodash.subtract=subtract;lodash.sum=sum;lodash.sumBy=sumBy;lodash.template=template;lodash.times=times;lodash.toInteger=toInteger;lodash.toLength=toLength;lodash.toLower=toLower;lodash.toNumber=toNumber;lodash.toSafeInteger=toSafeInteger;lodash.toString=toString;lodash.toUpper=toUpper;lodash.trim=trim;lodash.trimEnd=trimEnd;lodash.trimStart=trimStart;lodash.truncate=truncate;lodash.unescape=unescape;lodash.uniqueId=uniqueId;lodash.upperCase=upperCase;lodash.upperFirst=upperFirst;lodash.each=forEach;lodash.eachRight=forEachRight;lodash.first=head;mixin(lodash,function(){var source={};baseForOwn(lodash,function(func,methodName){if(!hasOwnProperty.call(lodash.prototype,methodName)){source[methodName]=func}});return source}(),{chain:false});lodash.VERSION=VERSION;arrayEach(["bind","bindKey","curry","curryRight","partial","partialRight"],function(methodName){lodash[methodName].placeholder=lodash});arrayEach(["drop","take"],function(methodName,index){LazyWrapper.prototype[methodName]=function(n){var filtered=this.__filtered__;if(filtered&&!index){return new LazyWrapper(this)}n=n===undefined?1:nativeMax(toInteger(n),0);var result=this.clone();if(filtered){result.__takeCount__=nativeMin(n,result.__takeCount__)}else{result.__views__.push({size:nativeMin(n,MAX_ARRAY_LENGTH),type:methodName+(result.__dir__<0?"Right":"")})}return result};LazyWrapper.prototype[methodName+"Right"]=function(n){return this.reverse()[methodName](n).reverse()}});arrayEach(["filter","map","takeWhile"],function(methodName,index){var type=index+1,isFilter=type==LAZY_FILTER_FLAG||type==LAZY_WHILE_FLAG;LazyWrapper.prototype[methodName]=function(iteratee){var result=this.clone();result.__iteratees__.push({iteratee:getIteratee(iteratee,3),type:type});result.__filtered__=result.__filtered__||isFilter;return result}});arrayEach(["head","last"],function(methodName,index){var takeName="take"+(index?"Right":"");LazyWrapper.prototype[methodName]=function(){return this[takeName](1).value()[0]}});arrayEach(["initial","tail"],function(methodName,index){var dropName="drop"+(index?"":"Right");LazyWrapper.prototype[methodName]=function(){return this.__filtered__?new LazyWrapper(this):this[dropName](1)}});LazyWrapper.prototype.compact=function(){return this.filter(identity)};LazyWrapper.prototype.find=function(predicate){return this.filter(predicate).head()};LazyWrapper.prototype.findLast=function(predicate){return this.reverse().find(predicate)};LazyWrapper.prototype.invokeMap=rest(function(path,args){if(typeof path=="function"){return new LazyWrapper(this)}return this.map(function(value){return baseInvoke(value,path,args)})});LazyWrapper.prototype.reject=function(predicate){predicate=getIteratee(predicate,3);return this.filter(function(value){return!predicate(value)})};LazyWrapper.prototype.slice=function(start,end){start=toInteger(start);var result=this;if(result.__filtered__&&(start>0||end<0)){return new LazyWrapper(result)}if(start<0){result=result.takeRight(-start)}else if(start){result=result.drop(start)}if(end!==undefined){end=toInteger(end);result=end<0?result.dropRight(-end):result.take(end-start)}return result};LazyWrapper.prototype.takeRightWhile=function(predicate){return this.reverse().takeWhile(predicate).reverse()};LazyWrapper.prototype.toArray=function(){return this.take(MAX_ARRAY_LENGTH)};baseForOwn(LazyWrapper.prototype,function(func,methodName){var checkIteratee=/^(?:filter|find|map|reject)|While$/.test(methodName),isTaker=/^(?:head|last)$/.test(methodName),lodashFunc=lodash[isTaker?"take"+(methodName=="last"?"Right":""):methodName],retUnwrapped=isTaker||/^find/.test(methodName);if(!lodashFunc){return}lodash.prototype[methodName]=function(){var value=this.__wrapped__,args=isTaker?[1]:arguments,isLazy=value instanceof LazyWrapper,iteratee=args[0],useLazy=isLazy||isArray(value);var interceptor=function(value){var result=lodashFunc.apply(lodash,arrayPush([value],args));return isTaker&&chainAll?result[0]:result};if(useLazy&&checkIteratee&&typeof iteratee=="function"&&iteratee.length!=1){isLazy=useLazy=false}var chainAll=this.__chain__,isHybrid=!!this.__actions__.length,isUnwrapped=retUnwrapped&&!chainAll,onlyLazy=isLazy&&!isHybrid;if(!retUnwrapped&&useLazy){value=onlyLazy?value:new LazyWrapper(this);var result=func.apply(value,args);result.__actions__.push({func:thru,args:[interceptor],thisArg:undefined});return new LodashWrapper(result,chainAll)}if(isUnwrapped&&onlyLazy){return func.apply(this,args)}result=this.thru(interceptor);return isUnwrapped?isTaker?result.value()[0]:result.value():result}});arrayEach(["pop","push","shift","sort","splice","unshift"],function(methodName){var func=arrayProto[methodName],chainName=/^(?:push|sort|unshift)$/.test(methodName)?"tap":"thru",retUnwrapped=/^(?:pop|shift)$/.test(methodName);lodash.prototype[methodName]=function(){var args=arguments;if(retUnwrapped&&!this.__chain__){var value=this.value();return func.apply(isArray(value)?value:[],args)}return this[chainName](function(value){return func.apply(isArray(value)?value:[],args)})}});baseForOwn(LazyWrapper.prototype,function(func,methodName){var lodashFunc=lodash[methodName];if(lodashFunc){var key=lodashFunc.name+"",names=realNames[key]||(realNames[key]=[]);names.push({name:methodName,func:lodashFunc})}});realNames[createHybridWrapper(undefined,BIND_KEY_FLAG).name]=[{name:"wrapper",func:undefined}];LazyWrapper.prototype.clone=lazyClone;LazyWrapper.prototype.reverse=lazyReverse;LazyWrapper.prototype.value=lazyValue;lodash.prototype.at=wrapperAt;lodash.prototype.chain=wrapperChain;lodash.prototype.commit=wrapperCommit;lodash.prototype.next=wrapperNext;lodash.prototype.plant=wrapperPlant;lodash.prototype.reverse=wrapperReverse;lodash.prototype.toJSON=lodash.prototype.valueOf=lodash.prototype.value=wrapperValue;if(iteratorSymbol){lodash.prototype[iteratorSymbol]=wrapperToIterator}return lodash}var _=runInContext();(freeWindow||freeSelf||{})._=_;if(typeof define=="function"&&typeof define.amd=="object"&&define.amd){define(function(){return _})}else if(freeExports&&freeModule){if(moduleExports){(freeModule.exports=_)._=_}freeExports._=_}else{root._=_}}).call(this)}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],6:[function(require,module,exports){(function(global){"use strict";var numeric=typeof exports==="undefined"?function numeric(){}:exports;if(typeof global!=="undefined"){global.numeric=numeric}numeric.version="1.2.6";numeric.bench=function bench(f,interval){var t1,t2,n,i;if(typeof interval==="undefined"){interval=15}n=.5;t1=new Date;while(1){n*=2;for(i=n;i>3;i-=4){f();f();f();f()}while(i>0){f();i--}t2=new Date;if(t2-t1>interval)break}for(i=n;i>3;i-=4){f();f();f();f()}while(i>0){f();i--}t2=new Date;return 1e3*(3*n-1)/(t2-t1)};numeric._myIndexOf=function _myIndexOf(w){var n=this.length,k;for(k=0;k<n;++k)if(this[k]===w)return k;return-1};numeric.myIndexOf=Array.prototype.indexOf?Array.prototype.indexOf:numeric._myIndexOf;numeric.Function=Function;numeric.precision=4;numeric.largeArray=50;numeric.prettyPrint=function prettyPrint(x){function fmtnum(x){if(x===0){return"0"}if(isNaN(x)){return"NaN"}if(x<0){return"-"+fmtnum(-x)}if(isFinite(x)){var scale=Math.floor(Math.log(x)/Math.log(10));var normalized=x/Math.pow(10,scale);var basic=normalized.toPrecision(numeric.precision);if(parseFloat(basic)===10){scale++;normalized=1;basic=normalized.toPrecision(numeric.precision)}return parseFloat(basic).toString()+"e"+scale.toString()}return"Infinity"}var ret=[];function foo(x){var k;if(typeof x==="undefined"){ret.push(Array(numeric.precision+8).join(" "));return false}if(typeof x==="string"){ret.push('"'+x+'"');return false}if(typeof x==="boolean"){ret.push(x.toString());return false}if(typeof x==="number"){var a=fmtnum(x);var b=x.toPrecision(numeric.precision);var c=parseFloat(x.toString()).toString();var d=[a,b,c,parseFloat(b).toString(),parseFloat(c).toString()];for(k=1;k<d.length;k++){if(d[k].length<a.length)a=d[k]}ret.push(Array(numeric.precision+8-a.length).join(" ")+a);return false}if(x===null){ret.push("null");return false}if(typeof x==="function"){ret.push(x.toString());var flag=false;for(k in x){if(x.hasOwnProperty(k)){if(flag)ret.push(",\n");else ret.push("\n{");flag=true;ret.push(k);ret.push(": \n");foo(x[k])}}if(flag)ret.push("}\n");return true}if(x instanceof Array){if(x.length>numeric.largeArray){ret.push("...Large Array...");return true}var flag=false;ret.push("[");for(k=0;k<x.length;k++){if(k>0){ret.push(",");if(flag)ret.push("\n ")}flag=foo(x[k])}ret.push("]");return true}ret.push("{");var flag=false;for(k in x){if(x.hasOwnProperty(k)){if(flag)ret.push(",\n");flag=true;ret.push(k);ret.push(": \n");foo(x[k])}}ret.push("}");return true}foo(x);return ret.join("")};numeric.parseDate=function parseDate(d){function foo(d){if(typeof d==="string"){return Date.parse(d.replace(/-/g,"/"))}if(!(d instanceof Array)){throw new Error("parseDate: parameter must be arrays of strings")}var ret=[],k;for(k=0;k<d.length;k++){ret[k]=foo(d[k])}return ret}return foo(d)};numeric.parseFloat=function parseFloat_(d){function foo(d){if(typeof d==="string"){return parseFloat(d)}if(!(d instanceof Array)){throw new Error("parseFloat: parameter must be arrays of strings")}var ret=[],k;for(k=0;k<d.length;k++){ret[k]=foo(d[k])}return ret}return foo(d)};numeric.parseCSV=function parseCSV(t){var foo=t.split("\n");var j,k;var ret=[];var pat=/(([^'",]*)|('[^']*')|("[^"]*")),/g;var patnum=/^\s*(([+-]?[0-9]+(\.[0-9]*)?(e[+-]?[0-9]+)?)|([+-]?[0-9]*(\.[0-9]+)?(e[+-]?[0-9]+)?))\s*$/;var stripper=function(n){return n.substr(0,n.length-1)};var count=0;for(k=0;k<foo.length;k++){var bar=(foo[k]+",").match(pat),baz;if(bar.length>0){ret[count]=[];for(j=0;j<bar.length;j++){baz=stripper(bar[j]);if(patnum.test(baz)){ret[count][j]=parseFloat(baz)}else ret[count][j]=baz}count++}}return ret};numeric.toCSV=function toCSV(A){var s=numeric.dim(A);var i,j,m,n,row,ret;m=s[0];n=s[1];ret=[];for(i=0;i<m;i++){row=[];for(j=0;j<m;j++){row[j]=A[i][j].toString()}ret[i]=row.join(", ")}return ret.join("\n")+"\n"};numeric.getURL=function getURL(url){var client=new XMLHttpRequest;client.open("GET",url,false);client.send();return client};numeric.imageURL=function imageURL(img){function base64(A){var n=A.length,i,x,y,z,p,q,r,s;var key="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var ret="";for(i=0;i<n;i+=3){x=A[i];y=A[i+1];z=A[i+2];p=x>>2;q=((x&3)<<4)+(y>>4);r=((y&15)<<2)+(z>>6);s=z&63;if(i+1>=n){r=s=64}else if(i+2>=n){s=64}ret+=key.charAt(p)+key.charAt(q)+key.charAt(r)+key.charAt(s)}return ret}function crc32Array(a,from,to){if(typeof from==="undefined"){from=0}if(typeof to==="undefined"){to=a.length}var table=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];var crc=-1,y=0,n=a.length,i;for(i=from;i<to;i++){y=(crc^a[i])&255;crc=crc>>>8^table[y]}return crc^-1}var h=img[0].length,w=img[0][0].length,s1,s2,next,k,length,a,b,i,j,adler32,crc32;var stream=[137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,w>>24&255,w>>16&255,w>>8&255,w&255,h>>24&255,h>>16&255,h>>8&255,h&255,8,2,0,0,0,-1,-2,-3,-4,-5,-6,-7,-8,73,68,65,84,8,29];crc32=crc32Array(stream,12,29);stream[29]=crc32>>24&255;stream[30]=crc32>>16&255;stream[31]=crc32>>8&255;stream[32]=crc32&255;s1=1;s2=0;for(i=0;i<h;i++){if(i<h-1){stream.push(0)}else{stream.push(1)}a=3*w+1+(i===0)&255;b=3*w+1+(i===0)>>8&255;stream.push(a);stream.push(b);stream.push(~a&255);stream.push(~b&255);if(i===0)stream.push(0);for(j=0;j<w;j++){for(k=0;k<3;k++){a=img[k][i][j];if(a>255)a=255;else if(a<0)a=0;else a=Math.round(a);s1=(s1+a)%65521;s2=(s2+s1)%65521;stream.push(a)}}stream.push(0)}adler32=(s2<<16)+s1;stream.push(adler32>>24&255);stream.push(adler32>>16&255);stream.push(adler32>>8&255);stream.push(adler32&255);length=stream.length-41;stream[33]=length>>24&255;stream[34]=length>>16&255;stream[35]=length>>8&255;stream[36]=length&255;crc32=crc32Array(stream,37);stream.push(crc32>>24&255);stream.push(crc32>>16&255);stream.push(crc32>>8&255);stream.push(crc32&255);stream.push(0);stream.push(0);stream.push(0);stream.push(0);stream.push(73);stream.push(69);stream.push(78);stream.push(68);stream.push(174);stream.push(66);stream.push(96);stream.push(130);return"data:image/png;base64,"+base64(stream)};numeric._dim=function _dim(x){var ret=[];while(typeof x==="object"){ret.push(x.length);x=x[0]}return ret};numeric.dim=function dim(x){var y,z;if(typeof x==="object"){y=x[0];if(typeof y==="object"){z=y[0];if(typeof z==="object"){return numeric._dim(x)}return[x.length,y.length]}return[x.length]}return[]};numeric.mapreduce=function mapreduce(body,init){return Function("x","accum","_s","_k",'if(typeof accum === "undefined") accum = '+init+";\n"+'if(typeof x === "number") { var xi = x; '+body+"; return accum; }\n"+'if(typeof _s === "undefined") _s = numeric.dim(x);\n'+'if(typeof _k === "undefined") _k = 0;\n'+"var _n = _s[_k];\n"+"var i,xi;\n"+"if(_k < _s.length-1) {\n"+" for(i=_n-1;i>=0;i--) {\n"+" accum = arguments.callee(x[i],accum,_s,_k+1);\n"+" }"+" return accum;\n"+"}\n"+"for(i=_n-1;i>=1;i-=2) { \n"+" xi = x[i];\n"+" "+body+";\n"+" xi = x[i-1];\n"+" "+body+";\n"+"}\n"+"if(i === 0) {\n"+" xi = x[i];\n"+" "+body+"\n"+"}\n"+"return accum;")};numeric.mapreduce2=function mapreduce2(body,setup){return Function("x","var n = x.length;\n"+"var i,xi;\n"+setup+";\n"+"for(i=n-1;i!==-1;--i) { \n"+" xi = x[i];\n"+" "+body+";\n"+"}\n"+"return accum;")};numeric.same=function same(x,y){var i,n;if(!(x instanceof Array)||!(y instanceof Array)){return false}n=x.length;if(n!==y.length){return false}for(i=0;i<n;i++){if(x[i]===y[i]){continue}if(typeof x[i]==="object"){if(!same(x[i],y[i]))return false}else{return false}}return true};numeric.rep=function rep(s,v,k){if(typeof k==="undefined"){k=0}var n=s[k],ret=Array(n),i;if(k===s.length-1){for(i=n-2;i>=0;i-=2){ret[i+1]=v;ret[i]=v}if(i===-1){ret[0]=v}return ret}for(i=n-1;i>=0;i--){ret[i]=numeric.rep(s,v,k+1)}return ret};numeric.dotMMsmall=function dotMMsmall(x,y){var i,j,k,p,q,r,ret,foo,bar,woo,i0,k0,p0,r0;p=x.length;q=y.length;r=y[0].length;ret=Array(p);for(i=p-1;i>=0;i--){foo=Array(r);bar=x[i];for(k=r-1;k>=0;k--){woo=bar[q-1]*y[q-1][k];for(j=q-2;j>=1;j-=2){i0=j-1;woo+=bar[j]*y[j][k]+bar[i0]*y[i0][k]}if(j===0){woo+=bar[0]*y[0][k]}foo[k]=woo}ret[i]=foo}return ret};numeric._getCol=function _getCol(A,j,x){var n=A.length,i;for(i=n-1;i>0;--i){x[i]=A[i][j];--i;x[i]=A[i][j]}if(i===0)x[0]=A[0][j]};numeric.dotMMbig=function dotMMbig(x,y){var gc=numeric._getCol,p=y.length,v=Array(p);var m=x.length,n=y[0].length,A=new Array(m),xj;var VV=numeric.dotVV;var i,j,k,z;--p;--m;for(i=m;i!==-1;--i)A[i]=Array(n);--n;for(i=n;i!==-1;--i){gc(y,i,v);for(j=m;j!==-1;--j){z=0;xj=x[j];A[j][i]=VV(xj,v)}}return A};numeric.dotMV=function dotMV(x,y){var p=x.length,q=y.length,i;var ret=Array(p),dotVV=numeric.dotVV;for(i=p-1;i>=0;i--){ret[i]=dotVV(x[i],y)}return ret};numeric.dotVM=function dotVM(x,y){var i,j,k,p,q,r,ret,foo,bar,woo,i0,k0,p0,r0,s1,s2,s3,baz,accum;p=x.length;q=y[0].length;ret=Array(q);for(k=q-1;k>=0;k--){woo=x[p-1]*y[p-1][k];for(j=p-2;j>=1;j-=2){i0=j-1;woo+=x[j]*y[j][k]+x[i0]*y[i0][k]}if(j===0){woo+=x[0]*y[0][k]}ret[k]=woo}return ret};numeric.dotVV=function dotVV(x,y){var i,n=x.length,i1,ret=x[n-1]*y[n-1];for(i=n-2;i>=1;i-=2){i1=i-1;ret+=x[i]*y[i]+x[i1]*y[i1]}if(i===0){ret+=x[0]*y[0]}return ret};numeric.dot=function dot(x,y){var d=numeric.dim;switch(d(x).length*1e3+d(y).length){case 2002:if(y.length<10)return numeric.dotMMsmall(x,y);else return numeric.dotMMbig(x,y);case 2001:return numeric.dotMV(x,y);case 1002:return numeric.dotVM(x,y);case 1001:return numeric.dotVV(x,y);case 1e3:return numeric.mulVS(x,y);case 1:return numeric.mulSV(x,y);case 0:return x*y;default:throw new Error("numeric.dot only works on vectors and matrices")}};numeric.diag=function diag(d){var i,i1,j,n=d.length,A=Array(n),Ai;for(i=n-1;i>=0;i--){Ai=Array(n);i1=i+2;for(j=n-1;j>=i1;j-=2){Ai[j]=0;Ai[j-1]=0}if(j>i){Ai[j]=0}Ai[i]=d[i];for(j=i-1;j>=1;j-=2){Ai[j]=0;Ai[j-1]=0}if(j===0){Ai[0]=0}A[i]=Ai}return A};numeric.getDiag=function(A){var n=Math.min(A.length,A[0].length),i,ret=Array(n);for(i=n-1;i>=1;--i){ret[i]=A[i][i];--i;ret[i]=A[i][i]}if(i===0){ret[0]=A[0][0]}return ret};numeric.identity=function identity(n){return numeric.diag(numeric.rep([n],1))};numeric.pointwise=function pointwise(params,body,setup){if(typeof setup==="undefined"){setup=""}var fun=[];var k;var avec=/\[i\]$/,p,thevec="";var haveret=false;for(k=0;k<params.length;k++){if(avec.test(params[k])){p=params[k].substring(0,params[k].length-3);thevec=p}else{p=params[k]}if(p==="ret")haveret=true;fun.push(p)}fun[params.length]="_s";fun[params.length+1]="_k";fun[params.length+2]='if(typeof _s === "undefined") _s = numeric.dim('+thevec+");\n"+'if(typeof _k === "undefined") _k = 0;\n'+"var _n = _s[_k];\n"+"var i"+(haveret?"":", ret = Array(_n)")+";\n"+"if(_k < _s.length-1) {\n"+" for(i=_n-1;i>=0;i--) ret[i] = arguments.callee("+params.join(",")+",_s,_k+1);\n"+" return ret;\n"+"}\n"+setup+"\n"+"for(i=_n-1;i!==-1;--i) {\n"+" "+body+"\n"+"}\n"+"return ret;";return Function.apply(null,fun)};numeric.pointwise2=function pointwise2(params,body,setup){if(typeof setup==="undefined"){setup=""}var fun=[];var k;var avec=/\[i\]$/,p,thevec="";var haveret=false;for(k=0;k<params.length;k++){if(avec.test(params[k])){p=params[k].substring(0,params[k].length-3);thevec=p}else{p=params[k]}if(p==="ret")haveret=true;fun.push(p)}fun[params.length]="var _n = "+thevec+".length;\n"+"var i"+(haveret?"":", ret = Array(_n)")+";\n"+setup+"\n"+"for(i=_n-1;i!==-1;--i) {\n"+body+"\n"+"}\n"+"return ret;";return Function.apply(null,fun)};numeric._biforeach=function _biforeach(x,y,s,k,f){if(k===s.length-1){f(x,y);return}var i,n=s[k];for(i=n-1;i>=0;i--){_biforeach(typeof x==="object"?x[i]:x,typeof y==="object"?y[i]:y,s,k+1,f)}};numeric._biforeach2=function _biforeach2(x,y,s,k,f){if(k===s.length-1){return f(x,y)}var i,n=s[k],ret=Array(n);for(i=n-1;i>=0;--i){ret[i]=_biforeach2(typeof x==="object"?x[i]:x,typeof y==="object"?y[i]:y,s,k+1,f)}return ret};numeric._foreach=function _foreach(x,s,k,f){if(k===s.length-1){f(x);return}var i,n=s[k];for(i=n-1;i>=0;i--){_foreach(x[i],s,k+1,f)}};numeric._foreach2=function _foreach2(x,s,k,f){if(k===s.length-1){return f(x)}var i,n=s[k],ret=Array(n);for(i=n-1;i>=0;i--){ret[i]=_foreach2(x[i],s,k+1,f)}return ret};numeric.ops2={add:"+",sub:"-",mul:"*",div:"/",mod:"%",and:"&&",or:"||",eq:"===",neq:"!==",lt:"<",gt:">",leq:"<=",geq:">=",band:"&",bor:"|",bxor:"^",lshift:"<<",rshift:">>",rrshift:">>>"};numeric.opseq={addeq:"+=",subeq:"-=",muleq:"*=",diveq:"/=",modeq:"%=",lshifteq:"<<=",rshifteq:">>=",rrshifteq:">>>=",bandeq:"&=",boreq:"|=",bxoreq:"^="};numeric.mathfuns=["abs","acos","asin","atan","ceil","cos","exp","floor","log","round","sin","sqrt","tan","isNaN","isFinite"];numeric.mathfuns2=["atan2","pow","max","min"];numeric.ops1={neg:"-",not:"!",bnot:"~",clone:""};numeric.mapreducers={any:["if(xi) return true;","var accum = false;"],all:["if(!xi) return false;","var accum = true;"],sum:["accum += xi;","var accum = 0;"],prod:["accum *= xi;","var accum = 1;"],norm2Squared:["accum += xi*xi;","var accum = 0;"],norminf:["accum = max(accum,abs(xi));","var accum = 0, max = Math.max, abs = Math.abs;"],norm1:["accum += abs(xi)","var accum = 0, abs = Math.abs;"],sup:["accum = max(accum,xi);","var accum = -Infinity, max = Math.max;"],inf:["accum = min(accum,xi);","var accum = Infinity, min = Math.min;"]};(function(){var i,o;for(i=0;i<numeric.mathfuns2.length;++i){o=numeric.mathfuns2[i];numeric.ops2[o]=o}for(i in numeric.ops2){if(numeric.ops2.hasOwnProperty(i)){o=numeric.ops2[i];var code,codeeq,setup="";if(numeric.myIndexOf.call(numeric.mathfuns2,i)!==-1){setup="var "+o+" = Math."+o+";\n";code=function(r,x,y){return r+" = "+o+"("+x+","+y+")"};codeeq=function(x,y){return x+" = "+o+"("+x+","+y+")"}}else{code=function(r,x,y){return r+" = "+x+" "+o+" "+y};if(numeric.opseq.hasOwnProperty(i+"eq")){codeeq=function(x,y){return x+" "+o+"= "+y}}else{codeeq=function(x,y){return x+" = "+x+" "+o+" "+y}}}numeric[i+"VV"]=numeric.pointwise2(["x[i]","y[i]"],code("ret[i]","x[i]","y[i]"),setup);numeric[i+"SV"]=numeric.pointwise2(["x","y[i]"],code("ret[i]","x","y[i]"),setup);numeric[i+"VS"]=numeric.pointwise2(["x[i]","y"],code("ret[i]","x[i]","y"),setup);numeric[i]=Function("var n = arguments.length, i, x = arguments[0], y;\n"+"var VV = numeric."+i+"VV, VS = numeric."+i+"VS, SV = numeric."+i+"SV;\n"+"var dim = numeric.dim;\n"+"for(i=1;i!==n;++i) { \n"+" y = arguments[i];\n"+' if(typeof x === "object") {\n'+' if(typeof y === "object") x = numeric._biforeach2(x,y,dim(x),0,VV);\n'+" else x = numeric._biforeach2(x,y,dim(x),0,VS);\n"+' } else if(typeof y === "object") x = numeric._biforeach2(x,y,dim(y),0,SV);\n'+" else "+codeeq("x","y")+"\n"+"}\nreturn x;\n");numeric[o]=numeric[i];numeric[i+"eqV"]=numeric.pointwise2(["ret[i]","x[i]"],codeeq("ret[i]","x[i]"),setup);numeric[i+"eqS"]=numeric.pointwise2(["ret[i]","x"],codeeq("ret[i]","x"),setup);numeric[i+"eq"]=Function("var n = arguments.length, i, x = arguments[0], y;\n"+"var V = numeric."+i+"eqV, S = numeric."+i+"eqS\n"+"var s = numeric.dim(x);\n"+"for(i=1;i!==n;++i) { \n"+" y = arguments[i];\n"+' if(typeof y === "object") numeric._biforeach(x,y,s,0,V);\n'+" else numeric._biforeach(x,y,s,0,S);\n"+"}\nreturn x;\n")}}for(i=0;i<numeric.mathfuns2.length;++i){o=numeric.mathfuns2[i];delete numeric.ops2[o]}for(i=0;i<numeric.mathfuns.length;++i){o=numeric.mathfuns[i];numeric.ops1[o]=o}for(i in numeric.ops1){if(numeric.ops1.hasOwnProperty(i)){setup="";o=numeric.ops1[i];if(numeric.myIndexOf.call(numeric.mathfuns,i)!==-1){if(Math.hasOwnProperty(o))setup="var "+o+" = Math."+o+";\n"}numeric[i+"eqV"]=numeric.pointwise2(["ret[i]"],"ret[i] = "+o+"(ret[i]);",setup);numeric[i+"eq"]=Function("x",'if(typeof x !== "object") return '+o+"x\n"+"var i;\n"+"var V = numeric."+i+"eqV;\n"+"var s = numeric.dim(x);\n"+"numeric._foreach(x,s,0,V);\n"+"return x;\n");numeric[i+"V"]=numeric.pointwise2(["x[i]"],"ret[i] = "+o+"(x[i]);",setup);numeric[i]=Function("x",'if(typeof x !== "object") return '+o+"(x)\n"+"var i;\n"+"var V = numeric."+i+"V;\n"+"var s = numeric.dim(x);\n"+"return numeric._foreach2(x,s,0,V);\n")}}for(i=0;i<numeric.mathfuns.length;++i){o=numeric.mathfuns[i];
delete numeric.ops1[o]}for(i in numeric.mapreducers){if(numeric.mapreducers.hasOwnProperty(i)){o=numeric.mapreducers[i];numeric[i+"V"]=numeric.mapreduce2(o[0],o[1]);numeric[i]=Function("x","s","k",o[1]+'if(typeof x !== "object") {'+" xi = x;\n"+o[0]+";\n"+" return accum;\n"+"}"+'if(typeof s === "undefined") s = numeric.dim(x);\n'+'if(typeof k === "undefined") k = 0;\n'+"if(k === s.length-1) return numeric."+i+"V(x);\n"+"var xi;\n"+"var n = x.length, i;\n"+"for(i=n-1;i!==-1;--i) {\n"+" xi = arguments.callee(x[i]);\n"+o[0]+";\n"+"}\n"+"return accum;\n")}}})();numeric.truncVV=numeric.pointwise(["x[i]","y[i]"],"ret[i] = round(x[i]/y[i])*y[i];","var round = Math.round;");numeric.truncVS=numeric.pointwise(["x[i]","y"],"ret[i] = round(x[i]/y)*y;","var round = Math.round;");numeric.truncSV=numeric.pointwise(["x","y[i]"],"ret[i] = round(x/y[i])*y[i];","var round = Math.round;");numeric.trunc=function trunc(x,y){if(typeof x==="object"){if(typeof y==="object")return numeric.truncVV(x,y);return numeric.truncVS(x,y)}if(typeof y==="object")return numeric.truncSV(x,y);return Math.round(x/y)*y};numeric.inv=function inv(x){var s=numeric.dim(x),abs=Math.abs,m=s[0],n=s[1];var A=numeric.clone(x),Ai,Aj;var I=numeric.identity(m),Ii,Ij;var i,j,k,x;for(j=0;j<n;++j){var i0=-1;var v0=-1;for(i=j;i!==m;++i){k=abs(A[i][j]);if(k>v0){i0=i;v0=k}}Aj=A[i0];A[i0]=A[j];A[j]=Aj;Ij=I[i0];I[i0]=I[j];I[j]=Ij;x=Aj[j];for(k=j;k!==n;++k)Aj[k]/=x;for(k=n-1;k!==-1;--k)Ij[k]/=x;for(i=m-1;i!==-1;--i){if(i!==j){Ai=A[i];Ii=I[i];x=Ai[j];for(k=j+1;k!==n;++k)Ai[k]-=Aj[k]*x;for(k=n-1;k>0;--k){Ii[k]-=Ij[k]*x;--k;Ii[k]-=Ij[k]*x}if(k===0)Ii[0]-=Ij[0]*x}}}return I};numeric.det=function det(x){var s=numeric.dim(x);if(s.length!==2||s[0]!==s[1]){throw new Error("numeric: det() only works on square matrices")}var n=s[0],ret=1,i,j,k,A=numeric.clone(x),Aj,Ai,alpha,temp,k1,k2,k3;for(j=0;j<n-1;j++){k=j;for(i=j+1;i<n;i++){if(Math.abs(A[i][j])>Math.abs(A[k][j])){k=i}}if(k!==j){temp=A[k];A[k]=A[j];A[j]=temp;ret*=-1}Aj=A[j];for(i=j+1;i<n;i++){Ai=A[i];alpha=Ai[j]/Aj[j];for(k=j+1;k<n-1;k+=2){k1=k+1;Ai[k]-=Aj[k]*alpha;Ai[k1]-=Aj[k1]*alpha}if(k!==n){Ai[k]-=Aj[k]*alpha}}if(Aj[j]===0){return 0}ret*=Aj[j]}return ret*A[j][j]};numeric.transpose=function transpose(x){var i,j,m=x.length,n=x[0].length,ret=Array(n),A0,A1,Bj;for(j=0;j<n;j++)ret[j]=Array(m);for(i=m-1;i>=1;i-=2){A1=x[i];A0=x[i-1];for(j=n-1;j>=1;--j){Bj=ret[j];Bj[i]=A1[j];Bj[i-1]=A0[j];--j;Bj=ret[j];Bj[i]=A1[j];Bj[i-1]=A0[j]}if(j===0){Bj=ret[0];Bj[i]=A1[0];Bj[i-1]=A0[0]}}if(i===0){A0=x[0];for(j=n-1;j>=1;--j){ret[j][0]=A0[j];--j;ret[j][0]=A0[j]}if(j===0){ret[0][0]=A0[0]}}return ret};numeric.negtranspose=function negtranspose(x){var i,j,m=x.length,n=x[0].length,ret=Array(n),A0,A1,Bj;for(j=0;j<n;j++)ret[j]=Array(m);for(i=m-1;i>=1;i-=2){A1=x[i];A0=x[i-1];for(j=n-1;j>=1;--j){Bj=ret[j];Bj[i]=-A1[j];Bj[i-1]=-A0[j];--j;Bj=ret[j];Bj[i]=-A1[j];Bj[i-1]=-A0[j]}if(j===0){Bj=ret[0];Bj[i]=-A1[0];Bj[i-1]=-A0[0]}}if(i===0){A0=x[0];for(j=n-1;j>=1;--j){ret[j][0]=-A0[j];--j;ret[j][0]=-A0[j]}if(j===0){ret[0][0]=-A0[0]}}return ret};numeric._random=function _random(s,k){var i,n=s[k],ret=Array(n),rnd;if(k===s.length-1){rnd=Math.random;for(i=n-1;i>=1;i-=2){ret[i]=rnd();ret[i-1]=rnd()}if(i===0){ret[0]=rnd()}return ret}for(i=n-1;i>=0;i--)ret[i]=_random(s,k+1);return ret};numeric.random=function random(s){return numeric._random(s,0)};numeric.norm2=function norm2(x){return Math.sqrt(numeric.norm2Squared(x))};numeric.linspace=function linspace(a,b,n){if(typeof n==="undefined")n=Math.max(Math.round(b-a)+1,1);if(n<2){return n===1?[a]:[]}var i,ret=Array(n);n--;for(i=n;i>=0;i--){ret[i]=(i*b+(n-i)*a)/n}return ret};numeric.getBlock=function getBlock(x,from,to){var s=numeric.dim(x);function foo(x,k){var i,a=from[k],n=to[k]-a,ret=Array(n);if(k===s.length-1){for(i=n;i>=0;i--){ret[i]=x[i+a]}return ret}for(i=n;i>=0;i--){ret[i]=foo(x[i+a],k+1)}return ret}return foo(x,0)};numeric.setBlock=function setBlock(x,from,to,B){var s=numeric.dim(x);function foo(x,y,k){var i,a=from[k],n=to[k]-a;if(k===s.length-1){for(i=n;i>=0;i--){x[i+a]=y[i]}}for(i=n;i>=0;i--){foo(x[i+a],y[i],k+1)}}foo(x,B,0);return x};numeric.getRange=function getRange(A,I,J){var m=I.length,n=J.length;var i,j;var B=Array(m),Bi,AI;for(i=m-1;i!==-1;--i){B[i]=Array(n);Bi=B[i];AI=A[I[i]];for(j=n-1;j!==-1;--j)Bi[j]=AI[J[j]]}return B};numeric.blockMatrix=function blockMatrix(X){var s=numeric.dim(X);if(s.length<4)return numeric.blockMatrix([X]);var m=s[0],n=s[1],M,N,i,j,Xij;M=0;N=0;for(i=0;i<m;++i)M+=X[i][0].length;for(j=0;j<n;++j)N+=X[0][j][0].length;var Z=Array(M);for(i=0;i<M;++i)Z[i]=Array(N);var I=0,J,ZI,k,l,Xijk;for(i=0;i<m;++i){J=N;for(j=n-1;j!==-1;--j){Xij=X[i][j];J-=Xij[0].length;for(k=Xij.length-1;k!==-1;--k){Xijk=Xij[k];ZI=Z[I+k];for(l=Xijk.length-1;l!==-1;--l)ZI[J+l]=Xijk[l]}}I+=X[i][0].length}return Z};numeric.tensor=function tensor(x,y){if(typeof x==="number"||typeof y==="number")return numeric.mul(x,y);var s1=numeric.dim(x),s2=numeric.dim(y);if(s1.length!==1||s2.length!==1){throw new Error("numeric: tensor product is only defined for vectors")}var m=s1[0],n=s2[0],A=Array(m),Ai,i,j,xi;for(i=m-1;i>=0;i--){Ai=Array(n);xi=x[i];for(j=n-1;j>=3;--j){Ai[j]=xi*y[j];--j;Ai[j]=xi*y[j];--j;Ai[j]=xi*y[j];--j;Ai[j]=xi*y[j]}while(j>=0){Ai[j]=xi*y[j];--j}A[i]=Ai}return A};numeric.T=function T(x,y){this.x=x;this.y=y};numeric.t=function t(x,y){return new numeric.T(x,y)};numeric.Tbinop=function Tbinop(rr,rc,cr,cc,setup){var io=numeric.indexOf;if(typeof setup!=="string"){var k;setup="";for(k in numeric){if(numeric.hasOwnProperty(k)&&(rr.indexOf(k)>=0||rc.indexOf(k)>=0||cr.indexOf(k)>=0||cc.indexOf(k)>=0)&&k.length>1){setup+="var "+k+" = numeric."+k+";\n"}}}return Function(["y"],"var x = this;\n"+"if(!(y instanceof numeric.T)) { y = new numeric.T(y); }\n"+setup+"\n"+"if(x.y) {"+" if(y.y) {"+" return new numeric.T("+cc+");\n"+" }\n"+" return new numeric.T("+cr+");\n"+"}\n"+"if(y.y) {\n"+" return new numeric.T("+rc+");\n"+"}\n"+"return new numeric.T("+rr+");\n")};numeric.T.prototype.add=numeric.Tbinop("add(x.x,y.x)","add(x.x,y.x),y.y","add(x.x,y.x),x.y","add(x.x,y.x),add(x.y,y.y)");numeric.T.prototype.sub=numeric.Tbinop("sub(x.x,y.x)","sub(x.x,y.x),neg(y.y)","sub(x.x,y.x),x.y","sub(x.x,y.x),sub(x.y,y.y)");numeric.T.prototype.mul=numeric.Tbinop("mul(x.x,y.x)","mul(x.x,y.x),mul(x.x,y.y)","mul(x.x,y.x),mul(x.y,y.x)","sub(mul(x.x,y.x),mul(x.y,y.y)),add(mul(x.x,y.y),mul(x.y,y.x))");numeric.T.prototype.reciprocal=function reciprocal(){var mul=numeric.mul,div=numeric.div;if(this.y){var d=numeric.add(mul(this.x,this.x),mul(this.y,this.y));return new numeric.T(div(this.x,d),div(numeric.neg(this.y),d))}return new T(div(1,this.x))};numeric.T.prototype.div=function div(y){if(!(y instanceof numeric.T))y=new numeric.T(y);if(y.y){return this.mul(y.reciprocal())}var div=numeric.div;if(this.y){return new numeric.T(div(this.x,y.x),div(this.y,y.x))}return new numeric.T(div(this.x,y.x))};numeric.T.prototype.dot=numeric.Tbinop("dot(x.x,y.x)","dot(x.x,y.x),dot(x.x,y.y)","dot(x.x,y.x),dot(x.y,y.x)","sub(dot(x.x,y.x),dot(x.y,y.y)),add(dot(x.x,y.y),dot(x.y,y.x))");numeric.T.prototype.transpose=function transpose(){var t=numeric.transpose,x=this.x,y=this.y;if(y){return new numeric.T(t(x),t(y))}return new numeric.T(t(x))};numeric.T.prototype.transjugate=function transjugate(){var t=numeric.transpose,x=this.x,y=this.y;if(y){return new numeric.T(t(x),numeric.negtranspose(y))}return new numeric.T(t(x))};numeric.Tunop=function Tunop(r,c,s){if(typeof s!=="string"){s=""}return Function("var x = this;\n"+s+"\n"+"if(x.y) {"+" "+c+";\n"+"}\n"+r+";\n")};numeric.T.prototype.exp=numeric.Tunop("return new numeric.T(ex)","return new numeric.T(mul(cos(x.y),ex),mul(sin(x.y),ex))","var ex = numeric.exp(x.x), cos = numeric.cos, sin = numeric.sin, mul = numeric.mul;");numeric.T.prototype.conj=numeric.Tunop("return new numeric.T(x.x);","return new numeric.T(x.x,numeric.neg(x.y));");numeric.T.prototype.neg=numeric.Tunop("return new numeric.T(neg(x.x));","return new numeric.T(neg(x.x),neg(x.y));","var neg = numeric.neg;");numeric.T.prototype.sin=numeric.Tunop("return new numeric.T(numeric.sin(x.x))","return x.exp().sub(x.neg().exp()).div(new numeric.T(0,2));");numeric.T.prototype.cos=numeric.Tunop("return new numeric.T(numeric.cos(x.x))","return x.exp().add(x.neg().exp()).div(2);");numeric.T.prototype.abs=numeric.Tunop("return new numeric.T(numeric.abs(x.x));","return new numeric.T(numeric.sqrt(numeric.add(mul(x.x,x.x),mul(x.y,x.y))));","var mul = numeric.mul;");numeric.T.prototype.log=numeric.Tunop("return new numeric.T(numeric.log(x.x));","var theta = new numeric.T(numeric.atan2(x.y,x.x)), r = x.abs();\n"+"return new numeric.T(numeric.log(r.x),theta.x);");numeric.T.prototype.norm2=numeric.Tunop("return numeric.norm2(x.x);","var f = numeric.norm2Squared;\n"+"return Math.sqrt(f(x.x)+f(x.y));");numeric.T.prototype.inv=function inv(){var A=this;if(typeof A.y==="undefined"){return new numeric.T(numeric.inv(A.x))}var n=A.x.length,i,j,k;var Rx=numeric.identity(n),Ry=numeric.rep([n,n],0);var Ax=numeric.clone(A.x),Ay=numeric.clone(A.y);var Aix,Aiy,Ajx,Ajy,Rix,Riy,Rjx,Rjy;var i,j,k,d,d1,ax,ay,bx,by,temp;for(i=0;i<n;i++){ax=Ax[i][i];ay=Ay[i][i];d=ax*ax+ay*ay;k=i;for(j=i+1;j<n;j++){ax=Ax[j][i];ay=Ay[j][i];d1=ax*ax+ay*ay;if(d1>d){k=j;d=d1}}if(k!==i){temp=Ax[i];Ax[i]=Ax[k];Ax[k]=temp;temp=Ay[i];Ay[i]=Ay[k];Ay[k]=temp;temp=Rx[i];Rx[i]=Rx[k];Rx[k]=temp;temp=Ry[i];Ry[i]=Ry[k];Ry[k]=temp}Aix=Ax[i];Aiy=Ay[i];Rix=Rx[i];Riy=Ry[i];ax=Aix[i];ay=Aiy[i];for(j=i+1;j<n;j++){bx=Aix[j];by=Aiy[j];Aix[j]=(bx*ax+by*ay)/d;Aiy[j]=(by*ax-bx*ay)/d}for(j=0;j<n;j++){bx=Rix[j];by=Riy[j];Rix[j]=(bx*ax+by*ay)/d;Riy[j]=(by*ax-bx*ay)/d}for(j=i+1;j<n;j++){Ajx=Ax[j];Ajy=Ay[j];Rjx=Rx[j];Rjy=Ry[j];ax=Ajx[i];ay=Ajy[i];for(k=i+1;k<n;k++){bx=Aix[k];by=Aiy[k];Ajx[k]-=bx*ax-by*ay;Ajy[k]-=by*ax+bx*ay}for(k=0;k<n;k++){bx=Rix[k];by=Riy[k];Rjx[k]-=bx*ax-by*ay;Rjy[k]-=by*ax+bx*ay}}}for(i=n-1;i>0;i--){Rix=Rx[i];Riy=Ry[i];for(j=i-1;j>=0;j--){Rjx=Rx[j];Rjy=Ry[j];ax=Ax[j][i];ay=Ay[j][i];for(k=n-1;k>=0;k--){bx=Rix[k];by=Riy[k];Rjx[k]-=ax*bx-ay*by;Rjy[k]-=ax*by+ay*bx}}}return new numeric.T(Rx,Ry)};numeric.T.prototype.get=function get(i){var x=this.x,y=this.y,k=0,ik,n=i.length;if(y){while(k<n){ik=i[k];x=x[ik];y=y[ik];k++}return new numeric.T(x,y)}while(k<n){ik=i[k];x=x[ik];k++}return new numeric.T(x)};numeric.T.prototype.set=function set(i,v){var x=this.x,y=this.y,k=0,ik,n=i.length,vx=v.x,vy=v.y;if(n===0){if(vy){this.y=vy}else if(y){this.y=undefined}this.x=x;return this}if(vy){if(y){}else{y=numeric.rep(numeric.dim(x),0);this.y=y}while(k<n-1){ik=i[k];x=x[ik];y=y[ik];k++}ik=i[k];x[ik]=vx;y[ik]=vy;return this}if(y){while(k<n-1){ik=i[k];x=x[ik];y=y[ik];k++}ik=i[k];x[ik]=vx;if(vx instanceof Array)y[ik]=numeric.rep(numeric.dim(vx),0);else y[ik]=0;return this}while(k<n-1){ik=i[k];x=x[ik];k++}ik=i[k];x[ik]=vx;return this};numeric.T.prototype.getRows=function getRows(i0,i1){var n=i1-i0+1,j;var rx=Array(n),ry,x=this.x,y=this.y;for(j=i0;j<=i1;j++){rx[j-i0]=x[j]}if(y){ry=Array(n);for(j=i0;j<=i1;j++){ry[j-i0]=y[j]}return new numeric.T(rx,ry)}return new numeric.T(rx)};numeric.T.prototype.setRows=function setRows(i0,i1,A){var j;var rx=this.x,ry=this.y,x=A.x,y=A.y;for(j=i0;j<=i1;j++){rx[j]=x[j-i0]}if(y){if(!ry){ry=numeric.rep(numeric.dim(rx),0);this.y=ry}for(j=i0;j<=i1;j++){ry[j]=y[j-i0]}}else if(ry){for(j=i0;j<=i1;j++){ry[j]=numeric.rep([x[j-i0].length],0)}}return this};numeric.T.prototype.getRow=function getRow(k){var x=this.x,y=this.y;if(y){return new numeric.T(x[k],y[k])}return new numeric.T(x[k])};numeric.T.prototype.setRow=function setRow(i,v){var rx=this.x,ry=this.y,x=v.x,y=v.y;rx[i]=x;if(y){if(!ry){ry=numeric.rep(numeric.dim(rx),0);this.y=ry}ry[i]=y}else if(ry){ry=numeric.rep([x.length],0)}return this};numeric.T.prototype.getBlock=function getBlock(from,to){var x=this.x,y=this.y,b=numeric.getBlock;if(y){return new numeric.T(b(x,from,to),b(y,from,to))}return new numeric.T(b(x,from,to))};numeric.T.prototype.setBlock=function setBlock(from,to,A){if(!(A instanceof numeric.T))A=new numeric.T(A);var x=this.x,y=this.y,b=numeric.setBlock,Ax=A.x,Ay=A.y;if(Ay){if(!y){this.y=numeric.rep(numeric.dim(this),0);y=this.y}b(x,from,to,Ax);b(y,from,to,Ay);return this}b(x,from,to,Ax);if(y)b(y,from,to,numeric.rep(numeric.dim(Ax),0))};numeric.T.rep=function rep(s,v){var T=numeric.T;if(!(v instanceof T))v=new T(v);var x=v.x,y=v.y,r=numeric.rep;if(y)return new T(r(s,x),r(s,y));return new T(r(s,x))};numeric.T.diag=function diag(d){if(!(d instanceof numeric.T))d=new numeric.T(d);var x=d.x,y=d.y,diag=numeric.diag;if(y)return new numeric.T(diag(x),diag(y));return new numeric.T(diag(x))};numeric.T.eig=function eig(){if(this.y){throw new Error("eig: not implemented for complex matrices.")}return numeric.eig(this.x)};numeric.T.identity=function identity(n){return new numeric.T(numeric.identity(n))};numeric.T.prototype.getDiag=function getDiag(){var n=numeric;var x=this.x,y=this.y;if(y){return new n.T(n.getDiag(x),n.getDiag(y))}return new n.T(n.getDiag(x))};numeric.house=function house(x){var v=numeric.clone(x);var s=x[0]>=0?1:-1;var alpha=s*numeric.norm2(x);v[0]+=alpha;var foo=numeric.norm2(v);if(foo===0){throw new Error("eig: internal error")}return numeric.div(v,foo)};numeric.toUpperHessenberg=function toUpperHessenberg(me){var s=numeric.dim(me);if(s.length!==2||s[0]!==s[1]){throw new Error("numeric: toUpperHessenberg() only works on square matrices")}var m=s[0],i,j,k,x,v,A=numeric.clone(me),B,C,Ai,Ci,Q=numeric.identity(m),Qi;for(j=0;j<m-2;j++){x=Array(m-j-1);for(i=j+1;i<m;i++){x[i-j-1]=A[i][j]}if(numeric.norm2(x)>0){v=numeric.house(x);B=numeric.getBlock(A,[j+1,j],[m-1,m-1]);C=numeric.tensor(v,numeric.dot(v,B));for(i=j+1;i<m;i++){Ai=A[i];Ci=C[i-j-1];for(k=j;k<m;k++)Ai[k]-=2*Ci[k-j]}B=numeric.getBlock(A,[0,j+1],[m-1,m-1]);C=numeric.tensor(numeric.dot(B,v),v);for(i=0;i<m;i++){Ai=A[i];Ci=C[i];for(k=j+1;k<m;k++)Ai[k]-=2*Ci[k-j-1]}B=Array(m-j-1);for(i=j+1;i<m;i++)B[i-j-1]=Q[i];C=numeric.tensor(v,numeric.dot(v,B));for(i=j+1;i<m;i++){Qi=Q[i];Ci=C[i-j-1];for(k=0;k<m;k++)Qi[k]-=2*Ci[k]}}}return{H:A,Q:Q}};numeric.epsilon=2.220446049250313e-16;numeric.QRFrancis=function(H,maxiter){if(typeof maxiter==="undefined"){maxiter=1e4}H=numeric.clone(H);var H0=numeric.clone(H);var s=numeric.dim(H),m=s[0],x,v,a,b,c,d,det,tr,Hloc,Q=numeric.identity(m),Qi,Hi,B,C,Ci,i,j,k,iter;if(m<3){return{Q:Q,B:[[0,m-1]]}}var epsilon=numeric.epsilon;for(iter=0;iter<maxiter;iter++){for(j=0;j<m-1;j++){if(Math.abs(H[j+1][j])<epsilon*(Math.abs(H[j][j])+Math.abs(H[j+1][j+1]))){var QH1=numeric.QRFrancis(numeric.getBlock(H,[0,0],[j,j]),maxiter);var QH2=numeric.QRFrancis(numeric.getBlock(H,[j+1,j+1],[m-1,m-1]),maxiter);B=Array(j+1);for(i=0;i<=j;i++){B[i]=Q[i]}C=numeric.dot(QH1.Q,B);for(i=0;i<=j;i++){Q[i]=C[i]}B=Array(m-j-1);for(i=j+1;i<m;i++){B[i-j-1]=Q[i]}C=numeric.dot(QH2.Q,B);for(i=j+1;i<m;i++){Q[i]=C[i-j-1]}return{Q:Q,B:QH1.B.concat(numeric.add(QH2.B,j+1))}}}a=H[m-2][m-2];b=H[m-2][m-1];c=H[m-1][m-2];d=H[m-1][m-1];tr=a+d;det=a*d-b*c;Hloc=numeric.getBlock(H,[0,0],[2,2]);if(tr*tr>=4*det){var s1,s2;s1=.5*(tr+Math.sqrt(tr*tr-4*det));s2=.5*(tr-Math.sqrt(tr*tr-4*det));Hloc=numeric.add(numeric.sub(numeric.dot(Hloc,Hloc),numeric.mul(Hloc,s1+s2)),numeric.diag(numeric.rep([3],s1*s2)))}else{Hloc=numeric.add(numeric.sub(numeric.dot(Hloc,Hloc),numeric.mul(Hloc,tr)),numeric.diag(numeric.rep([3],det)))}x=[Hloc[0][0],Hloc[1][0],Hloc[2][0]];v=numeric.house(x);B=[H[0],H[1],H[2]];C=numeric.tensor(v,numeric.dot(v,B));for(i=0;i<3;i++){Hi=H[i];Ci=C[i];for(k=0;k<m;k++)Hi[k]-=2*Ci[k]}B=numeric.getBlock(H,[0,0],[m-1,2]);C=numeric.tensor(numeric.dot(B,v),v);for(i=0;i<m;i++){Hi=H[i];Ci=C[i];for(k=0;k<3;k++)Hi[k]-=2*Ci[k]}B=[Q[0],Q[1],Q[2]];C=numeric.tensor(v,numeric.dot(v,B));for(i=0;i<3;i++){Qi=Q[i];Ci=C[i];for(k=0;k<m;k++)Qi[k]-=2*Ci[k]}var J;for(j=0;j<m-2;j++){for(k=j;k<=j+1;k++){if(Math.abs(H[k+1][k])<epsilon*(Math.abs(H[k][k])+Math.abs(H[k+1][k+1]))){var QH1=numeric.QRFrancis(numeric.getBlock(H,[0,0],[k,k]),maxiter);var QH2=numeric.QRFrancis(numeric.getBlock(H,[k+1,k+1],[m-1,m-1]),maxiter);B=Array(k+1);for(i=0;i<=k;i++){B[i]=Q[i]}C=numeric.dot(QH1.Q,B);for(i=0;i<=k;i++){Q[i]=C[i]}B=Array(m-k-1);for(i=k+1;i<m;i++){B[i-k-1]=Q[i]}C=numeric.dot(QH2.Q,B);for(i=k+1;i<m;i++){Q[i]=C[i-k-1]}return{Q:Q,B:QH1.B.concat(numeric.add(QH2.B,k+1))}}}J=Math.min(m-1,j+3);x=Array(J-j);for(i=j+1;i<=J;i++){x[i-j-1]=H[i][j]}v=numeric.house(x);B=numeric.getBlock(H,[j+1,j],[J,m-1]);C=numeric.tensor(v,numeric.dot(v,B));for(i=j+1;i<=J;i++){Hi=H[i];Ci=C[i-j-1];for(k=j;k<m;k++)Hi[k]-=2*Ci[k-j]}B=numeric.getBlock(H,[0,j+1],[m-1,J]);C=numeric.tensor(numeric.dot(B,v),v);for(i=0;i<m;i++){Hi=H[i];Ci=C[i];for(k=j+1;k<=J;k++)Hi[k]-=2*Ci[k-j-1]}B=Array(J-j);for(i=j+1;i<=J;i++)B[i-j-1]=Q[i];C=numeric.tensor(v,numeric.dot(v,B));for(i=j+1;i<=J;i++){Qi=Q[i];Ci=C[i-j-1];for(k=0;k<m;k++)Qi[k]-=2*Ci[k]}}}throw new Error("numeric: eigenvalue iteration does not converge -- increase maxiter?")};numeric.eig=function eig(A,maxiter){var QH=numeric.toUpperHessenberg(A);var QB=numeric.QRFrancis(QH.H,maxiter);var T=numeric.T;var n=A.length,i,k,flag=false,B=QB.B,H=numeric.dot(QB.Q,numeric.dot(QH.H,numeric.transpose(QB.Q)));var Q=new T(numeric.dot(QB.Q,QH.Q)),Q0;var m=B.length,j;var a,b,c,d,p1,p2,disc,x,y,p,q,n1,n2;var sqrt=Math.sqrt;for(k=0;k<m;k++){i=B[k][0];if(i===B[k][1]){}else{j=i+1;a=H[i][i];b=H[i][j];c=H[j][i];d=H[j][j];if(b===0&&c===0)continue;p1=-a-d;p2=a*d-b*c;disc=p1*p1-4*p2;if(disc>=0){if(p1<0)x=-.5*(p1-sqrt(disc));else x=-.5*(p1+sqrt(disc));n1=(a-x)*(a-x)+b*b;n2=c*c+(d-x)*(d-x);if(n1>n2){n1=sqrt(n1);p=(a-x)/n1;q=b/n1}else{n2=sqrt(n2);p=c/n2;q=(d-x)/n2}Q0=new T([[q,-p],[p,q]]);Q.setRows(i,j,Q0.dot(Q.getRows(i,j)))}else{x=-.5*p1;y=.5*sqrt(-disc);n1=(a-x)*(a-x)+b*b;n2=c*c+(d-x)*(d-x);if(n1>n2){n1=sqrt(n1+y*y);p=(a-x)/n1;q=b/n1;x=0;y/=n1}else{n2=sqrt(n2+y*y);p=c/n2;q=(d-x)/n2;x=y/n2;y=0}Q0=new T([[q,-p],[p,q]],[[x,y],[y,-x]]);Q.setRows(i,j,Q0.dot(Q.getRows(i,j)))}}}var R=Q.dot(A).dot(Q.transjugate()),n=A.length,E=numeric.T.identity(n);for(j=0;j<n;j++){if(j>0){for(k=j-1;k>=0;k--){var Rk=R.get([k,k]),Rj=R.get([j,j]);if(numeric.neq(Rk.x,Rj.x)||numeric.neq(Rk.y,Rj.y)){x=R.getRow(k).getBlock([k],[j-1]);y=E.getRow(j).getBlock([k],[j-1]);E.set([j,k],R.get([k,j]).neg().sub(x.dot(y)).div(Rk.sub(Rj)))}else{E.setRow(j,E.getRow(k));continue}}}}for(j=0;j<n;j++){x=E.getRow(j);E.setRow(j,x.div(x.norm2()))}E=E.transpose();E=Q.transjugate().dot(E);return{lambda:R.getDiag(),E:E}};numeric.ccsSparse=function ccsSparse(A){var m=A.length,n,foo,i,j,counts=[];for(i=m-1;i!==-1;--i){foo=A[i];for(j in foo){j=parseInt(j);while(j>=counts.length)counts[counts.length]=0;if(foo[j]!==0)counts[j]++}}var n=counts.length;var Ai=Array(n+1);Ai[0]=0;for(i=0;i<n;++i)Ai[i+1]=Ai[i]+counts[i];var Aj=Array(Ai[n]),Av=Array(Ai[n]);for(i=m-1;i!==-1;--i){foo=A[i];for(j in foo){if(foo[j]!==0){counts[j]--;Aj[Ai[j]+counts[j]]=i;Av[Ai[j]+counts[j]]=foo[j]}}}return[Ai,Aj,Av]};numeric.ccsFull=function ccsFull(A){var Ai=A[0],Aj=A[1],Av=A[2],s=numeric.ccsDim(A),m=s[0],n=s[1],i,j,j0,j1,k;var B=numeric.rep([m,n],0);for(i=0;i<n;i++){j0=Ai[i];j1=Ai[i+1];for(j=j0;j<j1;++j){B[Aj[j]][i]=Av[j]}}return B};numeric.ccsTSolve=function ccsTSolve(A,b,x,bj,xj){var Ai=A[0],Aj=A[1],Av=A[2],m=Ai.length-1,max=Math.max,n=0;if(typeof bj==="undefined")x=numeric.rep([m],0);if(typeof bj==="undefined")bj=numeric.linspace(0,x.length-1);if(typeof xj==="undefined")xj=[];function dfs(j){var k;if(x[j]!==0)return;x[j]=1;for(k=Ai[j];k<Ai[j+1];++k)dfs(Aj[k]);xj[n]=j;++n}var i,j,j0,j1,k,l,l0,l1,a;for(i=bj.length-1;i!==-1;--i){dfs(bj[i])}xj.length=n;for(i=xj.length-1;i!==-1;--i){x[xj[i]]=0}for(i=bj.length-1;i!==-1;--i){j=bj[i];x[j]=b[j]}for(i=xj.length-1;i!==-1;--i){j=xj[i];j0=Ai[j];j1=max(Ai[j+1],j0);for(k=j0;k!==j1;++k){if(Aj[k]===j){x[j]/=Av[k];break}}a=x[j];for(k=j0;k!==j1;++k){l=Aj[k];if(l!==j)x[l]-=a*Av[k]}}return x};numeric.ccsDFS=function ccsDFS(n){this.k=Array(n);this.k1=Array(n);this.j=Array(n)};numeric.ccsDFS.prototype.dfs=function dfs(J,Ai,Aj,x,xj,Pinv){var m=0,foo,n=xj.length;var k=this.k,k1=this.k1,j=this.j,km,k11;if(x[J]!==0)return;x[J]=1;j[0]=J;k[0]=km=Ai[J];k1[0]=k11=Ai[J+1];while(1){if(km>=k11){xj[n]=j[m];if(m===0)return;++n;--m;km=k[m];k11=k1[m]}else{foo=Pinv[Aj[km]];if(x[foo]===0){x[foo]=1;k[m]=km;++m;j[m]=foo;km=Ai[foo];k1[m]=k11=Ai[foo+1]}else++km}}};numeric.ccsLPSolve=function ccsLPSolve(A,B,x,xj,I,Pinv,dfs){var Ai=A[0],Aj=A[1],Av=A[2],m=Ai.length-1,n=0;var Bi=B[0],Bj=B[1],Bv=B[2];var i,i0,i1,j,J,j0,j1,k,l,l0,l1,a;i0=Bi[I];i1=Bi[I+1];xj.length=0;for(i=i0;i<i1;++i){dfs.dfs(Pinv[Bj[i]],Ai,Aj,x,xj,Pinv)}for(i=xj.length-1;i!==-1;--i){x[xj[i]]=0}for(i=i0;i!==i1;++i){j=Pinv[Bj[i]];x[j]=Bv[i]}for(i=xj.length-1;i!==-1;--i){j=xj[i];j0=Ai[j];j1=Ai[j+1];for(k=j0;k<j1;++k){if(Pinv[Aj[k]]===j){x[j]/=Av[k];break}}a=x[j];for(k=j0;k<j1;++k){l=Pinv[Aj[k]];if(l!==j)x[l]-=a*Av[k]}}return x};numeric.ccsLUP1=function ccsLUP1(A,threshold){var m=A[0].length-1;var L=[numeric.rep([m+1],0),[],[]],U=[numeric.rep([m+1],0),[],[]];var Li=L[0],Lj=L[1],Lv=L[2],Ui=U[0],Uj=U[1],Uv=U[2];var x=numeric.rep([m],0),xj=numeric.rep([m],0);var i,j,k,j0,j1,a,e,c,d,K;var sol=numeric.ccsLPSolve,max=Math.max,abs=Math.abs;var P=numeric.linspace(0,m-1),Pinv=numeric.linspace(0,m-1);var dfs=new numeric.ccsDFS(m);if(typeof threshold==="undefined"){threshold=1}for(i=0;i<m;++i){sol(L,A,x,xj,i,Pinv,dfs);a=-1;e=-1;for(j=xj.length-1;j!==-1;--j){k=xj[j];if(k<=i)continue;c=abs(x[k]);if(c>a){e=k;a=c}}if(abs(x[i])<threshold*a){j=P[i];a=P[e];P[i]=a;Pinv[a]=i;P[e]=j;Pinv[j]=e;a=x[i];x[i]=x[e];x[e]=a}a=Li[i];e=Ui[i];d=x[i];Lj[a]=P[i];Lv[a]=1;++a;for(j=xj.length-1;j!==-1;--j){k=xj[j];c=x[k];xj[j]=0;x[k]=0;if(k<=i){Uj[e]=k;Uv[e]=c;++e}else{Lj[a]=P[k];Lv[a]=c/d;++a}}Li[i+1]=a;Ui[i+1]=e}for(j=Lj.length-1;j!==-1;--j){Lj[j]=Pinv[Lj[j]]}return{L:L,U:U,P:P,Pinv:Pinv}};numeric.ccsDFS0=function ccsDFS0(n){this.k=Array(n);this.k1=Array(n);this.j=Array(n)};numeric.ccsDFS0.prototype.dfs=function dfs(J,Ai,Aj,x,xj,Pinv,P){var m=0,foo,n=xj.length;var k=this.k,k1=this.k1,j=this.j,km,k11;if(x[J]!==0)return;x[J]=1;j[0]=J;k[0]=km=Ai[Pinv[J]];k1[0]=k11=Ai[Pinv[J]+1];while(1){if(isNaN(km))throw new Error("Ow!");if(km>=k11){xj[n]=Pinv[j[m]];if(m===0)return;++n;--m;km=k[m];k11=k1[m]}else{foo=Aj[km];if(x[foo]===0){x[foo]=1;k[m]=km;++m;j[m]=foo;foo=Pinv[foo];km=Ai[foo];k1[m]=k11=Ai[foo+1]}else++km}}};numeric.ccsLPSolve0=function ccsLPSolve0(A,B,y,xj,I,Pinv,P,dfs){var Ai=A[0],Aj=A[1],Av=A[2],m=Ai.length-1,n=0;var Bi=B[0],Bj=B[1],Bv=B[2];var i,i0,i1,j,J,j0,j1,k,l,l0,l1,a;i0=Bi[I];i1=Bi[I+1];xj.length=0;for(i=i0;i<i1;++i){dfs.dfs(Bj[i],Ai,Aj,y,xj,Pinv,P)}for(i=xj.length-1;i!==-1;--i){j=xj[i];y[P[j]]=0}for(i=i0;i!==i1;++i){j=Bj[i];y[j]=Bv[i]}for(i=xj.length-1;i!==-1;--i){j=xj[i];l=P[j];j0=Ai[j];j1=Ai[j+1];for(k=j0;k<j1;++k){if(Aj[k]===l){y[l]/=Av[k];break}}a=y[l];for(k=j0;k<j1;++k)y[Aj[k]]-=a*Av[k];y[l]=a}};numeric.ccsLUP0=function ccsLUP0(A,threshold){var m=A[0].length-1;var L=[numeric.rep([m+1],0),[],[]],U=[numeric.rep([m+1],0),[],[]];var Li=L[0],Lj=L[1],Lv=L[2],Ui=U[0],Uj=U[1],Uv=U[2];var y=numeric.rep([m],0),xj=numeric.rep([m],0);var i,j,k,j0,j1,a,e,c,d,K;var sol=numeric.ccsLPSolve0,max=Math.max,abs=Math.abs;var P=numeric.linspace(0,m-1),Pinv=numeric.linspace(0,m-1);var dfs=new numeric.ccsDFS0(m);if(typeof threshold==="undefined"){threshold=1}for(i=0;i<m;++i){sol(L,A,y,xj,i,Pinv,P,dfs);a=-1;e=-1;for(j=xj.length-1;j!==-1;--j){k=xj[j];if(k<=i)continue;c=abs(y[P[k]]);if(c>a){e=k;a=c}}if(abs(y[P[i]])<threshold*a){j=P[i];a=P[e];P[i]=a;Pinv[a]=i;P[e]=j;Pinv[j]=e}a=Li[i];e=Ui[i];d=y[P[i]];Lj[a]=P[i];Lv[a]=1;++a;for(j=xj.length-1;j!==-1;--j){k=xj[j];c=y[P[k]];xj[j]=0;y[P[k]]=0;if(k<=i){Uj[e]=k;Uv[e]=c;++e}else{Lj[a]=P[k];Lv[a]=c/d;++a}}Li[i+1]=a;Ui[i+1]=e}for(j=Lj.length-1;j!==-1;--j){Lj[j]=Pinv[Lj[j]]}return{L:L,U:U,P:P,Pinv:Pinv}};numeric.ccsLUP=numeric.ccsLUP0;numeric.ccsDim=function ccsDim(A){return[numeric.sup(A[1])+1,A[0].length-1]};numeric.ccsGetBlock=function ccsGetBlock(A,i,j){var s=numeric.ccsDim(A),m=s[0],n=s[1];if(typeof i==="undefined"){i=numeric.linspace(0,m-1)}else if(typeof i==="number"){i=[i]}if(typeof j==="undefined"){j=numeric.linspace(0,n-1)}else if(typeof j==="number"){j=[j]}var p,p0,p1,P=i.length,q,Q=j.length,r,jq,ip;var Bi=numeric.rep([n],0),Bj=[],Bv=[],B=[Bi,Bj,Bv];var Ai=A[0],Aj=A[1],Av=A[2];var x=numeric.rep([m],0),count=0,flags=numeric.rep([m],0);for(q=0;q<Q;++q){jq=j[q];var q0=Ai[jq];var q1=Ai[jq+1];for(p=q0;p<q1;++p){r=Aj[p];flags[r]=1;x[r]=Av[p]}for(p=0;p<P;++p){ip=i[p];if(flags[ip]){Bj[count]=p;Bv[count]=x[i[p]];++count}}for(p=q0;p<q1;++p){r=Aj[p];flags[r]=0}Bi[q+1]=count}return B};numeric.ccsDot=function ccsDot(A,B){var Ai=A[0],Aj=A[1],Av=A[2];var Bi=B[0],Bj=B[1],Bv=B[2];var sA=numeric.ccsDim(A),sB=numeric.ccsDim(B);var m=sA[0],n=sA[1],o=sB[1];var x=numeric.rep([m],0),flags=numeric.rep([m],0),xj=Array(m);var Ci=numeric.rep([o],0),Cj=[],Cv=[],C=[Ci,Cj,Cv];var i,j,k,j0,j1,i0,i1,l,p,a,b;for(k=0;k!==o;++k){j0=Bi[k];j1=Bi[k+1];p=0;for(j=j0;j<j1;++j){a=Bj[j];b=Bv[j];i0=Ai[a];i1=Ai[a+1];for(i=i0;i<i1;++i){l=Aj[i];if(flags[l]===0){xj[p]=l;flags[l]=1;p=p+1}x[l]=x[l]+Av[i]*b}}j0=Ci[k];j1=j0+p;Ci[k+1]=j1;for(j=p-1;j!==-1;--j){b=j0+j;i=xj[j];Cj[b]=i;Cv[b]=x[i];flags[i]=0;x[i]=0}Ci[k+1]=Ci[k]+p}return C};numeric.ccsLUPSolve=function ccsLUPSolve(LUP,B){var L=LUP.L,U=LUP.U,P=LUP.P;var Bi=B[0];var flag=false;if(typeof Bi!=="object"){B=[[0,B.length],numeric.linspace(0,B.length-1),B];Bi=B[0];flag=true}var Bj=B[1],Bv=B[2];var n=L[0].length-1,m=Bi.length-1;var x=numeric.rep([n],0),xj=Array(n);var b=numeric.rep([n],0),bj=Array(n);var Xi=numeric.rep([m+1],0),Xj=[],Xv=[];var sol=numeric.ccsTSolve;var i,j,j0,j1,k,J,N=0;for(i=0;i<m;++i){k=0;j0=Bi[i];j1=Bi[i+1];for(j=j0;j<j1;++j){J=LUP.Pinv[Bj[j]];bj[k]=J;b[J]=Bv[j];++k}bj.length=k;sol(L,b,x,bj,xj);for(j=bj.length-1;j!==-1;--j)b[bj[j]]=0;sol(U,x,b,xj,bj);if(flag)return b;for(j=xj.length-1;j!==-1;--j)x[xj[j]]=0;for(j=bj.length-1;j!==-1;--j){J=bj[j];Xj[N]=J;Xv[N]=b[J];b[J]=0;++N}Xi[i+1]=N}return[Xi,Xj,Xv]};numeric.ccsbinop=function ccsbinop(body,setup){if(typeof setup==="undefined")setup="";return Function("X","Y","var Xi = X[0], Xj = X[1], Xv = X[2];\n"+"var Yi = Y[0], Yj = Y[1], Yv = Y[2];\n"+"var n = Xi.length-1,m = Math.max(numeric.sup(Xj),numeric.sup(Yj))+1;\n"+"var Zi = numeric.rep([n+1],0), Zj = [], Zv = [];\n"+"var x = numeric.rep([m],0),y = numeric.rep([m],0);\n"+"var xk,yk,zk;\n"+"var i,j,j0,j1,k,p=0;\n"+setup+"for(i=0;i<n;++i) {\n"+" j0 = Xi[i]; j1 = Xi[i+1];\n"+" for(j=j0;j!==j1;++j) {\n"+" k = Xj[j];\n"+" x[k] = 1;\n"+" Zj[p] = k;\n"+" ++p;\n"+" }\n"+" j0 = Yi[i]; j1 = Yi[i+1];\n"+" for(j=j0;j!==j1;++j) {\n"+" k = Yj[j];\n"+" y[k] = Yv[j];\n"+" if(x[k] === 0) {\n"+" Zj[p] = k;\n"+" ++p;\n"+" }\n"+" }\n"+" Zi[i+1] = p;\n"+" j0 = Xi[i]; j1 = Xi[i+1];\n"+" for(j=j0;j!==j1;++j) x[Xj[j]] = Xv[j];\n"+" j0 = Zi[i]; j1 = Zi[i+1];\n"+" for(j=j0;j!==j1;++j) {\n"+" k = Zj[j];\n"+" xk = x[k];\n"+" yk = y[k];\n"+body+"\n"+" Zv[j] = zk;\n"+" }\n"+" j0 = Xi[i]; j1 = Xi[i+1];\n"+" for(j=j0;j!==j1;++j) x[Xj[j]] = 0;\n"+" j0 = Yi[i]; j1 = Yi[i+1];\n"+" for(j=j0;j!==j1;++j) y[Yj[j]] = 0;\n"+"}\n"+"return [Zi,Zj,Zv];")};(function(){var k,A,B,C;for(k in numeric.ops2){if(isFinite(eval("1"+numeric.ops2[k]+"0")))A="[Y[0],Y[1],numeric."+k+"(X,Y[2])]";else A="NaN";if(isFinite(eval("0"+numeric.ops2[k]+"1")))B="[X[0],X[1],numeric."+k+"(X[2],Y)]";else B="NaN";if(isFinite(eval("1"+numeric.ops2[k]+"0"))&&isFinite(eval("0"+numeric.ops2[k]+"1")))C="numeric.ccs"+k+"MM(X,Y)";else C="NaN";numeric["ccs"+k+"MM"]=numeric.ccsbinop("zk = xk "+numeric.ops2[k]+"yk;");numeric["ccs"+k]=Function("X","Y",'if(typeof X === "number") return '+A+";\n"+'if(typeof Y === "number") return '+B+";\n"+"return "+C+";\n")}})();numeric.ccsScatter=function ccsScatter(A){var Ai=A[0],Aj=A[1],Av=A[2];var n=numeric.sup(Aj)+1,m=Ai.length;var Ri=numeric.rep([n],0),Rj=Array(m),Rv=Array(m);var counts=numeric.rep([n],0),i;for(i=0;i<m;++i)counts[Aj[i]]++;for(i=0;i<n;++i)Ri[i+1]=Ri[i]+counts[i];var ptr=Ri.slice(0),k,Aii;for(i=0;i<m;++i){Aii=Aj[i];k=ptr[Aii];Rj[k]=Ai[i];Rv[k]=Av[i];ptr[Aii]=ptr[Aii]+1}return[Ri,Rj,Rv]};numeric.ccsGather=function ccsGather(A){var Ai=A[0],Aj=A[1],Av=A[2];var n=Ai.length-1,m=Aj.length;var Ri=Array(m),Rj=Array(m),Rv=Array(m);var i,j,j0,j1,p;p=0;for(i=0;i<n;++i){j0=Ai[i];j1=Ai[i+1];for(j=j0;j!==j1;++j){Rj[p]=i;Ri[p]=Aj[j];Rv[p]=Av[j];++p}}return[Ri,Rj,Rv]};numeric.sdim=function dim(A,ret,k){if(typeof ret==="undefined"){ret=[]}if(typeof A!=="object")return ret;if(typeof k==="undefined"){k=0}if(!(k in ret)){ret[k]=0}if(A.length>ret[k])ret[k]=A.length;var i;for(i in A){if(A.hasOwnProperty(i))dim(A[i],ret,k+1)}return ret};numeric.sclone=function clone(A,k,n){if(typeof k==="undefined"){k=0}if(typeof n==="undefined"){n=numeric.sdim(A).length}var i,ret=Array(A.length);if(k===n-1){for(i in A){if(A.hasOwnProperty(i))ret[i]=A[i]}return ret}for(i in A){if(A.hasOwnProperty(i))ret[i]=clone(A[i],k+1,n)}return ret};numeric.sdiag=function diag(d){var n=d.length,i,ret=Array(n),i1,i2,i3;for(i=n-1;i>=1;i-=2){i1=i-1;ret[i]=[];ret[i][i]=d[i];ret[i1]=[];ret[i1][i1]=d[i1]}if(i===0){ret[0]=[];ret[0][0]=d[i]}return ret};numeric.sidentity=function identity(n){return numeric.sdiag(numeric.rep([n],1))};numeric.stranspose=function transpose(A){var ret=[],n=A.length,i,j,Ai;for(i in A){if(!A.hasOwnProperty(i))continue;Ai=A[i];for(j in Ai){if(!Ai.hasOwnProperty(j))continue;if(typeof ret[j]!=="object"){ret[j]=[]}ret[j][i]=Ai[j]}}return ret};numeric.sLUP=function LUP(A,tol){throw new Error("The function numeric.sLUP had a bug in it and has been removed. Please use the new numeric.ccsLUP function instead.")};numeric.sdotMM=function dotMM(A,B){var p=A.length,q=B.length,BT=numeric.stranspose(B),r=BT.length,Ai,BTk;var i,j,k,accum;var ret=Array(p),reti;for(i=p-1;i>=0;i--){reti=[];Ai=A[i];for(k=r-1;k>=0;k--){accum=0;BTk=BT[k];for(j in Ai){if(!Ai.hasOwnProperty(j))continue;if(j in BTk){accum+=Ai[j]*BTk[j]}}if(accum)reti[k]=accum}ret[i]=reti}return ret};numeric.sdotMV=function dotMV(A,x){var p=A.length,Ai,i,j;var ret=Array(p),accum;for(i=p-1;i>=0;i--){Ai=A[i];accum=0;for(j in Ai){if(!Ai.hasOwnProperty(j))continue;if(x[j])accum+=Ai[j]*x[j]}if(accum)ret[i]=accum}return ret};numeric.sdotVM=function dotMV(x,A){var i,j,Ai,alpha;var ret=[],accum;for(i in x){if(!x.hasOwnProperty(i))continue;Ai=A[i];alpha=x[i];for(j in Ai){if(!Ai.hasOwnProperty(j))continue;if(!ret[j]){ret[j]=0}ret[j]+=alpha*Ai[j]}}return ret};numeric.sdotVV=function dotVV(x,y){var i,ret=0;for(i in x){if(x[i]&&y[i])ret+=x[i]*y[i]}return ret};numeric.sdot=function dot(A,B){var m=numeric.sdim(A).length,n=numeric.sdim(B).length;var k=m*1e3+n;switch(k){case 0:return A*B;case 1001:return numeric.sdotVV(A,B);case 2001:return numeric.sdotMV(A,B);case 1002:return numeric.sdotVM(A,B);case 2002:return numeric.sdotMM(A,B);default:throw new Error("numeric.sdot not implemented for tensors of order "+m+" and "+n)}};numeric.sscatter=function scatter(V){var n=V[0].length,Vij,i,j,m=V.length,A=[],Aj;for(i=n-1;i>=0;--i){if(!V[m-1][i])continue;Aj=A;for(j=0;j<m-2;j++){Vij=V[j][i];if(!Aj[Vij])Aj[Vij]=[];Aj=Aj[Vij]}Aj[V[j][i]]=V[j+1][i]}return A};numeric.sgather=function gather(A,ret,k){if(typeof ret==="undefined")ret=[];if(typeof k==="undefined")k=[];var n,i,Ai;n=k.length;for(i in A){if(A.hasOwnProperty(i)){k[n]=parseInt(i);Ai=A[i];if(typeof Ai==="number"){if(Ai){if(ret.length===0){for(i=n+1;i>=0;--i)ret[i]=[]}for(i=n;i>=0;--i)ret[i].push(k[i]);ret[n+1].push(Ai)}}else gather(Ai,ret,k)}}if(k.length>n)k.pop();return ret};numeric.cLU=function LU(A){var I=A[0],J=A[1],V=A[2];var p=I.length,m=0,i,j,k,a,b,c;for(i=0;i<p;i++)if(I[i]>m)m=I[i];m++;var L=Array(m),U=Array(m),left=numeric.rep([m],Infinity),right=numeric.rep([m],-Infinity);var Ui,Uj,alpha;for(k=0;k<p;k++){i=I[k];j=J[k];if(j<left[i])left[i]=j;if(j>right[i])right[i]=j}for(i=0;i<m-1;i++){if(right[i]>right[i+1])right[i+1]=right[i]}for(i=m-1;i>=1;i--){if(left[i]<left[i-1])left[i-1]=left[i]}var countL=0,countU=0;for(i=0;i<m;i++){U[i]=numeric.rep([right[i]-left[i]+1],0);L[i]=numeric.rep([i-left[i]],0);countL+=i-left[i]+1;countU+=right[i]-i+1}for(k=0;k<p;k++){i=I[k];U[i][J[k]-left[i]]=V[k];
}for(i=0;i<m-1;i++){a=i-left[i];Ui=U[i];for(j=i+1;left[j]<=i&&j<m;j++){b=i-left[j];c=right[i]-i;Uj=U[j];alpha=Uj[b]/Ui[a];if(alpha){for(k=1;k<=c;k++){Uj[k+b]-=alpha*Ui[k+a]}L[j][i-left[j]]=alpha}}}var Ui=[],Uj=[],Uv=[],Li=[],Lj=[],Lv=[];var p,q,foo;p=0;q=0;for(i=0;i<m;i++){a=left[i];b=right[i];foo=U[i];for(j=i;j<=b;j++){if(foo[j-a]){Ui[p]=i;Uj[p]=j;Uv[p]=foo[j-a];p++}}foo=L[i];for(j=a;j<i;j++){if(foo[j-a]){Li[q]=i;Lj[q]=j;Lv[q]=foo[j-a];q++}}Li[q]=i;Lj[q]=i;Lv[q]=1;q++}return{U:[Ui,Uj,Uv],L:[Li,Lj,Lv]}};numeric.cLUsolve=function LUsolve(lu,b){var L=lu.L,U=lu.U,ret=numeric.clone(b);var Li=L[0],Lj=L[1],Lv=L[2];var Ui=U[0],Uj=U[1],Uv=U[2];var p=Ui.length,q=Li.length;var m=ret.length,i,j,k;k=0;for(i=0;i<m;i++){while(Lj[k]<i){ret[i]-=Lv[k]*ret[Lj[k]];k++}k++}k=p-1;for(i=m-1;i>=0;i--){while(Uj[k]>i){ret[i]-=Uv[k]*ret[Uj[k]];k--}ret[i]/=Uv[k];k--}return ret};numeric.cgrid=function grid(n,shape){if(typeof n==="number")n=[n,n];var ret=numeric.rep(n,-1);var i,j,count;if(typeof shape!=="function"){switch(shape){case"L":shape=function(i,j){return i>=n[0]/2||j<n[1]/2};break;default:shape=function(i,j){return true};break}}count=0;for(i=1;i<n[0]-1;i++)for(j=1;j<n[1]-1;j++)if(shape(i,j)){ret[i][j]=count;count++}return ret};numeric.cdelsq=function delsq(g){var dir=[[-1,0],[0,-1],[0,1],[1,0]];var s=numeric.dim(g),m=s[0],n=s[1],i,j,k,p,q;var Li=[],Lj=[],Lv=[];for(i=1;i<m-1;i++)for(j=1;j<n-1;j++){if(g[i][j]<0)continue;for(k=0;k<4;k++){p=i+dir[k][0];q=j+dir[k][1];if(g[p][q]<0)continue;Li.push(g[i][j]);Lj.push(g[p][q]);Lv.push(-1)}Li.push(g[i][j]);Lj.push(g[i][j]);Lv.push(4)}return[Li,Lj,Lv]};numeric.cdotMV=function dotMV(A,x){var ret,Ai=A[0],Aj=A[1],Av=A[2],k,p=Ai.length,N;N=0;for(k=0;k<p;k++){if(Ai[k]>N)N=Ai[k]}N++;ret=numeric.rep([N],0);for(k=0;k<p;k++){ret[Ai[k]]+=Av[k]*x[Aj[k]]}return ret};numeric.Spline=function Spline(x,yl,yr,kl,kr){this.x=x;this.yl=yl;this.yr=yr;this.kl=kl;this.kr=kr};numeric.Spline.prototype._at=function _at(x1,p){var x=this.x;var yl=this.yl;var yr=this.yr;var kl=this.kl;var kr=this.kr;var x1,a,b,t;var add=numeric.add,sub=numeric.sub,mul=numeric.mul;a=sub(mul(kl[p],x[p+1]-x[p]),sub(yr[p+1],yl[p]));b=add(mul(kr[p+1],x[p]-x[p+1]),sub(yr[p+1],yl[p]));t=(x1-x[p])/(x[p+1]-x[p]);var s=t*(1-t);return add(add(add(mul(1-t,yl[p]),mul(t,yr[p+1])),mul(a,s*(1-t))),mul(b,s*t))};numeric.Spline.prototype.at=function at(x0){if(typeof x0==="number"){var x=this.x;var n=x.length;var p,q,mid,floor=Math.floor,a,b,t;p=0;q=n-1;while(q-p>1){mid=floor((p+q)/2);if(x[mid]<=x0)p=mid;else q=mid}return this._at(x0,p)}var n=x0.length,i,ret=Array(n);for(i=n-1;i!==-1;--i)ret[i]=this.at(x0[i]);return ret};numeric.Spline.prototype.diff=function diff(){var x=this.x;var yl=this.yl;var yr=this.yr;var kl=this.kl;var kr=this.kr;var n=yl.length;var i,dx,dy;var zl=kl,zr=kr,pl=Array(n),pr=Array(n);var add=numeric.add,mul=numeric.mul,div=numeric.div,sub=numeric.sub;for(i=n-1;i!==-1;--i){dx=x[i+1]-x[i];dy=sub(yr[i+1],yl[i]);pl[i]=div(add(mul(dy,6),mul(kl[i],-4*dx),mul(kr[i+1],-2*dx)),dx*dx);pr[i+1]=div(add(mul(dy,-6),mul(kl[i],2*dx),mul(kr[i+1],4*dx)),dx*dx)}return new numeric.Spline(x,zl,zr,pl,pr)};numeric.Spline.prototype.roots=function roots(){function sqr(x){return x*x}function heval(y0,y1,k0,k1,x){var A=k0*2-(y1-y0);var B=-k1*2+(y1-y0);var t=(x+1)*.5;var s=t*(1-t);return(1-t)*y0+t*y1+A*s*(1-t)+B*s*t}var ret=[];var x=this.x,yl=this.yl,yr=this.yr,kl=this.kl,kr=this.kr;if(typeof yl[0]==="number"){yl=[yl];yr=[yr];kl=[kl];kr=[kr]}var m=yl.length,n=x.length-1,i,j,k,y,s,t;var ai,bi,ci,di,ret=Array(m),ri,k0,k1,y0,y1,A,B,D,dx,cx,stops,z0,z1,zm,t0,t1,tm;var sqrt=Math.sqrt;for(i=0;i!==m;++i){ai=yl[i];bi=yr[i];ci=kl[i];di=kr[i];ri=[];for(j=0;j!==n;j++){if(j>0&&bi[j]*ai[j]<0)ri.push(x[j]);dx=x[j+1]-x[j];cx=x[j];y0=ai[j];y1=bi[j+1];k0=ci[j]/dx;k1=di[j+1]/dx;D=sqr(k0-k1+3*(y0-y1))+12*k1*y0;A=k1+3*y0+2*k0-3*y1;B=3*(k1+k0+2*(y0-y1));if(D<=0){z0=A/B;if(z0>x[j]&&z0<x[j+1])stops=[x[j],z0,x[j+1]];else stops=[x[j],x[j+1]]}else{z0=(A-sqrt(D))/B;z1=(A+sqrt(D))/B;stops=[x[j]];if(z0>x[j]&&z0<x[j+1])stops.push(z0);if(z1>x[j]&&z1<x[j+1])stops.push(z1);stops.push(x[j+1])}t0=stops[0];z0=this._at(t0,j);for(k=0;k<stops.length-1;k++){t1=stops[k+1];z1=this._at(t1,j);if(z0===0){ri.push(t0);t0=t1;z0=z1;continue}if(z1===0||z0*z1>0){t0=t1;z0=z1;continue}var side=0;while(1){tm=(z0*t1-z1*t0)/(z0-z1);if(tm<=t0||tm>=t1){break}zm=this._at(tm,j);if(zm*z1>0){t1=tm;z1=zm;if(side===-1)z0*=.5;side=-1}else if(zm*z0>0){t0=tm;z0=zm;if(side===1)z1*=.5;side=1}else break}ri.push(tm);t0=stops[k+1];z0=this._at(t0,j)}if(z1===0)ri.push(t1)}ret[i]=ri}if(typeof this.yl[0]==="number")return ret[0];return ret};numeric.spline=function spline(x,y,k1,kn){var n=x.length,b=[],dx=[],dy=[];var i;var sub=numeric.sub,mul=numeric.mul,add=numeric.add;for(i=n-2;i>=0;i--){dx[i]=x[i+1]-x[i];dy[i]=sub(y[i+1],y[i])}if(typeof k1==="string"||typeof kn==="string"){k1=kn="periodic"}var T=[[],[],[]];switch(typeof k1){case"undefined":b[0]=mul(3/(dx[0]*dx[0]),dy[0]);T[0].push(0,0);T[1].push(0,1);T[2].push(2/dx[0],1/dx[0]);break;case"string":b[0]=add(mul(3/(dx[n-2]*dx[n-2]),dy[n-2]),mul(3/(dx[0]*dx[0]),dy[0]));T[0].push(0,0,0);T[1].push(n-2,0,1);T[2].push(1/dx[n-2],2/dx[n-2]+2/dx[0],1/dx[0]);break;default:b[0]=k1;T[0].push(0);T[1].push(0);T[2].push(1);break}for(i=1;i<n-1;i++){b[i]=add(mul(3/(dx[i-1]*dx[i-1]),dy[i-1]),mul(3/(dx[i]*dx[i]),dy[i]));T[0].push(i,i,i);T[1].push(i-1,i,i+1);T[2].push(1/dx[i-1],2/dx[i-1]+2/dx[i],1/dx[i])}switch(typeof kn){case"undefined":b[n-1]=mul(3/(dx[n-2]*dx[n-2]),dy[n-2]);T[0].push(n-1,n-1);T[1].push(n-2,n-1);T[2].push(1/dx[n-2],2/dx[n-2]);break;case"string":T[1][T[1].length-1]=0;break;default:b[n-1]=kn;T[0].push(n-1);T[1].push(n-1);T[2].push(1);break}if(typeof b[0]!=="number")b=numeric.transpose(b);else b=[b];var k=Array(b.length);if(typeof k1==="string"){for(i=k.length-1;i!==-1;--i){k[i]=numeric.ccsLUPSolve(numeric.ccsLUP(numeric.ccsScatter(T)),b[i]);k[i][n-1]=k[i][0]}}else{for(i=k.length-1;i!==-1;--i){k[i]=numeric.cLUsolve(numeric.cLU(T),b[i])}}if(typeof y[0]==="number")k=k[0];else k=numeric.transpose(k);return new numeric.Spline(x,y,y,k,k)};numeric.fftpow2=function fftpow2(x,y){var n=x.length;if(n===1)return;var cos=Math.cos,sin=Math.sin,i,j;var xe=Array(n/2),ye=Array(n/2),xo=Array(n/2),yo=Array(n/2);j=n/2;for(i=n-1;i!==-1;--i){--j;xo[j]=x[i];yo[j]=y[i];--i;xe[j]=x[i];ye[j]=y[i]}fftpow2(xe,ye);fftpow2(xo,yo);j=n/2;var t,k=-6.283185307179586/n,ci,si;for(i=n-1;i!==-1;--i){--j;if(j===-1)j=n/2-1;t=k*i;ci=cos(t);si=sin(t);x[i]=xe[j]+ci*xo[j]-si*yo[j];y[i]=ye[j]+ci*yo[j]+si*xo[j]}};numeric._ifftpow2=function _ifftpow2(x,y){var n=x.length;if(n===1)return;var cos=Math.cos,sin=Math.sin,i,j;var xe=Array(n/2),ye=Array(n/2),xo=Array(n/2),yo=Array(n/2);j=n/2;for(i=n-1;i!==-1;--i){--j;xo[j]=x[i];yo[j]=y[i];--i;xe[j]=x[i];ye[j]=y[i]}_ifftpow2(xe,ye);_ifftpow2(xo,yo);j=n/2;var t,k=6.283185307179586/n,ci,si;for(i=n-1;i!==-1;--i){--j;if(j===-1)j=n/2-1;t=k*i;ci=cos(t);si=sin(t);x[i]=xe[j]+ci*xo[j]-si*yo[j];y[i]=ye[j]+ci*yo[j]+si*xo[j]}};numeric.ifftpow2=function ifftpow2(x,y){numeric._ifftpow2(x,y);numeric.diveq(x,x.length);numeric.diveq(y,y.length)};numeric.convpow2=function convpow2(ax,ay,bx,by){numeric.fftpow2(ax,ay);numeric.fftpow2(bx,by);var i,n=ax.length,axi,bxi,ayi,byi;for(i=n-1;i!==-1;--i){axi=ax[i];ayi=ay[i];bxi=bx[i];byi=by[i];ax[i]=axi*bxi-ayi*byi;ay[i]=axi*byi+ayi*bxi}numeric.ifftpow2(ax,ay)};numeric.T.prototype.fft=function fft(){var x=this.x,y=this.y;var n=x.length,log=Math.log,log2=log(2),p=Math.ceil(log(2*n-1)/log2),m=Math.pow(2,p);var cx=numeric.rep([m],0),cy=numeric.rep([m],0),cos=Math.cos,sin=Math.sin;var k,c=-3.141592653589793/n,t;var a=numeric.rep([m],0),b=numeric.rep([m],0),nhalf=Math.floor(n/2);for(k=0;k<n;k++)a[k]=x[k];if(typeof y!=="undefined")for(k=0;k<n;k++)b[k]=y[k];cx[0]=1;for(k=1;k<=m/2;k++){t=c*k*k;cx[k]=cos(t);cy[k]=sin(t);cx[m-k]=cos(t);cy[m-k]=sin(t)}var X=new numeric.T(a,b),Y=new numeric.T(cx,cy);X=X.mul(Y);numeric.convpow2(X.x,X.y,numeric.clone(Y.x),numeric.neg(Y.y));X=X.mul(Y);X.x.length=n;X.y.length=n;return X};numeric.T.prototype.ifft=function ifft(){var x=this.x,y=this.y;var n=x.length,log=Math.log,log2=log(2),p=Math.ceil(log(2*n-1)/log2),m=Math.pow(2,p);var cx=numeric.rep([m],0),cy=numeric.rep([m],0),cos=Math.cos,sin=Math.sin;var k,c=3.141592653589793/n,t;var a=numeric.rep([m],0),b=numeric.rep([m],0),nhalf=Math.floor(n/2);for(k=0;k<n;k++)a[k]=x[k];if(typeof y!=="undefined")for(k=0;k<n;k++)b[k]=y[k];cx[0]=1;for(k=1;k<=m/2;k++){t=c*k*k;cx[k]=cos(t);cy[k]=sin(t);cx[m-k]=cos(t);cy[m-k]=sin(t)}var X=new numeric.T(a,b),Y=new numeric.T(cx,cy);X=X.mul(Y);numeric.convpow2(X.x,X.y,numeric.clone(Y.x),numeric.neg(Y.y));X=X.mul(Y);X.x.length=n;X.y.length=n;return X.div(n)};numeric.gradient=function gradient(f,x){var n=x.length;var f0=f(x);if(isNaN(f0))throw new Error("gradient: f(x) is a NaN!");var max=Math.max;var i,x0=numeric.clone(x),f1,f2,J=Array(n);var div=numeric.div,sub=numeric.sub,errest,roundoff,max=Math.max,eps=.001,abs=Math.abs,min=Math.min;var t0,t1,t2,it=0,d1,d2,N;for(i=0;i<n;i++){var h=max(1e-6*f0,1e-8);while(1){++it;if(it>20){throw new Error("Numerical gradient fails")}x0[i]=x[i]+h;f1=f(x0);x0[i]=x[i]-h;f2=f(x0);x0[i]=x[i];if(isNaN(f1)||isNaN(f2)){h/=16;continue}J[i]=(f1-f2)/(2*h);t0=x[i]-h;t1=x[i];t2=x[i]+h;d1=(f1-f0)/h;d2=(f0-f2)/h;N=max(abs(J[i]),abs(f0),abs(f1),abs(f2),abs(t0),abs(t1),abs(t2),1e-8);errest=min(max(abs(d1-J[i]),abs(d2-J[i]),abs(d1-d2))/N,h/N);if(errest>eps){h/=16}else break}}return J};numeric.uncmin=function uncmin(f,x0,tol,gradient,maxit,callback,options){var grad=numeric.gradient;if(typeof options==="undefined"){options={}}if(typeof tol==="undefined"){tol=1e-8}if(typeof gradient==="undefined"){gradient=function(x){return grad(f,x)}}if(typeof maxit==="undefined")maxit=1e3;x0=numeric.clone(x0);var n=x0.length;var f0=f(x0),f1,df0;if(isNaN(f0))throw new Error("uncmin: f(x0) is a NaN!");var max=Math.max,norm2=numeric.norm2;tol=max(tol,numeric.epsilon);var step,g0,g1,H1=options.Hinv||numeric.identity(n);var dot=numeric.dot,inv=numeric.inv,sub=numeric.sub,add=numeric.add,ten=numeric.tensor,div=numeric.div,mul=numeric.mul;var all=numeric.all,isfinite=numeric.isFinite,neg=numeric.neg;var it=0,i,s,x1,y,Hy,Hs,ys,i0,t,nstep,t1,t2;var msg="";g0=gradient(x0);while(it<maxit){if(typeof callback==="function"){if(callback(it,x0,f0,g0,H1)){msg="Callback returned true";break}}if(!all(isfinite(g0))){msg="Gradient has Infinity or NaN";break}step=neg(dot(H1,g0));if(!all(isfinite(step))){msg="Search direction has Infinity or NaN";break}nstep=norm2(step);if(nstep<tol){msg="Newton step smaller than tol";break}t=1;df0=dot(g0,step);x1=x0;while(it<maxit){if(t*nstep<tol){break}s=mul(step,t);x1=add(x0,s);f1=f(x1);if(f1-f0>=.1*t*df0||isNaN(f1)){t*=.5;++it;continue}break}if(t*nstep<tol){msg="Line search step size smaller than tol";break}if(it===maxit){msg="maxit reached during line search";break}g1=gradient(x1);y=sub(g1,g0);ys=dot(y,s);Hy=dot(H1,y);H1=sub(add(H1,mul((ys+dot(y,Hy))/(ys*ys),ten(s,s))),div(add(ten(Hy,s),ten(s,Hy)),ys));x0=x1;f0=f1;g0=g1;++it}return{solution:x0,f:f0,gradient:g0,invHessian:H1,iterations:it,message:msg}};numeric.Dopri=function Dopri(x,y,f,ymid,iterations,msg,events){this.x=x;this.y=y;this.f=f;this.ymid=ymid;this.iterations=iterations;this.events=events;this.message=msg};numeric.Dopri.prototype._at=function _at(xi,j){function sqr(x){return x*x}var sol=this;var xs=sol.x;var ys=sol.y;var k1=sol.f;var ymid=sol.ymid;var n=xs.length;var x0,x1,xh,y0,y1,yh,xi;var floor=Math.floor,h;var c=.5;var add=numeric.add,mul=numeric.mul,sub=numeric.sub,p,q,w;x0=xs[j];x1=xs[j+1];y0=ys[j];y1=ys[j+1];h=x1-x0;xh=x0+c*h;yh=ymid[j];p=sub(k1[j],mul(y0,1/(x0-xh)+2/(x0-x1)));q=sub(k1[j+1],mul(y1,1/(x1-xh)+2/(x1-x0)));w=[sqr(xi-x1)*(xi-xh)/sqr(x0-x1)/(x0-xh),sqr(xi-x0)*sqr(xi-x1)/sqr(x0-xh)/sqr(x1-xh),sqr(xi-x0)*(xi-xh)/sqr(x1-x0)/(x1-xh),(xi-x0)*sqr(xi-x1)*(xi-xh)/sqr(x0-x1)/(x0-xh),(xi-x1)*sqr(xi-x0)*(xi-xh)/sqr(x0-x1)/(x1-xh)];return add(add(add(add(mul(y0,w[0]),mul(yh,w[1])),mul(y1,w[2])),mul(p,w[3])),mul(q,w[4]))};numeric.Dopri.prototype.at=function at(x){var i,j,k,floor=Math.floor;if(typeof x!=="number"){var n=x.length,ret=Array(n);for(i=n-1;i!==-1;--i){ret[i]=this.at(x[i])}return ret}var x0=this.x;i=0;j=x0.length-1;while(j-i>1){k=floor(.5*(i+j));if(x0[k]<=x)i=k;else j=k}return this._at(x,i)};numeric.dopri=function dopri(x0,x1,y0,f,tol,maxit,event){if(typeof tol==="undefined"){tol=1e-6}if(typeof maxit==="undefined"){maxit=1e3}var xs=[x0],ys=[y0],k1=[f(x0,y0)],k2,k3,k4,k5,k6,k7,ymid=[];var A2=1/5;var A3=[3/40,9/40];var A4=[44/45,-56/15,32/9];var A5=[19372/6561,-25360/2187,64448/6561,-212/729];var A6=[9017/3168,-355/33,46732/5247,49/176,-5103/18656];var b=[35/384,0,500/1113,125/192,-2187/6784,11/84];var bm=[.5*6025192743/30085553152,0,.5*51252292925/65400821598,.5*-2691868925/45128329728,.5*187940372067/1594534317056,.5*-1776094331/19743644256,.5*11237099/235043384];var c=[1/5,3/10,4/5,8/9,1,1];var e=[-71/57600,0,71/16695,-71/1920,17253/339200,-22/525,1/40];var i=0,er,j;var h=(x1-x0)/10;var it=0;var add=numeric.add,mul=numeric.mul,y1,erinf;var max=Math.max,min=Math.min,abs=Math.abs,norminf=numeric.norminf,pow=Math.pow;var any=numeric.any,lt=numeric.lt,and=numeric.and,sub=numeric.sub;var e0,e1,ev;var ret=new numeric.Dopri(xs,ys,k1,ymid,-1,"");if(typeof event==="function")e0=event(x0,y0);while(x0<x1&&it<maxit){++it;if(x0+h>x1)h=x1-x0;k2=f(x0+c[0]*h,add(y0,mul(A2*h,k1[i])));k3=f(x0+c[1]*h,add(add(y0,mul(A3[0]*h,k1[i])),mul(A3[1]*h,k2)));k4=f(x0+c[2]*h,add(add(add(y0,mul(A4[0]*h,k1[i])),mul(A4[1]*h,k2)),mul(A4[2]*h,k3)));k5=f(x0+c[3]*h,add(add(add(add(y0,mul(A5[0]*h,k1[i])),mul(A5[1]*h,k2)),mul(A5[2]*h,k3)),mul(A5[3]*h,k4)));k6=f(x0+c[4]*h,add(add(add(add(add(y0,mul(A6[0]*h,k1[i])),mul(A6[1]*h,k2)),mul(A6[2]*h,k3)),mul(A6[3]*h,k4)),mul(A6[4]*h,k5)));y1=add(add(add(add(add(y0,mul(k1[i],h*b[0])),mul(k3,h*b[2])),mul(k4,h*b[3])),mul(k5,h*b[4])),mul(k6,h*b[5]));k7=f(x0+h,y1);er=add(add(add(add(add(mul(k1[i],h*e[0]),mul(k3,h*e[2])),mul(k4,h*e[3])),mul(k5,h*e[4])),mul(k6,h*e[5])),mul(k7,h*e[6]));if(typeof er==="number")erinf=abs(er);else erinf=norminf(er);if(erinf>tol){h=.2*h*pow(tol/erinf,.25);if(x0+h===x0){ret.msg="Step size became too small";break}continue}ymid[i]=add(add(add(add(add(add(y0,mul(k1[i],h*bm[0])),mul(k3,h*bm[2])),mul(k4,h*bm[3])),mul(k5,h*bm[4])),mul(k6,h*bm[5])),mul(k7,h*bm[6]));++i;xs[i]=x0+h;ys[i]=y1;k1[i]=k7;if(typeof event==="function"){var yi,xl=x0,xr=x0+.5*h,xi;e1=event(xr,ymid[i-1]);ev=and(lt(e0,0),lt(0,e1));if(!any(ev)){xl=xr;xr=x0+h;e0=e1;e1=event(xr,y1);ev=and(lt(e0,0),lt(0,e1))}if(any(ev)){var xc,yc,en,ei;var side=0,sl=1,sr=1;while(1){if(typeof e0==="number")xi=(sr*e1*xl-sl*e0*xr)/(sr*e1-sl*e0);else{xi=xr;for(j=e0.length-1;j!==-1;--j){if(e0[j]<0&&e1[j]>0)xi=min(xi,(sr*e1[j]*xl-sl*e0[j]*xr)/(sr*e1[j]-sl*e0[j]))}}if(xi<=xl||xi>=xr)break;yi=ret._at(xi,i-1);ei=event(xi,yi);en=and(lt(e0,0),lt(0,ei));if(any(en)){xr=xi;e1=ei;ev=en;sr=1;if(side===-1)sl*=.5;else sl=1;side=-1}else{xl=xi;e0=ei;sl=1;if(side===1)sr*=.5;else sr=1;side=1}}y1=ret._at(.5*(x0+xi),i-1);ret.f[i]=f(xi,yi);ret.x[i]=xi;ret.y[i]=yi;ret.ymid[i-1]=y1;ret.events=ev;ret.iterations=it;return ret}}x0+=h;y0=y1;e0=e1;h=min(.8*h*pow(tol/erinf,.25),4*h)}ret.iterations=it;return ret};numeric.LU=function(A,fast){fast=fast||false;var abs=Math.abs;var i,j,k,absAjk,Akk,Ak,Pk,Ai;var max;var n=A.length,n1=n-1;var P=new Array(n);if(!fast)A=numeric.clone(A);for(k=0;k<n;++k){Pk=k;Ak=A[k];max=abs(Ak[k]);for(j=k+1;j<n;++j){absAjk=abs(A[j][k]);if(max<absAjk){max=absAjk;Pk=j}}P[k]=Pk;if(Pk!=k){A[k]=A[Pk];A[Pk]=Ak;Ak=A[k]}Akk=Ak[k];for(i=k+1;i<n;++i){A[i][k]/=Akk}for(i=k+1;i<n;++i){Ai=A[i];for(j=k+1;j<n1;++j){Ai[j]-=Ai[k]*Ak[j];++j;Ai[j]-=Ai[k]*Ak[j]}if(j===n1)Ai[j]-=Ai[k]*Ak[j]}}return{LU:A,P:P}};numeric.LUsolve=function LUsolve(LUP,b){var i,j;var LU=LUP.LU;var n=LU.length;var x=numeric.clone(b);var P=LUP.P;var Pi,LUi,LUii,tmp;for(i=n-1;i!==-1;--i)x[i]=b[i];for(i=0;i<n;++i){Pi=P[i];if(P[i]!==i){tmp=x[i];x[i]=x[Pi];x[Pi]=tmp}LUi=LU[i];for(j=0;j<i;++j){x[i]-=x[j]*LUi[j]}}for(i=n-1;i>=0;--i){LUi=LU[i];for(j=i+1;j<n;++j){x[i]-=x[j]*LUi[j]}x[i]/=LUi[i]}return x};numeric.solve=function solve(A,b,fast){return numeric.LUsolve(numeric.LU(A,fast),b)};numeric.echelonize=function echelonize(A){var s=numeric.dim(A),m=s[0],n=s[1];var I=numeric.identity(m);var P=Array(m);var i,j,k,l,Ai,Ii,Z,a;var abs=Math.abs;var diveq=numeric.diveq;A=numeric.clone(A);for(i=0;i<m;++i){k=0;Ai=A[i];Ii=I[i];for(j=1;j<n;++j)if(abs(Ai[k])<abs(Ai[j]))k=j;P[i]=k;diveq(Ii,Ai[k]);diveq(Ai,Ai[k]);for(j=0;j<m;++j)if(j!==i){Z=A[j];a=Z[k];for(l=n-1;l!==-1;--l)Z[l]-=Ai[l]*a;Z=I[j];for(l=m-1;l!==-1;--l)Z[l]-=Ii[l]*a}}return{I:I,A:A,P:P}};numeric.__solveLP=function __solveLP(c,A,b,tol,maxit,x,flag){var sum=numeric.sum,log=numeric.log,mul=numeric.mul,sub=numeric.sub,dot=numeric.dot,div=numeric.div,add=numeric.add;var m=c.length,n=b.length,y;var unbounded=false,cb,i0=0;var alpha=1;var f0,df0,AT=numeric.transpose(A),svd=numeric.svd,transpose=numeric.transpose,leq=numeric.leq,sqrt=Math.sqrt,abs=Math.abs;var muleq=numeric.muleq;var norm=numeric.norminf,any=numeric.any,min=Math.min;var all=numeric.all,gt=numeric.gt;var p=Array(m),A0=Array(n),e=numeric.rep([n],1),H;var solve=numeric.solve,z=sub(b,dot(A,x)),count;var dotcc=dot(c,c);var g;for(count=i0;count<maxit;++count){var i,j,d;for(i=n-1;i!==-1;--i)A0[i]=div(A[i],z[i]);var A1=transpose(A0);for(i=m-1;i!==-1;--i)p[i]=sum(A1[i]);alpha=.25*abs(dotcc/dot(c,p));var a1=100*sqrt(dotcc/dot(p,p));if(!isFinite(alpha)||alpha>a1)alpha=a1;g=add(c,mul(alpha,p));H=dot(A1,A0);for(i=m-1;i!==-1;--i)H[i][i]+=1;d=solve(H,div(g,alpha),true);var t0=div(z,dot(A,d));var t=1;for(i=n-1;i!==-1;--i)if(t0[i]<0)t=min(t,-.999*t0[i]);y=sub(x,mul(d,t));z=sub(b,dot(A,y));if(!all(gt(z,0)))return{solution:x,message:"",iterations:count};x=y;if(alpha<tol)return{solution:y,message:"",iterations:count};if(flag){var s=dot(c,g),Ag=dot(A,g);unbounded=true;for(i=n-1;i!==-1;--i)if(s*Ag[i]<0){unbounded=false;break}}else{if(x[m-1]>=0)unbounded=false;else unbounded=true}if(unbounded)return{solution:y,message:"Unbounded",iterations:count}}return{solution:x,message:"maximum iteration count exceeded",iterations:count}};numeric._solveLP=function _solveLP(c,A,b,tol,maxit){var m=c.length,n=b.length,y;var sum=numeric.sum,log=numeric.log,mul=numeric.mul,sub=numeric.sub,dot=numeric.dot,div=numeric.div,add=numeric.add;var c0=numeric.rep([m],0).concat([1]);var J=numeric.rep([n,1],-1);var A0=numeric.blockMatrix([[A,J]]);var b0=b;var y=numeric.rep([m],0).concat(Math.max(0,numeric.sup(numeric.neg(b)))+1);var x0=numeric.__solveLP(c0,A0,b0,tol,maxit,y,false);var x=numeric.clone(x0.solution);x.length=m;var foo=numeric.inf(sub(b,dot(A,x)));if(foo<0){return{solution:NaN,message:"Infeasible",iterations:x0.iterations}}var ret=numeric.__solveLP(c,A,b,tol,maxit-x0.iterations,x,true);ret.iterations+=x0.iterations;return ret};numeric.solveLP=function solveLP(c,A,b,Aeq,beq,tol,maxit){if(typeof maxit==="undefined")maxit=1e3;if(typeof tol==="undefined")tol=numeric.epsilon;if(typeof Aeq==="undefined")return numeric._solveLP(c,A,b,tol,maxit);var m=Aeq.length,n=Aeq[0].length,o=A.length;var B=numeric.echelonize(Aeq);var flags=numeric.rep([n],0);var P=B.P;var Q=[];var i;for(i=P.length-1;i!==-1;--i)flags[P[i]]=1;for(i=n-1;i!==-1;--i)if(flags[i]===0)Q.push(i);var g=numeric.getRange;var I=numeric.linspace(0,m-1),J=numeric.linspace(0,o-1);var Aeq2=g(Aeq,I,Q),A1=g(A,J,P),A2=g(A,J,Q),dot=numeric.dot,sub=numeric.sub;var A3=dot(A1,B.I);var A4=sub(A2,dot(A3,Aeq2)),b4=sub(b,dot(A3,beq));var c1=Array(P.length),c2=Array(Q.length);for(i=P.length-1;i!==-1;--i)c1[i]=c[P[i]];for(i=Q.length-1;i!==-1;--i)c2[i]=c[Q[i]];var c4=sub(c2,dot(c1,dot(B.I,Aeq2)));var S=numeric._solveLP(c4,A4,b4,tol,maxit);var x2=S.solution;if(x2!==x2)return S;var x1=dot(B.I,sub(beq,dot(Aeq2,x2)));var x=Array(c.length);for(i=P.length-1;i!==-1;--i)x[P[i]]=x1[i];for(i=Q.length-1;i!==-1;--i)x[Q[i]]=x2[i];return{solution:x,message:S.message,iterations:S.iterations}};numeric.MPStoLP=function MPStoLP(MPS){if(MPS instanceof String){MPS.split("\n")}var state=0;var states=["Initial state","NAME","ROWS","COLUMNS","RHS","BOUNDS","ENDATA"];var n=MPS.length;var i,j,z,N=0,rows={},sign=[],rl=0,vars={},nv=0;var name;var c=[],A=[],b=[];function err(e){throw new Error("MPStoLP: "+e+"\nLine "+i+": "+MPS[i]+"\nCurrent state: "+states[state]+"\n")}for(i=0;i<n;++i){z=MPS[i];var w0=z.match(/\S*/g);var w=[];for(j=0;j<w0.length;++j)if(w0[j]!=="")w.push(w0[j]);if(w.length===0)continue;for(j=0;j<states.length;++j)if(z.substr(0,states[j].length)===states[j])break;if(j<states.length){state=j;if(j===1){name=w[1]}if(j===6)return{name:name,c:c,A:numeric.transpose(A),b:b,rows:rows,vars:vars};continue}switch(state){case 0:case 1:err("Unexpected line");case 2:switch(w[0]){case"N":if(N===0)N=w[1];else err("Two or more N rows");break;case"L":rows[w[1]]=rl;sign[rl]=1;b[rl]=0;++rl;break;case"G":rows[w[1]]=rl;sign[rl]=-1;b[rl]=0;++rl;break;case"E":rows[w[1]]=rl;sign[rl]=0;b[rl]=0;++rl;break;default:err("Parse error "+numeric.prettyPrint(w))}break;case 3:if(!vars.hasOwnProperty(w[0])){vars[w[0]]=nv;c[nv]=0;A[nv]=numeric.rep([rl],0);++nv}var p=vars[w[0]];for(j=1;j<w.length;j+=2){if(w[j]===N){c[p]=parseFloat(w[j+1]);continue}var q=rows[w[j]];A[p][q]=(sign[q]<0?-1:1)*parseFloat(w[j+1])}break;case 4:for(j=1;j<w.length;j+=2)b[rows[w[j]]]=(sign[rows[w[j]]]<0?-1:1)*parseFloat(w[j+1]);break;case 5:break;case 6:err("Internal error")}}err("Reached end of file without ENDATA")};numeric.seedrandom={pow:Math.pow,random:Math.random};(function(pool,math,width,chunks,significance,overflow,startdenom){math["seedrandom"]=function seedrandom(seed,use_entropy){var key=[];var arc4;seed=mixkey(flatten(use_entropy?[seed,pool]:arguments.length?seed:[(new Date).getTime(),pool,window],3),key);arc4=new ARC4(key);mixkey(arc4.S,pool);math["random"]=function random(){var n=arc4.g(chunks);var d=startdenom;var x=0;while(n<significance){n=(n+x)*width;d*=width;x=arc4.g(1)}while(n>=overflow){n/=2;d/=2;x>>>=1}return(n+x)/d};return seed};function ARC4(key){var t,u,me=this,keylen=key.length;var i=0,j=me.i=me.j=me.m=0;me.S=[];me.c=[];if(!keylen){key=[keylen++]}while(i<width){me.S[i]=i++}for(i=0;i<width;i++){t=me.S[i];j=lowbits(j+t+key[i%keylen]);u=me.S[j];me.S[i]=u;me.S[j]=t}me.g=function getnext(count){var s=me.S;var i=lowbits(me.i+1);var t=s[i];var j=lowbits(me.j+t);var u=s[j];s[i]=u;s[j]=t;var r=s[lowbits(t+u)];while(--count){i=lowbits(i+1);t=s[i];j=lowbits(j+t);u=s[j];s[i]=u;s[j]=t;r=r*width+s[lowbits(t+u)]}me.i=i;me.j=j;return r};me.g(width)}function flatten(obj,depth,result,prop,typ){result=[];typ=typeof obj;if(depth&&typ=="object"){for(prop in obj){if(prop.indexOf("S")<5){try{result.push(flatten(obj[prop],depth-1))}catch(e){}}}}return result.length?result:obj+(typ!="string"?"\x00":"")}function mixkey(seed,key,smear,j){seed+="";smear=0;for(j=0;j<seed.length;j++){key[lowbits(j)]=lowbits((smear^=key[lowbits(j)]*19)+seed.charCodeAt(j))}seed="";for(j in key){seed+=String.fromCharCode(key[j])}return seed}function lowbits(n){return n&width-1}startdenom=math.pow(width,chunks);significance=math.pow(2,significance);overflow=significance*2;mixkey(math.random(),pool)})([],numeric.seedrandom,256,6,52);(function(exports){function base0to1(A){if(typeof A!=="object"){return A}var ret=[],i,n=A.length;for(i=0;i<n;i++)ret[i+1]=base0to1(A[i]);return ret}function base1to0(A){if(typeof A!=="object"){return A}var ret=[],i,n=A.length;for(i=1;i<n;i++)ret[i-1]=base1to0(A[i]);return ret}function dpori(a,lda,n){var i,j,k,kp1,t;for(k=1;k<=n;k=k+1){a[k][k]=1/a[k][k];t=-a[k][k];for(i=1;i<k;i=i+1){a[i][k]=t*a[i][k]}kp1=k+1;if(n<kp1){break}for(j=kp1;j<=n;j=j+1){t=a[k][j];a[k][j]=0;for(i=1;i<=k;i=i+1){a[i][j]=a[i][j]+t*a[i][k]}}}}function dposl(a,lda,n,b){var i,k,kb,t;for(k=1;k<=n;k=k+1){t=0;for(i=1;i<k;i=i+1){t=t+a[i][k]*b[i]}b[k]=(b[k]-t)/a[k][k]}for(kb=1;kb<=n;kb=kb+1){k=n+1-kb;b[k]=b[k]/a[k][k];t=-b[k];for(i=1;i<k;i=i+1){b[i]=b[i]+t*a[i][k]}}}function dpofa(a,lda,n,info){var i,j,jm1,k,t,s;for(j=1;j<=n;j=j+1){info[1]=j;s=0;jm1=j-1;if(jm1<1){s=a[j][j]-s;if(s<=0){break}a[j][j]=Math.sqrt(s)}else{for(k=1;k<=jm1;k=k+1){t=a[k][j];for(i=1;i<k;i=i+1){t=t-a[i][j]*a[i][k]}t=t/a[k][k];a[k][j]=t;s=s+t*t}s=a[j][j]-s;if(s<=0){break}a[j][j]=Math.sqrt(s)}info[1]=0}}function qpgen2(dmat,dvec,fddmat,n,sol,crval,amat,bvec,fdamat,q,meq,iact,nact,iter,work,ierr){var i,j,l,l1,info,it1,iwzv,iwrv,iwrm,iwsv,iwuv,nvl,r,iwnbv,temp,sum,t1,tt,gc,gs,nu,t1inf,t2min,vsmall,tmpa,tmpb,go;r=Math.min(n,q);l=2*n+r*(r+5)/2+2*q+1;vsmall=1e-60;do{vsmall=vsmall+vsmall;tmpa=1+.1*vsmall;tmpb=1+.2*vsmall}while(tmpa<=1||tmpb<=1);for(i=1;i<=n;i=i+1){work[i]=dvec[i]}for(i=n+1;i<=l;i=i+1){work[i]=0}for(i=1;i<=q;i=i+1){iact[i]=0}info=[];if(ierr[1]===0){dpofa(dmat,fddmat,n,info);if(info[1]!==0){ierr[1]=2;return}dposl(dmat,fddmat,n,dvec);dpori(dmat,fddmat,n)}else{for(j=1;j<=n;j=j+1){sol[j]=0;for(i=1;i<=j;i=i+1){sol[j]=sol[j]+dmat[i][j]*dvec[i]}}for(j=1;j<=n;j=j+1){dvec[j]=0;for(i=j;i<=n;i=i+1){dvec[j]=dvec[j]+dmat[j][i]*sol[i]}}}crval[1]=0;for(j=1;j<=n;j=j+1){sol[j]=dvec[j];crval[1]=crval[1]+work[j]*sol[j];work[j]=0;for(i=j+1;i<=n;i=i+1){dmat[i][j]=0}}crval[1]=-crval[1]/2;ierr[1]=0;iwzv=n;iwrv=iwzv+n;iwuv=iwrv+r;iwrm=iwuv+r+1;iwsv=iwrm+r*(r+1)/2;iwnbv=iwsv+q;for(i=1;i<=q;i=i+1){sum=0;for(j=1;j<=n;j=j+1){sum=sum+amat[j][i]*amat[j][i]}work[iwnbv+i]=Math.sqrt(sum)}nact=0;iter[1]=0;iter[2]=0;function fn_goto_50(){iter[1]=iter[1]+1;l=iwsv;for(i=1;i<=q;i=i+1){l=l+1;sum=-bvec[i];for(j=1;j<=n;j=j+1){sum=sum+amat[j][i]*sol[j]}if(Math.abs(sum)<vsmall){sum=0}if(i>meq){work[l]=sum}else{work[l]=-Math.abs(sum);if(sum>0){for(j=1;j<=n;j=j+1){amat[j][i]=-amat[j][i]}bvec[i]=-bvec[i]}}}for(i=1;i<=nact;i=i+1){work[iwsv+iact[i]]=0}nvl=0;temp=0;for(i=1;i<=q;i=i+1){if(work[iwsv+i]<temp*work[iwnbv+i]){nvl=i;temp=work[iwsv+i]/work[iwnbv+i]}}if(nvl===0){return 999}return 0}function fn_goto_55(){for(i=1;i<=n;i=i+1){sum=0;for(j=1;j<=n;j=j+1){sum=sum+dmat[j][i]*amat[j][nvl]}work[i]=sum}l1=iwzv;for(i=1;i<=n;i=i+1){work[l1+i]=0}for(j=nact+1;j<=n;j=j+1){for(i=1;i<=n;i=i+1){work[l1+i]=work[l1+i]+dmat[i][j]*work[j]}}t1inf=true;for(i=nact;i>=1;i=i-1){sum=work[i];l=iwrm+i*(i+3)/2;l1=l-i;for(j=i+1;j<=nact;j=j+1){sum=sum-work[l]*work[iwrv+j];l=l+j}sum=sum/work[l1];work[iwrv+i]=sum;if(iact[i]<meq){break}if(sum<0){break}t1inf=false;it1=i}if(!t1inf){t1=work[iwuv+it1]/work[iwrv+it1];for(i=1;i<=nact;i=i+1){if(iact[i]<meq){break}if(work[iwrv+i]<0){break}temp=work[iwuv+i]/work[iwrv+i];if(temp<t1){t1=temp;it1=i}}}sum=0;for(i=iwzv+1;i<=iwzv+n;i=i+1){sum=sum+work[i]*work[i]}if(Math.abs(sum)<=vsmall){if(t1inf){ierr[1]=1;return 999}else{for(i=1;i<=nact;i=i+1){work[iwuv+i]=work[iwuv+i]-t1*work[iwrv+i]}work[iwuv+nact+1]=work[iwuv+nact+1]+t1;return 700}}else{sum=0;for(i=1;i<=n;i=i+1){sum=sum+work[iwzv+i]*amat[i][nvl]}tt=-work[iwsv+nvl]/sum;t2min=true;if(!t1inf){if(t1<tt){tt=t1;t2min=false}}for(i=1;i<=n;i=i+1){sol[i]=sol[i]+tt*work[iwzv+i];if(Math.abs(sol[i])<vsmall){sol[i]=0}}crval[1]=crval[1]+tt*sum*(tt/2+work[iwuv+nact+1]);for(i=1;i<=nact;i=i+1){work[iwuv+i]=work[iwuv+i]-tt*work[iwrv+i]}work[iwuv+nact+1]=work[iwuv+nact+1]+tt;if(t2min){nact=nact+1;iact[nact]=nvl;l=iwrm+(nact-1)*nact/2+1;for(i=1;i<=nact-1;i=i+1){work[l]=work[i];l=l+1}if(nact===n){work[l]=work[n]}else{for(i=n;i>=nact+1;i=i-1){if(work[i]===0){break}gc=Math.max(Math.abs(work[i-1]),Math.abs(work[i]));gs=Math.min(Math.abs(work[i-1]),Math.abs(work[i]));if(work[i-1]>=0){temp=Math.abs(gc*Math.sqrt(1+gs*gs/(gc*gc)))}else{temp=-Math.abs(gc*Math.sqrt(1+gs*gs/(gc*gc)))}gc=work[i-1]/temp;gs=work[i]/temp;if(gc===1){break}if(gc===0){work[i-1]=gs*temp;for(j=1;j<=n;j=j+1){temp=dmat[j][i-1];dmat[j][i-1]=dmat[j][i];dmat[j][i]=temp}}else{work[i-1]=temp;nu=gs/(1+gc);for(j=1;j<=n;j=j+1){temp=gc*dmat[j][i-1]+gs*dmat[j][i];dmat[j][i]=nu*(dmat[j][i-1]+temp)-dmat[j][i];dmat[j][i-1]=temp}}}work[l]=work[nact]}}else{sum=-bvec[nvl];for(j=1;j<=n;j=j+1){sum=sum+sol[j]*amat[j][nvl]}if(nvl>meq){work[iwsv+nvl]=sum}else{work[iwsv+nvl]=-Math.abs(sum);if(sum>0){for(j=1;j<=n;j=j+1){amat[j][nvl]=-amat[j][nvl]}bvec[nvl]=-bvec[nvl]}}return 700}}return 0}function fn_goto_797(){l=iwrm+it1*(it1+1)/2+1;l1=l+it1;if(work[l1]===0){return 798}gc=Math.max(Math.abs(work[l1-1]),Math.abs(work[l1]));gs=Math.min(Math.abs(work[l1-1]),Math.abs(work[l1]));if(work[l1-1]>=0){temp=Math.abs(gc*Math.sqrt(1+gs*gs/(gc*gc)))}else{temp=-Math.abs(gc*Math.sqrt(1+gs*gs/(gc*gc)))}gc=work[l1-1]/temp;gs=work[l1]/temp;if(gc===1){return 798}if(gc===0){for(i=it1+1;i<=nact;i=i+1){temp=work[l1-1];work[l1-1]=work[l1];work[l1]=temp;l1=l1+i}for(i=1;i<=n;i=i+1){temp=dmat[i][it1];dmat[i][it1]=dmat[i][it1+1];dmat[i][it1+1]=temp}}else{nu=gs/(1+gc);for(i=it1+1;i<=nact;i=i+1){temp=gc*work[l1-1]+gs*work[l1];work[l1]=nu*(work[l1-1]+temp)-work[l1];work[l1-1]=temp;l1=l1+i}for(i=1;i<=n;i=i+1){temp=gc*dmat[i][it1]+gs*dmat[i][it1+1];dmat[i][it1+1]=nu*(dmat[i][it1]+temp)-dmat[i][it1+1];dmat[i][it1]=temp}}return 0}function fn_goto_798(){l1=l-it1;for(i=1;i<=it1;i=i+1){work[l1]=work[l];l=l+1;l1=l1+1}work[iwuv+it1]=work[iwuv+it1+1];iact[it1]=iact[it1+1];it1=it1+1;if(it1<nact){return 797}return 0}function fn_goto_799(){work[iwuv+nact]=work[iwuv+nact+1];work[iwuv+nact+1]=0;iact[nact]=0;nact=nact-1;iter[2]=iter[2]+1;return 0}go=0;while(true){go=fn_goto_50();if(go===999){return}while(true){go=fn_goto_55();if(go===0){break}if(go===999){return}if(go===700){if(it1===nact){fn_goto_799()}else{while(true){fn_goto_797();go=fn_goto_798();if(go!==797){break}}fn_goto_799()}}}}}function solveQP(Dmat,dvec,Amat,bvec,meq,factorized){Dmat=base0to1(Dmat);dvec=base0to1(dvec);Amat=base0to1(Amat);var i,n,q,nact,r,crval=[],iact=[],sol=[],work=[],iter=[],message;meq=meq||0;factorized=factorized?base0to1(factorized):[undefined,0];bvec=bvec?base0to1(bvec):[];n=Dmat.length-1;q=Amat[1].length-1;if(!bvec){for(i=1;i<=q;i=i+1){bvec[i]=0}}for(i=1;i<=q;i=i+1){iact[i]=0}nact=0;r=Math.min(n,q);for(i=1;i<=n;i=i+1){sol[i]=0}crval[1]=0;for(i=1;i<=2*n+r*(r+5)/2+2*q+1;i=i+1){work[i]=0}for(i=1;i<=2;i=i+1){iter[i]=0}qpgen2(Dmat,dvec,n,n,sol,crval,Amat,bvec,n,q,meq,iact,nact,iter,work,factorized);message="";if(factorized[1]===1){message="constraints are inconsistent, no solution!"}if(factorized[1]===2){message="matrix D in quadratic function is not positive definite!"}return{solution:base1to0(sol),value:base1to0(crval),unconstrained_solution:base1to0(dvec),iterations:base1to0(iter),iact:base1to0(iact),message:message}}exports.solveQP=solveQP})(numeric);numeric.svd=function svd(A){var temp;var prec=numeric.epsilon;var tolerance=1e-64/prec;var itmax=50;var c=0;var i=0;var j=0;var k=0;var l=0;var u=numeric.clone(A);var m=u.length;var n=u[0].length;if(m<n)throw"Need more rows than columns";var e=new Array(n);var q=new Array(n);for(i=0;i<n;i++)e[i]=q[i]=0;var v=numeric.rep([n,n],0);function pythag(a,b){a=Math.abs(a);b=Math.abs(b);if(a>b)return a*Math.sqrt(1+b*b/a/a);else if(b==0)return a;return b*Math.sqrt(1+a*a/b/b)}var f=0;var g=0;var h=0;var x=0;var y=0;var z=0;var s=0;for(i=0;i<n;i++){e[i]=g;s=0;l=i+1;for(j=i;j<m;j++)s+=u[j][i]*u[j][i];if(s<=tolerance)g=0;else{f=u[i][i];g=Math.sqrt(s);if(f>=0)g=-g;h=f*g-s;u[i][i]=f-g;for(j=l;j<n;j++){s=0;for(k=i;k<m;k++)s+=u[k][i]*u[k][j];f=s/h;for(k=i;k<m;k++)u[k][j]+=f*u[k][i]}}q[i]=g;s=0;for(j=l;j<n;j++)s=s+u[i][j]*u[i][j];if(s<=tolerance)g=0;else{f=u[i][i+1];g=Math.sqrt(s);if(f>=0)g=-g;h=f*g-s;u[i][i+1]=f-g;for(j=l;j<n;j++)e[j]=u[i][j]/h;for(j=l;j<m;j++){s=0;for(k=l;k<n;k++)s+=u[j][k]*u[i][k];for(k=l;k<n;k++)u[j][k]+=s*e[k]}}y=Math.abs(q[i])+Math.abs(e[i]);if(y>x)x=y}for(i=n-1;i!=-1;i+=-1){if(g!=0){h=g*u[i][i+1];for(j=l;j<n;j++)v[j][i]=u[i][j]/h;for(j=l;j<n;j++){s=0;for(k=l;k<n;k++)s+=u[i][k]*v[k][j];for(k=l;k<n;k++)v[k][j]+=s*v[k][i]}}for(j=l;j<n;j++){v[i][j]=0;v[j][i]=0}v[i][i]=1;g=e[i];l=i}for(i=n-1;i!=-1;i+=-1){l=i+1;g=q[i];for(j=l;j<n;j++)u[i][j]=0;if(g!=0){h=u[i][i]*g;for(j=l;j<n;j++){s=0;for(k=l;k<m;k++)s+=u[k][i]*u[k][j];f=s/h;for(k=i;k<m;k++)u[k][j]+=f*u[k][i]}for(j=i;j<m;j++)u[j][i]=u[j][i]/g}else for(j=i;j<m;j++)u[j][i]=0;u[i][i]+=1}prec=prec*x;for(k=n-1;k!=-1;k+=-1){for(var iteration=0;iteration<itmax;iteration++){var test_convergence=false;for(l=k;l!=-1;l+=-1){
if(Math.abs(e[l])<=prec){test_convergence=true;break}if(Math.abs(q[l-1])<=prec)break}if(!test_convergence){c=0;s=1;var l1=l-1;for(i=l;i<k+1;i++){f=s*e[i];e[i]=c*e[i];if(Math.abs(f)<=prec)break;g=q[i];h=pythag(f,g);q[i]=h;c=g/h;s=-f/h;for(j=0;j<m;j++){y=u[j][l1];z=u[j][i];u[j][l1]=y*c+z*s;u[j][i]=-y*s+z*c}}}z=q[k];if(l==k){if(z<0){q[k]=-z;for(j=0;j<n;j++)v[j][k]=-v[j][k]}break}if(iteration>=itmax-1)throw"Error: no convergence.";x=q[l];y=q[k-1];g=e[k-1];h=e[k];f=((y-z)*(y+z)+(g-h)*(g+h))/(2*h*y);g=pythag(f,1);if(f<0)f=((x-z)*(x+z)+h*(y/(f-g)-h))/x;else f=((x-z)*(x+z)+h*(y/(f+g)-h))/x;c=1;s=1;for(i=l+1;i<k+1;i++){g=e[i];y=q[i];h=s*g;g=c*g;z=pythag(f,h);e[i-1]=z;c=f/z;s=h/z;f=x*c+g*s;g=-x*s+g*c;h=y*s;y=y*c;for(j=0;j<n;j++){x=v[j][i-1];z=v[j][i];v[j][i-1]=x*c+z*s;v[j][i]=-x*s+z*c}z=pythag(f,h);q[i-1]=z;c=f/z;s=h/z;f=c*g+s*y;x=-s*g+c*y;for(j=0;j<m;j++){y=u[j][i-1];z=u[j][i];u[j][i-1]=y*c+z*s;u[j][i]=-y*s+z*c}}e[l]=0;e[k]=f;q[k]=x}}for(i=0;i<q.length;i++)if(q[i]<prec)q[i]=0;for(i=0;i<n;i++){for(j=i-1;j>=0;j--){if(q[j]<q[i]){c=q[j];q[j]=q[i];q[i]=c;for(k=0;k<u.length;k++){temp=u[k][i];u[k][i]=u[k][j];u[k][j]=temp}for(k=0;k<v.length;k++){temp=v[k][i];v[k][i]=v[k][j];v[k][j]=temp}i=j}}}return{U:u,S:q,V:v}}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}]},{},[2])(2)});