(function(h){var s=[].slice,g=h.requires("underscore"),l=h.imports("Backbone"),d=l&&l.Events;if(!d){var d={on:function(b,c,a){if(!m(this,"on",b,[c,a])||!c)return this;this._events=this._events||{};(this._events[b]||(this._events[b]=[])).push({callback:c,context:a,ctx:a||this});return this},once:function(b,c,a){if(!m(this,"once",b,[c,a])||!c)return this;var e=this,f=g.once(function(){e.off(b,f);c.apply(this,arguments)});f._callback=c;return this.on(b,f,a)},off:function(b,c,a){var e,f,d,k,n,h,p,l;if(!this._events||
!m(this,"off",b,[c,a]))return this;if(!b&&!c&&!a)return this._events={},this;k=b?[b]:g.keys(this._events);n=0;for(h=k.length;n<h;n++)if(b=k[n],d=this._events[b]){this._events[b]=e=[];if(c||a)for(p=0,l=d.length;p<l;p++)f=d[p],(c&&c!==f.callback&&c!==f.callback._callback||a&&a!==f.context)&&e.push(f);e.length||delete this._events[b]}return this},trigger:function(b){if(!this._events)return this;var c=s.call(arguments,1);if(!m(this,"trigger",b,c))return this;var a=this._events[b],e=this._events.all;a&&
q(a,c);e&&q(e,arguments);return this},stopListening:function(b,c,a){var e=this._listeners;if(!e)return this;var f=!c&&!a;"object"===typeof c&&(a=this);b&&((e={})[b._listenerId]=b);for(var d in e)e[d].off(c,a,this),f&&delete this._listeners[d];return this}},r=/\s+/,m=function(b,c,a,e){if(!a)return!0;if("object"===typeof a){for(var f in a)b[c].apply(b,[f,a[f]].concat(e));return!1}if(r.test(a)){a=a.split(r);f=0;for(var d=a.length;f<d;f++)b[c].apply(b,[a[f]].concat(e));return!1}return!0},q=function(b,
c){var a,e=-1,f=b.length,d=c[0],k=c[1],g=c[2];switch(c.length){case 0:for(;++e<f;)(a=b[e]).callback.call(a.ctx);break;case 1:for(;++e<f;)(a=b[e]).callback.call(a.ctx,d);break;case 2:for(;++e<f;)(a=b[e]).callback.call(a.ctx,d,k);break;case 3:for(;++e<f;)(a=b[e]).callback.call(a.ctx,d,k,g);break;default:for(;++e<f;)(a=b[e]).callback.apply(a.ctx,c)}};g.each({listenTo:"on",listenToOnce:"once"},function(b,c){d[c]=function(a,c,d){var h=this._listeners||(this._listeners={}),k=a._listenerId||(a._listenerId=
g.uniqueId("l"));h[k]=a;"object"===typeof c&&(d=this);a[b](c,d,this);return this}});g.each(g.keys(d),function(b){d[b]=g.bind(d[b],d)})}d.bind=d.on;d.unbind=d.off;d.fire=d.trigger;h.exports("Events",d)})(LIModules);