{"version":3,"file":"ng2-tag-input.bundle.js","sources":["webpack:///webpack/universalModuleDefinition?5ca6","webpack:///webpack/bootstrap 37d0559390ab1c098949","webpack:///external \"@angular/core\"","webpack:///./~/rxjs/Observable.js","webpack:///modules/components/index.ts","webpack:///external \"@angular/forms\"","webpack:///./~/css-loader/lib/css-base.js","webpack:///./~/rxjs/Subscriber.js","webpack:///./~/rxjs/util/root.js","webpack:///(webpack)/buildin/global.js","webpack:///external \"ng2-material-dropdown\"","webpack:///modules/core/constants/index.ts","webpack:///modules/core/index.ts","webpack:///modules/core/providers/index.ts","webpack:///external \"@angular/common\"","webpack:///modules/components/tag/index.ts","webpack:///./~/rxjs/Observer.js","webpack:///./~/rxjs/Subscription.js","webpack:///./~/rxjs/add/operator/filter.js","webpack:///./~/rxjs/add/operator/map.js","webpack:///./~/rxjs/symbol/rxSubscriber.js","webpack:///./~/rxjs/util/errorObject.js","webpack:///./~/rxjs/util/isFunction.js","webpack:///modules/tag-input.module.ts","webpack:///modules/components/dropdown/index.ts","webpack:///modules/components/dropdown/tag-input-dropdown.component.ts","webpack:///modules/components/icon/icon.ts","webpack:///modules/components/icon/index.ts","webpack:///modules/components/tag-input-form/index.ts","webpack:///modules/components/tag-input-form/tag-input-form.component.ts","webpack:///modules/components/tag-input/animations.ts","webpack:///modules/components/tag-input/index.ts","webpack:///modules/components/tag-input/tag-input.ts","webpack:///modules/components/tag/tag-ripple.component.ts","webpack:///modules/components/tag/tag.component.ts","webpack:///modules/core/accessor.ts","webpack:///modules/core/helpers/index.ts","webpack:///modules/core/helpers/listen.ts","webpack:///modules/core/pipes/highlight.pipe.ts","webpack:///modules/core/pipes/index.ts","webpack:///modules/core/providers/drag-provider.ts","webpack:///modules/core/providers/options-provider.ts","webpack:///modules/defaults.ts","webpack:///modules/index.ts","webpack:///./~/base64-js/index.js","webpack:///./~/buffer/index.js","webpack:///./modules/components/icon/icon.scss","webpack:///./modules/components/tag-input-form/tag-input-form.style.scss","webpack:///./modules/components/tag-input/tag-input.style.scss","webpack:///./modules/components/tag/tag-component.style.scss","webpack:///./modules/components/dropdown/tag-input-dropdown.template.html","webpack:///./modules/components/icon/icon.html","webpack:///./modules/components/tag-input-form/tag-input-form.template.html","webpack:///./modules/components/tag-input/tag-input.template.html","webpack:///./modules/components/tag/tag.template.html","webpack:///./~/ieee754/index.js","webpack:///./~/isarray/index.js","webpack:///./~/rxjs/Scheduler.js","webpack:///./~/rxjs/add/observable/of.js","webpack:///./~/rxjs/add/operator/debounceTime.js","webpack:///./~/rxjs/observable/ArrayObservable.js","webpack:///./~/rxjs/observable/EmptyObservable.js","webpack:///./~/rxjs/observable/ScalarObservable.js","webpack:///./~/rxjs/observable/of.js","webpack:///./~/rxjs/operator/debounceTime.js","webpack:///./~/rxjs/operator/filter.js","webpack:///./~/rxjs/operator/map.js","webpack:///./~/rxjs/scheduler/Action.js","webpack:///./~/rxjs/scheduler/AsyncAction.js","webpack:///./~/rxjs/scheduler/AsyncScheduler.js","webpack:///./~/rxjs/scheduler/async.js","webpack:///./~/rxjs/symbol/observable.js","webpack:///./~/rxjs/util/UnsubscriptionError.js","webpack:///./~/rxjs/util/isArray.js","webpack:///./~/rxjs/util/isObject.js","webpack:///./~/rxjs/util/isScheduler.js","webpack:///./~/rxjs/util/toSubscriber.js","webpack:///./~/rxjs/util/tryCatch.js","webpack:///./modules/components/icon/icon.scss?874b","webpack:///./modules/components/tag-input-form/tag-input-form.style.scss?b6f2","webpack:///./modules/components/tag-input/tag-input.style.scss?818a","webpack:///./modules/components/tag/tag-component.style.scss?84c7"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@angular/core\"), require(\"@angular/forms\"), require(\"ng2-material-dropdown\"), require(\"@angular/common\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@angular/core\", \"@angular/forms\", \"ng2-material-dropdown\", \"@angular/common\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng2-tag-input\"] = factory(require(\"@angular/core\"), require(\"@angular/forms\"), require(\"ng2-material-dropdown\"), require(\"@angular/common\"));\n\telse\n\t\troot[\"ng2-tag-input\"] = factory(root[\"@angular/core\"], root[\"@angular/forms\"], root[\"ng2-material-dropdown\"], root[\"@angular/common\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_0__, __WEBPACK_EXTERNAL_MODULE_3__, __WEBPACK_EXTERNAL_MODULE_8__, __WEBPACK_EXTERNAL_MODULE_12__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonpng2_tag_input\"];\n \twindow[\"webpackJsonpng2_tag_input\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId])\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length)\n \t\t\tresolves.shift()();\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tif(installedChunks[chunkId] === 0)\n \t\t\treturn Promise.resolve();\n\n \t\t// a Promise means \"currently loading\".\n \t\tif(installedChunks[chunkId]) {\n \t\t\treturn installedChunks[chunkId][2];\n \t\t}\n\n \t\t// setup Promise in chunk cache\n \t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\tinstalledChunks[chunkId] = [resolve, reject];\n \t\t});\n \t\tinstalledChunks[chunkId][2] = promise;\n\n \t\t// start chunk loading\n \t\tvar head = document.getElementsByTagName('head')[0];\n \t\tvar script = document.createElement('script');\n \t\tscript.type = 'text/javascript';\n \t\tscript.charset = 'utf-8';\n \t\tscript.async = true;\n \t\tscript.timeout = 120000;\n\n \t\tif (__webpack_require__.nc) {\n \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t}\n \t\tscript.src = __webpack_require__.p + \"\" + ({\"0\":\"vendor\"}[chunkId]||chunkId) + \".chunk.js\";\n \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n \t\tscript.onerror = script.onload = onScriptComplete;\n \t\tfunction onScriptComplete() {\n \t\t\t// avoid mem leaks in IE.\n \t\t\tscript.onerror = script.onload = null;\n \t\t\tclearTimeout(timeout);\n \t\t\tvar chunk = installedChunks[chunkId];\n \t\t\tif(chunk !== 0) {\n \t\t\t\tif(chunk) chunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n \t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t}\n \t\t};\n \t\thead.appendChild(script);\n\n \t\treturn promise;\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 42);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 37d0559390ab1c098949","module.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"@angular/core\"\n// module id = 0\n// module chunks = 1","\"use strict\";\nvar root_1 = require('./util/root');\nvar toSubscriber_1 = require('./util/toSubscriber');\nvar observable_1 = require('./symbol/observable');\n/**\n * A representation of any set of values over any amount of time. This the most basic building block\n * of RxJS.\n *\n * @class Observable<T>\n */\nvar Observable = (function () {\n    /**\n     * @constructor\n     * @param {Function} subscribe the function that is  called when the Observable is\n     * initially subscribed to. This function is given a Subscriber, to which new values\n     * can be `next`ed, or an `error` method can be called to raise an error, or\n     * `complete` can be called to notify of a successful completion.\n     */\n    function Observable(subscribe) {\n        this._isScalar = false;\n        if (subscribe) {\n            this._subscribe = subscribe;\n        }\n    }\n    /**\n     * Creates a new Observable, with this Observable as the source, and the passed\n     * operator defined as the new observable's operator.\n     * @method lift\n     * @param {Operator} operator the operator defining the operation to take on the observable\n     * @return {Observable} a new observable with the Operator applied\n     */\n    Observable.prototype.lift = function (operator) {\n        var observable = new Observable();\n        observable.source = this;\n        observable.operator = operator;\n        return observable;\n    };\n    Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n        var operator = this.operator;\n        var sink = toSubscriber_1.toSubscriber(observerOrNext, error, complete);\n        if (operator) {\n            operator.call(sink, this.source);\n        }\n        else {\n            sink.add(this._trySubscribe(sink));\n        }\n        if (sink.syncErrorThrowable) {\n            sink.syncErrorThrowable = false;\n            if (sink.syncErrorThrown) {\n                throw sink.syncErrorValue;\n            }\n        }\n        return sink;\n    };\n    Observable.prototype._trySubscribe = function (sink) {\n        try {\n            return this._subscribe(sink);\n        }\n        catch (err) {\n            sink.syncErrorThrown = true;\n            sink.syncErrorValue = err;\n            sink.error(err);\n        }\n    };\n    /**\n     * @method forEach\n     * @param {Function} next a handler for each value emitted by the observable\n     * @param {PromiseConstructor} [PromiseCtor] a constructor function used to instantiate the Promise\n     * @return {Promise} a promise that either resolves on observable completion or\n     *  rejects with the handled error\n     */\n    Observable.prototype.forEach = function (next, PromiseCtor) {\n        var _this = this;\n        if (!PromiseCtor) {\n            if (root_1.root.Rx && root_1.root.Rx.config && root_1.root.Rx.config.Promise) {\n                PromiseCtor = root_1.root.Rx.config.Promise;\n            }\n            else if (root_1.root.Promise) {\n                PromiseCtor = root_1.root.Promise;\n            }\n        }\n        if (!PromiseCtor) {\n            throw new Error('no Promise impl found');\n        }\n        return new PromiseCtor(function (resolve, reject) {\n            var subscription = _this.subscribe(function (value) {\n                if (subscription) {\n                    // if there is a subscription, then we can surmise\n                    // the next handling is asynchronous. Any errors thrown\n                    // need to be rejected explicitly and unsubscribe must be\n                    // called manually\n                    try {\n                        next(value);\n                    }\n                    catch (err) {\n                        reject(err);\n                        subscription.unsubscribe();\n                    }\n                }\n                else {\n                    // if there is NO subscription, then we're getting a nexted\n                    // value synchronously during subscription. We can just call it.\n                    // If it errors, Observable's `subscribe` will ensure the\n                    // unsubscription logic is called, then synchronously rethrow the error.\n                    // After that, Promise will trap the error and send it\n                    // down the rejection path.\n                    next(value);\n                }\n            }, reject, resolve);\n        });\n    };\n    Observable.prototype._subscribe = function (subscriber) {\n        return this.source.subscribe(subscriber);\n    };\n    /**\n     * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n     * @method Symbol.observable\n     * @return {Observable} this instance of the observable\n     */\n    Observable.prototype[observable_1.$$observable] = function () {\n        return this;\n    };\n    // HACK: Since TypeScript inherits static properties too, we have to\n    // fight against TypeScript here so Subject can have a different static create signature\n    /**\n     * Creates a new cold Observable by calling the Observable constructor\n     * @static true\n     * @owner Observable\n     * @method create\n     * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n     * @return {Observable} a new cold observable\n     */\n    Observable.create = function (subscribe) {\n        return new Observable(subscribe);\n    };\n    return Observable;\n}());\nexports.Observable = Observable;\n//# sourceMappingURL=Observable.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/Observable.js\n// module id = 1\n// module chunks = 1","export * from './dropdown';\nexport * from './icon';\nexport * from './tag-input-form';\nexport * from './tag';\nexport * from './tag-input';\n\n\n\n// WEBPACK FOOTER //\n// modules/components/index.ts","module.exports = __WEBPACK_EXTERNAL_MODULE_3__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"@angular/forms\"\n// module id = 3\n// module chunks = 1","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t//  when a module is imported multiple times with different media queries.\n\t\t\t//  I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap) {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n  var base64 = new Buffer(JSON.stringify(sourceMap)).toString('base64');\n  var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n  return '/*# ' + data + ' */';\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader/lib/css-base.js\n// module id = 4\n// module chunks = 1","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n    function __() { this.constructor = d; }\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar isFunction_1 = require('./util/isFunction');\nvar Subscription_1 = require('./Subscription');\nvar Observer_1 = require('./Observer');\nvar rxSubscriber_1 = require('./symbol/rxSubscriber');\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n *\n * @class Subscriber<T>\n */\nvar Subscriber = (function (_super) {\n    __extends(Subscriber, _super);\n    /**\n     * @param {Observer|function(value: T): void} [destinationOrNext] A partially\n     * defined Observer or a `next` callback function.\n     * @param {function(e: ?any): void} [error] The `error` callback of an\n     * Observer.\n     * @param {function(): void} [complete] The `complete` callback of an\n     * Observer.\n     */\n    function Subscriber(destinationOrNext, error, complete) {\n        _super.call(this);\n        this.syncErrorValue = null;\n        this.syncErrorThrown = false;\n        this.syncErrorThrowable = false;\n        this.isStopped = false;\n        switch (arguments.length) {\n            case 0:\n                this.destination = Observer_1.empty;\n                break;\n            case 1:\n                if (!destinationOrNext) {\n                    this.destination = Observer_1.empty;\n                    break;\n                }\n                if (typeof destinationOrNext === 'object') {\n                    if (destinationOrNext instanceof Subscriber) {\n                        this.destination = destinationOrNext;\n                        this.destination.add(this);\n                    }\n                    else {\n                        this.syncErrorThrowable = true;\n                        this.destination = new SafeSubscriber(this, destinationOrNext);\n                    }\n                    break;\n                }\n            default:\n                this.syncErrorThrowable = true;\n                this.destination = new SafeSubscriber(this, destinationOrNext, error, complete);\n                break;\n        }\n    }\n    Subscriber.prototype[rxSubscriber_1.$$rxSubscriber] = function () { return this; };\n    /**\n     * A static factory for a Subscriber, given a (potentially partial) definition\n     * of an Observer.\n     * @param {function(x: ?T): void} [next] The `next` callback of an Observer.\n     * @param {function(e: ?any): void} [error] The `error` callback of an\n     * Observer.\n     * @param {function(): void} [complete] The `complete` callback of an\n     * Observer.\n     * @return {Subscriber<T>} A Subscriber wrapping the (partially defined)\n     * Observer represented by the given arguments.\n     */\n    Subscriber.create = function (next, error, complete) {\n        var subscriber = new Subscriber(next, error, complete);\n        subscriber.syncErrorThrowable = false;\n        return subscriber;\n    };\n    /**\n     * The {@link Observer} callback to receive notifications of type `next` from\n     * the Observable, with a value. The Observable may call this method 0 or more\n     * times.\n     * @param {T} [value] The `next` value.\n     * @return {void}\n     */\n    Subscriber.prototype.next = function (value) {\n        if (!this.isStopped) {\n            this._next(value);\n        }\n    };\n    /**\n     * The {@link Observer} callback to receive notifications of type `error` from\n     * the Observable, with an attached {@link Error}. Notifies the Observer that\n     * the Observable has experienced an error condition.\n     * @param {any} [err] The `error` exception.\n     * @return {void}\n     */\n    Subscriber.prototype.error = function (err) {\n        if (!this.isStopped) {\n            this.isStopped = true;\n            this._error(err);\n        }\n    };\n    /**\n     * The {@link Observer} callback to receive a valueless notification of type\n     * `complete` from the Observable. Notifies the Observer that the Observable\n     * has finished sending push-based notifications.\n     * @return {void}\n     */\n    Subscriber.prototype.complete = function () {\n        if (!this.isStopped) {\n            this.isStopped = true;\n            this._complete();\n        }\n    };\n    Subscriber.prototype.unsubscribe = function () {\n        if (this.closed) {\n            return;\n        }\n        this.isStopped = true;\n        _super.prototype.unsubscribe.call(this);\n    };\n    Subscriber.prototype._next = function (value) {\n        this.destination.next(value);\n    };\n    Subscriber.prototype._error = function (err) {\n        this.destination.error(err);\n        this.unsubscribe();\n    };\n    Subscriber.prototype._complete = function () {\n        this.destination.complete();\n        this.unsubscribe();\n    };\n    Subscriber.prototype._unsubscribeAndRecycle = function () {\n        var _a = this, _parent = _a._parent, _parents = _a._parents;\n        this._parent = null;\n        this._parents = null;\n        this.unsubscribe();\n        this.closed = false;\n        this.isStopped = false;\n        this._parent = _parent;\n        this._parents = _parents;\n        return this;\n    };\n    return Subscriber;\n}(Subscription_1.Subscription));\nexports.Subscriber = Subscriber;\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar SafeSubscriber = (function (_super) {\n    __extends(SafeSubscriber, _super);\n    function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) {\n        _super.call(this);\n        this._parentSubscriber = _parentSubscriber;\n        var next;\n        var context = this;\n        if (isFunction_1.isFunction(observerOrNext)) {\n            next = observerOrNext;\n        }\n        else if (observerOrNext) {\n            context = observerOrNext;\n            next = observerOrNext.next;\n            error = observerOrNext.error;\n            complete = observerOrNext.complete;\n            if (isFunction_1.isFunction(context.unsubscribe)) {\n                this.add(context.unsubscribe.bind(context));\n            }\n            context.unsubscribe = this.unsubscribe.bind(this);\n        }\n        this._context = context;\n        this._next = next;\n        this._error = error;\n        this._complete = complete;\n    }\n    SafeSubscriber.prototype.next = function (value) {\n        if (!this.isStopped && this._next) {\n            var _parentSubscriber = this._parentSubscriber;\n            if (!_parentSubscriber.syncErrorThrowable) {\n                this.__tryOrUnsub(this._next, value);\n            }\n            else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n                this.unsubscribe();\n            }\n        }\n    };\n    SafeSubscriber.prototype.error = function (err) {\n        if (!this.isStopped) {\n            var _parentSubscriber = this._parentSubscriber;\n            if (this._error) {\n                if (!_parentSubscriber.syncErrorThrowable) {\n                    this.__tryOrUnsub(this._error, err);\n                    this.unsubscribe();\n                }\n                else {\n                    this.__tryOrSetError(_parentSubscriber, this._error, err);\n                    this.unsubscribe();\n                }\n            }\n            else if (!_parentSubscriber.syncErrorThrowable) {\n                this.unsubscribe();\n                throw err;\n            }\n            else {\n                _parentSubscriber.syncErrorValue = err;\n                _parentSubscriber.syncErrorThrown = true;\n                this.unsubscribe();\n            }\n        }\n    };\n    SafeSubscriber.prototype.complete = function () {\n        if (!this.isStopped) {\n            var _parentSubscriber = this._parentSubscriber;\n            if (this._complete) {\n                if (!_parentSubscriber.syncErrorThrowable) {\n                    this.__tryOrUnsub(this._complete);\n                    this.unsubscribe();\n                }\n                else {\n                    this.__tryOrSetError(_parentSubscriber, this._complete);\n                    this.unsubscribe();\n                }\n            }\n            else {\n                this.unsubscribe();\n            }\n        }\n    };\n    SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) {\n        try {\n            fn.call(this._context, value);\n        }\n        catch (err) {\n            this.unsubscribe();\n            throw err;\n        }\n    };\n    SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) {\n        try {\n            fn.call(this._context, value);\n        }\n        catch (err) {\n            parent.syncErrorValue = err;\n            parent.syncErrorThrown = true;\n            return true;\n        }\n        return false;\n    };\n    SafeSubscriber.prototype._unsubscribe = function () {\n        var _parentSubscriber = this._parentSubscriber;\n        this._context = null;\n        this._parentSubscriber = null;\n        _parentSubscriber.unsubscribe();\n    };\n    return SafeSubscriber;\n}(Subscriber));\n//# sourceMappingURL=Subscriber.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/Subscriber.js\n// module id = 5\n// module chunks = 1","\"use strict\";\n/**\n * window: browser in DOM main thread\n * self: browser in WebWorker\n * global: Node.js/other\n */\nexports.root = (typeof window == 'object' && window.window === window && window\n    || typeof self == 'object' && self.self === self && self\n    || typeof global == 'object' && global.global === global && global);\nif (!exports.root) {\n    throw new Error('RxJS could not find any global context (window, self, global)');\n}\n//# sourceMappingURL=root.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/util/root.js\n// module id = 6\n// module chunks = 1","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 7\n// module chunks = 1","module.exports = __WEBPACK_EXTERNAL_MODULE_8__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"ng2-material-dropdown\"\n// module id = 8\n// module chunks = 1","/*\n** constants and default values for <tag-input>\n */\n\nexport const PLACEHOLDER = '+ Tag';\nexport const SECONDARY_PLACEHOLDER = 'Enter a new tag';\nexport const KEYDOWN = 'keydown';\nexport const KEYUP = 'keyup';\nexport const FOCUS = 'focus';\nexport const MAX_ITEMS_WARNING = 'The number of items specified was greater than the property max-items.';\n\nexport const ACTIONS_KEYS = {\n    DELETE: 'DELETE',\n    SWITCH_PREV: 'SWITCH_PREV',\n    SWITCH_NEXT: 'SWITCH_NEXT',\n    TAB: 'TAB'\n};\n\nexport const KEY_PRESS_ACTIONS = {\n    8: ACTIONS_KEYS.DELETE,\n    37: ACTIONS_KEYS.SWITCH_PREV,\n    39: ACTIONS_KEYS.SWITCH_NEXT,\n    9: ACTIONS_KEYS.TAB\n};\n\nexport const DRAG_AND_DROP_KEY = 'Text';\n\n\n\n\n// WEBPACK FOOTER //\n// modules/core/constants/index.ts","import * as constants from './constants';\nexport { constants };\n\nexport * from './helpers';\nexport * from './pipes';\nexport * from './accessor';\nexport * from './providers';\n\n\n\n// WEBPACK FOOTER //\n// modules/core/index.ts","export * from './drag-provider';\nexport * from './options-provider';\n\n\n// WEBPACK FOOTER //\n// modules/core/providers/index.ts","module.exports = __WEBPACK_EXTERNAL_MODULE_12__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"@angular/common\"\n// module id = 12\n// module chunks = 1","export * from './tag-ripple.component';\nexport * from './tag.component';\n\n\n\n// WEBPACK FOOTER //\n// modules/components/tag/index.ts","\"use strict\";\nexports.empty = {\n    closed: true,\n    next: function (value) { },\n    error: function (err) { throw err; },\n    complete: function () { }\n};\n//# sourceMappingURL=Observer.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/Observer.js\n// module id = 14\n// module chunks = 1","\"use strict\";\nvar isArray_1 = require('./util/isArray');\nvar isObject_1 = require('./util/isObject');\nvar isFunction_1 = require('./util/isFunction');\nvar tryCatch_1 = require('./util/tryCatch');\nvar errorObject_1 = require('./util/errorObject');\nvar UnsubscriptionError_1 = require('./util/UnsubscriptionError');\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nvar Subscription = (function () {\n    /**\n     * @param {function(): void} [unsubscribe] A function describing how to\n     * perform the disposal of resources when the `unsubscribe` method is called.\n     */\n    function Subscription(unsubscribe) {\n        /**\n         * A flag to indicate whether this Subscription has already been unsubscribed.\n         * @type {boolean}\n         */\n        this.closed = false;\n        this._parent = null;\n        this._parents = null;\n        this._subscriptions = null;\n        if (unsubscribe) {\n            this._unsubscribe = unsubscribe;\n        }\n    }\n    /**\n     * Disposes the resources held by the subscription. May, for instance, cancel\n     * an ongoing Observable execution or cancel any other type of work that\n     * started when the Subscription was created.\n     * @return {void}\n     */\n    Subscription.prototype.unsubscribe = function () {\n        var hasErrors = false;\n        var errors;\n        if (this.closed) {\n            return;\n        }\n        var _a = this, _parent = _a._parent, _parents = _a._parents, _unsubscribe = _a._unsubscribe, _subscriptions = _a._subscriptions;\n        this.closed = true;\n        this._parent = null;\n        this._parents = null;\n        // null out _subscriptions first so any child subscriptions that attempt\n        // to remove themselves from this subscription will noop\n        this._subscriptions = null;\n        var index = -1;\n        var len = _parents ? _parents.length : 0;\n        // if this._parent is null, then so is this._parents, and we\n        // don't have to remove ourselves from any parent subscriptions.\n        while (_parent) {\n            _parent.remove(this);\n            // if this._parents is null or index >= len,\n            // then _parent is set to null, and the loop exits\n            _parent = ++index < len && _parents[index] || null;\n        }\n        if (isFunction_1.isFunction(_unsubscribe)) {\n            var trial = tryCatch_1.tryCatch(_unsubscribe).call(this);\n            if (trial === errorObject_1.errorObject) {\n                hasErrors = true;\n                errors = errors || (errorObject_1.errorObject.e instanceof UnsubscriptionError_1.UnsubscriptionError ?\n                    flattenUnsubscriptionErrors(errorObject_1.errorObject.e.errors) : [errorObject_1.errorObject.e]);\n            }\n        }\n        if (isArray_1.isArray(_subscriptions)) {\n            index = -1;\n            len = _subscriptions.length;\n            while (++index < len) {\n                var sub = _subscriptions[index];\n                if (isObject_1.isObject(sub)) {\n                    var trial = tryCatch_1.tryCatch(sub.unsubscribe).call(sub);\n                    if (trial === errorObject_1.errorObject) {\n                        hasErrors = true;\n                        errors = errors || [];\n                        var err = errorObject_1.errorObject.e;\n                        if (err instanceof UnsubscriptionError_1.UnsubscriptionError) {\n                            errors = errors.concat(flattenUnsubscriptionErrors(err.errors));\n                        }\n                        else {\n                            errors.push(err);\n                        }\n                    }\n                }\n            }\n        }\n        if (hasErrors) {\n            throw new UnsubscriptionError_1.UnsubscriptionError(errors);\n        }\n    };\n    /**\n     * Adds a tear down to be called during the unsubscribe() of this\n     * Subscription.\n     *\n     * If the tear down being added is a subscription that is already\n     * unsubscribed, is the same reference `add` is being called on, or is\n     * `Subscription.EMPTY`, it will not be added.\n     *\n     * If this subscription is already in an `closed` state, the passed\n     * tear down logic will be executed immediately.\n     *\n     * @param {TeardownLogic} teardown The additional logic to execute on\n     * teardown.\n     * @return {Subscription} Returns the Subscription used or created to be\n     * added to the inner subscriptions list. This Subscription can be used with\n     * `remove()` to remove the passed teardown logic from the inner subscriptions\n     * list.\n     */\n    Subscription.prototype.add = function (teardown) {\n        if (!teardown || (teardown === Subscription.EMPTY)) {\n            return Subscription.EMPTY;\n        }\n        if (teardown === this) {\n            return this;\n        }\n        var subscription = teardown;\n        switch (typeof teardown) {\n            case 'function':\n                subscription = new Subscription(teardown);\n            case 'object':\n                if (subscription.closed || typeof subscription.unsubscribe !== 'function') {\n                    return subscription;\n                }\n                else if (this.closed) {\n                    subscription.unsubscribe();\n                    return subscription;\n                }\n                else if (typeof subscription._addParent !== 'function' /* quack quack */) {\n                    var tmp = subscription;\n                    subscription = new Subscription();\n                    subscription._subscriptions = [tmp];\n                }\n                break;\n            default:\n                throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n        }\n        var subscriptions = this._subscriptions || (this._subscriptions = []);\n        subscriptions.push(subscription);\n        subscription._addParent(this);\n        return subscription;\n    };\n    /**\n     * Removes a Subscription from the internal list of subscriptions that will\n     * unsubscribe during the unsubscribe process of this Subscription.\n     * @param {Subscription} subscription The subscription to remove.\n     * @return {void}\n     */\n    Subscription.prototype.remove = function (subscription) {\n        var subscriptions = this._subscriptions;\n        if (subscriptions) {\n            var subscriptionIndex = subscriptions.indexOf(subscription);\n            if (subscriptionIndex !== -1) {\n                subscriptions.splice(subscriptionIndex, 1);\n            }\n        }\n    };\n    Subscription.prototype._addParent = function (parent) {\n        var _a = this, _parent = _a._parent, _parents = _a._parents;\n        if (!_parent || _parent === parent) {\n            // If we don't have a parent, or the new parent is the same as the\n            // current parent, then set this._parent to the new parent.\n            this._parent = parent;\n        }\n        else if (!_parents) {\n            // If there's already one parent, but not multiple, allocate an Array to\n            // store the rest of the parent Subscriptions.\n            this._parents = [parent];\n        }\n        else if (_parents.indexOf(parent) === -1) {\n            // Only add the new parent to the _parents list if it's not already there.\n            _parents.push(parent);\n        }\n    };\n    Subscription.EMPTY = (function (empty) {\n        empty.closed = true;\n        return empty;\n    }(new Subscription()));\n    return Subscription;\n}());\nexports.Subscription = Subscription;\nfunction flattenUnsubscriptionErrors(errors) {\n    return errors.reduce(function (errs, err) { return errs.concat((err instanceof UnsubscriptionError_1.UnsubscriptionError) ? err.errors : err); }, []);\n}\n//# sourceMappingURL=Subscription.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/Subscription.js\n// module id = 15\n// module chunks = 1","\"use strict\";\nvar Observable_1 = require('../../Observable');\nvar filter_1 = require('../../operator/filter');\nObservable_1.Observable.prototype.filter = filter_1.filter;\n//# sourceMappingURL=filter.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/add/operator/filter.js\n// module id = 16\n// module chunks = 1","\"use strict\";\nvar Observable_1 = require('../../Observable');\nvar map_1 = require('../../operator/map');\nObservable_1.Observable.prototype.map = map_1.map;\n//# sourceMappingURL=map.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/add/operator/map.js\n// module id = 17\n// module chunks = 1","\"use strict\";\nvar root_1 = require('../util/root');\nvar Symbol = root_1.root.Symbol;\nexports.$$rxSubscriber = (typeof Symbol === 'function' && typeof Symbol.for === 'function') ?\n    Symbol.for('rxSubscriber') : '@@rxSubscriber';\n//# sourceMappingURL=rxSubscriber.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/symbol/rxSubscriber.js\n// module id = 18\n// module chunks = 1","\"use strict\";\n// typeof any so that it we don't have to cast when comparing a result to the error object\nexports.errorObject = { e: {} };\n//# sourceMappingURL=errorObject.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/util/errorObject.js\n// module id = 19\n// module chunks = 1","\"use strict\";\nfunction isFunction(x) {\n    return typeof x === 'function';\n}\nexports.isFunction = isFunction;\n//# sourceMappingURL=isFunction.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/util/isFunction.js\n// module id = 20\n// module chunks = 1","import { NgModule } from '@angular/core';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { Ng2DropdownModule } from 'ng2-material-dropdown'\nimport { HighlightPipe, DragProvider, Options, OptionsProvider } from './core';\n\nimport {\n    DeleteIconComponent,\n    TagComponent,\n    TagInputComponent,\n    TagInputDropdown,\n    TagInputForm,\n    TagRipple\n} from './components';\n\nconst COMPONENTS = [\n    TagInputComponent,\n    DeleteIconComponent,\n    TagInputForm,\n    TagComponent,\n    HighlightPipe,\n    TagInputDropdown,\n    TagRipple\n];\n\nconst optionsProvider = new OptionsProvider();\n\n@NgModule({\n    imports: [\n        CommonModule,\n        ReactiveFormsModule,\n        FormsModule,\n        Ng2DropdownModule\n    ],\n    declarations: COMPONENTS,\n    exports: COMPONENTS,\n    providers: [\n        DragProvider\n    ]\n})\nexport class TagInputModule {\n    /**\n     * @name withDefaults\n     * @param options {Options}\n     */\n    public static withDefaults(options: Options): void {\n        optionsProvider.setOptions(options);\n    }\n}\n\n\n// WEBPACK FOOTER //\n// modules/tag-input.module.ts","export * from './tag-input-dropdown.component';\n\n\n\n// WEBPACK FOOTER //\n// modules/components/dropdown/index.ts","import {\n    Component,\n    ViewChild,\n    forwardRef,\n    Inject,\n    TemplateRef,\n    ContentChildren,\n    Input,\n    QueryList,\n    HostListener,\n    EventEmitter,\n    Type\n} from '@angular/core';\n\n// rx\nimport { Observable } from 'rxjs/Observable';\nimport 'rxjs/add/operator/map';\nimport 'rxjs/add/operator/filter';\n\nimport { Ng2Dropdown, Ng2MenuItem } from 'ng2-material-dropdown';\nimport { TagModel, TagInputDropdownOptions, OptionsProvider } from '../../core';\nimport { TagInputComponent } from '../../components';\n\nconst defaults: Type<TagInputDropdownOptions> = forwardRef(() => OptionsProvider.defaults.dropdown);\n\n@Component({\n    selector: 'tag-input-dropdown',\n    templateUrl: './tag-input-dropdown.template.html'\n})\nexport class TagInputDropdown {\n    /**\n     * @name dropdown\n     */\n    @ViewChild(Ng2Dropdown) public dropdown: Ng2Dropdown;\n\n    /**\n     * @name menuTemplate\n     * @desc reference to the template if provided by the user\n     * @type {TemplateRef}\n     */\n    @ContentChildren(TemplateRef) public templates: QueryList<TemplateRef<any>>;\n\n    /**\n     * @name offset\n     * @type {string}\n     */\n    @Input() public offset: string = new defaults().offset;\n\n    /**\n     * @name focusFirstElement\n     * @type {boolean}\n     */\n    @Input() public focusFirstElement = new defaults().focusFirstElement;\n\n    /**\n     * - show autocomplete dropdown if the value of input is empty\n     * @name showDropdownIfEmpty\n     * @type {boolean}\n     */\n    @Input() public showDropdownIfEmpty = new defaults().showDropdownIfEmpty;\n\n    /**\n     * @description observable passed as input which populates the autocomplete items\n     * @name autocompleteObservable\n     */\n    @Input() public autocompleteObservable: (text: string) => Observable<any>;\n\n    /**\n     * - desc minimum text length in order to display the autocomplete dropdown\n     * @name minimumTextLength\n     */\n    @Input() public minimumTextLength = new defaults().minimumTextLength;\n\n    /**\n     * - number of items to display in the autocomplete dropdown\n     * @name limitItemsTo\n     */\n    @Input() public limitItemsTo: number = new defaults().limitItemsTo;\n\n    /**\n     * @name displayBy\n     */\n    @Input() public displayBy = new defaults().displayBy;\n\n    /**\n     * @name identifyBy\n     */\n    @Input() public identifyBy = new defaults().identifyBy;\n\n    /**\n     * @description a function a developer can use to implement custom matching for the autocomplete\n     * @name matchingFn\n     */\n    @Input() public matchingFn: (value: string, target: TagModel) => boolean = new defaults().matchingFn;\n\n    /**\n     * @name appendToBody\n     * @type {boolean}\n     */\n    @Input() public appendToBody = new defaults().appendToBody;\n\n    /**\n     * list of items that match the current value of the input (for autocomplete)\n     * @name items\n     * @type {TagModel[]}\n     */\n    public items: TagModel[] = [];\n\n    /**\n     * @name _autocompleteItems\n     * @type {Array}\n     * @private\n     */\n    private _autocompleteItems: TagModel[] = [];\n\n    /**\n     * @name autocompleteItems\n     * @param items\n     */\n    public set autocompleteItems(items: TagModel[]) {\n        this._autocompleteItems = items;\n    }\n\n    /**\n     * @name autocompleteItems\n     * @desc array of items that will populate the autocomplete\n     * @type {Array<string>}\n     */\n    @Input() public get autocompleteItems(): TagModel[] {\n        const items = this._autocompleteItems;\n\n        if (!items) {\n            return [];\n        }\n\n        return items.map((item: TagModel) => {\n            return typeof item === 'string' ? {\n                [this.displayBy]: item,\n                [this.identifyBy]: item\n            } : item;\n        });\n    }\n\n    constructor(@Inject(forwardRef(() => TagInputComponent)) private tagInput: TagInputComponent) {}\n\n    /**\n     * @name ngOnInit\n     */\n    public ngOnInit(): void {\n        this.onItemClicked()\n            .subscribe(this.requestAdding);\n\n        // reset itemsMatching array when the dropdown is hidden\n        this.onHide()\n            .subscribe(this.resetItems);\n\n        this.tagInput\n            .onTextChange\n            .filter((text: string) => text.trim().length >= this.minimumTextLength)\n            .subscribe(this.show);\n    }\n\n    /**\n     * @name updatePosition\n     */\n    public updatePosition(): void {\n        const position = this.tagInput.inputForm.getElementPosition();\n        this.dropdown.menu.updatePosition(position);\n    }\n\n    /**\n     * @name isVisible\n     * @returns {boolean}\n     */\n    public get isVisible(): boolean {\n        return this.dropdown.menu.state.menuState.isVisible;\n    }\n\n    /**\n     * @name onHide\n     * @returns {EventEmitter<Ng2Dropdown>}\n     */\n    public onHide(): EventEmitter<Ng2Dropdown> {\n        return this.dropdown.onHide;\n    }\n\n    /**\n     * @name onItemClicked\n     * @returns {EventEmitter<string>}\n     */\n    public onItemClicked(): EventEmitter<string> {\n        return this.dropdown.onItemClicked;\n    }\n\n    /**\n     * @name selectedItem\n     * @returns {Ng2MenuItem}\n     */\n    public get selectedItem(): Ng2MenuItem {\n        return this.dropdown.menu.state.dropdownState.selectedItem;\n    }\n\n    /**\n     * @name state\n     * @returns {DropdownStateService}\n     */\n    public get state(): any {\n        return this.dropdown.menu.state;\n    }\n\n    /**\n     *\n     * @name show\n     */\n    public show = (): void => {\n        const value = this.tagInput.formValue.trim();\n        const position = this.calculatePosition();\n        const items: TagModel[] = this.getMatchingItems(value);\n        const hasItems: boolean = items.length > 0;\n        const showDropdownIfEmpty: boolean = this.showDropdownIfEmpty && hasItems && !value;\n        const hasMinimumText: boolean = value.length >= this.minimumTextLength;\n\n        const assertions: boolean[] = [\n            hasItems,\n            this.isVisible === false,\n            hasMinimumText\n        ];\n\n        const showDropdown: boolean = (assertions.filter(item => item).length === assertions.length) ||\n            showDropdownIfEmpty;\n        const hideDropdown: boolean = this.isVisible && (!hasItems || !hasMinimumText);\n\n        // set items\n        this.setItems(items);\n\n        if (this.autocompleteObservable) {\n            this.getItemsFromObservable(value);\n            return;\n        }\n\n        if (showDropdown && !this.isVisible) {\n            this.dropdown.show(position);\n        } else if (hideDropdown) {\n            this.dropdown.hide();\n        }\n    }\n\n    /**\n     * @name scrollListener\n     */\n    @HostListener('window:scroll')\n    public scrollListener(): void {\n        if (!this.isVisible) {\n            return;\n        }\n\n        this.updatePosition();\n    }\n\n    /**\n     * @name calculatePosition\n     */\n    private calculatePosition(): ClientRect {\n        return this.tagInput.inputForm.getElementPosition();\n    }\n\n    /**\n     * @name requestAdding\n     * @param item {Ng2MenuItem}\n     */\n    private requestAdding = (item: Ng2MenuItem): void => {\n        if (!item) {\n            return;\n        }\n\n        const model = this.createTagModel(item);\n\n        // add item\n        this.tagInput.onAddingRequested(true, model);\n\n        // hide dropdown\n        this.dropdown.hide();\n    }\n\n    /**\n     * @name createTagModel\n     * @param item\n     * @return {{}}\n     */\n    private createTagModel(item: Ng2MenuItem): TagModel {\n        const display = typeof item.value === 'string' ? item.value : item.value[this.displayBy];\n        const value = typeof item.value === 'string' ? item.value : item.value[this.identifyBy];\n\n        return {\n            ...item.value,\n            [this.tagInput.displayBy]: display,\n            [this.tagInput.identifyBy]: value\n        };\n    }\n\n    /**\n     *\n     * @param value {string}\n     * @returns {any}\n     */\n    private getMatchingItems(value: string): TagModel[] {\n        if (!value && !this.showDropdownIfEmpty) {\n            return [];\n        }\n\n        return this.autocompleteItems.filter((item: TagModel) => {\n            const hasValue: boolean = this.tagInput.tags.some(tag => {\n                const identifyBy = this.tagInput.identifyBy;\n                const model = typeof tag.model === 'string' ? tag.model : tag.model[identifyBy];\n\n                return model === item[this.identifyBy];\n            });\n\n            return this.matchingFn(value, item) && hasValue === false;\n        });\n    }\n\n    /**\n     * @name setItems\n     */\n    private setItems(items: TagModel[]): void {\n        this.items = items.slice(0, this.limitItemsTo || items.length);\n    }\n\n    /**\n     * @name resetItems\n     */\n    private resetItems = (): void => {\n        this.items = [];\n    }\n\n    /**\n     * @name populateItems\n     * @param data\n     */\n    private populateItems(data: any): TagInputDropdown {\n        this.autocompleteItems = data.map(item => {\n            return typeof item === 'string' ? {\n                [this.displayBy]: item,\n                [this.identifyBy]: item\n            } : item;\n        });\n\n        return this;\n    }\n\n    /**\n     * @name getItemsFromObservable\n     * @param text\n     */\n    private getItemsFromObservable = (text: string): void => {\n        this.setLoadingState(true);\n\n        const subscribeFn = (data: any[]) => {\n            // hide loading animation\n            this.setLoadingState(false)\n                // add items\n                .populateItems(data);\n\n            this.setItems(this.getMatchingItems(text));\n\n            if (this.items.length) {\n                this.dropdown.show(this.calculatePosition());\n            }\n        };\n\n        this.autocompleteObservable(text)\n            .subscribe(subscribeFn, () => this.setLoadingState(false));\n    }\n\n    /**\n     * @name setLoadingState\n     * @param state\n     * @return {TagInputDropdown}\n     */\n    private setLoadingState(state: boolean): TagInputDropdown {\n        this.tagInput.isLoading = state;\n\n        return this;\n    }\n}\n\n\n\n// WEBPACK FOOTER //\n// modules/components/dropdown/tag-input-dropdown.component.ts","import { Component } from '@angular/core';\n\n@Component({\n    selector: 'delete-icon',\n    templateUrl: './icon.html',\n    styleUrls: ['./icon.scss']\n})\nexport class DeleteIconComponent {}\n\n\n\n// WEBPACK FOOTER //\n// modules/components/icon/icon.ts","export * from './icon';\n\n\n\n// WEBPACK FOOTER //\n// modules/components/icon/index.ts","export * from './tag-input-form.component';\n\n\n\n// WEBPACK FOOTER //\n// modules/components/tag-input-form/index.ts","import {\n    Component,\n    Input,\n    Output,\n    EventEmitter,\n    ViewChild\n} from '@angular/core';\n\nimport {\n    FormGroup,\n    FormControl,\n    Validators,\n    ValidatorFn,\n    AbstractControl,\n    AsyncValidatorFn\n} from '@angular/forms';\n\n@Component({\n    selector: 'tag-input-form',\n    styleUrls: [ './tag-input-form.style.scss' ],\n    templateUrl: './tag-input-form.template.html'\n})\nexport class TagInputForm {\n    /**\n     * @name onSubmit\n     * @type {EventEmitter}\n     */\n    @Output() public onSubmit: EventEmitter<any> = new EventEmitter();\n\n    /**\n     * @name onBlur\n     * @type {EventEmitter}\n     */\n    @Output() public onBlur: EventEmitter<any> = new EventEmitter();\n\n    /**\n     * @name onFocus\n     * @type {EventEmitter}\n     */\n    @Output() public onFocus: EventEmitter<any> = new EventEmitter();\n\n    /**\n     * @name onKeyup\n     * @type {EventEmitter}\n     */\n    @Output() public onKeyup: EventEmitter<any> = new EventEmitter();\n\n    /**\n     * @name onKeydown\n     * @type {EventEmitter}\n     */\n    @Output() public onKeydown: EventEmitter<any> = new EventEmitter();\n\n    // inputs\n\n    /**\n     * @name placeholder\n     * @type {string}\n     */\n    @Input() public placeholder: string;\n\n    /**\n     * @name validators\n     * @type {ValidatorFn[]}\n     */\n    @Input() public validators: ValidatorFn[] = [];\n\n    /**\n     * @name asyncValidators\n     * @desc array of AsyncValidator that are used to validate the tag before it gets appended to the list\n     * @type {Array}\n     */\n    @Input() public asyncValidators: AsyncValidatorFn[] = [];\n\n    /**\n     * @name inputId\n     * @type {string}\n     */\n    @Input() public inputId: string;\n\n    /**\n     * @name inputClass\n     * @type {string}\n     */\n    @Input() public inputClass: string;\n\n    /**\n     * @name inputText\n     */\n    @Input() public get inputText(): string {\n        return this.inputTextValue;\n    }\n\n    /**\n     * @name tabindex\n     * @desc pass through the specified tabindex to the input\n     * @type {string}\n     */\n    @Input() public tabindex: string = undefined;\n\n    /**\n     * @name disabled\n     */\n    @Input() public disabled = false;\n\n    /**\n     * @name inputText\n     * @param text {string}\n     */\n    public set inputText(text: string) {\n        this.inputTextValue = text;\n        this.inputTextChange.emit(text);\n    }\n\n    /**\n     * @name input\n     */\n    @ViewChild('input') public input;\n\n    /**\n     * @name form\n     */\n    public form: FormGroup;\n\n    /**\n     * @name inputTextChange\n     * @type {EventEmitter}\n     */\n    @Output() public inputTextChange: EventEmitter<string> = new EventEmitter();\n\n    /**\n     * @name inputTextValue\n     */\n    public inputTextValue = '';\n\n    public ngOnInit() {\n        // creating form\n        this.form = new FormGroup({\n            item: new FormControl('', this.validators, this.asyncValidators)\n        });\n    }\n\n\t/**\n     * @name value\n     * @returns {AbstractControl}\n     */\n    public get value(): AbstractControl {\n        return this.form.get('item');\n    }\n\n\t/**\n     * @name isInputFocused\n     * @returns {boolean}\n     */\n    public isInputFocused(): boolean {\n        return document.activeElement === this.input.nativeElement;\n    }\n\n\t/**\n     * @name getErrorMessages\n     * @param messages\n     * @returns {string[]}\n     */\n    public getErrorMessages(messages): string[] {\n        return Object.keys(messages)\n            .filter(err => this.value.hasError(err))\n            .map(err => messages[err]);\n    }\n\n    /**\n     * @name hasErrors\n     * @returns {boolean}\n     */\n    public hasErrors(): boolean {\n        return this.form.dirty &&\n            this.form.value.item &&\n            this.form.invalid;\n    }\n\n\t/**\n     * @name focus\n     */\n    public focus(): void {\n        this.input.nativeElement.focus();\n    }\n\n    /**\n     * @name blur\n     */\n    public blur(): void {\n        this.input.nativeElement.blur();\n    }\n\n\t/**\n     * @name getElementPosition\n     * @returns {ClientRect}\n     */\n    public getElementPosition(): ClientRect {\n        return this.input.nativeElement.getBoundingClientRect();\n    }\n\n    /**\n     * - removes input from the component\n     * @name destroy\n     */\n    public destroy(): void {\n        const input = this.input.nativeElement;\n        input.parentElement.removeChild(input);\n    }\n\n    /**\n     * @name onKeyDown\n     * @param $event\n     */\n    public onKeyDown($event) {\n        return this.onKeydown.emit($event);\n    }\n\n    /**\n     * @name submit\n     */\n    public submit($event: any): void {\n        this.onSubmit.emit($event);\n    }\n}\n\n\n\n// WEBPACK FOOTER //\n// modules/components/tag-input-form/tag-input-form.component.ts","import {\n    animate,\n    trigger,\n    style,\n    transition,\n    keyframes,\n    state,\n    AnimationEntryMetadata\n} from '@angular/core';\n\n/**\n * @name getAnimations\n * @return {[AnimationEntryMetadata]}\n */\nexport const animations: AnimationEntryMetadata[] = [\n    trigger('flyInOut', [\n        state('in', style({transform: 'translateX(0)'})),\n        transition(':enter', [\n            animate(250, keyframes([\n                style({opacity: 0, offset: 0, transform: 'translate(0px, 20px)'}),\n                style({opacity: 0.3, offset: 0.3, transform: 'translate(0px, -10px)'}),\n                style({opacity: 0.5, offset: 0.5, transform: 'translate(0px, 0px)'}),\n                style({opacity: 0.75, offset: 0.75, transform: 'translate(0px, 5px)'}),\n                style({opacity: 1, offset: 1, transform: 'translate(0px, 0px)'})\n            ]))\n        ]),\n        transition(':leave', [\n            animate(150, keyframes([\n                style({opacity: 1, transform: 'translateX(0)', offset: 0}),\n                style({opacity: 1, transform: 'translateX(-15px)', offset: 0.7}),\n                style({opacity: 0, transform: 'translateX(100%)', offset: 1.0})\n            ]))\n        ])\n    ])\n];\n\n\n\n// WEBPACK FOOTER //\n// modules/components/tag-input/animations.ts","export * from './tag-input';\n\n\n\n// WEBPACK FOOTER //\n// modules/components/tag-input/index.ts","// angular\nimport {\n    Component,\n    forwardRef,\n    HostBinding,\n    Input,\n    Output,\n    EventEmitter,\n    Renderer2,\n    ViewChild,\n    ViewChildren,\n    ContentChildren,\n    ContentChild,\n    OnInit,\n    TemplateRef,\n    QueryList,\n    AfterViewInit,\n    Type\n} from '@angular/core';\n\nimport {\n    AsyncValidatorFn,\n    FormControl,\n    NG_VALUE_ACCESSOR,\n    ValidatorFn\n} from '@angular/forms';\n\n// rx\nimport { Observable } from 'rxjs/Observable';\nimport 'rxjs/add/observable/of';\nimport 'rxjs/add/operator/debounceTime';\nimport 'rxjs/add/operator/filter';\nimport 'rxjs/add/operator/map';\n\n// ng2-tag-input\nimport {\n    TagInputAccessor,\n    TagModel,\n    listen,\n    constants\n} from '../../core';\n\nimport {\n    DragProvider,\n    DraggedTag,\n    OptionsProvider,\n    TagInputOptions\n} from '../../core/providers';\n\nimport {\n    TagInputForm,\n    TagInputDropdown,\n    TagComponent\n} from '../../components';\n\nimport { animations } from './animations';\n\n// angular universal hacks\n/* tslint:disable-next-line */\nconst DragEvent = (global as any).DragEvent;\n\nconst CUSTOM_ACCESSOR = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => TagInputComponent),\n    multi: true\n};\n\nconst defaults: Type<TagInputOptions> = forwardRef(() => OptionsProvider.defaults.tagInput);\n\n/**\n * A component for entering a list of terms to be used with ngModel.\n */\n@Component({\n    selector: 'tag-input',\n    providers: [CUSTOM_ACCESSOR],\n    styleUrls: ['./tag-input.style.scss'],\n    templateUrl: './tag-input.template.html',\n    animations: animations\n})\nexport class TagInputComponent extends TagInputAccessor implements OnInit, AfterViewInit {\n    /**\n     * @name separatorKeys\n     * @desc keyboard keys with which a user can separate items\n     * @type {Array}\n     */\n    @Input() public separatorKeys: string[] = new defaults().separatorKeys;\n\n    /**\n     * @name separatorKeyCodes\n     * @desc keyboard key codes with which a user can separate items\n     * @type {Array}\n     */\n    @Input() public separatorKeyCodes: number[] = new defaults().separatorKeyCodes;\n\n    /**\n     * @name placeholder\n     * @desc the placeholder of the input text\n     * @type {string}\n     */\n    @Input() public placeholder: string = new defaults().placeholder;\n\n    /**\n     * @name secondaryPlaceholder\n     * @desc placeholder to appear when the input is empty\n     * @type {string}\n     */\n    @Input() public secondaryPlaceholder: string = new defaults().secondaryPlaceholder;\n\n    /**\n     * @name maxItems\n     * @desc maximum number of items that can be added\n     * @type {number}\n     */\n    @Input() public maxItems: number = new defaults().maxItems;\n\n    /**\n     * @name validators\n     * @desc array of Validators that are used to validate the tag before it gets appended to the list\n     * @type {Validators[]}\n     */\n    @Input() public validators: ValidatorFn[] = new defaults().validators;\n\n    /**\n     * @name asyncValidators\n     * @desc array of AsyncValidator that are used to validate the tag before it gets appended to the list\n     * @type {Array}\n     */\n    @Input() public asyncValidators: AsyncValidatorFn[] = new defaults().asyncValidators;\n\n    /**\n    * - if set to true, it will only possible to add items from the autocomplete\n    * @name onlyFromAutocomplete\n    * @type {Boolean}\n    */\n    @Input() public onlyFromAutocomplete = new defaults().onlyFromAutocomplete;\n\n\t/**\n     * @name errorMessages\n     * @type {Map<string, string>}\n     */\n    @Input() public errorMessages: { [key: string]: string } = new defaults().errorMessages;\n\n    /**\n     * @name theme\n     * @type {string}\n     */\n    @Input() public theme: string = new defaults().theme;\n\n    /**\n     * @name onTextChangeDebounce\n     * @type {number}\n     */\n    @Input() public onTextChangeDebounce = new defaults().onTextChangeDebounce;\n\n    /**\n     * - custom id assigned to the input\n     * @name id\n     */\n    @Input() public inputId: string = new defaults().inputId;\n\n    /**\n     * - custom class assigned to the input\n     */\n    @Input() public inputClass: string = new defaults().inputClass;\n\n    /**\n     * - option to clear text input when the form is blurred\n     * @name clearOnBlur\n     */\n    @Input() public clearOnBlur: boolean = new defaults().clearOnBlur;\n\n    /**\n     * - hideForm\n     * @name clearOnBlur\n     */\n    @Input() public hideForm: boolean = new defaults().hideForm;\n\n    /**\n     * @name addOnBlur\n     */\n    @Input() public addOnBlur: boolean = new defaults().addOnBlur;\n\n    /**\n     * @name addOnPaste\n     */\n    @Input() public addOnPaste: boolean = new defaults().addOnPaste;\n\n    /**\n     * - pattern used with the native method split() to separate patterns in the string pasted\n     * @name pasteSplitPattern\n     */\n    @Input() public pasteSplitPattern = new defaults().pasteSplitPattern;\n\n    /**\n     * @name blinkIfDupe\n     * @type {boolean}\n     */\n    @Input() public blinkIfDupe = new defaults().blinkIfDupe;\n\n    /**\n     * @name removable\n     * @type {boolean}\n     */\n    @Input() public removable = new defaults().removable;\n\n    /**\n     * @name editable\n     * @type {boolean}\n     */\n    @Input() public editable: boolean = new defaults().editable;\n\n    /**\n     * @name allowDupes\n     * @type {boolean}\n     */\n    @Input() public allowDupes = new defaults().allowDupes;\n\n    /**\n     * @description if set to true, the newly added tags will be added as strings, and not objects\n     * @name modelAsStrings\n     * @type {boolean}\n     */\n    @Input() public modelAsStrings = new defaults().modelAsStrings;\n\n    /**\n     * @name trimTags\n     * @type {boolean}\n     */\n    @Input() public trimTags = new defaults().trimTags;\n\n    /**\n     * @name inputText\n     */\n    @Input() public get inputText(): string {\n        return this.inputTextValue;\n    }\n\n    /**\n     * @name ripple\n     * @type {boolean}\n     */\n    @Input() public ripple: boolean = new defaults().ripple;\n\n    /**\n     * @name tabindex\n     * @desc pass through the specified tabindex to the input\n     * @type {string}\n     */\n    @Input() public tabindex: string = new defaults().tabIndex;\n\n    /**\n     * @name disabled\n     * @type {boolean}\n     */\n    @Input() public disabled: boolean = new defaults().disabled;\n\n    /**\n     * @name dragZone\n     * @type {string}\n     */\n    @Input() public dragZone: string = new defaults().dragZone;\n\n    /**\n     * @name onRemoving\n     * @type {() => Observable<void>}\n     */\n    @Input() public onRemoving: (tag: TagModel) => Observable<TagModel> = new defaults().onRemoving;\n\n    /**\n     * @name onAdding\n     * @type {() => Observable<void>}\n     */\n    @Input() public onAdding: (tag: TagModel) => Observable<TagModel> = new defaults().onAdding;\n\n    /**\n     * @name onAdd\n     * @desc event emitted when adding a new item\n     * @type {EventEmitter<string>}\n     */\n    @Output() public onAdd = new EventEmitter<TagModel>();\n\n    /**\n     * @name onRemove\n     * @desc event emitted when removing an existing item\n     * @type {EventEmitter<string>}\n     */\n    @Output() public onRemove = new EventEmitter<TagModel>();\n\n    /**\n     * @name onSelect\n     * @desc event emitted when selecting an item\n     * @type {EventEmitter<string>}\n     */\n    @Output() public onSelect = new EventEmitter<TagModel>();\n\n    /**\n     * @name onFocus\n     * @desc event emitted when the input is focused\n     * @type {EventEmitter<string>}\n     */\n    @Output() public onFocus = new EventEmitter<string>();\n\n    /**\n     * @name onFocus\n     * @desc event emitted when the input is blurred\n     * @type {EventEmitter<string>}\n     */\n    @Output() public onBlur = new EventEmitter<string>();\n\n    /**\n     * @name onTextChange\n     * @desc event emitted when the input value changes\n     * @type {EventEmitter<string>}\n     */\n    @Output() public onTextChange = new EventEmitter<TagModel>();\n\n    /**\n     * - output triggered when text is pasted in the form\n     * @name onPaste\n     * @type {EventEmitter<TagModel>}\n     */\n    @Output() public onPaste = new EventEmitter<string>();\n\n    /**\n     * - output triggered when tag entered is not valid\n     * @name onValidationError\n     * @type {EventEmitter<string>}\n     */\n    @Output() public onValidationError = new EventEmitter<TagModel>();\n\n    /**\n     * - output triggered when tag is edited\n     * @name onTagEdited\n     * @type {EventEmitter<TagModel>}\n     */\n    @Output() public onTagEdited = new EventEmitter<TagModel>();\n\n    /**\n     * @name dropdown\n     */\n    @ContentChild(TagInputDropdown) public dropdown: TagInputDropdown;\n\n    /**\n     * @name template\n     * @desc reference to the template if provided by the user\n     * @type {TemplateRef}\n     */\n    @ContentChildren(TemplateRef, { descendants: false }) public templates: QueryList<TemplateRef<any>>;\n\n\t/**\n     * @name inputForm\n     * @type {TagInputForm}\n     */\n    @ViewChild(TagInputForm) public inputForm: TagInputForm;\n\n    /**\n     * @name selectedTag\n     * @desc reference to the current selected tag\n     * @type {String}\n     */\n    public selectedTag: TagModel;\n\n    /**\n     * @name isLoading\n     * @type {boolean}\n     */\n    public isLoading = false;\n\n    /**\n     * @name inputText\n     * @param text\n     */\n    public set inputText(text: string) {\n        this.inputTextValue = text;\n        this.inputTextChange.emit(text);\n    }\n\n    /**\n     * @name tags\n     * @desc list of Element items\n     */\n    @ViewChildren(TagComponent) public tags: QueryList<TagComponent>;\n\n    /**\n     * @name listeners\n     * @desc array of events that get fired using @fireEvents\n     * @type []\n     */\n    private listeners = {\n        [constants.KEYDOWN]: <{ (fun): any }[]>[],\n        [constants.KEYUP]: <{ (fun): any }[]>[],\n        change: <{ (fun): any }[]>[]\n    };\n\n    /**\n     * @description emitter for the 2-way data binding inputText value\n     * @name inputTextChange\n     * @type {EventEmitter}\n     */\n    @Output() public inputTextChange: EventEmitter<string> = new EventEmitter();\n\n    /**\n     * @description private variable to bind get/set\n     * @name inputTextValue\n     * @type {string}\n     */\n    public inputTextValue = '';\n\n    /**\n     * @desc removes the tab index if it is set - it will be passed through to the input\n     * @name tabindexAttr\n     * @type {string}\n     */\n    @HostBinding('attr.tabindex')\n    public get tabindexAttr(): string {\n        return this.tabindex !== undefined ? '-1' : undefined;\n    }\n\n    constructor(private readonly renderer: Renderer2, \n                public readonly dragProvider: DragProvider) {\n        super();\n    }\n\n    /**\n     * @name onRemoveRequested\n     * @param tag\n     * @param index\n     */\n    public onRemoveRequested(tag: TagModel, index: number): void {\n        if (this.onRemoving) {\n            this.onRemoving(tag)\n                .subscribe((model: TagModel) => {\n                    this.removeItem(model, index);\n                });\n        } else {\n            this.removeItem(tag, index);\n        }\n    }\n\n    /**\n     * @name onAddingRequested\n     * @param isFromAutocomplete {boolean}\n     * @param tag {TagModel}\n     */\n    public onAddingRequested(isFromAutocomplete: boolean, tag: TagModel, index = undefined): void {\n        if (!tag) {\n            return;\n        }\n\n        if (this.onAdding) {\n            this.onAdding(tag)\n                .subscribe((model: TagModel) => {\n                    this.addItem(isFromAutocomplete, model, index);\n                });\n        } else {\n            this.addItem(isFromAutocomplete, tag, index);\n        }\n    }\n\n    /**\n     *\n     * @param tag\n     * @param isFromAutocomplete\n     */\n    public isTagValid(tag: TagModel, fromAutocomplete = false): boolean {\n        const selectedItem = this.dropdown ? this.dropdown.selectedItem : undefined;\n\n        if (selectedItem && !fromAutocomplete) {\n            return;\n        }\n\n        const dupe = this.findDupe(tag, fromAutocomplete);\n\n        // if so, give a visual cue and return false\n        if (!this.allowDupes && dupe && this.blinkIfDupe) {\n            const item = this.tags.find(_tag => {\n                return this.getItemValue(_tag.model) === this.getItemValue(dupe);\n            });\n\n            if (!!item) {\n                item.blink();\n            }\n        }\n\n        const isFromAutocomplete = fromAutocomplete && this.onlyFromAutocomplete;\n\n        const assertions = [\n            // 1. there must be no dupe OR dupes are allowed\n            !dupe || this.allowDupes === true,\n\n            // 2. check max items has not been reached\n            this.maxItemsReached === false,\n\n            // 3. check item comes from autocomplete or onlyFromAutocomplete is false\n            ((isFromAutocomplete) || this.onlyFromAutocomplete === false)\n        ];\n\n        return assertions.filter(item => item).length === assertions.length;\n    }\n\n    /**\n     * @name appendTag\n     * @param tag {TagModel}\n     */\n    public appendTag = (tag: TagModel, index = this.items.length): void => {\n        const items = this.items;\n        const model = this.modelAsStrings ? tag[this.identifyBy] : tag;\n\n        this.items = [...items.slice(0, index), model, ...items.slice(index, items.length)];\n    }\n\n    /**\n     * @name createTag\n     * @param model\n     * @returns {{}}\n     */\n    public createTag = (model: TagModel): TagModel => {\n        const trim = (val: TagModel, key: string): TagModel => {\n            return typeof val === 'string' ? val.trim() : val[key];\n        };\n\n        return {\n            ...typeof model !== 'string' ? model : {},\n            [this.displayBy]: this.trimTags ? trim(model, this.displayBy) : model,\n            [this.identifyBy]: this.trimTags ? trim(model, this.identifyBy) : model\n        };\n    }\n\n    /**\n     * @name selectItem\n     * @desc selects item passed as parameter as the selected tag\n     * @param item\n     * @param emit\n     */\n    public selectItem(item: TagModel, emit = true): void {\n        const isReadonly = item && typeof item !== 'string' && item.readonly;\n        if (isReadonly) {\n            return;\n        }\n\n        this.selectedTag = item;\n\n        if (emit) {\n            this.onSelect.emit(item);\n        }\n    }\n\n    /**\n     * @name fireEvents\n     * @desc goes through the list of the events for a given eventName, and fires each of them\n     * @param eventName\n     * @param $event\n     */\n    public fireEvents(eventName: string, $event?): void {\n        this.listeners[eventName]\n            .forEach(listener => listener.call(this, $event));\n    }\n\n    /**\n     * @name handleKeydown\n     * @desc handles action when the user hits a keyboard key\n     * @param data\n     */\n    public handleKeydown(data: any): void {\n        const event = data.event;\n        const key = event.keyCode || event.which;\n\n        switch (constants.KEY_PRESS_ACTIONS[key]) {\n            case constants.ACTIONS_KEYS.DELETE:\n                if (this.selectedTag && this.removable) {\n                    const index = this.items.indexOf(this.selectedTag);\n                    this.onRemoveRequested(this.selectedTag, index);\n                }\n                break;\n            case constants.ACTIONS_KEYS.SWITCH_PREV:\n                this.switchPrev(data.model);\n                break;\n            case constants.ACTIONS_KEYS.SWITCH_NEXT:\n                this.switchNext(data.model);\n                break;\n            case constants.ACTIONS_KEYS.TAB:\n                this.switchNext(data.model);\n                break;\n            default:\n                return;\n        }\n\n        // prevent default behaviour\n        event.preventDefault();\n    }\n\n    /**\n     * @name setInputValue\n     * @param value\n     * @returns {string}\n     */\n    public setInputValue(value: string): void {\n        const control = this.getControl();\n        \n        // update form value with the transformed item\n        control.setValue(value);\n    }\n\n    /**\n     * @name getControl\n     * @returns {FormControl}\n     */\n    private getControl(): FormControl {\n        return <FormControl>this.inputForm.value;\n    }\n\n\t/**\n     * @name focus\n     * @param applyFocus\n     * @param displayAutocomplete\n     */\n    public focus(applyFocus = false, displayAutocomplete = false): void {\n        if (this.dragProvider.getState('isDragging')) {\n            return;\n        }\n\n        this.selectItem(undefined, false);\n\n        if (applyFocus) {\n            this.inputForm.focus();\n            this.onFocus.emit(this.formValue);\n        }\n    }\n\n\t/**\n     * @name blur\n     */\n    public blur(): void {\n        this.onTouched();\n\n        this.onBlur.emit(this.formValue);\n    }\n\n    /**\n     * @name hasErrors\n     * @returns {boolean}\n     */\n    public hasErrors(): boolean {\n        return this.inputForm && this.inputForm.hasErrors();\n    }\n\n    /**\n     * @name isInputFocused\n     * @returns {boolean}\n     */\n    public isInputFocused(): boolean {\n        return this.inputForm && this.inputForm.isInputFocused();\n    }\n\n    /**\n     * - this is the one way I found to tell if the template has been passed and it is not\n     * the template for the menu item\n     * @name hasCustomTemplate\n     */\n    public hasCustomTemplate(): boolean {\n        const templates = this.templates;\n        const template = templates ? templates.first : undefined;\n        const menuTemplate = this.dropdown && this.dropdown.templates ?\n            this.dropdown.templates.first : undefined;\n\n        return template && template !== menuTemplate;\n    }\n\n    /**\n     * @name switchNext\n     * @param item { TagModel }\n     */\n    public switchNext(item: TagModel): void {\n        if (this.tags.last.model === item) {\n            this.focus(true);\n            return;\n        }\n\n        const tags = this.tags.toArray();\n        const tagIndex = tags.findIndex(tag => tag.model === item);\n        const tag = tags[tagIndex + 1];\n\n        tag.select.call(tag);\n    }\n\n    /**\n     * @name switchPrev\n     * @param item { TagModel }\n     */\n    public switchPrev(item: TagModel): void {\n        if (this.tags.first.model !== item) {\n            const tags = this.tags.toArray();\n            const tagIndex = tags.findIndex(tag => tag.model === item);\n            const tag = tags[tagIndex - 1];\n\n            tag.select.call(tag);\n        }\n    }\n\n\t/**\n     * @name maxItemsReached\n     * @returns {boolean}\n     */\n    public get maxItemsReached(): boolean {\n        return this.maxItems !== undefined &&\n            this.items.length >= this.maxItems;\n    }\n\n    /**\n     * @name formValue\n     * @return {any}\n     */\n    public get formValue(): string {\n        return this.inputForm.value.value;\n    }\n\n    /**\n     * @name ngOnInit\n     */\n    public ngOnInit(): void {\n        // if the number of items specified in the model is > of the value of maxItems\n        // degrade gracefully and let the max number of items to be the number of items in the model\n        // though, warn the user.\n        const hasReachedMaxItems = this.maxItems !== undefined &&\n            this.items &&\n            this.items.length > this.maxItems;\n\n        if (hasReachedMaxItems) {\n            this.maxItems = this.items.length;\n            console.warn(constants.MAX_ITEMS_WARNING);\n        }\n\n\t    // Setting editable to false to fix problem with tags in IE still being editable when\n\t    // onlyFromAutocomplete is true\n\t\tif (this.onlyFromAutocomplete) {\n\t\t\tthis.editable = false;\n\t\t}\n    }\n\n    /**3\n     * @name onDragStarted\n     * @param event\n     * @param index\n     */\n    public onDragStarted(event: DragEvent, tag: TagModel, index: number): void {\n        event.stopPropagation();\n\n        const item = { zone: this.dragZone, tag, index } as DraggedTag;\n        \n        this.dragProvider.setSender(this);\n        this.dragProvider.setDraggedItem(event, item);\n        this.dragProvider.setState({isDragging: true});\n    }\n\n    /**\n     * @name onDragOver\n     * @param event\n     */\n    public onDragOver(event: DragEvent): void {\n        this.dragProvider.setState({isDropping: true});\n        this.dragProvider.setReceiver(this);\n\n        event.preventDefault();\n    }\n\n    /**\n     * @name onTagDropped\n     * @param event\n     * @param index\n     */\n    public onTagDropped(event: DragEvent, index: number): void {\n        const item = this.dragProvider.getDraggedItem(event);\n\n        if (item.zone !== this.dragZone) {\n            return;\n        }\n \n        this.dragProvider.onTagDropped(item.tag, item.index, index);\n\n        event.preventDefault();\n        event.stopPropagation();\n    }\n\n    /**\n     * @name ngAfterViewInit\n     */\n    public ngAfterViewInit(): void {\n        // set up listeners\n\n        this.setUpKeypressListeners();\n        this.setupSeparatorKeysListener();\n        this.setUpInputKeydownListeners();\n\n        if (this.onTextChange.observers.length) {\n            this.setUpTextChangeSubscriber();\n        }\n\n        // if clear on blur is set to true, subscribe to the event and clear the text's form\n        if (this.clearOnBlur || this.addOnBlur) {\n            this.setUpOnBlurSubscriber();\n        }\n\n        // if addOnPaste is set to true, register the handler and add items\n        if (this.addOnPaste) {\n            this.setUpOnPasteListener();\n        }\n\n        // if hideForm is set to true, remove the input\n        if (this.hideForm) {\n            this.inputForm.destroy();\n        }\n    }\n\n    /**\n     * @name onTagBlurred\n     * @param changedElement {TagModel}\n     * @param index {number}\n     */\n    public onTagBlurred(changedElement: TagModel, index: number): void {\n        this.items[index] = changedElement;\n        this.blur();\n    }\n\n    /**\n     * @name trackBy\n     * @param item\n     * @returns {string}\n     */\n    public trackBy(item: TagModel): string {\n        return item[this.identifyBy];\n    }\n\n    /**\n     * @name removeItem\n     * @desc removes an item from the array of the model\n     * @param tag {TagModel}\n     * @param index {number}\n     */\n    private removeItem(tag: TagModel, index: number): void {\n        this.items = this.getItemsWithout(index);\n\n        // if the removed tag was selected, set it as undefined\n        if (this.selectedTag === tag) {\n            this.selectItem(undefined, false);\n        }\n\n        // focus input\n        this.focus(true, false);\n\n        // emit remove event\n        this.onRemove.emit(tag);\n    }\n\n    /**\n     * @name addItem\n     * @desc adds the current text model to the items array\n     * @param fromAutocomplete\n     * @param item\n     */\n    private addItem(fromAutocomplete = false, item: TagModel, index = undefined): void {\n        const model = this.getItemDisplay(item);\n        \n        /**\n         * @name reset\n         */\n        const reset = (): void => {\n            // reset control and focus input\n            this.setInputValue('');\n\n            // focus input\n            this.focus(true, false);\n        };\n\n        /**\n         * @name validationFilter\n         * @param tag\n         * @return {boolean}\n         */\n        const validationFilter = (tag: TagModel): boolean => {\n            const isValid = this.isTagValid(tag, fromAutocomplete) && this.inputForm.form.valid;\n\n            if (!isValid) {\n                this.onValidationError.emit(tag);\n            }\n\n            return isValid;\n        };\n\n        /**\n         * @name appendItem\n         * @param tag\n         */\n        const appendItem = (tag: TagModel): void => {\n            this.appendTag(tag, index);\n\n            // emit event\n            this.onAdd.emit(tag);\n        };\n\n        Observable\n            .of(model)\n            .filter(() => model.trim() !== '')\n            .map(() => item)\n            .map(this.createTag)\n            .filter(validationFilter)\n            .subscribe(appendItem, undefined, reset);\n    }\n\n    /**\n     * @name setupSeparatorKeysListener\n     */\n    private setupSeparatorKeysListener(): void {\n        const useSeparatorKeys = this.separatorKeyCodes.length > 0 || this.separatorKeys.length > 0;\n\n        listen.call(this, constants.KEYDOWN, ($event) => {\n            const hasKeyCode = this.separatorKeyCodes.indexOf($event.keyCode) >= 0;\n            const hasKey = this.separatorKeys.indexOf($event.key) >= 0;\n\n            if (hasKeyCode || hasKey) {\n                $event.preventDefault();\n                this.onAddingRequested(false, this.formValue);\n            }\n\n        }, useSeparatorKeys);\n    }\n\n    /**\n     * @name setUpKeypressListeners\n     */\n    private setUpKeypressListeners(): void {\n        // setting up the keypress listeners\n        listen.call(this, constants.KEYDOWN, ($event) => {\n            const isCorrectKey = $event.keyCode === 37 || $event.keyCode === 8;\n\n            if (isCorrectKey &&\n                !this.formValue &&\n                this.items.length) {\n                this.tags.last.select.call(this.tags.last);\n            }\n        });\n    }\n\n    /**\n     * @name setUpKeydownListeners\n     */\n    private setUpInputKeydownListeners(): void {\n        this.inputForm.onKeydown.subscribe(event => {\n            this.fireEvents('keydown', event);\n\n            if (event.key === 'Backspace' && this.formValue === '') {\n                event.preventDefault();\n            }\n        });\n    }\n\n    /**\n     * @name setUpOnPasteListener\n     */\n    private setUpOnPasteListener(): void {\n        const input = this.inputForm.input.nativeElement;\n\n        // attach listener to input\n        this.renderer.listen(input, 'paste', this.onPasteCallback.bind(this));\n    }\n\n    /**\n     * @name setUpTextChangeSubscriber\n     */\n    private setUpTextChangeSubscriber(): void {\n        this.inputForm.form.valueChanges\n            .debounceTime(this.onTextChangeDebounce)\n            .subscribe(() => this.onTextChange.emit(this.formValue));\n    }\n\n    /**\n     * @name setUpOnBlurSubscriber\n     */\n    private setUpOnBlurSubscriber(): void {\n        const filterFn = (): boolean => {\n            return !(this.dropdown && this.dropdown.isVisible) && !!this.formValue;\n        };\n\n        this.inputForm\n            .onBlur\n            .filter(filterFn)\n            .subscribe(() => {\n                if (this.addOnBlur) {\n                    this.onAddingRequested(false, this.formValue);\n                }\n\n                this.setInputValue('');\n            });\n    }\n\n    /**\n     * @name findDupe\n     * @param tag\n     * @param isFromAutocomplete\n     * @return {undefined|TagModel}\n     */\n    private findDupe(tag: TagModel, isFromAutocomplete: boolean): TagModel {\n        const identifyBy = isFromAutocomplete ? this.dropdown.identifyBy : this.identifyBy;\n        return this.items\n            .find((item: TagModel) => {\n                return this.getItemValue(item) === tag[identifyBy];\n            });\n    }\n\n    /**\n     * @name onPasteCallback\n     * @param data\n     */\n    private onPasteCallback(data: ClipboardEvent): void {\n        const text = data.clipboardData.getData('text/plain');\n\n        text.split(this.pasteSplitPattern)\n            .map(item => this.createTag(item))\n            .forEach(item => this.onAddingRequested(false, item));\n\n        this.onPaste.emit(text);\n\n        setTimeout(() => this.setInputValue(''), 0);\n    }\n}\n\n\n\n// WEBPACK FOOTER //\n// modules/components/tag-input/tag-input.ts","import {\n    Component,\n    animate,\n    trigger,\n    style,\n    transition,\n    keyframes,\n    state,\n    Input\n} from '@angular/core';\n\n@Component({\n    selector: 'tag-ripple',\n    styles: [`\n        :host {\n            width: 100%;\n            height: 100%;\n            left: 0;\n            overflow: hidden;\n            position: absolute;\n        }\n        \n        .tag-ripple {\n            background: rgba(0, 0, 0, 0.1);\n            top: 50%;\n            left: 50%;\n            height: 100%;\n            transform: translate(-50%, -50%);\n            position: absolute;\n        }\n    `],\n    template: `\n        <div class=\"tag-ripple\" [@ink]=\"state\"></div>\n    `,\n    animations: [\n        trigger('ink', [\n            state('none', style({width: 0, opacity: 0})),\n            transition('none => clicked', [\n                animate(300, keyframes([\n                    style({opacity: 1, offset: 0, width: '30%', borderRadius: '100%'}),\n                    style({opacity: 1, offset: 0.5, width: '50%'}),\n                    style({opacity: 0.5, offset: 1, width: '100%', borderRadius: '16px'})\n                ]))\n            ])\n        ])\n    ]\n})\nexport class TagRipple {\n    @Input() public state: string = 'none';\n}\n\n\n\n// WEBPACK FOOTER //\n// modules/components/tag/tag-ripple.component.ts","import {\n    Component,\n    Input,\n    Output,\n    EventEmitter,\n    TemplateRef,\n    ElementRef,\n    HostListener,\n    ViewChild,\n    ChangeDetectorRef,\n    Renderer2\n} from '@angular/core';\n\nimport { TagModel } from '../../core';\nimport { TagRipple } from '../tag';\n\n// angular universal hacks\n/* tslint:disable-next-line */\nconst KeyboardEvent = (global as any).KeyboardEvent;\nconst MouseEvent = (global as any).MouseEvent;\n\n// mocking navigator\nconst navigator = typeof window !== 'undefined' ? window.navigator : {\n    userAgent: 'Chrome',\n    vendor: 'Google Inc'\n};\n\nconst isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);\n\n@Component({\n    selector: 'tag',\n    templateUrl: './tag.template.html',\n    styleUrls: [ './tag-component.style.scss' ]\n})\nexport class TagComponent {    \n    /**\n     * @name model {TagModel}\n     */\n    @Input() public model: TagModel;\n\n    /**\n     * @name removable {boolean}\n     */\n    @Input() public removable: boolean;\n\n    /**\n     * @name editable {boolean}\n     */\n    @Input() public editable: boolean;\n\n    /**\n     * @name template {TemplateRef<any>}\n     */\n    @Input() public template: TemplateRef<any>;\n\n    /**\n     * @name displayBy {string}\n     */\n    @Input() public displayBy: string;\n\n    /**\n     * @name identifyBy {string}\n     */\n    @Input() public identifyBy: string;\n\n    /**\n     * @name index {number}\n     */\n    @Input() public index: number;\n\n    /**\n     * @name hasRipple\n     */\n    @Input() public hasRipple: boolean;\n\n    /**\n     * @name disabled\n     */\n    @Input() public disabled = false;\n\n    /**\n     * @name onSelect\n     * @type {EventEmitter<TagModel>}\n     */\n    @Output() public onSelect: EventEmitter<TagModel> = new EventEmitter<TagModel>();\n\n    /**\n     * @name onRemove\n     * @type {EventEmitter<TagModel>}\n     */\n    @Output() public onRemove: EventEmitter<TagModel> = new EventEmitter<TagModel>();\n\n    /**\n     * @name onBlur\n     * @type {EventEmitter<TagModel>}\n     */\n    @Output() public onBlur: EventEmitter<TagModel> = new EventEmitter<TagModel>();\n\n    /**\n     * @name onKeyDown\n     * @type {EventEmitter<any>}\n     */\n    @Output() public onKeyDown: EventEmitter<any> = new EventEmitter<any>();\n\n    /**\n     * @name onTagEdited\n     * @type {EventEmitter<any>}\n     */\n    @Output() public onTagEdited: EventEmitter<TagModel> = new EventEmitter<TagModel>();\n\n    /**\n     * @name readonly {boolean}\n     */\n    public get readonly(): boolean {\n        return typeof this.model !== 'string' && this.model.readonly === true;\n    };\n\n    /**\n     * @name editing\n     * @type {boolean}\n     */\n    public editing = false;\n\n    /**\n     * @name rippleState\n     * @type {string}\n     */\n    public rippleState = 'none';\n\n    /**\n     * @name ripple {TagRipple}\n     */\n    @ViewChild(TagRipple) public ripple: TagRipple;\n\n    constructor(public element: ElementRef,\n                public renderer: Renderer2,\n                private cdRef: ChangeDetectorRef) {}\n\n    /**\n     * @name select\n     */\n    public select($event?: MouseEvent): void {\n        if (this.readonly || this.disabled) {\n            return;\n        }\n\n        if ($event) {\n            $event.stopPropagation();\n        }\n\n        this.focus();\n\n        this.onSelect.emit(this.model);\n    }\n\n    /**\n     * @name remove\n     */\n    public remove($event: MouseEvent): void {\n        $event.stopPropagation();\n        this.onRemove.emit(this);\n    }\n\n    /**\n     * @name focus\n     */\n    public focus(): void {\n        this.element.nativeElement.focus();\n    }\n\n    /**\n     * @name keydown\n     * @param event\n     */\n    @HostListener('keydown', ['$event'])\n    public keydown(event: KeyboardEvent): void {\n        if (this.editing) {\n            event.keyCode === 13 ? this.disableEditMode(event) : undefined;\n            return;\n        }\n\n        this.onKeyDown.emit({event, model: this.model});\n    }\n\n    /**\n     * @name blink\n     */\n    public blink(): void {\n        const classList = this.element.nativeElement.classList;\n        classList.add('blink');\n\n        setTimeout(() => classList.remove('blink'), 50);\n    }\n\n    /**\n     * @name toggleEditMode\n     */\n    public toggleEditMode(): void {\n        this.editing ? this.disableEditMode() : this.activateEditMode();\n    }\n\n    /**\n     * @name onBlurred\n     * @param event\n     */\n    public onBlurred(event: any): void {\n        // Checks if it is editable first before handeling the onBlurred event in order to prevent\n        // a bug in IE where tags are still editable with onlyFromAutocomplete set to true\n\t\tif (this.editable) {\n\t\t\tconst newValue: string = event.target.innerText;\n\t\t\tconst result = typeof this.model === 'string' ? newValue :\n\t\t\t\t{[this.identifyBy]: newValue, [this.displayBy]: newValue};\n\n            this.toggleEditMode();\n\n            this.onBlur.emit(result);\n\t\t}\n    }\n\n    /**\n     * @name getDisplayValue\n     * @param item\n     * @returns {string}\n     */\n    public getDisplayValue(item: TagModel): string {\n        return typeof item === 'string' ? item : item[this.displayBy];\n    }\n\n    /**\n     * @desc returns whether the ripple is visible or not\n     * only works in Chrome\n     * @name isRippleVisible\n     * @returns {boolean}\n     */\n    public get isRippleVisible(): boolean {\n        return !this.readonly &&\n            !this.editing &&\n            isChrome &&\n            this.hasRipple;\n    }\n\n    /**\n     * @name getContentEditableText\n     * @returns {string}\n     */\n    private getContentEditableText(): string {\n        const input = this.getContentEditable();\n\n        return input ? input.innerText.trim() : '';\n    }\n\n    /**\n     * @name setContentEditableText\n     * @param model\n     */\n    private setContentEditableText(model: TagModel) {\n        const input = this.getContentEditable();\n        const value = this.getDisplayValue(model);\n\n        input.innerText = value;\n    }\n\n    /**\n     * @name\n     */\n    private activateEditMode(): void {\n        const classList = this.element.nativeElement.classList;\n        classList.add('tag--editing');\n\n         this.editing = true;\n    }\n\n    /**\n     * @name disableEditMode\n     * @param $event\n     */\n    private disableEditMode($event?: KeyboardEvent): void {\n        const classList = this.element.nativeElement.classList;\n        const input = this.getContentEditableText();\n        \n        this.editing = false;\n        classList.remove('tag--editing');\n\n        if (!input) {\n            this.setContentEditableText(this.model);\n            return;\n        }\n\n        this.storeNewValue(input);\n        this.cdRef.detectChanges();\n\n        if ($event) {\n            $event.preventDefault();\n        }\n    }\n\n    /**\n     * @name storeNewValue\n     * @param input\n     */\n    private storeNewValue(input: string): void {\n        const exists = (model: TagModel) => {\n            return typeof model === 'string' ?\n                model === input :\n                model[this.displayBy] === input;\n        };\n\n        // if the value changed, replace the value in the model\n        if (exists(this.model) === false) {\n            const model = typeof this.model === 'string' ? input :\n                {[this.identifyBy]: input, [this.displayBy]: input};\n\n            // emit output\n            this.model = model;\n            this.onTagEdited.emit(model);\n        }\n    }\n\n    /**\n     * @name getContentEditable\n     */\n    private getContentEditable(): HTMLInputElement {\n        return this.element.nativeElement.querySelector('[contenteditable]');\n    }\n\n    /**\n     * @name isDeleteIconVisible\n     * @returns {boolean}\n     */\n    private isDeleteIconVisible(): boolean {\n        return !this.readonly &&\n                !this.disabled &&\n                this.removable &&\n                !this.editing;\n    }\n}\n\n\n\n// WEBPACK FOOTER //\n// modules/components/tag/tag.component.ts","import { defaults } from './../defaults';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { Input } from '@angular/core';\nimport { OptionsProvider } from './providers';\n\nexport type TagModel = string | {[key: string]: any};\n\nexport function isObject(obj: any): boolean {\n    return obj === Object(obj);\n}\n\nexport class TagInputAccessor implements ControlValueAccessor {\n    private _items: TagModel[] = [];\n    private _onTouchedCallback: () => void;\n    private _onChangeCallback: (items: TagModel[]) => void;\n\n    /**\n     * @name displayBy\n     * @type {string}\n     */\n    @Input() public displayBy: string = OptionsProvider.defaults.tagInput.displayBy;\n\n    /**\n     * @name identifyBy\n     * @type {string}\n     */\n    @Input() public identifyBy: string = OptionsProvider.defaults.tagInput.identifyBy;\n\n    public get items(): TagModel[] {\n        return this._items;\n    };\n\n    public set items(items: TagModel[]) {\n        this._items = items;\n        this._onChangeCallback(this._items);\n    }\n\n    public onTouched() {\n        this._onTouchedCallback();\n    }\n\n    public writeValue(items: any[]) {\n        this._items = items || [];\n    }\n\n    public registerOnChange(fn: any) {\n        this._onChangeCallback = fn;\n    }\n\n    public registerOnTouched(fn: any) {\n        this._onTouchedCallback = fn;\n    }\n\n    /**\n     * @name getItemValue\n     * @param item\n     * @return {TagModel}\n     */\n    public getItemValue(item: TagModel): string {\n        return isObject(item) ? item[this.identifyBy] : item;\n    }\n\n    /**\n     * @name getItemDisplay\n     * @param item\n     * @return {TagModel}\n     */\n    public getItemDisplay(item: TagModel): string {\n        return isObject(item) ? item[this.displayBy] : item;\n    }\n\n    /**\n     * @name getItemsWithout\n     * @param index\n     * @return {TagModel[]}\n     */\n    protected getItemsWithout(index: number): TagModel[] {\n        return this.items.filter((item, position) => position !== index);\n    }\n}\n\n\n\n// WEBPACK FOOTER //\n// modules/core/accessor.ts","export * from './listen';\n\n\n\n// WEBPACK FOOTER //\n// modules/core/helpers/index.ts","\n/**\n * @name listen\n * @param listenerType\n * @param action\n * @param condition\n */\nexport function listen(listenerType: string, action: () => any, condition = true): void {\n    // if the event provided does not exist, throw an error\n    if (!this.listeners.hasOwnProperty(listenerType)) {\n        throw new Error('The event entered may be wrong');\n    }\n\n    // if a condition is present and is false, exit early\n    if (!condition) {\n        return;\n    }\n\n    // fire listener\n    this.listeners[listenerType].push(action);\n}\n\n\n\n// WEBPACK FOOTER //\n// modules/core/helpers/listen.ts","import {Pipe, PipeTransform} from '@angular/core';\n\nconst escape = s => s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\n@Pipe({\n    name: 'highlight'\n})\nexport class HighlightPipe implements PipeTransform {\n    /**\n     * @name transform\n     * @param value {string}\n     * @param arg {string}\n     * @return {string}\n     */\n    public transform(value: string, arg: string): string {\n        if (!arg.trim()) {\n            return value;\n        }\n\n        try {\n            const regex = new RegExp(`(${escape(arg)})`, 'i');\n            return value.replace(regex, '<b>$1</b>');\n        } catch (e) {\n            return value;\n        }\n    }\n}\n\n\n\n// WEBPACK FOOTER //\n// modules/core/pipes/highlight.pipe.ts","export * from './highlight.pipe';\n\n\n\n// WEBPACK FOOTER //\n// modules/core/pipes/index.ts","import { TagInputComponent } from './../../components/tag-input/tag-input';\nimport { TagModel } from '../accessor';\n\nimport { Injectable } from '@angular/core';\n\nexport declare interface DraggedTag {\n    index: number;\n    tag: TagModel;\n    zone: string;\n}\n\nimport { DRAG_AND_DROP_KEY } from '../../core/constants';\n\n@Injectable()\nexport class DragProvider {\n    private sender: TagInputComponent;\n    private receiver: TagInputComponent;\n\n    public state = {\n        isDragging: false,\n        isDropping: false\n    };\n\n    /**\n     * @name setDraggedItem\n     * @param event\n     * @param tag \n     */\n    public setDraggedItem(event: DragEvent, tag: DraggedTag): void {\n        event.dataTransfer.setData(DRAG_AND_DROP_KEY, JSON.stringify(tag));\n    }\n\n    /**\n     * @name getDraggedItem\n     * @param event \n     */\n    public getDraggedItem(event: DragEvent): DraggedTag {\n        const data = event.dataTransfer.getData(DRAG_AND_DROP_KEY);\n\n        return JSON.parse(data) as DraggedTag;\n    }\n\n    /**\n     * @name setSender\n     * @param sender \n     */\n    public setSender(sender: TagInputComponent): void {\n        this.sender = sender;\n    }\n    \n    /**\n     * @name setReceiver\n     * @param receiver \n     */\n    public setReceiver(receiver: TagInputComponent): void {\n        this.receiver = receiver;\n    }\n\n    /**\n     * @name onTagDropped\n     * @param tag \n     * @param indexDragged \n     * @param indexDropped \n     */\n    public onTagDropped(tag: TagModel, indexDragged: number, indexDropped: number): void {\n        this.onDragEnd();\n\n        this.sender.onRemoveRequested(tag, indexDragged);\n        this.receiver.onAddingRequested(false, tag, indexDropped);\n    }\n\n    /**\n     * @name setState\n     * @param state\n     */\n    public setState(state: {isDragging?: boolean, isDropping?: boolean}): void {\n        this.state = {...this.state, ...state};\n    }\n\n    /**\n     * @name getState\n     * @param key\n     */\n    public getState(key: string): boolean {\n        return this.state[key];\n    }\n\n    /**\n     * @name onDragEnd\n     */\n    public onDragEnd(): void {\n        this.setState({isDragging: false, isDropping: false});\n    }\n}\n\n\n// WEBPACK FOOTER //\n// modules/core/providers/drag-provider.ts","import { defaults, TagInputOptions, TagInputDropdownOptions } from '../../defaults';\n\nexport type Options = {\n    tagInput?: {\n        [P in keyof TagInputOptions]?: TagInputOptions[P];\n    };\n    dropdown?: {\n        [P in keyof TagInputDropdownOptions]?: TagInputDropdownOptions[P];\n    }\n}\n\nexport class OptionsProvider {\n    public static defaults = defaults;\n\n    public setOptions(options: Options): void {\n        OptionsProvider.defaults.tagInput = {...defaults.tagInput, ...options.tagInput};\n        OptionsProvider.defaults.dropdown = {...defaults.dropdown, ...options.dropdown};\n    }\n}\n\nexport { TagInputDropdownOptions, TagInputOptions };\n\n\n// WEBPACK FOOTER //\n// modules/core/providers/options-provider.ts","import { Observable } from 'rxjs/Observable';\nimport { ValidatorFn, AsyncValidatorFn } from '@angular/forms';\n\nimport { \n    SECONDARY_PLACEHOLDER,\n    PLACEHOLDER\n } from './core/constants';\n\nimport { TagInputDropdown } from './components/dropdown/tag-input-dropdown.component';\nimport { TagModel } from './core';\n\nexport interface TagInputOptions {\n    separatorKeys: string[],\n    separatorKeyCodes: number[],\n    maxItems: number,\n    placeholder: string,\n    secondaryPlaceholder: string,\n    validators: ValidatorFn[],\n    asyncValidators: AsyncValidatorFn[],\n    onlyFromAutocomplete: boolean,\n    errorMessages: { [key: string]: string; },\n    theme: string,\n    onTextChangeDebounce: number,\n    inputId: string,\n    inputClass: string,\n    clearOnBlur: boolean,\n    hideForm: boolean,\n    addOnBlur: boolean,\n    addOnPaste: boolean,\n    pasteSplitPattern: string,\n    blinkIfDupe: boolean,\n    removable: boolean,\n    editable: boolean,\n    allowDupes: boolean,\n    modelAsStrings: boolean,\n    trimTags: boolean,\n    ripple: boolean,\n    tabIndex: string,\n    disabled: boolean,\n    dragZone: string,\n    onRemoving: () => Observable<TagModel>,\n    onAdding: () => Observable<TagModel>,\n    displayBy: string,\n    identifyBy: string\n}\n\nexport interface TagInputDropdownOptions {\n    displayBy: string,\n    identifyBy: string,\n    appendToBody: boolean,\n    offset: string,\n    focusFirstElement: boolean,\n    showDropdownIfEmpty: boolean,\n    minimumTextLength: number,\n    limitItemsTo: number,\n    matchingFn: (value: string, target: TagModel) => boolean;\n}\n\nexport const defaults = {\n    tagInput: <TagInputOptions>{\n        separatorKeys: [],\n        separatorKeyCodes: [],\n        maxItems: undefined,\n        placeholder: PLACEHOLDER,\n        secondaryPlaceholder: SECONDARY_PLACEHOLDER,\n        validators: [],\n        asyncValidators: [],\n        onlyFromAutocomplete: false,\n        errorMessages: {},\n        theme: '',\n        onTextChangeDebounce: 250,\n        inputId: undefined,\n        inputClass: undefined,\n        clearOnBlur: undefined,\n        hideForm: undefined,\n        addOnBlur: undefined,\n        addOnPaste: undefined,\n        pasteSplitPattern: ',',\n        blinkIfDupe: true,\n        removable: true,\n        editable: undefined,\n        allowDupes: false,\n        modelAsStrings: false,\n        trimTags: true,\n        ripple: true,\n        tabIndex: undefined,\n        disabled: false,\n        dragZone: undefined,\n        onRemoving: undefined,\n        onAdding: undefined,\n        displayBy: 'display',\n        identifyBy: 'value'\n    },\n    dropdown: <TagInputDropdownOptions>{\n        displayBy: 'display',\n        identifyBy: 'value',\n        appendToBody: true,\n        offset: '50 0',\n        focusFirstElement: false,\n        showDropdownIfEmpty: false,\n        minimumTextLength: 1,\n        limitItemsTo: undefined,\n        matchingFn: function(this: TagInputDropdown, value: string, target: TagModel): boolean {\n            const targetValue = target[this.displayBy].toString();\n\n            return targetValue && targetValue\n                .toLowerCase()\n                .indexOf(value.toLowerCase()) >= 0;\n        }\n    }\n};\n\n\n\n// WEBPACK FOOTER //\n// modules/defaults.ts","export * from './components';\nexport * from './tag-input.module';\n\n\n// WEBPACK FOOTER //\n// modules/index.ts","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction placeHoldersCount (b64) {\n  var len = b64.length\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // the number of equal signs (place holders)\n  // if there are two placeholders, than the two characters before it\n  // represent one byte\n  // if there is only one, then the three characters before it represent 2 bytes\n  // this is just a cheap hack to not do indexOf twice\n  return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n}\n\nfunction byteLength (b64) {\n  // base64 is 4/3 + up to two characters of the original data\n  return b64.length * 3 / 4 - placeHoldersCount(b64)\n}\n\nfunction toByteArray (b64) {\n  var i, j, l, tmp, placeHolders, arr\n  var len = b64.length\n  placeHolders = placeHoldersCount(b64)\n\n  arr = new Arr(len * 3 / 4 - placeHolders)\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  l = placeHolders > 0 ? len - 4 : len\n\n  var L = 0\n\n  for (i = 0, j = 0; i < l; i += 4, j += 3) {\n    tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]\n    arr[L++] = (tmp >> 16) & 0xFF\n    arr[L++] = (tmp >> 8) & 0xFF\n    arr[L++] = tmp & 0xFF\n  }\n\n  if (placeHolders === 2) {\n    tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[L++] = tmp & 0xFF\n  } else if (placeHolders === 1) {\n    tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[L++] = (tmp >> 8) & 0xFF\n    arr[L++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var output = ''\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    output += lookup[tmp >> 2]\n    output += lookup[(tmp << 4) & 0x3F]\n    output += '=='\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + (uint8[len - 1])\n    output += lookup[tmp >> 10]\n    output += lookup[(tmp >> 4) & 0x3F]\n    output += lookup[(tmp << 2) & 0x3F]\n    output += '='\n  }\n\n  parts.push(output)\n\n  return parts.join('')\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/base64-js/index.js\n// module id = 43\n// module chunks = 1","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n *     incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n  ? global.TYPED_ARRAY_SUPPORT\n  : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n  try {\n    var arr = new Uint8Array(1)\n    arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n    return arr.foo() === 42 && // typed array instances can be augmented\n        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n  } catch (e) {\n    return false\n  }\n}\n\nfunction kMaxLength () {\n  return Buffer.TYPED_ARRAY_SUPPORT\n    ? 0x7fffffff\n    : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n  if (kMaxLength() < length) {\n    throw new RangeError('Invalid typed array length')\n  }\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = new Uint8Array(length)\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    if (that === null) {\n      that = new Buffer(length)\n    }\n    that.length = length\n  }\n\n  return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n    return new Buffer(arg, encodingOrOffset, length)\n  }\n\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new Error(\n        'If encoding is specified then the first argument must be a string'\n      )\n    }\n    return allocUnsafe(this, arg)\n  }\n  return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n  arr.__proto__ = Buffer.prototype\n  return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n  if (typeof value === 'number') {\n    throw new TypeError('\"value\" argument must not be a number')\n  }\n\n  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n    return fromArrayBuffer(that, value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'string') {\n    return fromString(that, value, encodingOrOffset)\n  }\n\n  return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n  Buffer.prototype.__proto__ = Uint8Array.prototype\n  Buffer.__proto__ = Uint8Array\n  if (typeof Symbol !== 'undefined' && Symbol.species &&\n      Buffer[Symbol.species] === Buffer) {\n    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n    Object.defineProperty(Buffer, Symbol.species, {\n      value: null,\n      configurable: true\n    })\n  }\n}\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be a number')\n  } else if (size < 0) {\n    throw new RangeError('\"size\" argument must not be negative')\n  }\n}\n\nfunction alloc (that, size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(that, size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpretted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(that, size).fill(fill, encoding)\n      : createBuffer(that, size).fill(fill)\n  }\n  return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n  assertSize(size)\n  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) {\n    for (var i = 0; i < size; ++i) {\n      that[i] = 0\n    }\n  }\n  return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('\"encoding\" must be a valid string encoding')\n  }\n\n  var length = byteLength(string, encoding) | 0\n  that = createBuffer(that, length)\n\n  var actual = that.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    that = that.slice(0, actual)\n  }\n\n  return that\n}\n\nfunction fromArrayLike (that, array) {\n  var length = array.length < 0 ? 0 : checked(array.length) | 0\n  that = createBuffer(that, length)\n  for (var i = 0; i < length; i += 1) {\n    that[i] = array[i] & 255\n  }\n  return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n  array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\\'offset\\' is out of bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\\'length\\' is out of bounds')\n  }\n\n  if (byteOffset === undefined && length === undefined) {\n    array = new Uint8Array(array)\n  } else if (length === undefined) {\n    array = new Uint8Array(array, byteOffset)\n  } else {\n    array = new Uint8Array(array, byteOffset, length)\n  }\n\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = array\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    that = fromArrayLike(that, array)\n  }\n  return that\n}\n\nfunction fromObject (that, obj) {\n  if (Buffer.isBuffer(obj)) {\n    var len = checked(obj.length) | 0\n    that = createBuffer(that, len)\n\n    if (that.length === 0) {\n      return that\n    }\n\n    obj.copy(that, 0, 0, len)\n    return that\n  }\n\n  if (obj) {\n    if ((typeof ArrayBuffer !== 'undefined' &&\n        obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n      if (typeof obj.length !== 'number' || isnan(obj.length)) {\n        return createBuffer(that, 0)\n      }\n      return fromArrayLike(that, obj)\n    }\n\n    if (obj.type === 'Buffer' && isArray(obj.data)) {\n      return fromArrayLike(that, obj.data)\n    }\n  }\n\n  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < kMaxLength()` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= kMaxLength()) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + kMaxLength().toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError('Arguments must be Buffers')\n  }\n\n  if (a === b) return 0\n\n  var x = a.length\n  var y = b.length\n\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  var i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  var buffer = Buffer.allocUnsafe(length)\n  var pos = 0\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i]\n    if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    }\n    buf.copy(buffer, pos)\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n      (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    string = '' + string\n  }\n\n  var len = string.length\n  if (len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n      case undefined:\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) return utf8ToBytes(string).length // assume utf8\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  var loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  var i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  var len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  var len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (var i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  var len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (var i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  var length = this.length | 0\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  var str = ''\n  var max = exports.INSPECT_MAX_BYTES\n  if (this.length > 0) {\n    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n    if (this.length > max) str += ' ... '\n  }\n  return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError('Argument must be a Buffer')\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  var x = thisEnd - thisStart\n  var y = end - start\n  var len = Math.min(x, y)\n\n  var thisCopy = this.slice(thisStart, thisEnd)\n  var targetCopy = target.slice(start, end)\n\n  for (var i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset  // Coerce to Number.\n  if (isNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (Buffer.TYPED_ARRAY_SUPPORT &&\n        typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  var indexSize = 1\n  var arrLength = arr.length\n  var valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  var i\n  if (dir) {\n    var foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      var found = true\n      for (var j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  var remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  // must be an even number of digits\n  var strLen = string.length\n  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  for (var i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (isNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n  return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset | 0\n    if (isFinite(length)) {\n      length = length | 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  // legacy write(string, encoding, offset, length) - remove in v0.13\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  var remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n        return asciiWrite(this, string, offset, length)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Write(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  var res = []\n\n  var i = start\n  while (i < end) {\n    var firstByte = buf[i]\n    var codePoint = null\n    var bytesPerSequence = (firstByte > 0xEF) ? 4\n      : (firstByte > 0xDF) ? 3\n      : (firstByte > 0xBF) ? 2\n      : 1\n\n    if (i + bytesPerSequence <= end) {\n      var secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  var len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  var res = ''\n  var i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  var len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  var out = ''\n  for (var i = start; i < end; ++i) {\n    out += toHex(buf[i])\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  var bytes = buf.slice(start, end)\n  var res = ''\n  for (var i = 0; i < bytes.length; i += 2) {\n    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  var len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  var newBuf\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    newBuf = this.subarray(start, end)\n    newBuf.__proto__ = Buffer.prototype\n  } else {\n    var sliceLen = end - start\n    newBuf = new Buffer(sliceLen, undefined)\n    for (var i = 0; i < sliceLen; ++i) {\n      newBuf[i] = this[i + start]\n    }\n  }\n\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  var val = this[offset + --byteLength]\n  var mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var i = byteLength\n  var mul = 1\n  var val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var mul = 1\n  var i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n      (littleEndian ? i : 1 - i) * 8\n  }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffffffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n  }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset + 3] = (value >>> 24)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 1] = (value >>> 8)\n    this[offset] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = 0\n  var mul = 1\n  var sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  var sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 3] = (value >>> 24)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  var len = end - start\n  var i\n\n  if (this === target && start < targetStart && targetStart < end) {\n    // descending copy from end\n    for (i = len - 1; i >= 0; --i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n    // ascending copy from start\n    for (i = 0; i < len; ++i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, start + len),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (val.length === 1) {\n      var code = val.charCodeAt(0)\n      if (code < 256) {\n        val = code\n      }\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  var i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    var bytes = Buffer.isBuffer(val)\n      ? val\n      : utf8ToBytes(new Buffer(val, encoding).toString())\n    var len = bytes.length\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction stringtrim (str) {\n  if (str.trim) return str.trim()\n  return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n  if (n < 16) return '0' + n.toString(16)\n  return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  var codePoint\n  var length = string.length\n  var leadSurrogate = null\n  var bytes = []\n\n  for (var i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  var c, hi, lo\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  for (var i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\nfunction isnan (val) {\n  return val !== val // eslint-disable-line no-self-compare\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/buffer/index.js\n// module id = 44\n// module chunks = 1","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(undefined);\n// imports\n\n\n// module\nexports.push([module.id, \".dark tag:focus {\\n  box-shadow: 0 0 0 1px #323232; }\\n\\n.ng2-tag-input.bootstrap3-info {\\n  background-color: #fff;\\n  display: inline-block;\\n  color: #555;\\n  vertical-align: middle;\\n  max-width: 100%;\\n  height: 42px;\\n  line-height: 44px; }\\n\\n.ng2-tag-input.bootstrap3-info input {\\n  border: none;\\n  box-shadow: none;\\n  outline: none;\\n  background-color: transparent;\\n  padding: 0 6px;\\n  margin: 0;\\n  width: auto;\\n  max-width: inherit; }\\n\\n.ng2-tag-input.bootstrap3-info .form-control input::-moz-placeholder {\\n  color: #777;\\n  opacity: 1; }\\n\\n.ng2-tag-input.bootstrap3-info .form-control input:-ms-input-placeholder {\\n  color: #777; }\\n\\n.ng2-tag-input.bootstrap3-info .form-control input::-webkit-input-placeholder {\\n  color: #777; }\\n\\n.ng2-tag-input.bootstrap3-info input:focus {\\n  border: none;\\n  box-shadow: none; }\\n\\n.bootstrap3-info.ng2-tag-input.ng2-tag-input--focused {\\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.4);\\n  border: 1px solid #ccc; }\\n\\n.bootstrap3-info.ng2-tag-input.ng2-tag-input--invalid {\\n  box-shadow: inset 0 1px 1px #d9534f; }\\n\\n.ng2-tag-input {\\n  display: block;\\n  flex-direction: row;\\n  flex-wrap: wrap;\\n  position: relative;\\n  transition: all 0.25s;\\n  padding: 0.25rem 0;\\n  min-height: 32px;\\n  cursor: text;\\n  border-bottom: 2px solid #efefef; }\\n  .ng2-tag-input:focus {\\n    outline: 0; }\\n  .ng2-tag-input.ng2-tag-input--dropping {\\n    opacity: 0.7; }\\n  .ng2-tag-input.ng2-tag-input--focused {\\n    border-bottom: 2px solid #2196F3; }\\n  .ng2-tag-input.ng2-tag-input--invalid {\\n    border-bottom: 2px solid #f44336; }\\n  .ng2-tag-input.ng2-tag-input--loading {\\n    border: none; }\\n  .ng2-tag-input.ng2-tag-input--disabled {\\n    opacity: 0.5;\\n    cursor: not-allowed; }\\n  .ng2-tag-input form {\\n    margin: 0.1em 0; }\\n  .ng2-tag-input .ng2-tags-container {\\n    flex-wrap: wrap;\\n    display: flex; }\\n\\n.minimal.ng2-tag-input {\\n  display: block;\\n  flex-direction: row;\\n  flex-wrap: wrap;\\n  position: relative;\\n  cursor: text;\\n  border-bottom: 1px solid transparent; }\\n  .minimal.ng2-tag-input:focus {\\n    outline: 0; }\\n  .minimal.ng2-tag-input.ng2-tag-input--dropping {\\n    opacity: 0.7; }\\n  .minimal.ng2-tag-input.ng2-tag-input--loading {\\n    border: none; }\\n  .minimal.ng2-tag-input.ng2-tag-input--disabled {\\n    opacity: 0.5;\\n    cursor: not-allowed; }\\n  .minimal.ng2-tag-input .ng2-tags-container {\\n    flex-wrap: wrap;\\n    display: flex; }\\n\\n.dark.ng2-tag-input {\\n  display: block;\\n  flex-direction: row;\\n  flex-wrap: wrap;\\n  position: relative;\\n  cursor: text;\\n  border-bottom: 2px solid #444; }\\n  .dark.ng2-tag-input:focus {\\n    outline: 0; }\\n  .dark.ng2-tag-input.ng2-tag-input--dropping {\\n    opacity: 0.7; }\\n  .dark.ng2-tag-input.ng2-tag-input--loading {\\n    border: none; }\\n  .dark.ng2-tag-input.ng2-tag-input--disabled {\\n    opacity: 0.5;\\n    cursor: not-allowed; }\\n  .dark.ng2-tag-input .ng2-tags-container {\\n    flex-wrap: wrap;\\n    display: flex; }\\n\\n.bootstrap.ng2-tag-input {\\n  display: block;\\n  flex-direction: row;\\n  flex-wrap: wrap;\\n  position: relative;\\n  cursor: text;\\n  border-bottom: 2px solid #efefef; }\\n  .bootstrap.ng2-tag-input:focus {\\n    outline: 0; }\\n  .bootstrap.ng2-tag-input.ng2-tag-input--dropping {\\n    opacity: 0.7; }\\n  .bootstrap.ng2-tag-input.ng2-tag-input--focused {\\n    border-bottom: 2px solid #0275d8; }\\n  .bootstrap.ng2-tag-input.ng2-tag-input--invalid {\\n    border-bottom: 2px solid #d9534f; }\\n  .bootstrap.ng2-tag-input.ng2-tag-input--loading {\\n    border: none; }\\n  .bootstrap.ng2-tag-input.ng2-tag-input--disabled {\\n    opacity: 0.5;\\n    cursor: not-allowed; }\\n  .bootstrap.ng2-tag-input .ng2-tags-container {\\n    flex-wrap: wrap;\\n    display: flex; }\\n\\n.bootstrap3-info.ng2-tag-input {\\n  display: block;\\n  flex-direction: row;\\n  flex-wrap: wrap;\\n  position: relative;\\n  padding: 4px;\\n  cursor: text;\\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\\n  border-radius: 4px; }\\n  .bootstrap3-info.ng2-tag-input:focus {\\n    outline: 0; }\\n  .bootstrap3-info.ng2-tag-input.ng2-tag-input--dropping {\\n    opacity: 0.7; }\\n  .bootstrap3-info.ng2-tag-input.ng2-tag-input--invalid {\\n    border-bottom: 1px solid #d9534f; }\\n  .bootstrap3-info.ng2-tag-input.ng2-tag-input--loading {\\n    border: none; }\\n  .bootstrap3-info.ng2-tag-input.ng2-tag-input--disabled {\\n    opacity: 0.5;\\n    cursor: not-allowed; }\\n  .bootstrap3-info.ng2-tag-input form {\\n    margin: 0.1em 0; }\\n  .bootstrap3-info.ng2-tag-input .ng2-tags-container {\\n    flex-wrap: wrap;\\n    display: flex; }\\n\\n.error-message {\\n  font-size: 0.8em;\\n  color: #f44336;\\n  margin: 0.5em 0 0 0; }\\n\\n.bootstrap .error-message {\\n  color: #d9534f; }\\n\\n:host(delete-icon) {\\n  width: 20px;\\n  height: 16px;\\n  transition: all 0.15s;\\n  display: inline-block;\\n  text-align: right; }\\n  :host(delete-icon) path {\\n    fill: #444; }\\n  :host(delete-icon) svg {\\n    vertical-align: bottom;\\n    height: 34px; }\\n\\n:host(delete-icon):hover {\\n  transform: scale(1.5) translateY(-3px); }\\n\\n:host-context(.dark) {\\n  text-align: right; }\\n  :host-context(.dark) path {\\n    fill: #fff; }\\n  :host-context(.dark) svg {\\n    vertical-align: bottom;\\n    height: 34px; }\\n\\n:host-context(.minimal) {\\n  text-align: right; }\\n  :host-context(.minimal) path {\\n    fill: #444; }\\n  :host-context(.minimal) svg {\\n    vertical-align: bottom;\\n    height: 34px; }\\n\\n:host-context(.bootstrap) {\\n  text-align: right; }\\n  :host-context(.bootstrap) path {\\n    fill: #fff; }\\n  :host-context(.bootstrap) svg {\\n    vertical-align: bottom;\\n    height: 34px; }\\n\\n:host-context(tag:focus) path,\\n:host-context(tag:active) path {\\n  fill: #fff; }\\n\\n:host-context(.dark tag:focus) path,\\n:host-context(.dark tag:active) path {\\n  fill: #000; }\\n\\n:host-context(.minimal tag:focus) path,\\n:host-context(.minimal tag:active) path {\\n  fill: #000; }\\n\\n:host-context(.bootstrap tag:focus) path,\\n:host-context(.bootstrap tag:active) path {\\n  fill: #fff; }\\n\\n:host-context(.bootstrap3-info) {\\n  height: inherit; }\\n  :host-context(.bootstrap3-info) path {\\n    fill: #fff; }\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/sass-loader/lib/loader.js!./modules/components/icon/icon.scss\n// module id = 45\n// module chunks = 1","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(undefined);\n// imports\n\n\n// module\nexports.push([module.id, \".dark tag:focus {\\n  box-shadow: 0 0 0 1px #323232; }\\n\\n.ng2-tag-input.bootstrap3-info {\\n  background-color: #fff;\\n  display: inline-block;\\n  color: #555;\\n  vertical-align: middle;\\n  max-width: 100%;\\n  height: 42px;\\n  line-height: 44px; }\\n\\n.ng2-tag-input.bootstrap3-info input {\\n  border: none;\\n  box-shadow: none;\\n  outline: none;\\n  background-color: transparent;\\n  padding: 0 6px;\\n  margin: 0;\\n  width: auto;\\n  max-width: inherit; }\\n\\n.ng2-tag-input.bootstrap3-info .form-control input::-moz-placeholder {\\n  color: #777;\\n  opacity: 1; }\\n\\n.ng2-tag-input.bootstrap3-info .form-control input:-ms-input-placeholder {\\n  color: #777; }\\n\\n.ng2-tag-input.bootstrap3-info .form-control input::-webkit-input-placeholder {\\n  color: #777; }\\n\\n.ng2-tag-input.bootstrap3-info input:focus {\\n  border: none;\\n  box-shadow: none; }\\n\\n.bootstrap3-info.ng2-tag-input.ng2-tag-input--focused {\\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.4);\\n  border: 1px solid #ccc; }\\n\\n.bootstrap3-info.ng2-tag-input.ng2-tag-input--invalid {\\n  box-shadow: inset 0 1px 1px #d9534f; }\\n\\n.ng2-tag-input {\\n  display: block;\\n  flex-direction: row;\\n  flex-wrap: wrap;\\n  position: relative;\\n  transition: all 0.25s;\\n  padding: 0.25rem 0;\\n  min-height: 32px;\\n  cursor: text;\\n  border-bottom: 2px solid #efefef; }\\n  .ng2-tag-input:focus {\\n    outline: 0; }\\n  .ng2-tag-input.ng2-tag-input--dropping {\\n    opacity: 0.7; }\\n  .ng2-tag-input.ng2-tag-input--focused {\\n    border-bottom: 2px solid #2196F3; }\\n  .ng2-tag-input.ng2-tag-input--invalid {\\n    border-bottom: 2px solid #f44336; }\\n  .ng2-tag-input.ng2-tag-input--loading {\\n    border: none; }\\n  .ng2-tag-input.ng2-tag-input--disabled {\\n    opacity: 0.5;\\n    cursor: not-allowed; }\\n  .ng2-tag-input form {\\n    margin: 0.1em 0; }\\n  .ng2-tag-input .ng2-tags-container {\\n    flex-wrap: wrap;\\n    display: flex; }\\n\\n.minimal.ng2-tag-input {\\n  display: block;\\n  flex-direction: row;\\n  flex-wrap: wrap;\\n  position: relative;\\n  cursor: text;\\n  border-bottom: 1px solid transparent; }\\n  .minimal.ng2-tag-input:focus {\\n    outline: 0; }\\n  .minimal.ng2-tag-input.ng2-tag-input--dropping {\\n    opacity: 0.7; }\\n  .minimal.ng2-tag-input.ng2-tag-input--loading {\\n    border: none; }\\n  .minimal.ng2-tag-input.ng2-tag-input--disabled {\\n    opacity: 0.5;\\n    cursor: not-allowed; }\\n  .minimal.ng2-tag-input .ng2-tags-container {\\n    flex-wrap: wrap;\\n    display: flex; }\\n\\n.dark.ng2-tag-input {\\n  display: block;\\n  flex-direction: row;\\n  flex-wrap: wrap;\\n  position: relative;\\n  cursor: text;\\n  border-bottom: 2px solid #444; }\\n  .dark.ng2-tag-input:focus {\\n    outline: 0; }\\n  .dark.ng2-tag-input.ng2-tag-input--dropping {\\n    opacity: 0.7; }\\n  .dark.ng2-tag-input.ng2-tag-input--loading {\\n    border: none; }\\n  .dark.ng2-tag-input.ng2-tag-input--disabled {\\n    opacity: 0.5;\\n    cursor: not-allowed; }\\n  .dark.ng2-tag-input .ng2-tags-container {\\n    flex-wrap: wrap;\\n    display: flex; }\\n\\n.bootstrap.ng2-tag-input {\\n  display: block;\\n  flex-direction: row;\\n  flex-wrap: wrap;\\n  position: relative;\\n  cursor: text;\\n  border-bottom: 2px solid #efefef; }\\n  .bootstrap.ng2-tag-input:focus {\\n    outline: 0; }\\n  .bootstrap.ng2-tag-input.ng2-tag-input--dropping {\\n    opacity: 0.7; }\\n  .bootstrap.ng2-tag-input.ng2-tag-input--focused {\\n    border-bottom: 2px solid #0275d8; }\\n  .bootstrap.ng2-tag-input.ng2-tag-input--invalid {\\n    border-bottom: 2px solid #d9534f; }\\n  .bootstrap.ng2-tag-input.ng2-tag-input--loading {\\n    border: none; }\\n  .bootstrap.ng2-tag-input.ng2-tag-input--disabled {\\n    opacity: 0.5;\\n    cursor: not-allowed; }\\n  .bootstrap.ng2-tag-input .ng2-tags-container {\\n    flex-wrap: wrap;\\n    display: flex; }\\n\\n.bootstrap3-info.ng2-tag-input {\\n  display: block;\\n  flex-direction: row;\\n  flex-wrap: wrap;\\n  position: relative;\\n  padding: 4px;\\n  cursor: text;\\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\\n  border-radius: 4px; }\\n  .bootstrap3-info.ng2-tag-input:focus {\\n    outline: 0; }\\n  .bootstrap3-info.ng2-tag-input.ng2-tag-input--dropping {\\n    opacity: 0.7; }\\n  .bootstrap3-info.ng2-tag-input.ng2-tag-input--invalid {\\n    border-bottom: 1px solid #d9534f; }\\n  .bootstrap3-info.ng2-tag-input.ng2-tag-input--loading {\\n    border: none; }\\n  .bootstrap3-info.ng2-tag-input.ng2-tag-input--disabled {\\n    opacity: 0.5;\\n    cursor: not-allowed; }\\n  .bootstrap3-info.ng2-tag-input form {\\n    margin: 0.1em 0; }\\n  .bootstrap3-info.ng2-tag-input .ng2-tags-container {\\n    flex-wrap: wrap;\\n    display: flex; }\\n\\n.error-message {\\n  font-size: 0.8em;\\n  color: #f44336;\\n  margin: 0.5em 0 0 0; }\\n\\n.bootstrap .error-message {\\n  color: #d9534f; }\\n\\n.ng2-tag-input__text-input {\\n  display: inline;\\n  vertical-align: middle;\\n  border: none;\\n  padding: 0 0.5rem;\\n  height: 38px;\\n  font-size: 1em;\\n  font-family: \\\"Roboto\\\", \\\"Helvetica Neue\\\", sans-serif; }\\n  .ng2-tag-input__text-input:focus {\\n    outline: 0; }\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/sass-loader/lib/loader.js!./modules/components/tag-input-form/tag-input-form.style.scss\n// module id = 46\n// module chunks = 1","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(undefined);\n// imports\n\n\n// module\nexports.push([module.id, \".dark tag:focus {\\n  box-shadow: 0 0 0 1px #323232; }\\n\\n.ng2-tag-input.bootstrap3-info {\\n  background-color: #fff;\\n  display: inline-block;\\n  color: #555;\\n  vertical-align: middle;\\n  max-width: 100%;\\n  height: 42px;\\n  line-height: 44px; }\\n\\n.ng2-tag-input.bootstrap3-info input {\\n  border: none;\\n  box-shadow: none;\\n  outline: none;\\n  background-color: transparent;\\n  padding: 0 6px;\\n  margin: 0;\\n  width: auto;\\n  max-width: inherit; }\\n\\n.ng2-tag-input.bootstrap3-info .form-control input::-moz-placeholder {\\n  color: #777;\\n  opacity: 1; }\\n\\n.ng2-tag-input.bootstrap3-info .form-control input:-ms-input-placeholder {\\n  color: #777; }\\n\\n.ng2-tag-input.bootstrap3-info .form-control input::-webkit-input-placeholder {\\n  color: #777; }\\n\\n.ng2-tag-input.bootstrap3-info input:focus {\\n  border: none;\\n  box-shadow: none; }\\n\\n.bootstrap3-info.ng2-tag-input.ng2-tag-input--focused {\\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.4);\\n  border: 1px solid #ccc; }\\n\\n.bootstrap3-info.ng2-tag-input.ng2-tag-input--invalid {\\n  box-shadow: inset 0 1px 1px #d9534f; }\\n\\n.ng2-tag-input {\\n  display: block;\\n  flex-direction: row;\\n  flex-wrap: wrap;\\n  position: relative;\\n  transition: all 0.25s;\\n  padding: 0.25rem 0;\\n  min-height: 32px;\\n  cursor: text;\\n  border-bottom: 2px solid #efefef; }\\n  .ng2-tag-input:focus {\\n    outline: 0; }\\n  .ng2-tag-input.ng2-tag-input--dropping {\\n    opacity: 0.7; }\\n  .ng2-tag-input.ng2-tag-input--focused {\\n    border-bottom: 2px solid #2196F3; }\\n  .ng2-tag-input.ng2-tag-input--invalid {\\n    border-bottom: 2px solid #f44336; }\\n  .ng2-tag-input.ng2-tag-input--loading {\\n    border: none; }\\n  .ng2-tag-input.ng2-tag-input--disabled {\\n    opacity: 0.5;\\n    cursor: not-allowed; }\\n  .ng2-tag-input form {\\n    margin: 0.1em 0; }\\n  .ng2-tag-input .ng2-tags-container {\\n    flex-wrap: wrap;\\n    display: flex; }\\n\\n.minimal.ng2-tag-input {\\n  display: block;\\n  flex-direction: row;\\n  flex-wrap: wrap;\\n  position: relative;\\n  cursor: text;\\n  border-bottom: 1px solid transparent; }\\n  .minimal.ng2-tag-input:focus {\\n    outline: 0; }\\n  .minimal.ng2-tag-input.ng2-tag-input--dropping {\\n    opacity: 0.7; }\\n  .minimal.ng2-tag-input.ng2-tag-input--loading {\\n    border: none; }\\n  .minimal.ng2-tag-input.ng2-tag-input--disabled {\\n    opacity: 0.5;\\n    cursor: not-allowed; }\\n  .minimal.ng2-tag-input .ng2-tags-container {\\n    flex-wrap: wrap;\\n    display: flex; }\\n\\n.dark.ng2-tag-input {\\n  display: block;\\n  flex-direction: row;\\n  flex-wrap: wrap;\\n  position: relative;\\n  cursor: text;\\n  border-bottom: 2px solid #444; }\\n  .dark.ng2-tag-input:focus {\\n    outline: 0; }\\n  .dark.ng2-tag-input.ng2-tag-input--dropping {\\n    opacity: 0.7; }\\n  .dark.ng2-tag-input.ng2-tag-input--loading {\\n    border: none; }\\n  .dark.ng2-tag-input.ng2-tag-input--disabled {\\n    opacity: 0.5;\\n    cursor: not-allowed; }\\n  .dark.ng2-tag-input .ng2-tags-container {\\n    flex-wrap: wrap;\\n    display: flex; }\\n\\n.bootstrap.ng2-tag-input {\\n  display: block;\\n  flex-direction: row;\\n  flex-wrap: wrap;\\n  position: relative;\\n  cursor: text;\\n  border-bottom: 2px solid #efefef; }\\n  .bootstrap.ng2-tag-input:focus {\\n    outline: 0; }\\n  .bootstrap.ng2-tag-input.ng2-tag-input--dropping {\\n    opacity: 0.7; }\\n  .bootstrap.ng2-tag-input.ng2-tag-input--focused {\\n    border-bottom: 2px solid #0275d8; }\\n  .bootstrap.ng2-tag-input.ng2-tag-input--invalid {\\n    border-bottom: 2px solid #d9534f; }\\n  .bootstrap.ng2-tag-input.ng2-tag-input--loading {\\n    border: none; }\\n  .bootstrap.ng2-tag-input.ng2-tag-input--disabled {\\n    opacity: 0.5;\\n    cursor: not-allowed; }\\n  .bootstrap.ng2-tag-input .ng2-tags-container {\\n    flex-wrap: wrap;\\n    display: flex; }\\n\\n.bootstrap3-info.ng2-tag-input {\\n  display: block;\\n  flex-direction: row;\\n  flex-wrap: wrap;\\n  position: relative;\\n  padding: 4px;\\n  cursor: text;\\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\\n  border-radius: 4px; }\\n  .bootstrap3-info.ng2-tag-input:focus {\\n    outline: 0; }\\n  .bootstrap3-info.ng2-tag-input.ng2-tag-input--dropping {\\n    opacity: 0.7; }\\n  .bootstrap3-info.ng2-tag-input.ng2-tag-input--invalid {\\n    border-bottom: 1px solid #d9534f; }\\n  .bootstrap3-info.ng2-tag-input.ng2-tag-input--loading {\\n    border: none; }\\n  .bootstrap3-info.ng2-tag-input.ng2-tag-input--disabled {\\n    opacity: 0.5;\\n    cursor: not-allowed; }\\n  .bootstrap3-info.ng2-tag-input form {\\n    margin: 0.1em 0; }\\n  .bootstrap3-info.ng2-tag-input .ng2-tags-container {\\n    flex-wrap: wrap;\\n    display: flex; }\\n\\n.error-message {\\n  font-size: 0.8em;\\n  color: #f44336;\\n  margin: 0.5em 0 0 0; }\\n\\n.bootstrap .error-message {\\n  color: #d9534f; }\\n\\n.progress-bar, .progress-bar:before {\\n  height: 2px;\\n  width: 100%;\\n  margin: 0; }\\n\\n.progress-bar {\\n  background-color: #2196F3;\\n  display: flex;\\n  position: absolute;\\n  bottom: 0; }\\n\\n.progress-bar:before {\\n  background-color: #82c4f8;\\n  content: '';\\n  -webkit-animation: running-progress 2s cubic-bezier(0.4, 0, 0.2, 1) infinite;\\n  animation: running-progress 2s cubic-bezier(0.4, 0, 0.2, 1) infinite; }\\n\\n@-webkit-keyframes running-progress {\\n  0% {\\n    margin-left: 0;\\n    margin-right: 100%; }\\n  50% {\\n    margin-left: 25%;\\n    margin-right: 0; }\\n  100% {\\n    margin-left: 100%;\\n    margin-right: 0; } }\\n\\n@keyframes running-progress {\\n  0% {\\n    margin-left: 0;\\n    margin-right: 100%; }\\n  50% {\\n    margin-left: 25%;\\n    margin-right: 0; }\\n  100% {\\n    margin-left: 100%;\\n    margin-right: 0; } }\\n\\ntag {\\n  display: flex;\\n  flex-direction: row;\\n  flex-wrap: wrap;\\n  font-family: \\\"Roboto\\\", \\\"Helvetica Neue\\\", sans-serif;\\n  font-weight: 400;\\n  font-size: 1em;\\n  letter-spacing: 0.05rem;\\n  color: #444;\\n  border-radius: 16px;\\n  transition: all 0.3s;\\n  margin: 0.1rem 0.3rem 0.1rem 0;\\n  padding: 0.08rem 0.45rem;\\n  height: 32px;\\n  line-height: 34px;\\n  background: #efefef;\\n  user-select: none;\\n  overflow: hidden;\\n  outline: 0;\\n  cursor: pointer;\\n  position: relative; }\\n  tag:not(.readonly):not(.tag--editing):focus {\\n    background: #2196F3;\\n    color: #fff; }\\n  tag:not(.readonly):not(.tag--editing):active {\\n    background: #0d8aee;\\n    color: #fff; }\\n  tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover {\\n    background: #e2e2e2;\\n    color: initial; }\\n  tag.readonly {\\n    cursor: default; }\\n  tag.readonly:focus, tag:focus {\\n    outline: 0; }\\n  tag.tag--editing {\\n    background-color: #fff;\\n    cursor: text; }\\n\\n.minimal tag {\\n  display: flex;\\n  flex-direction: row;\\n  flex-wrap: wrap;\\n  border-radius: 0;\\n  background: #f9f9f9;\\n  user-select: none;\\n  overflow: hidden;\\n  outline: 0;\\n  cursor: pointer;\\n  position: relative; }\\n  .minimal tag:not(.readonly):not(.tag--editing):focus {\\n    background: #d0d0d0;\\n    color: initial; }\\n  .minimal tag:not(.readonly):not(.tag--editing):active {\\n    background: #d0d0d0;\\n    color: initial; }\\n  .minimal tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover {\\n    background: #ececec; }\\n  .minimal tag.readonly {\\n    cursor: default; }\\n  .minimal tag.readonly:focus, .minimal tag:focus {\\n    outline: 0; }\\n  .minimal tag.tag--editing {\\n    cursor: text; }\\n\\n.dark tag {\\n  display: flex;\\n  flex-direction: row;\\n  flex-wrap: wrap;\\n  color: #f9f9f9;\\n  border-radius: 3px;\\n  background: #444;\\n  user-select: none;\\n  overflow: hidden;\\n  outline: 0;\\n  cursor: pointer;\\n  position: relative; }\\n  .dark tag:not(.readonly):not(.tag--editing):focus {\\n    background: #efefef;\\n    color: #444; }\\n  .dark tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover {\\n    background: #2b2b2b;\\n    color: #f9f9f9; }\\n  .dark tag.readonly {\\n    cursor: default; }\\n  .dark tag.readonly:focus, .dark tag:focus {\\n    outline: 0; }\\n  .dark tag.tag--editing {\\n    cursor: text; }\\n\\n.bootstrap tag {\\n  display: flex;\\n  flex-direction: row;\\n  flex-wrap: wrap;\\n  color: #f9f9f9;\\n  border-radius: 0.25rem;\\n  background: #0275d8;\\n  user-select: none;\\n  overflow: hidden;\\n  outline: 0;\\n  cursor: pointer;\\n  position: relative; }\\n  .bootstrap tag:not(.readonly):not(.tag--editing):focus {\\n    background: #025aa5; }\\n  .bootstrap tag:not(.readonly):not(.tag--editing):active {\\n    background: #025aa5; }\\n  .bootstrap tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover {\\n    background: #0267bf;\\n    color: #f9f9f9; }\\n  .bootstrap tag.readonly {\\n    cursor: default; }\\n  .bootstrap tag.readonly:focus, .bootstrap tag:focus {\\n    outline: 0; }\\n  .bootstrap tag.tag--editing {\\n    cursor: text; }\\n\\n.bootstrap3-info tag {\\n  display: flex;\\n  flex-direction: row;\\n  flex-wrap: wrap;\\n  font-family: inherit;\\n  font-weight: 400;\\n  font-size: 95%;\\n  color: #fff;\\n  border-radius: 0.25em;\\n  background: #5bc0de;\\n  user-select: none;\\n  overflow: hidden;\\n  outline: 0;\\n  cursor: pointer;\\n  position: relative;\\n  padding: .25em .6em;\\n  text-align: center;\\n  white-space: nowrap; }\\n  .bootstrap3-info tag:not(.readonly):not(.tag--editing):focus {\\n    background: #28a1c5; }\\n  .bootstrap3-info tag:not(.readonly):not(.tag--editing):active {\\n    background: #28a1c5; }\\n  .bootstrap3-info tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover {\\n    background: #46b8da;\\n    color: #fff; }\\n  .bootstrap3-info tag.readonly {\\n    cursor: default; }\\n  .bootstrap3-info tag.readonly:focus, .bootstrap3-info tag:focus {\\n    outline: 0; }\\n  .bootstrap3-info tag.tag--editing {\\n    cursor: text; }\\n\\n:host {\\n  display: block; }\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/sass-loader/lib/loader.js!./modules/components/tag-input/tag-input.style.scss\n// module id = 47\n// module chunks = 1","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(undefined);\n// imports\n\n\n// module\nexports.push([module.id, \":host,\\n:host > div,\\n:host > div:focus {\\n  outline: 0;\\n  overflow: hidden;\\n  transition: opacity 1s;\\n  z-index: 1; }\\n\\n:host {\\n  max-width: 400px; }\\n\\n:host.blink {\\n  -webkit-animation: blink 0.3s normal forwards ease-in-out;\\n  animation: blink 0.3s normal forwards ease-in-out; }\\n\\n@keyframes blink {\\n  0% {\\n    opacity: 0.3; } }\\n\\n:host .disabled {\\n  cursor: not-allowed; }\\n\\n:host [contenteditable='true'] {\\n  outline: 0; }\\n\\n.tag-wrapper {\\n  flex-direction: row;\\n  display: flex; }\\n\\n.tag__text {\\n  overflow: hidden;\\n  text-overflow: ellipsis;\\n  white-space: nowrap; }\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/sass-loader/lib/loader.js!./modules/components/tag/tag-component.style.scss\n// module id = 48\n// module chunks = 1","module.exports = \"<ng2-dropdown>\\n    <ng2-dropdown-menu [focusFirstElement]=\\\"focusFirstElement\\\"\\n                       [appendToBody]=\\\"appendToBody\\\"\\n                       [offset]=\\\"offset\\\">\\n        <ng2-menu-item *ngFor=\\\"let item of items; let index = index; let last = last\\\"\\n                       [value]=\\\"item\\\"\\n                       [ngSwitch]=\\\"!!templates.length\\\">\\n\\n            <span *ngSwitchCase=\\\"false\\\"\\n                  [innerHTML]=\\\"item[displayBy] | highlight : tagInput.inputForm.value.value\\\">\\n            </span>\\n\\n            <ng-template *ngSwitchDefault\\n                      [ngTemplateOutlet]=\\\"templates.first\\\"\\n                      [ngOutletContext]=\\\"{ item: item, index: index, last: last }\\\">\\n            </ng-template>\\n        </ng2-menu-item>\\n    </ng2-dropdown-menu>\\n</ng2-dropdown>\\n\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./modules/components/dropdown/tag-input-dropdown.template.html\n// module id = 49\n// module chunks = 1","module.exports = \"<span>\\n    <svg height=\\\"16px\\\" viewBox=\\\"0 0 32 32\\\" width=\\\"16px\\\">\\n        <path d=\\\"M17.459,16.014l8.239-8.194c0.395-0.391,0.395-1.024,0-1.414c-0.394-0.391-1.034-0.391-1.428,0  l-8.232,8.187L7.73,6.284c-0.394-0.395-1.034-0.395-1.428,0c-0.394,0.396-0.394,1.037,0,1.432l8.302,8.303l-8.332,8.286  c-0.394,0.391-0.394,1.024,0,1.414c0.394,0.391,1.034,0.391,1.428,0l8.325-8.279l8.275,8.276c0.394,0.395,1.034,0.395,1.428,0  c0.394-0.396,0.394-1.037,0-1.432L17.459,16.014z\\\"\\n              fill=\\\"#121313\\\" />\\n    </svg>\\n</span>\\n\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./modules/components/icon/icon.html\n// module id = 50\n// module chunks = 1","module.exports = \"<!-- form -->\\n<form (submit)=\\\"submit($event)\\\" [formGroup]=\\\"form\\\">\\n    <input #input\\n\\n           type=\\\"text\\\"\\n           class=\\\"ng2-tag-input__text-input\\\"\\n           autocomplete=\\\"off\\\"\\n           tabindex=\\\"{{ disabled ? -1 : tabindex ? tabindex : 0 }}\\\"\\n           minlength=\\\"1\\\"\\n\\n           [(ngModel)]=\\\"inputText\\\"\\n           [formControlName]=\\\"'item'\\\"\\n           [ngClass]=\\\"inputClass\\\"\\n           [attr.id]=\\\"inputId\\\"\\n           [attr.placeholder]=\\\"placeholder\\\"\\n           [attr.aria-label]=\\\"placeholder\\\"\\n           [attr.tabindex]=\\\"tabindex\\\"\\n           [attr.disabled]=\\\"disabled ? disabled : null\\\"\\n\\n           (focus)=\\\"onFocus.emit($event)\\\"\\n           (blur)=\\\"onBlur.emit($event)\\\"\\n           (keydown)=\\\"onKeyDown($event)\\\"\\n           (keyup)=\\\"onKeyup.emit($event)\\\"\\n    />\\n</form>\\n\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./modules/components/tag-input-form/tag-input-form.template.html\n// module id = 51\n// module chunks = 1","module.exports = \"<!-- CONTAINER -->\\n\\n<div ngClass=\\\"ng2-tag-input {{ theme || '' }}\\\"\\n     (click)=\\\"focus(true, false)\\\"\\n     [attr.tabindex]=\\\"-1\\\"\\n\\n     (drop)=\\\"dragZone ? onTagDropped($event, undefined) : undefined\\\"\\n     (dragenter)=\\\"dragZone ? onDragOver($event) : undefined\\\"\\n     (dragover)=\\\"dragZone ? onDragOver($event) : undefined\\\"\\n     (dragleave)=\\\"dragZone ? dragProvider.onDragEnd() : undefined\\\"\\n\\n     [class.ng2-tag-input--dropping]=\\\"dragProvider.getState('isDropping')\\\"\\n     [class.ng2-tag-input--disabled]=\\\"disabled\\\"\\n     [class.ng2-tag-input--loading]=\\\"isLoading\\\"\\n     [class.ng2-tag-input--invalid]=\\\"hasErrors()\\\"\\n     [class.ng2-tag-input--focused]=\\\"isInputFocused()\\\">\\n\\n    <!-- TAGS -->\\n    <div class=\\\"ng2-tags-container\\\">\\n        <tag *ngFor=\\\"let item of items; let i = index; trackBy: trackBy\\\"\\n\\n             (onSelect)=\\\"selectItem(item)\\\"\\n             (onRemove)=\\\"onRemoveRequested(item, i)\\\"\\n             (onKeyDown)=\\\"handleKeydown($event, item)\\\"\\n             (onTagEdited)=\\\"onTagEdited.emit($event)\\\"\\n             (onBlur)=\\\"onTagBlurred($event, i)\\\"\\n             draggable=\\\"{{editable}}\\\"\\n\\n             (dragstart)=\\\"dragZone ? onDragStarted($event, item, i) : undefined\\\"\\n             (drop)=\\\"dragZone ? onTagDropped($event, i) : undefined\\\"\\n             (dragenter)=\\\"dragZone ? onDragOver($event) : undefined\\\"\\n             (dragover)=\\\"dragZone ? onDragOver($event) : undefined\\\"\\n             (dragleave)=\\\"dragZone ? dragProvider.onDragEnd() : undefined\\\"\\n\\n             [attr.tabindex]=\\\"0\\\"\\n\\n             [disabled]=\\\"disabled\\\"\\n             [@flyInOut]=\\\"'in'\\\"\\n             [hasRipple]=\\\"ripple\\\"\\n             [index]=\\\"i\\\"\\n             [removable]=\\\"removable\\\"\\n             [editable]=\\\"editable\\\"\\n             [displayBy]=\\\"displayBy\\\"\\n             [identifyBy]=\\\"identifyBy\\\"\\n             [template]=\\\"!!hasCustomTemplate() ? templates.first : undefined\\\"\\n             [draggable]=\\\"dragZone\\\"\\n             [model]=\\\"item\\\">\\n        </tag>\\n\\n        <tag-input-form\\n            (onSubmit)=\\\"onAddingRequested(false, formValue)\\\"\\n            (onBlur)=\\\"blur()\\\"\\n            (click)=\\\"dropdown ? dropdown.show() : undefined\\\"\\n            (onKeydown)=\\\"fireEvents('keydown', $event)\\\"\\n            (onKeyup)=\\\"fireEvents('keyup', $event)\\\"\\n\\n            [(inputText)]=\\\"inputText\\\"\\n            [disabled]=\\\"disabled\\\"\\n            [validators]=\\\"validators\\\"\\n            [asyncValidators]=\\\"asyncValidators\\\"\\n            [hidden]=\\\"maxItemsReached\\\"\\n            [placeholder]=\\\"items.length ? placeholder : secondaryPlaceholder\\\"\\n            [inputClass]=\\\"inputClass\\\"\\n            [inputId]=\\\"inputId\\\"\\n            [tabindex]=\\\"tabindex\\\">\\n        </tag-input-form>\\n    </div>\\n\\n    <div class=\\\"progress-bar\\\" *ngIf=\\\"isLoading\\\"></div>\\n</div>\\n\\n<!-- ERRORS -->\\n<div *ngIf=\\\"hasErrors()\\\" class=\\\"error-messages {{ theme || '' }}\\\">\\n    <p *ngFor=\\\"let error of inputForm.getErrorMessages(errorMessages)\\\" class=\\\"error-message\\\">\\n        <span>{{ error }}</span>\\n    </p>\\n</div>\\n\\n<ng-content></ng-content>\\n\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./modules/components/tag-input/tag-input.template.html\n// module id = 52\n// module chunks = 1","module.exports = \"<div (click)=\\\"select($event)\\\"\\n     (dblclick)=\\\"editable ? toggleEditMode() : null\\\"\\n     (mousedown)=\\\"rippleState='clicked'\\\"\\n     (mouseup)=\\\"rippleState='none'\\\"\\n     [ngSwitch]=\\\"!!template\\\"\\n     [class.disabled]=\\\"disabled\\\"\\n     [attr.tabindex]=\\\"-1\\\"\\n     [attr.aria-label]=\\\"getDisplayValue(model)\\\">\\n\\n    <div *ngSwitchCase=\\\"true\\\" [attr.contenteditable]=\\\"editing\\\">\\n        <!-- CUSTOM TEMPLATE -->\\n        <ng-template\\n            [ngOutletContext]=\\\"{ item: model, index: index }\\\"\\n            [ngTemplateOutlet]=\\\"template\\\">\\n        </ng-template>\\n    </div>\\n\\n    <div *ngSwitchCase=\\\"false\\\" class=\\\"tag-wrapper\\\">\\n        <!-- TAG NAME -->\\n        <div [attr.contenteditable]=\\\"editing\\\"\\n             [attr.title]=\\\"getDisplayValue(model)\\\"\\n             class=\\\"tag__text inline\\\"\\n             spellcheck=\\\"false\\\"\\n             (keydown.enter)=\\\"disableEditMode($event)\\\"\\n             (keydown.escape)=\\\"disableEditMode($event)\\\"\\n             (click)=\\\"editing ? $event.stopPropagation() : undefined\\\"\\n             (blur)=\\\"onBlurred($event)\\\">\\n            {{ getDisplayValue(model) }}\\n        </div>\\n\\n        <!-- 'X' BUTTON -->\\n        <delete-icon\\n            aria-label=\\\"Remove tag\\\"\\n            role=\\\"button\\\"\\n            (click)=\\\"remove($event)\\\"\\n            *ngIf=\\\"isDeleteIconVisible()\\\">\\n        </delete-icon>\\n    </div>\\n</div>\\n\\n<tag-ripple [state]=\\\"rippleState\\\"\\n            [attr.tabindex]=\\\"-1\\\"\\n            *ngIf=\\\"isRippleVisible\\\">\\n</tag-ripple>\\n\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./modules/components/tag/tag.template.html\n// module id = 53\n// module chunks = 1","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = nBytes * 8 - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = nBytes * 8 - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = (value * c - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/ieee754/index.js\n// module id = 54\n// module chunks = 1","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n  return toString.call(arr) == '[object Array]';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/isarray/index.js\n// module id = 55\n// module chunks = 1","\"use strict\";\n/**\n * An execution context and a data structure to order tasks and schedule their\n * execution. Provides a notion of (potentially virtual) time, through the\n * `now()` getter method.\n *\n * Each unit of work in a Scheduler is called an {@link Action}.\n *\n * ```ts\n * class Scheduler {\n *   now(): number;\n *   schedule(work, delay?, state?): Subscription;\n * }\n * ```\n *\n * @class Scheduler\n */\nvar Scheduler = (function () {\n    function Scheduler(SchedulerAction, now) {\n        if (now === void 0) { now = Scheduler.now; }\n        this.SchedulerAction = SchedulerAction;\n        this.now = now;\n    }\n    /**\n     * Schedules a function, `work`, for execution. May happen at some point in\n     * the future, according to the `delay` parameter, if specified. May be passed\n     * some context object, `state`, which will be passed to the `work` function.\n     *\n     * The given arguments will be processed an stored as an Action object in a\n     * queue of actions.\n     *\n     * @param {function(state: ?T): ?Subscription} work A function representing a\n     * task, or some unit of work to be executed by the Scheduler.\n     * @param {number} [delay] Time to wait before executing the work, where the\n     * time unit is implicit and defined by the Scheduler itself.\n     * @param {T} [state] Some contextual data that the `work` function uses when\n     * called by the Scheduler.\n     * @return {Subscription} A subscription in order to be able to unsubscribe\n     * the scheduled work.\n     */\n    Scheduler.prototype.schedule = function (work, delay, state) {\n        if (delay === void 0) { delay = 0; }\n        return new this.SchedulerAction(this, work).schedule(state, delay);\n    };\n    Scheduler.now = Date.now ? Date.now : function () { return +new Date(); };\n    return Scheduler;\n}());\nexports.Scheduler = Scheduler;\n//# sourceMappingURL=Scheduler.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/Scheduler.js\n// module id = 56\n// module chunks = 1","\"use strict\";\nvar Observable_1 = require('../../Observable');\nvar of_1 = require('../../observable/of');\nObservable_1.Observable.of = of_1.of;\n//# sourceMappingURL=of.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/add/observable/of.js\n// module id = 57\n// module chunks = 1","\"use strict\";\nvar Observable_1 = require('../../Observable');\nvar debounceTime_1 = require('../../operator/debounceTime');\nObservable_1.Observable.prototype.debounceTime = debounceTime_1.debounceTime;\n//# sourceMappingURL=debounceTime.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/add/operator/debounceTime.js\n// module id = 58\n// module chunks = 1","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n    function __() { this.constructor = d; }\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Observable_1 = require('../Observable');\nvar ScalarObservable_1 = require('./ScalarObservable');\nvar EmptyObservable_1 = require('./EmptyObservable');\nvar isScheduler_1 = require('../util/isScheduler');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar ArrayObservable = (function (_super) {\n    __extends(ArrayObservable, _super);\n    function ArrayObservable(array, scheduler) {\n        _super.call(this);\n        this.array = array;\n        this.scheduler = scheduler;\n        if (!scheduler && array.length === 1) {\n            this._isScalar = true;\n            this.value = array[0];\n        }\n    }\n    ArrayObservable.create = function (array, scheduler) {\n        return new ArrayObservable(array, scheduler);\n    };\n    /**\n     * Creates an Observable that emits some values you specify as arguments,\n     * immediately one after the other, and then emits a complete notification.\n     *\n     * <span class=\"informal\">Emits the arguments you provide, then completes.\n     * </span>\n     *\n     * <img src=\"./img/of.png\" width=\"100%\">\n     *\n     * This static operator is useful for creating a simple Observable that only\n     * emits the arguments given, and the complete notification thereafter. It can\n     * be used for composing with other Observables, such as with {@link concat}.\n     * By default, it uses a `null` IScheduler, which means the `next`\n     * notifications are sent synchronously, although with a different IScheduler\n     * it is possible to determine when those notifications will be delivered.\n     *\n     * @example <caption>Emit 10, 20, 30, then 'a', 'b', 'c', then start ticking every second.</caption>\n     * var numbers = Rx.Observable.of(10, 20, 30);\n     * var letters = Rx.Observable.of('a', 'b', 'c');\n     * var interval = Rx.Observable.interval(1000);\n     * var result = numbers.concat(letters).concat(interval);\n     * result.subscribe(x => console.log(x));\n     *\n     * @see {@link create}\n     * @see {@link empty}\n     * @see {@link never}\n     * @see {@link throw}\n     *\n     * @param {...T} values Arguments that represent `next` values to be emitted.\n     * @param {Scheduler} [scheduler] A {@link IScheduler} to use for scheduling\n     * the emissions of the `next` notifications.\n     * @return {Observable<T>} An Observable that emits each given input value.\n     * @static true\n     * @name of\n     * @owner Observable\n     */\n    ArrayObservable.of = function () {\n        var array = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            array[_i - 0] = arguments[_i];\n        }\n        var scheduler = array[array.length - 1];\n        if (isScheduler_1.isScheduler(scheduler)) {\n            array.pop();\n        }\n        else {\n            scheduler = null;\n        }\n        var len = array.length;\n        if (len > 1) {\n            return new ArrayObservable(array, scheduler);\n        }\n        else if (len === 1) {\n            return new ScalarObservable_1.ScalarObservable(array[0], scheduler);\n        }\n        else {\n            return new EmptyObservable_1.EmptyObservable(scheduler);\n        }\n    };\n    ArrayObservable.dispatch = function (state) {\n        var array = state.array, index = state.index, count = state.count, subscriber = state.subscriber;\n        if (index >= count) {\n            subscriber.complete();\n            return;\n        }\n        subscriber.next(array[index]);\n        if (subscriber.closed) {\n            return;\n        }\n        state.index = index + 1;\n        this.schedule(state);\n    };\n    ArrayObservable.prototype._subscribe = function (subscriber) {\n        var index = 0;\n        var array = this.array;\n        var count = array.length;\n        var scheduler = this.scheduler;\n        if (scheduler) {\n            return scheduler.schedule(ArrayObservable.dispatch, 0, {\n                array: array, index: index, count: count, subscriber: subscriber\n            });\n        }\n        else {\n            for (var i = 0; i < count && !subscriber.closed; i++) {\n                subscriber.next(array[i]);\n            }\n            subscriber.complete();\n        }\n    };\n    return ArrayObservable;\n}(Observable_1.Observable));\nexports.ArrayObservable = ArrayObservable;\n//# sourceMappingURL=ArrayObservable.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/observable/ArrayObservable.js\n// module id = 59\n// module chunks = 1","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n    function __() { this.constructor = d; }\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Observable_1 = require('../Observable');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar EmptyObservable = (function (_super) {\n    __extends(EmptyObservable, _super);\n    function EmptyObservable(scheduler) {\n        _super.call(this);\n        this.scheduler = scheduler;\n    }\n    /**\n     * Creates an Observable that emits no items to the Observer and immediately\n     * emits a complete notification.\n     *\n     * <span class=\"informal\">Just emits 'complete', and nothing else.\n     * </span>\n     *\n     * <img src=\"./img/empty.png\" width=\"100%\">\n     *\n     * This static operator is useful for creating a simple Observable that only\n     * emits the complete notification. It can be used for composing with other\n     * Observables, such as in a {@link mergeMap}.\n     *\n     * @example <caption>Emit the number 7, then complete.</caption>\n     * var result = Rx.Observable.empty().startWith(7);\n     * result.subscribe(x => console.log(x));\n     *\n     * @example <caption>Map and flatten only odd numbers to the sequence 'a', 'b', 'c'</caption>\n     * var interval = Rx.Observable.interval(1000);\n     * var result = interval.mergeMap(x =>\n     *   x % 2 === 1 ? Rx.Observable.of('a', 'b', 'c') : Rx.Observable.empty()\n     * );\n     * result.subscribe(x => console.log(x));\n     *\n     * // Results in the following to the console:\n     * // x is equal to the count on the interval eg(0,1,2,3,...)\n     * // x will occur every 1000ms\n     * // if x % 2 is equal to 1 print abc\n     * // if x % 2 is not equal to 1 nothing will be output\n     *\n     * @see {@link create}\n     * @see {@link never}\n     * @see {@link of}\n     * @see {@link throw}\n     *\n     * @param {Scheduler} [scheduler] A {@link IScheduler} to use for scheduling\n     * the emission of the complete notification.\n     * @return {Observable} An \"empty\" Observable: emits only the complete\n     * notification.\n     * @static true\n     * @name empty\n     * @owner Observable\n     */\n    EmptyObservable.create = function (scheduler) {\n        return new EmptyObservable(scheduler);\n    };\n    EmptyObservable.dispatch = function (arg) {\n        var subscriber = arg.subscriber;\n        subscriber.complete();\n    };\n    EmptyObservable.prototype._subscribe = function (subscriber) {\n        var scheduler = this.scheduler;\n        if (scheduler) {\n            return scheduler.schedule(EmptyObservable.dispatch, 0, { subscriber: subscriber });\n        }\n        else {\n            subscriber.complete();\n        }\n    };\n    return EmptyObservable;\n}(Observable_1.Observable));\nexports.EmptyObservable = EmptyObservable;\n//# sourceMappingURL=EmptyObservable.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/observable/EmptyObservable.js\n// module id = 60\n// module chunks = 1","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n    function __() { this.constructor = d; }\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Observable_1 = require('../Observable');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar ScalarObservable = (function (_super) {\n    __extends(ScalarObservable, _super);\n    function ScalarObservable(value, scheduler) {\n        _super.call(this);\n        this.value = value;\n        this.scheduler = scheduler;\n        this._isScalar = true;\n        if (scheduler) {\n            this._isScalar = false;\n        }\n    }\n    ScalarObservable.create = function (value, scheduler) {\n        return new ScalarObservable(value, scheduler);\n    };\n    ScalarObservable.dispatch = function (state) {\n        var done = state.done, value = state.value, subscriber = state.subscriber;\n        if (done) {\n            subscriber.complete();\n            return;\n        }\n        subscriber.next(value);\n        if (subscriber.closed) {\n            return;\n        }\n        state.done = true;\n        this.schedule(state);\n    };\n    ScalarObservable.prototype._subscribe = function (subscriber) {\n        var value = this.value;\n        var scheduler = this.scheduler;\n        if (scheduler) {\n            return scheduler.schedule(ScalarObservable.dispatch, 0, {\n                done: false, value: value, subscriber: subscriber\n            });\n        }\n        else {\n            subscriber.next(value);\n            if (!subscriber.closed) {\n                subscriber.complete();\n            }\n        }\n    };\n    return ScalarObservable;\n}(Observable_1.Observable));\nexports.ScalarObservable = ScalarObservable;\n//# sourceMappingURL=ScalarObservable.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/observable/ScalarObservable.js\n// module id = 61\n// module chunks = 1","\"use strict\";\nvar ArrayObservable_1 = require('./ArrayObservable');\nexports.of = ArrayObservable_1.ArrayObservable.of;\n//# sourceMappingURL=of.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/observable/of.js\n// module id = 62\n// module chunks = 1","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n    function __() { this.constructor = d; }\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscriber_1 = require('../Subscriber');\nvar async_1 = require('../scheduler/async');\n/**\n * Emits a value from the source Observable only after a particular time span\n * has passed without another source emission.\n *\n * <span class=\"informal\">It's like {@link delay}, but passes only the most\n * recent value from each burst of emissions.</span>\n *\n * <img src=\"./img/debounceTime.png\" width=\"100%\">\n *\n * `debounceTime` delays values emitted by the source Observable, but drops\n * previous pending delayed emissions if a new value arrives on the source\n * Observable. This operator keeps track of the most recent value from the\n * source Observable, and emits that only when `dueTime` enough time has passed\n * without any other value appearing on the source Observable. If a new value\n * appears before `dueTime` silence occurs, the previous value will be dropped\n * and will not be emitted on the output Observable.\n *\n * This is a rate-limiting operator, because it is impossible for more than one\n * value to be emitted in any time window of duration `dueTime`, but it is also\n * a delay-like operator since output emissions do not occur at the same time as\n * they did on the source Observable. Optionally takes a {@link IScheduler} for\n * managing timers.\n *\n * @example <caption>Emit the most recent click after a burst of clicks</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.debounceTime(1000);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link auditTime}\n * @see {@link debounce}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttleTime}\n *\n * @param {number} dueTime The timeout duration in milliseconds (or the time\n * unit determined internally by the optional `scheduler`) for the window of\n * time required to wait for emission silence before emitting the most recent\n * source value.\n * @param {Scheduler} [scheduler=async] The {@link IScheduler} to use for\n * managing the timers that handle the timeout for each value.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by the specified `dueTime`, and may drop some values if they occur\n * too frequently.\n * @method debounceTime\n * @owner Observable\n */\nfunction debounceTime(dueTime, scheduler) {\n    if (scheduler === void 0) { scheduler = async_1.async; }\n    return this.lift(new DebounceTimeOperator(dueTime, scheduler));\n}\nexports.debounceTime = debounceTime;\nvar DebounceTimeOperator = (function () {\n    function DebounceTimeOperator(dueTime, scheduler) {\n        this.dueTime = dueTime;\n        this.scheduler = scheduler;\n    }\n    DebounceTimeOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new DebounceTimeSubscriber(subscriber, this.dueTime, this.scheduler));\n    };\n    return DebounceTimeOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar DebounceTimeSubscriber = (function (_super) {\n    __extends(DebounceTimeSubscriber, _super);\n    function DebounceTimeSubscriber(destination, dueTime, scheduler) {\n        _super.call(this, destination);\n        this.dueTime = dueTime;\n        this.scheduler = scheduler;\n        this.debouncedSubscription = null;\n        this.lastValue = null;\n        this.hasValue = false;\n    }\n    DebounceTimeSubscriber.prototype._next = function (value) {\n        this.clearDebounce();\n        this.lastValue = value;\n        this.hasValue = true;\n        this.add(this.debouncedSubscription = this.scheduler.schedule(dispatchNext, this.dueTime, this));\n    };\n    DebounceTimeSubscriber.prototype._complete = function () {\n        this.debouncedNext();\n        this.destination.complete();\n    };\n    DebounceTimeSubscriber.prototype.debouncedNext = function () {\n        this.clearDebounce();\n        if (this.hasValue) {\n            this.destination.next(this.lastValue);\n            this.lastValue = null;\n            this.hasValue = false;\n        }\n    };\n    DebounceTimeSubscriber.prototype.clearDebounce = function () {\n        var debouncedSubscription = this.debouncedSubscription;\n        if (debouncedSubscription !== null) {\n            this.remove(debouncedSubscription);\n            debouncedSubscription.unsubscribe();\n            this.debouncedSubscription = null;\n        }\n    };\n    return DebounceTimeSubscriber;\n}(Subscriber_1.Subscriber));\nfunction dispatchNext(subscriber) {\n    subscriber.debouncedNext();\n}\n//# sourceMappingURL=debounceTime.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/operator/debounceTime.js\n// module id = 63\n// module chunks = 1","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n    function __() { this.constructor = d; }\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscriber_1 = require('../Subscriber');\n/* tslint:enable:max-line-length */\n/**\n * Filter items emitted by the source Observable by only emitting those that\n * satisfy a specified predicate.\n *\n * <span class=\"informal\">Like\n * [Array.prototype.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter),\n * it only emits a value from the source if it passes a criterion function.</span>\n *\n * <img src=\"./img/filter.png\" width=\"100%\">\n *\n * Similar to the well-known `Array.prototype.filter` method, this operator\n * takes values from the source Observable, passes them through a `predicate`\n * function and only emits those values that yielded `true`.\n *\n * @example <caption>Emit only click events whose target was a DIV element</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var clicksOnDivs = clicks.filter(ev => ev.target.tagName === 'DIV');\n * clicksOnDivs.subscribe(x => console.log(x));\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n * @see {@link ignoreElements}\n * @see {@link partition}\n * @see {@link skip}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted, if `false` the value is not passed to the output\n * Observable. The `index` parameter is the number `i` for the i-th source\n * emission that has happened since the subscription, starting from the number\n * `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable} An Observable of values from the source that were\n * allowed by the `predicate` function.\n * @method filter\n * @owner Observable\n */\nfunction filter(predicate, thisArg) {\n    return this.lift(new FilterOperator(predicate, thisArg));\n}\nexports.filter = filter;\nvar FilterOperator = (function () {\n    function FilterOperator(predicate, thisArg) {\n        this.predicate = predicate;\n        this.thisArg = thisArg;\n    }\n    FilterOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));\n    };\n    return FilterOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar FilterSubscriber = (function (_super) {\n    __extends(FilterSubscriber, _super);\n    function FilterSubscriber(destination, predicate, thisArg) {\n        _super.call(this, destination);\n        this.predicate = predicate;\n        this.thisArg = thisArg;\n        this.count = 0;\n        this.predicate = predicate;\n    }\n    // the try catch block below is left specifically for\n    // optimization and perf reasons. a tryCatcher is not necessary here.\n    FilterSubscriber.prototype._next = function (value) {\n        var result;\n        try {\n            result = this.predicate.call(this.thisArg, value, this.count++);\n        }\n        catch (err) {\n            this.destination.error(err);\n            return;\n        }\n        if (result) {\n            this.destination.next(value);\n        }\n    };\n    return FilterSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=filter.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/operator/filter.js\n// module id = 64\n// module chunks = 1","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n    function __() { this.constructor = d; }\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscriber_1 = require('../Subscriber');\n/**\n * Applies a given `project` function to each value emitted by the source\n * Observable, and emits the resulting values as an Observable.\n *\n * <span class=\"informal\">Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map),\n * it passes each source value through a transformation function to get\n * corresponding output values.</span>\n *\n * <img src=\"./img/map.png\" width=\"100%\">\n *\n * Similar to the well known `Array.prototype.map` function, this operator\n * applies a projection to each value and emits that projection in the output\n * Observable.\n *\n * @example <caption>Map every every click to the clientX position of that click</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var positions = clicks.map(ev => ev.clientX);\n * positions.subscribe(x => console.log(x));\n *\n * @see {@link mapTo}\n * @see {@link pluck}\n *\n * @param {function(value: T, index: number): R} project The function to apply\n * to each `value` emitted by the source Observable. The `index` parameter is\n * the number `i` for the i-th emission that has happened since the\n * subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to define what `this` is in the\n * `project` function.\n * @return {Observable<R>} An Observable that emits the values from the source\n * Observable transformed by the given `project` function.\n * @method map\n * @owner Observable\n */\nfunction map(project, thisArg) {\n    if (typeof project !== 'function') {\n        throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n    }\n    return this.lift(new MapOperator(project, thisArg));\n}\nexports.map = map;\nvar MapOperator = (function () {\n    function MapOperator(project, thisArg) {\n        this.project = project;\n        this.thisArg = thisArg;\n    }\n    MapOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n    };\n    return MapOperator;\n}());\nexports.MapOperator = MapOperator;\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar MapSubscriber = (function (_super) {\n    __extends(MapSubscriber, _super);\n    function MapSubscriber(destination, project, thisArg) {\n        _super.call(this, destination);\n        this.project = project;\n        this.count = 0;\n        this.thisArg = thisArg || this;\n    }\n    // NOTE: This looks unoptimized, but it's actually purposefully NOT\n    // using try/catch optimizations.\n    MapSubscriber.prototype._next = function (value) {\n        var result;\n        try {\n            result = this.project.call(this.thisArg, value, this.count++);\n        }\n        catch (err) {\n            this.destination.error(err);\n            return;\n        }\n        this.destination.next(result);\n    };\n    return MapSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=map.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/operator/map.js\n// module id = 65\n// module chunks = 1","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n    function __() { this.constructor = d; }\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscription_1 = require('../Subscription');\n/**\n * A unit of work to be executed in a {@link Scheduler}. An action is typically\n * created from within a Scheduler and an RxJS user does not need to concern\n * themselves about creating and manipulating an Action.\n *\n * ```ts\n * class Action<T> extends Subscription {\n *   new (scheduler: Scheduler, work: (state?: T) => void);\n *   schedule(state?: T, delay: number = 0): Subscription;\n * }\n * ```\n *\n * @class Action<T>\n */\nvar Action = (function (_super) {\n    __extends(Action, _super);\n    function Action(scheduler, work) {\n        _super.call(this);\n    }\n    /**\n     * Schedules this action on its parent Scheduler for execution. May be passed\n     * some context object, `state`. May happen at some point in the future,\n     * according to the `delay` parameter, if specified.\n     * @param {T} [state] Some contextual data that the `work` function uses when\n     * called by the Scheduler.\n     * @param {number} [delay] Time to wait before executing the work, where the\n     * time unit is implicit and defined by the Scheduler.\n     * @return {void}\n     */\n    Action.prototype.schedule = function (state, delay) {\n        if (delay === void 0) { delay = 0; }\n        return this;\n    };\n    return Action;\n}(Subscription_1.Subscription));\nexports.Action = Action;\n//# sourceMappingURL=Action.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/scheduler/Action.js\n// module id = 66\n// module chunks = 1","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n    function __() { this.constructor = d; }\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar root_1 = require('../util/root');\nvar Action_1 = require('./Action');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar AsyncAction = (function (_super) {\n    __extends(AsyncAction, _super);\n    function AsyncAction(scheduler, work) {\n        _super.call(this, scheduler, work);\n        this.scheduler = scheduler;\n        this.work = work;\n        this.pending = false;\n    }\n    AsyncAction.prototype.schedule = function (state, delay) {\n        if (delay === void 0) { delay = 0; }\n        if (this.closed) {\n            return this;\n        }\n        // Always replace the current state with the new state.\n        this.state = state;\n        // Set the pending flag indicating that this action has been scheduled, or\n        // has recursively rescheduled itself.\n        this.pending = true;\n        var id = this.id;\n        var scheduler = this.scheduler;\n        //\n        // Important implementation note:\n        //\n        // Actions only execute once by default, unless rescheduled from within the\n        // scheduled callback. This allows us to implement single and repeat\n        // actions via the same code path, without adding API surface area, as well\n        // as mimic traditional recursion but across asynchronous boundaries.\n        //\n        // However, JS runtimes and timers distinguish between intervals achieved by\n        // serial `setTimeout` calls vs. a single `setInterval` call. An interval of\n        // serial `setTimeout` calls can be individually delayed, which delays\n        // scheduling the next `setTimeout`, and so on. `setInterval` attempts to\n        // guarantee the interval callback will be invoked more precisely to the\n        // interval period, regardless of load.\n        //\n        // Therefore, we use `setInterval` to schedule single and repeat actions.\n        // If the action reschedules itself with the same delay, the interval is not\n        // canceled. If the action doesn't reschedule, or reschedules with a\n        // different delay, the interval will be canceled after scheduled callback\n        // execution.\n        //\n        if (id != null) {\n            this.id = this.recycleAsyncId(scheduler, id, delay);\n        }\n        this.delay = delay;\n        // If this action has already an async Id, don't request a new one.\n        this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n        return this;\n    };\n    AsyncAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n        if (delay === void 0) { delay = 0; }\n        return root_1.root.setInterval(scheduler.flush.bind(scheduler, this), delay);\n    };\n    AsyncAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n        if (delay === void 0) { delay = 0; }\n        // If this action is rescheduled with the same delay time, don't clear the interval id.\n        if (delay !== null && this.delay === delay) {\n            return id;\n        }\n        // Otherwise, if the action's delay time is different from the current delay,\n        // clear the interval id\n        return root_1.root.clearInterval(id) && undefined || undefined;\n    };\n    /**\n     * Immediately executes this action and the `work` it contains.\n     * @return {any}\n     */\n    AsyncAction.prototype.execute = function (state, delay) {\n        if (this.closed) {\n            return new Error('executing a cancelled action');\n        }\n        this.pending = false;\n        var error = this._execute(state, delay);\n        if (error) {\n            return error;\n        }\n        else if (this.pending === false && this.id != null) {\n            // Dequeue if the action didn't reschedule itself. Don't call\n            // unsubscribe(), because the action could reschedule later.\n            // For example:\n            // ```\n            // scheduler.schedule(function doWork(counter) {\n            //   /* ... I'm a busy worker bee ... */\n            //   var originalAction = this;\n            //   /* wait 100ms before rescheduling the action */\n            //   setTimeout(function () {\n            //     originalAction.schedule(counter + 1);\n            //   }, 100);\n            // }, 1000);\n            // ```\n            this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n        }\n    };\n    AsyncAction.prototype._execute = function (state, delay) {\n        var errored = false;\n        var errorValue = undefined;\n        try {\n            this.work(state);\n        }\n        catch (e) {\n            errored = true;\n            errorValue = !!e && e || new Error(e);\n        }\n        if (errored) {\n            this.unsubscribe();\n            return errorValue;\n        }\n    };\n    AsyncAction.prototype._unsubscribe = function () {\n        var id = this.id;\n        var scheduler = this.scheduler;\n        var actions = scheduler.actions;\n        var index = actions.indexOf(this);\n        this.work = null;\n        this.delay = null;\n        this.state = null;\n        this.pending = false;\n        this.scheduler = null;\n        if (index !== -1) {\n            actions.splice(index, 1);\n        }\n        if (id != null) {\n            this.id = this.recycleAsyncId(scheduler, id, null);\n        }\n    };\n    return AsyncAction;\n}(Action_1.Action));\nexports.AsyncAction = AsyncAction;\n//# sourceMappingURL=AsyncAction.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/scheduler/AsyncAction.js\n// module id = 67\n// module chunks = 1","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n    function __() { this.constructor = d; }\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Scheduler_1 = require('../Scheduler');\nvar AsyncScheduler = (function (_super) {\n    __extends(AsyncScheduler, _super);\n    function AsyncScheduler() {\n        _super.apply(this, arguments);\n        this.actions = [];\n        /**\n         * A flag to indicate whether the Scheduler is currently executing a batch of\n         * queued actions.\n         * @type {boolean}\n         */\n        this.active = false;\n        /**\n         * An internal ID used to track the latest asynchronous task such as those\n         * coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and\n         * others.\n         * @type {any}\n         */\n        this.scheduled = undefined;\n    }\n    AsyncScheduler.prototype.flush = function (action) {\n        var actions = this.actions;\n        if (this.active) {\n            actions.push(action);\n            return;\n        }\n        var error;\n        this.active = true;\n        do {\n            if (error = action.execute(action.state, action.delay)) {\n                break;\n            }\n        } while (action = actions.shift()); // exhaust the scheduler queue\n        this.active = false;\n        if (error) {\n            while (action = actions.shift()) {\n                action.unsubscribe();\n            }\n            throw error;\n        }\n    };\n    return AsyncScheduler;\n}(Scheduler_1.Scheduler));\nexports.AsyncScheduler = AsyncScheduler;\n//# sourceMappingURL=AsyncScheduler.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/scheduler/AsyncScheduler.js\n// module id = 68\n// module chunks = 1","\"use strict\";\nvar AsyncAction_1 = require('./AsyncAction');\nvar AsyncScheduler_1 = require('./AsyncScheduler');\n/**\n *\n * Async Scheduler\n *\n * <span class=\"informal\">Schedule task as if you used setTimeout(task, duration)</span>\n *\n * `async` scheduler schedules tasks asynchronously, by putting them on the JavaScript\n * event loop queue. It is best used to delay tasks in time or to schedule tasks repeating\n * in intervals.\n *\n * If you just want to \"defer\" task, that is to perform it right after currently\n * executing synchronous code ends (commonly achieved by `setTimeout(deferredTask, 0)`),\n * better choice will be the {@link asap} scheduler.\n *\n * @example <caption>Use async scheduler to delay task</caption>\n * const task = () => console.log('it works!');\n *\n * Rx.Scheduler.async.schedule(task, 2000);\n *\n * // After 2 seconds logs:\n * // \"it works!\"\n *\n *\n * @example <caption>Use async scheduler to repeat task in intervals</caption>\n * function task(state) {\n *   console.log(state);\n *   this.schedule(state + 1, 1000); // `this` references currently executing Action,\n *                                   // which we reschedule with new state and delay\n * }\n *\n * Rx.Scheduler.async.schedule(task, 3000, 0);\n *\n * // Logs:\n * // 0 after 3s\n * // 1 after 4s\n * // 2 after 5s\n * // 3 after 6s\n *\n * @static true\n * @name async\n * @owner Scheduler\n */\nexports.async = new AsyncScheduler_1.AsyncScheduler(AsyncAction_1.AsyncAction);\n//# sourceMappingURL=async.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/scheduler/async.js\n// module id = 69\n// module chunks = 1","\"use strict\";\nvar root_1 = require('../util/root');\nfunction getSymbolObservable(context) {\n    var $$observable;\n    var Symbol = context.Symbol;\n    if (typeof Symbol === 'function') {\n        if (Symbol.observable) {\n            $$observable = Symbol.observable;\n        }\n        else {\n            $$observable = Symbol('observable');\n            Symbol.observable = $$observable;\n        }\n    }\n    else {\n        $$observable = '@@observable';\n    }\n    return $$observable;\n}\nexports.getSymbolObservable = getSymbolObservable;\nexports.$$observable = getSymbolObservable(root_1.root);\n//# sourceMappingURL=observable.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/symbol/observable.js\n// module id = 70\n// module chunks = 1","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n    function __() { this.constructor = d; }\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nvar UnsubscriptionError = (function (_super) {\n    __extends(UnsubscriptionError, _super);\n    function UnsubscriptionError(errors) {\n        _super.call(this);\n        this.errors = errors;\n        var err = Error.call(this, errors ?\n            errors.length + \" errors occurred during unsubscription:\\n  \" + errors.map(function (err, i) { return ((i + 1) + \") \" + err.toString()); }).join('\\n  ') : '');\n        this.name = err.name = 'UnsubscriptionError';\n        this.stack = err.stack;\n        this.message = err.message;\n    }\n    return UnsubscriptionError;\n}(Error));\nexports.UnsubscriptionError = UnsubscriptionError;\n//# sourceMappingURL=UnsubscriptionError.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/util/UnsubscriptionError.js\n// module id = 71\n// module chunks = 1","\"use strict\";\nexports.isArray = Array.isArray || (function (x) { return x && typeof x.length === 'number'; });\n//# sourceMappingURL=isArray.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/util/isArray.js\n// module id = 72\n// module chunks = 1","\"use strict\";\nfunction isObject(x) {\n    return x != null && typeof x === 'object';\n}\nexports.isObject = isObject;\n//# sourceMappingURL=isObject.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/util/isObject.js\n// module id = 73\n// module chunks = 1","\"use strict\";\nfunction isScheduler(value) {\n    return value && typeof value.schedule === 'function';\n}\nexports.isScheduler = isScheduler;\n//# sourceMappingURL=isScheduler.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/util/isScheduler.js\n// module id = 74\n// module chunks = 1","\"use strict\";\nvar Subscriber_1 = require('../Subscriber');\nvar rxSubscriber_1 = require('../symbol/rxSubscriber');\nvar Observer_1 = require('../Observer');\nfunction toSubscriber(nextOrObserver, error, complete) {\n    if (nextOrObserver) {\n        if (nextOrObserver instanceof Subscriber_1.Subscriber) {\n            return nextOrObserver;\n        }\n        if (nextOrObserver[rxSubscriber_1.$$rxSubscriber]) {\n            return nextOrObserver[rxSubscriber_1.$$rxSubscriber]();\n        }\n    }\n    if (!nextOrObserver && !error && !complete) {\n        return new Subscriber_1.Subscriber(Observer_1.empty);\n    }\n    return new Subscriber_1.Subscriber(nextOrObserver, error, complete);\n}\nexports.toSubscriber = toSubscriber;\n//# sourceMappingURL=toSubscriber.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/util/toSubscriber.js\n// module id = 75\n// module chunks = 1","\"use strict\";\nvar errorObject_1 = require('./errorObject');\nvar tryCatchTarget;\nfunction tryCatcher() {\n    try {\n        return tryCatchTarget.apply(this, arguments);\n    }\n    catch (e) {\n        errorObject_1.errorObject.e = e;\n        return errorObject_1.errorObject;\n    }\n}\nfunction tryCatch(fn) {\n    tryCatchTarget = fn;\n    return tryCatcher;\n}\nexports.tryCatch = tryCatch;\n;\n//# sourceMappingURL=tryCatch.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/rxjs/util/tryCatch.js\n// module id = 76\n// module chunks = 1","\n        var result = require(\"!!./../../../node_modules/css-loader/index.js!./../../../node_modules/sass-loader/lib/loader.js!./icon.scss\");\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    \n\n\n//////////////////\n// WEBPACK FOOTER\n// ./modules/components/icon/icon.scss\n// module id = 77\n// module chunks = 1","\n        var result = require(\"!!./../../../node_modules/css-loader/index.js!./../../../node_modules/sass-loader/lib/loader.js!./tag-input-form.style.scss\");\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    \n\n\n//////////////////\n// WEBPACK FOOTER\n// ./modules/components/tag-input-form/tag-input-form.style.scss\n// module id = 78\n// module chunks = 1","\n        var result = require(\"!!./../../../node_modules/css-loader/index.js!./../../../node_modules/sass-loader/lib/loader.js!./tag-input.style.scss\");\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    \n\n\n//////////////////\n// WEBPACK FOOTER\n// ./modules/components/tag-input/tag-input.style.scss\n// module id = 79\n// module chunks = 1","\n        var result = require(\"!!./../../../node_modules/css-loader/index.js!./../../../node_modules/sass-loader/lib/loader.js!./tag-component.style.scss\");\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    \n\n\n//////////////////\n// WEBPACK FOOTER\n// ./modules/components/tag/tag-component.style.scss\n// module id = 80\n// module chunks = 1"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A;;;;ACjJA;;;;;;;ACCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC1IA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;;;;;ACJA;;;;;;ACCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpBA;;;;;;;ACKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;ACzBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;;;;;;;;ACNA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;;ACDA;;;;;;;ACCA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChMA;AACA;AACA;AACA;AACA;;;;;;;ACJA;AACA;AACA;AACA;AACA;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACLA;AACA;AACA;AACA;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AAEA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAeA;AAAA;AAQA;AAHA;AACA;AACA;AACA;AAAA;AARA;AAbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;;;;;;;;;ACxCA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;AAgBA;AACA;AAEA;AACA;AACA;AAEA;AAMA;AAkHA;AAAA;AAAA;AAjGA;AAMA;AAOA;AAYA;AAMA;AAKA;AAKA;AAMA;AAMA;AAOA;AAOA;AAqGA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AAyBA;AACA;AACA;AACA;AAEA;AAGA;AAGA;AACA;AAkDA;AACA;AACA;AAqBA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAtOA;AAxBA;AASA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AACA;AACA;AAtBA;AACA;AACA;;;AAAA;AA2BA;AAAA;AACA;AACA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AAMA;AAAA;AACA;AACA;;;AAAA;AAMA;AACA;AACA;AAMA;AACA;AACA;AAMA;AAAA;AACA;AACA;;;AAAA;AAMA;AAAA;AACA;AACA;;;AAAA;AA2CA;AACA;AACA;AACA;AAEA;AACA;AAKA;AACA;AACA;AAyBA;AACA;AACA;AAEA;;AAKA;AAOA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAKA;AACA;AACA;AAaA;AAAA;AACA;AACA;AACA;AACA;AACA;;AACA;AAEA;AACA;AA+BA;AACA;AAEA;AACA;AACA;AAAA;AAhWA;AAAA;AAAA;AAAA;AAOA;AAAA;AAAA;AAAA;AAMA;AAAA;;AAAA;AAMA;AAAA;;AAAA;AAOA;AAAA;;AAAA;AAMA;AAAA;;AAAA;AAMA;AAAA;;AAAA;AAMA;AAAA;;AAAA;AAKA;AAAA;;AAAA;AAKA;AAAA;;AAAA;AAMA;AAAA;;AAAA;AAMA;AAAA;;AAAA;AA6BA;AAAA;;;AAaA;AA8GA;AADA;;;;AAOA;AApOA;AAJA;AACA;AACA;AACA;AAmHA;AAAA;AAlHA;AAAA;;;;;;;;;;;;;;;;;AC7BA;AAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AALA;AACA;AACA;AACA;AACA;AACA;AAAA;;;;;;;;ACPA;AAAA;AAAA;;;;;;;;ACAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;ACAA;AAQA;AAcA;AALA;AAUA;AAMA;AAMA;AAMA;AAMA;AAcA;AAOA;AA0BA;AAKA;AAyBA;AAKA;AA2FA;AAvIA;AAAA;AACA;AACA;AAkBA;AACA;AACA;AACA;;;AArBA;AA4CA;AAEA;AACA;AACA;AACA;AAMA;AAAA;AACA;AACA;;;AAAA;AAMA;AACA;AACA;AAOA;AAAA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AAKA;AACA;AACA;AAMA;AACA;AACA;AAMA;AACA;AACA;AACA;AAMA;AACA;AACA;AAKA;AACA;AACA;AACA;AAAA;AArMA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AAQA;AAAA;;AAAA;AAMA;AAAA;;AAAA;AAOA;AAAA;;AAAA;AAMA;AAAA;;AAAA;AAMA;AAAA;;AAAA;AAKA;AAAA;;;AAEA;AAOA;AAAA;;AAAA;AAKA;AAAA;;AAAA;AAcA;AAAA;;AAAA;AAWA;AAAA;AAAA;AAAA;AA1GA;AALA;AACA;AACA;AACA;AACA;AACA;AAAA;;;;;;;;ACtBA;AAAA;AAAA;AAAA;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClCA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACCA;AAmBA;AAQA;AACA;AACA;AACA;AACA;AAGA;AAOA;AAOA;AAMA;AAIA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAYA;AAAA;AAmVA;AAAA;AAAA;AACA;AA9UA;AAOA;AAOA;AAOA;AAOA;AAOA;AAOA;AAOA;AAMA;AAMA;AAMA;AAMA;AAKA;AAMA;AAMA;AAKA;AAKA;AAMA;AAMA;AAMA;AAMA;AAMA;AAOA;AAMA;AAaA;AAOA;AAMA;AAMA;AAMA;AAMA;AAOA;AAOA;AAOA;AAOA;AAOA;AAOA;AAOA;AAOA;AAOA;AA+BA;AAsBA;AACA;AACA;AACA;AACA;AAOA;AAOA;AAkGA;AAAA;AACA;AACA;AAEA;AACA;AAOA;AACA;AACA;AACA;AAEA;;AAKA;;;AAzGA;AA5LA;AAAA;AACA;AACA;AAyIA;AACA;AACA;AACA;;;AA5IA;AAmLA;AAAA;AACA;AACA;;;AAAA;AAYA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAOA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAOA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAGA;AAGA;AACA;AAEA;AACA;AAoCA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAQA;AAAA;AACA;AACA;AACA;AAOA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAOA;AACA;AAGA;AACA;AAMA;AACA;AACA;AAOA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAKA;AACA;AAEA;AACA;AAMA;AACA;AACA;AAMA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AAEA;AACA;AAMA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAMA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAMA;AAAA;AACA;AACA;AACA;;;AAAA;AAMA;AAAA;AACA;AACA;;;AAAA;AAKA;AAIA;AACA;AACA;AAEA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AAOA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAMA;AACA;AACA;AAEA;AACA;AAOA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAKA;AAGA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AAGA;AACA;AACA;AAGA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AAOA;AACA;AACA;AAQA;AACA;AAGA;AACA;AACA;AAGA;AAGA;AACA;AAQA;AAAA;AAAA;AAAA;AACA;AAKA;AAEA;AAGA;AACA;AAOA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAMA;AACA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAKA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAKA;AACA;AAGA;AACA;AAKA;AAAA;AACA;AACA;AACA;AACA;AAKA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAQA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AA16BA;AAAA;;AAAA;AAOA;AAAA;;AAAA;AAOA;AAAA;;AAAA;AAOA;AAAA;;AAAA;AAOA;AAAA;;AAAA;AAOA;AAAA;;AAAA;AAOA;AAAA;;AAAA;AAOA;AAAA;;AAAA;AAMA;AAAA;;AAAA;AAMA;AAAA;;AAAA;AAMA;AAAA;;AAAA;AAMA;AAAA;;AAAA;AAKA;AAAA;;AAAA;AAMA;AAAA;;AAAA;AAMA;AAAA;;AAAA;AAKA;AAAA;;AAAA;AAKA;AAAA;;AAAA;AAMA;AAAA;;AAAA;AAMA;AAAA;;AAAA;AAMA;AAAA;;AAAA;AAMA;AAAA;;AAAA;AAMA;AAAA;;AAAA;AAOA;AAAA;;AAAA;AAMA;AAAA;;AAAA;AAKA;AAAA;;;AAEA;AAMA;AAAA;;AAAA;AAOA;AAAA;;AAAA;AAMA;AAAA;;AAAA;AAMA;AAAA;;AAAA;AAMA;AAAA;;AAAA;AAMA;AAAA;;AAAA;AAOA;AAAA;;AAAA;AAOA;AAAA;;AAAA;AAOA;AAAA;;AAAA;AAOA;AAAA;;AAAA;AAOA;AAAA;;AAAA;AAOA;AAAA;;AAAA;AAOA;AAAA;;AAAA;AAOA;AAAA;;AAAA;AAOA;AAAA;;AAAA;AAKA;AAAA;AAAA;AAAA;AAOA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAkBA;AAAA;AAAA;AAAA;AAeA;AADA;;;AAGA;AAjVA;AAPA;AACA;AACA;AACA;AACA;AACA;AACA;AAoVA;AACA;AApVA;AAAA;;;;;;;;;;;;;;;;;;;;;AC/EA;AA+CA;AApCA;AAqCA;AACA;AAAA;AAAA;AADA;AAAA;;AAAA;AADA;AApCA;AACA;AACA;AAkBA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;;;;;;;;;;;;;;;;;;;;;AC/CA;AAcA;AAIA;AACA;AAGA;AACA;AACA;AACA;AAEA;AAOA;AAoGA;AAAA;AACA;AACA;AA1DA;AAMA;AAMA;AAMA;AAMA;AAMA;AAaA;AAMA;AASA;AAvBA;AAAA;AACA;AACA;;;AAAA;AAAA;AA0BA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AAKA;AACA;AACA;AACA;AAKA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AAEA;AACA;AAKA;AACA;AACA;AAEA;AACA;AAKA;AACA;AACA;AAMA;AAGA;AACA;AACA;AAGA;AAEA;AACA;;AACA;AAOA;AACA;AACA;AAQA;AAAA;AACA;AACA;AACA;AACA;AACA;;;AAAA;AAMA;AACA;AAEA;AACA;AAMA;AACA;AACA;AAEA;AACA;AAKA;AACA;AACA;AAEA;AACA;AAMA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAMA;AAAA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAIA;AACA;AACA;;AACA;AAKA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAzSA;AAAA;;AAAA;AAKA;AAAA;;AAAA;AAKA;AAAA;;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;;AAAA;AAKA;AAAA;;AAAA;AAKA;AAAA;;AAAA;AAKA;AAAA;;AAAA;AAKA;AAAA;;AAAA;AAMA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AAwBA;AAAA;AAAA;AAAA;AA2CA;AADA;;;;AAQA;AApJA;AALA;AACA;AACA;AACA;AACA;AAqGA;AACA;AACA;AAtGA;AAAA;;;;;;;;;;;;;;;;;;;;;;;AChCA;AACA;AAIA;AACA;AACA;AAEA;AAAA;AACA;AAQA;AAMA;AAqDA;AAnDA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;;;AALA;AAAA;AAOA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAOA;AACA;AACA;AAOA;AACA;AACA;AAOA;AACA;AACA;AACA;AAAA;;AA3DA;AAAA;;AAAA;AAMA;AAAA;;AAAA;;;;;;;;AC1BA;AAAA;AAAA;;;;;;;;ACOA;AAAA;AAAA;AAEA;AACA;AACA;AAGA;AACA;AACA;AAGA;AACA;;;;;;;;;;;;;;;;;ACpBA;AAEA;AAKA;AAAA;AAmBA;AAZA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAnBA;AAHA;AACA;AACA;AACA;AAAA;;;;;;;;ACPA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;ACGA;AAQA;AAGA;AADA;AAKA;AACA;AACA;AACA;AAwEA;AAjEA;AACA;AACA;AAMA;AACA;AAEA;AACA;AAMA;AACA;AACA;AAMA;AACA;AACA;AAQA;AACA;AAEA;AACA;AACA;AAMA;AACA;AACA;AAMA;AACA;AACA;AAKA;AACA;AACA;AACA;AAAA;AA/EA;AADA;AACA;AAAA;;;;;;;;;;;;;;;;;;ACdA;AAWA;AAAA;AAOA;AAJA;AACA;AACA;AACA;AACA;AAAA;;AANA;;;;;;;;ACTA;AAAA;AAAA;AAuDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9GA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5vDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACPA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnFA;AACA;AACA;AACA;AACA;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChDA;AACA;AACA;AACA;AACA;;;;;;;ACJA;AACA;AACA;AACA;AACA;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzDA;AACA;AACA;AACA;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxBA;AACA;AACA;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;A","sourceRoot":""}