(function(e,t){typeofdefine=="function"&&define.amd?define(["underscore"],function(n){returnt(n,e)}):t(e._,e)})(this,function(e,t,n){varr="/",i=50,s=0,o="postal",u=function(){},a=function(){vart;returnfunction(n){varr=!1;returne.isString(n)?(r=n===t,t=n):(r=e.isEqual(n,t),t=e.clone(n)),!r}},f=function(){vart=[];returnfunction(n){varr=!e.any(t,function(t){returne.isObject(n)||e.isArray(n)?e.isEqual(n,t):n===t});returnr&&t.push(n),r}},l=function(e,t){this.channel=e||r,this._topic=t||""};l.prototype={subscribe:function(){vare=arguments.length;if(e===1)returnnewc(this.channel,this._topic,arguments[0]);if(e===2)returnnewc(this.channel,arguments[0],arguments[1])},publish:function(e){vart=e||{},n={channel:this.channel,topic:this._topic,data:t};returnt.topic&&t.data&&(n=t,n.channel=n.channel||this.channel),n.timeStamp=newDate,g.configuration.bus.publish(n),n},topic:function(e){returne===this._topic?this:newl(this.channel,e)}};varc=function(e,t,n){this.channel=e,this.topic=t,this.callback=n,this.priority=i,this.constraints=newArray(0),this.maxCalls=s,this.onHandled=u,this.context=null,g.configuration.bus.publish({channel:o,topic:"subscription.created",timeStamp:newDate,data:{event:"subscription.created",channel:e,topic:t}}),g.configuration.bus.subscribe(this)};c.prototype={unsubscribe:function(){g.configuration.bus.unsubscribe(this),g.configuration.bus.publish({channel:o,topic:"subscription.removed",timeStamp:newDate,data:{event:"subscription.removed",channel:this.channel,topic:this.topic}})},defer:function(){vare=this.callback;returnthis.callback=function(t){setTimeout(e,0,t)},this},disposeAfter:function(t){if(e.isNaN(t)||t<=0)throw"The value provided to disposeAfter (maxCalls) must be a number greater than zero.";varn=this.onHandled,r=e.after(t,e.bind(function(){this.unsubscribe(this)},this));returnthis.onHandled=function(){n.apply(this.context,arguments),r()},this},distinctUntilChanged:function(){returnthis.withConstraint(newa),this},distinct:function(){returnthis.withConstraint(newf),this},once:function(){this.disposeAfter(1)},withConstraint:function(t){if(!e.isFunction(t))throw"Predicate constraint must be a function";returnthis.constraints.push(t),this},withConstraints:function(t){varn=this;returne.isArray(t)&&e.each(t,function(e){n.withConstraint(e)}),n},withContext:function(e){returnthis.context=e,this},withDebounce:function(t){if(e.isNaN(t))throw"Milliseconds must be a number";varn=this.callback;returnthis.callback=e.debounce(n,t),this},withDelay:function(t){if(e.isNaN(t))throw"Milliseconds must be a number";varn=this.callback;returnthis.callback=function(e){setTimeout(function(){n(e)},t)},this},withPriority:function(t){if(e.isNaN(t))throw"Priority must be a number";returnthis.priority=t,g.configuration.bus.changePriority(this),this},withThrottle:function(t){if(e.isNaN(t))throw"Milliseconds must be a number";varn=this.callback;returnthis.callback=e.throttle(n,t),this},subscribe:function(e){returnthis.callback=e,this}};varh={cache:{},compare:function(e,t){if(this.cache[t]&&this.cache[t][e])return!0;varn=("^"+e.replace(/\./g,"\\.").replace(/\*/g,"[A-Z,a-z,0-9]*").replace(/#/g,".*")+"$").replace("\\..*$","(\\..*)*$").replace("^.*\\.","^(.*\\.)*"),r=newRegExp(n),i=r.test(t);returni&&(this.cache[t]||(this.cache[t]={}),this.cache[t][e]=!0),i},reset:function(){this.cache={}}},p={addWireTap:function(e){vart=this;returnt.wireTaps.push(e),function(){varn=t.wireTaps.indexOf(e);n!==-1&&t.wireTaps.splice(n,1)}},changePriority:function(t){varn,r;if(this.subscriptions[t.channel]&&this.subscriptions[t.channel][t.topic]){this.subscriptions[t.channel][t.topic]=e.without(this.subscriptions[t.channel][t.topic],t),n=this.subscriptions[t.channel][t.topic].length-1;for(;n>=0;n--)if(this.subscriptions[t.channel][t.topic][n].priority<=t.priority){this.subscriptions[t.channel][t.topic].splice(n+1,0,t),r=!0;break}r||this.subscriptions[t.channel][t.topic].unshift(t)}},publish:function(t){e.each(this.wireTaps,function(e){e(t.data,t)}),this.subscriptions[t.channel]&&e.each(this.subscriptions[t.ch