{"version":3,"sources":["license.js","loader.js","@ember/-internals/browser-environment.js","@ember/-internals/environment.js","@ember/-internals/utils.js","@ember/canary-features/index.js","@ember/debug/index.js","@ember/debug/lib/deprecate.js","@ember/debug/lib/handlers.js","@ember/debug/lib/testing.js","@ember/debug/lib/warn.js","@ember/deprecated-features/index.js","@ember/error/index.js","@ember/polyfills/index.js","@ember/polyfills/lib/assign.js","@ember/polyfills/lib/merge.js","@ember/polyfills/lib/weak_set.js","@glimmer/compiler.js","@glimmer/syntax.js","@glimmer/util.js","@glimmer/wire-format.js","ember-babel.js","ember-template-compiler/index.js","ember-template-compiler/lib/compat.js","ember-template-compiler/lib/plugins/assert-if-helper-without-arguments.js","ember-template-compiler/lib/plugins/assert-input-helper-without-block.js","ember-template-compiler/lib/plugins/assert-local-variable-shadowing-helper-invocation.js","ember-template-compiler/lib/plugins/assert-reserved-named-arguments.js","ember-template-compiler/lib/plugins/assert-splattribute-expression.js","ember-template-compiler/lib/plugins/deprecate-send-action.js","ember-template-compiler/lib/plugins/index.js","ember-template-compiler/lib/plugins/transform-action-syntax.js","ember-template-compiler/lib/plugins/transform-attrs-into-args.js","ember-template-compiler/lib/plugins/transform-component-invocation.js","ember-template-compiler/lib/plugins/transform-each-in-into-each.js","ember-template-compiler/lib/plugins/transform-has-block-syntax.js","ember-template-compiler/lib/plugins/transform-in-element.js","ember-template-compiler/lib/plugins/transform-input-type-syntax.js","ember-template-compiler/lib/plugins/transform-link-to.js","ember-template-compiler/lib/plugins/transform-old-class-binding-syntax.js","ember-template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings.js","ember-template-compiler/lib/system/bootstrap.js","ember-template-compiler/lib/system/calculate-location-display.js","ember-template-compiler/lib/system/compile-options.js","ember-template-compiler/lib/system/compile.js","ember-template-compiler/lib/system/dasherize-component-name.js","ember-template-compiler/lib/system/initializer.js","ember-template-compiler/lib/system/precompile.js","ember-template-compiler/tests/plugins/assert-if-helper-without-arguments-test.js","ember-template-compiler/tests/plugins/assert-input-helper-without-block-test.js","ember-template-compiler/tests/plugins/assert-local-variable-shadowing-helper-invocation-test.js","ember-template-compiler/tests/plugins/assert-reserved-named-arguments-test.js","ember-template-compiler/tests/plugins/assert-splattribute-expression-test.js","ember-template-compiler/tests/plugins/deprecate-send-action-test.js","ember-template-compiler/tests/plugins/transform-component-invocation-test.js","ember-template-compiler/tests/plugins/transform-input-type-syntax-test.js","ember-template-compiler/tests/plugins/transform-link-to-test.js","ember-template-compiler/tests/system/bootstrap-test.js","ember-template-compiler/tests/system/compile_options_test.js","ember-template-compiler/tests/system/dasherize-component-name-test.js","ember-template-compiler/tests/utils/transform-test-case.js","ember/version.js","handlebars.js","node-module.js","simple-html-tokenizer.js","bootstrap"],"sourcesContent":["/*!\n * @overview Ember - JavaScript Application Framework\n * @copyright Copyright 2011-2018 Tilde Inc. and contributors\n * Portions Copyright 2006-2011 Strobe Inc.\n * Portions Copyright 2008-2011 Apple Inc. All rights reserved.\n * @license Licensed under MIT license\n * See https://raw.github.com/emberjs/ember.js/master/LICENSE\n * @version 3.10.0\n */\n","/*globals process */\nvar enifed, requireModule, Ember;\n\n// Used in @ember/-internals/environment/lib/global.js\nmainContext = this; // eslint-disable-line no-undef\n\n(function() {\n function missingModule(name, referrerName) {\n if (referrerName) {\n throw new Error('Could not find module ' + name + ' required by: ' + referrerName);\n } else {\n throw new Error('Could not find module ' + name);\n }\n }\n\n function internalRequire(_name, referrerName) {\n var name = _name;\n var mod = registry[name];\n\n if (!mod) {\n name = name + '/index';\n mod = registry[name];\n }\n\n var exports = seen[name];\n\n if (exports !== undefined) {\n return exports;\n }\n\n exports = seen[name] = {};\n\n if (!mod) {\n missingModule(_name, referrerName);\n }\n\n var deps = mod.deps;\n var callback = mod.callback;\n var reified = new Array(deps.length);\n\n for (var i = 0; i < deps.length; i++) {\n if (deps[i] === 'exports') {\n reified[i] = exports;\n } else if (deps[i] === 'require') {\n reified[i] = requireModule;\n } else {\n reified[i] = internalRequire(deps[i], name);\n }\n }\n\n callback.apply(this, reified);\n\n return exports;\n }\n\n var isNode =\n typeof window === 'undefined' &&\n typeof process !== 'undefined' &&\n {}.toString.call(process) === '[object process]';\n\n if (!isNode) {\n Ember = this.Ember = this.Ember || {};\n }\n\n if (typeof Ember === 'undefined') {\n Ember = {};\n }\n\n if (typeof Ember.__loader === 'undefined') {\n var registry = Object.create(null);\n var seen = Object.create(null);\n\n enifed = function(name, deps, callback) {\n var value = {};\n\n if (!callback) {\n value.deps = [];\n value.callback = deps;\n } else {\n value.deps = deps;\n value.callback = callback;\n }\n\n registry[name] = value;\n };\n\n requireModule = function(name) {\n return internalRequire(name, null);\n };\n\n // setup `require` module\n requireModule['default'] = requireModule;\n\n requireModule.has = function registryHas(moduleName) {\n return Boolean(registry[moduleName]) || Boolean(registry[moduleName + '/index']);\n };\n\n requireModule._eak_seen = registry;\n\n Ember.__loader = {\n define: enifed,\n require: requireModule,\n registry: registry,\n };\n } else {\n enifed = Ember.__loader.define;\n requireModule = Ember.__loader.require;\n }\n})();\n","enifed(\"@ember/-internals/browser-environment\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n _exports.hasDOM = _exports.isFirefox = _exports.isChrome = _exports.userAgent = _exports.history = _exports.location = _exports.window = void 0;\n // check if window exists and actually is the global\n var hasDom = typeof self === 'object' && self !== null && self.Object === Object && typeof Window !== 'undefined' && self.constructor === Window && typeof document === 'object' && document !== null && self.document === document && typeof location === 'object' && location !== null && self.location === location && typeof history === 'object' && history !== null && self.history === history && typeof navigator === 'object' && navigator !== null && self.navigator === navigator && typeof navigator.userAgent === 'string';\n _exports.hasDOM = hasDom;\n var window = hasDom ? self : null;\n _exports.window = window;\n var location$1 = hasDom ? self.location : null;\n _exports.location = location$1;\n var history$1 = hasDom ? self.history : null;\n _exports.history = history$1;\n var userAgent = hasDom ? self.navigator.userAgent : 'Lynx (textmode)';\n _exports.userAgent = userAgent;\n var isChrome = hasDom ? Boolean(window.chrome) && !window.opera : false;\n _exports.isChrome = isChrome;\n var isFirefox = hasDom ? typeof InstallTrigger !== 'undefined' : false;\n _exports.isFirefox = isFirefox;\n});","enifed(\"@ember/-internals/environment\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n _exports.getLookup = getLookup;\n _exports.setLookup = setLookup;\n _exports.getENV = getENV;\n _exports.ENV = _exports.context = _exports.global = void 0;\n\n // from lodash to catch fake globals\n function checkGlobal(value) {\n return value && value.Object === Object ? value : undefined;\n } // element ids can ruin global miss checks\n\n\n function checkElementIdShadowing(value) {\n return value && value.nodeType === undefined ? value : undefined;\n } // export real global\n\n\n var global$1 = checkGlobal(checkElementIdShadowing(typeof global === 'object' && global)) || checkGlobal(typeof self === 'object' && self) || checkGlobal(typeof window === 'object' && window) || typeof mainContext !== 'undefined' && mainContext || // set before strict mode in Ember loader/wrapper\n new Function('return this')(); // eval outside of strict mode\n // legacy imports/exports/lookup stuff (should we keep this??)\n\n _exports.global = global$1;\n\n var context = function (global, Ember) {\n return Ember === undefined ? {\n imports: global,\n exports: global,\n lookup: global\n } : {\n // import jQuery\n imports: Ember.imports || global,\n // export Ember\n exports: Ember.exports || global,\n // search for Namespaces\n lookup: Ember.lookup || global\n };\n }(global$1, global$1.Ember);\n\n _exports.context = context;\n\n function getLookup() {\n return context.lookup;\n }\n\n function setLookup(value) {\n context.lookup = value;\n }\n /**\n The hash of environment variables used to control various configuration\n settings. To specify your own or override default settings, add the\n desired properties to a global hash named `EmberENV` (or `ENV` for\n backwards compatibility with earlier versions of Ember). The `EmberENV`\n hash must be created before loading Ember.\n \n @class EmberENV\n @type Object\n @public\n */\n\n\n var ENV = {\n ENABLE_OPTIONAL_FEATURES: false,\n\n /**\n Determines whether Ember should add to `Array`, `Function`, and `String`\n native object prototypes, a few extra methods in order to provide a more\n friendly API.\n We generally recommend leaving this option set to true however, if you need\n to turn it off, you can add the configuration property\n `EXTEND_PROTOTYPES` to `EmberENV` and set it to `false`.\n Note, when disabled (the default configuration for Ember Addons), you will\n instead have to access all methods and functions from the Ember\n namespace.\n @property EXTEND_PROTOTYPES\n @type Boolean\n @default true\n @for EmberENV\n @public\n */\n EXTEND_PROTOTYPES: {\n Array: true,\n Function: true,\n String: true\n },\n\n /**\n The `LOG_STACKTRACE_ON_DEPRECATION` property, when true, tells Ember to log\n a full stack trace during deprecation warnings.\n @property LOG_STACKTRACE_ON_DEPRECATION\n @type Boolean\n @default true\n @for EmberENV\n @public\n */\n LOG_STACKTRACE_ON_DEPRECATION: true,\n\n /**\n The `LOG_VERSION` property, when true, tells Ember to log versions of all\n dependent libraries in use.\n @property LOG_VERSION\n @type Boolean\n @default true\n @for EmberENV\n @public\n */\n LOG_VERSION: true,\n RAISE_ON_DEPRECATION: false,\n STRUCTURED_PROFILE: false,\n\n /**\n Whether to insert a `
` wrapper around the\n application template. See RFC #280.\n This is not intended to be set directly, as the implementation may change in\n the future. Use `@ember/optional-features` instead.\n @property _APPLICATION_TEMPLATE_WRAPPER\n @for EmberENV\n @type Boolean\n @default true\n @private\n */\n _APPLICATION_TEMPLATE_WRAPPER: true,\n\n /**\n Whether to use Glimmer Component semantics (as opposed to the classic \"Curly\"\n components semantics) for template-only components. See RFC #278.\n This is not intended to be set directly, as the implementation may change in\n the future. Use `@ember/optional-features` instead.\n @property _TEMPLATE_ONLY_GLIMMER_COMPONENTS\n @for EmberENV\n @type Boolean\n @default false\n @private\n */\n _TEMPLATE_ONLY_GLIMMER_COMPONENTS: false,\n\n /**\n Whether the app is using jQuery. See RFC #294.\n This is not intended to be set directly, as the implementation may change in\n the future. Use `@ember/optional-features` instead.\n @property _JQUERY_INTEGRATION\n @for EmberENV\n @type Boolean\n @default true\n @private\n */\n _JQUERY_INTEGRATION: true,\n\n /**\n Controls the maximum number of scheduled rerenders without \"settling\". In general,\n applications should not need to modify this environment variable, but please\n open an issue so that we can determine if a better default value is needed.\n @property _RERENDER_LOOP_LIMIT\n @for EmberENV\n @type number\n @default 1000\n @private\n */\n _RERENDER_LOOP_LIMIT: 1000,\n EMBER_LOAD_HOOKS: {},\n FEATURES: {}\n };\n _exports.ENV = ENV;\n\n (function (EmberENV) {\n if (typeof EmberENV !== 'object' || EmberENV === null) return;\n\n for (var flag in EmberENV) {\n if (!EmberENV.hasOwnProperty(flag) || flag === 'EXTEND_PROTOTYPES' || flag === 'EMBER_LOAD_HOOKS') continue;\n var defaultValue = ENV[flag];\n\n if (defaultValue === true) {\n ENV[flag] = EmberENV[flag] !== false;\n } else if (defaultValue === false) {\n ENV[flag] = EmberENV[flag] === true;\n }\n }\n\n var EXTEND_PROTOTYPES = EmberENV.EXTEND_PROTOTYPES;\n\n if (EXTEND_PROTOTYPES !== undefined) {\n if (typeof EXTEND_PROTOTYPES === 'object' && EXTEND_PROTOTYPES !== null) {\n ENV.EXTEND_PROTOTYPES.String = EXTEND_PROTOTYPES.String !== false;\n ENV.EXTEND_PROTOTYPES.Function = EXTEND_PROTOTYPES.Function !== false;\n ENV.EXTEND_PROTOTYPES.Array = EXTEND_PROTOTYPES.Array !== false;\n } else {\n var isEnabled = EXTEND_PROTOTYPES !== false;\n ENV.EXTEND_PROTOTYPES.String = isEnabled;\n ENV.EXTEND_PROTOTYPES.Function = isEnabled;\n ENV.EXTEND_PROTOTYPES.Array = isEnabled;\n }\n } // TODO this does not seem to be used by anything,\n // can we remove it? do we need to deprecate it?\n\n\n var EMBER_LOAD_HOOKS = EmberENV.EMBER_LOAD_HOOKS;\n\n if (typeof EMBER_LOAD_HOOKS === 'object' && EMBER_LOAD_HOOKS !== null) {\n for (var hookName in EMBER_LOAD_HOOKS) {\n if (!EMBER_LOAD_HOOKS.hasOwnProperty(hookName)) continue;\n var hooks = EMBER_LOAD_HOOKS[hookName];\n\n if (Array.isArray(hooks)) {\n ENV.EMBER_LOAD_HOOKS[hookName] = hooks.filter(function (hook) {\n return typeof hook === 'function';\n });\n }\n }\n }\n\n var FEATURES = EmberENV.FEATURES;\n\n if (typeof FEATURES === 'object' && FEATURES !== null) {\n for (var feature in FEATURES) {\n if (!FEATURES.hasOwnProperty(feature)) continue;\n ENV.FEATURES[feature] = FEATURES[feature] === true;\n }\n }\n })(global$1.EmberENV || global$1.ENV);\n\n function getENV() {\n return ENV;\n }\n});","enifed(\"@ember/-internals/utils\", [\"exports\", \"@ember/polyfills\"], function (_exports, _polyfills) {\n \"use strict\";\n\n _exports.symbol = symbol;\n _exports.isInternalSymbol = isInternalSymbol;\n _exports.dictionary = makeDictionary;\n _exports.uuid = uuid;\n _exports.generateGuid = generateGuid;\n _exports.guidFor = guidFor;\n _exports.intern = intern;\n _exports.wrap = wrap;\n _exports.getObservers = getObservers;\n _exports.getListeners = getListeners;\n _exports.setObservers = setObservers;\n _exports.setListeners = setListeners;\n _exports.inspect = inspect;\n _exports.lookupDescriptor = lookupDescriptor;\n _exports.canInvoke = canInvoke;\n _exports.tryInvoke = tryInvoke;\n _exports.makeArray = makeArray;\n _exports.getName = getName;\n _exports.setName = setName;\n _exports.toString = toString;\n _exports.isProxy = isProxy;\n _exports.setProxy = setProxy;\n _exports.Cache = _exports.HAS_NATIVE_PROXY = _exports.HAS_NATIVE_SYMBOL = _exports.ROOT = _exports.checkHasSuper = _exports.GUID_KEY = _exports.getOwnPropertyDescriptors = _exports.NAME_KEY = void 0;\n\n /**\n Strongly hint runtimes to intern the provided string.\n \n When do I need to use this function?\n \n For the most part, never. Pre-mature optimization is bad, and often the\n runtime does exactly what you need it to, and more often the trade-off isn't\n worth it.\n \n Why?\n \n Runtimes store strings in at least 2 different representations:\n Ropes and Symbols (interned strings). The Rope provides a memory efficient\n data-structure for strings created from concatenation or some other string\n manipulation like splitting.\n \n Unfortunately checking equality of different ropes can be quite costly as\n runtimes must resort to clever string comparison algorithms. These\n algorithms typically cost in proportion to the length of the string.\n Luckily, this is where the Symbols (interned strings) shine. As Symbols are\n unique by their string content, equality checks can be done by pointer\n comparison.\n \n How do I know if my string is a rope or symbol?\n \n Typically (warning general sweeping statement, but truthy in runtimes at\n present) static strings created as part of the JS source are interned.\n Strings often used for comparisons can be interned at runtime if some\n criteria are met. One of these criteria can be the size of the entire rope.\n For example, in chrome 38 a rope longer then 12 characters will not\n intern, nor will segments of that rope.\n \n Some numbers: http://jsperf.com/eval-vs-keys/8\n \n Known Trickā¢\n \n @private\n @return {String} interned version of the provided string\n */\n function intern(str) {\n var obj = {};\n obj[str] = 1;\n\n for (var key in obj) {\n if (key === str) {\n return key;\n }\n }\n\n return str;\n }\n /**\n Returns whether Type(value) is Object.\n \n Useful for checking whether a value is a valid WeakMap key.\n \n Refs: https://tc39.github.io/ecma262/#sec-typeof-operator-runtime-semantics-evaluation\n https://tc39.github.io/ecma262/#sec-weakmap.prototype.set\n \n @private\n @function isObject\n */\n\n\n function isObject(value) {\n return value !== null && (typeof value === 'object' || typeof value === 'function');\n }\n /**\n @module @ember/object\n */\n\n /**\n Previously we used `Ember.$.uuid`, however `$.uuid` has been removed from\n jQuery master. We'll just bootstrap our own uuid now.\n \n @private\n @return {Number} the uuid\n */\n\n\n var _uuid = 0;\n /**\n Generates a universally unique identifier. This method\n is used internally by Ember for assisting with\n the generation of GUID's and other unique identifiers.\n \n @public\n @return {Number} [description]\n */\n\n function uuid() {\n return ++_uuid;\n }\n /**\n Prefix used for guids through out Ember.\n @private\n @property GUID_PREFIX\n @for Ember\n @type String\n @final\n */\n\n\n var GUID_PREFIX = 'ember'; // Used for guid generation...\n\n var OBJECT_GUIDS = new WeakMap();\n var NON_OBJECT_GUIDS = new Map();\n /**\n A unique key used to assign guids and other private metadata to objects.\n If you inspect an object in your browser debugger you will often see these.\n They can be safely ignored.\n \n On browsers that support it, these properties are added with enumeration\n disabled so they won't show up when you iterate over your properties.\n \n @private\n @property GUID_KEY\n @for Ember\n @type String\n @final\n */\n\n var GUID_KEY = intern(\"__ember\" + Date.now());\n /**\n Generates a new guid, optionally saving the guid to the object that you\n pass in. You will rarely need to use this method. Instead you should\n call `guidFor(obj)`, which return an existing guid if available.\n \n @private\n @method generateGuid\n @static\n @for @ember/object/internals\n @param {Object} [obj] Object the guid will be used for. If passed in, the guid will\n be saved on the object and reused whenever you pass the same object\n again.\n \n If no object is passed, just generate a new guid.\n @param {String} [prefix] Prefix to place in front of the guid. Useful when you want to\n separate the guid into separate namespaces.\n @return {String} the guid\n */\n\n _exports.GUID_KEY = GUID_KEY;\n\n function generateGuid(obj) {\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : GUID_PREFIX;\n var guid = prefix + uuid();\n\n if (isObject(obj)) {\n OBJECT_GUIDS.set(obj, guid);\n }\n\n return guid;\n }\n /**\n Returns a unique id for the object. If the object does not yet have a guid,\n one will be assigned to it. You can call this on any object,\n `EmberObject`-based or not.\n \n You can also use this method on DOM Element objects.\n \n @public\n @static\n @method guidFor\n @for @ember/object/internals\n @param {Object} obj any object, string, number, Element, or primitive\n @return {String} the unique guid for this instance.\n */\n\n\n function guidFor(value) {\n var guid;\n\n if (isObject(value)) {\n guid = OBJECT_GUIDS.get(value);\n\n if (guid === undefined) {\n guid = GUID_PREFIX + uuid();\n OBJECT_GUIDS.set(value, guid);\n }\n } else {\n guid = NON_OBJECT_GUIDS.get(value);\n\n if (guid === undefined) {\n var type = typeof value;\n\n if (type === 'string') {\n guid = 'st' + uuid();\n } else if (type === 'number') {\n guid = 'nu' + uuid();\n } else if (type === 'symbol') {\n guid = 'sy' + uuid();\n } else {\n guid = '(' + value + ')';\n }\n\n NON_OBJECT_GUIDS.set(value, guid);\n }\n }\n\n return guid;\n }\n\n var GENERATED_SYMBOLS = [];\n\n function isInternalSymbol(possibleSymbol) {\n return GENERATED_SYMBOLS.indexOf(possibleSymbol) !== -1;\n }\n\n function symbol(debugName) {\n // TODO: Investigate using platform symbols, but we do not\n // want to require non-enumerability for this API, which\n // would introduce a large cost.\n var id = GUID_KEY + Math.floor(Math.random() * Date.now());\n var symbol = intern(\"__\" + debugName + id + \"__\");\n GENERATED_SYMBOLS.push(symbol);\n return symbol;\n } // the delete is meant to hint at runtimes that this object should remain in\n // dictionary mode. This is clearly a runtime specific hack, but currently it\n // appears worthwhile in some usecases. Please note, these deletes do increase\n // the cost of creation dramatically over a plain Object.create. And as this\n // only makes sense for long-lived dictionaries that aren't instantiated often.\n\n\n function makeDictionary(parent) {\n var dict = Object.create(parent);\n dict['_dict'] = null;\n delete dict['_dict'];\n return dict;\n }\n\n var getOwnPropertyDescriptors;\n\n if (Object.getOwnPropertyDescriptors !== undefined) {\n getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors;\n } else {\n getOwnPropertyDescriptors = function (obj) {\n var descriptors = {};\n Object.keys(obj).forEach(function (key) {\n descriptors[key] = Object.getOwnPropertyDescriptor(obj, key);\n });\n return descriptors;\n };\n }\n\n var getOwnPropertyDescriptors$1 = getOwnPropertyDescriptors;\n _exports.getOwnPropertyDescriptors = getOwnPropertyDescriptors$1;\n var HAS_SUPER_PATTERN = /\\.(_super|call\\(this|apply\\(this)/;\n var fnToString = Function.prototype.toString;\n\n var checkHasSuper = function () {\n var sourceAvailable = fnToString.call(function () {\n return this;\n }).indexOf('return this') > -1;\n\n if (sourceAvailable) {\n return function checkHasSuper(func) {\n return HAS_SUPER_PATTERN.test(fnToString.call(func));\n };\n }\n\n return function checkHasSuper() {\n return true;\n };\n }();\n\n _exports.checkHasSuper = checkHasSuper;\n var HAS_SUPER_MAP = new WeakMap();\n var ROOT = Object.freeze(function () {});\n _exports.ROOT = ROOT;\n HAS_SUPER_MAP.set(ROOT, false);\n\n function hasSuper(func) {\n var hasSuper = HAS_SUPER_MAP.get(func);\n\n if (hasSuper === undefined) {\n hasSuper = checkHasSuper(func);\n HAS_SUPER_MAP.set(func, hasSuper);\n }\n\n return hasSuper;\n }\n\n var OBSERVERS_MAP = new WeakMap();\n\n function setObservers(func, observers) {\n if (observers) {\n OBSERVERS_MAP.set(func, observers);\n }\n }\n\n function getObservers(func) {\n return OBSERVERS_MAP.get(func);\n }\n\n var LISTENERS_MAP = new WeakMap();\n\n function setListeners(func, listeners) {\n if (listeners) {\n LISTENERS_MAP.set(func, listeners);\n }\n }\n\n function getListeners(func) {\n return LISTENERS_MAP.get(func);\n }\n\n var IS_WRAPPED_FUNCTION_SET = new _polyfills._WeakSet();\n /**\n Wraps the passed function so that `this._super` will point to the superFunc\n when the function is invoked. This is the primitive we use to implement\n calls to super.\n \n @private\n @method wrap\n @for Ember\n @param {Function} func The function to call\n @param {Function} superFunc The super function.\n @return {Function} wrapped function.\n */\n\n function wrap(func, superFunc) {\n if (!hasSuper(func)) {\n return func;\n } // ensure an unwrapped super that calls _super is wrapped with a terminal _super\n\n\n if (!IS_WRAPPED_FUNCTION_SET.has(superFunc) && hasSuper(superFunc)) {\n return _wrap(func, _wrap(superFunc, ROOT));\n }\n\n return _wrap(func, superFunc);\n }\n\n function _wrap(func, superFunc) {\n function superWrapper() {\n var orig = this._super;\n this._super = superFunc;\n var ret = func.apply(this, arguments);\n this._super = orig;\n return ret;\n }\n\n IS_WRAPPED_FUNCTION_SET.add(superWrapper);\n setObservers(superWrapper, getObservers(func));\n setListeners(superWrapper, getListeners(func));\n return superWrapper;\n }\n\n var objectToString = Object.prototype.toString;\n var functionToString = Function.prototype.toString;\n var isArray = Array.isArray;\n var objectKeys = Object.keys;\n var stringify = JSON.stringify;\n var LIST_LIMIT = 100;\n var DEPTH_LIMIT = 4;\n var SAFE_KEY = /^[\\w$]+$/;\n /**\n @module @ember/debug\n */\n\n /**\n Convenience method to inspect an object. This method will attempt to\n convert the object into a useful string description.\n \n It is a pretty simple implementation. If you want something more robust,\n use something like JSDump: https://github.com/NV/jsDump\n \n @method inspect\n @static\n @param {Object} obj The object you want to inspect.\n @return {String} A description of the object\n @since 1.4.0\n @private\n */\n\n function inspect(obj) {\n // detect Node util.inspect call inspect(depth: number, opts: object)\n if (typeof obj === 'number' && arguments.length === 2) {\n return this;\n }\n\n return inspectValue(obj, 0);\n }\n\n function inspectValue(value, depth, seen) {\n var valueIsArray = false;\n\n switch (typeof value) {\n case 'undefined':\n return 'undefined';\n\n case 'object':\n if (value === null) return 'null';\n\n if (isArray(value)) {\n valueIsArray = true;\n break;\n } // is toString Object.prototype.toString or undefined then traverse\n\n\n if (value.toString === objectToString || value.toString === undefined) {\n break;\n } // custom toString\n\n\n return value.toString();\n\n case 'function':\n return value.toString === functionToString ? value.name ? \"[Function:\" + value.name + \"]\" : \"[Function]\" : value.toString();\n\n case 'string':\n return stringify(value);\n\n case 'symbol':\n case 'boolean':\n case 'number':\n default:\n return value.toString();\n }\n\n if (seen === undefined) {\n seen = new _polyfills._WeakSet();\n } else {\n if (seen.has(value)) return \"[Circular]\";\n }\n\n seen.add(value);\n return valueIsArray ? inspectArray(value, depth + 1, seen) : inspectObject(value, depth + 1, seen);\n }\n\n function inspectKey(key) {\n return SAFE_KEY.test(key) ? key : stringify(key);\n }\n\n function inspectObject(obj, depth, seen) {\n if (depth > DEPTH_LIMIT) {\n return '[Object]';\n }\n\n var s = '{';\n var keys = objectKeys(obj);\n\n for (var i = 0; i < keys.length; i++) {\n s += i === 0 ? ' ' : ', ';\n\n if (i >= LIST_LIMIT) {\n s += \"... \" + (keys.length - LIST_LIMIT) + \" more keys\";\n break;\n }\n\n var key = keys[i];\n s += inspectKey(key) + ': ' + inspectValue(obj[key], depth, seen);\n }\n\n s += ' }';\n return s;\n }\n\n function inspectArray(arr, depth, seen) {\n if (depth > DEPTH_LIMIT) {\n return '[Array]';\n }\n\n var s = '[';\n\n for (var i = 0; i < arr.length; i++) {\n s += i === 0 ? ' ' : ', ';\n\n if (i >= LIST_LIMIT) {\n s += \"... \" + (arr.length - LIST_LIMIT) + \" more items\";\n break;\n }\n\n s += inspectValue(arr[i], depth, seen);\n }\n\n s += ' ]';\n return s;\n }\n\n function lookupDescriptor(obj, keyName) {\n var current = obj;\n\n do {\n var descriptor = Object.getOwnPropertyDescriptor(current, keyName);\n\n if (descriptor !== undefined) {\n return descriptor;\n }\n\n current = Object.getPrototypeOf(current);\n } while (current !== null);\n\n return null;\n }\n /**\n Checks to see if the `methodName` exists on the `obj`.\n \n ```javascript\n let foo = { bar: function() { return 'bar'; }, baz: null };\n \n Ember.canInvoke(foo, 'bar'); // true\n Ember.canInvoke(foo, 'baz'); // false\n Ember.canInvoke(foo, 'bat'); // false\n ```\n \n @method canInvoke\n @for Ember\n @param {Object} obj The object to check for the method\n @param {String} methodName The method name to check for\n @return {Boolean}\n @private\n */\n\n\n function canInvoke(obj, methodName) {\n return obj !== null && obj !== undefined && typeof obj[methodName] === 'function';\n }\n /**\n @module @ember/utils\n */\n\n /**\n Checks to see if the `methodName` exists on the `obj`,\n and if it does, invokes it with the arguments passed.\n \n ```javascript\n import { tryInvoke } from '@ember/utils';\n \n let d = new Date('03/15/2013');\n \n tryInvoke(d, 'getTime'); // 1363320000000\n tryInvoke(d, 'setFullYear', [2014]); // 1394856000000\n tryInvoke(d, 'noSuchMethod', [2014]); // undefined\n ```\n \n @method tryInvoke\n @for @ember/utils\n @static\n @param {Object} obj The object to check for the method\n @param {String} methodName The method name to check for\n @param {Array} [args] The arguments to pass to the method\n @return {*} the return value of the invoked method or undefined if it cannot be invoked\n @public\n */\n\n\n function tryInvoke(obj, methodName, args) {\n if (canInvoke(obj, methodName)) {\n var method = obj[methodName];\n return method.apply(obj, args);\n }\n }\n\n var isArray$1 = Array.isArray;\n\n function makeArray(obj) {\n if (obj === null || obj === undefined) {\n return [];\n }\n\n return isArray$1(obj) ? obj : [obj];\n }\n\n var NAMES = new WeakMap();\n\n function setName(obj, name) {\n if (isObject(obj)) NAMES.set(obj, name);\n }\n\n function getName(obj) {\n return NAMES.get(obj);\n }\n\n var objectToString$1 = Object.prototype.toString;\n\n function isNone(obj) {\n return obj === null || obj === undefined;\n }\n /*\n A `toString` util function that supports objects without a `toString`\n method, e.g. an object created with `Object.create(null)`.\n */\n\n\n function toString(obj) {\n if (typeof obj === 'string') {\n return obj;\n }\n\n if (null === obj) return 'null';\n if (undefined === obj) return 'undefined';\n\n if (Array.isArray(obj)) {\n // Reimplement Array.prototype.join according to spec (22.1.3.13)\n // Changing ToString(element) with this safe version of ToString.\n var r = '';\n\n for (var k = 0; k < obj.length; k++) {\n if (k > 0) {\n r += ',';\n }\n\n if (!isNone(obj[k])) {\n r += toString(obj[k]);\n }\n }\n\n return r;\n }\n\n if (typeof obj.toString === 'function') {\n return obj.toString();\n }\n\n return objectToString$1.call(obj);\n }\n\n var HAS_NATIVE_SYMBOL = function () {\n if (typeof Symbol !== 'function') {\n return false;\n } // use `Object`'s `.toString` directly to prevent us from detecting\n // polyfills as native\n\n\n return Object.prototype.toString.call(Symbol()) === '[object Symbol]';\n }();\n\n _exports.HAS_NATIVE_SYMBOL = HAS_NATIVE_SYMBOL;\n var HAS_NATIVE_PROXY = typeof Proxy === 'function';\n _exports.HAS_NATIVE_PROXY = HAS_NATIVE_PROXY;\n var PROXIES = new _polyfills._WeakSet();\n\n function isProxy(value) {\n if (isObject(value)) {\n return PROXIES.has(value);\n }\n\n return false;\n }\n\n function setProxy(object) {\n if (isObject(object)) {\n PROXIES.add(object);\n }\n }\n\n var Cache =\n /*#__PURE__*/\n function () {\n function Cache(limit, func, store) {\n this.limit = limit;\n this.func = func;\n this.store = store;\n this.size = 0;\n this.misses = 0;\n this.hits = 0;\n this.store = store || new Map();\n }\n\n var _proto = Cache.prototype;\n\n _proto.get = function get(key) {\n if (this.store.has(key)) {\n this.hits++;\n return this.store.get(key);\n } else {\n this.misses++;\n return this.set(key, this.func(key));\n }\n };\n\n _proto.set = function set(key, value) {\n if (this.limit > this.size) {\n this.size++;\n this.store.set(key, value);\n }\n\n return value;\n };\n\n _proto.purge = function purge() {\n this.store.clear();\n this.size = 0;\n this.hits = 0;\n this.misses = 0;\n };\n\n return Cache;\n }();\n /*\n This package will be eagerly parsed and should have no dependencies on external\n packages.\n \n It is intended to be used to share utility methods that will be needed\n by every Ember application (and is **not** a dumping ground of useful utilities).\n \n Utility methods that are needed in < 80% of cases should be placed\n elsewhere (so they can be lazily evaluated / parsed).\n */\n\n\n _exports.Cache = Cache;\n var NAME_KEY = symbol('NAME_KEY');\n _exports.NAME_KEY = NAME_KEY;\n});","enifed(\"@ember/canary-features/index\", [\"exports\", \"@ember/-internals/environment\", \"@ember/polyfills\"], function (_exports, _environment, _polyfills) {\n \"use strict\";\n\n _exports.isEnabled = isEnabled;\n _exports.EMBER_NATIVE_DECORATOR_SUPPORT = _exports.EMBER_ROUTING_BUILD_ROUTEINFO_METADATA = _exports.EMBER_GLIMMER_ANGLE_BRACKET_BUILT_INS = _exports.EMBER_GLIMMER_ANGLE_BRACKET_NESTED_LOOKUP = _exports.EMBER_METAL_TRACKED_PROPERTIES = _exports.EMBER_MODULE_UNIFICATION = _exports.EMBER_IMPROVED_INSTRUMENTATION = _exports.EMBER_LIBRARIES_ISREGISTERED = _exports.FEATURES = _exports.DEFAULT_FEATURES = void 0;\n\n /**\n Set `EmberENV.FEATURES` in your application's `config/environment.js` file\n to enable canary features in your application.\n \n See the [feature flag guide](https://guides.emberjs.com/release/configuring-ember/feature-flags/)\n for more details.\n \n @module @ember/canary-features\n @public\n */\n var DEFAULT_FEATURES = {\n EMBER_LIBRARIES_ISREGISTERED: false,\n EMBER_IMPROVED_INSTRUMENTATION: false,\n EMBER_MODULE_UNIFICATION: false,\n EMBER_METAL_TRACKED_PROPERTIES: false,\n EMBER_GLIMMER_ANGLE_BRACKET_BUILT_INS: true,\n EMBER_GLIMMER_ANGLE_BRACKET_NESTED_LOOKUP: true,\n EMBER_ROUTING_BUILD_ROUTEINFO_METADATA: true,\n EMBER_NATIVE_DECORATOR_SUPPORT: true\n };\n /**\n The hash of enabled Canary features. Add to this, any canary features\n before creating your application.\n \n @class FEATURES\n @static\n @since 1.1.0\n @public\n */\n\n _exports.DEFAULT_FEATURES = DEFAULT_FEATURES;\n var FEATURES = (0, _polyfills.assign)(DEFAULT_FEATURES, _environment.ENV.FEATURES);\n /**\n Determine whether the specified `feature` is enabled. Used by Ember's\n build tools to exclude experimental features from beta/stable builds.\n \n You can define the following configuration options:\n \n * `EmberENV.ENABLE_OPTIONAL_FEATURES` - enable any features that have not been explicitly\n enabled/disabled.\n \n @method isEnabled\n @param {String} feature The feature to check\n @return {Boolean}\n @since 1.1.0\n @public\n */\n\n _exports.FEATURES = FEATURES;\n\n function isEnabled(feature) {\n var featureValue = FEATURES[feature];\n\n if (featureValue === true || featureValue === false) {\n return featureValue;\n } else if (_environment.ENV.ENABLE_OPTIONAL_FEATURES) {\n return true;\n } else {\n return false;\n }\n }\n\n function featureValue(value) {\n if (_environment.ENV.ENABLE_OPTIONAL_FEATURES && value === null) {\n return true;\n }\n\n return value;\n }\n\n var EMBER_LIBRARIES_ISREGISTERED = featureValue(FEATURES.EMBER_LIBRARIES_ISREGISTERED);\n _exports.EMBER_LIBRARIES_ISREGISTERED = EMBER_LIBRARIES_ISREGISTERED;\n var EMBER_IMPROVED_INSTRUMENTATION = featureValue(FEATURES.EMBER_IMPROVED_INSTRUMENTATION);\n _exports.EMBER_IMPROVED_INSTRUMENTATION = EMBER_IMPROVED_INSTRUMENTATION;\n var EMBER_MODULE_UNIFICATION = featureValue(FEATURES.EMBER_MODULE_UNIFICATION);\n _exports.EMBER_MODULE_UNIFICATION = EMBER_MODULE_UNIFICATION;\n var EMBER_METAL_TRACKED_PROPERTIES = featureValue(FEATURES.EMBER_METAL_TRACKED_PROPERTIES);\n _exports.EMBER_METAL_TRACKED_PROPERTIES = EMBER_METAL_TRACKED_PROPERTIES;\n var EMBER_GLIMMER_ANGLE_BRACKET_NESTED_LOOKUP = featureValue(FEATURES.EMBER_GLIMMER_ANGLE_BRACKET_NESTED_LOOKUP);\n _exports.EMBER_GLIMMER_ANGLE_BRACKET_NESTED_LOOKUP = EMBER_GLIMMER_ANGLE_BRACKET_NESTED_LOOKUP;\n var EMBER_GLIMMER_ANGLE_BRACKET_BUILT_INS = featureValue(FEATURES.EMBER_GLIMMER_ANGLE_BRACKET_BUILT_INS);\n _exports.EMBER_GLIMMER_ANGLE_BRACKET_BUILT_INS = EMBER_GLIMMER_ANGLE_BRACKET_BUILT_INS;\n var EMBER_ROUTING_BUILD_ROUTEINFO_METADATA = featureValue(FEATURES.EMBER_ROUTING_BUILD_ROUTEINFO_METADATA);\n _exports.EMBER_ROUTING_BUILD_ROUTEINFO_METADATA = EMBER_ROUTING_BUILD_ROUTEINFO_METADATA;\n var EMBER_NATIVE_DECORATOR_SUPPORT = featureValue(FEATURES.EMBER_NATIVE_DECORATOR_SUPPORT);\n _exports.EMBER_NATIVE_DECORATOR_SUPPORT = EMBER_NATIVE_DECORATOR_SUPPORT;\n});","enifed(\"@ember/debug/index\", [\"exports\", \"@ember/-internals/browser-environment\", \"@ember/error\", \"@ember/debug/lib/deprecate\", \"@ember/debug/lib/testing\", \"@ember/debug/lib/warn\"], function (_exports, _browserEnvironment, _error, _deprecate2, _testing, _warn2) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"registerDeprecationHandler\", {\n enumerable: true,\n get: function () {\n return _deprecate2.registerHandler;\n }\n });\n Object.defineProperty(_exports, \"isTesting\", {\n enumerable: true,\n get: function () {\n return _testing.isTesting;\n }\n });\n Object.defineProperty(_exports, \"setTesting\", {\n enumerable: true,\n get: function () {\n return _testing.setTesting;\n }\n });\n Object.defineProperty(_exports, \"registerWarnHandler\", {\n enumerable: true,\n get: function () {\n return _warn2.registerHandler;\n }\n });\n _exports._warnIfUsingStrippedFeatureFlags = _exports.getDebugFunction = _exports.setDebugFunction = _exports.deprecateFunc = _exports.runInDebug = _exports.debugFreeze = _exports.debugSeal = _exports.deprecate = _exports.debug = _exports.warn = _exports.info = _exports.assert = void 0;\n\n // These are the default production build versions:\n var noop = function () {};\n\n var assert = noop;\n _exports.assert = assert;\n var info = noop;\n _exports.info = info;\n var warn = noop;\n _exports.warn = warn;\n var debug = noop;\n _exports.debug = debug;\n var deprecate = noop;\n _exports.deprecate = deprecate;\n var debugSeal = noop;\n _exports.debugSeal = debugSeal;\n var debugFreeze = noop;\n _exports.debugFreeze = debugFreeze;\n var runInDebug = noop;\n _exports.runInDebug = runInDebug;\n var setDebugFunction = noop;\n _exports.setDebugFunction = setDebugFunction;\n var getDebugFunction = noop;\n _exports.getDebugFunction = getDebugFunction;\n\n var deprecateFunc = function () {\n return arguments[arguments.length - 1];\n };\n\n _exports.deprecateFunc = deprecateFunc;\n\n if (true\n /* DEBUG */\n ) {\n _exports.setDebugFunction = setDebugFunction = function (type, callback) {\n switch (type) {\n case 'assert':\n return _exports.assert = assert = callback;\n\n case 'info':\n return _exports.info = info = callback;\n\n case 'warn':\n return _exports.warn = warn = callback;\n\n case 'debug':\n return _exports.debug = debug = callback;\n\n case 'deprecate':\n return _exports.deprecate = deprecate = callback;\n\n case 'debugSeal':\n return _exports.debugSeal = debugSeal = callback;\n\n case 'debugFreeze':\n return _exports.debugFreeze = debugFreeze = callback;\n\n case 'runInDebug':\n return _exports.runInDebug = runInDebug = callback;\n\n case 'deprecateFunc':\n return _exports.deprecateFunc = deprecateFunc = callback;\n }\n };\n\n _exports.getDebugFunction = getDebugFunction = function (type) {\n switch (type) {\n case 'assert':\n return assert;\n\n case 'info':\n return info;\n\n case 'warn':\n return warn;\n\n case 'debug':\n return debug;\n\n case 'deprecate':\n return deprecate;\n\n case 'debugSeal':\n return debugSeal;\n\n case 'debugFreeze':\n return debugFreeze;\n\n case 'runInDebug':\n return runInDebug;\n\n case 'deprecateFunc':\n return deprecateFunc;\n }\n };\n }\n /**\n @module @ember/debug\n */\n\n\n if (true\n /* DEBUG */\n ) {\n /**\n Verify that a certain expectation is met, or throw a exception otherwise.\n This is useful for communicating assumptions in the code to other human\n readers as well as catching bugs that accidentally violates these\n expectations.\n Assertions are removed from production builds, so they can be freely added\n for documentation and debugging purposes without worries of incuring any\n performance penalty. However, because of that, they should not be used for\n checks that could reasonably fail during normal usage. Furthermore, care\n should be taken to avoid accidentally relying on side-effects produced from\n evaluating the condition itself, since the code will not run in production.\n ```javascript\n import { assert } from '@ember/debug';\n // Test for truthiness\n assert('Must pass a string', typeof str === 'string');\n // Fail unconditionally\n assert('This code path should never be run');\n ```\n @method assert\n @static\n @for @ember/debug\n @param {String} description Describes the expectation. This will become the\n text of the Error thrown if the assertion fails.\n @param {Boolean} condition Must be truthy for the assertion to pass. If\n falsy, an exception will be thrown.\n @public\n @since 1.0.0\n */\n setDebugFunction('assert', function assert(desc, test) {\n if (!test) {\n throw new _error.default(\"Assertion Failed: \" + desc);\n }\n });\n /**\n Display a debug notice.\n Calls to this function are removed from production builds, so they can be\n freely added for documentation and debugging purposes without worries of\n incuring any performance penalty.\n ```javascript\n import { debug } from '@ember/debug';\n debug('I\\'m a debug notice!');\n ```\n @method debug\n @for @ember/debug\n @static\n @param {String} message A debug message to display.\n @public\n */\n\n setDebugFunction('debug', function debug(message) {\n /* eslint-disable no-console */\n if (console.debug) {\n console.debug(\"DEBUG: \" + message);\n } else {\n console.log(\"DEBUG: \" + message);\n }\n /* eslint-ensable no-console */\n\n });\n /**\n Display an info notice.\n Calls to this function are removed from production builds, so they can be\n freely added for documentation and debugging purposes without worries of\n incuring any performance penalty.\n @method info\n @private\n */\n\n setDebugFunction('info', function info() {\n var _console;\n\n (_console = console).info.apply(_console, arguments);\n /* eslint-disable-line no-console */\n\n });\n /**\n @module @ember/application\n @public\n */\n\n /**\n Alias an old, deprecated method with its new counterpart.\n Display a deprecation warning with the provided message and a stack trace\n (Chrome and Firefox only) when the assigned method is called.\n Calls to this function are removed from production builds, so they can be\n freely added for documentation and debugging purposes without worries of\n incuring any performance penalty.\n ```javascript\n import { deprecateFunc } from '@ember/application/deprecations';\n Ember.oldMethod = deprecateFunc('Please use the new, updated method', options, Ember.newMethod);\n ```\n @method deprecateFunc\n @static\n @for @ember/application/deprecations\n @param {String} message A description of the deprecation.\n @param {Object} [options] The options object for `deprecate`.\n @param {Function} func The new function called to replace its deprecated counterpart.\n @return {Function} A new function that wraps the original function with a deprecation warning\n @private\n */\n\n setDebugFunction('deprecateFunc', function deprecateFunc() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (args.length === 3) {\n var message = args[0],\n options = args[1],\n func = args[2];\n return function () {\n deprecate(message, false, options);\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return func.apply(this, args);\n };\n } else {\n var _message = args[0],\n _func = args[1];\n return function () {\n deprecate(_message);\n return _func.apply(this, arguments);\n };\n }\n });\n /**\n @module @ember/debug\n @public\n */\n\n /**\n Run a function meant for debugging.\n Calls to this function are removed from production builds, so they can be\n freely added for documentation and debugging purposes without worries of\n incuring any performance penalty.\n ```javascript\n import Component from '@ember/component';\n import { runInDebug } from '@ember/debug';\n runInDebug(() => {\n Component.reopen({\n didInsertElement() {\n console.log(\"I'm happy\");\n }\n });\n });\n ```\n @method runInDebug\n @for @ember/debug\n @static\n @param {Function} func The function to be executed.\n @since 1.5.0\n @public\n */\n\n setDebugFunction('runInDebug', function runInDebug(func) {\n func();\n });\n setDebugFunction('debugSeal', function debugSeal(obj) {\n Object.seal(obj);\n });\n setDebugFunction('debugFreeze', function debugFreeze(obj) {\n // re-freezing an already frozen object introduces a significant\n // performance penalty on Chrome (tested through 59).\n //\n // See: https://bugs.chromium.org/p/v8/issues/detail?id=6450\n if (!Object.isFrozen(obj)) {\n Object.freeze(obj);\n }\n });\n setDebugFunction('deprecate', _deprecate2.default);\n setDebugFunction('warn', _warn2.default);\n }\n\n var _warnIfUsingStrippedFeatureFlags;\n\n _exports._warnIfUsingStrippedFeatureFlags = _warnIfUsingStrippedFeatureFlags;\n\n if (true\n /* DEBUG */\n && !(0, _testing.isTesting)()) {\n if (typeof window !== 'undefined' && (_browserEnvironment.isFirefox || _browserEnvironment.isChrome) && window.addEventListener) {\n window.addEventListener('load', function () {\n if (document.documentElement && document.documentElement.dataset && !document.documentElement.dataset.emberExtension) {\n var downloadURL;\n\n if (_browserEnvironment.isChrome) {\n downloadURL = 'https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi';\n } else if (_browserEnvironment.isFirefox) {\n downloadURL = 'https://addons.mozilla.org/en-US/firefox/addon/ember-inspector/';\n }\n\n debug(\"For more advanced debugging, install the Ember Inspector from \" + downloadURL);\n }\n }, false);\n }\n }\n});","enifed(\"@ember/debug/lib/deprecate\", [\"exports\", \"@ember/-internals/environment\", \"@ember/debug/index\", \"@ember/debug/lib/handlers\"], function (_exports, _environment, _index, _handlers) {\n \"use strict\";\n\n _exports.missingOptionsUntilDeprecation = _exports.missingOptionsIdDeprecation = _exports.missingOptionsDeprecation = _exports.registerHandler = _exports.default = void 0;\n\n /**\n @module @ember/debug\n @public\n */\n\n /**\n Allows for runtime registration of handler functions that override the default deprecation behavior.\n Deprecations are invoked by calls to [@ember/application/deprecations/deprecate](https://emberjs.com/api/ember/release/classes/@ember%2Fapplication%2Fdeprecations/methods/deprecate?anchor=deprecate).\n The following example demonstrates its usage by registering a handler that throws an error if the\n message contains the word \"should\", otherwise defers to the default handler.\n \n ```javascript\n import { registerDeprecationHandler } from '@ember/debug';\n \n registerDeprecationHandler((message, options, next) => {\n if (message.indexOf('should') !== -1) {\n throw new Error(`Deprecation message with should: ${message}`);\n } else {\n // defer to whatever handler was registered before this one\n next(message, options);\n }\n });\n ```\n \n The handler function takes the following arguments:\n \nmessage
- The message received from the deprecation call.options
- An object passed in with the deprecation call containing additional information including:id
- An id of the deprecation in the form of package-name.specific-deprecation
.until
- The Ember version number the feature and deprecation will be removed in.next
- A function that calls into the previously registered handler.message
- The message received from the warn call. options
- An object passed in with the warn call containing additional information including:id
- An id of the warning in the form of package-name.specific-warning
.next
- A function that calls into the previously registered handler.