{"version":3,"sources":["license.js","loader.js","@ember/-internals/bootstrap/index.js","@ember/-internals/browser-environment/index.js","@ember/-internals/container/index.js","@ember/-internals/environment/index.js","@ember/-internals/error-handling/index.js","@ember/-internals/extension-support/index.js","@ember/-internals/extension-support/lib/container_debug_adapter.js","@ember/-internals/extension-support/lib/data_adapter.js","@ember/-internals/glimmer/index.js","@ember/-internals/meta/index.js","@ember/-internals/meta/lib/meta.js","@ember/-internals/metal/index.js","@ember/-internals/overrides/index.js","@ember/-internals/owner/index.js","@ember/-internals/routing/index.js","@ember/-internals/routing/lib/ext/controller.js","@ember/-internals/routing/lib/location/api.js","@ember/-internals/routing/lib/location/auto_location.js","@ember/-internals/routing/lib/location/hash_location.js","@ember/-internals/routing/lib/location/history_location.js","@ember/-internals/routing/lib/location/none_location.js","@ember/-internals/routing/lib/location/util.js","@ember/-internals/routing/lib/services/router.js","@ember/-internals/routing/lib/services/routing.js","@ember/-internals/routing/lib/system/cache.js","@ember/-internals/routing/lib/system/controller_for.js","@ember/-internals/routing/lib/system/dsl.js","@ember/-internals/routing/lib/system/engines.js","@ember/-internals/routing/lib/system/generate_controller.js","@ember/-internals/routing/lib/system/query_params.js","@ember/-internals/routing/lib/system/route-info.js","@ember/-internals/routing/lib/system/route.js","@ember/-internals/routing/lib/system/router.js","@ember/-internals/routing/lib/system/router_state.js","@ember/-internals/routing/lib/system/transition.js","@ember/-internals/routing/lib/utils.js","@ember/-internals/runtime/index.js","@ember/-internals/runtime/lib/compare.js","@ember/-internals/runtime/lib/ext/rsvp.js","@ember/-internals/runtime/lib/is-equal.js","@ember/-internals/runtime/lib/mixins/-proxy.js","@ember/-internals/runtime/lib/mixins/action_handler.js","@ember/-internals/runtime/lib/mixins/array.js","@ember/-internals/runtime/lib/mixins/comparable.js","@ember/-internals/runtime/lib/mixins/container_proxy.js","@ember/-internals/runtime/lib/mixins/enumerable.js","@ember/-internals/runtime/lib/mixins/evented.js","@ember/-internals/runtime/lib/mixins/mutable_enumerable.js","@ember/-internals/runtime/lib/mixins/observable.js","@ember/-internals/runtime/lib/mixins/promise_proxy.js","@ember/-internals/runtime/lib/mixins/registry_proxy.js","@ember/-internals/runtime/lib/mixins/target_action_support.js","@ember/-internals/runtime/lib/system/array_proxy.js","@ember/-internals/runtime/lib/system/core_object.js","@ember/-internals/runtime/lib/system/namespace.js","@ember/-internals/runtime/lib/system/object.js","@ember/-internals/runtime/lib/system/object_proxy.js","@ember/-internals/runtime/lib/type-of.js","@ember/-internals/utils/index.js","@ember/-internals/views/index.js","@ember/-internals/views/lib/compat/attrs.js","@ember/-internals/views/lib/compat/fallback-view-registry.js","@ember/-internals/views/lib/component_lookup.js","@ember/-internals/views/lib/mixins/action_support.js","@ember/-internals/views/lib/mixins/child_views_support.js","@ember/-internals/views/lib/mixins/class_names_support.js","@ember/-internals/views/lib/mixins/view_state_support.js","@ember/-internals/views/lib/mixins/view_support.js","@ember/-internals/views/lib/system/action_manager.js","@ember/-internals/views/lib/system/event_dispatcher.js","@ember/-internals/views/lib/system/utils.js","@ember/-internals/views/lib/views/core_view.js","@ember/-internals/views/lib/views/states.js","@ember/-internals/views/lib/views/states/default.js","@ember/-internals/views/lib/views/states/destroying.js","@ember/-internals/views/lib/views/states/has_element.js","@ember/-internals/views/lib/views/states/in_dom.js","@ember/-internals/views/lib/views/states/pre_render.js","@ember/application/index.js","@ember/application/instance.js","@ember/application/lib/application.js","@ember/application/lib/lazy_load.js","@ember/application/namespace.js","@ember/array/index.js","@ember/array/mutable.js","@ember/array/proxy.js","@ember/canary-features/index.js","@ember/component/helper.js","@ember/component/index.js","@ember/component/template-only.js","@ember/controller/index.js","@ember/controller/lib/controller_mixin.js","@ember/debug/container-debug-adapter.js","@ember/debug/data-adapter.js","@ember/debug/index.js","@ember/debug/lib/capture-render-tree.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/destroyable/index.js","@ember/engine/index.js","@ember/engine/instance.js","@ember/engine/lib/engine-parent.js","@ember/enumerable/index.js","@ember/error/index.js","@ember/helper/index.js","@ember/instrumentation/index.js","@ember/modifier/index.js","@ember/object/compat.js","@ember/object/computed.js","@ember/object/core.js","@ember/object/evented.js","@ember/object/events.js","@ember/object/index.js","@ember/object/internals.js","@ember/object/lib/computed/computed_macros.js","@ember/object/lib/computed/reduce_computed_macros.js","@ember/object/mixin.js","@ember/object/observable.js","@ember/object/observers.js","@ember/object/promise-proxy-mixin.js","@ember/object/proxy.js","@ember/polyfills/index.js","@ember/polyfills/lib/assign.js","@ember/routing/auto-location.js","@ember/routing/hash-location.js","@ember/routing/history-location.js","@ember/routing/index.js","@ember/routing/location.js","@ember/routing/none-location.js","@ember/routing/route.js","@ember/routing/router.js","@ember/runloop/index.js","@ember/service/index.js","@ember/string/index.js","@ember/string/lib/string_registry.js","@ember/template-compilation/index.js","@ember/template-factory/index.js","@ember/template/index.js","@ember/test/adapter.js","@ember/test/index.js","@ember/utils/index.js","@ember/version/index.js","@glimmer/destroyable.js","@glimmer/encoder.js","@glimmer/env.js","@glimmer/global-context.js","@glimmer/low-level.js","@glimmer/manager.js","@glimmer/node.js","@glimmer/opcode-compiler.js","@glimmer/owner.js","@glimmer/program.js","@glimmer/reference.js","@glimmer/runtime.js","@glimmer/tracking/index.js","@glimmer/tracking/primitives/cache.js","@glimmer/util.js","@glimmer/validator.js","@glimmer/vm.js","@glimmer/wire-format.js","@simple-dom/document.js","backburner.js","dag-map.js","ember-babel.js","ember-testing/index.js","ember-testing/lib/adapters/adapter.js","ember-testing/lib/adapters/qunit.js","ember-testing/lib/ext/application.js","ember-testing/lib/ext/rsvp.js","ember-testing/lib/helpers.js","ember-testing/lib/helpers/and_then.js","ember-testing/lib/helpers/current_path.js","ember-testing/lib/helpers/current_route_name.js","ember-testing/lib/helpers/current_url.js","ember-testing/lib/helpers/pause_test.js","ember-testing/lib/helpers/visit.js","ember-testing/lib/helpers/wait.js","ember-testing/lib/initializers.js","ember-testing/lib/setup_for_testing.js","ember-testing/lib/test.js","ember-testing/lib/test/adapter.js","ember-testing/lib/test/helpers.js","ember-testing/lib/test/on_inject_helpers.js","ember-testing/lib/test/pending_requests.js","ember-testing/lib/test/promise.js","ember-testing/lib/test/run.js","ember-testing/lib/test/waiters.js","ember/index.js","ember/version.js","route-recognizer.js","router_js.js","rsvp.js"],"sourcesContent":["/*!\n * @overview Ember - JavaScript Application Framework\n * @copyright Copyright 2011-2021 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 4.2.0-alpha.6\n */","/* eslint-disable no-var */\n\n/* globals global globalThis self */\n\n/* eslint-disable-next-line no-unused-vars */\nvar define, require;\n\n(function () {\n var globalObj = typeof globalThis !== 'undefined' ? globalThis : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : null;\n\n if (globalObj === null) {\n throw new Error('unable to locate global object');\n }\n\n if (typeof globalObj.define === 'function' && typeof globalObj.require === 'function') {\n define = globalObj.define;\n require = globalObj.require;\n return;\n }\n\n var registry = Object.create(null);\n var seen = Object.create(null);\n\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] = require;\n } else {\n reified[i] = require(deps[i], name);\n }\n }\n\n callback.apply(this, reified);\n return exports;\n }\n\n require = function (name) {\n return internalRequire(name, null);\n }; // eslint-disable-next-line no-unused-vars\n\n\n define = function (name, deps, callback) {\n registry[name] = {\n deps: deps,\n callback: callback\n };\n }; // setup `require` module\n\n\n require['default'] = require;\n\n require.has = function registryHas(moduleName) {\n return Boolean(registry[moduleName]) || Boolean(registry[moduleName + '/index']);\n };\n\n require._eak_seen = require.entries = registry;\n})();","define(\"@ember/-internals/bootstrap/index\", [\"require\"], function (_require) {\n \"use strict\";\n\n (function bootstrap() {\n // Bootstrap Node module\n // eslint-disable-next-line no-undef\n if (typeof module === 'object' && typeof module.require === 'function') {\n // tslint:disable-next-line: no-require-imports\n module.exports = (0, _require.default)(\"ember\").default;\n }\n })();\n});","define(\"@ember/-internals/browser-environment/index\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.hasDOM = _exports.isIE = _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 ? typeof chrome === 'object' && !(typeof opera === 'object') : false;\n _exports.isChrome = isChrome;\n var isFirefox = hasDom ? typeof InstallTrigger !== 'undefined' : false;\n _exports.isFirefox = isFirefox;\n var isIE = hasDom ? typeof MSInputMethodContext !== 'undefined' && typeof documentMode !== 'undefined' : false;\n _exports.isIE = isIE;\n});","define(\"@ember/-internals/container/index\", [\"exports\", \"@ember/-internals/owner\", \"@ember/-internals/utils\", \"@ember/debug\"], function (_exports, _owner, _utils, _debug) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.privatize = privatize;\n _exports.getFactoryFor = getFactoryFor;\n _exports.setFactoryFor = setFactoryFor;\n _exports.INIT_FACTORY = _exports.Container = _exports.Registry = void 0;\n var leakTracking;\n var containers;\n\n if (true\n /* DEBUG */\n ) {\n // requires v8\n // chrome --js-flags=\"--allow-natives-syntax --expose-gc\"\n // node --allow-natives-syntax --expose-gc\n try {\n if (typeof gc === 'function') {\n leakTracking = (() => {\n // avoid syntax errors when --allow-natives-syntax not present\n var GetWeakSetValues = new Function('weakSet', 'return %GetWeakSetValues(weakSet, 0)');\n containers = new WeakSet();\n return {\n hasContainers() {\n gc();\n return GetWeakSetValues(containers).length > 0;\n },\n\n reset() {\n var values = GetWeakSetValues(containers);\n\n for (var i = 0; i < values.length; i++) {\n containers.delete(values[i]);\n }\n }\n\n };\n })();\n }\n } catch (e) {// ignore\n }\n }\n /**\n A container used to instantiate and cache objects.\n \n Every `Container` must be associated with a `Registry`, which is referenced\n to determine the factory and options that should be used to instantiate\n objects.\n \n The public API for `Container` is still in flux and should not be considered\n stable.\n \n @private\n @class Container\n */\n\n\n class Container {\n constructor(registry, options = {}) {\n this.registry = registry;\n this.owner = options.owner || null;\n this.cache = (0, _utils.dictionary)(options.cache || null);\n this.factoryManagerCache = (0, _utils.dictionary)(options.factoryManagerCache || null);\n this.isDestroyed = false;\n this.isDestroying = false;\n\n if (true\n /* DEBUG */\n ) {\n this.validationCache = (0, _utils.dictionary)(options.validationCache || null);\n\n if (containers !== undefined) {\n containers.add(this);\n }\n }\n }\n /**\n @private\n @property registry\n @type Registry\n @since 1.11.0\n */\n\n /**\n @private\n @property cache\n @type InheritingDict\n */\n\n /**\n @private\n @property validationCache\n @type InheritingDict\n */\n\n /**\n Given a fullName return a corresponding instance.\n The default behavior is for lookup to return a singleton instance.\n The singleton is scoped to the container, allowing multiple containers\n to all have their own locally scoped singletons.\n ```javascript\n let registry = new Registry();\n let container = registry.container();\n registry.register('api:twitter', Twitter);\n let twitter = container.lookup('api:twitter');\n twitter instanceof Twitter; // => true\n // by default the container will return singletons\n let twitter2 = container.lookup('api:twitter');\n twitter2 instanceof Twitter; // => true\n twitter === twitter2; //=> true\n ```\n If singletons are not wanted, an optional flag can be provided at lookup.\n ```javascript\n let registry = new Registry();\n let container = registry.container();\n registry.register('api:twitter', Twitter);\n let twitter = container.lookup('api:twitter', { singleton: false });\n let twitter2 = container.lookup('api:twitter', { singleton: false });\n twitter === twitter2; //=> false\n ```\n @private\n @method lookup\n @param {String} fullName\n @param {Object} [options]\n @param {String} [options.source] The fullname of the request source (used for local lookup)\n @return {any}\n */\n\n\n lookup(fullName, options) {\n if (this.isDestroyed) {\n throw new Error(`Can not call \\`.lookup\\` after the owner has been destroyed`);\n }\n\n (true && !(this.registry.isValidFullName(fullName)) && (0, _debug.assert)('fullName must be a proper full name', this.registry.isValidFullName(fullName)));\n return lookup(this, this.registry.normalize(fullName), options);\n }\n /**\n A depth first traversal, destroying the container, its descendant containers and all\n their managed objects.\n @private\n @method destroy\n */\n\n\n destroy() {\n this.isDestroying = true;\n destroyDestroyables(this);\n }\n\n finalizeDestroy() {\n resetCache(this);\n this.isDestroyed = true;\n }\n /**\n Clear either the entire cache or just the cache for a particular key.\n @private\n @method reset\n @param {String} fullName optional key to reset; if missing, resets everything\n */\n\n\n reset(fullName) {\n if (this.isDestroyed) return;\n\n if (fullName === undefined) {\n destroyDestroyables(this);\n resetCache(this);\n } else {\n resetMember(this, this.registry.normalize(fullName));\n }\n }\n /**\n Returns an object that can be used to provide an owner to a\n manually created instance.\n @private\n @method ownerInjection\n @returns { Object }\n */\n\n\n ownerInjection() {\n var injection = {};\n (0, _owner.setOwner)(injection, this.owner);\n return injection;\n }\n /**\n Given a fullName, return the corresponding factory. The consumer of the factory\n is responsible for the destruction of any factory instances, as there is no\n way for the container to ensure instances are destroyed when it itself is\n destroyed.\n @public\n @method factoryFor\n @param {String} fullName\n @param {Object} [options]\n @param {String} [options.source] The fullname of the request source (used for local lookup)\n @return {any}\n */\n\n\n factoryFor(fullName) {\n if (this.isDestroyed) {\n throw new Error(`Can not call \\`.factoryFor\\` after the owner has been destroyed`);\n }\n\n var normalizedName = this.registry.normalize(fullName);\n (true && !(this.registry.isValidFullName(normalizedName)) && (0, _debug.assert)('fullName must be a proper full name', this.registry.isValidFullName(normalizedName)));\n return factoryFor(this, normalizedName, fullName);\n }\n\n }\n\n _exports.Container = Container;\n\n if (true\n /* DEBUG */\n ) {\n Container._leakTracking = leakTracking;\n }\n /*\n * Wrap a factory manager in a proxy which will not permit properties to be\n * set on the manager.\n */\n\n\n function wrapManagerInDeprecationProxy(manager) {\n var validator = {\n set(_obj, prop) {\n throw new Error(`You attempted to set \"${prop}\" on a factory manager created by container#factoryFor. A factory manager is a read-only construct.`);\n }\n\n }; // Note:\n // We have to proxy access to the manager here so that private property\n // access doesn't cause the above errors to occur.\n\n var m = manager;\n var proxiedManager = {\n class: m.class,\n\n create(props) {\n return m.create(props);\n }\n\n };\n return new Proxy(proxiedManager, validator);\n }\n\n function isSingleton(container, fullName) {\n return container.registry.getOption(fullName, 'singleton') !== false;\n }\n\n function isInstantiatable(container, fullName) {\n return container.registry.getOption(fullName, 'instantiate') !== false;\n }\n\n function lookup(container, fullName, options = {}) {\n var normalizedName = fullName;\n\n if (options.singleton === true || options.singleton === undefined && isSingleton(container, fullName)) {\n var cached = container.cache[normalizedName];\n\n if (cached !== undefined) {\n return cached;\n }\n }\n\n return instantiateFactory(container, normalizedName, fullName, options);\n }\n\n function factoryFor(container, normalizedName, fullName) {\n var cached = container.factoryManagerCache[normalizedName];\n\n if (cached !== undefined) {\n return cached;\n }\n\n var factory = container.registry.resolve(normalizedName);\n\n if (factory === undefined) {\n return;\n }\n\n if (true\n /* DEBUG */\n && factory && typeof factory._onLookup === 'function') {\n factory._onLookup(fullName);\n }\n\n var manager = new FactoryManager(container, factory, fullName, normalizedName);\n\n if (true\n /* DEBUG */\n ) {\n manager = wrapManagerInDeprecationProxy(manager);\n }\n\n container.factoryManagerCache[normalizedName] = manager;\n return manager;\n }\n\n function isSingletonClass(container, fullName, {\n instantiate,\n singleton\n }) {\n return singleton !== false && !instantiate && isSingleton(container, fullName) && !isInstantiatable(container, fullName);\n }\n\n function isSingletonInstance(container, fullName, {\n instantiate,\n singleton\n }) {\n return singleton !== false && instantiate !== false && (singleton === true || isSingleton(container, fullName)) && isInstantiatable(container, fullName);\n }\n\n function isFactoryClass(container, fullname, {\n instantiate,\n singleton\n }) {\n return instantiate === false && (singleton === false || !isSingleton(container, fullname)) && !isInstantiatable(container, fullname);\n }\n\n function isFactoryInstance(container, fullName, {\n instantiate,\n singleton\n }) {\n return instantiate !== false && (singleton === false || !isSingleton(container, fullName)) && isInstantiatable(container, fullName);\n }\n\n function instantiateFactory(container, normalizedName, fullName, options) {\n var factoryManager = factoryFor(container, normalizedName, fullName);\n\n if (factoryManager === undefined) {\n return;\n } // SomeClass { singleton: true, instantiate: true } | { singleton: true } | { instantiate: true } | {}\n // By default majority of objects fall into this case\n\n\n if (isSingletonInstance(container, fullName, options)) {\n var instance = container.cache[normalizedName] = factoryManager.create(); // if this lookup happened _during_ destruction (emits a deprecation, but\n // is still possible) ensure that it gets destroyed\n\n if (container.isDestroying) {\n if (typeof instance.destroy === 'function') {\n instance.destroy();\n }\n }\n\n return instance;\n } // SomeClass { singleton: false, instantiate: true }\n\n\n if (isFactoryInstance(container, fullName, options)) {\n return factoryManager.create();\n } // SomeClass { singleton: true, instantiate: false } | { instantiate: false } | { singleton: false, instantiation: false }\n\n\n if (isSingletonClass(container, fullName, options) || isFactoryClass(container, fullName, options)) {\n return factoryManager.class;\n }\n\n throw new Error('Could not create factory');\n }\n\n function destroyDestroyables(container) {\n var cache = container.cache;\n var keys = Object.keys(cache);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = cache[key];\n\n if (value.destroy) {\n value.destroy();\n }\n }\n }\n\n function resetCache(container) {\n container.cache = (0, _utils.dictionary)(null);\n container.factoryManagerCache = (0, _utils.dictionary)(null);\n }\n\n function resetMember(container, fullName) {\n var member = container.cache[fullName];\n delete container.factoryManagerCache[fullName];\n\n if (member) {\n delete container.cache[fullName];\n\n if (member.destroy) {\n member.destroy();\n }\n }\n }\n\n var INIT_FACTORY = (0, _utils.symbol)('INIT_FACTORY');\n _exports.INIT_FACTORY = INIT_FACTORY;\n\n function getFactoryFor(obj) {\n return obj[INIT_FACTORY];\n }\n\n function setFactoryFor(obj, factory) {\n obj[INIT_FACTORY] = factory;\n }\n\n class FactoryManager {\n constructor(container, factory, fullName, normalizedName) {\n this.container = container;\n this.owner = container.owner;\n this.class = factory;\n this.fullName = fullName;\n this.normalizedName = normalizedName;\n this.madeToString = undefined;\n this.injections = undefined;\n setFactoryFor(this, this);\n\n if (isInstantiatable(container, fullName)) {\n setFactoryFor(factory, this);\n }\n }\n\n toString() {\n if (this.madeToString === undefined) {\n this.madeToString = this.container.registry.makeToString(this.class, this.fullName);\n }\n\n return this.madeToString;\n }\n\n create(options) {\n var {\n container\n } = this;\n\n if (container.isDestroyed) {\n throw new Error(`Can not create new instances after the owner has been destroyed (you attempted to create ${this.fullName})`);\n }\n\n var props = {};\n (0, _owner.setOwner)(props, container.owner);\n setFactoryFor(props, this);\n\n if (options !== undefined) {\n props = Object.assign({}, props, options);\n }\n\n if (true\n /* DEBUG */\n ) {\n var lazyInjections;\n var validationCache = this.container.validationCache; // Ensure that all lazy injections are valid at instantiation time\n\n if (!validationCache[this.fullName] && this.class && typeof this.class._lazyInjections === 'function') {\n lazyInjections = this.class._lazyInjections();\n lazyInjections = this.container.registry.normalizeInjectionsHash(lazyInjections);\n this.container.registry.validateInjections(lazyInjections);\n }\n\n validationCache[this.fullName] = true;\n (true && !(typeof this.class.create === 'function') && (0, _debug.assert)(`Failed to create an instance of '${this.normalizedName}'. Most likely an improperly defined class or an invalid module export.`, typeof this.class.create === 'function'));\n }\n\n return this.class.create(props);\n }\n\n }\n\n var VALID_FULL_NAME_REGEXP = /^[^:]+:[^:]+$/;\n /**\n A registry used to store factory and option information keyed\n by type.\n \n A `Registry` stores the factory and option information needed by a\n `Container` to instantiate and cache objects.\n \n The API for `Registry` is still in flux and should not be considered stable.\n \n @private\n @class Registry\n @since 1.11.0\n */\n\n class Registry {\n constructor(options = {}) {\n this.fallback = options.fallback || null;\n this.resolver = options.resolver || null;\n this.registrations = (0, _utils.dictionary)(options.registrations || null);\n this._localLookupCache = Object.create(null);\n this._normalizeCache = (0, _utils.dictionary)(null);\n this._resolveCache = (0, _utils.dictionary)(null);\n this._failSet = new Set();\n this._options = (0, _utils.dictionary)(null);\n this._typeOptions = (0, _utils.dictionary)(null);\n }\n /**\n A backup registry for resolving registrations when no matches can be found.\n @private\n @property fallback\n @type Registry\n */\n\n /**\n An object that has a `resolve` method that resolves a name.\n @private\n @property resolver\n @type Resolver\n */\n\n /**\n @private\n @property registrations\n @type InheritingDict\n */\n\n /**\n @private\n @property _normalizeCache\n @type InheritingDict\n */\n\n /**\n @private\n @property _resolveCache\n @type InheritingDict\n */\n\n /**\n @private\n @property _options\n @type InheritingDict\n */\n\n /**\n @private\n @property _typeOptions\n @type InheritingDict\n */\n\n /**\n Creates a container based on this registry.\n @private\n @method container\n @param {Object} options\n @return {Container} created container\n */\n\n\n container(options) {\n return new Container(this, options);\n }\n /**\n Registers a factory for later injection.\n Example:\n ```javascript\n let registry = new Registry();\n registry.register('model:user', Person, {singleton: false });\n registry.register('fruit:favorite', Orange);\n registry.register('communication:main', Email, {singleton: false});\n ```\n @private\n @method register\n @param {String} fullName\n @param {Function} factory\n @param {Object} options\n */\n\n\n register(fullName, factory, options = {}) {\n (true && !(this.isValidFullName(fullName)) && (0, _debug.assert)('fullName must be a proper full name', this.isValidFullName(fullName)));\n (true && !(factory !== undefined) && (0, _debug.assert)(`Attempting to register an unknown factory: '${fullName}'`, factory !== undefined));\n var normalizedName = this.normalize(fullName);\n (true && !(!this._resolveCache[normalizedName]) && (0, _debug.assert)(`Cannot re-register: '${fullName}', as it has already been resolved.`, !this._resolveCache[normalizedName]));\n\n this._failSet.delete(normalizedName);\n\n this.registrations[normalizedName] = factory;\n this._options[normalizedName] = options;\n }\n /**\n Unregister a fullName\n ```javascript\n let registry = new Registry();\n registry.register('model:user', User);\n registry.resolve('model:user').create() instanceof User //=> true\n registry.unregister('model:user')\n registry.resolve('model:user') === undefined //=> true\n ```\n @private\n @method unregister\n @param {String} fullName\n */\n\n\n unregister(fullName) {\n (true && !(this.isValidFullName(fullName)) && (0, _debug.assert)('fullName must be a proper full name', this.isValidFullName(fullName)));\n var normalizedName = this.normalize(fullName);\n this._localLookupCache = Object.create(null);\n delete this.registrations[normalizedName];\n delete this._resolveCache[normalizedName];\n delete this._options[normalizedName];\n\n this._failSet.delete(normalizedName);\n }\n /**\n Given a fullName return the corresponding factory.\n By default `resolve` will retrieve the factory from\n the registry.\n ```javascript\n let registry = new Registry();\n registry.register('api:twitter', Twitter);\n registry.resolve('api:twitter') // => Twitter\n ```\n Optionally the registry can be provided with a custom resolver.\n If provided, `resolve` will first provide the custom resolver\n the opportunity to resolve the fullName, otherwise it will fallback\n to the registry.\n ```javascript\n let registry = new Registry();\n registry.resolver = function(fullName) {\n // lookup via the module system of choice\n };\n // the twitter factory is added to the module system\n registry.resolve('api:twitter') // => Twitter\n ```\n @private\n @method resolve\n @param {String} fullName\n @param {Object} [options]\n @param {String} [options.source] the fullname of the request source (used for local lookups)\n @return {Function} fullName's factory\n */\n\n\n resolve(fullName) {\n var factory = resolve(this, this.normalize(fullName));\n\n if (factory === undefined && this.fallback !== null) {\n factory = this.fallback.resolve(...arguments);\n }\n\n return factory;\n }\n /**\n A hook that can be used to describe how the resolver will\n attempt to find the factory.\n For example, the default Ember `.describe` returns the full\n class name (including namespace) where Ember's resolver expects\n to find the `fullName`.\n @private\n @method describe\n @param {String} fullName\n @return {string} described fullName\n */\n\n\n describe(fullName) {\n if (this.resolver !== null && this.resolver.lookupDescription) {\n return this.resolver.lookupDescription(fullName);\n } else if (this.fallback !== null) {\n return this.fallback.describe(fullName);\n } else {\n return fullName;\n }\n }\n /**\n A hook to enable custom fullName normalization behavior\n @private\n @method normalizeFullName\n @param {String} fullName\n @return {string} normalized fullName\n */\n\n\n normalizeFullName(fullName) {\n if (this.resolver !== null && this.resolver.normalize) {\n return this.resolver.normalize(fullName);\n } else if (this.fallback !== null) {\n return this.fallback.normalizeFullName(fullName);\n } else {\n return fullName;\n }\n }\n /**\n Normalize a fullName based on the application's conventions\n @private\n @method normalize\n @param {String} fullName\n @return {string} normalized fullName\n */\n\n\n normalize(fullName) {\n return this._normalizeCache[fullName] || (this._normalizeCache[fullName] = this.normalizeFullName(fullName));\n }\n /**\n @method makeToString\n @private\n @param {any} factory\n @param {string} fullName\n @return {function} toString function\n */\n\n\n makeToString(factory, fullName) {\n var _a;\n\n if (this.resolver !== null && this.resolver.makeToString) {\n return this.resolver.makeToString(factory, fullName);\n } else if (this.fallback !== null) {\n return this.fallback.makeToString(factory, fullName);\n } else {\n return typeof factory === 'string' ? factory : (_a = factory.name) !== null && _a !== void 0 ? _a : '(unknown class)';\n }\n }\n /**\n Given a fullName check if the container is aware of its factory\n or singleton instance.\n @private\n @method has\n @param {String} fullName\n @param {Object} [options]\n @param {String} [options.source] the fullname of the request source (used for local lookups)\n @return {Boolean}\n */\n\n\n has(fullName) {\n if (!this.isValidFullName(fullName)) {\n return false;\n }\n\n return has(this, this.normalize(fullName));\n }\n /**\n Allow registering options for all factories of a type.\n ```javascript\n let registry = new Registry();\n let container = registry.container();\n // if all of type `connection` must not be singletons\n registry.optionsForType('connection', { singleton: false });\n registry.register('connection:twitter', TwitterConnection);\n registry.register('connection:facebook', FacebookConnection);\n let twitter = container.lookup('connection:twitter');\n let twitter2 = container.lookup('connection:twitter');\n twitter === twitter2; // => false\n let facebook = container.lookup('connection:facebook');\n let facebook2 = container.lookup('connection:facebook');\n facebook === facebook2; // => false\n ```\n @private\n @method optionsForType\n @param {String} type\n @param {Object} options\n */\n\n\n optionsForType(type, options) {\n this._typeOptions[type] = options;\n }\n\n getOptionsForType(type) {\n var optionsForType = this._typeOptions[type];\n\n if (optionsForType === undefined && this.fallback !== null) {\n optionsForType = this.fallback.getOptionsForType(type);\n }\n\n return optionsForType;\n }\n /**\n @private\n @method options\n @param {String} fullName\n @param {Object} options\n */\n\n\n options(fullName, options) {\n var normalizedName = this.normalize(fullName);\n this._options[normalizedName] = options;\n }\n\n getOptions(fullName) {\n var normalizedName = this.normalize(fullName);\n var options = this._options[normalizedName];\n\n if (options === undefined && this.fallback !== null) {\n options = this.fallback.getOptions(fullName);\n }\n\n return options;\n }\n\n getOption(fullName, optionName) {\n var options = this._options[fullName];\n\n if (options !== undefined && options[optionName] !== undefined) {\n return options[optionName];\n }\n\n var type = fullName.split(':')[0];\n options = this._typeOptions[type];\n\n if (options && options[optionName] !== undefined) {\n return options[optionName];\n } else if (this.fallback !== null) {\n return this.fallback.getOption(fullName, optionName);\n }\n\n return undefined;\n }\n /**\n This is deprecated in favor of explicit injection of dependencies.\n Reference: https://deprecations.emberjs.com/v3.x#toc_implicit-injections\n ```\n @private\n @method injection\n @param {String} factoryName\n @param {String} property\n @param {String} injectionName\n @deprecated\n */\n\n\n injection(fullName, property) {\n (true && !(false) && (0, _debug.deprecate)(`As of Ember 4.0.0, owner.inject no longer injects values into resolved instances, and calling the method has been deprecated. Since this method no longer does anything, it is fully safe to remove this injection. As an alternative to this API, you can refactor to explicitly inject \\`${property}\\` on \\`${fullName}\\`, or look it up directly using the \\`getOwner\\` API.`, false, {\n id: 'remove-owner-inject',\n until: '5.0.0',\n url: 'https://deprecations.emberjs.com/v4.x#toc_implicit-injections',\n for: 'ember-source',\n since: {\n enabled: '4.0.0'\n }\n }));\n }\n /**\n @private\n @method knownForType\n @param {String} type the type to iterate over\n */\n\n\n knownForType(type) {\n var localKnown = (0, _utils.dictionary)(null);\n var registeredNames = Object.keys(this.registrations);\n\n for (var index = 0; index < registeredNames.length; index++) {\n var fullName = registeredNames[index];\n var itemType = fullName.split(':')[0];\n\n if (itemType === type) {\n localKnown[fullName] = true;\n }\n }\n\n var fallbackKnown, resolverKnown;\n\n if (this.fallback !== null) {\n fallbackKnown = this.fallback.knownForType(type);\n }\n\n if (this.resolver !== null && this.resolver.knownForType) {\n resolverKnown = this.resolver.knownForType(type);\n }\n\n return Object.assign({}, fallbackKnown, localKnown, resolverKnown);\n }\n\n isValidFullName(fullName) {\n return VALID_FULL_NAME_REGEXP.test(fullName);\n }\n\n }\n\n _exports.Registry = Registry;\n\n if (true\n /* DEBUG */\n ) {\n var proto = Registry.prototype;\n\n proto.normalizeInjectionsHash = function (hash) {\n var injections = [];\n\n for (var key in hash) {\n if (Object.prototype.hasOwnProperty.call(hash, key)) {\n var {\n specifier\n } = hash[key];\n (true && !(this.isValidFullName(specifier)) && (0, _debug.assert)(`Expected a proper full name, given '${specifier}'`, this.isValidFullName(specifier)));\n injections.push({\n property: key,\n specifier\n });\n }\n }\n\n return injections;\n };\n\n proto.validateInjections = function (injections) {\n if (!injections) {\n return;\n }\n\n for (var i = 0; i < injections.length; i++) {\n var {\n specifier\n } = injections[i];\n (true && !(this.has(specifier)) && (0, _debug.assert)(`Attempting to inject an unknown injection: '${specifier}'`, this.has(specifier)));\n }\n };\n }\n\n function resolve(registry, _normalizedName) {\n var normalizedName = _normalizedName;\n var cached = registry._resolveCache[normalizedName];\n\n if (cached !== undefined) {\n return cached;\n }\n\n if (registry._failSet.has(normalizedName)) {\n return;\n }\n\n var resolved;\n\n if (registry.resolver) {\n resolved = registry.resolver.resolve(normalizedName);\n }\n\n if (resolved === undefined) {\n resolved = registry.registrations[normalizedName];\n }\n\n if (resolved === undefined) {\n registry._failSet.add(normalizedName);\n } else {\n registry._resolveCache[normalizedName] = resolved;\n }\n\n return resolved;\n }\n\n function has(registry, fullName) {\n return registry.resolve(fullName) !== undefined;\n }\n\n var privateNames = (0, _utils.dictionary)(null);\n var privateSuffix = `${Math.random()}${Date.now()}`.replace('.', '');\n\n function privatize([fullName]) {\n var name = privateNames[fullName];\n\n if (name) {\n return name;\n }\n\n var [type, rawName] = fullName.split(':');\n return privateNames[fullName] = (0, _utils.intern)(`${type}:${rawName}-${privateSuffix}`);\n }\n /*\n Public API for the container is still in flux.\n The public API, specified on the application namespace should be considered the stable API.\n // @module container\n @private\n */\n\n});","define(\"@ember/-internals/environment/index\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\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\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`\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 },\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 to perform extra bookkeeping needed to make the `captureRenderTree`\n API work.\n This has to be set before the ember JavaScript code is evaluated. This is\n usually done by setting `window.EmberENV = { _DEBUG_RENDER_TREE: true };`\n before the \"vendor\" `