!function(){let globalObject={};function defineRequire(){globalObject.EventDispatcher.requireDefined=!0,define(function(require,exports,module){exports.makeEventDispatcher=globalObject.EventDispatcher.makeEventDispatcher,exports.triggerWithArray=globalObject.EventDispatcher.triggerWithArray,exports.on_duringInit=globalObject.EventDispatcher.on_duringInit,exports.markDeprecated=globalObject.EventDispatcher.markDeprecated,exports.setLeakThresholdForEvent=globalObject.EventDispatcher.setLeakThresholdForEvent})}if("undefined"!=typeof window?globalObject=window:"undefined"!=typeof self?globalObject=self:"undefined"!=typeof global&&(globalObject=global),globalObject.EventDispatcher)return void(globalObject.define&&!globalObject.EventDispatcher.requireDefined&&defineRequire());let LEAK_WARNING_THRESHOLD=15,eventSpecificThreshold={};function splitNs(eventStr){var dot=eventStr.indexOf(".");return-1===dot?{eventName:eventStr}:{eventName:eventStr.substring(0,dot),ns:eventStr.substring(dot)}}function setLeakThresholdForEvent(eventName,threshold){let currentThreshold;threshold>(eventSpecificThreshold[eventName]||LEAK_WARNING_THRESHOLD)&&(eventSpecificThreshold[eventName]=threshold)}var on=function(events,fn){var eventsList=events.split(/\s+/).map(splitNs),i;if(!fn)throw new Error("EventListener.on() called with no listener fn for event '"+events+"'");if(this._deprecatedEvents)for(i=0;ileakThreshold&&console.error("Possible memory leak: "+this._eventHandlers[eventName].length+" '"+eventName+"' listeners attached to",this)}return this},off=function(events,fn){if(!this._eventHandlers)return this;var eventsList=events.split(/\s+/).map(splitNs),i,removeAllMatches=function(eventRec,eventName){var handlerList=this._eventHandlers[eventName],k;if(handlerList){for(k=handlerList.length-1;k>=0;k--)if(!eventRec.ns||eventRec.ns===handlerList[k].ns){var handler=handlerList[k].handler;fn&&fn!==handler&&fn._eventOnceWrapper!==handler||handlerList.splice(k,1)}handlerList.length||delete this._eventHandlers[eventName]}}.bind(this),doRemove=function(eventRec){if(eventRec.eventName)removeAllMatches(eventRec,eventRec.eventName);else for(let eventName in this._eventHandlers)removeAllMatches(eventRec,eventName)}.bind(this);for(i=0;i