UNPKG

document.js

Version:

General purpose ODM supporting memory and mongo database adapters

2 lines 43.6 kB
!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.model=t()}}(function(){var t;return function t(e,n,r){function i(s,u){if(!n[s]){if(!e[s]){var a="function"==typeof require&&require;if(!u&&a)return a(s,!0);if(o)return o(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var l=n[s]={exports:{}};e[s][0].call(l.exports,function(t){var n=e[s][1][t];return i(n?n:t)},l,l.exports,t,e,n,r)}return n[s].exports}for(var o="function"==typeof require&&require,s=0;s<r.length;s++)i(r[s]);return i}({1:[function(t,e,n){t("progenitor.js")();var r=function(t){t&&t()};Adapter=Object.progeny("Adapter",{init:function(t){this.modelClass=t}},{classMethods:{connect:r,clear:r,disconnect:r}}),e.exports=Adapter},{"progenitor.js":19}],2:[function(t,e,n){function r(t){return!isNaN(parseFloat(t))&&isFinite(t)}function i(){this.loaded&&(null===this.count?this.RSVP.error.call(this):this.RSVP.success.call(this,this.count))}t("progenitor.js")();var o=function(){};Count=Object.progeny("Count",{init:function(t){this.relation=t,this.count=null,this.loaded=!1,this.RSVP={success:o,error:o}},kept:function(t){this.count=r(t)?t:null,this.loaded=!0,i.call(this)},then:function(t,e){this.RSVP.success=t||o,this.RSVP.error=e||o,i.call(this)}}),e.exports=Count},{"progenitor.js":19}],3:[function(t,e,n){function r(t){var e=t.id||t._id;this.persisted=!1,e?Document.Adapter.ids.isValid(e)?this.id=Document.Adapter.ids.next(e):"ObjectID"===e._bsontype?this.id=e:this.id=e.toString():null===e?this.id=null:this.id=Document.Adapter.ids.next(),this.set(u({_id:this.id},o(t,["id","_id"]))),this._changes={}}function i(t){var e=new this({_id:null});return this.adapter()[t].call(this.adapter(),function(t){t=e.class.shortToLong(t),e.kept(t)}),e}function o(t,e){var n={};for(var r in t)e.indexOf(r)==-1&&(n[r]=t[r]);return n}function s(t,e){if(!e||"object"!=typeof e)return e;var n={};return Object.keys(e).forEach(function(r){n[t[r]||r]=e[r]}),n}t("progenitor.js")();var u=t("extend"),a=t("i")(),c={},l=function(){};Document=Object.progeny("Document",{init:function(t,e){this._data={},this._changes={},r.call(this,t),this.relation=e,this.RSVP={success:l,error:l},this.loaded=!1},isValid:function(){var t,e,n=!0,r=this.class.validate||{},i=r.presence||[],o=r.format||{},s=Object.keys(o),u=r.custom||[];for(t=0;t<i.length;++t)if(!this.get(i[t])){n=!1;break}if(!n)return!1;for(t=0;t<s.length;++t)if(e=s[t],!o[e].test(this.get(e))){n=!1;break}for(t=0;t<u.length;++t)if(!u[t].call(this)){n=!1;break}return n},get:function(t){if("id"==t)return this.id;if(this.class.belongsTo.indexOf(t)>=0){var e=this.get(a.foreign_key(t));return e&&Document[a.classify(t)].find(e)}return this.class.namedFields[t]?t in this._data?this._data[t]:null:"function"==typeof this[t]?this[t].call(this):void 0},set:function(){var t,e,n,r=arguments[0],i=2==arguments.length,o={};if(arguments[0]){i&&(r={},r[arguments[0]]=arguments[1]);for(t in r){var s=this.class.belongsTo.indexOf(t)>=0;if(s){var u=a.foreign_key(t);r[u]=r[t].id,t=u}(s||this.class.namedFields[t])&&(n="undefined"==typeof r[t]?null:r[t],(e=this.get(t))!=n&&(this._changes[t]=[e,n]),"_id"===t&&(this.id=n),this._data[t]=o[t]=n)}return i?o[arguments[0]]:o}},changedAttributes:function(){return u({},this._changes)},save:function(){var t=this,e={},n=!this.isValid(),r=!Object.keys(this.changedAttributes()).length;return n||r&&this.persisted?(this.loaded=!0,this):(this.loaded=!1,this.relation=new Document.Relation(this.class,this),this.persisted?(Object.keys(this._changes).forEach(function(n){e[n]=t.get(n)}),this.relation.update(e)):((this.class.beforeCreate||[]).forEach(function(e){e.call(t)}),this.relation.create(u({},this._data))))},update:function(){return this.set.apply(this,arguments),this.save()},destroy:function(){var t=this;return this.loaded=!1,this.class.adapter().remove({_id:this.id},function(e){t.loaded=!0,t.kept(t.isDestroyed=!!e)}),this},kept:function(t){this.set(t),this.loaded=!0,(this.RSVP.wasKept=!!t)?(this._changes={},this.persisted=!0,this.RSVP.success(this)):this.RSVP.error()},then:function(t,e){this.RSVP.success=t||l,this.RSVP.error=e||l,this.loaded&&(this.RSVP.wasKept?this.RSVP.success(this):this.RSVP.error())},asJSON:function(){for(var t,e={id:this.id.toString(),createdAt:this.get("createdAt"),updatedAt:this.get("updatedAt")},n=this.class.allow||[],r=0;r<n.length;++r){if(t=n[r],/(.+)_id$/.test(t)){var i=this.get(t),o=t.slice(0,-3);i=i?i.toString():i,e[o]||(e[o]={id:i})}else i=this.get(t),i="function"==typeof(i&&i.asJSON)?i.asJSON():i;e[t]=i}return e}},{classMethods:{namedFields:null,shortFields:null,defaultFields:{ObjectID:{_id:"_id"},Date:{createdAt:"cT",updatedAt:"uT"}},adapter:function(){return c[this.className]||(c[this.className]=new Document.Adapter(this))},inherited:function(t){var e;this[t.className]=t,t.fields||(t.fields={}),t.belongsTo||(t.belongsTo=[]),t.fields.ObjectID=u({},this.defaultFields.ObjectID,t.fields.ObjectID),t.fields.Date=u({},this.defaultFields.Date,t.fields.Date),t.namedFields={},t.shortFields={},t.belongsTo.forEach(function(e){t.fields.ObjectID[a.foreign_key(e)]=e.slice(0,1)+"_id"});for(var n in t.fields)for(var r in e=t.fields[n])t.namedFields[r]=e[r],t.shortFields[e[r]]=r},find:function(t){var e;if(!t||"string"!=typeof t&&"ObjectID"!==t._bsontype)return new Document.Relation(this).find(t);this.loaded=!1,t=Document.Adapter.ids.isValid(t)?Document.Adapter.ids.next(t):t;var n=new Document.Relation(this,e=new this({_id:t}));return(e.relation=n).find()},count:function(){return new Document.Relation(this).count()},first:function(){return i.call(this,"first")},last:function(){return i.call(this,"last")},shortToLong:function(t){return s.call(this,this.shortFields,t)},longToShort:function(t){return s.call(this,this.namedFields,t)}}}),u(Document,{Relation:t("./relation"),Count:t("./count")}),e.exports=function(e){if(e=e||{},e.store||(e.store="memory"),"memory mongo".split(" ").indexOf(e.store)==-1)throw new Error("Only the `memory` and `mongo` stores are available.");return t("./memory_adapter"),t("./mongo_adapter"),Document.Adapter=t("./"+e.store+"_adapter"),Document}},{"./count":2,"./memory_adapter":4,"./mongo_adapter":5,"./relation":6,extend:12,i:14,"progenitor.js":19}],4:[function(t,e,n){var r=function(){},i=[],o=t("extend"),s=t("base-62.js"),u=t("./adapter");MemoryAdapter=u.progeny("MemoryAdapter",{init:function(){this._data=[]},create:function(t,e){this._data.push(t),i.push(this),e(t)},update:function(t,e,n){var r=0;this.where(t,function(t){r=t.length,t.forEach(function(t){o(t,e)}),n(r||null)})},count:function(t){t(this._data.length)},first:function(t){t(this._data[0]||null)},last:function(t){t(this._data[this._data.length-1]||null)},where:function(t,e){if(!t)return void(e&&e(null));var n=Object.keys(t);n.length||e(this.all()),e(this._data.filter(function(e){var r=!0;return n.forEach(function(n){Array.isArray(e[n])?e[n].indexOf(t[n])==-1&&(r=!1):e[n]!=t[n]&&(r=!1)}),r}))},all:function(){return this._data.slice()},remove:function(t,e){this._data=this._data.filter(function(e){return e._id!==t._id}),e(!0)},clear:function(t){this._data=[],t(!0)}},{classMethods:{clear:function(){i.forEach(function(t){t.clear(r)})},ids:{isValid:function(t){return!!t},next:function(t){return t||s.token()}}}}),e.exports=MemoryAdapter},{"./adapter":1,"base-62.js":7,extend:12}],5:[function(t,e,n){(function(n){var r=t("fs"),i=t("i")(),o=function(){return t("mongodb").ObjectID},s=t("./adapter");MongoAdapter=s.progeny("MongoAdapter",{collection:function(){if(this._collection)return this._collection;var t=this.class.connection;if(!t)throw new Error("MongoDB not connected");return this._collection=t.collection(i.tableize(this.modelClass.className))},create:function(t,e){this.collection().insertOne(t,function(n,r){e(n?null:t)})},update:function(t,e,n){var r=function(t,e){n(t?null:e)};t._id?this.collection().updateOne(t,{$set:e},r):this.collection().updateMany(t,{$set:e},r)},count:function(t){this.collection().count(function(e,n){t(e?null:n)})},first:function(t){this.collection().find({}).limit(1).sort({_id:1}).toArray(function(e,n){t(e?null:n[0]||null)})},last:function(t){this.collection().find({}).limit(1).sort({_id:-1}).toArray(function(e,n){t(e?null:n[0]||null)})},where:function(t,e){return t?void this.collection().find(t).toArray(function(t,n){e(t?null:n)}):void(e&&e(null))},remove:function(t,e){this.collection().deleteMany(t,function(n,r){e(n?null:t)})},clear:function(t){this.collection().remove({},t)}},{classMethods:{connection:null,connect:function(e){var i=this,o=JSON.parse(r.readFileSync(n.cwd()+"/config/mongo.json"))[n.env.NODE_ENV];t("mongodb").MongoClient.connect(o,function(t,n){if(t)throw console.warn("Error connecting to MongoDB error: ",t,"<---"),new Error("DB connect error",t);i.connection=n,e()})},disconnect:function(t){this.connection.close(),t()},ids:{isValid:function(t){return o().isValid(t)},next:function(t){return o()(t)}}}}),e.exports=MongoAdapter}).call(this,t("_process"))},{"./adapter":1,_process:11,fs:10,i:14,mongodb:void 0}],6:[function(t,e,n){function r(t){return!isNaN(parseFloat(t))&&isFinite(t)}function i(){this.loaded&&(this.RSVP.wasKept?this.RSVP.success.call(this,this.RSVP.wasKept):this.RSVP.error.call(this))}RelationError=Error.progeny("RelationError",{init:function(t){this.name=this.className,this.message=t}});var o=t("extend"),s=function(){};Relation=Object.progeny("Relation",{init:function(t,e){this.modelClass=t,e?this.model=e:this._query={},this.loaded=!1,this.items=null,this.size=null,this.RSVP={success:s,error:s,wasKept:!1}},kept:function(t){this.loaded=!0,this.RSVP.wasKept=t,this.items=this.size=null,Array.isArray(t)?this.items=t:r(t)&&(this.size=t),i.call(this)},then:function(t,e){this.RSVP.success=t||s,this.RSVP.error=e||s,i.call(this)},query:function(){return this._query?o({},this._query):null},count:function(){var t=this,e=new Document.Count(this);return this.modelClass.adapter().count(function(n){t.loaded=!0,e.kept(n)}),e},find:function(t){var e=this;if(this.loaded=!1,this.model)return this.modelClass.adapter().where({_id:this.model.id},function(t){e.loaded=!0,t=Array.isArray(t)?e.model.class.shortToLong(t[0]):t,e.model.kept(t)}),this.model;var n=this.modelClass;return t=n.longToShort(t),this.modelClass.adapter().where(t,function(t){Array.isArray(t)&&(t=t.map(function(t){var e=new n({_id:null});return e.kept(n.shortToLong(t)),e})),e.kept(t)}),this},asJSON:function(){return this.items?this.items.map(function(t){return t.asJSON()}):r(this.size)?this.size:null},create:function(t){var e=this;if(this.loaded=!1,!this.model)throw new RelationError("Non-model creates are not supported.");return t=o(t,{createdAt:new Date,updatedAt:new Date}),t=this.modelClass.longToShort(t),this.modelClass.adapter().create(t,function(t){e.loaded=!0,t=e.model.class.shortToLong(t),e.model.kept(t)}),this.model},update:function(t){var e=this;return this.loaded=!1,t=o(t,{updatedAt:new Date}),t=this.modelClass.longToShort(t),this.model?(this.modelClass.adapter().update({_id:this.model.id},t,function(t){e.loaded=!0,e.model.kept(t)}),this.model):(this.modelClass.adapter().update(this._query,t,function(t){e.kept(t)}),this)}}),e.exports=Relation},{extend:12}],7:[function(e,n,r){(function(i){!function(e){if("object"==typeof r&&"undefined"!=typeof n)n.exports=e();else if("function"==typeof t&&t.amd)t([],e);else{var o;o="undefined"!=typeof window?window:"undefined"!=typeof i?i:"undefined"!=typeof self?self:this,o.base62=e()}}(function(){var t;return function t(n,r,i){function o(u,a){if(!r[u]){if(!n[u]){var c="function"==typeof e&&e;if(!a&&c)return c(u,!0);if(s)return s(u,!0);var l=new Error("Cannot find module '"+u+"'");throw l.code="MODULE_NOT_FOUND",l}var f=r[u]={exports:{}};n[u][0].call(f.exports,function(t){var e=n[u][1][t];return o(e?e:t)},f,f.exports,t,n,r,i)}return r[u].exports}for(var s="function"==typeof e&&e,u=0;u<i.length;u++)o(i[u]);return o}({1:[function(t,e,n){function r(){return d.encode(f())}function i(t){var e=c(t,10,16);return e?e:null}function o(t){return c(t.toString().toLowerCase(),16,10)}function s(t,e,n){for(var r=[],i=Math.max(t.length,e.length),o=0,s=0;s<i||o;){var u=s<t.length?t[s]:0,a=s<e.length?e[s]:0,c=o+u+a;r.push(c%n),o=Math.floor(c/n),s++}return r}function u(t,e,n){if(t<0)return null;if(0==t)return[];for(var r=[],i=e;;){if(1&t&&(r=s(r,i,n)),t>>=1,0===t)break;i=s(i,i,n)}return r}function a(t,e){for(var n=t.split(""),r=[],i=n.length-1;i>=0;i--){var o=parseInt(n[i],e);if(isNaN(o))return null;r.push(o)}return r}function c(t,e,n){var r=a(t,e);if(null===r)return null;for(var i=[],o=[1],c=0;c<r.length;c++)r[c]&&(i=s(i,u(r[c],o,n),n)),o=u(e,o,n);for(var l="",c=i.length-1;c>=0;c--)l+=i[c].toString(n);return l}var l=t("big.js"),f=t("random.js").randomInt,h="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",d={encode:function(t){var e=t;t=t.toString();try{l(t)}catch(n){console.log("Big init error on ",e,t)}var n=l(t),r="";if("0"==t)return"0";for(;n.gt(0);)r=h[n.mod(62).toFixed()]+r,n=l(n.div(62).toFixed(2).split(".")[0]);return r},decode:function(t){t=t.toString();var e=l(0),n=l(62),r=t.split("").reverse();return r.forEach(function(t,r){e=e.plus(n.pow(r).times(h.indexOf(t)))}),e.toFixed()},encodeHex:function(t){return d.encode(o(t.toString()))},decodeHex:function(t){return i(d.decode(t))},short:function(t){return t?d.encodeHex(t):null},id:function(t){return t?d.decodeHex(t):null},token:function(){return r()+r()+r()+r()+r()}};e.exports=d},{"big.js":2,"random.js":3}],2:[function(e,n,r){!function(e){"use strict";function r(){function t(e){var n=this;return n instanceof t?(e instanceof t?(n.s=e.s,n.e=e.e,n.c=e.c.slice()):o(n,e),void(n.constructor=t)):void 0===e?r():new t(e)}return t.prototype=g,t.DP=c,t.RM=l,t}function i(t,e,n){var r=t.constructor,i=e-(t=new r(t)).e,o=t.c;for(o.length>++e&&s(t,i,r.RM),o[0]?n?i=e:(o=t.c,i=t.e+i+1):++i;o.length<i;o.push(0));return i=t.e,1===n||n&&(e<=i||i<=d)?(t.s<0&&o[0]?"-":"")+(o.length>1?o[0]+"."+o.join("").slice(1):o[0])+(i<0?"e":"e+")+i:t.toString()}function o(t,e){var n,r,i;for(0===e&&1/e<0?e="-0":m.test(e+="")||u(NaN),t.s="-"==e.charAt(0)?(e=e.slice(1),-1):1,(n=e.indexOf("."))>-1&&(e=e.replace(".","")),(r=e.search(/e/i))>0?(n<0&&(n=r),n+=+e.slice(r+1),e=e.substring(0,r)):n<0&&(n=e.length),r=0;"0"==e.charAt(r);r++);if(r==(i=e.length))t.c=[t.e=0];else{for(;"0"==e.charAt(--i););for(t.e=n-r-1,t.c=[],n=0;r<=i;t.c[n++]=+e.charAt(r++));}return t}function s(t,e,n,r){var i,o=t.c,s=t.e+e+1;if(1===n?r=o[s]>=5:2===n?r=o[s]>5||5==o[s]&&(r||s<0||o[s+1]!==i||1&o[s-1]):3===n?r=r||o[s]!==i||s<0:(r=!1,0!==n&&u("!Big.RM!")),s<1||!o[0])r?(t.e=-e,t.c=[1]):t.c=[t.e=0];else{if(o.length=s--,r)for(;++o[s]>9;)o[s]=0,s--||(++t.e,o.unshift(1));for(s=o.length;!o[--s];o.pop());}return t}function u(t){var e=new Error(t);throw e.name="BigError",e}var a,c=20,l=1,f=1e6,h=1e6,d=-7,p=21,g={},m=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;g.abs=function(){var t=new this.constructor(this);return t.s=1,t},g.cmp=function(t){var e,n=this,r=n.c,i=(t=new n.constructor(t)).c,o=n.s,s=t.s,u=n.e,a=t.e;if(!r[0]||!i[0])return r[0]?o:i[0]?-s:0;if(o!=s)return o;if(e=o<0,u!=a)return u>a^e?1:-1;for(o=-1,s=(u=r.length)<(a=i.length)?u:a;++o<s;)if(r[o]!=i[o])return r[o]>i[o]^e?1:-1;return u==a?0:u>a^e?1:-1},g.div=function(t){var e=this,n=e.constructor,r=e.c,i=(t=new n(t)).c,o=e.s==t.s?1:-1,a=n.DP;if((a!==~~a||a<0||a>f)&&u("!Big.DP!"),!r[0]||!i[0])return r[0]==i[0]&&u(NaN),i[0]||u(o/0),new n(0*o);var c,l,h,d,p,g,m=i.slice(),v=c=i.length,y=r.length,b=r.slice(0,c),w=b.length,x=t,$=x.c=[],_=0,M=a+(x.e=e.e-t.e)+1;for(x.s=o,o=M<0?0:M,m.unshift(0);w++<c;b.push(0));do{for(h=0;h<10;h++){if(c!=(w=b.length))d=c>w?1:-1;else for(p=-1,d=0;++p<c;)if(i[p]!=b[p]){d=i[p]>b[p]?1:-1;break}if(!(d<0))break;for(l=w==c?i:m;w;){if(b[--w]<l[w]){for(p=w;p&&!b[--p];b[p]=9);--b[p],b[w]+=10}b[w]-=l[w]}for(;!b[0];b.shift());}$[_++]=d?h:++h,b[0]&&d?b[w]=r[v]||0:b=[r[v]]}while((v++<y||b[0]!==g)&&o--);return $[0]||1==_||($.shift(),x.e--),_>M&&s(x,a,n.RM,b[0]!==g),x},g.eq=function(t){return!this.cmp(t)},g.gt=function(t){return this.cmp(t)>0},g.gte=function(t){return this.cmp(t)>-1},g.lt=function(t){return this.cmp(t)<0},g.lte=function(t){return this.cmp(t)<1},g.sub=g.minus=function(t){var e,n,r,i,o=this,s=o.constructor,u=o.s,a=(t=new s(t)).s;if(u!=a)return t.s=-a,o.plus(t);var c=o.c.slice(),l=o.e,f=t.c,h=t.e;if(!c[0]||!f[0])return f[0]?(t.s=-a,t):new s(c[0]?o:0);if(u=l-h){for((i=u<0)?(u=-u,r=c):(h=l,r=f),r.reverse(),a=u;a--;r.push(0));r.reverse()}else for(n=((i=c.length<f.length)?c:f).length,u=a=0;a<n;a++)if(c[a]!=f[a]){i=c[a]<f[a];break}if(i&&(r=c,c=f,f=r,t.s=-t.s),(a=(n=f.length)-(e=c.length))>0)for(;a--;c[e++]=0);for(a=e;n>u;){if(c[--n]<f[n]){for(e=n;e&&!c[--e];c[e]=9);--c[e],c[n]+=10}c[n]-=f[n]}for(;0===c[--a];c.pop());for(;0===c[0];)c.shift(),--h;return c[0]||(t.s=1,c=[h=0]),t.c=c,t.e=h,t},g.mod=function(t){var e,n=this,r=n.constructor,i=n.s,o=(t=new r(t)).s;return t.c[0]||u(NaN),n.s=t.s=1,e=1==t.cmp(n),n.s=i,t.s=o,e?new r(n):(i=r.DP,o=r.RM,r.DP=r.RM=0,n=n.div(t),r.DP=i,r.RM=o,this.minus(n.times(t)))},g.add=g.plus=function(t){var e,n=this,r=n.constructor,i=n.s,o=(t=new r(t)).s;if(i!=o)return t.s=-o,n.minus(t);var s=n.e,u=n.c,a=t.e,c=t.c;if(!u[0]||!c[0])return c[0]?t:new r(u[0]?n:0*i);if(u=u.slice(),i=s-a){for(i>0?(a=s,e=c):(i=-i,e=u),e.reverse();i--;e.push(0));e.reverse()}for(u.length-c.length<0&&(e=c,c=u,u=e),i=c.length,o=0;i;)o=(u[--i]=u[i]+c[i]+o)/10|0,u[i]%=10;for(o&&(u.unshift(o),++a),i=u.length;0===u[--i];u.pop());return t.c=u,t.e=a,t},g.pow=function(t){var e=this,n=new e.constructor(1),r=n,i=t<0;for((t!==~~t||t<-h||t>h)&&u("!pow!"),t=i?-t:t;1&t&&(r=r.times(e)),t>>=1,t;)e=e.times(e);return i?n.div(r):r},g.round=function(t,e){var n=this,r=n.constructor;return null==t?t=0:(t!==~~t||t<0||t>f)&&u("!round!"),s(n=new r(n),t,null==e?r.RM:e),n},g.sqrt=function(){var t,e,n,r=this,i=r.constructor,o=r.c,a=r.s,c=r.e,l=new i("0.5");if(!o[0])return new i(r);a<0&&u(NaN),a=Math.sqrt(r.toString()),0===a||a===1/0?(t=o.join(""),t.length+c&1||(t+="0"),e=new i(Math.sqrt(t).toString()),e.e=((c+1)/2|0)-(c<0||1&c)):e=new i(a.toString()),a=e.e+(i.DP+=4);do n=e,e=l.times(n.plus(r.div(n)));while(n.c.slice(0,a).join("")!==e.c.slice(0,a).join(""));return s(e,i.DP-=4,i.RM),e},g.mul=g.times=function(t){var e,n=this,r=n.constructor,i=n.c,o=(t=new r(t)).c,s=i.length,u=o.length,a=n.e,c=t.e;if(t.s=n.s==t.s?1:-1,!i[0]||!o[0])return new r(0*t.s);for(t.e=a+c,s<u&&(e=i,i=o,o=e,c=s,s=u,u=c),e=new Array(c=s+u);c--;e[c]=0);for(a=u;a--;){for(u=0,c=s+a;c>a;)u=e[c]+o[a]*i[c-a-1]+u,e[c--]=u%10,u=u/10|0;e[c]=(e[c]+u)%10}for(u&&++t.e,e[0]||e.shift(),a=e.length;!e[--a];e.pop());return t.c=e,t},g.toString=g.valueOf=g.toJSON=function(){var t=this,e=t.e,n=t.c.join(""),r=n.length;if(e<=d||e>=p)n=n.charAt(0)+(r>1?"."+n.slice(1):"")+(e<0?"e":"e+")+e;else if(e<0){for(;++e;n="0"+n);n="0."+n}else if(e>0)if(++e>r)for(e-=r;e--;n+="0");else e<r&&(n=n.slice(0,e)+"."+n.slice(e));else r>1&&(n=n.charAt(0)+"."+n.slice(1));return t.s<0&&t.c[0]?"-"+n:n},g.toExponential=function(t){return null==t?t=this.c.length-1:(t!==~~t||t<0||t>f)&&u("!toExp!"),i(this,t,1)},g.toFixed=function(t){var e,n=this,r=d,o=p;return d=-(p=1/0),null==t?e=n.toString():t===~~t&&t>=0&&t<=f&&(e=i(n,n.e+t),n.s<0&&n.c[0]&&e.indexOf("-")<0&&(e="-"+e)),d=r,p=o,e||u("!toFix!"),e},g.toPrecision=function(t){return null==t?this.toString():((t!==~~t||t<1||t>f)&&u("!toPre!"),i(this,t-1,2))},a=r(),"function"==typeof t&&t.amd?t(function(){return a}):"undefined"!=typeof n&&n.exports?n.exports=a:e.Big=a}(this)},{}],3:[function(t,e,n){randomInt=function(t){if(void 0!==t&&null!==t||(t={}),void 0!==t.min&&null!==t||(t.min=0),void 0!==t.max&&null!==t||(t.max=4294967295),t.min>t.max){var e=t.min;t.min=t.max,t.max=e}return Math.floor(Math.random()*(t.max-t.min)+t.min)},randomFloat=function(t){return void 0!==t&&null!==t||(t={}),void 0!==t.min&&null!==t||(t.min=0),void 0!==t.max&&null!==t||(t.max=1),Math.random()*(t.max-t.min)+t.min},randomString=function(t){void 0!==t&&null!==t||(t={}),void 0!==t.length&&null!==t.length||(t.length=20),void 0!==t.set&&null!==t.set||(t.set="alphanum");var e;switch(t.set){case"alpha":e="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";break;case"alphanum":e="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";break;case"num":e="0123456789";break;case"hex":e="0123456789ABCDEF";break;case"custom":if(void 0===t.custom||null===t.custom)return console.error("can't generate a random string with custom set of characters if options.custom is null or undefined"),"";e=t.custom}for(var n="",r=0;r<t.length;r++){var i=randomInt({min:0,max:e.length});n+=e[i]}return n},e.exports.randomInt=randomInt,e.exports.randomFloat=randomFloat,e.exports.randomString=randomString},{}]},{},[1])(1)})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"big.js":8,"random.js":9}],8:[function(e,n,r){!function(e){"use strict";function r(){function t(e){var n=this;return n instanceof t?(e instanceof t?(n.s=e.s,n.e=e.e,n.c=e.c.slice()):o(n,e),void(n.constructor=t)):void 0===e?r():new t(e)}return t.prototype=g,t.DP=c,t.RM=l,t.E_NEG=d,t.E_POS=p,t}function i(t,e,n){var r=t.constructor,i=e-(t=new r(t)).e,o=t.c;for(o.length>++e&&s(t,i,r.RM),o[0]?n?i=e:(o=t.c,i=t.e+i+1):++i;o.length<i;o.push(0));return i=t.e,1===n||n&&(e<=i||i<=r.E_NEG)?(t.s<0&&o[0]?"-":"")+(o.length>1?o[0]+"."+o.join("").slice(1):o[0])+(i<0?"e":"e+")+i:t.toString()}function o(t,e){var n,r,i;for(0===e&&1/e<0?e="-0":m.test(e+="")||u(NaN),t.s="-"==e.charAt(0)?(e=e.slice(1),-1):1,(n=e.indexOf("."))>-1&&(e=e.replace(".","")),(r=e.search(/e/i))>0?(n<0&&(n=r),n+=+e.slice(r+1),e=e.substring(0,r)):n<0&&(n=e.length),r=0;"0"==e.charAt(r);r++);if(r==(i=e.length))t.c=[t.e=0];else{for(;"0"==e.charAt(--i););for(t.e=n-r-1,t.c=[],n=0;r<=i;t.c[n++]=+e.charAt(r++));}return t}function s(t,e,n,r){var i,o=t.c,s=t.e+e+1;if(1===n?r=o[s]>=5:2===n?r=o[s]>5||5==o[s]&&(r||s<0||o[s+1]!==i||1&o[s-1]):3===n?r=r||o[s]!==i||s<0:(r=!1,0!==n&&u("!Big.RM!")),s<1||!o[0])r?(t.e=-e,t.c=[1]):t.c=[t.e=0];else{if(o.length=s--,r)for(;++o[s]>9;)o[s]=0,s--||(++t.e,o.unshift(1));for(s=o.length;!o[--s];o.pop());}return t}function u(t){var e=new Error(t);throw e.name="BigError",e}var a,c=20,l=1,f=1e6,h=1e6,d=-7,p=21,g={},m=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;g.abs=function(){var t=new this.constructor(this);return t.s=1,t},g.cmp=function(t){var e,n=this,r=n.c,i=(t=new n.constructor(t)).c,o=n.s,s=t.s,u=n.e,a=t.e;if(!r[0]||!i[0])return r[0]?o:i[0]?-s:0;if(o!=s)return o;if(e=o<0,u!=a)return u>a^e?1:-1;for(o=-1,s=(u=r.length)<(a=i.length)?u:a;++o<s;)if(r[o]!=i[o])return r[o]>i[o]^e?1:-1;return u==a?0:u>a^e?1:-1},g.div=function(t){var e=this,n=e.constructor,r=e.c,i=(t=new n(t)).c,o=e.s==t.s?1:-1,a=n.DP;if((a!==~~a||a<0||a>f)&&u("!Big.DP!"),!r[0]||!i[0])return r[0]==i[0]&&u(NaN),i[0]||u(o/0),new n(0*o);var c,l,h,d,p,g,m=i.slice(),v=c=i.length,y=r.length,b=r.slice(0,c),w=b.length,x=t,$=x.c=[],_=0,M=a+(x.e=e.e-t.e)+1;for(x.s=o,o=M<0?0:M,m.unshift(0);w++<c;b.push(0));do{for(h=0;h<10;h++){if(c!=(w=b.length))d=c>w?1:-1;else for(p=-1,d=0;++p<c;)if(i[p]!=b[p]){d=i[p]>b[p]?1:-1;break}if(!(d<0))break;for(l=w==c?i:m;w;){if(b[--w]<l[w]){for(p=w;p&&!b[--p];b[p]=9);--b[p],b[w]+=10}b[w]-=l[w]}for(;!b[0];b.shift());}$[_++]=d?h:++h,b[0]&&d?b[w]=r[v]||0:b=[r[v]]}while((v++<y||b[0]!==g)&&o--);return $[0]||1==_||($.shift(),x.e--),_>M&&s(x,a,n.RM,b[0]!==g),x},g.eq=function(t){return!this.cmp(t)},g.gt=function(t){return this.cmp(t)>0},g.gte=function(t){return this.cmp(t)>-1},g.lt=function(t){return this.cmp(t)<0},g.lte=function(t){return this.cmp(t)<1},g.sub=g.minus=function(t){var e,n,r,i,o=this,s=o.constructor,u=o.s,a=(t=new s(t)).s;if(u!=a)return t.s=-a,o.plus(t);var c=o.c.slice(),l=o.e,f=t.c,h=t.e;if(!c[0]||!f[0])return f[0]?(t.s=-a,t):new s(c[0]?o:0);if(u=l-h){for((i=u<0)?(u=-u,r=c):(h=l,r=f),r.reverse(),a=u;a--;r.push(0));r.reverse()}else for(n=((i=c.length<f.length)?c:f).length,u=a=0;a<n;a++)if(c[a]!=f[a]){i=c[a]<f[a];break}if(i&&(r=c,c=f,f=r,t.s=-t.s),(a=(n=f.length)-(e=c.length))>0)for(;a--;c[e++]=0);for(a=e;n>u;){if(c[--n]<f[n]){for(e=n;e&&!c[--e];c[e]=9);--c[e],c[n]+=10}c[n]-=f[n]}for(;0===c[--a];c.pop());for(;0===c[0];)c.shift(),--h;return c[0]||(t.s=1,c=[h=0]),t.c=c,t.e=h,t},g.mod=function(t){var e,n=this,r=n.constructor,i=n.s,o=(t=new r(t)).s;return t.c[0]||u(NaN),n.s=t.s=1,e=1==t.cmp(n),n.s=i,t.s=o,e?new r(n):(i=r.DP,o=r.RM,r.DP=r.RM=0,n=n.div(t),r.DP=i,r.RM=o,this.minus(n.times(t)))},g.add=g.plus=function(t){var e,n=this,r=n.constructor,i=n.s,o=(t=new r(t)).s;if(i!=o)return t.s=-o,n.minus(t);var s=n.e,u=n.c,a=t.e,c=t.c;if(!u[0]||!c[0])return c[0]?t:new r(u[0]?n:0*i);if(u=u.slice(),i=s-a){for(i>0?(a=s,e=c):(i=-i,e=u),e.reverse();i--;e.push(0));e.reverse()}for(u.length-c.length<0&&(e=c,c=u,u=e),i=c.length,o=0;i;)o=(u[--i]=u[i]+c[i]+o)/10|0,u[i]%=10;for(o&&(u.unshift(o),++a),i=u.length;0===u[--i];u.pop());return t.c=u,t.e=a,t},g.pow=function(t){var e=this,n=new e.constructor(1),r=n,i=t<0;for((t!==~~t||t<-h||t>h)&&u("!pow!"),t=i?-t:t;1&t&&(r=r.times(e)),t>>=1,t;)e=e.times(e);return i?n.div(r):r},g.round=function(t,e){var n=this,r=n.constructor;return null==t?t=0:(t!==~~t||t<0||t>f)&&u("!round!"),s(n=new r(n),t,null==e?r.RM:e),n},g.sqrt=function(){var t,e,n,r=this,i=r.constructor,o=r.c,a=r.s,c=r.e,l=new i("0.5");if(!o[0])return new i(r);a<0&&u(NaN),a=Math.sqrt(r.toString()),0===a||a===1/0?(t=o.join(""),t.length+c&1||(t+="0"),e=new i(Math.sqrt(t).toString()),e.e=((c+1)/2|0)-(c<0||1&c)):e=new i(a.toString()),a=e.e+(i.DP+=4);do n=e,e=l.times(n.plus(r.div(n)));while(n.c.slice(0,a).join("")!==e.c.slice(0,a).join(""));return s(e,i.DP-=4,i.RM),e},g.mul=g.times=function(t){var e,n=this,r=n.constructor,i=n.c,o=(t=new r(t)).c,s=i.length,u=o.length,a=n.e,c=t.e;if(t.s=n.s==t.s?1:-1,!i[0]||!o[0])return new r(0*t.s);for(t.e=a+c,s<u&&(e=i,i=o,o=e,c=s,s=u,u=c),e=new Array(c=s+u);c--;e[c]=0);for(a=u;a--;){for(u=0,c=s+a;c>a;)u=e[c]+o[a]*i[c-a-1]+u,e[c--]=u%10,u=u/10|0;e[c]=(e[c]+u)%10}for(u&&++t.e,e[0]||e.shift(),a=e.length;!e[--a];e.pop());return t.c=e,t},g.toString=g.valueOf=g.toJSON=function(){var t=this,e=t.constructor,n=t.e,r=t.c.join(""),i=r.length;if(n<=e.E_NEG||n>=e.E_POS)r=r.charAt(0)+(i>1?"."+r.slice(1):"")+(n<0?"e":"e+")+n;else if(n<0){for(;++n;r="0"+r);r="0."+r}else if(n>0)if(++n>i)for(n-=i;n--;r+="0");else n<i&&(r=r.slice(0,n)+"."+r.slice(n));else i>1&&(r=r.charAt(0)+"."+r.slice(1));return t.s<0&&t.c[0]?"-"+r:r},g.toExponential=function(t){return null==t?t=this.c.length-1:(t!==~~t||t<0||t>f)&&u("!toExp!"),i(this,t,1)},g.toFixed=function(t){var e,n=this,r=n.constructor,o=r.E_NEG,s=r.E_POS;return r.E_NEG=-(r.E_POS=1/0),null==t?e=n.toString():t===~~t&&t>=0&&t<=f&&(e=i(n,n.e+t),n.s<0&&n.c[0]&&e.indexOf("-")<0&&(e="-"+e)),r.E_NEG=o,r.E_POS=s,e||u("!toFix!"),e},g.toPrecision=function(t){return null==t?this.toString():((t!==~~t||t<1||t>f)&&u("!toPre!"),i(this,t-1,2))},a=r(),"function"==typeof t&&t.amd?t(function(){return a}):"undefined"!=typeof n&&n.exports?n.exports=a:e.Big=a}(this)},{}],9:[function(t,e,n){randomInt=function(t){if(void 0!==t&&null!==t||(t={}),void 0!==t.min&&null!==t||(t.min=0),void 0!==t.max&&null!==t||(t.max=4294967295),t.min>t.max){var e=t.min;t.min=t.max,t.max=e}return Math.floor(Math.random()*(t.max-t.min)+t.min)},randomFloat=function(t){return void 0!==t&&null!==t||(t={}),void 0!==t.min&&null!==t||(t.min=0),void 0!==t.max&&null!==t||(t.max=1),Math.random()*(t.max-t.min)+t.min},randomString=function(t){void 0!==t&&null!==t||(t={}),void 0!==t.length&&null!==t.length||(t.length=20),void 0!==t.set&&null!==t.set||(t.set="alphanum");var e;switch(t.set){case"alpha":e="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";break;case"alphanum":e="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";break;case"num":e="0123456789";break;case"hex":e="0123456789ABCDEF";break;case"custom":if(void 0===t.custom||null===t.custom)return console.error("can't generate a random string with custom set of characters if options.custom is null or undefined"),"";e=t.custom}for(var n="",r=0;r<t.length;r++){var i=randomInt({min:0,max:e.length});n+=e[i]}return n},e.exports.randomInt=randomInt,e.exports.randomFloat=randomFloat,e.exports.randomString=randomString},{}],10:[function(t,e,n){},{}],11:[function(t,e,n){function r(){throw new Error("setTimeout has not been defined")}function i(){throw new Error("clearTimeout has not been defined")}function o(t){if(f===setTimeout)return setTimeout(t,0);if((f===r||!f)&&setTimeout)return f=setTimeout,setTimeout(t,0);try{return f(t,0)}catch(e){try{return f.call(null,t,0)}catch(e){return f.call(this,t,0)}}}function s(t){if(h===clearTimeout)return clearTimeout(t);if((h===i||!h)&&clearTimeout)return h=clearTimeout,clearTimeout(t);try{return h(t)}catch(e){try{return h.call(null,t)}catch(e){return h.call(this,t)}}}function u(){m&&p&&(m=!1,p.length?g=p.concat(g):v=-1,g.length&&a())}function a(){if(!m){var t=o(u);m=!0;for(var e=g.length;e;){for(p=g,g=[];++v<e;)p&&p[v].run();v=-1,e=g.length}p=null,m=!1,s(t)}}function c(t,e){this.fun=t,this.array=e}function l(){}var f,h,d=e.exports={};!function(){try{f="function"==typeof setTimeout?setTimeout:r}catch(t){f=r}try{h="function"==typeof clearTimeout?clearTimeout:i}catch(t){h=i}}();var p,g=[],m=!1,v=-1;d.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];g.push(new c(t,e)),1!==g.length||m||o(a)},c.prototype.run=function(){this.fun.apply(null,this.array)},d.title="browser",d.browser=!0,d.env={},d.argv=[],d.version="",d.versions={},d.on=l,d.addListener=l,d.once=l,d.off=l,d.removeListener=l,d.removeAllListeners=l,d.emit=l,d.binding=function(t){throw new Error("process.binding is not supported")},d.cwd=function(){return"/"},d.chdir=function(t){throw new Error("process.chdir is not supported")},d.umask=function(){return 0}},{}],12:[function(t,e,n){"use strict";var r=Object.prototype.hasOwnProperty,i=Object.prototype.toString,o=function(t){return"function"==typeof Array.isArray?Array.isArray(t):"[object Array]"===i.call(t)},s=function(t){if(!t||"[object Object]"!==i.call(t))return!1;var e=r.call(t,"constructor"),n=t.constructor&&t.constructor.prototype&&r.call(t.constructor.prototype,"isPrototypeOf");if(t.constructor&&!e&&!n)return!1;var o;for(o in t);return"undefined"==typeof o||r.call(t,o)};e.exports=function t(){var e,n,r,i,u,a,c=arguments[0],l=1,f=arguments.length,h=!1;for("boolean"==typeof c?(h=c,c=arguments[1]||{},l=2):("object"!=typeof c&&"function"!=typeof c||null==c)&&(c={});l<f;++l)if(e=arguments[l],null!=e)for(n in e)r=c[n],i=e[n],c!==i&&(h&&i&&(s(i)||(u=o(i)))?(u?(u=!1,a=r&&o(r)?r:[]):a=r&&s(r)?r:{},c[n]=t(h,a,i)):"undefined"!=typeof i&&(c[n]=i));return c}},{}],13:[function(t,e,n){e.exports=function(t){t.plural(/$/,"s"),t.plural(/s$/i,"s"),t.plural(/(ax|test)is$/i,"$1es"),t.plural(/(octop|vir)us$/i,"$1i"),t.plural(/(octop|vir)i$/i,"$1i"),t.plural(/(alias|status)$/i,"$1es"),t.plural(/(bu)s$/i,"$1ses"),t.plural(/(buffal|tomat)o$/i,"$1oes"),t.plural(/([ti])um$/i,"$1a"),t.plural(/([ti])a$/i,"$1a"),t.plural(/sis$/i,"ses"),t.plural(/(?:([^fa])fe|(?:(oa)f)|([lr])f)$/i,"$1ves"),t.plural(/(hive)$/i,"$1s"),t.plural(/([^aeiouy]|qu)y$/i,"$1ies"),t.plural(/(x|ch|ss|sh)$/i,"$1es"),t.plural(/(matr|vert|ind)(?:ix|ex)$/i,"$1ices"),t.plural(/([m|l])ouse$/i,"$1ice"),t.plural(/([m|l])ice$/i,"$1ice"),t.plural(/^(ox)$/i,"$1en"),t.plural(/^(oxen)$/i,"$1"),t.plural(/(quiz)$/i,"$1zes"),t.singular(/s$/i,""),t.singular(/(n)ews$/i,"$1ews"),t.singular(/([ti])a$/i,"$1um"),t.singular(/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i,"$1sis"),t.singular(/(^analy)ses$/i,"$1sis"),t.singular(/([^f])ves$/i,"$1fe"),t.singular(/(hive)s$/i,"$1"),t.singular(/(tive)s$/i,"$1"),t.singular(/(oave)s$/i,"oaf"),t.singular(/([lr])ves$/i,"$1f"),t.singular(/([^aeiouy]|qu)ies$/i,"$1y"),t.singular(/(s)eries$/i,"$1eries"), t.singular(/(m)ovies$/i,"$1ovie"),t.singular(/(x|ch|ss|sh)es$/i,"$1"),t.singular(/([m|l])ice$/i,"$1ouse"),t.singular(/(bus)es$/i,"$1"),t.singular(/(o)es$/i,"$1"),t.singular(/(shoe)s$/i,"$1"),t.singular(/(cris|ax|test)es$/i,"$1is"),t.singular(/(octop|vir)i$/i,"$1us"),t.singular(/(alias|status)es$/i,"$1"),t.singular(/^(ox)en/i,"$1"),t.singular(/(vert|ind)ices$/i,"$1ex"),t.singular(/(matr)ices$/i,"$1ix"),t.singular(/(quiz)zes$/i,"$1"),t.singular(/(database)s$/i,"$1"),t.irregular("child","children"),t.irregular("person","people"),t.irregular("man","men"),t.irregular("child","children"),t.irregular("sex","sexes"),t.irregular("move","moves"),t.irregular("cow","kine"),t.irregular("zombie","zombies"),t.irregular("oaf","oafs",!0),t.irregular("jefe","jefes"),t.irregular("save","saves"),t.irregular("safe","safes"),t.irregular("fife","fifes"),t.uncountable(["equipment","information","rice","money","species","series","fish","sheep","jeans","sushi"])}},{}],14:[function(t,e,n){e.exports=function(e){var n=t("./methods");return e&&t("./native")(n),n}},{"./methods":16,"./native":17}],15:[function(t,e,n){var r=t("./util"),i=function(){return this.plurals=[],this.singulars=[],this.uncountables=[],this.humans=[],t("./defaults")(this),this};i.prototype.plural=function(t,e){"string"==typeof t&&(this.uncountables=r.array.del(this.uncountables,t)),this.uncountables=r.array.del(this.uncountables,e),this.plurals.unshift([t,e])},i.prototype.singular=function(t,e){"string"==typeof t&&(this.uncountables=r.array.del(this.uncountables,t)),this.uncountables=r.array.del(this.uncountables,e),this.singulars.unshift([t,e])},i.prototype.irregular=function(t,e,n){this.uncountables=r.array.del(this.uncountables,t),this.uncountables=r.array.del(this.uncountables,e);var i="";n&&(i="^"),t[0].toUpperCase()==e[0].toUpperCase()?(this.plural(new RegExp("("+i+t[0]+")"+t.slice(1)+"$","i"),"$1"+e.slice(1)),this.plural(new RegExp("("+i+e[0]+")"+e.slice(1)+"$","i"),"$1"+e.slice(1)),this.singular(new RegExp("("+i+e[0]+")"+e.slice(1)+"$","i"),"$1"+t.slice(1))):(this.plural(new RegExp(i+t[0].toUpperCase()+t.slice(1)+"$"),e[0].toUpperCase()+e.slice(1)),this.plural(new RegExp(i+t[0].toLowerCase()+t.slice(1)+"$"),e[0].toLowerCase()+e.slice(1)),this.plural(new RegExp(i+e[0].toUpperCase()+e.slice(1)+"$"),e[0].toUpperCase()+e.slice(1)),this.plural(new RegExp(i+e[0].toLowerCase()+e.slice(1)+"$"),e[0].toLowerCase()+e.slice(1)),this.singular(new RegExp(i+e[0].toUpperCase()+e.slice(1)+"$"),t[0].toUpperCase()+t.slice(1)),this.singular(new RegExp(i+e[0].toLowerCase()+e.slice(1)+"$"),t[0].toLowerCase()+t.slice(1)))},i.prototype.human=function(t,e){this.humans.unshift([t,e])},i.prototype.uncountable=function(t){this.uncountables=this.uncountables.concat(t)},i.prototype.clear=function(t){switch(null==t&&(t="all"),t){case"all":this.plurals=[],this.singulars=[],this.uncountables=[],this.humans=[];default:this[t]=[]}},i.prototype.default=function(){return this.plurals=[],this.singulars=[],this.uncountables=[],this.humans=[],t("./defaults")(this),this},e.exports=new i},{"./defaults":13,"./util":18}],16:[function(t,e,n){var r=t("./util"),i=e.exports;i.inflections=t("./inflections"),i.inflect=function(t){t(i.inflections)},i.camelize=function(t,e){var n;return null==e&&(e=!0),n=r.string.gsub(t,/\/(.?)/,function(t){return"."+r.string.upcase(t[1])}),n=r.string.gsub(n,/(?:_)(.)/,function(t){return r.string.upcase(t[1])}),e?r.string.upcase(n):r.string.downcase(n)},i.underscore=function(t){var e;return e=r.string.gsub(t,/\./,"/"),e=r.string.gsub(e,/([A-Z]+)([A-Z][a-z])/,"$1_$2"),e=r.string.gsub(e,/([a-z\d])([A-Z])/,"$1_$2"),e=r.string.gsub(e,/-/,"_"),e.toLowerCase()},i.dasherize=function(t){return r.string.gsub(t,/_/,"-")},i.demodulize=function(t){return r.string.gsub(t,/^.*\./,"")},i.foreign_key=function(t,e){return null==e&&(e=!0),i.underscore(i.demodulize(t))+(e?"_id":"id")},i.ordinalize=function(t){var e;if(t=parseInt(t),11===(e=Math.abs(t)%100)||12===e||13===e)return""+t+"th";switch(Math.abs(t)%10){case 1:return""+t+"st";case 2:return""+t+"nd";case 3:return""+t+"rd";default:return""+t+"th"}},i.uncountability=function(t){return i.inflections.uncountables.some(function(e,n,r){return null!=t.match(new RegExp("(\\b|_)"+e+"$","i"))})},i.pluralize=function(t){var e,n;if(n=t,""===t||i.uncountability(t))return n;for(var o=0;o<i.inflections.plurals.length&&(e=i.inflections.plurals[o],n=r.string.gsub(n,e[0],e[1]),null==t.match(e[0]));o++);return n},i.singularize=function(t){var e,n;if(e=t,""===t||i.uncountability(t))return e;for(var o=0;o<i.inflections.singulars.length&&(n=i.inflections.singulars[o],e=r.string.gsub(e,n[0],n[1]),!t.match(n[0]));o++);return e},i.humanize=function(t){var e,n;n=t;for(var o=0;o<i.inflections.humans.length;o++)e=i.inflections.humans[o],n=r.string.gsub(n,e[0],e[1]);return n=r.string.gsub(n,/_id$/,""),n=r.string.gsub(n,/_/," "),r.string.capitalize(n,!0)},i.titleize=function(t){var e;return e=i.humanize(i.underscore(t)),r.string.capitalize(e)},i.tableize=function(t){return i.pluralize(i.underscore(t))},i.classify=function(t){return i.camelize(i.singularize(r.string.gsub(t,/.*\./,"")))}},{"./inflections":15,"./util":18}],17:[function(t,e,n){e.exports=function(t){var e=function(t,e){String.prototype.__defineGetter__(t,e)},n=["__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","charAt","constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf","charCodeAt","indexOf","lastIndexof","length","localeCompare","match","replace","search","slice","split","substring","toLocaleLowerCase","toLocaleUpperCase","toLowerCase","toUpperCase","trim","trimLeft","trimRight","gsub"];Object.keys(t).forEach(function(r){"inflect"!=r&&"inflections"!=r&&(n.indexOf(r)!==-1?console.log("warn: You should not override String.prototype."+r):e(r,function(){return t[r](this)}))})}},{}],18:[function(t,e,n){var r=e.exports={array:{del:function(t,e){var n=t.indexOf(e);return n!=-1?0==n?t.slice(1):t.slice(0,n).concat(t.slice(n+1)):t},first:function(t){return t[0]},last:function(t){return t[t.length-1]}},string:{gsub:function(t,e,n){var i,o,s,u,a,c,l;if(null==e||null==n)return r.string.value(t);for(c="",l=t;l.length>0;)if(o=l.match(e)){if(c+=l.slice(0,o.index),"function"==typeof n)o[1]=o[1]||o[0],c+=n(o);else if(n.match(/\$[1-9]/)){for(u=o,s=r.array.del(o,void 0);s!==u;)u=s,s=r.array.del(s,void 0);for(o[1]=o[1]||o[0],a=n,i=1;i<=9;i++)s[i]&&(a=r.string.gsub(a,new RegExp("\\$"+i),s[i]));c+=a}else c+=n;l=l.slice(o.index+o[0].length)}else c+=l,l="";return c},upcase:function(t){var e=r.string.gsub(t,/_([a-z])/,function(t){return"_"+t[1].toUpperCase()});return e=r.string.gsub(e,/\/([a-z])/,function(t){return"/"+t[1].toUpperCase()}),e[0].toUpperCase()+e.substr(1)},capitalize:function(t,e){var n=t.toLowerCase();return e||(n=r.string.gsub(n,/\s([a-z])/,function(t){return" "+t[1].toUpperCase()})),n[0].toUpperCase()+n.substr(1)},downcase:function(t){var e=r.string.gsub(t,/_([A-Z])/,function(t){return"_"+t[1].toLowerCase()});return e=r.string.gsub(e,/\/([A-Z])/,function(t){return"/"+t[1].toLowerCase()}),e[0].toLowerCase()+e.substr(1)},value:function(t){return t.substr(0)}}}},{}],19:[function(e,n,r){(function(i){!function(e){if("object"==typeof r&&"undefined"!=typeof n)n.exports=e();else if("function"==typeof t&&t.amd)t([],e);else{var o;o="undefined"!=typeof window?window:"undefined"!=typeof i?i:"undefined"!=typeof self?self:this,o.progenitor=e()}}(function(){return function t(n,r,i){function o(u,a){if(!r[u]){if(!n[u]){var c="function"==typeof e&&e;if(!a&&c)return c(u,!0);if(s)return s(u,!0);var l=new Error("Cannot find module '"+u+"'");throw l.code="MODULE_NOT_FOUND",l}var f=r[u]={exports:{}};n[u][0].call(f.exports,function(t){var e=n[u][1][t];return o(e?e:t)},f,f.exports,t,n,r,i)}return r[u].exports}for(var s="function"==typeof e&&e,u=0;u<i.length;u++)o(i[u]);return o}({1:[function(t,e,n){function r(t){return t=Array.prototype.slice.call(t,1),"[object Arguments]"===Object.prototype.toString.call(t[0])?t[0]:t}var i=function(){},o=t("extend"),s=n=e.exports=function(t){return t.classMethods||(t.classMethods={}),t.classMethods.inherited||(t.classMethods.inherited=i),t.instanceMethods||(t.instanceMethods={}),t.instanceMethods.init||(t.instanceMethods.init=i),function(e,n,u){var a;if(a=Object.progeny.cache[e])return a;n=("function"==typeof n?n():n)||{},u=("function"==typeof u?u():u)||{},u.classMethods||(u.classMethods={}),a=function(e){"progeny-definition"!==e&&(t.instanceMethods.init.apply(this,arguments),p.init.apply(this,arguments))};var c=function(e){return t.classMethods[e]&&t.classMethods[e].apply(this,r(arguments))},l={class:t,className:e,super:c,progeny:s(a)},f=o({},t.classMethods,l,u.classMethods);o(a,a.classMethods=f);var h=function(e){return t.instanceMethods[e]&&t.instanceMethods[e].apply(this,r(arguments))},d={constructor:t,class:a,className:e,super:h,init:i},p=o({},t.instanceMethods,d,n);return a.prototype=new t("progeny-definition"),o(a.prototype,a.instanceMethods=p),t.classMethods.inherited.call(t,a),Object.progeny.cache[e]=a}};n=e.exports=s},{extend:2}],2:[function(t,e,n){"use strict";var r=Object.prototype.hasOwnProperty,i=Object.prototype.toString,o=function(t){return"function"==typeof Array.isArray?Array.isArray(t):"[object Array]"===i.call(t)},s=function(t){if(!t||"[object Object]"!==i.call(t))return!1;var e=r.call(t,"constructor"),n=t.constructor&&t.constructor.prototype&&r.call(t.constructor.prototype,"isPrototypeOf");if(t.constructor&&!e&&!n)return!1;var o;for(o in t);return"undefined"==typeof o||r.call(t,o)};e.exports=function t(){var e,n,r,i,u,a,c=arguments[0],l=1,f=arguments.length,h=!1;for("boolean"==typeof c?(h=c,c=arguments[1]||{},l=2):("object"!=typeof c&&"function"!=typeof c||null==c)&&(c={});l<f;++l)if(e=arguments[l],null!=e)for(n in e)r=c[n],i=e[n],c!==i&&(h&&i&&(s(i)||(u=o(i)))?(u?(u=!1,a=r&&o(r)?r:[]):a=r&&s(r)?r:{},c[n]=t(h,a,i)):"undefined"!=typeof i&&(c[n]=i));return c}},{}],3:[function(t,e,n){var r=t("./lib/factory");n=e.exports=function(){Object.progeny||(Object.progeny=r(Object)),Object.progeny.cache||(Object.progeny.cache={}),Error.progeny||(Error.progeny=r(Error))}},{"./lib/factory":1}]},{},[3])(3)})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./lib/factory":20,extend:12}],20:[function(t,e,n){function r(t){return t=Array.prototype.slice.call(t,1),"[object Arguments]"===Object.prototype.toString.call(t[0])?t[0]:t}var i=function(){},o=t("extend"),s=n=e.exports=function(t){return t.classMethods||(t.classMethods={}),t.classMethods.inherited||(t.classMethods.inherited=i),t.instanceMethods||(t.instanceMethods={}),t.instanceMethods.init||(t.instanceMethods.init=i),function(e,n,u){var a;if(a=Object.progeny.cache[e])return a;n=("function"==typeof n?n():n)||{},u=("function"==typeof u?u():u)||{},u.classMethods||(u.classMethods={}),a=function(e){"progeny-definition"!==e&&(t.instanceMethods.init.apply(this,arguments),p.init.apply(this,arguments))};var c=function(e){return t.classMethods[e]&&t.classMethods[e].apply(this,r(arguments))},l={class:t,className:e,super:c,progeny:s(a)},f=o({},t.classMethods,l,u.classMethods);o(a,a.classMethods=f);var h=function(e){return t.instanceMethods[e]&&t.instanceMethods[e].apply(this,r(arguments))},d={constructor:t,class:a,className:e,super:h,init:i},p=o({},t.instanceMethods,d,n);return a.prototype=new t("progeny-definition"),o(a.prototype,a.instanceMethods=p),t.classMethods.inherited.call(t,a),Object.progeny.cache[e]=a}};n=e.exports=s},{extend:12}]},{},[3])(3)});