(function(n){var t=typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global,i,r;if(typeof define=="function"&&define.amd)define(["underscore","jquery","exports"],function(i,r,u){t.Backbone=n(t,u,i,r)});else if(typeof exports!="undefined"){i=require("underscore");try{r=require("jquery")}catch(i){}n(t,exports,i,r)}else t.Backbone=n(t,{},t._,t.jQuery||t.Zepto||t.ender||t.$)})(function(n,t,i,r){var ct=n.Backbone,b=Array.prototype.slice,d,g,y,p,s,c,ot,ht,w,a;t.VERSION="1.6.0";t.$=r;t.noConflict=function(){return n.Backbone=ct,this};t.emulateHTTP=!1;t.emulateJSON=!1;var u=t.Events={},k=/\s+/,f,o=function(n,t,r,u,f){var e=0,s;if(r&&typeof r=="object")for(u!==void 0&&("context"in f)&&f.context===void 0&&(f.context=u),s=i.keys(r);e<s.length;e++)t=o(n,t,s[e],r[s[e]],f);else if(r&&k.test(r))for(s=r.split(k);e<s.length;e++)t=n(t,s[e],u,f);else t=n(t,r,u,f);return t};u.on=function(n,t,i){if(this._events=o(d,this._events||{},n,t,{context:i,ctx:this,listening:f}),f){var r=this._listeners||(this._listeners={});r[f.id]=f;f.interop=!1}return this};u.listenTo=function(n,t,r){var e;if(!n)return this;var o=n._listenId||(n._listenId=i.uniqueId("l")),s=this._listeningTo||(this._listeningTo={}),u=f=s[o];if(u||(this._listenId||(this._listenId=i.uniqueId("l")),u=f=s[o]=new v(this,n)),e=g(n,t,r,this),f=void 0,e)throw e;if(u.interop)u.on(t,r);return this};d=function(n,t,i,r){if(i){var e=n[t]||(n[t]=[]),f=r.context,o=r.ctx,u=r.listening;u&&u.count++;e.push({callback:i,context:f,ctx:f||o,listening:u})}return n};g=function(n,t,i,r){try{n.on(t,i,r)}catch(n){return n}};u.off=function(n,t,i){return this._events?(this._events=o(y,this._events,n,t,{context:i,listeners:this._listeners}),this):this};u.stopListening=function(n,t,r){var f=this._listeningTo,o,e,u;if(!f)return this;for(o=n?[n._listenId]:i.keys(f),e=0;e<o.length;e++){if(u=f[o[e]],!u)break;u.obj.off(t,r,this);u.interop&&u.off(t,r)}return i.isEmpty(f)&&(this._listeningTo=void 0),this};y=function(n,t,r,u){var s,h,c,o,a;if(n){var l=u.context,v=u.listeners,f=0,e;if(!t&&!l&&!r){for(e=i.keys(v);f<e.length;f++)v[e[f]].cleanup();return}for(e=t?[t]:i.keys(n);f<e.length;f++){if(t=e[f],s=n[t],!s)break;for(h=[],c=0;c<s.length;c++)o=s[c],r&&r!==o.callback&&r!==o.callback._callback||l&&l!==o.context?h.push(o):(a=o.listening,a&&a.off(t,r));h.length?n[t]=h:delete n[t]}return n}};u.once=function(n,t,i){var r=o(p,{},n,t,this.off.bind(this));typeof n=="string"&&i==null&&(t=void 0);return this.on(r,t,i)};u.listenToOnce=function(n,t,i){var r=o(p,{},t,i,this.stopListening.bind(this,n));return this.listenTo(n,r)};p=function(n,t,r,u){if(r){var f=n[t]=i.once(function(){u(t,f);r.apply(this,arguments)});f._callback=r}return n};u.trigger=function(n){var i,r,t;if(!this._events)return this;for(i=Math.max(0,arguments.length-1),r=Array(i),t=0;t<i;t++)r[t]=arguments[t+1];return o(lt,this._events,n,void 0,r),this};var lt=function(n,t,i,r){if(n){var f=n[t],u=n.all;f&&u&&(u=u.slice());f&&nt(f,r);u&&nt(u,[t].concat(r))}return n},nt=function(n,t){var i,r=-1,u=n.length,f=t[0],e=t[1],o=t[2];switch(t.length){case 0:while(++r<u)(i=n[r]).callback.call(i.ctx);return;case 1:while(++r<u)(i=n[r]).callback.call(i.ctx,f);return;case 2:while(++r<u)(i=n[r]).callback.call(i.ctx,f,e);return;case 3:while(++r<u)(i=n[r]).callback.call(i.ctx,f,e,o);return;default:while(++r<u)(i=n[r]).callback.apply(i.ctx,t);return}},v=function(n,t){this.id=n._listenId;this.listener=n;this.obj=t;this.interop=!0;this.count=0;this._events=void 0};v.prototype.on=u.on;v.prototype.off=function(n,t){var i;this.interop?(this._events=o(y,this._events,n,t,{context:void 0,listeners:void 0}),i=!this._events):(this.count--,i=this.count===0);i&&this.cleanup()};v.prototype.cleanup=function(){delete this.listener._listeningTo[this.obj._listenId];this.interop||delete this.obj._listeners[this.id]};u.bind=u.on;u.unbind=u.off;i.extend(t,u);s=t.Model=function(n,t){var r=n||{},u;t||(t={});this.preinitialize.apply(this,arguments);this.cid=i.uniqueId(this.cidPrefix);this.attributes={};t.collection&&(this.collection=t.collection);t.parse&&(r=this.parse(r,t)||{});u=i.result(this,"defaults");r=i.defaults(i.extend({},u,r),u);this.set(r,t);this.changed={};this.initialize.apply(this,arguments)};i.extend(s.prototype,u,{changed:null,validationError:null,idAttribute:"id",cidPrefix:"c",preinitialize:function(){},initialize:function(){},toJSON:function(){return i.clone(this.attributes)},sync:function(){return t.sync.apply(this,arguments)},get:function(n){return this.attributes[n]},escape:function(n){return i.escape(this.get(n))},has:function(n){return this.get(n)!=null},matches:function(n){return!!i.iteratee(n,this)(this.attributes)},set:function(n,t,r){var f,u,a,o;if(n==null)return this;if(typeof n=="object"?(f=n,r=t):(f={})[n]=t,r||(r={}),!this._validate(f,r))return!1;var v=r.unset,h=r.silent,e=[],c=this._changing;this._changing=!0;c||(this._previousAttributes=i.clone(this.attributes),this.changed={});var s=this.attributes,l=this.changed,y=this._previousAttributes;for(u in f)t=f[u],i.isEqual(s[u],t)||e.push(u),i.isEqual(y[u],t)?delete l[u]:l[u]=t,v?delete s[u]:s[u]=t;if(this.idAttribute in f&&(a=this.id,this.id=this.get(this.idAttribute),this.trigger("changeId",this,a,r)),!h)for(e.length&&(this._pending=r),o=0;o<e.length;o++)this.trigger("change:"+e[o],this,s[e[o]],r);if(c)return this;if(!h)while(this._pending)r=this._pending,this._pending=!1,this.trigger("change",this,r);return this._pending=!1,this._changing=!1,this},unset:function(n,t){return this.set(n,void 0,i.extend({},t,{unset:!0}))},clear:function(n){var t={};for(var r in this.attributes)t[r]=void 0;return this.set(t,i.extend({},n,{unset:!0}))},hasChanged:function(n){return n==null?!i.isEmpty(this.changed):i.has(this.changed,n)},changedAttributes:function(n){var f,r,e,t,u;if(!n)return this.hasChanged()?i.clone(this.changed):!1;f=this._changing?this._previousAttributes:this.attributes;r={};for(t in n)(u=n[t],i.isEqual(f[t],u))||(r[t]=u,e=!0);return e?r:!1},previous:function(n){return n==null||!this._previousAttributes?null:this._previousAttributes[n]},previousAttributes:function(){return i.clone(this._previousAttributes)},fetch:function(n){n=i.extend({parse:!0},n);var t=this,r=n.success;return n.success=function(i){var u=n.parse?t.parse(i,n):i;if(!t.set(u,n))return!1;r&&r.call(n.context,t,i,n);t.trigger("sync",t,i,n)},a(this,n),this.sync("read",this,n)},save:function(n,t,r){var u,e,s,c;if(n==null||typeof n=="object"?(u=n,r=t):(u={})[n]=t,r=i.extend({validate:!0,parse:!0},r),e=r.wait,u&&!e){if(!this.set(u,r))return!1}else if(!this._validate(u,r))return!1;var f=this,h=r.success,o=this.attributes;return r.success=function(n){f.attributes=o;var t=r.parse?f.parse(n,r):n;if(e&&(t=i.extend({},u,t)),t&&!f.set(t,r))return!1;h&&h.call(r.context,f,n,r);f.trigger("sync",f,n,r)},a(this,r),u&&e&&(this.attributes=i.extend({},o,u)),s=this.isNew()?"create":r.patch?"patch":"update",s!=="patch"||r.attrs||(r.attrs=u),c=this.sync(s,this,r),this.attributes=o,c},destroy:function(n){var r;n=n?i.clone(n):{};var t=this,u=n.success,f=n.wait,e=function(){t.stopListening();t.trigger("destroy",t,t.collection,n)};return n.success=function(i){f&&e();u&&u.call(n.context,t,i,n);t.isNew()||t.trigger("sync",t,i,n)},r=!1,this.isNew()?i.defer(n.success):(a(this,n),r=this.sync("delete",this,n)),f||e(),r},url:function(){var n=i.result(this,"urlRoot")||i.result(this.collection,"url")||w(),t;return this.isNew()?n:(t=this.get(this.idAttribute),n.replace(/[^\/]$/,"$&/")+encodeURIComponent(t))},parse:function(n){return n},clone:function(){return new this.constructor(this.attributes)},isNew:function(){return!this.has(this.idAttribute)},isValid:function(n){return this._validate({},i.extend({},n,{validate:!0}))},_validate:function(n,t){if(!t.validate||!this.validate)return!0;n=i.extend({},this.attributes,n);var r=this.validationError=this.validate(n,t)||null;return r?(this.trigger("invalid",this,r,i.extend(t,{validationError:r})),!1):!0}});var h=t.Collection=function(n,t){t||(t={});this.preinitialize.apply(this,arguments);t.model&&(this.model=t.model);t.comparator!==void 0&&(this.comparator=t.comparator);this._reset();this.initialize.apply(this,arguments);n&&this.reset(n,i.extend({silent:!0},t))},at={add:!0,remove:!0,merge:!0},vt={add:!0,remove:!1},tt=function(n,t,i){i=Math.min(Math.max(i,0),n.length);for(var u=Array(n.length-i),f=t.length,r=0;r<u.length;r++)u[r]=n[r+i];for(r=0;r<f;r++)n[r+i]=t[r];for(r=0;r<u.length;r++)n[r+f+i]=u[r]};i.extend(h.prototype,u,{model:s,preinitialize:function(){},initialize:function(){},toJSON:function(n){return this.map(function(t){return t.toJSON(n)})},sync:function(){return t.sync.apply(this,arguments)},add:function(n,t){return this.set(n,i.extend({merge:!1},t,vt))},remove:function(n,t){var u,r;return t=i.extend({},t),u=!i.isArray(n),n=u?[n]:n.slice(),r=this._removeModels(n,t),!t.silent&&r.length&&(t.changes={added:[],merged:[],removed:r},this.trigger("update",this,t)),u?r[0]:r},set:function(n,t){var v,f,e,a,w,d;if(n!=null){t=i.extend({},at,t);t.parse&&!this._isModel(n)&&(n=this.parse(n,t)||[]);v=!i.isArray(n);n=v?[n]:n.slice();f=t.at;f!=null&&(f=+f);f>this.length&&(f=this.length);f<0&&(f+=this.length+1);for(var s=[],o=[],y=[],h=[],l={},b=t.add,g=t.merge,k=t.remove,c=!1,p=this.comparator&&f==null&&t.sort!==!1,nt=i.isString(this.comparator)?this.comparator:null,r,u=0;u<n.length;u++)r=n[u],e=this.get(r),e?(g&&r!==e&&(a=this._isModel(r)?r.attributes:r,t.parse&&(a=e.parse(a,t)),e.set(a,t),y.push(e),p&&!c&&(c=e.hasChanged(nt))),l[e.cid]||(l[e.cid]=!0,s.push(e)),n[u]=e):b&&(r=n[u]=this._prepareModel(r,t),r&&(o.push(r),this._addReference(r,t),l[r.cid]=!0,s.push(r)));if(k){for(u=0;u<this.length;u++)r=this.models[u],l[r.cid]||h.push(r);h.length&&this._removeModels(h,t)}if(w=!1,d=!p&&b&&k,s.length&&d?(w=this.length!==s.length||i.some(this.models,function(n,t){return n!==s[t]}),this.models.length=0,tt(this.models,s,0),this.length=this.models.length):o.length&&(p&&(c=!0),tt(this.models,o,f==null?this.length:f),this.length=this.models.length),c&&this.sort({silent:!0}),!t.silent){for(u=0;u<o.length;u++)f!=null&&(t.index=f+u),r=o[u],r.trigger("add",r,this,t);(c||w)&&this.trigger("sort",this,t);(o.length||h.length||y.length)&&(t.changes={added:o,removed:h,merged:y},this.trigger("update",this,t))}return v?n[0]:n}},reset:function(n,t){t=t?i.clone(t):{};for(var r=0;r<this.models.length;r++)this._removeReference(this.models[r],t);return t.previousModels=this.models,this._reset(),n=this.add(n,i.extend({silent:!0},t)),t.silent||this.trigger("reset",this,t),n},push:function(n,t){return this.add(n,i.extend({at:this.length},t))},pop:function(n){var t=this.at(this.length-1);return this.remove(t,n)},unshift:function(n,t){return this.add(n,i.extend({at:0},t))},shift:function(n){var t=this.at(0);return this.remove(t,n)},slice:function(){return b.apply(this.models,arguments)},get:function(n){if(n!=null)return this._byId[n]||this._byId[this.modelId(this._isModel(n)?n.attributes:n,n.idAttribute)]||n.cid&&this._byId[n.cid]},has:function(n){return this.get(n)!=null},at:function(n){return n<0&&(n+=this.length),this.models[n]},where:function(n,t){return this[t?"find":"filter"](n)},findWhere:function(n){return this.where(n,!0)},sort:function(n){var t=this.comparator,r;if(!t)throw new Error("Cannot sort a set without a comparator");return n||(n={}),r=t.length,i.isFunction(t)&&(t=t.bind(this)),r===1||i.isString(t)?this.models=this.sortBy(t):this.models.sort(t),n.silent||this.trigger("sort",this,n),this},pluck:function(n){return this.map(n+"")},fetch:function(n){n=i.extend({parse:!0},n);var r=n.success,t=this;return n.success=function(i){var u=n.reset?"reset":"set";t[u](i,n);r&&r.call(n.context,t,i,n);t.trigger("sync",t,i,n)},a(this,n),this.sync("read",this,n)},create:function(n,t){var r,u,f;if(t=t?i.clone(t):{},r=t.wait,n=this._prepareModel(n,t),!n)return!1;if(r||this.add(n,t),u=this,f=t.success,t.success=function(n,t,i){r&&(n.off("error",u._forwardPristineError,u),u.add(n,i));f&&f.call(i.context,n,t,i)},r)n.once("error",this._forwardPristineError,this);return n.save(null,t),n},parse:function(n){return n},clone:function(){return new this.constructor(this.models,{model:this.model,comparator:this.comparator})},modelId:function(n,t){return n[t||this.model.prototype.idAttribute||"id"]},values:function(){return new l(this,it)},keys:function(){return new l(this,rt)},entries:function(){return new l(this,yt)},_reset:function(){this.length=0;this.models=[];this._byId={}},_prepareModel:function(n,t){if(this._isModel(n))return n.collection||(n.collection=this),n;t=t?i.clone(t):{};t.collection=this;var r;return(r=this.model.prototype?new this.model(n,t):this.model(n,t),!r.validationError)?r:(this.trigger("invalid",this,r.validationError,t),!1)},_removeModels:function(n,t){for(var i,u,f,e=[],r=0;r<n.length;r++)(i=this.get(n[r]),i)&&(u=this.indexOf(i),this.models.splice(u,1),this.length--,delete this._byId[i.cid],f=this.modelId(i.attributes,i.idAttribute),f!=null&&delete this._byId[f],t.silent||(t.index=u,i.trigger("remove",i,this,t)),e.push(i),this._removeReference(i,t));return n.length>0&&!t.silent&&delete t.index,e},_isModel:function(n){return n instanceof s},_addReference:function(n){this._byId[n.cid]=n;var t=this.modelId(n.attributes,n.idAttribute);t!=null&&(this._byId[t]=n);n.on("all",this._onModelEvent,this)},_removeReference:function(n){delete this._byId[n.cid];var t=this.modelId(n.attributes,n.idAttribute);t!=null&&delete this._byId[t];this===n.collection&&delete n.collection;n.off("all",this._onModelEvent,this)},_onModelEvent:function(n,t,i,r){if(t){if((n==="add"||n==="remove")&&i!==this)return;if(n==="destroy"&&this.remove(t,r),n==="changeId"){var u=this.modelId(t.previousAttributes(),t.idAttribute),f=this.modelId(t.attributes,t.idAttribute);u!=null&&delete this._byId[u];f!=null&&(this._byId[f]=t)}}this.trigger.apply(this,arguments)},_forwardPristineError:function(n,t,i){this.has(n)||this._onModelEvent("error",n,t,i)}});c=typeof Symbol=="function"&&Symbol.iterator;c&&(h.prototype[c]=h.prototype.values);var l=function(n,t){this._collection=n;this._kind=t;this._index=0},it=1,rt=2,yt=3;c&&(l.prototype[c]=function(){return this});l.prototype.next=function(){var n,t,i;if(this._collection){if(this._index<this._collection.length)return n=this._collection.at(this._index),this._index++,this._kind===it?t=n:(i=this._collection.modelId(n.attributes,n.idAttribute),t=this._kind===rt?i:[i,n]),{value:t,done:!1};this._collection=void 0}return{value:void 0,done:!0}};var ut=t.View=function(n){this.cid=i.uniqueId("view");this.preinitialize.apply(this,arguments);i.extend(this,i.pick(n,wt));this._ensureElement();this.initialize.apply(this,arguments)},pt=/^(\S+)\s*(.*)$/,wt=["model","collection","el","id","attributes","className","tagName","events"];i.extend(ut.prototype,u,{tagName:"div",$:function(n){return this.$el.find(n)},preinitialize:function(){},initialize:function(){},render:function(){return this},remove:function(){return this._removeElement(),this.stopListening(),this},_removeElement:function(){this.$el.remove()},setElement:function(n){return this.undelegateEvents(),this._setElement(n),this.delegateEvents(),this},_setElement:function(n){this.$el=n instanceof t.$?n:t.$(n);this.el=this.$el[0]},delegateEvents:function(n){var r,t,u;if(n||(n=i.result(this,"events")),!n)return this;this.undelegateEvents();for(r in n)(t=n[r],i.isFunction(t)||(t=this[t]),t)&&(u=r.match(pt),this.delegate(u[1],u[2],t.bind(this)));return this},delegate:function(n,t,i){this.$el.on(n+".delegateEvents"+this.cid,t,i);return this},undelegateEvents:function(){return this.$el&&this.$el.off(".delegateEvents"+this.cid),this},undelegate:function(n,t,i){return this.$el.off(n+".delegateEvents"+this.cid,t,i),this},_createElement:function(n){return document.createElement(n)},_ensureElement:function(){if(this.el)this.setElement(i.result(this,"el"));else{var n=i.extend({},i.result(this,"attributes"));this.id&&(n.id=i.result(this,"id"));this.className&&(n["class"]=i.result(this,"className"));this.setElement(this._createElement(i.result(this,"tagName")));this._setAttributes(n)}},_setAttributes:function(n){this.$el.attr(n)}});var bt=function(n,t,i,r){switch(t){case 1:return function(){return n[i](this[r])};case 2:return function(t){return n[i](this[r],t)};case 3:return function(t,u){return n[i](this[r],et(t,this),u)};case 4:return function(t,u,f){return n[i](this[r],et(t,this),u,f)};default:return function(){var t=b.call(arguments);return t.unshift(this[r]),n[i].apply(n,t)}}},ft=function(n,t,r,u){i.each(r,function(i,r){t[r]&&(n.prototype[r]=bt(t,i,r,u))})},et=function(n,t){return i.isFunction(n)?n:i.isObject(n)&&!t._isModel(n)?kt(n):i.isString(n)?function(t){return t.get(n)}:n},kt=function(n){var t=i.matches(n);return function(n){return t(n.attributes)}};i.each([[h,{forEach:3,each:3,map:3,collect:3,reduce:0,foldl:0,inject:0,reduceRight:0,foldr:0,find:3,detect:3,filter:3,select:3,reject:3,every:3,all:3,some:3,any:3,include:3,includes:3,contains:3,invoke:0,max:3,min:3,toArray:1,size:1,first:3,head:3,take:3,initial:3,rest:3,tail:3,drop:3,last:3,without:0,difference:0,indexOf:3,shuffle:1,lastIndexOf:3,isEmpty:1,chain:1,sample:3,partition:3,groupBy:3,countBy:3,sortBy:3,indexBy:3,findIndex:3,findLastIndex:3},"models"],[s,{keys:1,values:1,pairs:1,invert:1,pick:0,omit:0,chain:1,isEmpty:1},"attributes"]],function(n){var t=n[0],u=n[1],r=n[2];t.mixin=function(n){var u=i.reduce(i.functions(n),function(n,t){return n[t]=0,n},{});ft(t,n,u,r)};ft(t,i,u,r)});t.sync=function(n,r,u){var e=ot[n],f,o,s,h;return i.defaults(u||(u={}),{emulateHTTP:t.emulateHTTP,emulateJSON:t.emulateJSON}),f={type:e,dataType:"json"},u.url||(f.url=i.result(r,"url")||w()),u.data==null&&r&&(n==="create"||n==="update"||n==="patch")&&(f.contentType="application/json",f.data=JSON.stringify(u.attrs||r.toJSON(u))),u.emulateJSON&&(f.contentType="application/x-www-form-urlencoded",f.data=f.data?{model:f.data}:{}),u.emulateHTTP&&(e==="PUT"||e==="DELETE"||e==="PATCH")&&(f.type="POST",u.emulateJSON&&(f.data._method=e),o=u.beforeSend,u.beforeSend=function(n){return n.setRequestHeader("X-HTTP-Method-Override",e),o?o.apply(this,arguments):void 0}),f.type==="GET"||u.emulateJSON||(f.processData=!1),s=u.error,u.error=function(n,t,i){u.textStatus=t;u.errorThrown=i;s&&s.call(u.context,n,t,i)},h=u.xhr=t.ajax(i.extend(f,u)),r.trigger("request",r,h,u),h};ot={create:"POST",update:"PUT",patch:"PATCH","delete":"DELETE",read:"GET"};t.ajax=function(){return t.$.ajax.apply(t.$,arguments)};var st=t.Router=function(n){n||(n={});this.preinitialize.apply(this,arguments);n.routes&&(this.routes=n.routes);this._bindRoutes();this.initialize.apply(this,arguments)},dt=/\((.*?)\)/g,gt=/(\(\?)?:\w+/g,ni=/\*\w+/g,ti=/[\-{}\[\]+?.,\\\^$|#\s]/g;i.extend(st.prototype,u,{preinitialize:function(){},initialize:function(){},route:function(n,r,u){i.isRegExp(n)||(n=this._routeToRegExp(n));i.isFunction(r)&&(u=r,r="");u||(u=this[r]);var f=this;return t.history.route(n,function(i){var e=f._extractParameters(n,i);f.execute(u,e,r)!==!1&&(f.trigger.apply(f,["route:"+r].concat(e)),f.trigger("route",r,e),t.history.trigger("route",f,r,e))}),this},execute:function(n,t){n&&n.apply(this,t)},navigate:function(n,i){return t.history.navigate(n,i),this},_bindRoutes:function(){if(this.routes){this.routes=i.result(this,"routes");for(var n,t=i.keys(this.routes);(n=t.pop())!=null;)this.route(n,this.routes[n])}},_routeToRegExp:function(n){return n=n.replace(ti,"\\$&").replace(dt,"(?:$1)?").replace(gt,function(n,t){return t?n:"([^/?]+)"}).replace(ni,"([^?]*?)"),new RegExp("^"+n+"(?:\\?([\\s\\S]*))?$")},_extractParameters:function(n,t){var r=n.exec(t).slice(1);return i.map(r,function(n,t){return t===r.length-1?n||null:n?decodeURIComponent(n):null})}});var e=t.History=function(){this.handlers=[];this.checkUrl=this.checkUrl.bind(this);typeof window!="undefined"&&(this.location=window.location,this.history=window.history)},ii=/^[#\/]|\s+$/g,ri=/^\/+|\/+$/g,ui=/#.*$/;return e.started=!1,i.extend(e.prototype,u,{interval:50,atRoot:function(){var n=this.location.pathname.replace(/[^\/]$/,"$&/");return n===this.root&&!this.getSearch()},matchRoot:function(){var n=this.decodeFragment(this.location.pathname),t=n.slice(0,this.root.length-1)+"/";return t===this.root},decodeFragment:function(n){return decodeURI(n.replace(/%25/g,"%2525"))},getSearch:function(){var n=this.location.href.replace(/#.*/,"").match(/\?.+/);return n?n[0]:""},getHash:function(n){var t=(n||this).location.href.match(/#(.*)$/);return t?t[1]:""},getPath:function(){var n=this.decodeFragment(this.location.pathname+this.getSearch()).slice(this.root.length-1);return n.charAt(0)==="/"?n.slice(1):n},getFragment:function(n){return n==null&&(n=this._usePushState||!this._wantsHashChange?this.getPath():this.getHash()),n.replace(ii,"")},start:function(n){var f,r,t,u;if(e.started)throw new Error("Backbone.history has already been started");if(e.started=!0,this.options=i.extend({root:"/"},this.options,n),this.root=this.options.root,this._trailingSlash=this.options.trailingSlash,this._wantsHashChange=this.options.hashChange!==!1,this._hasHashChange="onhashchange"in window&&(document.documentMode===void 0||document.documentMode>7),this._useHashChange=this._wantsHashChange&&this._hasHashChange,this._wantsPushState=!!this.options.pushState,this._hasPushState=!!(this.history&&this.history.pushState),this._usePushState=this._wantsPushState&&this._hasPushState,this.fragment=this.getFragment(),this.root=("/"+this.root+"/").replace(ri,"/"),this._wantsHashChange&&this._wantsPushState)if(this._hasPushState||this.atRoot())this._hasPushState&&this.atRoot()&&this.navigate(this.getHash(),{replace:!0});else return f=this.root.slice(0,-1)||"/",this.location.replace(f+"#"+this.getPath()),!0;return this._hasHashChange||!this._wantsHashChange||this._usePushState||(this.iframe=document.createElement("iframe"),this.iframe.src="javascript:0",this.iframe.style.display="none",this.iframe.tabIndex=-1,r=document.body,t=r.insertBefore(this.iframe,r.firstChild).contentWindow,t.document.open(),t.document.close(),t.location.hash="#"+this.fragment),u=window.addEventListener||function(n,t){return attachEvent("on"+n,t)},this._usePushState?u("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe?u("hashchange",this.checkUrl,!1):this._wantsHashChange&&(this._checkUrlInterval=setInterval(this.checkUrl,this.interval)),this.options.silent?void 0:this.loadUrl()},stop:function(){var n=window.removeEventListener||function(n,t){return detachEvent("on"+n,t)};this._usePushState?n("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe&&n("hashchange",this.checkUrl,!1);this.iframe&&(document.body.removeChild(this.iframe),this.iframe=null);this._checkUrlInterval&&clearInterval(this._checkUrlInterval);e.started=!1},route:function(n,t){this.handlers.unshift({route:n,callback:t})},checkUrl:function(){var n=this.getFragment();if(n===this.fragment&&this.iframe&&(n=this.getHash(this.iframe.contentWindow)),n===this.fragment)return this.matchRoot()?!1:this.notfound();this.iframe&&this.navigate(n);this.loadUrl()},loadUrl:function(n){return this.matchRoot()?(n=this.fragment=this.getFragment(n),i.some(this.handlers,function(t){if(t.route.test(n))return t.callback(n),!0})||this.notfound()):this.notfound()},notfound:function(){return this.trigger("notfound"),!1},navigate:function(n,t){var i,u,f,r;if(!e.started)return!1;if(t&&t!==!0||(t={trigger:!!t}),n=this.getFragment(n||""),i=this.root,this._trailingSlash||n!==""&&n.charAt(0)!=="?"||(i=i.slice(0,-1)||"/"),u=i+n,n=n.replace(ui,""),f=this.decodeFragment(n),this.fragment!==f){if(this.fragment=f,this._usePushState)this.history[t.replace?"replaceState":"pushState"]({},document.title,u);else if(this._wantsHashChange)this._updateHash(this.location,n,t.replace),this.iframe&&n!==this.getHash(this.iframe.contentWindow)&&(r=this.iframe.contentWindow,t.replace||(r.document.open(),r.document.close()),this._updateHash(r.location,n,t.replace));else return this.location.assign(u);if(t.trigger)return this.loadUrl(n)}},_updateHash:function(n,t,i){if(i){var r=n.href.replace(/(javascript:|#).*$/,"");n.replace(r+"#"+t)}else n.hash="#"+t}}),t.history=new e,ht=function(n,t){var u=this,r;return r=n&&i.has(n,"constructor")?n.constructor:function(){return u.apply(this,arguments)},i.extend(r,u,t),r.prototype=i.create(u.prototype,n),r.prototype.constructor=r,r.__super__=u.prototype,r},s.extend=h.extend=st.extend=ut.extend=e.extend=ht,w=function(){throw new Error('A "url" property or function must be specified');},a=function(n,t){var i=t.error;t.error=function(r){i&&i.call(t.context,n,r,t);n.trigger("error",n,r,t)}},t._debug=function(){return{root:n,_:i}},t})