{"version":3,"sources":["license.js","loader.js","@ember/-internals/browser-environment.js","@ember/-internals/console/index.js","@ember/-internals/container.js","@ember/-internals/environment.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.js","@ember/-internals/meta/index.js","@ember/-internals/meta/lib/meta.js","@ember/-internals/metal.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/copy.js","@ember/-internals/runtime/lib/ext/function.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/copyable.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.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/text_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/jquery.js","@ember/-internals/views/lib/system/jquery_event_deprecation.js","@ember/-internals/views/lib/system/lookup_partial.js","@ember/-internals/views/lib/system/utils.js","@ember/-internals/views/lib/utils/lookup-component.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/globals-resolver.js","@ember/application/index.js","@ember/application/instance.js","@ember/application/lib/application.js","@ember/application/lib/lazy_load.js","@ember/application/lib/validate-type.js","@ember/canary-features/index.js","@ember/controller/index.js","@ember/controller/lib/controller_mixin.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/engine/index.js","@ember/engine/instance.js","@ember/engine/lib/engine-parent.js","@ember/error/index.js","@ember/instrumentation/index.js","@ember/modifier/index.js","@ember/object/computed.js","@ember/object/index.js","@ember/object/lib/computed/computed_macros.js","@ember/object/lib/computed/reduce_computed_macros.js","@ember/polyfills/index.js","@ember/polyfills/lib/assign.js","@ember/polyfills/lib/merge.js","@ember/polyfills/lib/weak_set.js","@ember/runloop/index.js","@ember/service/index.js","@ember/string/index.js","@ember/string/lib/string_registry.js","@glimmer/encoder.js","@glimmer/low-level.js","@glimmer/node.js","@glimmer/opcode-compiler.js","@glimmer/program.js","@glimmer/reference.js","@glimmer/runtime.js","@glimmer/util.js","@glimmer/vm.js","@glimmer/wire-format.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/events.js","ember-testing/lib/ext/application.js","ember-testing/lib/ext/rsvp.js","ember-testing/lib/helpers.js","ember-testing/lib/helpers/-is-form-control.js","ember-testing/lib/helpers/and_then.js","ember-testing/lib/helpers/click.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/fill_in.js","ember-testing/lib/helpers/find.js","ember-testing/lib/helpers/find_with_assert.js","ember-testing/lib/helpers/key_event.js","ember-testing/lib/helpers/pause_test.js","ember-testing/lib/helpers/trigger_event.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/support.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","node-module.js","route-recognizer.js","router_js.js","rsvp.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.2\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/console/index\", [\"exports\", \"@ember/debug\", \"@ember/deprecated-features\"], function (_exports, _debug, _deprecatedFeatures) {\n \"use strict\";\n\n _exports.default = void 0;\n // Deliver message that the function is deprecated\n var DEPRECATION_MESSAGE = 'Use of Ember.Logger is deprecated. Please use `console` for logging.';\n var DEPRECATION_ID = 'ember-console.deprecate-logger';\n var DEPRECATION_URL = 'https://emberjs.com/deprecations/v3.x#toc_use-console-rather-than-ember-logger';\n /**\n @module ember\n */\n\n /**\n Inside Ember-Metal, simply uses the methods from `imports.console`.\n Override this to provide more robust logging functionality.\n \n @class Logger\n @deprecated Use 'console' instead\n \n @namespace Ember\n @public\n */\n\n var DEPRECATED_LOGGER;\n\n if (_deprecatedFeatures.LOGGER) {\n DEPRECATED_LOGGER = {\n /**\n Logs the arguments to the console.\n You can pass as many arguments as you want and they will be joined together with a space.\n ```javascript\n var foo = 1;\n Ember.Logger.log('log value of foo:', foo);\n // \"log value of foo: 1\" will be printed to the console\n ```\n @method log\n @for Ember.Logger\n @param {*} arguments\n @public\n */\n log: function () {\n var _console;\n\n true && !false && (0, _debug.deprecate)(DEPRECATION_MESSAGE, false, {\n id: DEPRECATION_ID,\n until: '4.0.0',\n url: DEPRECATION_URL\n });\n return (_console = console).log.apply(_console, arguments); // eslint-disable-line no-console\n },\n\n /**\n Prints the arguments to the console with a warning icon.\n You can pass as many arguments as you want and they will be joined together with a space.\n ```javascript\n Ember.Logger.warn('Something happened!');\n // \"Something happened!\" will be printed to the console with a warning icon.\n ```\n @method warn\n @for Ember.Logger\n @param {*} arguments\n @public\n */\n warn: function () {\n var _console2;\n\n true && !false && (0, _debug.deprecate)(DEPRECATION_MESSAGE, false, {\n id: DEPRECATION_ID,\n until: '4.0.0',\n url: DEPRECATION_URL\n });\n return (_console2 = console).warn.apply(_console2, arguments); // eslint-disable-line no-console\n },\n\n /**\n Prints the arguments to the console with an error icon, red text and a stack trace.\n You can pass as many arguments as you want and they will be joined together with a space.\n ```javascript\n Ember.Logger.error('Danger! Danger!');\n // \"Danger! Danger!\" will be printed to the console in red text.\n ```\n @method error\n @for Ember.Logger\n @param {*} arguments\n @public\n */\n error: function () {\n var _console3;\n\n true && !false && (0, _debug.deprecate)(DEPRECATION_MESSAGE, false, {\n id: DEPRECATION_ID,\n until: '4.0.0',\n url: DEPRECATION_URL\n });\n return (_console3 = console).error.apply(_console3, arguments); // eslint-disable-line no-console\n },\n\n /**\n Logs the arguments to the console.\n You can pass as many arguments as you want and they will be joined together with a space.\n ```javascript\n var foo = 1;\n Ember.Logger.info('log value of foo:', foo);\n // \"log value of foo: 1\" will be printed to the console\n ```\n @method info\n @for Ember.Logger\n @param {*} arguments\n @public\n */\n info: function () {\n var _console4;\n\n true && !false && (0, _debug.deprecate)(DEPRECATION_MESSAGE, false, {\n id: DEPRECATION_ID,\n until: '4.0.0',\n url: DEPRECATION_URL\n });\n return (_console4 = console).info.apply(_console4, arguments); // eslint-disable-line no-console\n },\n\n /**\n Logs the arguments to the console in blue text.\n You can pass as many arguments as you want and they will be joined together with a space.\n ```javascript\n var foo = 1;\n Ember.Logger.debug('log value of foo:', foo);\n // \"log value of foo: 1\" will be printed to the console\n ```\n @method debug\n @for Ember.Logger\n @param {*} arguments\n @public\n */\n debug: function () {\n var _console6;\n\n true && !false && (0, _debug.deprecate)(DEPRECATION_MESSAGE, false, {\n id: DEPRECATION_ID,\n until: '4.0.0',\n url: DEPRECATION_URL\n });\n /* eslint-disable no-console */\n\n if (console.debug) {\n var _console5;\n\n return (_console5 = console).debug.apply(_console5, arguments);\n }\n\n return (_console6 = console).info.apply(_console6, arguments);\n /* eslint-enable no-console */\n },\n\n /**\n If the value passed into `Ember.Logger.assert` is not truthy it will throw an error with a stack trace.\n ```javascript\n Ember.Logger.assert(true); // undefined\n Ember.Logger.assert(true === false); // Throws an Assertion failed error.\n Ember.Logger.assert(true === false, 'Something invalid'); // Throws an Assertion failed error with message.\n ```\n @method assert\n @for Ember.Logger\n @param {Boolean} bool Value to test\n @param {String} message Assertion message on failed\n @public\n */\n assert: function () {\n var _console7;\n\n true && !false && (0, _debug.deprecate)(DEPRECATION_MESSAGE, false, {\n id: DEPRECATION_ID,\n until: '4.0.0',\n url: DEPRECATION_URL\n });\n return (_console7 = console).assert.apply(_console7, arguments); // eslint-disable-line no-console\n }\n };\n }\n\n var _default = DEPRECATED_LOGGER;\n _exports.default = _default;\n});","enifed(\"@ember/-internals/container\", [\"exports\", \"@ember/-internals/owner\", \"@ember/-internals/utils\", \"@ember/debug\", \"@ember/polyfills\"], function (_exports, _owner, _utils, _debug, _polyfills) {\n \"use strict\";\n\n _exports.privatize = privatize;\n _exports.FACTORY_FOR = _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 = function () {\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: function () {\n gc();\n return GetWeakSetValues(containers).length > 0;\n },\n reset: function () {\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 } 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 var Container =\n /*#__PURE__*/\n function () {\n function Container(registry) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\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 var _proto = Container.prototype;\n\n _proto.lookup = function lookup(fullName, options) {\n true && !!this.isDestroyed && (0, _debug.assert)('expected container not to be destroyed', !this.isDestroyed);\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 _proto.destroy = function destroy() {\n destroyDestroyables(this);\n this.isDestroying = true;\n };\n\n _proto.finalizeDestroy = function 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 _proto.reset = function 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 _proto.ownerInjection = function ownerInjection() {\n var _ref;\n\n return _ref = {}, _ref[_owner.OWNER] = this.owner, _ref;\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 _proto.factoryFor = function factoryFor(fullName) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n true && !!this.isDestroyed && (0, _debug.assert)('expected container not to be destroyed', !this.isDestroyed);\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 true && !(false\n /* EMBER_MODULE_UNIFICATION */\n || !options.namespace) && (0, _debug.assert)('EMBER_MODULE_UNIFICATION must be enabled to pass a namespace option to factoryFor', false || !options.namespace);\n\n if (options.source || options.namespace) {\n normalizedName = this.registry.expandLocalLookup(fullName, options);\n\n if (!normalizedName) {\n return;\n }\n }\n\n return _factoryFor(this, normalizedName, fullName);\n };\n\n return Container;\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 if (_utils.HAS_NATIVE_PROXY) {\n var validator = {\n set: function (_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 }; // 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 create: function (props) {\n return m.create(props);\n }\n };\n var proxy = new Proxy(proxiedManager, validator);\n FACTORY_FOR.set(proxy, manager);\n }\n\n return manager;\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) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n true && !(false\n /* EMBER_MODULE_UNIFICATION */\n || !options.namespace) && (0, _debug.assert)('EMBER_MODULE_UNIFICATION must be enabled to pass a namespace option to lookup', false || !options.namespace);\n var normalizedName = fullName;\n\n if (options.source || options.namespace) {\n normalizedName = container.registry.expandLocalLookup(fullName, options);\n\n if (!normalizedName) {\n return;\n }\n }\n\n if (options.singleton !== false) {\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, _ref2) {\n var instantiate = _ref2.instantiate,\n singleton = _ref2.singleton;\n return singleton !== false && !instantiate && isSingleton(container, fullName) && !isInstantiatable(container, fullName);\n }\n\n function isSingletonInstance(container, fullName, _ref3) {\n var instantiate = _ref3.instantiate,\n singleton = _ref3.singleton;\n return singleton !== false && instantiate !== false && isSingleton(container, fullName) && isInstantiatable(container, fullName);\n }\n\n function isFactoryClass(container, fullname, _ref4) {\n var instantiate = _ref4.instantiate,\n singleton = _ref4.singleton;\n return instantiate === false && (singleton === false || !isSingleton(container, fullname)) && !isInstantiatable(container, fullname);\n }\n\n function isFactoryInstance(container, fullName, _ref5) {\n var instantiate = _ref5.instantiate,\n singleton = _ref5.singleton;\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 return container.cache[normalizedName] = factoryManager.create();\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 processInjections(container, injections, result) {\n if (true\n /* DEBUG */\n ) {\n container.registry.validateInjections(injections);\n }\n\n var hash = result.injections;\n\n if (hash === undefined) {\n hash = result.injections = {};\n }\n\n for (var i = 0; i < injections.length; i++) {\n var _injections$i = injections[i],\n property = _injections$i.property,\n specifier = _injections$i.specifier,\n source = _injections$i.source;\n\n if (source) {\n hash[property] = _lookup(container, specifier, {\n source: source\n });\n } else {\n hash[property] = _lookup(container, specifier);\n }\n\n if (!result.isDynamic) {\n result.isDynamic = !isSingleton(container, specifier);\n }\n }\n }\n\n function buildInjections(container, typeInjections, injections) {\n var result = {\n injections: undefined,\n isDynamic: false\n };\n\n if (typeInjections !== undefined) {\n processInjections(container, typeInjections, result);\n }\n\n if (injections !== undefined) {\n processInjections(container, injections, result);\n }\n\n return result;\n }\n\n function injectionsFor(container, fullName) {\n var registry = container.registry;\n\n var _fullName$split = fullName.split(':'),\n type = _fullName$split[0];\n\n var typeInjections = registry.getTypeInjections(type);\n var injections = registry.getInjections(fullName);\n return buildInjections(container, typeInjections, injections);\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 FACTORY_FOR = new WeakMap();\n _exports.FACTORY_FOR = FACTORY_FOR;\n\n var FactoryManager =\n /*#__PURE__*/\n function () {\n function FactoryManager(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 FACTORY_FOR.set(this, this);\n }\n\n var _proto2 = FactoryManager.prototype;\n\n _proto2.toString = function 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 _proto2.create = function create(options) {\n var injectionsCache = this.injections;\n\n if (injectionsCache === undefined) {\n var _injectionsFor = injectionsFor(this.container, this.normalizedName),\n injections = _injectionsFor.injections,\n isDynamic = _injectionsFor.isDynamic;\n\n injectionsCache = injections;\n\n if (!isDynamic) {\n this.injections = injections;\n }\n }\n\n var props = injectionsCache;\n\n if (options !== undefined) {\n props = (0, _polyfills.assign)({}, injectionsCache, 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 }\n\n if (!this.class.create) {\n throw new Error(\"Failed to create an instance of '\" + this.normalizedName + \"'. Most likely an improperly defined class or\" + \" an invalid module export.\");\n } // required to allow access to things like\n // the customized toString, _debugContainerKey,\n // owner, etc. without a double extend and without\n // modifying the objects properties\n\n\n if (typeof this.class._initFactory === 'function') {\n this.class._initFactory(this);\n } else {\n // in the non-EmberObject case we need to still setOwner\n // this is required for supporting glimmer environment and\n // template instantiation which rely heavily on\n // `options[OWNER]` being passed into `create`\n // TODO: clean this up, and remove in future versions\n if (options === undefined || props === undefined) {\n // avoid mutating `props` here since they are the cached injections\n props = (0, _polyfills.assign)({}, props);\n }\n\n (0, _owner.setOwner)(props, this.owner);\n }\n\n var instance = this.class.create(props);\n FACTORY_FOR.set(instance, this);\n return instance;\n };\n\n return FactoryManager;\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 var Registry =\n /*#__PURE__*/\n function () {\n function Registry() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.fallback = options.fallback || null;\n this.resolver = options.resolver || null;\n this.registrations = (0, _utils.dictionary)(options.registrations || null);\n this._typeInjections = (0, _utils.dictionary)(null);\n this._injections = (0, _utils.dictionary)(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 _typeInjections\n @type InheritingDict\n */\n\n /**\n @private\n @property _injections\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 var _proto3 = Registry.prototype;\n\n _proto3.container = function 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 _proto3.register = function register(fullName, factory) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\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 _proto3.unregister = function 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 _proto3.resolve = function resolve(fullName, options) {\n var factory = _resolve(this, this.normalize(fullName), options);\n\n if (factory === undefined && this.fallback !== null) {\n var _this$fallback;\n\n factory = (_this$fallback = this.fallback).resolve.apply(_this$fallback, 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 _proto3.describe = function 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 _proto3.normalizeFullName = function 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 _proto3.normalize = function 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 _proto3.makeToString = function makeToString(factory, fullName) {\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 factory.toString();\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 _proto3.has = function has(fullName, options) {\n if (!this.isValidFullName(fullName)) {\n return false;\n }\n\n var source = options && options.source && this.normalize(options.source);\n var namespace = options && options.namespace || undefined;\n return _has(this, this.normalize(fullName), source, namespace);\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 _proto3.optionsForType = function optionsForType(type, options) {\n this._typeOptions[type] = options;\n };\n\n _proto3.getOptionsForType = function 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 _proto3.options = function options(fullName, _options) {\n var normalizedName = this.normalize(fullName);\n this._options[normalizedName] = _options;\n };\n\n _proto3.getOptions = function 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 _proto3.getOption = function 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 Used only via `injection`.\n Provides a specialized form of injection, specifically enabling\n all objects of one type to be injected with a reference to another\n object.\n For example, provided each object of type `controller` needed a `router`.\n one would do the following:\n ```javascript\n let registry = new Registry();\n let container = registry.container();\n registry.register('router:main', Router);\n registry.register('controller:user', UserController);\n registry.register('controller:post', PostController);\n registry.typeInjection('controller', 'router', 'router:main');\n let user = container.lookup('controller:user');\n let post = container.lookup('controller:post');\n user.router instanceof Router; //=> true\n post.router instanceof Router; //=> true\n // both controllers share the same router\n user.router === post.router; //=> true\n ```\n @private\n @method typeInjection\n @param {String} type\n @param {String} property\n @param {String} fullName\n */\n ;\n\n _proto3.typeInjection = function typeInjection(type, property, fullName) {\n true && !this.isValidFullName(fullName) && (0, _debug.assert)('fullName must be a proper full name', this.isValidFullName(fullName));\n var fullNameType = fullName.split(':')[0];\n true && !(fullNameType !== type) && (0, _debug.assert)(\"Cannot inject a '\" + fullName + \"' on other \" + type + \"(s).\", fullNameType !== type);\n var injections = this._typeInjections[type] || (this._typeInjections[type] = []);\n injections.push({\n property: property,\n specifier: fullName\n });\n }\n /**\n Defines injection rules.\n These rules are used to inject dependencies onto objects when they\n are instantiated.\n Two forms of injections are possible:\n * Injecting one fullName on another fullName\n * Injecting one fullName on a type\n Example:\n ```javascript\n let registry = new Registry();\n let container = registry.container();\n registry.register('source:main', Source);\n registry.register('model:user', User);\n registry.register('model:post', Post);\n // injecting one fullName on another fullName\n // eg. each user model gets a post model\n registry.injection('model:user', 'post', 'model:post');\n // injecting one fullName on another type\n registry.injection('model', 'source', 'source:main');\n let user = container.lookup('model:user');\n let post = container.lookup('model:post');\n user.source instanceof Source; //=> true\n post.source instanceof Source; //=> true\n user.post instanceof Post; //=> true\n // and both models share the same source\n user.source === post.source; //=> true\n ```\n @private\n @method injection\n @param {String} factoryName\n @param {String} property\n @param {String} injectionName\n */\n ;\n\n _proto3.injection = function injection(fullName, property, injectionName) {\n true && !this.isValidFullName(injectionName) && (0, _debug.assert)(\"Invalid injectionName, expected: 'type:name' got: \" + injectionName, this.isValidFullName(injectionName));\n var normalizedInjectionName = this.normalize(injectionName);\n\n if (fullName.indexOf(':') === -1) {\n return this.typeInjection(fullName, property, normalizedInjectionName);\n }\n\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 var injections = this._injections[normalizedName] || (this._injections[normalizedName] = []);\n injections.push({\n property: property,\n specifier: normalizedInjectionName\n });\n }\n /**\n @private\n @method knownForType\n @param {String} type the type to iterate over\n */\n ;\n\n _proto3.knownForType = function 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 (0, _polyfills.assign)({}, fallbackKnown, localKnown, resolverKnown);\n };\n\n _proto3.isValidFullName = function isValidFullName(fullName) {\n return VALID_FULL_NAME_REGEXP.test(fullName);\n };\n\n _proto3.getInjections = function getInjections(fullName) {\n var injections = this._injections[fullName];\n\n if (this.fallback !== null) {\n var fallbackInjections = this.fallback.getInjections(fullName);\n\n if (fallbackInjections !== undefined) {\n injections = injections === undefined ? fallbackInjections : injections.concat(fallbackInjections);\n }\n }\n\n return injections;\n };\n\n _proto3.getTypeInjections = function getTypeInjections(type) {\n var injections = this._typeInjections[type];\n\n if (this.fallback !== null) {\n var fallbackInjections = this.fallback.getTypeInjections(type);\n\n if (fallbackInjections !== undefined) {\n injections = injections === undefined ? fallbackInjections : injections.concat(fallbackInjections);\n }\n }\n\n return injections;\n }\n /**\n Given a fullName and a source fullName returns the fully resolved\n fullName. Used to allow for local lookup.\n ```javascript\n let registry = new Registry();\n // the twitter factory is added to the module system\n registry.expandLocalLookup('component:post-title', { source: 'template:post' }) // => component:post/post-title\n ```\n @private\n @method expandLocalLookup\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 {String} fullName\n */\n ;\n\n _proto3.expandLocalLookup = function expandLocalLookup(fullName, options) {\n if (this.resolver !== null && this.resolver.expandLocalLookup) {\n true && !this.isValidFullName(fullName) && (0, _debug.assert)('fullName must be a proper full name', this.isValidFullName(fullName));\n true && !(!options.source || this.isValidFullName(options.source)) && (0, _debug.assert)('options.source must be a proper full name', !options.source || this.isValidFullName(options.source));\n var normalizedFullName = this.normalize(fullName);\n var normalizedSource = this.normalize(options.source);\n return _expandLocalLookup(this, normalizedFullName, normalizedSource, options.namespace);\n } else if (this.fallback !== null) {\n return this.fallback.expandLocalLookup(fullName, options);\n } else {\n return null;\n }\n };\n\n return Registry;\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 (hash.hasOwnProperty(key)) {\n var _hash$key = hash[key],\n specifier = _hash$key.specifier,\n source = _hash$key.source,\n namespace = _hash$key.namespace;\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: specifier,\n source: source,\n namespace: namespace\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 _injections$i2 = injections[i],\n specifier = _injections$i2.specifier,\n source = _injections$i2.source,\n namespace = _injections$i2.namespace;\n true && !this.has(specifier, {\n source: source,\n namespace: namespace\n }) && (0, _debug.assert)(\"Attempting to inject an unknown injection: '\" + specifier + \"'\", this.has(specifier, {\n source: source,\n namespace: namespace\n }));\n }\n };\n }\n\n function _expandLocalLookup(registry, normalizedName, normalizedSource, namespace) {\n var cache = registry._localLookupCache;\n var normalizedNameCache = cache[normalizedName];\n\n if (!normalizedNameCache) {\n normalizedNameCache = cache[normalizedName] = Object.create(null);\n }\n\n var cacheKey = namespace || normalizedSource;\n var cached = normalizedNameCache[cacheKey];\n\n if (cached !== undefined) {\n return cached;\n }\n\n var expanded = registry.resolver.expandLocalLookup(normalizedName, normalizedSource, namespace);\n return normalizedNameCache[cacheKey] = expanded;\n }\n\n function _resolve(registry, _normalizedName, options) {\n var normalizedName = _normalizedName; // when `source` is provided expand normalizedName\n // and source into the full normalizedName\n\n if (options !== undefined && (options.source || options.namespace)) {\n normalizedName = registry.expandLocalLookup(_normalizedName, options);\n\n if (!normalizedName) {\n return;\n }\n }\n\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, source, namespace) {\n return registry.resolve(fullName, {\n source: source,\n namespace: namespace\n }) !== undefined;\n }\n\n var privateNames = (0, _utils.dictionary)(null);\n var privateSuffix = (\"\" + Math.random() + Date.now()).replace('.', '');\n\n function privatize(_ref6) {\n var fullName = _ref6[0];\n var name = privateNames[fullName];\n\n if (name) {\n return name;\n }\n\n var _fullName$split2 = fullName.split(':'),\n type = _fullName$split2[0],\n rawName = _fullName$split2[1];\n\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});","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/error-handling/index\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n _exports.getOnerror = getOnerror;\n _exports.setOnerror = setOnerror;\n _exports.getDispatchOverride = getDispatchOverride;\n _exports.setDispatchOverride = setDispatchOverride;\n _exports.onErrorTarget = void 0;\n var onerror;\n var onErrorTarget = {\n get onerror() {\n return onerror;\n }\n\n }; // Ember.onerror getter\n\n _exports.onErrorTarget = onErrorTarget;\n\n function getOnerror() {\n return onerror;\n } // Ember.onerror setter\n\n\n function setOnerror(handler) {\n onerror = handler;\n }\n\n var dispatchOverride; // allows testing adapter to override dispatch\n\n function getDispatchOverride() {\n return dispatchOverride;\n }\n\n function setDispatchOverride(handler) {\n dispatchOverride = handler;\n }\n});","enifed(\"@ember/-internals/extension-support/index\", [\"exports\", \"@ember/-internals/extension-support/lib/data_adapter\", \"@ember/-internals/extension-support/lib/container_debug_adapter\"], function (_exports, _data_adapter, _container_debug_adapter) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"DataAdapter\", {\n enumerable: true,\n get: function () {\n return _data_adapter.default;\n }\n });\n Object.defineProperty(_exports, \"ContainerDebugAdapter\", {\n enumerable: true,\n get: function () {\n return _container_debug_adapter.default;\n }\n });\n});","enifed(\"@ember/-internals/extension-support/lib/container_debug_adapter\", [\"exports\", \"@ember/string\", \"@ember/-internals/runtime\"], function (_exports, _string, _runtime) {\n \"use strict\";\n\n _exports.default = void 0;\n\n /**\n @module @ember/debug\n */\n\n /**\n The `ContainerDebugAdapter` helps the container and resolver interface\n with tools that debug Ember such as the\n [Ember Inspector](https://github.com/emberjs/ember-inspector)\n for Chrome and Firefox.\n \n This class can be extended by a custom resolver implementer\n to override some of the methods with library-specific code.\n \n The methods likely to be overridden are:\n \n * `canCatalogEntriesByType`\n * `catalogEntriesByType`\n \n The adapter will need to be registered\n in the application's container as `container-debug-adapter:main`.\n \n Example:\n \n ```javascript\n Application.initializer({\n name: \"containerDebugAdapter\",\n \n initialize(application) {\n application.register('container-debug-adapter:main', require('app/container-debug-adapter'));\n }\n });\n ```\n \n @class ContainerDebugAdapter\n @extends EmberObject\n @since 1.5.0\n @public\n */\n var _default = _runtime.Object.extend({\n /**\n The resolver instance of the application\n being debugged. This property will be injected\n on creation.\n @property resolver\n @default null\n @public\n */\n resolver: null,\n\n /**\n Returns true if it is possible to catalog a list of available\n classes in the resolver for a given type.\n @method canCatalogEntriesByType\n @param {String} type The type. e.g. \"model\", \"controller\", \"route\".\n @return {boolean} whether a list is available for this type.\n @public\n */\n canCatalogEntriesByType: function (type) {\n if (type === 'model' || type === 'template') {\n return false;\n }\n\n return true;\n },\n\n /**\n Returns the available classes a given type.\n @method catalogEntriesByType\n @param {String} type The type. e.g. \"model\", \"controller\", \"route\".\n @return {Array} An array of strings.\n @public\n */\n catalogEntriesByType: function (type) {\n var namespaces = (0, _runtime.A)(_runtime.Namespace.NAMESPACES);\n var types = (0, _runtime.A)();\n var typeSuffixRegex = new RegExp((0, _string.classify)(type) + \"$\");\n namespaces.forEach(function (namespace) {\n for (var key in namespace) {\n if (!namespace.hasOwnProperty(key)) {\n continue;\n }\n\n if (typeSuffixRegex.test(key)) {\n var klass = namespace[key];\n\n if ((0, _runtime.typeOf)(klass) === 'class') {\n types.push((0, _string.dasherize)(key.replace(typeSuffixRegex, '')));\n }\n }\n }\n });\n return types;\n }\n });\n\n _exports.default = _default;\n});","enifed(\"@ember/-internals/extension-support/lib/data_adapter\", [\"exports\", \"@ember/-internals/owner\", \"@ember/runloop\", \"@ember/-internals/metal\", \"@ember/string\", \"@ember/-internals/runtime\"], function (_exports, _owner, _runloop, _metal, _string, _runtime) {\n \"use strict\";\n\n _exports.default = void 0;\n\n /**\n @module @ember/debug\n */\n\n /**\n The `DataAdapter` helps a data persistence library\n interface with tools that debug Ember such\n as the [Ember Inspector](https://github.com/emberjs/ember-inspector)\n for Chrome and Firefox.\n \n This class will be extended by a persistence library\n which will override some of the methods with\n library-specific code.\n \n The methods likely to be overridden are:\n \n * `getFilters`\n * `detect`\n * `columnsForType`\n * `getRecords`\n * `getRecordColumnValues`\n * `getRecordKeywords`\n * `getRecordFilterValues`\n * `getRecordColor`\n * `observeRecord`\n \n The adapter will need to be registered\n in the application's container as `dataAdapter:main`.\n \n Example:\n \n ```javascript\n Application.initializer({\n name: \"data-adapter\",\n \n initialize: function(application) {\n application.register('data-adapter:main', DS.DataAdapter);\n }\n });\n ```\n \n @class DataAdapter\n @extends EmberObject\n @public\n */\n var _default = _runtime.Object.extend({\n init: function () {\n this._super.apply(this, arguments);\n\n this.releaseMethods = (0, _runtime.A)();\n },\n\n /**\n The container-debug-adapter which is used\n to list all models.\n @property containerDebugAdapter\n @default undefined\n @since 1.5.0\n @public\n **/\n containerDebugAdapter: undefined,\n\n /**\n The number of attributes to send\n as columns. (Enough to make the record\n identifiable).\n @private\n @property attributeLimit\n @default 3\n @since 1.3.0\n */\n attributeLimit: 3,\n\n /**\n Ember Data > v1.0.0-beta.18\n requires string model names to be passed\n around instead of the actual factories.\n This is a stamp for the Ember Inspector\n to differentiate between the versions\n to be able to support older versions too.\n @public\n @property acceptsModelName\n */\n acceptsModelName: true,\n\n /**\n Stores all methods that clear observers.\n These methods will be called on destruction.\n @private\n @property releaseMethods\n @since 1.3.0\n */\n releaseMethods: (0, _runtime.A)(),\n\n /**\n Specifies how records can be filtered.\n Records returned will need to have a `filterValues`\n property with a key for every name in the returned array.\n @public\n @method getFilters\n @return {Array} List of objects defining filters.\n The object should have a `name` and `desc` property.\n */\n getFilters: function () {\n return (0, _runtime.A)();\n },\n\n /**\n Fetch the model types and observe them for changes.\n @public\n @method watchModelTypes\n @param {Function} typesAdded Callback to call to add types.\n Takes an array of objects containing wrapped types (returned from `wrapModelType`).\n @param {Function} typesUpdated Callback to call when a type has changed.\n Takes an array of objects containing wrapped types.\n @return {Function} Method to call to remove all observers\n */\n watchModelTypes: function (typesAdded, typesUpdated) {\n var _this = this;\n\n var modelTypes = this.getModelTypes();\n var releaseMethods = (0, _runtime.A)();\n var typesToSend;\n typesToSend = modelTypes.map(function (type) {\n var klass = type.klass;\n\n var wrapped = _this.wrapModelType(klass, type.name);\n\n releaseMethods.push(_this.observeModelType(type.name, typesUpdated));\n return wrapped;\n });\n typesAdded(typesToSend);\n\n var release = function () {\n releaseMethods.forEach(function (fn) {\n return fn();\n });\n\n _this.releaseMethods.removeObject(release);\n };\n\n this.releaseMethods.pushObject(release);\n return release;\n },\n _nameToClass: function (type) {\n if (typeof type === 'string') {\n var owner = (0, _owner.getOwner)(this);\n var Factory = owner.factoryFor(\"model:\" + type);\n type = Factory && Factory.class;\n }\n\n return type;\n },\n\n /**\n Fetch the records of a given type and observe them for changes.\n @public\n @method watchRecords\n @param {String} modelName The model name.\n @param {Function} recordsAdded Callback to call to add records.\n Takes an array of objects containing wrapped records.\n The object should have the following properties:\n columnValues: {Object} The key and value of a table cell.\n object: {Object} The actual record object.\n @param {Function} recordsUpdated Callback to call when a record has changed.\n Takes an array of objects containing wrapped records.\n @param {Function} recordsRemoved Callback to call when a record has removed.\n Takes the following parameters:\n index: The array index where the records were removed.\n count: The number of records removed.\n @return {Function} Method to call to remove all observers.\n */\n watchRecords: function (modelName, recordsAdded, recordsUpdated, recordsRemoved) {\n var _this2 = this;\n\n var releaseMethods = (0, _runtime.A)();\n\n var klass = this._nameToClass(modelName);\n\n var records = this.getRecords(klass, modelName);\n var release;\n\n function recordUpdated(updatedRecord) {\n recordsUpdated([updatedRecord]);\n }\n\n var recordsToSend = records.map(function (record) {\n releaseMethods.push(_this2.observeRecord(record, recordUpdated));\n return _this2.wrapRecord(record);\n });\n\n var contentDidChange = function (array, idx, removedCount, addedCount) {\n for (var i = idx; i < idx + addedCount; i++) {\n var record = (0, _metal.objectAt)(array, i);\n\n var wrapped = _this2.wrapRecord(record);\n\n releaseMethods.push(_this2.observeRecord(record, recordUpdated));\n recordsAdded([wrapped]);\n }\n\n if (removedCount) {\n recordsRemoved(idx, removedCount);\n }\n };\n\n var observer = {\n didChange: contentDidChange,\n willChange: function () {\n return this;\n }\n };\n (0, _metal.addArrayObserver)(records, this, observer);\n\n release = function () {\n releaseMethods.forEach(function (fn) {\n return fn();\n });\n (0, _metal.removeArrayObserver)(records, _this2, observer);\n\n _this2.releaseMethods.removeObject(release);\n };\n\n recordsAdded(recordsToSend);\n this.releaseMethods.pushObject(release);\n return release;\n },\n\n /**\n Clear all observers before destruction\n @private\n @method willDestroy\n */\n willDestroy: function () {\n this._super.apply(this, arguments);\n\n this.releaseMethods.forEach(function (fn) {\n return fn();\n });\n },\n\n /**\n Detect whether a class is a model.\n Test that against the model class\n of your persistence library.\n @public\n @method detect\n @return boolean Whether the class is a model class or not.\n */\n detect: function () {\n return false;\n },\n\n /**\n Get the columns for a given model type.\n @public\n @method columnsForType\n @return {Array} An array of columns of the following format:\n name: {String} The name of the column.\n desc: {String} Humanized description (what would show in a table column name).\n */\n columnsForType: function () {\n return (0, _runtime.A)();\n },\n\n /**\n Adds observers to a model type class.\n @private\n @method observeModelType\n @param {String} modelName The model type name.\n @param {Function} typesUpdated Called when a type is modified.\n @return {Function} The function to call to remove observers.\n */\n observeModelType: function (modelName, typesUpdated) {\n var _this3 = this;\n\n var klass = this._nameToClass(modelName);\n\n var records = this.getRecords(klass, modelName);\n\n function onChange() {\n typesUpdated([this.wrapModelType(klass, modelName)]);\n }\n\n var observer = {\n didChange: function (array, idx, removedCount, addedCount) {\n // Only re-fetch records if the record count changed\n // (which is all we care about as far as model types are concerned).\n if (removedCount > 0 || addedCount > 0) {\n (0, _runloop.scheduleOnce)('actions', this, onChange);\n }\n },\n willChange: function () {\n return this;\n }\n };\n (0, _metal.addArrayObserver)(records, this, observer);\n\n var release = function () {\n return (0, _metal.removeArrayObserver)(records, _this3, observer);\n };\n\n return release;\n },\n\n /**\n Wraps a given model type and observes changes to it.\n @private\n @method wrapModelType\n @param {Class} klass A model class.\n @param {String} modelName Name of the class.\n @return {Object} Contains the wrapped type and the function to remove observers\n Format:\n type: {Object} The wrapped type.\n The wrapped type has the following format:\n name: {String} The name of the type.\n count: {Integer} The number of records available.\n columns: {Columns} An array of columns to describe the record.\n object: {Class} The actual Model type class.\n release: {Function} The function to remove observers.\n */\n wrapModelType: function (klass, name) {\n var records = this.getRecords(klass, name);\n var typeToSend;\n typeToSend = {\n name: name,\n count: (0, _metal.get)(records, 'length'),\n columns: this.columnsForType(klass),\n object: klass\n };\n return typeToSend;\n },\n\n /**\n Fetches all models defined in the application.\n @private\n @method getModelTypes\n @return {Array} Array of model types.\n */\n getModelTypes: function () {\n var _this4 = this;\n\n var containerDebugAdapter = this.get('containerDebugAdapter');\n var types;\n\n if (containerDebugAdapter.canCatalogEntriesByType('model')) {\n types = containerDebugAdapter.catalogEntriesByType('model');\n } else {\n types = this._getObjectsOnNamespaces();\n } // New adapters return strings instead of classes.\n\n\n types = (0, _runtime.A)(types).map(function (name) {\n return {\n klass: _this4._nameToClass(name),\n name: name\n };\n });\n types = (0, _runtime.A)(types).filter(function (type) {\n return _this4.detect(type.klass);\n });\n return (0, _runtime.A)(types);\n },\n\n /**\n Loops over all namespaces and all objects\n attached to them.\n @private\n @method _getObjectsOnNamespaces\n @return {Array} Array of model type strings.\n */\n _getObjectsOnNamespaces: function () {\n var _this5 = this;\n\n var namespaces = (0, _runtime.A)(_runtime.Namespace.NAMESPACES);\n var types = (0, _runtime.A)();\n namespaces.forEach(function (namespace) {\n for (var key in namespace) {\n if (!namespace.hasOwnProperty(key)) {\n continue;\n } // Even though we will filter again in `getModelTypes`,\n // we should not call `lookupFactory` on non-models\n\n\n if (!_this5.detect(namespace[key])) {\n continue;\n }\n\n var name = (0, _string.dasherize)(key);\n types.push(name);\n }\n });\n return types;\n },\n\n /**\n Fetches all loaded records for a given type.\n @public\n @method getRecords\n @return {Array} An array of records.\n This array will be observed for changes,\n so it should update when new records are added/removed.\n */\n getRecords: function () {\n return (0, _runtime.A)();\n },\n\n /**\n Wraps a record and observers changes to it.\n @private\n @method wrapRecord\n @param {Object} record The record instance.\n @return {Object} The wrapped record. Format:\n columnValues: {Array}\n searchKeywords: {Array}\n */\n wrapRecord: function (record) {\n var recordToSend = {\n object: record\n };\n recordToSend.columnValues = this.getRecordColumnValues(record);\n recordToSend.searchKeywords = this.getRecordKeywords(record);\n recordToSend.filterValues = this.getRecordFilterValues(record);\n recordToSend.color = this.getRecordColor(record);\n return recordToSend;\n },\n\n /**\n Gets the values for each column.\n @public\n @method getRecordColumnValues\n @return {Object} Keys should match column names defined\n by the model type.\n */\n getRecordColumnValues: function () {\n return {};\n },\n\n /**\n Returns keywords to match when searching records.\n @public\n @method getRecordKeywords\n @return {Array} Relevant keywords for search.\n */\n getRecordKeywords: function () {\n return (0, _runtime.A)();\n },\n\n /**\n Returns the values of filters defined by `getFilters`.\n @public\n @method getRecordFilterValues\n @param {Object} record The record instance.\n @return {Object} The filter values.\n */\n getRecordFilterValues: function () {\n return {};\n },\n\n /**\n Each record can have a color that represents its state.\n @public\n @method getRecordColor\n @param {Object} record The record instance\n @return {String} The records color.\n Possible options: black, red, blue, green.\n */\n getRecordColor: function () {\n return null;\n },\n\n /**\n Observes all relevant properties and re-sends the wrapped record\n when a change occurs.\n @public\n @method observerRecord\n @return {Function} The function to call to remove all observers.\n */\n observeRecord: function () {\n return function () {};\n }\n });\n\n _exports.default = _default;\n});","enifed(\"@ember/-internals/glimmer\", [\"exports\", \"node-module\", \"ember-babel\", \"@ember/polyfills\", \"@ember/-internals/owner\", \"@glimmer/opcode-compiler\", \"@ember/-internals/runtime\", \"@ember/-internals/utils\", \"@glimmer/reference\", \"@ember/-internals/metal\", \"@ember/debug\", \"@glimmer/runtime\", \"@glimmer/util\", \"@ember/-internals/views\", \"@ember/-internals/browser-environment\", \"@ember/instrumentation\", \"@ember/service\", \"@ember/-internals/environment\", \"@ember/string\", \"@glimmer/wire-format\", \"@ember/-internals/container\", \"@ember/runloop\", \"rsvp\", \"@glimmer/node\", \"@ember/-internals/routing\", \"@ember/deprecated-features\"], function (_exports, _nodeModule, _emberBabel, _polyfills, _owner, _opcodeCompiler, _runtime, _utils, _reference, _metal, _debug, _runtime2, _util, _views, _browserEnvironment, _instrumentation, _service, _environment2, _string, _wireFormat, _container, _runloop, _rsvp, _node, _routing, _deprecatedFeatures) {\n \"use strict\";\n\n _exports.template = template;\n _exports.helper = helper;\n _exports.escapeExpression = escapeExpression;\n _exports.htmlSafe = htmlSafe;\n _exports.isHTMLSafe = isHTMLSafe;\n _exports._resetRenderers = _resetRenderers;\n _exports.renderSettled = renderSettled;\n _exports.getTemplate = getTemplate;\n _exports.setTemplate = setTemplate;\n _exports.hasTemplate = hasTemplate;\n _exports.getTemplates = getTemplates;\n _exports.setTemplates = setTemplates;\n _exports.setupEngineRegistry = setupEngineRegistry;\n _exports.setupApplicationRegistry = setupApplicationRegistry;\n _exports._registerMacros = registerMacros;\n _exports.iterableFor = _iterableFor;\n _exports.capabilities = capabilities;\n _exports.setComponentManager = setComponentManager;\n _exports.getComponentManager = getComponentManager;\n _exports.setModifierManager = setModifierManager;\n _exports.getModifierManager = getModifierManager;\n _exports.modifierCapabilties = capabilities$1;\n Object.defineProperty(_exports, \"DOMChanges\", {\n enumerable: true,\n get: function () {\n return _runtime2.DOMChanges;\n }\n });\n Object.defineProperty(_exports, \"DOMTreeConstruction\", {\n enumerable: true,\n get: function () {\n return _runtime2.DOMTreeConstruction;\n }\n });\n Object.defineProperty(_exports, \"isSerializationFirstNode\", {\n enumerable: true,\n get: function () {\n return _runtime2.isSerializationFirstNode;\n }\n });\n Object.defineProperty(_exports, \"NodeDOMTreeConstruction\", {\n enumerable: true,\n get: function () {\n return _node.NodeDOMTreeConstruction;\n }\n });\n _exports.OutletView = _exports.DebugStack = _exports.INVOKE = _exports.UpdatableReference = _exports.AbstractComponentManager = _exports._experimentalMacros = _exports.InteractiveRenderer = _exports.InertRenderer = _exports.Renderer = _exports.SafeString = _exports.Environment = _exports.Helper = _exports.ROOT_REF = _exports.Component = _exports.LinkComponent = _exports.TextArea = _exports.TextField = _exports.Checkbox = _exports.RootTemplate = void 0;\n\n function _templateObject10() {\n const data = _taggedTemplateLiteralLoose([\"component:-default\"]);\n\n _templateObject10 = function () {\n return data;\n };\n\n return data;\n }\n\n function _templateObject9() {\n const data = _taggedTemplateLiteralLoose([\"template-compiler:main\"]);\n\n _templateObject9 = function () {\n return data;\n };\n\n return data;\n }\n\n function _templateObject8() {\n const data = _taggedTemplateLiteralLoose([\"template-compiler:main\"]);\n\n _templateObject8 = function () {\n return data;\n };\n\n return data;\n }\n\n function _templateObject7() {\n const data = _taggedTemplateLiteralLoose([\"template-compiler:main\"]);\n\n _templateObject7 = function () {\n return data;\n };\n\n return data;\n }\n\n function _templateObject6() {\n const data = _taggedTemplateLiteralLoose([\"template:components/-default\"]);\n\n _templateObject6 = function () {\n return data;\n };\n\n return data;\n }\n\n function _templateObject5() {\n const data = _taggedTemplateLiteralLoose([\"template:-root\"]);\n\n _templateObject5 = function () {\n return data;\n };\n\n return data;\n }\n\n function _templateObject4() {\n const data = _taggedTemplateLiteralLoose([\"template:-root\"]);\n\n _templateObject4 = function () {\n return data;\n };\n\n return data;\n }\n\n function _templateObject3() {\n const data = _taggedTemplateLiteralLoose([\"component:-default\"]);\n\n _templateObject3 = function () {\n return data;\n };\n\n return data;\n }\n\n function _templateObject2() {\n const data = _taggedTemplateLiteralLoose([\"template:components/-default\"]);\n\n _templateObject2 = function () {\n return data;\n };\n\n return data;\n }\n\n function _templateObject() {\n const data = _taggedTemplateLiteralLoose([\"template:components/-default\"]);\n\n _templateObject = function () {\n return data;\n };\n\n return data;\n }\n\n function _taggedTemplateLiteralLoose(strings, raw) { if (!raw) { raw = strings.slice(0); } strings.raw = raw; return strings; }\n\n var _CoreView$extend;\n\n function template(json) {\n return new FactoryWrapper((0, _opcodeCompiler.templateFactory)(json));\n }\n\n var FactoryWrapper =\n /*#__PURE__*/\n function () {\n function FactoryWrapper(factory) {\n this.factory = factory;\n this.id = factory.id;\n this.meta = factory.meta;\n }\n\n var _proto = FactoryWrapper.prototype;\n\n _proto.create = function create(injections) {\n var owner = (0, _owner.getOwner)(injections);\n return this.factory.create(injections.compiler, {\n owner: owner\n });\n };\n\n return FactoryWrapper;\n }();\n\n var RootTemplate = template({\n \"id\": \"T+MWx6cw\",\n \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[29,\\\"component\\\",[[24,0,[]]],null],false]],\\\"hasEval\\\":false}\",\n \"meta\": {\n \"moduleName\": \"packages/@ember/-internals/glimmer/lib/templates/root.hbs\"\n }\n });\n /**\n @module @ember/component\n */\n\n _exports.RootTemplate = RootTemplate;\n var RECOMPUTE_TAG = (0, _utils.symbol)('RECOMPUTE_TAG');\n\n function isHelperFactory(helper) {\n return typeof helper === 'object' && helper !== null && helper.class && helper.class.isHelperFactory;\n }\n\n function isSimpleHelper(helper) {\n return helper.destroy === undefined;\n }\n /**\n Ember Helpers are functions that can compute values, and are used in templates.\n For example, this code calls a helper named `format-currency`:\n \n ```handlebars\n
{{format-currency cents currency=\"$\"}}
\n ```\n \n Additionally a helper can be called as a nested helper (sometimes called a\n subexpression). In this example, the computed value of a helper is passed\n to a component named `show-money`:\n \n ```handlebars\n {{show-money amount=(format-currency cents currency=\"$\")}}\n ```\n \n Helpers defined using a class must provide a `compute` function. For example:\n \n ```app/helpers/format-currency.js\n import Helper from '@ember/component/helper';\n \n export default Helper.extend({\n compute([cents], { currency }) {\n return `${currency}${cents * 0.01}`;\n }\n });\n ```\n \n Each time the input to a helper changes, the `compute` function will be\n called again.\n \n As instances, these helpers also have access to the container and will accept\n injected dependencies.\n \n Additionally, class helpers can call `recompute` to force a new computation.\n \n @class Helper\n @public\n @since 1.13.0\n */\n\n\n var Helper = _runtime.FrameworkObject.extend({\n init: function () {\n this._super.apply(this, arguments);\n\n this[RECOMPUTE_TAG] = _reference.DirtyableTag.create();\n },\n\n /**\n On a class-based helper, it may be useful to force a recomputation of that\n helpers value. This is akin to `rerender` on a component.\n For example, this component will rerender when the `currentUser` on a\n session service changes:\n ```app/helpers/current-user-email.js\n import Helper from '@ember/component/helper'\n import { inject as service } from '@ember/service'\n import { observer } from '@ember/object'\n export default Helper.extend({\n session: service(),\n onNewUser: observer('session.currentUser', function() {\n this.recompute();\n }),\n compute() {\n return this.get('session.currentUser.email');\n }\n });\n ```\n @method recompute\n @public\n @since 1.13.0\n */\n recompute: function () {\n this[RECOMPUTE_TAG].inner.dirty();\n }\n });\n\n _exports.Helper = Helper;\n Helper.isHelperFactory = true;\n\n var Wrapper =\n /*#__PURE__*/\n function () {\n function Wrapper(compute) {\n this.compute = compute;\n this.isHelperFactory = true;\n }\n\n var _proto2 = Wrapper.prototype;\n\n _proto2.create = function create() {\n // needs new instance or will leak containers\n return {\n compute: this.compute\n };\n };\n\n return Wrapper;\n }();\n /**\n In many cases, the ceremony of a full `Helper` class is not required.\n The `helper` method create pure-function helpers without instances. For\n example:\n \n ```app/helpers/format-currency.js\n import { helper } from '@ember/component/helper';\n \n export default helper(function(params, hash) {\n let cents = params[0];\n let currency = hash.currency;\n return `${currency}${cents * 0.01}`;\n });\n ```\n \n @static\n @param {Function} helper The helper function\n @method helper\n @for @ember/component/helper\n @public\n @since 1.13.0\n */\n\n\n function helper(helperFn) {\n return new Wrapper(helperFn);\n }\n\n function _toBool(predicate) {\n if ((0, _runtime.isArray)(predicate)) {\n return predicate.length !== 0;\n } else {\n return Boolean(predicate);\n }\n }\n\n var UPDATE = (0, _utils.symbol)('UPDATE');\n var INVOKE = (0, _utils.symbol)('INVOKE');\n _exports.INVOKE = INVOKE;\n var ACTION = (0, _utils.symbol)('ACTION');\n\n var EmberPathReference =\n /*#__PURE__*/\n function () {\n function EmberPathReference() {}\n\n var _proto3 = EmberPathReference.prototype;\n\n _proto3.get = function get(key) {\n return PropertyReference.create(this, key);\n };\n\n return EmberPathReference;\n }();\n\n var CachedReference$1 =\n /*#__PURE__*/\n function (_EmberPathReference) {\n (0, _emberBabel.inheritsLoose)(CachedReference$1, _EmberPathReference);\n\n function CachedReference$1() {\n var _this;\n\n _this = _EmberPathReference.call(this) || this;\n _this.lastRevision = null;\n _this.lastValue = null;\n return _this;\n }\n\n var _proto4 = CachedReference$1.prototype;\n\n _proto4.value = function value() {\n var tag = this.tag,\n lastRevision = this.lastRevision,\n lastValue = this.lastValue;\n\n if (lastRevision === null || !tag.validate(lastRevision)) {\n lastValue = this.lastValue = this.compute();\n this.lastRevision = tag.value();\n }\n\n return lastValue;\n };\n\n return CachedReference$1;\n }(EmberPathReference);\n\n var RootReference =\n /*#__PURE__*/\n function (_ConstReference) {\n (0, _emberBabel.inheritsLoose)(RootReference, _ConstReference);\n\n function RootReference(value) {\n var _this2;\n\n _this2 = _ConstReference.call(this, value) || this;\n _this2.children = Object.create(null);\n return _this2;\n }\n\n RootReference.create = function create(value) {\n return valueToRef(value);\n };\n\n var _proto5 = RootReference.prototype;\n\n _proto5.get = function get(propertyKey) {\n var ref = this.children[propertyKey];\n\n if (ref === undefined) {\n ref = this.children[propertyKey] = new RootPropertyReference(this.inner, propertyKey);\n }\n\n return ref;\n };\n\n return RootReference;\n }(_reference.ConstReference);\n\n var TwoWayFlushDetectionTag;\n\n if (true\n /* DEBUG */\n ) {\n TwoWayFlushDetectionTag =\n /*#__PURE__*/\n function () {\n function TwoWayFlushDetectionTag(tag, key, ref) {\n this.tag = tag;\n this.key = key;\n this.ref = ref;\n this.parent = null;\n }\n\n TwoWayFlushDetectionTag.create = function create(tag, key, ref) {\n return new _reference.TagWrapper(tag.type, new TwoWayFlushDetectionTag(tag, key, ref));\n };\n\n var _proto6 = TwoWayFlushDetectionTag.prototype;\n\n _proto6.value = function value() {\n return this.tag.value();\n };\n\n _proto6.validate = function validate(ticket) {\n var parent = this.parent,\n key = this.key,\n ref = this.ref;\n var isValid = this.tag.validate(ticket);\n\n if (isValid && parent) {\n (0, _metal.didRender)(parent, key, ref);\n }\n\n return isValid;\n };\n\n _proto6.didCompute = function didCompute(parent) {\n this.parent = parent;\n (0, _metal.didRender)(parent, this.key, this.ref);\n };\n\n return TwoWayFlushDetectionTag;\n }();\n }\n\n var PropertyReference =\n /*#__PURE__*/\n function (_CachedReference$) {\n (0, _emberBabel.inheritsLoose)(PropertyReference, _CachedReference$);\n\n function PropertyReference() {\n return _CachedReference$.apply(this, arguments) || this;\n }\n\n PropertyReference.create = function create(parentReference, propertyKey) {\n if ((0, _reference.isConst)(parentReference)) {\n return valueKeyToRef(parentReference.value(), propertyKey);\n } else {\n return new NestedPropertyReference(parentReference, propertyKey);\n }\n };\n\n var _proto7 = PropertyReference.prototype;\n\n _proto7.get = function get(key) {\n return new NestedPropertyReference(this, key);\n };\n\n return PropertyReference;\n }(CachedReference$1);\n\n var RootPropertyReference =\n /*#__PURE__*/\n function (_PropertyReference) {\n (0, _emberBabel.inheritsLoose)(RootPropertyReference, _PropertyReference);\n\n function RootPropertyReference(parentValue, propertyKey) {\n var _this3;\n\n _this3 = _PropertyReference.call(this) || this;\n _this3.parentValue = parentValue;\n _this3.propertyKey = propertyKey;\n\n if (false\n /* EMBER_METAL_TRACKED_PROPERTIES */\n ) {\n _this3.propertyTag = _reference.UpdatableTag.create(_reference.CONSTANT_TAG);\n } else {\n _this3.propertyTag = _reference.UpdatableTag.create((0, _metal.tagForProperty)(parentValue, propertyKey));\n }\n\n if (true\n /* DEBUG */\n ) {\n _this3.tag = TwoWayFlushDetectionTag.create(_this3.propertyTag, propertyKey, (0, _emberBabel.assertThisInitialized)(_this3));\n } else {\n _this3.tag = _this3.propertyTag;\n }\n\n if (true\n /* DEBUG */\n ) {\n (0, _metal.watchKey)(parentValue, propertyKey);\n }\n\n return _this3;\n }\n\n var _proto8 = RootPropertyReference.prototype;\n\n _proto8.compute = function compute() {\n var parentValue = this.parentValue,\n propertyKey = this.propertyKey;\n\n if (true\n /* DEBUG */\n ) {\n this.tag.inner.didCompute(parentValue);\n }\n\n var parent = null;\n var tracker = null;\n\n if (false\n /* EMBER_METAL_TRACKED_PROPERTIES */\n ) {\n parent = (0, _metal.getCurrentTracker)();\n tracker = (0, _metal.setCurrentTracker)();\n }\n\n var ret = (0, _metal.get)(parentValue, propertyKey);\n\n if (false\n /* EMBER_METAL_TRACKED_PROPERTIES */\n ) {\n (0, _metal.setCurrentTracker)(parent);\n var tag = tracker.combine();\n if (parent) parent.add(tag);\n this.propertyTag.inner.update(tag);\n }\n\n return ret;\n };\n\n _proto8[UPDATE] = function (value) {\n (0, _metal.set)(this.parentValue, this.propertyKey, value);\n };\n\n return RootPropertyReference;\n }(PropertyReference);\n\n var NestedPropertyReference =\n /*#__PURE__*/\n function (_PropertyReference2) {\n (0, _emberBabel.inheritsLoose)(NestedPropertyReference, _PropertyReference2);\n\n function NestedPropertyReference(parentReference, propertyKey) {\n var _this4;\n\n _this4 = _PropertyReference2.call(this) || this;\n _this4.parentReference = parentReference;\n _this4.propertyKey = propertyKey;\n var parentReferenceTag = parentReference.tag;\n\n var propertyTag = _this4.propertyTag = _reference.UpdatableTag.create(_reference.CONSTANT_TAG);\n\n if (true\n /* DEBUG */\n ) {\n var tag = (0, _reference.combine)([parentReferenceTag, propertyTag]);\n _this4.tag = TwoWayFlushDetectionTag.create(tag, propertyKey, (0, _emberBabel.assertThisInitialized)(_this4));\n } else {\n _this4.tag = (0, _reference.combine)([parentReferenceTag, propertyTag]);\n }\n\n return _this4;\n }\n\n var _proto9 = NestedPropertyReference.prototype;\n\n _proto9.compute = function compute() {\n var parentReference = this.parentReference,\n propertyTag = this.propertyTag,\n propertyKey = this.propertyKey;\n\n var _parentValue = parentReference.value();\n\n var parentValueType = typeof _parentValue;\n\n if (parentValueType === 'string' && propertyKey === 'length') {\n return _parentValue.length;\n }\n\n if (parentValueType === 'object' && _parentValue !== null || parentValueType === 'function') {\n var parentValue = _parentValue;\n\n if (true\n /* DEBUG */\n ) {\n (0, _metal.watchKey)(parentValue, propertyKey);\n }\n\n if (true\n /* DEBUG */\n ) {\n this.tag.inner.didCompute(parentValue);\n }\n\n var parent = null;\n var tracker = null;\n\n if (false\n /* EMBER_METAL_TRACKED_PROPERTIES */\n ) {\n parent = (0, _metal.getCurrentTracker)();\n tracker = (0, _metal.setCurrentTracker)();\n }\n\n var ret = (0, _metal.get)(parentValue, propertyKey);\n\n if (false\n /* EMBER_METAL_TRACKED_PROPERTIES */\n ) {\n (0, _metal.setCurrentTracker)(parent);\n var tag = tracker.combine();\n if (parent) parent.add(tag);\n propertyTag.inner.update(tag);\n } else {\n propertyTag.inner.update((0, _metal.tagForProperty)(parentValue, propertyKey));\n }\n\n return ret;\n } else {\n return undefined;\n }\n };\n\n _proto9[UPDATE] = function (value) {\n (0, _metal.set)(this.parentReference.value()\n /* let the other side handle the error */\n , this.propertyKey, value);\n };\n\n return NestedPropertyReference;\n }(PropertyReference);\n\n var UpdatableReference =\n /*#__PURE__*/\n function (_EmberPathReference2) {\n (0, _emberBabel.inheritsLoose)(UpdatableReference, _EmberPathReference2);\n\n function UpdatableReference(value) {\n var _this5;\n\n _this5 = _EmberPathReference2.call(this) || this;\n _this5.tag = _reference.DirtyableTag.create();\n _this5._value = value;\n return _this5;\n }\n\n var _proto10 = UpdatableReference.prototype;\n\n _proto10.value = function value() {\n return this._value;\n };\n\n _proto10.update = function update(value) {\n var _value = this._value;\n\n if (value !== _value) {\n this.tag.inner.dirty();\n this._value = value;\n }\n };\n\n return UpdatableReference;\n }(EmberPathReference);\n\n _exports.UpdatableReference = UpdatableReference;\n\n var ConditionalReference$1 =\n /*#__PURE__*/\n function (_ConditionalReference) {\n (0, _emberBabel.inheritsLoose)(ConditionalReference$1, _ConditionalReference);\n\n ConditionalReference$1.create = function create(reference) {\n if ((0, _reference.isConst)(reference)) {\n var value = reference.value();\n\n if (!(0, _utils.isProxy)(value)) {\n return _runtime2.PrimitiveReference.create(_toBool(value));\n }\n }\n\n return new ConditionalReference$1(reference);\n };\n\n function ConditionalReference$1(reference) {\n var _this6;\n\n _this6 = _ConditionalReference.call(this, reference) || this;\n _this6.objectTag = _reference.UpdatableTag.create(_reference.CONSTANT_TAG);\n _this6.tag = (0, _reference.combine)([reference.tag, _this6.objectTag]);\n return _this6;\n }\n\n var _proto11 = ConditionalReference$1.prototype;\n\n _proto11.toBool = function toBool(predicate) {\n if ((0, _utils.isProxy)(predicate)) {\n this.objectTag.inner.update((0, _metal.tagForProperty)(predicate, 'isTruthy'));\n return Boolean((0, _metal.get)(predicate, 'isTruthy'));\n } else {\n this.objectTag.inner.update((0, _metal.tagFor)(predicate));\n return _toBool(predicate);\n }\n };\n\n return ConditionalReference$1;\n }(_runtime2.ConditionalReference);\n\n var SimpleHelperReference =\n /*#__PURE__*/\n function (_CachedReference$2) {\n (0, _emberBabel.inheritsLoose)(SimpleHelperReference, _CachedReference$2);\n\n function SimpleHelperReference(helper$$1, args) {\n var _this7;\n\n _this7 = _CachedReference$2.call(this) || this;\n _this7.helper = helper$$1;\n _this7.args = args;\n _this7.tag = args.tag;\n return _this7;\n }\n\n SimpleHelperReference.create = function create(helper$$1, args) {\n if ((0, _reference.isConst)(args)) {\n var positional = args.positional,\n named = args.named;\n var positionalValue = positional.value();\n var namedValue = named.value();\n\n if (true\n /* DEBUG */\n ) {\n (0, _debug.debugFreeze)(positionalValue);\n (0, _debug.debugFreeze)(namedValue);\n }\n\n var result = helper$$1(positionalValue, namedValue);\n return valueToRef(result);\n } else {\n return new SimpleHelperReference(helper$$1, args);\n }\n };\n\n var _proto12 = SimpleHelperReference.prototype;\n\n _proto12.compute = function compute() {\n var helper$$1 = this.helper,\n _this$args = this.args,\n positional = _this$args.positional,\n named = _this$args.named;\n var positionalValue = positional.value();\n var namedValue = named.value();\n\n if (true\n /* DEBUG */\n ) {\n (0, _debug.debugFreeze)(positionalValue);\n (0, _debug.debugFreeze)(namedValue);\n }\n\n return helper$$1(positionalValue, namedValue);\n };\n\n return SimpleHelperReference;\n }(CachedReference$1);\n\n var ClassBasedHelperReference =\n /*#__PURE__*/\n function (_CachedReference$3) {\n (0, _emberBabel.inheritsLoose)(ClassBasedHelperReference, _CachedReference$3);\n\n function ClassBasedHelperReference(instance, args) {\n var _this8;\n\n _this8 = _CachedReference$3.call(this) || this;\n _this8.instance = instance;\n _this8.args = args;\n _this8.tag = (0, _reference.combine)([instance[RECOMPUTE_TAG], args.tag]);\n return _this8;\n }\n\n ClassBasedHelperReference.create = function create(instance, args) {\n return new ClassBasedHelperReference(instance, args);\n };\n\n var _proto13 = ClassBasedHelperReference.prototype;\n\n _proto13.compute = function compute() {\n var instance = this.instance,\n _this$args2 = this.args,\n positional = _this$args2.positional,\n named = _this$args2.named;\n var positionalValue = positional.value();\n var namedValue = named.value();\n\n if (true\n /* DEBUG */\n ) {\n (0, _debug.debugFreeze)(positionalValue);\n (0, _debug.debugFreeze)(namedValue);\n }\n\n return instance.compute(positionalValue, namedValue);\n };\n\n return ClassBasedHelperReference;\n }(CachedReference$1);\n\n var InternalHelperReference =\n /*#__PURE__*/\n function (_CachedReference$4) {\n (0, _emberBabel.inheritsLoose)(InternalHelperReference, _CachedReference$4);\n\n function InternalHelperReference(helper$$1, args) {\n var _this9;\n\n _this9 = _CachedReference$4.call(this) || this;\n _this9.helper = helper$$1;\n _this9.args = args;\n _this9.tag = args.tag;\n return _this9;\n }\n\n var _proto14 = InternalHelperReference.prototype;\n\n _proto14.compute = function compute() {\n var helper$$1 = this.helper,\n args = this.args;\n return helper$$1(args);\n };\n\n return InternalHelperReference;\n }(CachedReference$1);\n\n var UnboundReference =\n /*#__PURE__*/\n function (_ConstReference2) {\n (0, _emberBabel.inheritsLoose)(UnboundReference, _ConstReference2);\n\n function UnboundReference() {\n return _ConstReference2.apply(this, arguments) || this;\n }\n\n UnboundReference.create = function create(value) {\n return valueToRef(value, false);\n };\n\n var _proto15 = UnboundReference.prototype;\n\n _proto15.get = function get(key) {\n return valueToRef(this.inner[key], false);\n };\n\n return UnboundReference;\n }(_reference.ConstReference);\n\n var ReadonlyReference =\n /*#__PURE__*/\n function (_CachedReference$5) {\n (0, _emberBabel.inheritsLoose)(ReadonlyReference, _CachedReference$5);\n\n function ReadonlyReference(inner) {\n var _this10;\n\n _this10 = _CachedReference$5.call(this) || this;\n _this10.inner = inner;\n _this10.tag = inner.tag;\n return _this10;\n }\n\n var _proto16 = ReadonlyReference.prototype;\n\n _proto16.compute = function compute() {\n return this.inner.value();\n };\n\n _proto16.get = function get(key) {\n return this.inner.get(key);\n };\n\n (0, _emberBabel.createClass)(ReadonlyReference, [{\n key: INVOKE,\n get: function () {\n return this.inner[INVOKE];\n }\n }]);\n return ReadonlyReference;\n }(CachedReference$1);\n\n function referenceFromParts(root, parts) {\n var reference = root;\n\n for (var i = 0; i < parts.length; i++) {\n reference = reference.get(parts[i]);\n }\n\n return reference;\n }\n\n function isObject(value) {\n return value !== null && typeof value === 'object';\n }\n\n function isFunction(value) {\n return typeof value === 'function';\n }\n\n function isPrimitive(value) {\n if (true\n /* DEBUG */\n ) {\n var type = typeof value;\n return value === undefined || value === null || type === 'boolean' || type === 'number' || type === 'string';\n } else {\n return true;\n }\n }\n\n function valueToRef(value) {\n var bound = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (isObject(value)) {\n // root of interop with ember objects\n return bound ? new RootReference(value) : new UnboundReference(value);\n } else if (isFunction(value)) {\n // ember doesn't do observing with functions\n return new UnboundReference(value);\n } else if (isPrimitive(value)) {\n return _runtime2.PrimitiveReference.create(value);\n } else if (true\n /* DEBUG */\n ) {\n var type = typeof value;\n var output;\n\n try {\n output = String(value);\n } catch (e) {\n output = null;\n }\n\n if (output) {\n throw (0, _util.unreachable)(\"[BUG] Unexpected \" + type + \" (\" + output + \")\");\n } else {\n throw (0, _util.unreachable)(\"[BUG] Unexpected \" + type);\n }\n } else {\n throw (0, _util.unreachable)();\n }\n }\n\n function valueKeyToRef(value, key) {\n if (isObject(value)) {\n // root of interop with ember objects\n return new RootPropertyReference(value, key);\n } else if (isFunction(value)) {\n // ember doesn't do observing with functions\n return new UnboundReference(value[key]);\n } else if (isPrimitive(value)) {\n return _runtime2.UNDEFINED_REFERENCE;\n } else if (true\n /* DEBUG */\n ) {\n var type = typeof value;\n var output;\n\n try {\n output = String(value);\n } catch (e) {\n output = null;\n }\n\n if (output) {\n throw (0, _util.unreachable)(\"[BUG] Unexpected \" + type + \" (\" + output + \")\");\n } else {\n throw (0, _util.unreachable)(\"[BUG] Unexpected \" + type);\n }\n } else {\n throw (0, _util.unreachable)();\n }\n }\n\n var DIRTY_TAG = (0, _utils.symbol)('DIRTY_TAG');\n var ARGS = (0, _utils.symbol)('ARGS');\n var ROOT_REF = (0, _utils.symbol)('ROOT_REF');\n _exports.ROOT_REF = ROOT_REF;\n var IS_DISPATCHING_ATTRS = (0, _utils.symbol)('IS_DISPATCHING_ATTRS');\n var HAS_BLOCK = (0, _utils.symbol)('HAS_BLOCK');\n var BOUNDS = (0, _utils.symbol)('BOUNDS');\n /**\n @module @ember/component\n */\n\n /**\n A component is an isolated piece of UI, represented by a template and an\n optional class. When a component has a class, its template's `this` value\n is an instance of the component class.\n \n ## Template-only Components\n \n The simplest way to create a component is to create a template file in\n `app/templates/components`. For example, if you name a template\n `app/templates/components/person-profile.hbs`:\n \n ```app/templates/components/person-profile.hbs\n

{{@person.name}}

\n \n

{{@person.signature}}

\n ```\n \n You will be able to use `` to invoke this component elsewhere\n in your application:\n \n ```app/templates/application.hbs\n \n ```\n \n Note that component names are capitalized here in order to distinguish them\n from regular HTML elements, but they are dasherized in the file system.\n \n While the angle bracket invocation form is generally preferred, it is also\n possible to invoke the same component with the `{{person-profile}}` syntax:\n \n ```app/templates/application.hbs\n {{person-profile person=this.currentUser}}\n ```\n \n Note that with this syntax, you use dashes in the component name and\n arguments are passed without the `@` sign.\n \n In both cases, Ember will render the content of the component template we\n created above. The end result will be something like this:\n \n ```html\n

Tomster

\n \n

Out of office this week

\n ```\n \n ## File System Nesting\n \n Components can be nested inside sub-folders for logical groupping. For\n example, if we placed our template in\n `app/templates/components/person/short-profile.hbs`, we can invoke it as\n ``:\n \n ```app/templates/application.hbs\n \n ```\n \n Or equivalently, `{{person/short-profile}}`:\n \n ```app/templates/application.hbs\n {{person/short-profile person=this.currentUser}}\n ```\n \n ## Yielding Contents\n \n You can use `yield` inside a template to include the **contents** of any block\n attached to the component. The block will be executed in its original context:\n \n ```handlebars\n \n

Admin mode

\n {{! Executed in the current context. }}\n
\n ```\n \n or\n \n ```handlebars\n {{#person-profile person=this.currentUser}}\n

Admin mode

\n {{! Executed in the current context. }}\n {{/person-profile}}\n ```\n \n ```app/templates/components/person-profile.hbs\n

{{@person.name}}

\n {{yield}}\n ```\n \n ## Customizing Components With JavaScript\n \n If you want to customize the component in order to handle events, transform\n arguments or maintain internal state, you implement a subclass of `Component`.\n \n One example is to add computed properties to your component:\n \n ```app/components/person-profile.js\n import Component from '@ember/component';\n \n export default Component.extend({\n displayName: computed('person.title', 'person.firstName', 'person.lastName', function() {\n let { title, firstName, lastName } = this;\n \n if (title) {\n return `${title} ${lastName}`;\n } else {\n return `${firstName} ${lastName};\n }\n })\n });\n ```\n \n And then use it in the component's template:\n \n ```app/templates/components/person-profile.hbs\n

{{this.displayName}}

\n {{yield}}\n ```\n \n ## Customizing a Component's HTML Element in JavaScript\n \n ### HTML Tag\n \n The default HTML tag name used for a component's HTML representation is `div`.\n This can be customized by setting the `tagName` property.\n \n Consider the following component class:\n \n ```app/components/emphasized-paragraph.js\n import Component from '@ember/component';\n \n export default Component.extend({\n tagName: 'em'\n });\n ```\n \n When invoked, this component would produce output that looks something like\n this:\n \n ```html\n \n ```\n \n ### HTML `class` Attribute\n \n The HTML `class` attribute of a component's tag can be set by providing a\n `classNames` property that is set to an array of strings:\n \n ```app/components/my-widget.js\n import Component from '@ember/component';\n \n export default Component.extend({\n classNames: ['my-class', 'my-other-class']\n });\n ```\n \n Invoking this component will produce output that looks like this:\n \n ```html\n
\n ```\n \n `class` attribute values can also be set by providing a `classNameBindings`\n property set to an array of properties names for the component. The return\n value of these properties will be added as part of the value for the\n components's `class` attribute. These properties can be computed properties:\n \n ```app/components/my-widget.js\n import Component from '@ember/component';\n import { computed } from '@ember/object';\n \n export default Component.extend({\n classNames: ['my-class', 'my-other-class'],\n classNameBindings: ['propertyA', 'propertyB'],\n \n propertyA: 'from-a',\n propertyB: computed(function() {\n if (someLogic) { return 'from-b'; }\n })\n });\n ```\n \n Invoking this component will produce HTML that looks like:\n \n ```html\n
\n ```\n \n Note that `classNames` and `classNameBindings` is in addition to the `class`\n attribute passed with the angle bracket invocation syntax. Therefore, if this\n component was invoked like so:\n \n ```handlebars\n \n ```\n \n The resulting HTML will look similar to this:\n \n ```html\n
\n ```\n \n If the value of a class name binding returns a boolean the property name\n itself will be used as the class name if the property is true. The class name\n will not be added if the value is `false` or `undefined`.\n \n ```app/components/my-widget.js\n import Component from '@ember/component';\n \n export default Component.extend({\n classNameBindings: ['hovered'],\n \n hovered: true\n });\n ```\n \n Invoking this component will produce HTML that looks like:\n \n ```html\n
\n ```\n \n ### Custom Class Names for Boolean Values\n \n When using boolean class name bindings you can supply a string value other\n than the property name for use as the `class` HTML attribute by appending the\n preferred value after a \":\" character when defining the binding:\n \n ```app/components/my-widget.js\n import Component from '@ember/component';\n \n export default Component.extend({\n classNameBindings: ['awesome:so-very-cool'],\n \n awesome: true\n });\n ```\n \n Invoking this component will produce HTML that looks like:\n \n ```html\n
\n ```\n \n Boolean value class name bindings whose property names are in a\n camelCase-style format will be converted to a dasherized format:\n \n ```app/components/my-widget.js\n import Component from '@ember/component';\n \n export default Component.extend({\n classNameBindings: ['isUrgent'],\n \n isUrgent: true\n });\n ```\n \n Invoking this component will produce HTML that looks like:\n \n ```html\n
\n ```\n \n Class name bindings can also refer to object values that are found by\n traversing a path relative to the component itself:\n \n ```app/components/my-widget.js\n import Component from '@ember/component';\n import EmberObject from '@ember/object';\n \n export default Component.extend({\n classNameBindings: ['messages.empty'],\n \n messages: EmberObject.create({\n empty: true\n })\n });\n ```\n \n Invoking this component will produce HTML that looks like:\n \n ```html\n
\n ```\n \n If you want to add a class name for a property which evaluates to true and\n and a different class name if it evaluates to false, you can pass a binding\n like this:\n \n ```app/components/my-widget.js\n import Component from '@ember/component';\n \n export default Component.extend({\n classNameBindings: ['isEnabled:enabled:disabled'],\n isEnabled: true\n });\n ```\n \n Invoking this component will produce HTML that looks like:\n \n ```html\n
\n ```\n \n When isEnabled is `false`, the resulting HTML representation looks like this:\n \n ```html\n
\n ```\n \n This syntax offers the convenience to add a class if a property is `false`:\n \n ```app/components/my-widget.js\n import Component from '@ember/component';\n \n // Applies no class when isEnabled is true and class 'disabled' when isEnabled is false\n export default Component.extend({\n classNameBindings: ['isEnabled::disabled'],\n isEnabled: true\n });\n ```\n \n Invoking this component when the `isEnabled` property is true will produce\n HTML that looks like:\n \n ```html\n
\n ```\n \n Invoking it when the `isEnabled` property on the component is `false` will\n produce HTML that looks like:\n \n ```html\n
\n ```\n \n Updates to the value of a class name binding will result in automatic update\n of the HTML `class` attribute in the component's rendered HTML\n representation. If the value becomes `false` or `undefined` the class name\n will be removed.\n \n Both `classNames` and `classNameBindings` are concatenated properties. See\n [EmberObject](/api/ember/release/classes/EmberObject) documentation for more\n information about concatenated properties.\n \n ### Other HTML Attributes\n \n The HTML attribute section of a component's tag can be set by providing an\n `attributeBindings` property set to an array of property names on the component.\n The return value of these properties will be used as the value of the component's\n HTML associated attribute:\n \n ```app/components/my-anchor.js\n import Component from '@ember/component';\n \n export default Component.extend({\n tagName: 'a',\n attributeBindings: ['href'],\n \n href: 'http://google.com'\n });\n ```\n \n Invoking this component will produce HTML that looks like:\n \n ```html\n \n ```\n \n One property can be mapped on to another by placing a \":\" between\n the source property and the destination property:\n \n ```app/components/my-anchor.js\n import Component from '@ember/component';\n \n export default Component.extend({\n tagName: 'a',\n attributeBindings: ['url:href'],\n \n url: 'http://google.com'\n });\n ```\n \n Invoking this component will produce HTML that looks like:\n \n ```html\n \n ```\n \n HTML attributes passed with angle bracket invocations will take precedence\n over those specified in `attributeBindings`. Therefore, if this component was\n invoked like so:\n \n ```handlebars\n \n ```\n \n The resulting HTML will looks like this:\n \n ```html\n \n ```\n \n Note that the `href` attribute is ultimately set to `http://bing.com`,\n despite it having attribute binidng to the `url` property, which was\n set to `http://google.com`.\n \n Namespaced attributes (e.g. `xlink:href`) are supported, but have to be\n mapped, since `:` is not a valid character for properties in Javascript:\n \n ```app/components/my-use.js\n import Component from '@ember/component';\n \n export default Component.extend({\n tagName: 'use',\n attributeBindings: ['xlinkHref:xlink:href'],\n \n xlinkHref: '#triangle'\n });\n ```\n \n Invoking this component will produce HTML that looks like:\n \n ```html\n \n ```\n \n If the value of a property monitored by `attributeBindings` is a boolean, the\n attribute will be present or absent depending on the value:\n \n ```app/components/my-text-input.js\n import Component from '@ember/component';\n \n export default Component.extend({\n tagName: 'input',\n attributeBindings: ['disabled'],\n \n disabled: false\n });\n ```\n \n Invoking this component will produce HTML that looks like:\n \n ```html\n \n ```\n \n `attributeBindings` can refer to computed properties:\n \n ```app/components/my-text-input.js\n import Component from '@ember/component';\n import { computed } from '@ember/object';\n \n export default Component.extend({\n tagName: 'input',\n attributeBindings: ['disabled'],\n \n disabled: computed(function() {\n if (someLogic) {\n return true;\n } else {\n return false;\n }\n })\n });\n ```\n \n To prevent setting an attribute altogether, use `null` or `undefined` as the\n value of the property used in `attributeBindings`:\n \n ```app/components/my-text-input.js\n import Component from '@ember/component';\n \n export default Component.extend({\n tagName: 'form',\n attributeBindings: ['novalidate'],\n novalidate: null\n });\n ```\n \n Updates to the property of an attribute binding will result in automatic\n update of the HTML attribute in the component's HTML output.\n \n `attributeBindings` is a concatenated property. See\n [EmberObject](/api/ember/release/classes/EmberObject) documentation for more\n information about concatenated properties.\n \n ## Layouts\n \n The `layout` property can be used to dynamically specify a template associated\n with a component class, instead of relying on Ember to link together a\n component class and a template based on file names.\n \n In general, applications should not use this feature, but it's commonly used\n in addons for historical reasons.\n \n The `layout` property should be set to the default export of a template\n module, which is the name of a template file without the `.hbs` extension.\n \n ```app/templates/components/person-profile.hbs\n

Person's Title

\n
{{yield}}
\n ```\n \n ```app/components/person-profile.js\n import Component from '@ember/component';\n import layout from '../templates/components/person-profile';\n \n export default Component.extend({\n layout\n });\n ```\n \n If you invoke the component:\n \n ```handlebars\n \n

Chief Basket Weaver

\n

Fisherman Industries

\n
\n ```\n \n or\n \n ```handlebars\n {{#person-profile}}\n

Chief Basket Weaver

\n

Fisherman Industries

\n {{/person-profile}}\n ```\n \n It will result in the following HTML output:\n \n ```html\n

Person's Title

\n
\n

Chief Basket Weaver

\n

Fisherman Industries

\n
\n ```\n \n ## Handling Browser Events\n \n Components can respond to user-initiated events in one of two ways: adding\n event handler methods to the component's class, or adding actions to the\n component's template.\n \n ### Event Handler Methods\n \n Components can respond to user-initiated events by implementing a method that\n matches the event name. An event object will be passed as the argument to this\n method.\n \n ```app/components/my-widget.js\n import Component from '@ember/component';\n \n export default Component.extend({\n click(event) {\n // `event.target` is either the component's element or one of its children\n let tag = event.target.tagName.toLowerCase();\n console.log('clicked on a `<${tag}>` HTML element!');\n }\n });\n ```\n \n In this example, whenever the user clicked anywhere inside the component, it\n will log a message to the console.\n \n It is possible to handle event types other than `click` by implementing the\n following event handler methods. In addition, custom events can be registered\n by using `Application.customEvents`.\n \n Touch events:\n \n * `touchStart`\n * `touchMove`\n * `touchEnd`\n * `touchCancel`\n \n Keyboard events:\n \n * `keyDown`\n * `keyUp`\n * `keyPress`\n \n Mouse events:\n \n * `mouseDown`\n * `mouseUp`\n * `contextMenu`\n * `click`\n * `doubleClick`\n * `mouseMove`\n * `focusIn`\n * `focusOut`\n * `mouseEnter`\n * `mouseLeave`\n \n Form events:\n \n * `submit`\n * `change`\n * `focusIn`\n * `focusOut`\n * `input`\n \n Drag and drop events:\n \n * `dragStart`\n * `drag`\n * `dragEnter`\n * `dragLeave`\n * `dragOver`\n * `dragEnd`\n * `drop`\n \n ### `{{action}}` Helper\n \n Instead of handling all events of a particular type anywhere inside the\n component's element, you may instead want to limit it to a particular\n element in the component's template. In this case, it would be more\n convenient to implement an action instead.\n \n For example, you could implement the action `hello` for the `person-profile`\n component:\n \n ```app/components/person-profile.js\n import Component from '@ember/component';\n \n export default Component.extend({\n actions: {\n hello(name) {\n console.log(\"Hello\", name);\n }\n }\n });\n ```\n \n And then use it in the component's template:\n \n ```app/templates/components/person-profile.hbs\n

{{@person.name}}

\n \n \n ```\n \n When the user clicks the button, Ember will invoke the `hello` action,\n passing in the current value of `@person.name` as an argument.\n \n See [Ember.Templates.helpers.action](/api/ember/release/classes/Ember.Templates.helpers/methods/action?anchor=action).\n \n @class Component\n @extends Ember.CoreView\n @uses Ember.TargetActionSupport\n @uses Ember.ClassNamesSupport\n @uses Ember.ActionSupport\n @uses Ember.ViewMixin\n @uses Ember.ViewStateSupport\n @public\n */\n\n var Component = _views.CoreView.extend(_views.ChildViewsSupport, _views.ViewStateSupport, _views.ClassNamesSupport, _runtime.TargetActionSupport, _views.ActionSupport, _views.ViewMixin, (_CoreView$extend = {\n isComponent: true,\n init: function () {\n this._super.apply(this, arguments);\n\n this[IS_DISPATCHING_ATTRS] = false;\n this[DIRTY_TAG] = _reference.DirtyableTag.create();\n this[ROOT_REF] = new RootReference(this);\n this[BOUNDS] = null;\n\n if (true\n /* DEBUG */\n && this.renderer._destinedForDOM && this.tagName === '') {\n var eventNames = [];\n var eventDispatcher = (0, _owner.getOwner)(this).lookup('event_dispatcher:main');\n var events = eventDispatcher && eventDispatcher._finalEvents || {}; // tslint:disable-next-line:forin\n\n for (var key in events) {\n var methodName = events[key];\n\n if (typeof this[methodName] === 'function') {\n eventNames.push(methodName);\n }\n } // If in a tagless component, assert that no event handlers are defined\n\n\n true && !!eventNames.length && (0, _debug.assert)( // tslint:disable-next-line:max-line-length\n \"You can not define `\" + eventNames + \"` function(s) to handle DOM event in the `\" + this + \"` tagless component since it doesn't have any DOM element.\", !eventNames.length);\n }\n },\n rerender: function () {\n this[DIRTY_TAG].inner.dirty();\n\n this._super();\n }\n }, _CoreView$extend[_metal.PROPERTY_DID_CHANGE] = function (key) {\n if (this[IS_DISPATCHING_ATTRS]) {\n return;\n }\n\n var args = this[ARGS];\n var reference = args !== undefined ? args[key] : undefined;\n\n if (reference !== undefined && reference[UPDATE] !== undefined) {\n reference[UPDATE]((0, _metal.get)(this, key));\n }\n }, _CoreView$extend.getAttr = function (key) {\n // TODO Intimate API should be deprecated\n return this.get(key);\n }, _CoreView$extend.readDOMAttr = function (name) {\n // TODO revisit this\n var _element = (0, _views.getViewElement)(this);\n\n true && !(_element !== null) && (0, _debug.assert)(\"Cannot call `readDOMAttr` on \" + this + \" which does not have an element\", _element !== null);\n var element = _element;\n var isSVG = element.namespaceURI === _runtime2.SVG_NAMESPACE;\n\n var _normalizeProperty = (0, _runtime2.normalizeProperty)(element, name),\n type = _normalizeProperty.type,\n normalized = _normalizeProperty.normalized;\n\n if (isSVG || type === 'attr') {\n return element.getAttribute(normalized);\n }\n\n return element[normalized];\n }, _CoreView$extend.didReceiveAttrs = function () {}, _CoreView$extend.didRender = function () {}, _CoreView$extend.willRender = function () {}, _CoreView$extend.didUpdateAttrs = function () {}, _CoreView$extend.willUpdate = function () {}, _CoreView$extend.didUpdate = function () {}, _CoreView$extend));\n\n _exports.Component = Component;\n\n Component.toString = function () {\n return '@ember/component';\n };\n\n Component.reopenClass({\n isComponentFactory: true,\n positionalParams: []\n });\n var layout = template({\n \"id\": \"hvtsz7RF\",\n \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[],\\\"hasEval\\\":false}\",\n \"meta\": {\n \"moduleName\": \"packages/@ember/-internals/glimmer/lib/templates/empty.hbs\"\n }\n });\n /**\n @module @ember/component\n */\n\n /**\n The internal class used to create text inputs when the `{{input}}`\n helper is used with `type` of `checkbox`.\n \n See [Ember.Templates.helpers.input](/api/ember/release/classes/Ember.Templates.helpers/methods/input?anchor=input) for usage details.\n \n ## Direct manipulation of `checked`\n \n The `checked` attribute of an `Checkbox` object should always be set\n through the Ember object or by interacting with its rendered element\n representation via the mouse, keyboard, or touch. Updating the value of the\n checkbox via jQuery will result in the checked value of the object and its\n element losing synchronization.\n \n ## Layout and LayoutName properties\n \n Because HTML `input` elements are self closing `layout` and `layoutName`\n properties will not be applied.\n \n @class Checkbox\n @extends Component\n @public\n */\n\n var Checkbox = Component.extend({\n layout: layout,\n\n /**\n By default, this component will add the `ember-checkbox` class to the component's element.\n @property classNames\n @type Array | String\n @default ['ember-checkbox']\n @public\n */\n classNames: ['ember-checkbox'],\n tagName: 'input',\n\n /**\n By default this component will forward a number of arguments to attributes on the the\n component's element:\n * indeterminate\n * disabled\n * tabindex\n * name\n * autofocus\n * required\n * form\n When invoked with curly braces, this is the exhaustive list of HTML attributes you can\n customize (i.e. `{{input type=\"checkbox\" disabled=true}}`).\n When invoked with angle bracket invocation, this list is irrelevant, because you can use HTML\n attribute syntax to customize the element (i.e.\n ``). However, `@type` and\n `@checked` must be passed as named arguments, not attributes.\n @property attributeBindings\n @type Array | String\n @default ['type', 'checked', 'indeterminate', 'disabled', 'tabindex', 'name', 'autofocus', 'required', 'form']\n @public\n */\n attributeBindings: ['type', 'checked', 'indeterminate', 'disabled', 'tabindex', 'name', 'autofocus', 'required', 'form'],\n\n /**\n Sets the `type` attribute of the `Checkbox`'s element\n @property disabled\n @default false\n @private\n */\n type: 'checkbox',\n\n /**\n Sets the `disabled` attribute of the `Checkbox`'s element\n @property disabled\n @default false\n @public\n */\n disabled: false,\n\n /**\n Corresponds to the `indeterminate` property of the `Checkbox`'s element\n @property disabled\n @default false\n @public\n */\n indeterminate: false,\n\n /**\n Whenever the checkbox is inserted into the DOM, perform initialization steps, which include\n setting the indeterminate property if needed.\n If this method is overridden, `super` must be called.\n @method\n @public\n */\n didInsertElement: function () {\n this._super.apply(this, arguments);\n\n this.element.indeterminate = Boolean(this.indeterminate);\n },\n\n /**\n Whenever the `change` event is fired on the checkbox, update its `checked` property to reflect\n whether the checkbox is checked.\n If this method is overridden, `super` must be called.\n @method\n @public\n */\n change: function () {\n (0, _metal.set)(this, 'checked', this.element.checked);\n }\n });\n _exports.Checkbox = Checkbox;\n\n if (true\n /* DEBUG */\n ) {\n var UNSET = {};\n Checkbox.reopen({\n value: UNSET,\n didReceiveAttrs: function () {\n this._super();\n\n true && !!(this.type === 'checkbox' && this.value !== UNSET) && (0, _debug.assert)(\"`` is not supported; \" + \"please use `` instead.\", !(this.type === 'checkbox' && this.value !== UNSET));\n }\n });\n }\n\n Checkbox.toString = function () {\n return '@ember/component/checkbox';\n };\n /**\n @module @ember/component\n */\n\n\n var inputTypes = _browserEnvironment.hasDOM ? Object.create(null) : null;\n\n function canSetTypeOfInput(type) {\n // if running in outside of a browser always return\n // the original type\n if (!_browserEnvironment.hasDOM) {\n return Boolean(type);\n }\n\n if (type in inputTypes) {\n return inputTypes[type];\n }\n\n var inputTypeTestElement = document.createElement('input');\n\n try {\n inputTypeTestElement.type = type;\n } catch (e) {// ignored\n }\n\n return inputTypes[type] = inputTypeTestElement.type === type;\n }\n /**\n The internal class used to create text inputs when the `Input` component is used with `type` of `text`.\n \n See [Ember.Templates.components.Input](/api/ember/release/classes/Ember.Templates.components/methods/Input?anchor=Input) for usage details.\n \n ## Layout and LayoutName properties\n \n Because HTML `input` elements are self closing `layout` and `layoutName`\n properties will not be applied.\n \n @class TextField\n @extends Component\n @uses Ember.TextSupport\n @public\n */\n\n\n var TextField = Component.extend(_views.TextSupport, {\n layout: layout,\n\n /**\n By default, this component will add the `ember-text-field` class to the component's element.\n @property classNames\n @type Array | String\n @default ['ember-text-field']\n @public\n */\n classNames: ['ember-text-field'],\n tagName: 'input',\n\n /**\n By default this component will forward a number of arguments to attributes on the the\n component's element:\n * accept\n * autocomplete\n * autosave\n * dir\n * formaction\n * formenctype\n * formmethod\n * formnovalidate\n * formtarget\n * height\n * inputmode\n * lang\n * list\n * type\n * max\n * min\n * multiple\n * name\n * pattern\n * size\n * step\n * value\n * width\n When invoked with `{{input type=\"text\"}}`, you can only customize these attributes. When invoked\n with ``, you can just use HTML attributes directly.\n @property attributeBindings\n @type Array | String\n @default ['accept', 'autocomplete', 'autosave', 'dir', 'formaction', 'formenctype', 'formmethod', 'formnovalidate', 'formtarget', 'height', 'inputmode', 'lang', 'list', 'type', 'max', 'min', 'multiple', 'name', 'pattern', 'size', 'step', 'value', 'width']\n @public\n */\n attributeBindings: ['accept', 'autocomplete', 'autosave', 'dir', 'formaction', 'formenctype', 'formmethod', 'formnovalidate', 'formtarget', 'height', 'inputmode', 'lang', 'list', 'type', 'max', 'min', 'multiple', 'name', 'pattern', 'size', 'step', 'value', 'width'],\n\n /**\n As the user inputs text, this property is updated to reflect the `value` property of the HTML\n element.\n @property value\n @type String\n @default \"\"\n @public\n */\n value: '',\n\n /**\n The `type` attribute of the input element.\n @property type\n @type String\n @default \"text\"\n @public\n */\n type: (0, _metal.computed)({\n get: function () {\n return 'text';\n },\n set: function (_key, value) {\n var type = 'text';\n\n if (canSetTypeOfInput(value)) {\n type = value;\n }\n\n return type;\n }\n }),\n\n /**\n The `size` of the text field in characters.\n @property size\n @type String\n @default null\n @public\n */\n size: null,\n\n /**\n The `pattern` attribute of input element.\n @property pattern\n @type String\n @default null\n @public\n */\n pattern: null,\n\n /**\n The `min` attribute of input element used with `type=\"number\"` or `type=\"range\"`.\n @property min\n @type String\n @default null\n @since 1.4.0\n @public\n */\n min: null,\n\n /**\n The `max` attribute of input element used with `type=\"number\"` or `type=\"range\"`.\n @property max\n @type String\n @default null\n @since 1.4.0\n @public\n */\n max: null\n });\n _exports.TextField = TextField;\n\n TextField.toString = function () {\n return '@ember/component/text-field';\n };\n /**\n @module @ember/component\n */\n\n /**\n The `Textarea` component inserts a new instance of `\n ```\n \n The `@value` argument is two-way bound. If the user types text into the textarea, the `@value`\n argument is updated. If the `@value` argument is updated, the text in the textarea is updated.\n \n In the following example, the `writtenWords` property on the component will be updated as the user\n types 'Lots of text' into the text area of their browser's window.\n \n ```app/components/word-editor.js\n import Component from '@glimmer/component';\n import { tracked } from '@glimmer/tracking';\n \n export default class extends Component {\n @tracked writtenWords = \"Lots of text that IS bound\";\n }\n ```\n \n ```handlebars\n \n ```\n \n If you wanted a one way binding, you could use the `