{"version":3,"file":"SpringRoll-Container-umd.js","sources":["../node_modules/whatwg-fetch/fetch.js","../node_modules/core-js/internals/global.js","../node_modules/core-js/internals/dom-iterables.js","../node_modules/core-js/internals/a-function.js","../node_modules/core-js/internals/function-bind-context.js","../node_modules/core-js/internals/fails.js","../node_modules/core-js/internals/classof-raw.js","../node_modules/core-js/internals/indexed-object.js","../node_modules/core-js/internals/require-object-coercible.js","../node_modules/core-js/internals/to-object.js","../node_modules/core-js/internals/to-integer.js","../node_modules/core-js/internals/to-length.js","../node_modules/core-js/internals/is-object.js","../node_modules/core-js/internals/is-array.js","../node_modules/core-js/internals/descriptors.js","../node_modules/core-js/internals/document-create-element.js","../node_modules/core-js/internals/ie8-dom-define.js","../node_modules/core-js/internals/an-object.js","../node_modules/core-js/internals/to-primitive.js","../node_modules/core-js/internals/object-define-property.js","../node_modules/core-js/internals/create-property-descriptor.js","../node_modules/core-js/internals/create-non-enumerable-property.js","../node_modules/core-js/internals/set-global.js","../node_modules/core-js/internals/shared-store.js","../node_modules/core-js/internals/shared.js","../node_modules/core-js/internals/has.js","../node_modules/core-js/internals/uid.js","../node_modules/core-js/internals/native-symbol.js","../node_modules/core-js/internals/use-symbol-as-uid.js","../node_modules/core-js/internals/well-known-symbol.js","../node_modules/core-js/internals/array-species-create.js","../node_modules/core-js/internals/array-iteration.js","../node_modules/core-js/internals/array-method-is-strict.js","../node_modules/core-js/internals/array-method-uses-to-length.js","../node_modules/core-js/internals/array-for-each.js","../node_modules/core-js/modules/web.dom-collections.for-each.js","../node_modules/core-js/internals/to-indexed-object.js","../node_modules/core-js/internals/object-create.js","../node_modules/core-js/internals/to-absolute-index.js","../node_modules/core-js/internals/array-includes.js","../node_modules/core-js/internals/hidden-keys.js","../node_modules/core-js/internals/object-keys-internal.js","../node_modules/core-js/internals/enum-bug-keys.js","../node_modules/core-js/internals/object-keys.js","../node_modules/core-js/internals/object-define-properties.js","../node_modules/core-js/internals/path.js","../node_modules/core-js/internals/get-built-in.js","../node_modules/core-js/internals/html.js","../node_modules/core-js/internals/shared-key.js","../node_modules/core-js/internals/add-to-unscopables.js","../node_modules/core-js/internals/iterators.js","../node_modules/core-js/internals/inspect-source.js","../node_modules/core-js/internals/internal-state.js","../node_modules/core-js/internals/native-weak-map.js","../node_modules/core-js/internals/iterators-core.js","../node_modules/core-js/internals/object-property-is-enumerable.js","../node_modules/core-js/internals/object-get-own-property-descriptor.js","../node_modules/core-js/internals/redefine.js","../node_modules/core-js/internals/object-get-own-property-names.js","../node_modules/core-js/internals/object-get-own-property-symbols.js","../node_modules/core-js/internals/own-keys.js","../node_modules/core-js/internals/copy-constructor-properties.js","../node_modules/core-js/internals/is-forced.js","../node_modules/core-js/internals/export.js","../node_modules/core-js/internals/correct-prototype-getter.js","../node_modules/core-js/internals/object-get-prototype-of.js","../node_modules/core-js/internals/set-to-string-tag.js","../node_modules/core-js/internals/create-iterator-constructor.js","../node_modules/core-js/internals/object-set-prototype-of.js","../node_modules/core-js/internals/a-possible-prototype.js","../node_modules/core-js/internals/define-iterator.js","../node_modules/core-js/modules/es.array.iterator.js","../node_modules/core-js/modules/web.dom-collections.iterator.js","../node_modules/core-js/internals/create-property.js","../node_modules/core-js/internals/engine-v8-version.js","../node_modules/core-js/internals/engine-user-agent.js","../node_modules/core-js/internals/array-method-has-species-support.js","../node_modules/core-js/modules/es.array.concat.js","../node_modules/core-js/modules/es.array.index-of.js","../node_modules/core-js/internals/object-assign.js","../node_modules/core-js/modules/es.object.assign.js","../node_modules/core-js/internals/to-string-tag-support.js","../node_modules/core-js/internals/classof.js","../node_modules/core-js/internals/object-to-string.js","../node_modules/core-js/modules/es.object.to-string.js","../node_modules/core-js/internals/native-promise-constructor.js","../node_modules/core-js/internals/redefine-all.js","../node_modules/core-js/internals/set-species.js","../node_modules/core-js/internals/an-instance.js","../node_modules/core-js/internals/is-array-iterator-method.js","../node_modules/core-js/internals/get-iterator-method.js","../node_modules/core-js/internals/call-with-safe-iteration-closing.js","../node_modules/core-js/internals/iterate.js","../node_modules/core-js/internals/check-correctness-of-iteration.js","../node_modules/core-js/internals/task.js","../node_modules/core-js/internals/species-constructor.js","../node_modules/core-js/internals/engine-is-ios.js","../node_modules/core-js/internals/microtask.js","../node_modules/core-js/modules/es.promise.js","../node_modules/core-js/internals/new-promise-capability.js","../node_modules/core-js/internals/promise-resolve.js","../node_modules/core-js/internals/perform.js","../node_modules/core-js/internals/host-report-errors.js","../node_modules/regenerator-runtime/runtime.js","../src/Features.js","../node_modules/core-js/modules/es.array.filter.js","../node_modules/core-js/modules/es.array.find.js","../node_modules/core-js/internals/string-multibyte.js","../node_modules/core-js/modules/es.string.iterator.js","../node_modules/bellhop-iframe/dist/bellhop.js","../src/PluginManager.js","../src/Container.js","../src/PageVisibility.js","../node_modules/core-js/internals/object-get-own-property-names-external.js","../node_modules/core-js/internals/well-known-symbol-wrapped.js","../node_modules/core-js/internals/define-well-known-symbol.js","../node_modules/core-js/modules/es.symbol.js","../node_modules/core-js/modules/es.symbol.description.js","../node_modules/core-js/modules/es.symbol.iterator.js","../node_modules/core-js/modules/es.array.includes.js","../node_modules/core-js/internals/regexp-flags.js","../node_modules/core-js/internals/regexp-sticky-helpers.js","../node_modules/core-js/internals/regexp-exec.js","../node_modules/core-js/modules/es.regexp.exec.js","../node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","../node_modules/core-js/internals/is-regexp.js","../node_modules/core-js/internals/advance-string-index.js","../node_modules/core-js/internals/regexp-exec-abstract.js","../node_modules/core-js/modules/es.string.split.js","../node_modules/core-js/internals/whitespaces.js","../node_modules/core-js/internals/string-trim.js","../node_modules/core-js/modules/es.string.trim.js","../node_modules/core-js/internals/string-trim-forced.js","../node_modules/core-js/modules/es.regexp.to-string.js","../src/SavedData.js","../src/base-plugins/BasePlugin.js","../src/base-plugins/ButtonPlugin.js","../node_modules/core-js/internals/not-a-regexp.js","../node_modules/core-js/internals/correct-is-regexp-logic.js","../node_modules/core-js/modules/es.string.includes.js","../node_modules/core-js/modules/es.array.map.js","../node_modules/core-js/modules/es.object.keys.js","../node_modules/core-js/internals/object-to-array.js","../node_modules/core-js/modules/es.object.values.js","../node_modules/core-js/internals/freezing.js","../node_modules/core-js/internals/internal-metadata.js","../node_modules/core-js/internals/inherit-if-required.js","../node_modules/core-js/internals/collection-strong.js","../node_modules/core-js/internals/collection.js","../node_modules/core-js/modules/es.set.js","../src/ui-elements/RadioGroup.js","../src/base-plugins/RadioGroupPlugin.js","../node_modules/core-js/modules/es.number.constructor.js","../src/ui-elements/Slider.js","../src/ui-elements/Button.js","../src/base-plugins/SliderPlugin.js","../src/plugins/CaptionsStylePlugin.js","../src/plugins/CaptionsTogglePlugin.js","../src/plugins/HelpPlugin.js","../src/plugins/PausePlugin.js","../src/plugins/SoundPlugin.js","../src/SavedDataHandler.js","../src/plugins/UserDataPlugin.js","../src/plugins/PointerSizePlugin.js","../src/plugins/ButtonSizePlugin.js","../src/plugins/ControlSensitivityPlugin.js","../src/plugins/KeyboardMapPlugin.js","../src/plugins/LayersPlugin.js","../src/plugins/HUDPlugin.js","../src/plugins/ColorVisionPlugin.js","../src/plugins/HitAreaScalePlugin.js","../src/plugins/DragThresholdScalePlugin.js","../src/plugins/HealthPlugin.js","../src/plugins/ObjectCountPlugin.js","../src/plugins/CompletionPercentagePlugin.js","../src/plugins/SpeedScalePlugin.js","../src/plugins/TimersScalePlugin.js","../src/plugins/InputCountPlugin.js","../src/plugins/FullScreenPlugin.js"],"sourcesContent":["var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob()\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n}\n\nfunction isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n}\n\nif (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n}\n\nexport function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n}\n\nHeaders.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue + ', ' + value : value\n}\n\nHeaders.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n}\n\nHeaders.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n}\n\nHeaders.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n}\n\nHeaders.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n}\n\nHeaders.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n}\n\nHeaders.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push(name)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.values = function() {\n var items = []\n this.forEach(function(value) {\n items.push(value)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push([name, value])\n })\n return iteratorFor(items)\n}\n\nif (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\nfunction consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n}\n\nfunction fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n}\n\nfunction readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n}\n\nfunction readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n}\n\nfunction bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n}\n\nfunction Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n this._bodyText = body = Object.prototype.toString.call(body)\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n}\n\n// HTTP methods whose capitalization should be normalized\nvar methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\nfunction normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return methods.indexOf(upcased) > -1 ? upcased : method\n}\n\nexport function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n this.signal = input.signal\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.signal = options.signal || this.signal\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n}\n\nRequest.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n}\n\nfunction decode(body) {\n var form = new FormData()\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n}\n\nfunction parseHeaders(rawHeaders) {\n var headers = new Headers()\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n}\n\nBody.call(Request.prototype)\n\nexport function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = options.status === undefined ? 200 : options.status\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n}\n\nBody.call(Response.prototype)\n\nResponse.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n}\n\nResponse.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n}\n\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\nResponse.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n}\n\nexport var DOMException = self.DOMException\ntry {\n new DOMException()\n} catch (err) {\n DOMException = function(message, name) {\n this.message = message\n this.name = name\n var error = Error(message)\n this.stack = error.stack\n }\n DOMException.prototype = Object.create(Error.prototype)\n DOMException.prototype.constructor = DOMException\n}\n\nexport function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n\n if (request.signal && request.signal.aborted) {\n return reject(new DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest()\n\n function abortXhr() {\n xhr.abort()\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.onabort = function() {\n reject(new DOMException('Aborted', 'AbortError'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr)\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr)\n }\n }\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n}\n\nfetch.polyfill = true\n\nif (!self.fetch) {\n self.fetch = fetch\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n}\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func\n Function('return this')();\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.6.5',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n // eslint-disable-next-line no-undef\n && !Symbol.sham\n // eslint-disable-next-line no-undef\n && typeof Symbol.iterator == 'symbol';\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name)) {\n if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6)\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\n\nvar defineProperty = Object.defineProperty;\nvar cache = {};\n\nvar thrower = function (it) { throw it; };\n\nmodule.exports = function (METHOD_NAME, options) {\n if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];\n if (!options) options = {};\n var method = [][METHOD_NAME];\n var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;\n var argument0 = has(options, 0) ? options[0] : thrower;\n var argument1 = has(options, 1) ? options[1] : undefined;\n\n return cache[METHOD_NAME] = !!method && !fails(function () {\n if (ACCESSORS && !DESCRIPTORS) return true;\n var O = { length: -1 };\n\n if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });\n else O[1] = 1;\n\n method.call(O, argument0, argument1);\n });\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\nmodule.exports = (!STRICT_METHOD || !USES_TO_LENGTH) ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","module.exports = {};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","module.exports = {};\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","'use strict';\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.github.io/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n concat: function concat(arg) { // eslint-disable-line no-unused-vars\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\nvar nativeAssign = Object.assign;\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\nmodule.exports = !nativeAssign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : nativeAssign;\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var anObject = require('../internals/an-object');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n throw error;\n }\n};\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) {\n var boundFunction = bind(fn, that, AS_ENTRIES ? 2 : 1);\n var iterator, iterFn, index, length, result, next, step;\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = AS_ENTRIES\n ? boundFunction(anObject(step = iterable[index])[0], step[1])\n : boundFunction(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES);\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n\niterate.stop = function (result) {\n return new Result(true, result);\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\n\nvar location = global.location;\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(id + '', location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (classof(process) == 'process') {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n typeof postMessage == 'function' &&\n !global.importScripts &&\n !fails(post) &&\n location.protocol !== 'file:'\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar classof = require('../internals/classof-raw');\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar IS_NODE = classof(process) == 'process';\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n } else if (MutationObserver && !IS_IOS) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n then = promise.then;\n notify = function () {\n then.call(promise, flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar isObject = require('../internals/is-object');\nvar aFunction = require('../internals/a-function');\nvar anInstance = require('../internals/an-instance');\nvar classof = require('../internals/classof-raw');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar PromiseConstructor = NativePromise;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar $fetch = getBuiltIn('fetch');\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar IS_NODE = classof(process) == 'process';\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);\n if (!GLOBAL_CORE_JS_PROMISE) {\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (V8_VERSION === 66) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n if (!IS_NODE && typeof PromiseRejectionEvent != 'function') return true;\n }\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromiseConstructor.prototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = PromiseConstructor.resolve(1);\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n return !(promise.then(function () { /* empty */ }) instanceof FakePromise);\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\n\nvar notify = function (promise, state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n // variable length - can't use forEach\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(promise, state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(promise, state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (handler = global['on' + name]) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (promise, state) {\n task.call(global, function () {\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (promise, state) {\n task.call(global, function () {\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, promise, state, unwrap) {\n return function (value) {\n fn(promise, state, value, unwrap);\n };\n};\n\nvar internalReject = function (promise, state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(promise, state, true);\n};\n\nvar internalResolve = function (promise, state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n then.call(value,\n bind(internalResolve, promise, wrapper, state),\n bind(internalReject, promise, wrapper, state)\n );\n } catch (error) {\n internalReject(promise, wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(promise, state, false);\n }\n } catch (error) {\n internalReject(promise, { done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromiseConstructor, PROMISE);\n aFunction(executor);\n Internal.call(this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, this, state), bind(internalReject, this, state));\n } catch (error) {\n internalReject(this, state, error);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromiseConstructor.prototype, {\n // `Promise.prototype.then` method\n // https://tc39.github.io/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n state.reactions.push(reaction);\n if (state.state != PENDING) notify(this, state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.github.io/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, promise, state);\n this.reject = bind(internalReject, promise, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && typeof NativePromise == 'function') {\n nativeThen = NativePromise.prototype.then;\n\n // wrap native Promise#then for native async functions\n redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n nativeThen.call(that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // wrap fetch result\n if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, {\n // eslint-disable-next-line no-unused-vars\n fetch: function fetch(input /* , init */) {\n return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));\n }\n });\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.github.io/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n capability.reject.call(undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.github.io/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.github.io/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n $promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.github.io/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n iterate(iterable, function (promise) {\n $promiseResolve.call(C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar aFunction = require('../internals/a-function');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n};\n\n// 25.4.1.5 NewPromiseCapability(C)\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","/**\n * Provide feature detection\n * @class Features\n */\nexport class Features {\n /**\n * If the browser has WebGL support\n * @property {boolean} webgl\n */\n static get webgl() {\n const canvas = document.createElement('canvas');\n\n return !!(\n canvas &&\n (canvas.getContext('webgl') || canvas.getContext('experimental-webgl'))\n );\n }\n\n /**\n * If the browser has Canvas support\n * @property {boolean} canvas\n */\n static get canvas() {\n const canvas = document.createElement('canvas');\n return !!(canvas !== null && canvas.getContext && canvas.getContext('2d'));\n }\n\n /**\n * If the browser has WebAudio API support\n * @property {boolean} webaudio\n */\n static get webaudio() {\n return 'webkitAudioContext' in window || 'AudioContext' in window;\n }\n\n /**\n * If the browser has HTMLAudio support\n * @property {boolean} htmlAudio\n */\n static get htmlAudio() {\n return 'HTMLAudioElement' in window;\n }\n\n /**\n * If the browser has Web Sockets API\n * @property {boolean} websockets\n */\n static get websockets() {\n return 'WebSocket' in window || 'MozWebSocket' in window;\n }\n\n /**\n * If the browser has Geolocation API\n * @property {boolean} geolocation\n */\n static get geolocation() {\n return 'geolocation' in navigator;\n }\n\n /**\n * If the browser has Web Workers API\n * @property {boolean} webworkers\n */\n static get webworkers() {\n return 'function' === typeof Worker;\n }\n\n /**\n * If the browser has touch\n * @property {boolean} touch\n */\n static get touch() {\n return !!(\n 'ontouchstart' in window || // iOS & Android\n (navigator.msPointerEnabled && navigator.msMaxTouchPoints > 0) || // IE10\n (navigator.pointerEnabled && navigator.maxTouchPoints > 0)\n ); // IE11+\n }\n\n /**\n * Test for basic browser compatiliblity\n * @method basic\n * @static\n * @return {String} The error message, if fails\n */\n static basic() {\n if (!Features.canvas) {\n return 'Browser does not support canvas';\n } else if (!Features.webaudio && !Features.htmlAudio) {\n return 'Browser does not support WebAudio or HTMLAudio';\n }\n return null;\n }\n\n /**\n * See if the current bowser has the correct features\n * @method test\n * @static\n * @param {object} capabilities The capabilities\n * @param {object} [capabilities.features] The features\n * @param {object} [capabilities.features.webgl] WebGL required\n * @param {object} [capabilities.features.geolocation] Geolocation required\n * @param {object} [capabilities.features.webworkers] Web Workers API required\n * @param {object} [capabilities.features.webaudio] WebAudio API required\n * @param {object} [capabilities.features.websockets] WebSockets required\n * @param {object} [capabilities.sizes] The sizes\n * @param {Boolean} [capabilities.sizes.xsmall] Screens < 480\n * @param {Boolean} [capabilities.sizes.small] Screens < 768\n * @param {Boolean} [capabilities.sizes.medium] Screens < 992\n * @param {Boolean} [capabilities.sizes.large] Screens < 1200\n * @param {Boolean} [capabilities.sizes.xlarge] Screens >= 1200\n * @param {object} [capabilities.ui] The ui\n * @param {Boolean} [capabilities.ui.touch] Touch capable\n * @return {String|null} The error, or else returns null\n */\n static test(capabilities) {\n // check for basic compatibility\n const err = this.basic();\n if (err) {\n return err;\n }\n\n const features = capabilities.features;\n const ui = capabilities.ui;\n const sizes = capabilities.sizes;\n\n for (const name in features) {\n if (features[name] === true && !Features[name]) {\n // Failed built-in feature check\n return 'Browser does not support ' + name;\n }\n }\n\n // Failed negative touch requirement\n if (!ui.touch && Features.touch) {\n return 'Game does not support touch input';\n }\n\n // Check the sizes\n const size = Math.max(window.screen.width, window.screen.height);\n\n if (!sizes.xsmall && size < 480) {\n return 'Game doesn\\'t support extra small screens';\n }\n if (!sizes.small && size < 768) {\n return 'Game doesn\\'t support small screens';\n }\n if (!sizes.medium && size < 992) {\n return 'Game doesn\\'t support medium screens';\n }\n if (!sizes.large && size < 1200) {\n return 'Game doesn\\'t support large screens';\n }\n if (!sizes.xlarge && size >= 1200) {\n return 'Game doesn\\'t support extra large screens';\n }\n return null;\n }\n\n /**\n * Returns browser feature support info\n * @returns {string}\n */\n static get info() {\n return `Browser Feature Detection\n\t\t\t\tCanvas support ${Features.canvas ? '\\u2713' : '\\u00D7'}\n\t\t\t\tWebGL support ${Features.webgl ? '\\u2713' : '\\u00D7'}\n\t\t\t\tWebAudio support ${Features.webAudio ? '\\u2713' : '\\u00D7'}`;\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n// Edge 14- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength(FIND);\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","function t(t,e){return t(e={exports:{}},e.exports),e.exports}var e=t((function(t){function e(t){return(e=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function n(r){return\"function\"==typeof Symbol&&\"symbol\"===e(Symbol.iterator)?t.exports=n=function(t){return e(t)}:t.exports=n=function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":e(t)},n(r)}t.exports=n}));var n=function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")};function r(t,e){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:0;this._listeners[t]||(this._listeners[t]=[]),e._priority=parseInt(n)||0,-1===this._listeners[t].indexOf(e)&&(this._listeners[t].push(e),this._listeners[t].length>1&&this._listeners[t].sort(this.listenerSorter))}},{key:\"listenerSorter\",value:function(t,e){return t._priority-e._priority}},{key:\"off\",value:function(t,e){if(void 0!==this._listeners[t])if(void 0!==e){var n=this._listeners[t].indexOf(e);-11&&void 0!==arguments[1]?arguments[1]:{};if(\"string\"==typeof t&&(t={type:t,data:\"object\"===e(n)&&null!==n?n:{}}),void 0!==this._listeners[t.type])for(var r=this._listeners[t.type].length-1;r>=0;r--)this._listeners[t.type][r](t)}},{key:\"destroy\",value:function(){this._listeners={}}}]),t}(),s=t((function(t){var e=function(t){var e,n=Object.prototype,r=n.hasOwnProperty,o=\"function\"==typeof Symbol?Symbol:{},i=o.iterator||\"@@iterator\",s=o.asyncIterator||\"@@asyncIterator\",a=o.toStringTag||\"@@toStringTag\";function c(t,e,n,r){var o=e&&e.prototype instanceof d?e:d,i=Object.create(o.prototype),s=new S(r||[]);return i._invoke=function(t,e,n){var r=h;return function(o,i){if(r===f)throw new Error(\"Generator is already running\");if(r===p){if(\"throw\"===o)throw i;return P()}for(n.method=o,n.arg=i;;){var s=n.delegate;if(s){var a=O(s,n);if(a){if(a===y)continue;return a}}if(\"next\"===n.method)n.sent=n._sent=n.arg;else if(\"throw\"===n.method){if(r===h)throw r=p,n.arg;n.dispatchException(n.arg)}else\"return\"===n.method&&n.abrupt(\"return\",n.arg);r=f;var c=u(t,e,n);if(\"normal\"===c.type){if(r=n.done?p:l,c.arg===y)continue;return{value:c.arg,done:n.done}}\"throw\"===c.type&&(r=p,n.method=\"throw\",n.arg=c.arg)}}}(t,n,s),i}function u(t,e,n){try{return{type:\"normal\",arg:t.call(e,n)}}catch(t){return{type:\"throw\",arg:t}}}t.wrap=c;var h=\"suspendedStart\",l=\"suspendedYield\",f=\"executing\",p=\"completed\",y={};function d(){}function v(){}function g(){}var m={};m[i]=function(){return this};var w=Object.getPrototypeOf,b=w&&w(w(j([])));b&&b!==n&&r.call(b,i)&&(m=b);var _=g.prototype=d.prototype=Object.create(m);function x(t){[\"next\",\"throw\",\"return\"].forEach((function(e){t[e]=function(t){return this._invoke(e,t)}}))}function L(t){var e;this._invoke=function(n,o){function i(){return new Promise((function(e,i){!function e(n,o,i,s){var a=u(t[n],t,o);if(\"throw\"!==a.type){var c=a.arg,h=c.value;return h&&\"object\"==typeof h&&r.call(h,\"__await\")?Promise.resolve(h.__await).then((function(t){e(\"next\",t,i,s)}),(function(t){e(\"throw\",t,i,s)})):Promise.resolve(h).then((function(t){c.value=t,i(c)}),(function(t){return e(\"throw\",t,i,s)}))}s(a.arg)}(n,o,e,i)}))}return e=e?e.then(i,i):i()}}function O(t,n){var r=t.iterator[n.method];if(r===e){if(n.delegate=null,\"throw\"===n.method){if(t.iterator.return&&(n.method=\"return\",n.arg=e,O(t,n),\"throw\"===n.method))return y;n.method=\"throw\",n.arg=new TypeError(\"The iterator does not provide a 'throw' method\")}return y}var o=u(r,t.iterator,n.arg);if(\"throw\"===o.type)return n.method=\"throw\",n.arg=o.arg,n.delegate=null,y;var i=o.arg;return i?i.done?(n[t.resultName]=i.value,n.next=t.nextLoc,\"return\"!==n.method&&(n.method=\"next\",n.arg=e),n.delegate=null,y):i:(n.method=\"throw\",n.arg=new TypeError(\"iterator result is not an object\"),n.delegate=null,y)}function E(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function k(t){var e=t.completion||{};e.type=\"normal\",delete e.arg,t.completion=e}function S(t){this.tryEntries=[{tryLoc:\"root\"}],t.forEach(E,this),this.reset(!0)}function j(t){if(t){var n=t[i];if(n)return n.call(t);if(\"function\"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,s=function n(){for(;++o=0;--i){var s=this.tryEntries[i],a=s.completion;if(\"root\"===s.tryLoc)return o(\"end\");if(s.tryLoc<=this.prev){var c=r.call(s,\"catchLoc\"),u=r.call(s,\"finallyLoc\");if(c&&u){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,\"finallyLoc\")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),k(n),y}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if(\"throw\"===r.type){var o=r.arg;k(n)}return o}}throw new Error(\"illegal catch attempt\")},delegateYield:function(t,n,r){return this.delegate={iterator:j(t),resultName:n,nextLoc:r},\"next\"===this.method&&(this.arg=e),y}},t}(t.exports);try{regeneratorRuntime=e}catch(t){Function(\"r\",\"regeneratorRuntime = r\")(e)}}));var a=function(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t};var c=function(t,n){return!n||\"object\"!==e(n)&&\"function\"!=typeof n?a(t):n},u=t((function(t){function e(n){return t.exports=e=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},e(n)}t.exports=e}));var h=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=u(t)););return t},l=t((function(t){function e(n,r,o){return\"undefined\"!=typeof Reflect&&Reflect.get?t.exports=e=Reflect.get:t.exports=e=function(t,e,n){var r=h(t,e);if(r){var o=Object.getOwnPropertyDescriptor(r,e);return o.get?o.get.call(n):o.value}},e(n,r,o||n)}t.exports=e})),f=t((function(t){function e(n,r){return t.exports=e=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},e(n,r)}t.exports=e}));var p=function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&f(t,e)},y=function(t){function r(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:100*Math.random()|0;return n(this,r),(t=c(this,u(r).call(this))).id=\"BELLHOP:\".concat(e),t.connected=!1,t.isChild=!0,t.connecting=!1,t.debug=!1,t.origin=\"*\",t._sendLater=[],t.iframe=null,t.receive=t.receive.bind(a(t)),t}return p(r,i),o(r,[{key:\"receive\",value:function(t){if(this.target===t.source)if(this.logDebugMessage(!0,t),\"connected\"===t.data)this.onConnectionReceived(t.data);else{var n=t.data;if(\"string\"==typeof n)try{n=JSON.parse(n)}catch(t){console.error(\"Bellhop error: \",t)}this.connected&&\"object\"===e(n)&&n.type&&this.trigger(n)}}},{key:\"onConnectionReceived\",value:function(t){this.connecting=!1,this.connected=!0,this.isChild||this.target.postMessage(t,this.origin);for(var e=0;e1&&void 0!==arguments[1]?arguments[1]:\"*\";this.connecting||(this.disconnect(),this.connecting=!0,t instanceof HTMLIFrameElement&&(this.iframe=t),this.isChild=void 0===t,this.supported=!0,this.isChild&&(this.supported=window!=t),this.origin=e,window.addEventListener(\"message\",this.receive),this.isChild&&(window===this.target?this.trigger(\"failed\"):this.target.postMessage(\"connected\",this.origin)))}},{key:\"disconnect\",value:function(){this.connected=!1,this.connecting=!1,this.origin=null,this.iframe=null,this.isChild=!0,this._sendLater.length=0,window.removeEventListener(\"message\",this.receive)}},{key:\"send\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(\"string\"!=typeof t)throw\"The event type must be a string\";var n={type:t,data:e};this.logDebugMessage(!1,n),this.connecting?this._sendLater.push(n):this.target.postMessage(JSON.stringify(n),this.origin)}},{key:\"fetch\",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!this.connecting&&!this.connected)throw\"No connection, please call connect() first\";var i=function t(r){o&&n.off(r.type,t),e(r)};this.on(t,i),this.send(t,r)}},{key:\"respond\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=this,o=function t(o){var i;return s.async((function(a){for(;;)switch(a.prev=a.next){case 0:return n&&r.off(o,t),\"function\"==typeof e&&(e=e()),a.next=4,s.awrap(e);case 4:i=a.sent,r.send(o.type,i);case 6:case\"end\":return a.stop()}}))};this.on(t,o)}},{key:\"logDebugMessage\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=arguments.length>1?arguments[1]:void 0;this.debug&&\"function\"==typeof this.debug?this.debug({isChild:this.isChild,received:!1,message:e}):this.debug&&console.log(\"Bellhop Instance (\".concat(this.isChild?\"Child\":\"Parent\",\") \").concat(t?\"Receieved\":\"Sent\"),e)}},{key:\"destroy\",value:function(){l(u(r.prototype),\"destroy\",this).call(this),this.disconnect(),this._sendLater.length=0}},{key:\"target\",get:function(){return this.isChild?window.parent:this.iframe.contentWindow}}]),r}();export{y as Bellhop,i as BellhopEventDispatcher};\n//# sourceMappingURL=bellhop.js.map\n","/**\n * @typedef {import('./base-plugins/BasePlugin').BasePlugin} BasePlugin\n */\nimport { Bellhop } from 'bellhop-iframe';\n/**\n *\n *\n * @export\n * @class PluginManager\n */\nexport default class PluginManager {\n /**\n *Creates an instance of PluginManager.\n * @memberof PluginManager\n */\n constructor({ plugins = [] }) {\n this.client = new Bellhop();\n // @ts-ignore\n this.client.hidden = this.client.receive.bind(this.client);\n // @ts-ignore\n this.client.hiddenSend = this.client.send.bind(this.client);\n this.client.receive = function (event) {\n this.hidden(event);\n }.bind(this.client);\n this.client.send = function (event, data) {\n this.hiddenSend(event, data);\n }.bind(this.client);\n\n this.plugins = plugins;\n }\n\n /**\n *\n *\n * @returns\n * @memberof PluginManager\n */\n setupPlugins() {\n const preloads = [];\n for (let i = 0, l = this.plugins.length; i < l; i++) {\n if (!this.plugins[i].preload) {\n continue;\n }\n\n preloads.push(\n this.plugins[i].preload(this).catch(function preloadFail(error) {\n this.plugins[i].preloadFailed = true;\n console.warn(this.plugins[i].name, 'Preload Failed:', error);\n }.bind(this))\n );\n }\n\n // ~wait for all preloads to resolve\n return Promise.all(preloads).then(() => {\n // Remove plugins that fail to load.\n this.plugins = this.plugins.filter(\n plugin => plugin.preloadFailed !== true\n );\n\n //init\n this.plugins.forEach(plugin => {\n if (!plugin.init) {\n return;\n }\n\n plugin.init(this);\n });\n\n //start\n this.plugins.forEach(plugin => {\n if (!plugin.start) {\n return;\n }\n plugin.start(this);\n });\n });\n }\n\n /**\n * Registers a plugin to be used by PluginManagers, sorting it by priority order.\n * @param {BasePlugin} plugin The plugin to register.\n */\n uses(plugin) {\n this.plugins.push(plugin);\n }\n\n /**\n * Finds a plugin by name.\n * @param {string} name The name of the plugin.\n * @returns {BasePlugin}\n */\n getPlugin(name) {\n return this.plugins.find(function (plugin) {\n return plugin.name === name;\n });\n }\n}\n","import 'whatwg-fetch';\n\nimport { Features } from './Features';\nimport PluginManager from './PluginManager';\n// @ts-ignore\nimport { version } from '../package.json';\n\n/**\n * The application container\n * @class Container\n * @property {Bellhop} client Communication layer between the container and application\n * @property {boolean} loaded Check to see if a application is loaded\n * @property {boolean} loading Check to see if a application is loading\n * @property {object} release The current release data\n * @property {HTMLIFrameElement} iframe The DOM object for the iframe\n * @static @property {string} version The current version of the library\n */\nexport class Container extends PluginManager {\n /**\n *Creates an instance of Container.\n * @param {object} config\n * @param {string | HTMLIFrameElement} iframeOrSelector\n * @param {Array | null} [config.plugins]\n * @param {object | null} [config.context={}]\n * @memberof Container\n */\n constructor(iframeOrSelector, { plugins, context = {} } = {}) {\n super({ plugins });\n\n this.iframe = iframeOrSelector instanceof HTMLIFrameElement ? iframeOrSelector : document.querySelector(iframeOrSelector);\n\n if (null === this.iframe) {\n throw new Error('No iframe was found with the provided selector');\n }\n\n this.loaded = false;\n this.loading = false;\n this.release = null;\n\n // context object that plugins can pick up on\n this._context = context;\n\n this.onLoading = this.onLoading.bind(this);\n this.onLoadDone = this.onLoadDone.bind(this);\n this.onLoadDone = this.onLoadDone.bind(this);\n this.onEndGame = this.onEndGame.bind(this);\n this.onLocalError = this.onLocalError.bind(this);\n\n this.initClient();\n this.setupPlugins();\n }\n\n /**\n * The game is starting to load\n * @memberof Container\n */\n onLoading() {\n this.client.trigger('opening');\n }\n\n /**\n * Reset the mutes for audio and captions\n * @memberof Container\n */\n onLoadDone() {\n this.loading = false;\n this.loaded = true;\n this.iframe.classList.remove('loading');\n\n this.client.trigger('opened');\n }\n\n /**\n * The application ended and destroyed itself\n * @memberof Container\n */\n onEndGame() {\n this.reset();\n }\n /**\n * Handle the local errors\n * @method onLocalError\n * @private\n * @param {Event} $event Bellhop event\n */\n onLocalError($event) {\n console.error('SpringRoll Container error: ', $event, new Error().stack);\n }\n\n /**\n * Reset all the buttons back to their original setting\n * and clear the iframe.\n * @memberof Container\n */\n reset() {\n const wasLoaded = this.loaded || this.loading;\n\n if (wasLoaded) {\n this.client.trigger('closed');\n }\n\n // Reset state\n this.loaded = false;\n this.loading = false;\n\n // Clear the iframe src location\n this.iframe.setAttribute('src', '');\n this.iframe.classList.remove('loading');\n }\n\n /**\n * Set up communication layer between site and application.\n * May be called from subclasses if they create/destroy Bellhop instances.\n * @memberof Container\n */\n initClient() {\n //Handle bellhop events coming from the application\n this.client.on('loading', this.onLoading);\n this.client.on('loaded', this.onLoadDone);\n this.client.on('loadDone', this.onLoadDone);\n this.client.on('endGame', this.onEndGame);\n this.client.on('localError', this.onLocalError);\n // @ts-ignore\n this.client.connect(this.iframe);\n }\n\n /**\n * If there was an error when closing, reset the container\n * @memberof Container\n */\n _onCloseFailed() {\n this.reset(); // force close the app\n }\n\n /**\n * Open a application or path\n * @param {string} userPath The full path to the application to load\n * @param {object} [userOptions] The open options\n * @param {boolean} [userOptions.singlePlay=false] If we should play in single play mode\n * @param {object | null} [userOptions.playOptions=null] The optional play options\n * @memberof Container\n */\n _internalOpen(userPath, { singlePlay = false, playOptions = null } = {}) {\n const options = { singlePlay, playOptions };\n this.reset();\n\n this.loading = true;\n this.initClient();\n\n const err = Features.basic();\n if (err) {\n console.error('ERROR:', err);\n this.client.trigger('unsupported');\n }\n\n let path = userPath;\n if (null !== options.playOptions) {\n const playOptionsQueryString =\n 'playOptions=' +\n encodeURIComponent(JSON.stringify(options.playOptions));\n\n path =\n -1 === userPath.indexOf('?')\n ? `${userPath}?${playOptionsQueryString}`\n : `${userPath}&${playOptionsQueryString}`;\n }\n\n this.iframe.classList.add('loading');\n this.iframe.setAttribute('src', path);\n\n this.client.respond('singlePlay', singlePlay);\n this.client.respond('playOptions', playOptions);\n this.client.trigger('open');\n }\n\n /**\n *\n *\n * @param {string} path\n * @param {object} [options={}]\n * @memberof Container\n */\n openPath(path, options = {}) {\n // This should be deprecated, support for old function signature\n if ('object' !== typeof options) {\n console.warn(\n 'SpringRoll Container.openPath was passed a invalid options parameter. Using default parameters instead'\n );\n options = {};\n }\n\n this._internalOpen(\n path,\n Object.assign(\n {\n singlePlay: false,\n playOptions: {}\n },\n options\n )\n );\n }\n\n /**\n * Open application based on an API Call to SpringRoll Connect\n * @param {string} api\n * @param {object} options\n * @param {string} [options.query='']\n * @param {boolean} [options.singlePlay=false]\n * @param {null | object} [options.playOptions=null]\n * @returns {Promise}\n * @memberof Container\n */\n async openRemote(\n api,\n { query = '', singlePlay = false, playOptions = null } = {}\n ) {\n this.release = null;\n\n const response = await fetch(api, {\n headers: {\n 'Content-Type': 'application/json'\n }\n });\n\n const json = await response.json();\n\n // if SpringRollConnect denoted that something failed, send that error back\n if (!json.success) {\n throw new Error(json.error);\n }\n\n // If the browser doesn't support the capabilities requested by this game, also fail.\n const release = json.data;\n const error = Features.test(release.capabilities);\n if (error) {\n this.client.trigger('unsupported', { error });\n throw new Error(error);\n }\n\n // otherwise, open the game\n this.release = release;\n this._internalOpen(release.url + query, {\n singlePlay,\n playOptions\n });\n }\n\n /**\n * Destroy and don't use after this\n * @memberof Container\n */\n destroy() {\n this.reset();\n\n this.iframe = null;\n this.options = null;\n this.release = null;\n }\n\n /**\n * Tell the application to start closing\n * @memberof Container\n */\n close() {\n if (this.loading || this.loaded) {\n this.client.trigger('close');\n // Start the close\n this.client.send('close');\n } else {\n this.reset();\n }\n }\n\n /**\n * the current _context object\n * @readonly\n * @memberof Container\n * @return {object}\n */\n get context() {\n return this._context;\n }\n\n /**\n * sets _context object to new object\n * @param {object} context\n * @memberof Container\n */\n set context(newContext) {\n if (typeof newContext !== 'object') {\n console.error('[SpringRollContainer] Context: new context provided is not an object');\n return;\n }\n this._context = newContext;\n }\n\n\n\n /**\n * The current version of SpringRollContainer\n * @readonly\n * @static\n * @return {string}\n * @memberof Container\n */\n static get version() {\n return version;\n }\n}\n","/**\n * Handle the page visiblity change, if supported. Application uses one of these to\n * monitor page visibility. It is suggested that you listen to `pause`, `paused`,\n * or `resumed` events on the Application instead of using one of these yourself.\n *\n * @export\n * @class PageVisibility\n * @constructor\n * @param {Function} onFocus Callback when the page becomes visible\n * @param {Function} onBlur Callback when the page loses visibility\n */\nexport class PageVisibility {\n /**\n *Creates an instance of PageVisibility.\n * @param { function } [onFocus=function() {}]\n * @param { function } [onBlur=function() {}]\n * @memberof PageVisibility\n */\n constructor(onFocus = function() {}, onBlur = function() {}) {\n this._onFocus = onFocus;\n this._onBlur = onBlur;\n this.onFocus = function(e) {\n if (this.enabled) {\n this._onFocus(e);\n }\n }.bind(this);\n this.onBlur = function(e) {\n if (this.enabled) {\n this._onBlur(e);\n }\n }.bind(this);\n this._enabled = false;\n this.enabled = true;\n\n this.onToggle = this.onToggle.bind(this);\n }\n\n /**\n * Disable the detection\n * @memberof PageVisibility\n */\n destroy() {\n this.enabled = false;\n this.onToggle = null;\n this.onFocus = null;\n this.onBlur = null;\n }\n\n /**\n * The visibility toggle listener function\n * @param {Event} $event;\n * @memberof PageVisibility\n */\n onToggle($event) {\n if (this.enabled) {\n document.hidden ? this.onBlur($event) : this.onFocus($event);\n }\n }\n\n /**\n * If this object is enabled.\n * @returns {boolean}\n * @memberof PageVisibility\n */\n get enabled() {\n return this._enabled;\n }\n\n /**\n * Sets the state of the object\n * @memberof PageVisibility\n */\n set enabled(enable) {\n this._enabled = enable;\n\n document.removeEventListener('visibilitychange', this.onToggle, false);\n window.removeEventListener('blur', this.onBlur, false);\n window.removeEventListener('focus', this.onFocus, false);\n window.removeEventListener('pagehide', this.onBlur, false);\n window.removeEventListener('pageshow', this.onFocus, false);\n window.removeEventListener('visibilitychange', this.onToggle, false);\n\n if (this._enabled) {\n document.addEventListener('visibilitychange', this.onToggle, false);\n window.addEventListener('blur', this.onBlur, false);\n window.addEventListener('focus', this.onFocus, false);\n window.addEventListener('pagehide', this.onBlur, false);\n window.addEventListener('pageshow', this.onFocus, false);\n window.addEventListener('visibilitychange', this.onToggle, false);\n }\n }\n}\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return nativeGetOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar isSymbol = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPrimitive(P, true);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPrimitive(V, true);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPrimitive(P, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.github.io/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n redefine($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.github.io/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = String(key);\n if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.github.io/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.github.io/ecma262/#sec-json.stringify\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n });\n\n $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n // eslint-disable-next-line no-unused-vars\n stringify: function stringify(it, replacer, space) {\n var args = [it];\n var index = 1;\n var $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return $stringify.apply(null, args);\n }\n });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","// `Symbol.prototype.description` getter\n// https://tc39.github.io/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n\n var symbolToString = symbolPrototype.toString;\n var native = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol)) return '';\n var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: !USES_TO_LENGTH }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\n\nvar fails = require('./fails');\n\n// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n// so we use an intermediate function.\nfunction RE(s, f) {\n return RegExp(s, f);\n}\n\nexports.UNSUPPORTED_Y = fails(function () {\n // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n var re = RE('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = RE('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n","'use strict';\nvar regexpFlags = require('./regexp-flags');\nvar stickyHelpers = require('./regexp-sticky-helpers');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = String(str).slice(re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar regexpExec = require('../internals/regexp-exec');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\nvar REPLACE = wellKnownSymbol('replace');\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !(\n REPLACE_SUPPORTS_NAMED_GROUPS &&\n REPLACE_KEEPS_$0 &&\n !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n )) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }, {\n REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n }\n\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n};\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SUPPORTS_Y);\n","// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","/**\n * The SavedData functions use localStorage and sessionStorage, with a cookie fallback.\n *\n * @class SavedData\n */\nexport class SavedData {\n\n /**\n * Constructor for IndexedDB work\n */\n constructor(dbName = '') {\n this.db = null;\n this.dbName = dbName;\n }\n /**\n * Remove a saved variable by name.\n * @method remove\n * @static\n * @param {String} name The name of the value to remove\n */\n static remove(name) {\n localStorage.removeItem(name);\n sessionStorage.removeItem(name);\n }\n\n /**\n * Save a variable.\n * @method write\n * @static\n * @param {string} name The name of the value to save\n * @param {string} value The value to save. This will be run through JSON.stringify().\n * @param {boolean} [tempOnly=false] If the value should be saved only in the current browser session.\n */\n static write(name, value, tempOnly = false) {\n\n return tempOnly\n ? sessionStorage.setItem(\n name,\n JSON.stringify('function' === typeof value ? value() : value)\n )\n : localStorage.setItem(\n name,\n JSON.stringify('function' === typeof value ? value() : value)\n );\n }\n\n /**\n * Read the value of a saved variable\n * @method read\n * @static\n * @param {String} name The name of the variable\n * @return {*} The value (run through `JSON.parse()`) or null if it doesn't exist\n */\n static read(name) {\n const value = localStorage.getItem(name) || sessionStorage.getItem(name);\n\n if ('string' === typeof value) {\n try {\n return JSON.parse(value);\n } catch (err) {\n return value;\n }\n } else {\n return value;\n }\n }\n\n /**\n * Open a connection with the IDB Database and optionally add or delete\n * Indexes and stores\n *\n * @param {string} dbName The name of your IndexedDB database\n * @param {string} dbVersion The version number of the database. Additions and deletions will be ignored if lower than current version number\n * @param {JSON} additions Any additions to the structure of the database\n * @param {array} additions.stores Any stores to be added into the database syntax: {storeName: '[name]', options: {[optionally add options]}}\n * @param {array} additions.indexes Any Indexes to be added to the database syntax: {storeName: '[name]', options: {[optionally add options]}}\n */\n IDBOpen( dbName, dbVersion = null, additions = {}, deletions = {}, callback ) {\n const request = dbVersion ? indexedDB.open(dbName, dbVersion) : indexedDB.open(dbName);\n\n request.onsuccess = e => {\n // Database successfully opened. This will run along with onupgradeneeded\n this.db = e.target.result;\n\n if (this.db.version == dbVersion | dbVersion == null) {\n callback({result: 'Success: IDBOpen', success: true});\n }\n };\n\n request.onerror = () => {\n callback({result: request.error.toString(), success: false});\n };\n\n // on upgrade needed fires only if the dbVersion is higher than the current version number\n request.onupgradeneeded = e => {\n // Ensure the proper database object is stored\n this.db = e.target.result;\n\n if (additions != null) {\n if (additions.stores) {\n additions.stores.forEach(store => {\n this.db.createObjectStore(store.storeName, store.options);\n });\n }\n if (additions.indexes != null) {\n additions.indexes.forEach(index => {\n // Add indexes last to avoid adding an index to a store that has yet to be created\n // Open a transaction returning a store object\n const storeObject = request.transaction.objectStore(index.storeName);\n storeObject.createIndex(index.indexName, index.keyPath, index.options);\n });\n }\n }\n\n if (deletions != null) {\n if (deletions.indexes != null) {\n // delete indexes first to avoid deleting an index to a store that has already to been deleted\n deletions.indexes.forEach((index) => {\n // Open a transaction returning a store object\n const storeObject = request.transaction.objectStore(index.storeName);\n storeObject.deleteIndex(index.indexName);\n });\n }\n if (deletions.stores) {\n deletions.stores.forEach((store) => {\n this.db.deleteObjectStore(store.storeName);\n });\n }\n }\n callback({result: 'Success: IDBOpen onupgradeneeded ran', success: true});\n };\n }\n\n /**\n * Delete a database and all records, stores, and indexes associated\n * @param {string} dbName Name of the database to delete\n * @param {object} options Optionally pass in options\n * @param {function} callback The callback to be run on success or error. One value will be passed into this function\n */\n IDBDeleteDB(dbName, options = null, callback = {}) {\n const request = options != null ? indexedDB.deleteDatabase(dbName, options): indexedDB.deleteDatabase(dbName);\n\n request.onsuccess = (e) => {\n callback({result: 'Success: Database Deleted, returned: ' + e.result, success: true});\n };\n request.onerror = () => {\n callback({result: request.error.toString(), success: false});\n };\n\n\n }\n\n /**\n * Add a record to a given store\n * @param {string} storeName The name of the store from which the record will be updated\n * @param {string} key the key of the record to be updated\n * @param {string} value The value for the record with the given key to be updated\n * @param {function} callback The method to call on success or failure. A single value will be passed in\n */\n IDBAdd(storeName, value, key, callback) {\n if ( !this.db && this.dbName != '') {\n this.IDBOpen(this.dbName);\n }\n\n const tx = this.db.transaction(storeName, 'readwrite');\n tx.onerror = () => callback({result: tx.error != null ? tx.error.toString() : 'Aborted: No error given, was the record already added?', success: false});\n tx.onabort = () => callback({result: tx.error != null ? tx.error.toString() : 'Aborted: No error given, was the record already added?', success: false});\n\n tx.oncomplete = () => callback({result: 'Success: Record Added', success: true});\n const store = tx.objectStore(storeName);\n store.add(value, key);\n }\n\n /**\n * Update a record in a given store\n * @param {string} storeName The name of the store from which the record will be updated\n * @param {string} key the key of the record to be updated\n * @param {string | object} value The altered object to be updated from the given store\n * @param {function} callback The method to call on success or failure. A single value will be passed in\n */\n IDBUpdate (storeName, key, value, callback) {\n if ( !this.db && this.dbName != '') {\n this.IDBOpen(this.dbName);\n }\n\n const tx = this.db.transaction(storeName, 'readwrite');\n const store = tx.objectStore(storeName);\n\n const updateRequest = store.put(value, key);\n\n updateRequest.onsuccess = () => {\n callback({result: 'Success: Record Updated', success: true});\n };\n\n updateRequest.onerror = () => callback({result: updateRequest.error.toString(), success: false});\n }\n\n /**\n * Delete a given record within a given store\n * @param {string} storeName The name of the store from which the record will be removed\n * @param {string} key the key of the record to be removed\n * @param {function} callback The method to call on success or failure. A single value will be passed in\n */\n IDBRemove(storeName, key, callback) {\n if ( !this.db && this.dbName != '') {\n this.IDBOpen(this.dbName);\n }\n\n const tx = this.db.transaction(storeName, 'readwrite');\n tx.onerror = () => callback({result: this.db.error.toString(), success: false});\n const store = tx.objectStore(storeName);\n store.delete(key);\n\n tx.oncomplete = () => callback({result: 'Removed Successfully', success: true});\n\n }\n\n /**\n * Return a record from a given store with a given key\n * @param {string} storeName the name of the store to read from\n * @param {string} key The key for the record in the given store\n * @param {function} callback The method to call on success or failure. A single value will be passed in\n */\n IDBRead(storeName, key, callback) {\n // Open transaction with a store\n const tx = this.db.transaction(storeName, 'readonly');\n // Get the store object from the transaction\n const store = tx.objectStore(storeName);\n\n tx.onerror = () => callback({result: this.db.error.toString(), success: false});\n\n const readRequest = store.get(key);\n\n readRequest.onsuccess = () => {\n callback({result: readRequest.result, success: readRequest.result != undefined ? true : false});\n };\n\n }\n\n /**\n * Get all keys with given index\n * @param {string} storeName the name of the store to be read from\n * @param {string} indexName the name of the index to be read from\n * @param {string} query Optionally give a keyRange of records to return\n * @param {string} count Optionally give a max limit on records to be returned\n * @param {function} callback The method to call on success or failure. A single value will be passed in as a parameter\n */\n IDBGetIndexKeys (storeName, indexName, query = null, count = null, callback = {}) {\n // Open transaction with a store\n const tx = this.db.transaction(storeName, 'readonly');\n // Get the store object from the transaction\n const store = tx.objectStore(storeName);\n\n let index;\n\n tx.onerror = () => callback({result: this.db.error.toString(), success: false});\n\n if (query && count) {\n index = store.index(indexName, query, count);\n } else if (query) {\n index = store.index(indexName, query);\n } else {\n index = store.index(indexName);\n }\n\n const getAllKeysRequest = index.getAllKeys();\n\n\n getAllKeysRequest.onsuccess = function(e) {\n callback({result : e.result, success: true});\n };\n }\n\n /**\n * Get all records from a store\n * @param {string} storeName The store to get all records from\n * @param {integer} count Optionally the count of records to return\n * @param {function} callback The method to call on success or failure. A single value will be passed in\n */\n IDBReadAll(storeName, count, callback) {\n // Open transaction with a store\n const tx = this.db.transaction(storeName, 'readonly');\n // Get the store object from the transaction\n const store = tx.objectStore(storeName);\n\n const readRequest = count != null ? store.getAll(null, count) : store.getAll();\n\n // const readRequest = store.getAll();\n\n tx.onerror = () => callback({result: tx.error.toString(), success: false});\n\n\n readRequest.onsuccess = () => {\n callback({result: readRequest.result, success: readRequest.result != undefined ? true : false});\n };\n }\n\n /**\n * Get the version number of a given database. This will create a database if it doesn't exist.\n * Do not call this after opening a connection with the database\n * @param {string} dbName The name of the database for which the version will be returned\n * @param {function} callback The method to call on success or failure. A single value will be passed in\n */\n IDBGetVersion(dbName, callback) {\n // Open the database\n const dBOpenRequest = window.indexedDB.open(dbName);\n\n // these two event handlers act on the database\n // being opened. successfully, or not\n dBOpenRequest.onerror = function() {\n callback({result: dBOpenRequest.error.toString(), success: false});\n };\n\n dBOpenRequest.onsuccess = function() {\n const db = dBOpenRequest.result;\n callback({result: db.version, success: true});\n };\n }\n\n /**\n * Closes the connection to the database if open\n * @param {function} callback The method to call on success or failure. A single value will be passed in\n */\n IDBClose(callback) {\n if ( this.db ) {\n this.db.close();\n callback({result: 'Success: Closed Database Connection', success: true});\n }\n }\n\n}\n","/* eslint-disable no-unused-vars */\nimport { SavedData } from '../SavedData';\nimport { Container } from '../Container';\n\n/**\n *\n *\n * @export\n * @class BasePlugin\n * @property {Bellhop} client\n * @property {string} name\n */\nexport class BasePlugin {\n /**\n *Creates an instance of BasePlugin.\n * @param {string} name\n * @memberof BasePlugin\n */\n constructor(name) {\n this.name = name;\n this.client = null;\n }\n\n /**\n *\n * @param {Container} [container]\n * @memberof BasePlugin\n * @returns {Promise}\n */\n async preload({ client }) {\n this.client = client;\n }\n\n /**\n *\n * @memberof BasePlugin\n */\n start() {\n this.client.on('loaded', this.sendAllProperties);\n this.client.on('loadDone', this.sendAllProperties);\n }\n\n /**\n *\n * @param {Container} [_]\n * @memberof BasePlugin\n */\n init(_) { }\n\n /**\n *\n *\n * @param {string} prop\n * @param {any} value\n * @memberof BasePlugin\n */\n sendProperty(prop, value) {\n SavedData.write(prop, value);\n this.client.send(prop, value);\n }\n\n\n /**\n *\n * @param {Container} [_]\n * @memberof BasePlugin\n */\n sendAllProperties(_) { }\n\n /**\n *\n * @param {string} warningText\n * @memberof BasePlugin\n */\n warn(warningText) {\n console.warn(`[SpringRollContainer] ${this.name}: ${warningText}`);\n }\n}\n","/* eslint-disable no-unused-vars */\nimport { BasePlugin } from './BasePlugin';\nimport { Container } from '../Container';\n\n/**\n *\n *\n * @export\n * @class ButtonPlugin\n * @extends {BasePlugin}\n */\nexport class ButtonPlugin extends BasePlugin {\n /**\n *Creates an instance of ButtonPlugin.\n * @param {string} name\n *\n * @memberof ButtonPlugin\n */\n constructor(name) {\n super(name);\n this.sendMutes = false;\n }\n\n /**\n * @memberof ButtonPlugin\n * @param {Container} [container]\n */\n init(container) {\n // eslint-disable-line no-unused-vars\n this.sendMutes = true;\n }\n\n /**\n *\n * Applies the disabled class to the provided element\n * @param {HTMLButtonElement | Element} button\n * @memberof ButtonPlugin\n */\n _disableButton(button) {\n if (button instanceof HTMLButtonElement) {\n button.classList.remove('enabled');\n button.classList.add('disabled');\n }\n }\n\n /**\n *\n *\n * @memberof ButtonPlugin\n */\n reset() {\n this.sendMutes = false;\n }\n\n /**\n *\n *\n * @param {string} prop\n * @param {Element} button\n * @param {Boolean} muted\n * @memberof ButtonPlugin\n */\n _setMuteProp(prop, button, muted) {\n if (Array.isArray(button)) {\n button.forEach(b => this.changeMutedState(b, muted));\n } else {\n this.changeMutedState(button, muted);\n }\n\n this.sendProperty(prop, muted);\n }\n\n /**\n *\n *\n * @param {Element} button\n * @param {Boolean} muted\n * @returns\n * @memberof ButtonPlugin\n */\n changeMutedState(button, muted = false) {\n //most times button will be a Button class rather than an HTMLElement\n //But just in case the Button ui-element is not being used\n const htmlButton = button.button ? button.button : button;\n\n if (!(htmlButton instanceof HTMLElement)) {\n return;\n }\n\n htmlButton.classList.remove('unmuted');\n htmlButton.classList.remove('muted');\n htmlButton.classList.add(muted ? 'muted' : 'unmuted');\n }\n}\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (e) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (f) { /* empty */ }\n } return false;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~String(requireObjectCoercible(this))\n .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n// FF49- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('map');\n\n// `Array.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.github.io/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.github.io/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.github.io/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n return Object.isExtensible(Object.preventExtensions({}));\n});\n","var hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar defineProperty = require('../internals/object-define-property').f;\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + ++id, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar meta = module.exports = {\n REQUIRED: false,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar redefineAll = require('../internals/redefine-all');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(C.prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return C;\n },\n setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var nativeMethod = NativePrototype[KEY];\n redefine(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n nativeMethod.call(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n nativeMethod.call(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n // eslint-disable-next-line max-len\n if (isForced(CONSTRUCTOR_NAME, typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n })))) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.REQUIRED = true;\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, Constructor, CONSTRUCTOR_NAME);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.github.io/ecma262/#sec-set-objects\nmodule.exports = collection('Set', function (init) {\n return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","import { BasePlugin } from '../base-plugins/BasePlugin';\n\n/**\n * @export\n * @class RadioGroup\n * @property {string} controlName\n * @property {string} featureName\n * @property {string} radioElements\n * @property {string} defaultValue\n */\nexport class RadioGroup extends BasePlugin {\n /**\n * creates an instance of RadioGroup\n * @constructor\n * @param {string} selector selector string for the radio group\n * @param {string} controlName the name of the control (used for warning logging only)\n * @param {string} [featureName='captionStyles'] the feature name used by Springroll. Defaults to captionStyles\n * @param {string} defaultValue the value attribute of the radio button that should be selected by default\n * @param {string} pluginName name of the plugin that instantiated the RadioGroup. Used for logging warnings\n * @memberof RadioGroupPlugin\n */\n constructor({selector, controlName, featureName = 'captionStyles', defaultValue, pluginName}) {\n super(pluginName);\n this.controlName = controlName;\n this.featureName = featureName;\n this.radioElements = document.querySelectorAll(selector);\n this.defaultValue = defaultValue;\n\n this.radioGroup = {};\n\n if (this.radioElements.length <= 0) {\n this.warn(`${this.controlName} RadioGroup found no HTMLElements with selector: ${selector}`);\n return;\n }\n\n this.radioElements.forEach(radio => {\n if (radio.type !== 'radio') {\n this.warn(`${this.controlName} was provided a non Radio Button element with selector: ${selector}`);\n return;\n }\n radio.value = radio.value.toLowerCase();\n\n this.radioGroup[radio.value] = radio;\n });\n\n if (!this.radioGroup[this.defaultValue]) {\n this.warn(`${this.controlName} RadioGroup for selector: ${selector} does not have a radio button with value ${this.defaultValue} to use as default value. Using first element as default`);\n this.defaultValue = this.radioElements[0].value.toLowerCase();\n }\n\n this.radioGroup[this.defaultValue].checked = true;\n }\n\n /**\n * @param {string[]} valuesArray Array of acceptable values to check against the radio group.\n * @return {boolean}\n * @memberof RadioGroup\n */\n hasOnly(valuesArray) {\n\n for (const key in this.radioGroup) {\n if (!valuesArray.includes(this.radioGroup[key].value)) {\n this.warn(`${this.controlName} radio button value: ${this.radioGroup[key].value} is not an accepted value. Skipping radio group`);\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * @return {boolean}\n * @memberof RadioGroup\n */\n hasDuplicateValues() {\n return this.values.length !== [...new Set(this.values)].length;\n }\n\n /**\n * Adds change listeners to the radio buttons using the given callback function\n * @memberof RadioGroup\n * @param {Function} callBack event to fire on change\n */\n enableRadioEvents(callBack) {\n if (!this.radioGroup.length <= 0) {\n return;\n }\n\n const event = callBack;\n for (const radio in this.radioGroup) {\n this.radioGroup[radio].addEventListener('change', event);\n }\n }\n\n /**\n * removes the event listeners from the RadioGroup\n * @memberof RadioGroup\n * @param {Function} callBack event to fire on change\n */\n disableRadioEvents(callBack) {\n if (!this.radioGroup.length <= 0) {\n return;\n }\n for (const radio in this.radioGroup) {\n this.radioGroup[radio].removeEventListener('change', callBack);\n }\n }\n\n /**\n * enables display of the Radio buttons if the correct feature is present in the features list\n * @memberof RadioGroup\n * @param {object} data Object containing which features are enabled\n */\n displayRadios(data) {\n if (this.radioGroup.length <= 0 && data[this.featureName]) {\n this.warn(`${this.controlName} was not provided a valid input element or selector but '${this.featureName}' was included as a game feature`);\n return;\n }\n\n if (this.radioGroup.length <= 0) {\n return;\n }\n\n if (data[this.featureName]) {\n return;\n }\n\n for (const radio in this.radioGroup) {\n this.radioGroup[radio].style.display = 'none';\n }\n }\n\n /**\n * Reset the radio button states\n * @memberof RadioGroup\n */\n resetState() {\n this.radioGroup[this.defaultValue].checked = true;\n }\n\n /**\n * @readonly\n * @returns {number}\n * @memberof RadioGroup\n */\n get length() {\n return Object.keys(this.radioGroup).length;\n }\n\n /**\n * @readonly\n * @returns {number}\n * @memberof RadioGroup\n */\n get values() {\n return Object.values(this.radioGroup).map(radio => radio.value);\n }\n}\n","import { BasePlugin } from './BasePlugin';\nimport { RadioGroup } from '../ui-elements/RadioGroup';\n\n/**\n *\n *\n * @export\n * @class RadioGroupPlugin\n */\nexport class RadioGroupPlugin extends BasePlugin {\n /**\n *\n *Creates an instance of RadioGroupPlugin.\n * @constructor\n * @memberof RadioGroupPlugin\n * @param {string} name\n */\n constructor(cssSelector, name, {supportedValues, initialValue, controlName, featureName, radioCount}) {\n super(name);\n this.selectors = cssSelector ? cssSelector.split(',') : [];\n this.supportedValues = supportedValues;\n this.initialValue = supportedValues.includes(initialValue) ? initialValue : supportedValues[0];\n this.controlName = controlName;\n this.featureName = featureName;\n this.radioCount = radioCount;\n this.sendAllProperties = this.sendAllProperties.bind(this);\n\n this._currentValue = this.initialValue;\n\n this.radioGroups = this.setUpRadios(this.selectors);\n\n this.radioGroupsLength = this.radioGroups.length;\n }\n\n /**\n * @memberof RadioGroupPlugin\n * @param {string[]} selectors the separated selector strings used to target the radio button groups\n * @returns {RadioGroup[]}\n */\n setUpRadios(selectors) {\n const radioGroups = [];\n\n selectors.forEach((selector) => {\n const radioGroup = new RadioGroup({\n selector: selector.trim(),\n controlName: this.controlName,\n defaultValue: this.initialValue,\n pluginName: this.name,\n featureName: this.featureName\n });\n\n if (radioGroup.length !== this.radioCount) {\n this.warn(`Selector \"${selector}\" did not find exactly ${this.radioCount} radio buttons for ${this.controlName}. Skipping selector`);\n return;\n }\n\n if (!radioGroup.hasOnly(this.supportedValues)) {\n return;\n }\n\n if (radioGroup.hasDuplicateValues()) {\n this.warn(`Duplicate radio button values detected (values: ${radioGroup.values} ). Skipping radio group`);\n return;\n }\n\n radioGroups.push(radioGroup);\n });\n\n return radioGroups;\n }\n\n /**\n * @memberof RadioGroupPlugin\n */\n start() {\n this.client.on('loaded', this.sendAllProperties);\n this.client.on('loadDone', this.sendAllProperties);\n }\n\n /**\n *\n * Sends initial caption properties to the application\n * @memberof RadioGroupPlugin\n */\n sendAllProperties() {\n this.sendProperty(this.featureName, this.property);\n }\n\n /**\n * @memberof RadioGroupPlugin\n * @param {string} newValue\n */\n set currentValue(newValue) {\n if (!this.supportedValues.includes(newValue)) {\n return;\n }\n\n this._currentValue = newValue;\n\n for (let i = 0, l = this.radioGroups.length; i < l; i++) {\n this.radioGroups[i].radioGroup[newValue].checked = true;\n }\n }\n\n /**\n * @memberof RadioGroupPlugin\n * @return {string}\n */\n get currentValue() {\n return this._currentValue;\n }\n\n}\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.github.io/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n var first, third, radix, maxCode, digits, length, index, code;\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = it.charCodeAt(0);\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = it.slice(2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = digits.charCodeAt(index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.github.io/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var dummy = this;\n return dummy instanceof NumberWrapper\n // check on 1..constructor(foo) case\n && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","import { SavedData } from '../SavedData';\n\n/**\n * @export\n * @class Slider\n */\nexport class Slider {\n /**\n *Creates an instance of Slider\n * @param {object} params\n * @param {string | HTMLInputElement} params.slider the slider element or a selector string\n * @param {string} params.control the feature that this slider controols\n * @param {number} [min=0] slider min value\n * @param {number} [max=1] slider max value\n * @param {number} [step=0.1] slider step value\n * @param {number} [defaultValue=1] slider starting value\n * @memberof SliderPlugin\n */\n constructor({\n slider,\n control,\n min = 0,\n max = 1,\n step = 0.1,\n defaultValue = 1\n }) {\n this.min = min;\n this.max = max;\n this.step = step;\n this.sliderValue = defaultValue;\n this.control = control;\n this.slider = this.setUpSlider(slider, control);\n }\n\n /**\n * @param {string | HTMLInputElement | HTMLElement} slider\n * @param {string} control The control element (sensitivity, difficulty, pointer size, etc) this slider will be controlling\n * @returns {Element | HTMLElement}\n * @memberof Slider\n */\n setUpSlider(slider, control) {\n if ('string' === typeof slider) {\n slider = document.querySelector(slider);\n }\n\n if (!slider || 'range' !== slider.type) {\n return null;\n }\n const value = SavedData.read(control);\n\n slider.min = this.min;\n slider.max = this.max;\n slider.step = this.step;\n\n if ((value || value === 0) && value.toString().trim().length > 0) {\n slider.value = value;\n this.sliderValue = value;\n } else {\n slider.value = this.sliderValue;\n }\n\n return slider;\n }\n\n /**\n * Controls the range of the slider\n * @param {number} i\n * @returns\n * @memberof Slider\n */\n sliderRange(i) {\n if (i < this.min) {\n return this.min;\n } else if (i > this.max) {\n return this.max;\n } else {\n return i;\n }\n }\n\n /**\n * Adds change and input listeners to the slider using the given callback function\n * @memberof Slider\n * @param {Function} callBack event to fire on change or input\n */\n enableSliderEvents(callBack) {\n if (!this.slider) {\n return;\n }\n\n const event = callBack;\n this.slider.addEventListener('change', event);\n this.slider.addEventListener('input', event);\n }\n\n /**\n * removes the event listeners from the given slider.\n * @memberof Slider\n * @param {Function} callBack event to fire on change or input\n */\n disableSliderEvents(callBack) {\n if (!this.slider) {\n return;\n }\n const event = callBack;\n this.slider.removeEventListener('change', event);\n this.slider.removeEventListener('input', event);\n }\n /**\n * enables display of the Slider if it is present in the features list\n * @memberof Slider\n * @param {object} data Object containing which features are enabled\n */\n displaySlider(data) {\n if (!this.slider && data[this.control]) {\n console.warn(`${this.control} was not provided a valid input element or selector but was included as a game feature`);\n }\n\n if (!this.slider) {\n return;\n }\n\n this.slider.style.display = data[this.control] ? '' : 'none';\n }\n\n /**\n * @param {Event} event the event to be fired on the slider\n * @memberof Slider\n */\n dispatchEvent(event) {\n this.slider.dispatchEvent(event);\n }\n\n /**\n * @readonly\n * @returns {string}\n * @memberof Slider\n */\n get value() {\n return this.slider.value;\n }\n\n /**\n * @memberof Slider\n */\n set value(value) {\n this.slider.value = value;\n }\n}\n","/**\n * @export\n * @class Button\n */\nexport class Button {\n /**\n *Creates an instance of Button\n * @param {object} params\n * @param {string | HTMLElement} params.button the button itself or a selector string\n * @param {Function} params.onClick the function to call when the button is clicked\n * @param {string} channel the feature this button controls\n * @memberof ButtonPlugin\n */\n constructor({ button, onClick, channel }) {\n this.button =\n button instanceof HTMLElement ? button : document.querySelector(button);\n this.onClick = onClick;\n this.channel = channel;\n\n if (this.button) {\n this.button.addEventListener('click', onClick);\n }\n }\n\n /**\n * enables display of the button if it is present in the features list\n * @memberof Button\n * @param {object} data Object containing which features are enabled\n */\n displayButton(data) {\n if (!(this.button instanceof HTMLElement)) {\n return;\n }\n\n this.button.style.display =\n data[this.channel] || this.channel === 'pause' || this.channel === 'hints'\n ? ''\n : 'none';\n }\n\n /**\n * enables display of the button\n * @memberof Button\n */\n enableButton() {\n if (!this.button) {\n return;\n }\n this.button.classList.remove('disabled');\n }\n\n /**\n * \n * @param {string} className The classname to be appended to the end of the class property\n */\n addClass(className) {\n this.button.className = this.button.className ? this.button.className + ` ${ className }` : ` ${ className }`;\n }\n}\n","import { BasePlugin } from './BasePlugin';\nimport { Slider } from '../ui-elements';\n\n/**\n *\n *\n * @export\n * @class SliderPlugin\n */\nexport class SliderPlugin extends BasePlugin {\n /**\n *\n *Creates an instance of SliderPlugin.\n * @constructor\n * @memberof SliderPlugin\n * @param {string} cssSelector\n * @param {string} name\n * @param {object} options\n * @param {string | number} [options.defaultValue='0.5']\n * @param {string | number} [options.minValue='0']\n * @param {string | number} [options.maxValue='1']\n * @param {string} [options.featureName] Springroll Core feature name that the plugin is supporting\n */\n constructor(cssSelector, name, {defaultValue = '0.5', minValue = '0', maxValue = '1', featureName }) {\n super(name);\n this.featureName = featureName;\n this.minValue = minValue;\n this.defaultValue = defaultValue;\n this.maxValue = maxValue;\n this._currentValue = defaultValue;\n this.sliders = this.setUpSliders(cssSelector);\n this.slidersLength = this.sliders.length;\n this.sendAllProperties = this.sendAllProperties.bind(this);\n\n if (0 >= this.slidersLength) {\n this.warn('Plugin was not provided any valid HTML Elements');\n return;\n }\n }\n\n /**\n * @memberof SliderPlugin\n * @param {string[]} selectors the selector strings used to target the input elements\n * @returns {Slider[]}\n */\n setUpSliders(selectors) {\n const sliders = [];\n\n if (selectors instanceof HTMLElement) {\n sliders.push(new Slider({\n slider: selectors,\n control: this.featureName,\n defaultValue: this.defaultValue,\n minValue: this.minValue,\n maxValue: this.maxValue\n }));\n } else {\n document.querySelectorAll(selectors).forEach((slider) => {\n sliders.push(new Slider({\n slider: slider,\n control: this.featureName,\n defaultValue: this.defaultValue,\n minValue: this.minValue,\n maxValue: this.maxValue\n }));\n });\n }\n\n return sliders;\n }\n\n /**\n * @memberof SliderPlugin\n */\n init() {\n this.client.on(\n 'features',\n function(features) {\n if (!features.data) {\n return;\n }\n\n for (let i = 0; i < this.slidersLength; i++) {\n this.sliders[i].displaySlider(features.data);\n }\n }.bind(this)\n );\n }\n\n /**\n * @memberof SliderPlugin\n */\n start() {\n this._currentValue = this.sliders[0].value; //update current value to the saved data value set in Slider.\n this.client.on('loaded', this.sendAllProperties);\n this.client.on('loadDone', this.sendAllProperties);\n }\n\n /**\n *\n * Sends initial caption properties to the application\n * @memberof SliderPlugin\n */\n sendAllProperties() {\n this.sendProperty(this.featureName, this.currentValue);\n }\n\n /**\n * @memberof SliderPlugin\n * @param {string} newValue\n */\n set currentValue(newValue) {\n\n //just use first slider to ensure the number is valid.\n this._currentValue = this.sliders[0].sliderRange(Number(newValue));\n\n for (let i = 0; i < this.slidersLength; i++) {\n this.sliders[i].value = newValue;\n }\n }\n\n /**\n * @memberof SliderPlugin\n * @return {string}\n */\n get currentValue() {\n return this._currentValue;\n }\n\n}\n","import { SavedData } from '../SavedData';\nimport { ButtonPlugin } from '../base-plugins';\nimport { RadioGroup } from '../ui-elements';\n\nconst DEFAULT_CAPTIONS_STYLES = {\n size: 'medium',\n background: 'black',\n color: 'white',\n edge: 'none',\n font: 'arial',\n align: 'top'\n};\n\nconst DEFAULT_COLOR_STYLE = {color: 'white', background: 'black'};\nconst INVERTED_COLOR_STYLE = {color: 'black', background: 'white'};\nconst FONT_SIZE_VALUES = ['small', 'medium', 'large'];\nconst COLOR_VALUES = ['default', 'inverted'];\nconst ALIGN_VALUES = ['top', 'bottom'];\n\n/**\n * @export\n * @class CaptionsStylePlugin\n * @property {object} captionsStyles The collection of captions styles\n * @property {string[]} fontSizeSelectors selector strings for the radio button groups\n * @property {string[]} colorSelectors selector strings for the radio button groups\n * @property {string[]} alignmentSelectors selector strings for the radio button groups\n * @property {Object[]} fontSizeRadios array that contains each radio group\n * @property {Object[]} colorRadios array that contains each radio group\n * @property {Object[]} alignmentRadios array that contains each radio group\n * @property {number} fontSizeRadiosLength Length of the fontSizeRadios array\n * @property {number} colorRadiosLength Length of the colorRadios array\n * @property {number} alignmentRadiosLength Length of the alignmentRadios array\n * @extends {ButtonPlugin}\n */\nexport class CaptionsStylePlugin extends ButtonPlugin {\n /**\n * Creates an instance of CaptionsStylePlugin.\n * @param {string} fontSizeRadios selector string for one or more radio groups for caption font size\n * @param {string} colorRadios selector string for one or more radio groups for caption font/background colors\n * @param {string} alignmentRadios selector string for one or more radio groups for caption position\n * @param {string} [defaultFontSize='medium'] Default selected font size\n * @param {string} [defaultColor='default'] Default selected color\n * @param {string} [defaultAlignment='top'] Default selected alignment\n * @memberof CaptionsStylePlugin\n */\n constructor(fontSizeRadios, colorRadios, alignmentRadios,\n { defaultFontSize = 'medium', defaultColor = 'default', defaultAlignment = 'top' } = {}\n ) {\n super('Caption-Button-Plugin');\n this.sendAllProperties = this.sendAllProperties.bind(this);\n this.captionsStyles = Object.assign(\n {},\n DEFAULT_CAPTIONS_STYLES,\n SavedData.read(CaptionsStylePlugin.captionStyleKey) || {}\n );\n\n //split the selector strings into individual selectors.\n //Helps keep the input style consistent across plugins.\n this.fontSizeSelectors = fontSizeRadios ? fontSizeRadios.split(',') : [];\n this.colorSelectors = colorRadios ? colorRadios.split(',') : [];\n this.alignmentSelectors = alignmentRadios ? alignmentRadios.split(',') : [];\n\n this.defaultFontSize = FONT_SIZE_VALUES.includes(defaultFontSize) ? defaultFontSize : FONT_SIZE_VALUES[0];\n this.defaultColor = COLOR_VALUES.includes(defaultColor) ? defaultColor : COLOR_VALUES[0];\n this.defaultAlignment = ALIGN_VALUES.includes(defaultAlignment) ? defaultAlignment : ALIGN_VALUES[0];\n\n this.fontSizeRadios = [];\n this.colorRadios = [];\n this.alignmentRadios = [];\n\n this.fontSizeRadios = this.setUpFontSizeRadios(this.fontSizeSelectors);\n this.colorRadios = this.setUpColorRadios(this.colorSelectors);\n this.alignmentRadios = this.setUpAlignmentRadios(this.alignmentSelectors);\n\n this._captionsMuted = false;\n\n this.alignmentRadiosLength = this.alignmentRadios.length;\n this.fontSizeRadiosLength = this.fontSizeRadios.length;\n this.colorRadiosLength = this.colorRadios.length;\n\n if (0 >= (this.alignmentRadiosLength + this.fontSizeRadiosLength + this.colorRadiosLength)) {\n this.warn(\n 'Plugin was not provided any input elements'\n );\n return;\n }\n\n //set up change events\n for (let i = 0; i < this.colorRadiosLength; i++) {\n this.colorRadios[i].enableRadioEvents(this.onColorChange.bind(this));\n }\n for (let i = 0; i < this.alignmentRadiosLength; i++) {\n this.alignmentRadios[i].enableRadioEvents(this.onAlignmentChange.bind(this));\n }\n for (let i = 0; i < this.fontSizeRadiosLength; i++) {\n this.fontSizeRadios[i].enableRadioEvents(this.onFontSizeChange.bind(this));\n }\n }\n\n /**\n * @memberof CaptionsStylePlugin\n * @param {string[]} selectors the separated selector strings used to target the radio button groups\n * @returns {RadioGroup[]}\n */\n setUpFontSizeRadios(selectors) {\n const radioGroups = [];\n\n selectors.forEach((selector) => {\n const radioGroup = new RadioGroup({\n selector: selector.trim(),\n controlName: 'Font Size',\n defaultValue: this.defaultFontSize,\n pluginName: 'Caption-Button-Plugin'\n });\n\n if (radioGroup.length !== 3) {\n this.warn(`Selector \"${selector}\" did not find exactly three(3) radio buttons for caption font size. Skipping selector`);\n return;\n }\n\n if (!radioGroup.hasOnly(FONT_SIZE_VALUES)) {\n return;\n }\n\n if (radioGroup.hasDuplicateValues()) {\n this.warn(`Duplicate radio button values detected (values: ${radioGroup.values} ). Skipping radio group`);\n return;\n }\n\n radioGroups.push(radioGroup);\n });\n\n return radioGroups;\n }\n\n /**\n * @memberof CaptionsStylePlugin\n * @param {string[]} selectors the separated selector strings used to target the radio button groups\n * @returns {RadioGroup[]}\n */\n setUpColorRadios(selectors) {\n const radioGroups = [];\n\n selectors.forEach((selector) => {\n const radioGroup = new RadioGroup({\n selector: selector.trim(),\n controlName: 'Color',\n defaultValue: this.defaultColor,\n pluginName: 'Caption-Button-Plugin'\n });\n\n if (radioGroup.length !== 2) {\n this.warn(`Selector \"${selector}\" did not find exactly two(2) radio buttons for caption colors. Skipping selector`);\n return;\n }\n\n if (!radioGroup.hasOnly(COLOR_VALUES)) {\n return;\n }\n\n if (radioGroup.hasDuplicateValues()) {\n this.warn(`Duplicate radio button values detected (values: ${radioGroup.values} ). Skipping radio group`);\n return;\n }\n\n radioGroups.push(radioGroup);\n });\n\n return radioGroups;\n }\n\n /**\n * @memberof CaptionsStylePlugin\n * @param {string[]} selectors the separated selector strings used to target the radio button groups\n * @returns {RadioGroup[]}\n */\n setUpAlignmentRadios(selectors) {\n const radioGroups = [];\n\n selectors.forEach((selector) => {\n const radioGroup = new RadioGroup({\n selector: selector.trim(),\n controlName: 'Alignment',\n defaultValue: this.defaultAlignment,\n pluginName: 'Caption-Button-Plugin'\n });\n if (radioGroup.length !== 2) {\n this.warn(`Selector \"${selector}\" did not find exactly two(2) radio buttons for caption alignment. Skipping selector`);\n return;\n }\n\n if (!radioGroup.hasOnly(ALIGN_VALUES)) {\n return;\n }\n\n if (radioGroup.hasDuplicateValues()) {\n this.warn(`Duplicate radio button values detected (values: ${radioGroup.values} ). Skipping radio group`);\n return;\n }\n\n radioGroups.push(radioGroup);\n });\n\n return radioGroups;\n }\n\n /**\n * @memberof CaptionsStylePlugin\n */\n init() {\n // Handle the features request\n this.client.on(\n 'features',\n function($event) {\n\n for (const radio of this.radios) {\n radio.displayRadios($event.data);\n }\n\n }.bind(this)\n );\n\n this.client.on(\n 'caption-set-style',\n function($event) {\n this.setCaptionsStyles($event.data || {});\n }.bind(this)\n );\n }\n /**\n * @memberof CaptionsStylePlugin\n */\n start() {\n this.setCaptionsStyles(SavedData.read(CaptionsStylePlugin.captionStyleKey));\n\n this.client.on('loaded', this.sendAllProperties);\n this.client.on('loadDone', this.sendAllProperties);\n }\n\n /**\n *\n * Sends initial caption properties to the application\n * @memberof CaptionsStylePlugin\n */\n sendAllProperties() {\n this.sendProperty(CaptionsStylePlugin.captionStyleKey, this.captionsStyles);\n }\n /**\n * Fired whenever the font size radios are updated\n * @param {Event} e\n * @memberof CaptionsStylePlugin\n */\n onFontSizeChange(e) {\n this.setCaptionsStyles('size', e.target.value);\n\n this.fontSizeRadios.forEach((group) => {\n group.radioGroup[e.target.value].checked = true;\n });\n }\n\n /**\n * Fired whenever the alignment radios are updated\n * @param {Event} e\n * @memberof CaptionsStylePlugin\n */\n onAlignmentChange(e) {\n this.setCaptionsStyles('align', e.target.value);\n\n this.alignmentRadios.forEach((group) => {\n group.radioGroup[e.target.value].checked = true;\n });\n }\n\n /**\n * Fired whenever the color radios are updated\n * @param {Event} e\n * @memberof CaptionsStylePlugin\n */\n onColorChange(e) {\n const styles = e.target.value === 'default' ? DEFAULT_COLOR_STYLE : INVERTED_COLOR_STYLE;\n\n this.setCaptionsStyles(styles);\n\n this.colorRadios.forEach((group) => {\n group.radioGroup[e.target.value].checked = true;\n });\n }\n\n /**\n * Reset the captions styles\n * @param {Event} e\n * @memberof CaptionsStylePlugin\n */\n clearCaptionsStyles() {\n this.captionsStyles = Object.assign({}, DEFAULT_CAPTIONS_STYLES);\n this.setCaptionsStyles();\n\n for (const radio of this.radios) {\n radio.resetState();\n }\n }\n\n /**\n * Get the captions styles\n * @param {string} [prop] The optional property, values are \"size\", \"edge\", \"font\", \"background\", \"color\"\n * @return {object | string} The collection of styles, see setCaptionsStyles for more info.\n * @memberof CaptionsStylePlugin\n */\n getCaptionsStyles(prop) {\n return prop ? this.captionsStyles[prop] : this.captionsStyles;\n }\n\n /**\n * Set the captions styles\n *\n * @param {object} [styles] The style options or the name of the\n * property (e.g., \"color\", \"edge\", \"font\", \"background\", \"size\")\n * @param {string} [styles.color='white'] The text color, the default is white\n * @param {string} [styles.edge='none'] The edge style, default is none\n * @param {string} [styles.font='arial'] The font style, default is arial\n * @param {string} [styles.background='black'] The background style, black\n * @param {string} [styles.size='md'] The font style default is medium\n * @param {string} [styles.align='top'] The align style default is top of the window\n * @param {string} [value=''] If setting styles parameter as a string, this is the value of the property.\n * @memberof CaptionsStylePlugin\n */\n setCaptionsStyles(styles = DEFAULT_CAPTIONS_STYLES, value = '') {\n if (typeof styles === 'object') {\n Object.assign(this.captionsStyles, styles);\n } else if (typeof styles === 'string') {\n this.captionsStyles[styles] = value;\n }\n\n SavedData.write(CaptionsStylePlugin.captionStyleKey, this.captionsStyles);\n if (this.client) {\n this.client.send(CaptionsStylePlugin.captionStyleKey, this.captionsStyles);\n }\n }\n\n /**\n * @readonly\n * @returns {number}\n * @memberof RadioGroup\n */\n get radios() {\n return this.colorRadios\n .concat(this.alignmentRadios)\n .concat(this.fontSizeRadios);\n }\n /**\n * Get captionStyle Key\n * @readonly\n * @static\n * @memberof CaptionStyleKey\n * @returns {string}\n */\n static get captionStyleKey() {\n return 'captionsStyles';\n }\n\n}\n","import { SavedData } from '../SavedData';\nimport { ButtonPlugin } from '../base-plugins';\nimport { Button } from '../ui-elements';\n\n/**\n * @export\n * @class CaptionsTogglePlugin\n * @property {Button[]} _captionsButtons An array of caption mute buttons\n * @property {boolean} _captionsMuted True if captions are muted\n * @property {number} captionsButtonLength The length of the captionsButtons array\n * @extends {ButtonPlugin}\n */\nexport class CaptionsTogglePlugin extends ButtonPlugin {\n /**\n *Creates an instance of CaptionsTogglePlugin.\n * @param {string | HTMLElement} captionsButtons selector string for one or more captions mute buttons\n * @memberof CaptionsTogglePlugin\n */\n constructor(captionsButtons) {\n super('Caption-Button-Plugin');\n this.sendAllProperties = this.sendAllProperties.bind(this);\n\n this._captionsButtons = [];\n\n if ( captionsButtons instanceof HTMLElement ) {\n this._captionsButtons[0] = new Button({\n button: captionsButtons,\n onClick: this.captionsButtonClick.bind(this),\n channel: 'captions'\n });\n } else {\n document.querySelectorAll(captionsButtons).forEach((button) => {\n this._captionsButtons.push(new Button({\n button: button,\n onClick: this.captionsButtonClick.bind(this),\n channel: 'captions'\n }));\n });\n }\n\n this._captionsMuted = false;\n this.captionsButtonLength = this._captionsButtons.length;\n\n if (0 >= this.captionsButtonLength) {\n this.warn(\n 'Plugin was not provided any valid button or input elements'\n );\n return;\n }\n }\n\n /**\n * @memberof CaptionsTogglePlugin\n */\n init() {\n // Handle the features request\n this.client.on(\n 'features',\n function($event) {\n for (let i = 0; i < this.captionsButtonLength; i ++) {\n this._captionsButtons[i].displayButton($event.data);\n }\n\n if (null === SavedData.read(CaptionsTogglePlugin.captionsToggleKey)) {\n return;\n }\n\n this.captionsMuted = !!SavedData.read(CaptionsTogglePlugin.captionsToggleKey);\n\n }.bind(this)\n );\n }\n /**\n * @memberof CaptionsTogglePlugin\n */\n start() {\n this.captionsMuted = !!SavedData.read(CaptionsTogglePlugin.captionsToggleKey);\n\n this.client.on('loaded', this.sendAllProperties);\n this.client.on('loadDone', this.sendAllProperties);\n }\n\n /**\n *\n * Sends initial caption properties to the application\n * @memberof CaptionsTogglePlugin\n */\n sendAllProperties() {\n this.sendProperty(CaptionsTogglePlugin.captionsToggleKey, this.captionsMuted);\n }\n\n /**\n * @memberof CaptionsTogglePlugin\n */\n captionsButtonClick() {\n this.captionsMuted = !this.captionsMuted;\n }\n\n /**\n * @readonly\n * @memberof CaptionsTogglePlugin\n */\n get captionsMuted() {\n return this._captionsMuted;\n }\n\n /**\n * @param {boolean} muted\n * @memberof CaptionsTogglePlugin\n */\n set captionsMuted(muted) {\n this._captionsMuted = muted;\n this._setMuteProp(\n 'captionsMuted',\n this._captionsButtons,\n this._captionsMuted\n );\n }\n\n /**\n * Get CaptionToggle Key\n * @readonly\n * @static\n * @memberof captionsToggleKey\n * @returns {string}\n */\n static get captionsToggleKey() {\n return 'captionsMuted';\n }\n}\n","import { ButtonPlugin } from '../base-plugins';\nimport { Button } from '../ui-elements';\n\n/**\n * Requests a hint or help from the game\n * @class HelpPlugin\n * @property {boolean} paused\n * @property {boolean} _helpEnabled\n * @property {boolean} onPause\n * @property {number} helpButtonsLength\n * @extends {ButtonPlugin}\n * @export\n */\nexport class HelpPlugin extends ButtonPlugin {\n /**\n * Creates an instance of HelpPlugin.\n * @param {string | HTMLElement} helpButtons The selector or HTMLElement for the button\n * @memberof HelpPlugin\n */\n constructor(helpButtons) {\n super('Help-Button-Plugin');\n\n this._helpButtons = [];\n\n if (helpButtons instanceof HTMLElement) {\n this._helpButtons[0] = new Button({\n button: helpButtons,\n onClick: this.helpButtonClick.bind(this),\n channel: 'hints' // the check to see if this feature exists is different than most so passing this ensures it'll work the same.\n });\n } else {\n document.querySelectorAll(helpButtons).forEach((button) => {\n this._helpButtons.push(\n new Button({\n button: button,\n onClick: this.helpButtonClick.bind(this),\n channel: 'hints'\n })\n );\n });\n }\n\n this.paused = false;\n this._helpEnabled = false;\n this.onPause = this.onPause.bind(this);\n this.helpButtonsLength = this._helpButtons.length;\n\n if (this.helpButtonsLength <= 0) {\n this.warn('Plugin was not provided any valid button elements');\n }\n }\n /**\n * Called when the game is either paused or resumed\n * @param {object} $event\n * @memberof HelpPlugin\n */\n onPause($event) {\n this.paused = $event.data.paused;\n // Disable the help button when paused if it's active\n if (\n this.paused &&\n this.helpEnabled\n ) {\n for (let i = 0; i < this.helpButtonsLength; i++) {\n this._helpButtons[i].button.setAttribute('data-paused', 'true');\n }\n this.helpEnabled = false;\n } else {\n for (let i = 0; i < this.helpButtonsLength; i++) {\n if (this._helpButtons[i].button.getAttribute('data-paused')) {\n this._helpButtons[i].button.setAttribute('data-paused', '');\n this.helpEnabled = true;\n }\n }\n }\n }\n\n /**\n *\n *\n * @memberof HelpPlugin\n */\n helpButtonClick() {\n if (\n !this.paused &&\n this.helpEnabled\n ) {\n this.client.send('playHelp');\n }\n }\n\n /**\n * @memberof HelpPlugin\n */\n init() {\n // Handle pause\n this.client.on('paused', this.onPause);\n\n // Handle features changed\n this.client.on(\n 'features',\n function(features) {\n this.helpEnabled = features.data.hints;\n for (let i = 0; i < this.helpButtonsLength; i++) {\n this._helpButtons[i].displayButton(features.data);\n }\n }.bind(this)\n );\n\n this.client.on(\n 'helpEnabled',\n function(event) {\n this._helpEnabled = !!event.data;\n }.bind(this)\n );\n }\n\n /**\n * @memberof HelpPlugin\n */\n get helpEnabled() {\n return this._helpEnabled;\n }\n\n /**\n * Fired when the enabled status of the help button changes\n * @function helpEnabled\n * @param {boolean} enabled If the help button is enabled\n * @memberof HelpPlugin\n */\n set helpEnabled(enabled) {\n this._helpEnabled = enabled;\n for (let i = 0; i < this.helpButtonsLength; i++) {\n this._helpButtons[i].button.classList.remove('disabled');\n this._helpButtons[i].button.classList.remove('enabled');\n this._helpButtons[i].button.classList.add(enabled ? 'enabled' : 'disabled');\n }\n\n this.client.trigger('helpEnabled');\n }\n\n /**\n * @readonly\n * @static\n * @memberof HelpPlugin\n * @returns {string}\n */\n static get helpKey() {\n return 'help';\n }\n\n}\n","import { ButtonPlugin } from '../base-plugins';\nimport { PageVisibility } from '../PageVisibility';\nimport { Button } from '../ui-elements';\n/**\n * @class Container\n * @property {object[]} sliders an array of all slider objects attached to PausePlugin\n * @extends ButtonPlugin\n */\nexport class PausePlugin extends ButtonPlugin {\n /**\n * Creates an instance of PausePlugin.\n * @param {string | HTMLElement} pauseButton selector string or HTML Element for the input(s)\n * @param {boolean} manageOwnVisibility whether the plugin should manage container's visibility or some other source will handle it\n * @memberof PausePlugin\n */\n constructor(pauseButton, manageOwnVisibility = true) {\n super('Pause-Button-plugin');\n this._manageOwnVisibility = manageOwnVisibility;\n this._appBlurred = false;\n this._containerBlurred = false;\n this._focusTimer = null;\n this._isManualPause = false;\n this._keepFocus = false;\n this._paused = false;\n this.iframe = null;\n this.focusApp = this.focusApp.bind(this);\n this.manageFocus = this.manageFocus.bind(this);\n this.onKeepFocus = this.onKeepFocus.bind(this);\n this.onFocus = this.onFocus.bind(this);\n const onPauseToggle = this.onPauseToggle.bind(this);\n\n this.pauseDisabled = false;\n this._pauseButton = [];\n\n this.pageVisibility = new PageVisibility(\n this.onContainerFocus.bind(this),\n this.onContainerBlur.bind(this)\n );\n\n this.pageVisibility.enabled = this.manageOwnVisibility;\n\n if (pauseButton instanceof HTMLElement) {\n this._pauseButton[0] = new Button({\n button: pauseButton,\n onClick: onPauseToggle,\n channel: PausePlugin.pauseKey\n });\n } else {\n document.querySelectorAll(pauseButton).forEach((button) => {\n this._pauseButton.push(new Button({\n button: button,\n onClick: onPauseToggle,\n channel: PausePlugin.pauseKey\n }));\n });\n }\n }\n\n /**\n * updates _paused and also sends the pause event to the application\n * @memberof PausePlugin\n * @param {Boolean} paused\n */\n set pause(paused) {\n paused = !!paused;\n\n if (this.pauseDisabled) {\n return;\n }\n this._paused = paused;\n\n this.client.send(PausePlugin.pauseKey, paused);\n this.client.trigger(paused ? 'paused' : 'resumed', { paused });\n\n for (let i = 0, l = this._pauseButton.length; i < l; i++) {\n this._pauseButton[i].button.classList.remove('unpaused');\n this._pauseButton[i].button.classList.remove('paused');\n this._pauseButton[i].button.classList.add(paused ? 'paused' : 'unpaused');\n }\n }\n\n /**\n * @memberof PausePlugin\n * @returns {Boolean}\n */\n get pause() {\n return this._paused;\n }\n\n /**\n * updates _manageOwnVisibility and also re-enables pageVisibility\n * @memberof PausePlugin\n * @param {Boolean} manageOwnVisibility\n */\n set manageOwnVisibility(manageOwnVisibility) {\n this._manageOwnVisibility = manageOwnVisibility;\n\n this.pageVisibility.enabled = this._manageOwnVisibility;\n }\n\n /**\n * @memberof PausePlugin\n * @returns {Boolean}\n */\n get manageOwnVisibility() {\n return this._manageOwnVisibility;\n }\n\n /**\n * forces focus onto the iframe application window\n * @memberof PausePlugin\n */\n focusApp() {\n if (!this.hasDom) {\n // We don't have a dom with a content window, fail quietly\n return;\n }\n\n this.iframe.contentWindow.focus();\n }\n\n /**\n * blurs the application iframe window\n * @memberof PausePlugin\n */\n blurApp() {\n if (!this.hasDom) {\n return;\n }\n this.iframe.contentWindow.blur();\n }\n\n /**\n * Determines what pause state should be sent, if any, on focus or blur events.\n * @method manageFocus\n * @memberof PausePlugin\n */\n manageFocus() {\n if (!this.manageOwnVisibility) {\n return;\n }\n // Unfocus on the iframe\n if (this._keepFocus) {\n this.blurApp();\n }\n\n // we only need one delayed call, at the end of any\n // sequence of rapidly-fired blur/focus events\n if (this._focusTimer) {\n clearTimeout(this._focusTimer);\n }\n\n // Delay setting of 'paused' in case we get another focus event soon.\n // Focus events are sent to the container asynchronously, and this was\n // causing rapid toggling of the pause state and related issues,\n // especially in Internet Explorer\n this._focusTimer = setTimeout(\n function () {\n this._focusTimer = null;\n // A manual pause cannot be overriden by focus events.\n // User must click the resume button.\n if (this._isManualPause) {\n return;\n }\n\n this.pause = Boolean(this._containerBlurred && this._appBlurred);\n\n // Focus on the content window when blurring the app\n // but selecting the container\n if (this._keepFocus && !this._containerBlurred && this._appBlurred) {\n this.focusApp();\n }\n }.bind(this),\n 100\n );\n }\n\n /**\n * Handle the keep focus event for the window\n * @method onKeepFocus\n * @memberof PausePlugin\n * @private\n */\n onKeepFocus($event) {\n this._keepFocus = !!$event.data;\n this.manageFocus();\n }\n\n /**\n * Handle focus events sent from iFrame children\n * @method onFocus\n * @memberof PausePlugin\n * @private\n */\n onFocus($event) {\n this._appBlurred = !$event.data;\n this.manageFocus();\n }\n\n /**\n * Handle focus events sent from container's window\n * @method onContainerFocus\n * @memberof PausePlugin\n * @private\n */\n onContainerFocus() {\n this._containerBlurred = false;\n this.manageFocus();\n }\n\n /**\n * Handle blur events sent from container's window\n * @method onContainerBlur\n * @memberof PausePlugin\n * @private\n */\n onContainerBlur() {\n //Set both container and application to blurred,\n //because some blur events are only happening on the container.\n //If container is blurred because application area was just focused,\n //the application's focus event will override the blur imminently.\n this._containerBlurred = this._appBlurred = true;\n this.manageFocus();\n }\n\n /**\n * @memberof PausePlugin\n */\n onPauseToggle() {\n this._isManualPause = !this._isManualPause;\n this.pause = !this.pause;\n }\n\n /**\n * @param {Container} container\n * @memberof PausePlugin\n */\n init({ iframe }) {\n this.iframe = iframe;\n\n this.client.on(\n 'features',\n function (features) {\n if (features.disablePause) {\n this.pauseDisabled = true;\n }\n\n for (let i = 0, l = this._pauseButton.length; i < l; i++) {\n this._pauseButton[i].displayButton(features.data);\n }\n }.bind(this)\n );\n this.client.on('focus', this.onFocus);\n this.client.on('keepFocus', this.onKeepFocus);\n\n this.pause = this._paused;\n }\n\n /**\n * Function to check if we have a dom with a contentWindow\n * @readonly\n * @returns {boolean}\n * @memberof PausePlugin\n */\n get hasDom() {\n return Boolean(null !== this.iframe && this.iframe.contentWindow);\n }\n\n /**\n * @readonly\n * @memberof PausePlugin\n * @returns {HTMLButtonElement[]}\n */\n get pauseButton() {\n const buttons = [];\n for (let i = 0, l = this._pauseButton.length; i < l; i++) {\n buttons.push(this._pauseButton[i].button);\n }\n return buttons;\n }\n\n /**\n * @readonly\n * @static\n * @memberof PausePlugin\n * @returns {string}\n */\n static get pauseKey() {\n return 'pause';\n }\n}\n","import { SavedData } from '../SavedData';\nimport { ButtonPlugin } from '../base-plugins';\nimport { Slider, Button } from '../ui-elements';\n\n/**\n * @export\n * @class SoundPlugin\n * @extends {ButtonPlugin}\n *\n */\nexport class SoundPlugin extends ButtonPlugin {\n /**\n * Creates an instance of SoundPlugin.\n * @param {string | HTMLElement} [soundButtons] selector string or HTML Element for the input(s)\n * @param {string | HTMLElement} [musicButtons] selector string or HTML Element for the input(s)\n * @param {string | HTMLElement} [voButtons] selector string or HTML Element for the input(s)\n * @param {string | HTMLElement} [sfxButtons] selector string or HTML Element for the input(s)\n * @param {string | HTMLElement} [soundSliders] selector string or HTML Element for the input(s)\n * @param {string | HTMLElement} [musicSliders] selector string or HTML Element for the input(s)\n * @param {string | HTMLElement} [sfxSliders] selector string or HTML Element for the input(s)\n * @param {string | HTMLElement} [voSliders] selector string or HTML Element for the input(s)\n * @memberof SoundPlugin\n */\n constructor({\n soundButtons,\n musicButtons,\n sfxButtons,\n voButtons,\n soundSliders,\n musicSliders,\n sfxSliders,\n voSliders\n } = {}) {\n super('Sound-Button-Plugin');\n const saved = SavedData.read(SoundPlugin.soundMutedKey);\n this.sendAllProperties = this.sendAllProperties.bind(this);\n this._soundMuted = saved ? saved : false;\n this._musicMuted = false;\n this._voMuted = false;\n this._sfxMuted = false;\n\n this.soundVolume = 1;\n this.musicVolume = 1;\n this.sfxVolume = 1;\n this.voVolume = 1;\n\n this.soundSliders = [];\n this.musicSliders = [];\n this.sfxSliders = [];\n this.voSliders = [];\n\n this.soundButtons = [];\n this.musicButtons = [];\n this.sfxButtons = [];\n this.voButtons= [];\n\n if (soundSliders instanceof HTMLElement) {\n this.soundSliders[0] = new Slider({\n slider: soundSliders,\n control: SoundPlugin.soundVolumeKey,\n defaultValue: this.soundVolume\n });\n } else {\n document.querySelectorAll(soundSliders).forEach((slider) => {\n const newSlider = new Slider({\n slider: slider,\n control: SoundPlugin.soundVolumeKey,\n defaultValue: this.soundVolume\n });\n if (newSlider.slider) {\n this.soundSliders.push(newSlider);\n }\n });\n }\n if (musicSliders instanceof HTMLElement) {\n this.musicSliders[0] = new Slider({\n slider: musicSliders,\n control: SoundPlugin.musicVolumeKey,\n defaultValue: this.musicVolume\n });\n } else {\n document.querySelectorAll(musicSliders).forEach((slider) => {\n const newSlider = new Slider({\n slider: slider,\n control: SoundPlugin.musicVolumeKey,\n defaultValue: this.musicVolume\n });\n if (newSlider.slider) {\n this.musicSliders.push(newSlider);\n }\n });\n }\n if (sfxSliders instanceof HTMLElement) {\n this.sfxSliders[0] = new Slider({\n slider: sfxSliders,\n control: SoundPlugin.sfxVolumeKey,\n defaultValue: this.sfxVolume\n });\n } else {\n document.querySelectorAll(sfxSliders).forEach((slider) => {\n const newSlider = new Slider({\n slider: slider,\n control: SoundPlugin.sfxVolumeKey,\n defaultValue: this.sfxVolume\n });\n if (newSlider.slider) {\n this.sfxSliders.push(newSlider);\n }\n });\n }\n if (voSliders instanceof HTMLElement) {\n this.voSliders[0] = new Slider({\n slider: voSliders,\n control: SoundPlugin.voVolumeKey,\n defaultValue: this.voVolume\n });\n } else {\n document.querySelectorAll(voSliders).forEach((slider) => {\n const newSlider = new Slider({\n slider: slider,\n control: SoundPlugin.voVolumeKey,\n defaultValue: this.voVolume\n });\n if (newSlider.slider) {\n this.voSliders.push(newSlider);\n }\n });\n }\n\n if ( soundButtons instanceof HTMLElement ) {\n this.soundButtons[0] = new Button({\n button: soundButtons,\n onClick: this.onSoundToggle.bind(this),\n channel: SoundPlugin.soundKey\n });\n } else {\n document.querySelectorAll(soundButtons).forEach((button) => {\n this.soundButtons.push(new Button({\n button: button,\n onClick: this.onSoundToggle.bind(this),\n channel: SoundPlugin.soundKey\n }));\n });\n }\n if ( musicButtons instanceof HTMLElement ) {\n this.musicButtons[0] = new Button({\n button: musicButtons,\n onClick: this.onMusicToggle.bind(this),\n channel: 'music'\n });\n } else {\n document.querySelectorAll(musicButtons).forEach((button) => {\n this.musicButtons.push(new Button({\n button: button,\n onClick: this.onMusicToggle.bind(this),\n channel: 'music'\n }));\n });\n }\n if ( sfxButtons instanceof HTMLElement ) {\n this.sfxButtons[0] = new Button({\n button: sfxButtons,\n onClick: this.onSFXToggle.bind(this),\n channel: 'sfx'\n });\n } else {\n document.querySelectorAll(sfxButtons).forEach((button) => {\n this.sfxButtons.push(new Button({\n button: button,\n onClick: this.onSFXToggle.bind(this),\n channel: 'sfx'\n }));\n });\n }\n if ( voButtons instanceof HTMLElement ) {\n this.voButtons[0] = new Button({\n button: voButtons,\n onClick: this.onVOToggle.bind(this),\n channel: 'vo'\n });\n } else {\n document.querySelectorAll(voButtons).forEach((button) => {\n this.voButtons.push(new Button({\n button: button,\n onClick: this.onVOToggle.bind(this),\n channel: 'vo'\n }));\n });\n }\n\n this.soundSlidersLength = this.soundSliders.length;\n this.musicSlidersLength = this.musicSliders.length;\n this.sfxSlidersLength = this.sfxSliders.length;\n this.voSlidersLength = this.voSliders.length;\n this.soundButtonsLength = this.soundButtons.length;\n this.musicButtonsLength = this.musicButtons.length;\n this.sfxButtonsLength = this.sfxButtons.length;\n this.voButtonsLength = this.voButtons.length;\n\n if (0 >= (this.soundSlidersLength + this.musicSlidersLength + this.sfxSlidersLength + this.voSlidersLength + this.soundButtonsLength + this.musicButtonsLength + this.sfxButtonsLength + this.voButtonsLength)) {\n this.warn('Plugin was not provided any valid HTML Elements');\n return;\n }\n\n for (let i = 0; i < this.soundSlidersLength; i++) {\n this.soundSliders[i].enableSliderEvents(this.onSoundVolumeChange.bind(this));\n }\n for (let i = 0; i < this.musicSlidersLength; i++) {\n this.musicSliders[i].enableSliderEvents(this.onMusicVolumeChange.bind(this));\n }\n for (let i = 0; i < this.sfxSlidersLength; i++) {\n this.sfxSliders[i].enableSliderEvents(this.onSFXVolumeChange.bind(this));\n }\n for (let i = 0; i < this.voSlidersLength; i++) {\n this.voSliders[i].enableSliderEvents(this.onVOVolumeChange.bind(this));\n }\n\n if (this.soundSliders[0] && this.soundSliders[0].slider) {\n this.soundVolume = this.soundSliders[0].value;\n }\n if (this.musicSliders[0] && this.musicSliders[0].slider) {\n this.musicVolume = this.musicSliders[0].value;\n }\n if (this.sfxSliders[0] && this.sfxSliders[0].slider) {\n this.sfxVolume = this.sfxSliders[0].value;\n }\n if (this.voSliders[0] && this.voSliders[0].slider) {\n this.voVolume = this.voSliders[0].value;\n }\n }\n\n /**\n * @memberof SoundPlugin\n * @param {Event} e\n */\n onSoundVolumeChange(e) {\n this.soundVolume = this.soundSliders[0].sliderRange(\n Number(e.target.value)\n );\n this.soundMuted = !this.soundVolume;\n this._checkSoundMute();\n this.sendProperty(SoundPlugin.soundVolumeKey, this.soundVolume);\n\n for (let i = 0; i < this.soundSlidersLength; i++) {\n this.soundSliders[i].value = this.soundVolume;\n }\n }\n\n /**\n * @memberof SoundPlugin\n * @param {Event} e\n */\n onMusicVolumeChange(e) {\n this.musicVolume = this.musicSliders[0].sliderRange(\n Number(e.target.value)\n );\n this.musicMuted = !this.musicVolume;\n this._checkSoundMute();\n this.sendProperty(SoundPlugin.musicVolumeKey, this.musicVolume);\n\n for (let i = 0; i < this.musicSlidersLength; i++) {\n this.musicSliders[i].value = this.musicVolume;\n }\n }\n\n /**\n * @memberof SoundPlugin\n * @param {Event} e\n */\n onVOVolumeChange(e) {\n this.voVolume = this.voSliders[0].sliderRange(Number(e.target.value));\n this.voMuted = !this.voVolume;\n this._checkSoundMute();\n this.sendProperty(SoundPlugin.voVolumeKey, this.voVolume);\n for (let i = 0; i < this.voSlidersLength; i++) {\n this.voSliders[i].value = this.voVolume;\n }\n }\n\n /**\n * @memberof SoundPlugin\n * @param {Event} e\n */\n onSFXVolumeChange(e) {\n this.sfxVolume = this.sfxSliders[0].sliderRange(Number(e.target.value));\n this.sfxMuted = !this.sfxVolume;\n this._checkSoundMute();\n this.sendProperty(SoundPlugin.sfxVolumeKey, this.sfxVolume);\n\n for (let i = 0; i < this.sfxSlidersLength; i++) {\n this.sfxSliders[i].value = this.sfxVolume;\n }\n }\n\n /**\n * @memberof SoundPlugin\n */\n onSoundToggle() {\n const muted = !this.soundMuted;\n this.soundMuted = muted;\n this.musicMuted = muted;\n this.voMuted = muted;\n this.sfxMuted = muted;\n }\n\n /**\n * @memberof SoundPlugin\n */\n onMusicToggle() {\n this.musicMuted = !this.musicMuted;\n this._checkSoundMute();\n }\n\n /**\n * @memberof SoundPlugin\n */\n onVOToggle() {\n this.voMuted = !this.voMuted;\n this._checkSoundMute();\n }\n\n /**\n * @memberof SoundPlugin\n */\n onSFXToggle() {\n this.sfxMuted = !this.sfxMuted;\n this._checkSoundMute();\n }\n\n /**\n * @memberof SoundPlugin\n */\n _checkSoundMute() {\n this.soundMuted = this.sfxMuted && this.voMuted && this.musicMuted;\n }\n\n /**\n * @param {string} key\n * @param {*} value\n * @param {Element} element\n * @memberof SoundPlugin\n */\n setMuteProp(key, value, element) {\n this['_' + key] = value;\n this._setMuteProp(key, element, value);\n }\n\n /**\n * @memberof SoundPlugin\n */\n init() {\n this.client.on(\n 'features',\n function(features) {\n if (!features.data) {\n return;\n }\n\n for (let i = 0; i < this.soundButtonsLength; i++) {\n this.soundButtons[i].displayButton(features.data);\n }\n for (let i = 0; i < this.musicButtonsLength; i++) {\n this.musicButtons[i].displayButton(features.data);\n }\n for (let i = 0; i < this.sfxButtonsLength; i++) {\n this.sfxButtons[i].displayButton(features.data);\n }\n for (let i = 0; i < this.voButtonsLength; i++) {\n this.voButtons[i].displayButton(features.data);\n }\n for (let i = 0; i < this.soundSlidersLength; i++) {\n this.soundSliders[i].displaySlider(features.data);\n }\n for (let i = 0; i < this.musicSlidersLength; i++) {\n this.musicSliders[i].displaySlider(features.data);\n }\n for (let i = 0; i < this.sfxSlidersLength; i++) {\n this.sfxSliders[i].displaySlider(features.data);\n }\n for (let i = 0; i < this.voSlidersLength; i++) {\n this.voSliders[i].displaySlider(features.data);\n }\n }.bind(this)\n );\n }\n\n /**\n * @memberof SoundPlugin\n */\n start() {\n\n for (let i = 0; i < this.soundButtonsLength; i++) {\n this.soundButtons[i].enableButton();\n }\n for (let i = 0; i < this.musicButtonsLength; i++) {\n this.musicButtons[i].enableButton();\n }\n for (let i = 0; i < this.sfxButtonsLength; i++) {\n this.sfxButtons[i].enableButton();\n }\n for (let i = 0; i < this.voButtonsLength; i++) {\n this.voButtons[i].enableButton();\n }\n\n this.soundMuted = !!SavedData.read(SoundPlugin.soundMutedKey);\n this.musicMuted = !!SavedData.read(SoundPlugin.musicMutedKey);\n this.sfxMuted = !!SavedData.read(SoundPlugin.sfxMutedKey);\n this.voMuted = !!SavedData.read(SoundPlugin.voMutedKey);\n\n this.client.on('loaded', this.sendAllProperties);\n this.client.on('loadDone', this.sendAllProperties);\n }\n\n /**\n *\n * Saves the current state of all volume properties, and then sends them to the game\n * @memberof SoundPlugin\n */\n sendAllProperties() {\n this.sendProperty(SoundPlugin.soundVolumeKey, this.soundVolume);\n this.sendProperty(SoundPlugin.musicVolumeKey, this.musicVolume);\n this.sendProperty(SoundPlugin.voVolumeKey, this.voVolume);\n this.sendProperty(SoundPlugin.sfxVolumeKey, this.sfxVolume);\n\n this.sendProperty(SoundPlugin.voMutedKey, this.voMuted);\n this.sendProperty(SoundPlugin.soundMutedKey, this.soundMuted);\n this.sendProperty(SoundPlugin.musicMutedKey, this.musicMuted);\n this.sendProperty(SoundPlugin.sfxMutedKey, this.sfxMuted);\n }\n\n /**\n * @memberof SoundPlugin\n * @param {boolean} muted\n */\n set soundMuted(muted) {\n this.setMuteProp('soundMuted', muted, this.soundButtons);\n }\n\n /**\n * @memberof SoundPlugin\n */\n get soundMuted() {\n return this._soundMuted;\n }\n\n /**\n * @memberof SoundPlugin\n * @param {boolean} muted\n */\n set voMuted(muted) {\n this.setMuteProp('voMuted', muted, this.voButtons);\n }\n\n /**\n * @memberof SoundPlugin\n */\n get voMuted() {\n return this._voMuted;\n }\n\n /**\n * @memberof SoundPlugin\n * @param {boolean} muted\n */\n set musicMuted(muted) {\n this.setMuteProp('musicMuted', muted, this.musicButtons);\n }\n\n /**\n * @memberof SoundPlugin\n */\n get musicMuted() {\n return this._musicMuted;\n }\n\n /**\n * @memberof SoundPlugin\n * @param {boolean} muted\n */\n set sfxMuted(muted) {\n this.setMuteProp('sfxMuted', muted, this.sfxButtons);\n }\n\n /**\n * @memberof SoundPlugin\n */\n get sfxMuted() {\n return this._sfxMuted;\n }\n\n /**\n * @readonly\n * @static\n * @memberof SoundPlugin\n */\n static get soundMutedKey() {\n return 'soundMuted';\n }\n\n /**\n * @readonly\n * @static\n * @memberof SoundPlugin\n */\n static get voMutedKey() {\n return 'voMuted';\n }\n\n /**\n * @readonly\n * @static\n * @memberof SoundPlugin\n */\n static get musicMutedKey() {\n return 'musicMuted';\n }\n\n /**\n * @readonly\n * @static\n * @memberof SoundPlugin\n */\n static get sfxMutedKey() {\n return 'sfxMuted';\n }\n\n /**\n * @readonly\n * @static\n * @memberof SoundPlugin\n */\n static get soundVolumeKey() {\n return 'soundVolume';\n }\n\n /**\n * @readonly\n * @static\n * @memberof SoundPlugin\n */\n static get sfxVolumeKey() {\n return 'sfxVolume';\n }\n\n /**\n * @readonly\n * @static\n * @memberof SoundPlugin\n */\n static get voVolumeKey() {\n return 'voVolume';\n }\n\n /**\n * @readonly\n * @static\n * @memberof SoundPlugin\n */\n static get musicVolumeKey() {\n return 'musicVolume';\n }\n\n /**\n * @readonly\n * @memberof SoundPlugin\n */\n get soundButton() {\n return this._soundButton.button;\n }\n\n /**\n * @readonly\n * @memberof SoundPlugin\n */\n get musicButton() {\n return this._musicButton.button;\n }\n /**\n * @readonly\n * @memberof SoundPlugin\n */\n get sfxButton() {\n return this._sfxButton.button;\n }\n /**\n * @readonly\n * @memberof SoundPlugin\n */\n get voButton() {\n return this._voButton.button;\n }\n\n /**\n * @readonly\n * @static\n * @memberof SpeedScalePlugin\n * @return {string}\n */\n static get soundKey() {\n return 'sound';\n }\n}\n","import { SavedData } from './SavedData';\n/**\n * Default user data handler for the {{#crossLink \"springroll.Container\"}}Container{{/crossLink}} to save data using\n * the {{#crossLink \"springroll.SavedData\"}}SavedData{{/crossLink}} class.\n * @class SavedDataHandler\n */\nexport class SavedDataHandler {\n\n /**\n * \n */\n constructor() {\n this.dbName;\n this.savedData;\n }\n \n /**\n * Remove a data setting\n * @method remove\n * @static\n * @param {String} name The name of the property\n * @param {Function} [callback] Callback when remove is complete\n */\n static remove(name, callback) {\n SavedData.remove(name);\n callback();\n }\n\n /**\n * Write a custom setting\n * @method write\n * @static\n * @param {String} name The name of the property\n * @param {*} value The value to set the property to\n * @param {Function} [callback] Callback when write is complete\n */\n static write(name, value, callback) {\n SavedData.write(name, value);\n callback();\n }\n\n /**\n * Read a custom setting\n * @method read\n * @static\n * @param {String} name The name of the property\n * @param {Function} callback Callback when read is complete, returns the value\n */\n static read(name, callback) {\n callback(SavedData.read(name));\n }\n\n // ----------------------------------------------------------------\n // IndexedDB Manipulation \n // ----------------------------------------------------------------\n\n /**\n * Open a connection with the database\n * @param {string} dbName The name of your IndexedDB database\n * @param {string} dbVersion The version number of the database\n * @param {JSON} additions Any additions to the structure of the database\n * @param {array} additions.stores Any stores to be added into the database syntax: \n * {storeName: '[name]', options: {[optionally add options]}}\n * @param {array} additions.indexes Any Indexes to be added to the database syntax: \n * {storeName: '[name]', options: {[optionally add options]}}\n */\n IDBOpen( dbName, dbVersion = null, additions = {}, deletions = {}, callback = null) {\n // persisting the savedData object to keep the connection open\n this.savedData = new SavedData();\n this.savedData.IDBOpen( dbName, dbVersion, additions, deletions, callback);\n }\n\n /**\n * Add a record to a given store\n * @param {string} storeName The name of the store from which the record will be updated\n * @param {string} key the key of the record to be updated \n * @param {*} value The value for the record with the given key to be updated\n * @param {function} callback The method to call on success or failure. A single value will be passed in\n */\n IDBAdd(storeName, record, key, callback) {\n this.savedData.IDBAdd(storeName, record, key, callback);\n }\n \n /**\n * Update a record from a given store\n * @param {string} storeName The name of the store from which the record will be updated\n * @param {string} key the key of the record to be updated \n * @param {*} value The value for the record with the given key to be updated\n * @param {function} callback The method to call on success or failure. A single value will be passed in\n */\n IDBUpdate(storeName, key, value, callback) {\n this.savedData.IDBUpdate(storeName, key, value, callback);\n }\n\n /**\n * Remove a record from a store\n * @param {*} storeName The name of the store from which the record will be removed\n * @param {*} key the key of the record to be removed \n * @param {function} callback The method to call on success or failure. A single value will be passed in\n */\n IDBRemove(storeName, key, callback) {\n this.savedData.IDBRemove(storeName, key, callback);\n }\n\n /**\n * Return a record from a given store with a given key\n * @param {string} storeName The name of the store to read from\n * @param {string} key The key for the record in the given store \n * @param {function} callback The method to call on success or failure. A single value will be passed in\n */\n IDBRead(storeName, key, callback) {\n this.savedData.IDBRead(storeName, key, callback);\n }\n\n /**\n * Get all records from a store\n * @param {string} storeName The store to get all records from\n * @param {integer} count Optionally the count of records to return\n * @param {function} callback The method to call on success or failure. A single value will be passed in\n */\n IDBReadAll(storeName, count, callback) {\n this.savedData.IDBReadAll(storeName, count, callback);\n }\n\n /**\n * Get the version of a given database\n * @param {string} dbName The name of the database to return the version of\n * @param {function} callback The method to call on success or failure. A single value will be passed in\n */\n IDBGetVersion(dbName, callback) {\n const sd = new SavedData(dbName);\n\n sd.IDBGetVersion(dbName, callback);\n }\n\n /**\n * Closes the connection to the database\n * @param {function} callback The method to call on success or failure. A single value will be passed in\n */\n IDBClose(callback) {\n this.savedData.IDBClose(callback);\n }\n /**\n * Closes the connection to the database\n * @param {function} callback The method to call on success or failure. A single value will be passed in\n */\n IDBDeleteDB(dbName, options, callback) {\n const sd = new SavedData(dbName);\n sd.IDBDeleteDB(dbName, options, callback);\n }\n\n}\n","import { SavedDataHandler } from '../SavedDataHandler';\nimport { BasePlugin } from '../base-plugins';\n\n/**\n * @export\n * @class UserDataPlugin\n * @extends {BasePlugin}\n * @property {SavedDataHandler} SavedDataHandler The handler to work with the savedData class\n */\nexport class UserDataPlugin extends BasePlugin {\n /**\n * Creates an instance of UserDataPlugin.\n * @memberof UserDataPlugin\n */\n constructor() {\n super('UserData-Plugin');\n this.onUserDataRemove = this.onUserDataRemove.bind(this);\n this.onUserDataRead = this.onUserDataRead.bind(this);\n this.onUserDataWrite = this.onUserDataWrite.bind(this);\n\n this.onIDBAdd = this.onIDBAdd.bind(this);\n this.onIDBOpen = this.onIDBOpen.bind(this);\n this.onIDBRead = this.onIDBRead.bind(this);\n this.onIDBReadAll = this.onIDBReadAll.bind(this);\n this.onIDBRemove = this.onIDBRemove.bind(this);\n this.onIDBUpdate = this.onIDBUpdate.bind(this);\n this.onIDBUpdate = this.onIDBUpdate.bind(this);\n this.onIDBClose = this.onIDBClose.bind(this);\n this.IDBReadAll = this.onIDBReadAll.bind(this);\n this.onIDBGetVersion = this.onIDBGetVersion.bind(this);\n this.onIDBDeleteDB = this.onIDBDeleteDB.bind(this);\n\n this.savedDataHandler = null;\n }\n\n /**\n *\n * @memberof UserDataPlugin\n */\n init() {\n this.client.on('userDataRemove', this.onUserDataRemove);\n this.client.on('userDataRead', this.onUserDataRead);\n this.client.on('userDataWrite', this.onUserDataWrite);\n\n this.client.on('IDBOpen', this.onIDBOpen);\n this.client.on('IDBRead', this.onIDBRead);\n this.client.on('IDBReadAll', this.onIDBReadAll);\n this.client.on('IDBAdd', this.onIDBAdd);\n this.client.on('IDBRemove', this.onIDBRemove);\n this.client.on('IDBUpdate', this.onIDBUpdate);\n this.client.on('IDBClose', this.onIDBClose);\n this.client.on('IDBGetVersion', this.onIDBGetVersion);\n this.client.on('IDBDeleteDB', this.onIDBDeleteDB);\n }\n\n /**\n * Handler for the userDataRemove event\n * @method onUserDataRemove\n * @private\n * @param {string} data The name of the record to be removed\n * @param {string} type The type of listener for bellhop to send to\n */\n onUserDataRemove({ data, type }) {\n SavedDataHandler.remove(data, () => {\n this.client.send(type);\n });\n }\n\n /**\n * Handler for the userDataRead event\n * @method onUserDataRead\n * @private\n * @param {string} data The name of the record to be removed\n * @param {string} type The type of listener for bellhop to send to\n */\n onUserDataRead({ data, type }) {\n SavedDataHandler.read(data, value => this.client.send(type, value));\n }\n\n /**\n * Handler for the userDataWrite event\n * @method onUserDataWrite\n * @private\n * @param {string} type The type of listener for bellhop to send to\n * @param {string} data.name The name for the record. This is what is used to read or remove the record\n * @param {object | string} data.value The data object with the data and value for the record\n */\n onUserDataWrite({type, data: { name, value } }) {\n\n SavedDataHandler.write(name, value, () => this.client.send(type));\n }\n\n // ----------------------------------------------------------------\n // IndexedDB Manipulation\n // ----------------------------------------------------------------\n\n /**\n * Open a connection with the IDB Database and optionally add or delete\n * Indexes and stores\n * @param {string} dbName The name of your IndexedDB database\n * @param {string} [dbVersion] The version number of the database\n * @param {JSON} [additions] Any additions to the structure of the database\n * @param {array} [additions.stores] Any stores to be added into the database syntax:\n * @param {string} [additions.stores.storeName] The name of the store\n * @param {object} [additions.stores.options] Optionally, the option parameter for the createStore method\n * @param {array} [additions.indexes] Any Indexes to be added to the database syntax:\n * @param {string} [additions.indexes.storeName] The name of the store\n * @param {object} [additions.indexes.options] Optionally, the option parameter for the createIndex method\n * @param {string} type The type of listener for bellhop to send to\n */\n onIDBOpen({type, data: {dbName, dbVersion = null, additions = {}, deletions = {} }}) {\n // Keep an instance open to use on open\n this.savedDataHandler = new SavedDataHandler();\n this.savedDataHandler.IDBOpen( dbName, dbVersion, additions, deletions, value => this.client.send(type, value));\n }\n\n /**\n * Add a record to a given store\n * @param {string} type The type of listener for bellhop to send to\n * @param {string} storeName The name of the store from which the record will be updated\n * @param {*} value The value for the record with the given key to be updated\n * @param {string} key the key of the record to be updated\n */\n onIDBAdd({type, data: { storeName, value, key}}) {\n this.savedDataHandler.IDBAdd(storeName, value, key, value => this.client.send(type, value));\n }\n\n /**\n * Update a record from a given store\n * @param {string} type The type of listener for bellhop to send to\n * @param {string} storeName The name of the store with the record to update\n * @param {string} key The key of the record to be updated\n * @param {*} value The record value\n */\n onIDBUpdate({type, data: { storeName, key, value}}) {\n this.savedDataHandler.IDBUpdate(storeName, key, value, value => this.client.send(type, value));\n }\n\n /**\n * Remove a record from a store\n * @param {string} type The type of listener for bellhop to send to\n * @param {string} storeName The name of the store from which the record will be removed\n * @param {*} key the key of the record to be removed\n */\n onIDBRemove({type, data: {storeName, key}}) {\n this.savedDataHandler.IDBRemove(storeName, key, value => this.client.send(type, value));\n }\n\n /**\n * Return a record from a given store with a given key\n * @param {string} storeName The name of the store to read from\n * @param {string} key The key for the record in the given store\n * @param {string} type The type of listener for bellhop to send to\n */\n onIDBRead({type, data: {storeName, key}}) {\n this.savedDataHandler.IDBRead(storeName, key, value => this.client.send(type, value));\n }\n\n /**\n * Get all records from a store\n * @param {string} storeName The store to get all records from\n * @param {integer} count Optionally the number of records to return\n * @param {string} type The type of listener for bellhop to send to\n */\n onIDBReadAll({ type, data: {storeName, count} }) {\n this.savedDataHandler.IDBReadAll(storeName, count, value => this.client.send(type, value));\n }\n\n /**\n * Get the version of a given database\n * @param {string} dbName The name of the database to return the version of\n * @param {string} type The type of listener for bellhop to send to\n */\n onIDBGetVersion({type, data: {dbName}}) {\n // Create a new instance of savedDataHandler to avoid mutating the current instance\n const sdh = new SavedDataHandler();\n sdh.IDBGetVersion(dbName, value => this.client.send(type, value));\n }\n\n /**\n * Close the connection with the database\n * @param {string} type The type of listener for bellhop to send to\n */\n onIDBClose({type}) {\n this.savedDataHandler.IDBClose(value => this.client.send(type, value));\n }\n /**\n * Close the connection with the database\n * @param type - The type of request being sent\n */\n onIDBDeleteDB({type, data: {dbName, options }}) {\n const sdh = new SavedDataHandler();\n\n\n sdh.IDBDeleteDB(dbName, options, value => this.client.send(type, value));\n }\n}","import { SliderPlugin } from '../base-plugins';\n\n/**\n * @export\n * @class PointerSizePlugin\n * @extends {SliderPlugin}\n * @property {object[]} sliders an array of all slider objects attached to PointerSizePlugin\n * @extends SliderPlugin\n */\nexport class PointerSizePlugin extends SliderPlugin {\n /**\n * Creates an instance of PointerSizePlugin.\n * @param {string | HTMLElement} [pointerSliders] selector string or HTML Element for the input(s)\n * @param {number} [defaultPointerSize=0.5] The default value for the pointer size slider\n * @memberof PointerSizePlugin\n */\n constructor(pointerSliders, { defaultPointerSize = 0.5 } = {}) {\n super(pointerSliders, 'UISize-Pointer-Plugin', { defaultValue: defaultPointerSize, featureName: PointerSizePlugin.pointerSizeKey });\n\n for (let i = 0; i < this.slidersLength; i++) {\n this.sliders[i].enableSliderEvents(this.onPointerSizeChange.bind(this));\n }\n\n }\n\n /**\n * @memberof PointerSizePlugin\n * @param {Event} e\n */\n onPointerSizeChange(e) {\n this.currentValue = e.target.value;\n this.sendProperty(PointerSizePlugin.pointerSizeKey, this.currentValue);\n }\n\n\n /**\n * @readonly\n * @static\n * @memberof PointerSizePlugin\n * @return {string}\n */\n static get pointerSizeKey() {\n return 'pointerSize';\n }\n}\n","import { SliderPlugin } from '../base-plugins';\n\n/**\n * @export\n * @class ButtonSizePlugin\n * @property {object[]} sliders An array of slider objects given to ButtonSizePlugin\n * @property {number} currentValue The current button size value\n * @extends {SliderPlugin}\n */\nexport class ButtonSizePlugin extends SliderPlugin {\n /**\n * Creates an instance of ButtonSizePlugin.\n * @param {string | HTMLElement} buttonSliders selector string or html element(s) for the inputs\n * @param {object} options\n * @param {number} [options.defaultButtonSize=0.5]\n * @memberof ButtonSizePlugin\n */\n constructor(buttonSliders, { defaultButtonSize = 0.5 } = {}) {\n super(buttonSliders, 'UISize-Button-Plugin', { defaultValue: defaultButtonSize, featureName: ButtonSizePlugin.buttonSizeKey });\n\n for (let i = 0; i < this.slidersLength; i++) {\n this.sliders[i].enableSliderEvents(this.onButtonSizeChange.bind(this));\n }\n }\n\n /**\n * @memberof ButtonSizePlugin\n * @param {Event} e\n */\n onButtonSizeChange(e) {\n this.currentValue = e.target.value;\n this.sendProperty(ButtonSizePlugin.buttonSizeKey, this.currentValue);\n }\n\n /**\n * Get ButtonSize Key\n * @readonly\n * @static\n * @memberof ButtonSizePlugin\n * @returns {string}\n */\n static get buttonSizeKey() {\n return 'buttonSize';\n }\n}\n","import { SliderPlugin } from '../base-plugins';\n\n/**\n * @export\n * @class ControlSensitivityPlugin\n * @property {object[]} sliders an array of all slider objects attached to ControlSensitivityPlugin\n * @extends {SliderPlugin}\n */\nexport class ControlSensitivityPlugin extends SliderPlugin {\n /**\n * Creates an instance of ControlSensitivityPlugin.\n * @param {string | HTMLElement} sensitivitySliders\n * @param {number} [defaultSensitivity=0.5]\n * @memberof ControlSensitivityPlugin\n */\n constructor(sensitivitySliders, { defaultSensitivity = 0.5 } = {}) {\n super(sensitivitySliders, 'Control-Sensitivity-Plugin', {defaultValue: defaultSensitivity, featureName: ControlSensitivityPlugin.controlSensitivityKey});\n\n this.sendAllProperties = this.sendAllProperties.bind(this);\n\n for (let i = 0; i < this.slidersLength; i++) {\n this.sliders[i].enableSliderEvents(this.onControlSensitivityChange.bind(this));\n }\n }\n\n /**\n * @memberof ControlSensitivityPlugin\n * @param {Event} e\n */\n onControlSensitivityChange(e) {\n this.currentValue = e.target.value;\n this.sendProperty(ControlSensitivityPlugin.controlSensitivityKey, this.currentValue);\n }\n\n /**\n * @readonly\n * @static\n * @memberof ControlSensitivityPlugin\n * @returns {string}\n */\n static get controlSensitivityKey() {\n return 'controlSensitivity';\n }\n}\n","import { BasePlugin } from '../base-plugins';\nimport { SavedData } from '../SavedData';\n\n/**\n * @export\n * @class KeyboardMapPlugin\n * @extends {BasePlugin}\n */\nexport class KeyboardMapPlugin extends BasePlugin {\n /**\n * Creates an instance of KeyboardMapPlugin.\n * @param {string | HTMLElement} keyContainers div or similar container element that will contain the re-mappable keys\n * @param {string} [customClassName='springrollContainerKeyBinding__button'] A custom class name that will be applied to the container element\n * @memberof KeyboardMapPlugin\n */\n constructor(keyContainers, {customClassName = 'springrollContainerKeyBinding__button'} = {}) {\n super('Keyboard-Map-Plugin');\n\n this.sendAllProperties = this.sendAllProperties.bind(this);\n //Allows for removing and reading event listeners\n this.bindKey = this.bindKey.bind(this);\n this.onKeyButtonClick = this.onKeyButtonClick.bind(this);\n\n this.className = customClassName;\n\n this.keyContainers =\n keyContainers instanceof HTMLElement\n ? [keyContainers]\n : document.querySelectorAll(keyContainers);\n\n this.keyBindings = {};\n this.buttons = [];\n this.activekeyButton;\n\n this.sendAfterFetch = false;\n this.canEmit = false;\n\n this.keyContainersLength = this.keyContainers.length;\n\n if (this.keyContainersLength <= 0) {\n this.warn('plugin was not provided any valid key binding container elements');\n return;\n }\n }\n\n /**\n * @memberof KeyboardMapPlugin\n * @param {MouseEvent} e\n * Sets up a rebinding of a key once a key button is clicked.\n */\n onKeyButtonClick(e) {\n\n for (let i = 0, l = this.buttons.length; i < l; i++) {\n for (let j = 0; j < this.buttons[i].length; j++) {\n this.buttons[i][j].removeEventListener('click', this.onKeyButtonClick);\n }\n }\n this.activekeyButton = e.target;\n this.activekeyButton.textContent = 'Press Key to Map';\n document.addEventListener('keyup', this.bindKey);\n }\n\n /**\n * @memberof KeyboardMapPlugin\n * @param {KeyboardEvent} key\n * Actually updates the key binding and sends the value. Also\n * replicates the new key across the other keycontainers\n */\n bindKey(key) {\n key.preventDefault(); //prevents space bar from retriggering a keybinding when set.\n\n for (const actionName in this.keyBindings) {\n if (this.keyBindings[actionName].currentKey === key.key.toLowerCase()) {\n this.warn(`${key.key} is already bound`);\n return;\n }\n }\n\n this.activekeyButton.textContent = key.key === ' ' ? 'space' : key.key;\n for (let i = 0; i < this.buttons.length; i++) {\n for (let j = 0; j < this.buttons[i].length; j++) {\n if (this.buttons[i][j].value === this.activekeyButton.value) {\n this.buttons[i][j].textContent = this.activekeyButton.textContent;\n }\n }\n }\n\n this.keyBindings[this.activekeyButton.value].currentKey = key.key;\n\n document.removeEventListener('keyup', this.bindKey);\n for (let i = 0, l = this.buttons.length; i < l; i++) {\n for (let j = 0; j < this.buttons[i].length; j++) {\n this.buttons[i][j].addEventListener('click', this.onKeyButtonClick);\n }\n }\n\n this.sendProperty(KeyboardMapPlugin.keyBindingKey, this.keyBindings);\n }\n\n /**\n * @memberof KeyboardMapPlugin\n */\n init() {\n this.client.on(\n 'features',\n function(features) {\n if (!features.data) {\n return;\n }\n\n if (!features.data.keyBinding) {\n return;\n }\n\n const data = SavedData.read(KeyboardMapPlugin.keyBindingKey);\n\n this.client.fetch('keyBindings', result => {\n for (let j = 0; j < this.keyContainersLength; j++) {\n this.buttons[j] = [];\n\n for (let i = 0, l = result.data.length; i < l; i++) {\n let currentKey = result.data[i].defaultKey.toLowerCase();\n if (data) {\n if (data[result.data[i].actionName]) {\n currentKey = data[result.data[i].actionName].currentKey;\n }\n }\n //only needs to be set up once\n if (j === 0) {\n this.keyBindings[result.data[i].actionName] = {\n defaultKey: result.data[i].defaultKey.toLowerCase(),\n currentKey: currentKey,\n };\n }\n\n this.buttons[j][i] = document.createElement('button');\n this.buttons[j][i].classList.add(this.className);\n this.buttons[j][i].id = `keyBoardMapPlugin-${result.data[i].actionName}`;\n this.buttons[j][i].value = result.data[i].actionName;\n this.buttons[j][i].textContent = result.data[i].defaultKey;\n this.buttons[j][i].addEventListener('click', this.onKeyButtonClick);\n\n this.label = document.createElement('label');\n this.label.htmlFor = `keyBoardMapPlugin-${result.data[i].actionName}`;\n this.label.textContent = result.data[i].actionName;\n\n this.keyContainers[j].appendChild(this.label);\n this.keyContainers[j].appendChild(this.buttons[j][i]);\n }\n }\n\n this.canEmit = true;\n if (this.sendAfterFetch) {\n this.sendAllProperties();\n }\n });\n }.bind(this)\n );\n }\n\n /**\n*\n* Sends initial caption properties to the application\n* @memberof KeyboardMapPlugin\n*/\n sendAllProperties() {\n if (this.canEmit) {\n this.sendProperty(KeyboardMapPlugin.keyBindingKey, this.keyBindings);\n } else {\n this.sendAfterFetch = true;\n }\n }\n\n /**\n * @readonly\n * @static\n * @memberof KeyboardMapPlugin\n * @returns {string}\n */\n static get keyBindingKey() {\n return 'keyBinding';\n }\n}\n","import { SliderPlugin } from '../base-plugins';\n\n/**\n * @export\n * @class LayersPlugin\n * @property {object[]} sliders an array of all slider objects attached to LayersPlugin\n * @extends {SliderPlugin}\n */\nexport class LayersPlugin extends SliderPlugin {\n /**\n * Creates an instance of KeyboardMapPlugin.\n * @param {string | HTMLInputElement} layersSliders selector string or HTML Element for the input(s)\n * @param {number} [defaultValue=0] The default value for the slider\n */\n constructor(layersSliders, { defaultValue = 0 } = {}) {\n super(layersSliders, 'Layer-Plugin', { defaultValue: defaultValue, featureName: LayersPlugin.layersSliderKey });\n\n for (let i = 0; i < this.slidersLength; i++) {\n this.sliders[i].enableSliderEvents(this.onLayerValueChange.bind(this));\n }\n }\n\n /**\n * @memberof LayersPlugin\n * @param {Event} e\n */\n onLayerValueChange(e) {\n this.currentValue = e.target.value;\n this.sendProperty(LayersPlugin.layersSliderKey, this.currentValue);\n }\n\n /**\n * @readonly\n * @static\n * @memberof LayersPlugin\n * @returns {string}\n */\n static get layersSliderKey() {\n return 'removableLayers';\n }\n}\n","import { RadioGroupPlugin } from '../base-plugins';\nimport { SavedData } from '../SavedData';\n\nconst SUPPORTED_POSITIONS = ['top', 'bottom', 'left', 'right'];\n\n/**\n * @export\n * @class HUDPlugin\n * @extends {BasePlugin}\n */\nexport class HUDPlugin extends RadioGroupPlugin {\n /**\n * Creates an instance of HUDPlugin\n * @param {string} hudSelectorRadios selector string or for the input(s)\n * @param {string[]} [defaultValue='top'] default value for the HUD position\n * @memberof HUDPlugin\n */\n constructor(hudSelectorRadios, { defaultValue = SUPPORTED_POSITIONS[0] } = {}) {\n super(hudSelectorRadios, 'HUD-Layout-Plugin', {supportedValues: SUPPORTED_POSITIONS, initialValue: defaultValue, controlName: 'Hud Selector', featureName: HUDPlugin.hudPositionKey, radioCount: SUPPORTED_POSITIONS.length});\n\n this.sendAllProperties = this.sendAllProperties.bind(this);\n this.sendAfterFetch = false;\n this.canEmit = false;\n this.positions = [];\n\n if (this.radioGroupsLength <= 0) {\n this.warn('Plugin was not provided any valid HTML elements');\n }\n\n for (let i = 0; i < this.radioGroupsLength; i++) {\n this.radioGroups[i].enableRadioEvents(this.onHUDSelect.bind(this));\n }\n\n }\n\n /**\n * @memberof HUDPlugin\n * @param {Event} e\n */\n onHUDSelect(e) {\n //return if a radio button is programattically clicked when it is hidden\n if (!this.positions.includes(e.target.value)) {\n for (let i = 0; i < this.radioGroupsLength; i++) {\n this.radioGroups[i].radioGroup[this.currentValue].checked = true;\n }\n return;\n }\n\n this.currentValue = e.target.value;\n\n this.sendProperty(\n HUDPlugin.hudPositionKey,\n this.currentValue\n );\n }\n\n /**\n * @memberof HUDPlugin\n */\n init() {\n this.client.on(\n 'features',\n function(features) {\n if (!features.data || !features.data.hudPosition) {\n return;\n }\n\n if (this.radioGroupsLength <= 0) {\n return;\n }\n //get the game's reported HUD positions to build out positions array\n this.client.fetch('hudPositions', result => {\n for (let i = 0, l = result.data.length; i < l; i++) {\n if (\n !SUPPORTED_POSITIONS.includes(result.data[i].toLowerCase())\n ) {\n this.warn(`${result.data[i]} is an invalid position name`);\n continue;\n }\n\n this.positions.push(result.data[i].toLowerCase());\n }\n\n for (let i = 0; i < this.radioGroupsLength; i++) {\n //Hide any radio buttons that aren't in the game's position list.\n for (const key in this.radioGroups[i].radioGroup) {\n this.radioGroups[i].radioGroup[key].style.display = this.positions.includes(this.radioGroups[i].radioGroup[key].value) ? '' : 'none';\n }\n }\n\n this.canEmit = true;\n if (this.sendAfterFetch) {\n this.sendAllProperties();\n }\n });\n\n }.bind(this)\n );\n }\n\n /**\n * @memberof HUDPlugin\n */\n start() {\n const data = SavedData.read(HUDPlugin.hudPositionKey);\n\n if (SUPPORTED_POSITIONS.includes(data)) {\n this.currentValue = data;\n }\n this.client.on('loaded', this.sendAllProperties);\n this.client.on('loadDone', this.sendAllProperties);\n }\n\n /**\n *\n * Sends initial HUD position properties to the application\n * @memberof HUDPlugin\n */\n sendAllProperties() {\n if (this.canEmit) {\n this.sendProperty(HUDPlugin.hudPositionKey, this.currentValue);\n } else {\n this.sendAfterFetch = true;\n }\n }\n\n /**\n * @static\n * @readonly\n * @memberof HUDPlugin\n * @returns {string}\n */\n static get hudPositionKey() {\n return 'hudPosition';\n }\n}\n","import { RadioGroupPlugin } from '../base-plugins';\nimport { SavedData } from '../SavedData';\n\nconst COLOR_BLIND_TYPES = [\n 'none',\n 'protanopia',\n 'deuteranopia',\n 'tritanopia',\n 'achromatopsia'\n];\n\n/**\n * @export\n * @class ColorVisionPlugin\n * @property {boolean} sendAfterFetch Whether to send the properties after fetch or not\n * @property {boolean} canEmit Whether or not the plugin can send properties\n * @property {string} colors \n * @extends {RadioGroupPlugin}\n */\nexport class ColorVisionPlugin extends RadioGroupPlugin {\n /**\n * Creates an instance of ColorVisionPlugin.\n * @param {string | HTMLElement} colorSelects\n * @param {string } [defaultValue] Default selected value\n * @memberof ColorVision\n */\n constructor(colorVisionRadios, { defaultValue = COLOR_BLIND_TYPES[0] } = {}) {\n super(colorVisionRadios, 'Color-Filter-Plugin', {supportedValues: COLOR_BLIND_TYPES, initialValue: defaultValue, controlName: 'Color Vision Selector', featureName: ColorVisionPlugin.colorVisionKey, radioCount: COLOR_BLIND_TYPES.length});\n\n this.sendAllProperties = this.sendAllProperties.bind(this);\n this.sendAfterFetch = false;\n this.canEmit = false;\n this.colors = [];\n\n if (this.radioGroupsLength <= 0) {\n this.warn('Plugin was not provided any valid HTML elements');\n return;\n }\n\n for (let i = 0; i < this.radioGroupsLength; i++) {\n this.radioGroups[i].enableRadioEvents(this.onColorChange.bind(this));\n }\n }\n\n /**\n * @memberof ColorVisionPlugin\n * @param {Event} e\n */\n onColorChange(e) {\n //return if a radio button is programmatically clicked when it is hidden from the user\n if (!this.colors.includes(e.target.value) ) {\n for (let i = 0; i < this.radioGroupsLength; i++) {\n this.radioGroups[i].radioGroup[this.currentValue].checked = true;\n }\n return;\n }\n this.currentValue = e.target.value;\n\n this.sendProperty(\n ColorVisionPlugin.colorVisionKey,\n this.currentValue\n );\n }\n\n /**\n * @memberof ColorVisionPlugin\n */\n init() {\n this.client.on(\n 'features',\n function(features) {\n if (!features.data || !features.data.colorVision) {\n return;\n }\n if (this.colorDropdownsLength <= 0) {\n return;\n }\n\n //get the game's reported colors to build out accepted filters array\n this.client.fetch('colorFilters', result => {\n for (let i = 0, l = result.data.length; i < l; i++) {\n if (\n !COLOR_BLIND_TYPES.includes(result.data[i].toLowerCase())\n ) {\n this.warn(`${result.data[i]} is an invalid color vision name`);\n continue;\n }\n this.colors.push(result.data[i].toLowerCase());\n }\n\n this.defaultValue = this.colors[0];\n\n for (let i = 0; i < this.radioGroupsLength; i++) {\n //Hide any radio buttons that aren't in the game's filter list.\n for (const key in this.radioGroups[i].radioGroup) {\n this.radioGroups[i].radioGroup[key].style.display = this.colors.includes(this.radioGroups[i].radioGroup[key].value.toLowerCase()) ? '' : 'none';\n }\n }\n\n this.canEmit = true;\n\n if (this.sendAfterFetch) {\n this.sendAllProperties();\n }\n });\n\n }.bind(this)\n );\n }\n\n /**\n * @memberof ColorVisionPlugin\n */\n start() {\n const data = SavedData.read(ColorVisionPlugin.colorVisionKey);\n\n if (COLOR_BLIND_TYPES.includes(data)) {\n this.currentValue = data;\n }\n\n this.client.on('loaded', this.sendAllProperties);\n this.client.on('loadDone', this.sendAllProperties);\n }\n\n /**\n*\n* Sends initial caption properties to the application\n* @memberof ColorVisionPlugin\n*/\n sendAllProperties() {\n if (this.canEmit) {\n this.sendProperty(ColorVisionPlugin.colorVisionKey, this.currentValue);\n } else {\n this.sendAfterFetch = true;\n }\n }\n\n /**\n * Get the ColorVisionPlugin key\n * @readonly\n * @static\n * @memberof ColorVisionPlugin\n * @returns {string}\n */\n static get colorVisionKey() {\n return 'colorVision';\n }\n\n}\n","import { SliderPlugin } from '../base-plugins';\n\n/**\n * @export\n * @class HitAreaScalePlugin\n * @property {object[]} sliders an array of all slider objects attached to ControlSensitivityPlugin\n * @extends {SliderPlugin}\n * \n */\nexport class HitAreaScalePlugin extends SliderPlugin {\n /**\n * Creates an instance of HitAreaScalePlugin.\n * @param {string | HTMLElement} hitAreaScaleSliders The selector or HTMLElement for the slider\n * @param {number} [defaultHitAreaScale=0.5] The default hit area scale value\n * @memberof HitAreaScalePlugin\n */\n constructor(hitAreaScaleSliders, { defaultHitAreaScale = 0.5 } = {}) {\n super(hitAreaScaleSliders, 'Hit-Area-Scale-Plugin', { defaultValue: defaultHitAreaScale, featureName: HitAreaScalePlugin.hitAreaScaleKey });\n\n for (let i = 0; i < this.slidersLength; i++) {\n this.sliders[i].enableSliderEvents(this.onHitAreaScaleChange.bind(this));\n }\n }\n\n /**\n * @memberof HitAreaScalePlugin\n * @param {Event} target\n * @param {string} control\n */\n onHitAreaScaleChange(e) {\n this.currentValue = e.target.value;\n this.sendProperty(HitAreaScalePlugin.hitAreaScaleKey, this.currentValue);\n }\n\n /**\n * @readonly\n * @static\n * @memberof HitAreaScalePlugin\n * @returns {string}\n */\n static get hitAreaScaleKey() {\n return 'hitAreaScale';\n }\n}\n","import { SliderPlugin } from '../base-plugins';\n\n/**\n * @export\n * @class DragThresholdScalePlugin\n * @extends {SliderPlugin}\n */\nexport class DragThresholdScalePlugin extends SliderPlugin {\n /**\n * Creates an instance of DragThresholdScalePlugin.\n * @param {string | HTMLElement} params.dragThresholdScaleSliders\n * @param {number} [defaultDragThresholdScale=0.5]\n * @memberof DragThresholdScalePlugin\n */\n constructor(dragThresholdScaleSliders, { defaultDragThresholdScale = 0.5 } = {}) {\n super(dragThresholdScaleSliders, 'Drag-Threshold-Scale-Plugin', { defaultValue: defaultDragThresholdScale, featureName: DragThresholdScalePlugin.dragThresholdScaleKey });\n\n for (let i = 0; i < this.slidersLength; i++) {\n this.sliders[i].enableSliderEvents(this.onDragThresholdScaleChange.bind(this));\n }\n }\n\n /**\n * @memberof DragThresholdScalePlugin\n * @param {Event} target\n * @param {string} control\n */\n onDragThresholdScaleChange(e) {\n this.currentValue = e.target.value;\n this.sendProperty(DragThresholdScalePlugin.dragThresholdScaleKey, this.currentValue);\n }\n\n /**\n * @readonly\n * @static\n * @memberof DragThresholdScalePlugin\n * @returns {string}\n */\n static get dragThresholdScaleKey() {\n return 'dragThresholdScale';\n }\n}","import { SliderPlugin } from '../base-plugins';\n\n/**\n * @export\n * @class HealthPlugin\n * @extends {SliderPlugin}\n */\nexport class HealthPlugin extends SliderPlugin {\n /**\n * Creates an instance of HealthPlugin.\n * @param {string | HTMLElement} healthSliders\n * @param {number} [defaultHealth=0.5]\n * @memberof HealthPlugin\n */\n constructor(healthSliders, {defaultHealth = 0.5 } = {}) {\n super(healthSliders, 'Health-Scale-Plugin', { defaultValue:defaultHealth, featureName: HealthPlugin.healthKey });\n\n for (let i = 0; i < this.slidersLength; i++) {\n this.sliders[i].enableSliderEvents(this.onHealthChange.bind(this));\n }\n }\n\n /**\n * @memberof HealthPlugin\n * @param {Event} e\n */\n onHealthChange(e) {\n this.currentValue = e.target.value;\n this.sendProperty(HealthPlugin.healthKey, this.currentValue);\n }\n\n /**\n * @readonly\n * @static\n * @memberof HealthPlugin\n * @returns {string}\n */\n static get healthKey() {\n return 'health';\n }\n}","import { SliderPlugin } from '../base-plugins';\n\n/**\n * @export\n * @class ObjectCountPlugin\n * @property {object[]} sliders an array of all slider objects attached to ObjectCountPlugin\n * @extends {SliderPlugin}\n */\nexport class ObjectCountPlugin extends SliderPlugin {\n /**\n * Creates an instance of ObjectCountPlugin.\n * @param {string | HTMLElement} objectCountSliders selector string or HTML Element for the input(s)\n * @param {number} [defaultObjectCount=0.5] The default value for the slider\n * @memberof ObjectCountPlugin\n */\n constructor(objectCountSliders, { defaultObjectCount = 0.5 } = {}) {\n super(objectCountSliders, 'Object-Count-Plugin', { defaultValue: defaultObjectCount, featureName: ObjectCountPlugin.objectCountKey });\n\n for (let i = 0; i < this.slidersLength; i++) {\n this.sliders[i].enableSliderEvents(this.onObjectCountChange.bind(this));\n }\n }\n\n /**\n * @memberof ObjectCountPlugin\n * @param {Event} target\n * @param {string} control\n */\n onObjectCountChange(e) {\n this.currentValue = e.target.value;\n this.sendProperty(ObjectCountPlugin.objectCountKey, this.currentValue);\n }\n\n /**\n * @readonly\n * @static\n * @memberof ObjectCountPlugin\n * @returns {string}\n */\n static get objectCountKey() {\n return 'objectCount';\n }\n}","import { SliderPlugin } from '../base-plugins';\n\n/**\n * @export\n * @class CompletionPercentagePlugin\n * @property {object[]} sliders an array of all slider objects attached to CompletePercentagePlugin\n * @extends {SliderPlugin}\n */\nexport class CompletionPercentagePlugin extends SliderPlugin {\n /**\n * Creates an instance of CompletionPercentagePlugin.\n * @param {string | HTMLElement} completionPercentageSliders The selector or HTMLSliderElement of the slider\n * @param {number} [defaultCompletionPercentage=0.5] Default selected completion percentage\n * @memberof CompletionPercentagePlugin\n */\n constructor(completionPercentageSliders, { defaultCompletionPercentage = 0.5 } = {}) {\n super(completionPercentageSliders, 'Completion-Percentage-Plugin', { defaultValue: defaultCompletionPercentage, featureName: CompletionPercentagePlugin.completionPercentageKey });\n\n for (let i = 0; i < this.slidersLength; i++) {\n this.sliders[i].enableSliderEvents(this.onCompletionPercentageChange.bind(this));\n }\n }\n\n /**\n * @memberof CompletionPercentagePlugin\n * @param {Event} e\n */\n onCompletionPercentageChange(e) {\n this.currentValue = e.target.value;\n this.sendProperty(CompletionPercentagePlugin.completionPercentageKey, this.currentValue);\n }\n\n /**\n * @readonly\n * @static\n * @memberof CompletionPercentagePlugin\n * @returns {string}\n */\n static get completionPercentageKey() {\n return 'completionPercentage';\n }\n}","import { SliderPlugin } from '../base-plugins';\n\n/**\n * @export\n * @class SpeedScalePlugin\n * @extends {SliderPlugin}\n */\nexport class SpeedScalePlugin extends SliderPlugin {\n /**\n *Creates an instance of SpeedScalePlugin.\n * @param {string | HTMLElement} speedScaleSliders selector string or HTML Element for the input(s)\n * @param {number} [defaultSpeedScale=0.5] The default value for the speed scale slider\n * @memberof SpeedScalePlugin\n */\n constructor(speedScaleSliders, { defaultSpeedScale = 0.5 } = {}) {\n super(speedScaleSliders, 'Speed-Scale-Plugin', { defaultValue: defaultSpeedScale, featureName: SpeedScalePlugin.speedScaleKey });\n\n for (let i = 0; i < this.slidersLength; i++) {\n this.sliders[i].enableSliderEvents(this.onSpeedScaleChange.bind(this));\n }\n }\n\n /**\n * @memberof SpeedScalePlugin\n * @param {Event} e\n */\n onSpeedScaleChange(e) {\n this.currentValue = e.target.value;\n this.sendProperty(SpeedScalePlugin.speedScaleKey, this.currentValue);\n }\n\n /**\n * @readonly\n * @static\n * @memberof SpeedScalePlugin\n * @return {string}\n */\n static get speedScaleKey() {\n return 'speedScale';\n }\n}","import { SliderPlugin } from '../base-plugins';\n\n/**\n * @export\n * @class TimersScalePlugin\n * @property {number} currentValue\n * @extends {SliderPlugin}\n */\nexport class TimersScalePlugin extends SliderPlugin {\n /**\n * Creates an instance of TimersScalePlugin.\n * @param {string | HTMLElement} timersScaleSliders selector string or HTML Element for the input(s)\n * @param {number} [defaultTimersScale=0.5] Default Value for the timer scale slider\n * @memberof TimersScalePlugin\n */\n constructor(timersScaleSliders, { defaultTimersScale = 0.5 } = {}) {\n super(timersScaleSliders, 'Timers-Scale-Plugin', { defaultValue: defaultTimersScale, featureName: TimersScalePlugin.timersScaleKey });\n\n for (let i = 0; i < this.slidersLength; i++) {\n this.sliders[i].enableSliderEvents(this.onTimersScaleChange.bind(this));\n }\n }\n\n /**\n * @memberof TimersScalePlugin\n * @param {Event} e\n */\n onTimersScaleChange(e) {\n this.currentValue = e.target.value;\n this.sendProperty(TimersScalePlugin.timersScaleKey, this.currentValue);\n }\n\n /**\n * @readonly\n * @static\n * @memberof TimersScalePlugin\n * @return {string}\n */\n static get timersScaleKey() {\n return 'timersScale';\n }\n}","import { SliderPlugin } from '../base-plugins';\n\n/**\n * @export\n * @class InputCountPlugin\n * @property {object[]} sliders an array of all slider objects attached to InputCountPlugin\n * @extends {SliderPlugin}\n */\nexport class InputCountPlugin extends SliderPlugin {\n /**\n * Creates an instance of InputCountPlugin.\n * @param {string | HTMLElement} inputCountSliders selector string or HTML Element for the input(s)\n * @param {number} [defaultInputCount=0.5] The default value for the slider\n * @memberof InputCountPlugin\n */\n constructor(inputCountSliders, { defaultInputCount = 0.5 } = {}) {\n super(inputCountSliders, 'Input-Count-Plugin', { defaultValue: defaultInputCount, featureName: InputCountPlugin.inputCountKey });\n\n for (let i = 0; i < this.slidersLength; i++) {\n this.sliders[i].enableSliderEvents(this.onInputCountChange.bind(this));\n }\n }\n\n /**\n * @memberof InputCountPlugin\n * @param {Event} target\n * @param {string} control\n */\n onInputCountChange(e) {\n this.currentValue = e.target.value;\n this.sendProperty(InputCountPlugin.inputCountKey, this.currentValue);\n }\n\n /**\n * @readonly\n * @static\n * @memberof InputCountPlugin\n * @returns {string}\n */\n static get inputCountKey() {\n return 'inputCount';\n }\n}","import { ButtonPlugin } from '../base-plugins/ButtonPlugin';\nimport { Button } from '../ui-elements';\n\n/**\n * A Springroll plugin to easily set up togglable fullscreen\n */\nexport class FullScreenPlugin extends ButtonPlugin {\n \n /**\n * Creates an instance of FullscreenPlugin\n * \n * @param {string | string[]} buttonSelector The selector for the element to be made fullscreen\n */\n constructor(buttonSelector) {\n super({\n name: FullScreenPlugin.fullscreenKey\n }); \n\n this._toggleButtons = [];\n this.iFrame = null;\n\n this.sendAllProperties = this.sendAllProperties.bind(this);\n\n if (Array.isArray(buttonSelector)) {\n // If input is an array, join the selectors into one string\n buttonSelector = buttonSelector.join(', ');\n }\n\n console.log(buttonSelector);\n \n this.toggleButton = document.querySelectorAll(buttonSelector);\n\n\n this.toggleButton.forEach((button) => {\n this._toggleButtons.push(new Button({\n button: button,\n onClick: this.toggleFullScreen.bind(this),\n channel: FullScreenPlugin.fullscreenKey\n }));\n });\n \n\n document.addEventListener('fullscreenchange', () => {\n this.sendAllProperties();\n \n this._toggleButtons.forEach((button) => {\n button.button.classList.toggle('--fullScreen');\n });\n\n });\n }\n\n /**\n * @memberof FullScreenPlugin\n */\n init({ iframe }) {\n this.iFrame = iframe;\n // Handle the features request\n this.client.on(\n 'features',\n function($event) {\n for (let i = 0; i < this.fullscreenElement; i ++) {\n this._toggleButtons[i].displayButton($event.data);\n }\n\n }.bind(this)\n );\n }\n /**\n * @memberof FullScreenPlugin\n */\n start() {\n this.client.on('loaded', this.sendAllProperties);\n this.client.on('loadDone', this.sendAllProperties);\n }\n\n /**\n *\n * Sends initial fullScreen properties to the application\n * @memberof FullScreenTogglePlugin\n */\n sendAllProperties() {\n this.sendProperty(FullScreenPlugin.fullscreenKey, document.fullscreenElement != null ? 'true' : 'false');\n }\n\n /**\n * Toggles fullscreen on this.iFrame. Must be from a user generated event\n */\n toggleFullScreen() {\n if (!document.fullscreenElement) {\n this.iFrame.requestFullscreen().then(() => {\n this.sendAllProperties();\n }).catch((err) => {\n console.log(err);\n });\n } else {\n document.exitFullscreen();\n this.sendAllProperties();\n }\n }\n\n /**\n * Returns true if there is a fullscreen element and false if not\n * @returns { boolean } \n */\n get isFullScreen() {\n return (document.fullscreenElement || // basic\n document.webkitIsFullscreen || //Webkit browsers\n document.mozFullScreen ) // Firefox\n != true; // Ensure boolean output\n }\n\n /** \n * @readonly\n * @static\n * @memberof FullscreenPlugin\n */\n static get fullscreenKey() {\n return 'fullScreen';\n }\n}"],"names":["support","self","Symbol","Blob","e","viewClasses","isArrayBufferView","ArrayBuffer","isView","obj","indexOf","Object","prototype","toString","call","normalizeName","name","String","test","TypeError","toLowerCase","normalizeValue","value","iteratorFor","items","iterator","next","shift","done","undefined","Headers","headers","map","forEach","this","append","Array","isArray","header","getOwnPropertyNames","consumed","body","bodyUsed","Promise","reject","fileReaderReady","reader","resolve","onload","result","onerror","error","readBlobAsArrayBuffer","blob","FileReader","promise","readAsArrayBuffer","bufferClone","buf","slice","view","Uint8Array","byteLength","set","buffer","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","URLSearchParams","DataView","_bodyArrayBuffer","get","type","rejected","Error","arrayBuffer","then","text","readAsText","readBlobAsText","chars","length","i","fromCharCode","join","readArrayBufferAsText","formData","decode","json","JSON","parse","oldValue","has","hasOwnProperty","callback","thisArg","keys","push","values","entries","methods","Request","input","options","method","upcased","url","credentials","mode","signal","toUpperCase","referrer","form","trim","split","bytes","replace","decodeURIComponent","Response","bodyInit","status","ok","statusText","clone","response","redirectStatuses","redirect","RangeError","location","DOMException","err","message","stack","create","constructor","fetch","init","request","aborted","xhr","XMLHttpRequest","abortXhr","abort","rawHeaders","getAllResponseHeaders","line","parts","key","responseURL","responseText","ontimeout","onabort","open","withCredentials","responseType","setRequestHeader","addEventListener","onreadystatechange","readyState","removeEventListener","send","polyfill","check","it","Math","global_1","globalThis","window","global","Function","domIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","aFunction","functionBindContext","fn","that","a","b","c","apply","arguments","fails","exec","classofRaw","indexedObject","propertyIsEnumerable","classof","requireObjectCoercible","toObject","argument","ceil","floor","toInteger","isNaN","min","toLength","isObject","arg","descriptors","defineProperty","document","EXISTS","createElement","documentCreateElement","ie8DomDefine","DESCRIPTORS","anObject","toPrimitive","PREFERRED_STRING","val","valueOf","nativeDefineProperty","O","P","Attributes","IE8_DOM_DEFINE","createPropertyDescriptor","bitmap","enumerable","configurable","writable","createNonEnumerableProperty","object","definePropertyModule","f","setGlobal","SHARED","sharedStore","module","store","version","copyright","id","postfix","random","uid","nativeSymbol","getOwnPropertySymbols","useSymbolAsUid","NATIVE_SYMBOL","sham","WellKnownSymbolsStore","shared","createWellKnownSymbol","USE_SYMBOL_AS_UID","withoutSetter","wellKnownSymbol","SPECIES","arraySpeciesCreate","originalArray","C","createMethod","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$this","callbackfn","specificCreate","IndexedObject","boundFunction","bind","index","target","arrayIteration","filter","some","every","find","findIndex","arrayMethodIsStrict","METHOD_NAME","cache","thrower","arrayMethodUsesToLength","ACCESSORS","argument0","argument1","$forEach","require$$0","STRICT_METHOD","USES_TO_LENGTH","arrayForEach","COLLECTION_NAME","DOMIterables","Collection","CollectionPrototype","activeXDocument","toIndexedObject","max","IS_INCLUDES","el","fromIndex","integer","toAbsoluteIndex","arrayIncludes","includes","hiddenKeys","objectKeysInternal","names","enumBugKeys","objectKeys","internalObjectKeys","objectDefineProperties","defineProperties","Properties","path","variable","getBuiltIn","namespace","html","sharedKey","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","content","LT","NullProtoObject","domain","ActiveXObject","iframeDocument","iframe","JS","write","close","temp","parentWindow","NullProtoObjectViaActiveX","style","display","appendChild","src","contentWindow","F","objectCreate","UNSCOPABLES","ArrayPrototype","addToUnscopables","iterators","functionToString","inspectSource","WeakMap","nativeWeakMap","NATIVE_WEAK_MAP","wmget","wmhas","wmset","metadata","STATE","objectHas","IteratorPrototype","PrototypeOfArrayIteratorPrototype","arrayIterator","internalState","enforce","getterFor","state","nativePropertyIsEnumerable","getOwnPropertyDescriptor","V","descriptor","nativeGetOwnPropertyDescriptor","propertyIsEnumerableModule","getInternalState","InternalStateModule","enforceInternalState","TEMPLATE","exports","unsafe","simple","noTargetGet","source","concat","ownKeys","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","copyConstructorProperties","getOwnPropertyDescriptorModule","replacement","isForced","feature","detection","data","normalize","POLYFILL","NATIVE","string","isForced_1","_export","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","forced","redefine","correctPrototypeGetter","getPrototypeOf","ObjectPrototype","objectGetPrototypeOf","CORRECT_PROTOTYPE_GETTER","ITERATOR","BUGGY_SAFARI_ITERATORS","iteratorsCore","TO_STRING_TAG","setToStringTag","TAG","returnThis","objectSetPrototypeOf","setPrototypeOf","CORRECT_SETTER","setter","proto","aPossiblePrototype","__proto__","IteratorsCore","KEYS","VALUES","ENTRIES","defineIterator","Iterable","NAME","IteratorConstructor","DEFAULT","IS_SET","FORCED","Iterators","createIteratorConstructor","CurrentIteratorPrototype","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","$","ARRAY_ITERATOR","setInternalState","es_array_iterator","iterated","kind","Arguments","ArrayValues","ArrayIteratorMethods","match","createProperty","propertyKey","engineUserAgent","process","versions","v8","userAgent","engineV8Version","arrayMethodHasSpeciesSupport","V8_VERSION","array","foo","Boolean","IS_CONCAT_SPREADABLE","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_INDEX_EXCEEDED","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","k","len","E","A","n","$indexOf","nativeIndexOf","NEGATIVE_ZERO","searchElement","nativeAssign","assign","objectAssign","B","symbol","alphabet","chr","argumentsLength","T","S","j","toStringTagSupport","CORRECT_ARGUMENTS","TO_STRING_TAG_SUPPORT","tag","tryGet","callee","objectToString","nativePromiseConstructor","redefineAll","setSpecies","CONSTRUCTOR_NAME","Constructor","anInstance","callWithSafeIterationClosing","returnMethod","Result","stopped","iterable","AS_ENTRIES","IS_ITERATOR","iterFn","step","getIteratorMethod","stop","SAFE_CLOSING","called","iteratorWithReturn","return","from","defer","channel","port","checkCorrectnessOfIteration","SKIP_CLOSING","ITERATION_SUPPORT","speciesConstructor","defaultConstructor","engineIsIos","setImmediate","clear","clearImmediate","MessageChannel","Dispatch","counter","queue","ONREADYSTATECHANGE","run","runner","listener","event","post","postMessage","protocol","host","args","nextTick","now","IS_IOS","port2","port1","onmessage","importScripts","removeChild","setTimeout","flush","head","last","notify","toggle","node","task","macrotask","require$$1","MutationObserver","WebKitMutationObserver","IS_NODE","queueMicrotaskDescriptor","queueMicrotask","parent","exit","enter","createTextNode","observe","characterData","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","microtask","PromiseCapability","$$resolve","$$reject","promiseResolve","x","promiseCapability","newPromiseCapability","perform","PROMISE","getInternalPromiseState","PromiseConstructor","NativePromise","$fetch","newPromiseCapabilityModule","newGenericPromiseCapability","DISPATCH_EVENT","createEvent","dispatchEvent","UNHANDLED_REJECTION","PromiseRejectionEvent","FakePromise","INCORRECT_ITERATION","all","isThenable","isReject","notified","chain","reactions","exited","reaction","handler","fail","rejection","onHandleUnhandled","onUnhandled","reason","initEvent","console","hostReportErrors","isUnhandled","emit","unwrap","internalReject","internalResolve","wrapper","executor","onFulfilled","onRejected","catch","wrap","r","capability","$promiseResolve","remaining","iterate","alreadyCalled","race","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","context","Context","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","info","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iteratorMethod","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","async","iter","reverse","pop","skipTempReset","prev","charAt","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","Features","_classCallCheck","_createClass","canvas","webaudio","htmlAudio","capabilities","basic","features","ui","sizes","touch","size","screen","width","height","xsmall","small","medium","large","xlarge","getContext","navigator","Worker","msPointerEnabled","msMaxTouchPoints","pointerEnabled","maxTouchPoints","webgl","webAudio","$filter","HAS_SPECIES_SUPPORT","$find","FIND","SKIPS_HOLES","CONVERT_TO_STRING","pos","first","second","position","charCodeAt","stringMultibyte","codeAt","STRING_ITERATOR","point","_typeof2","_typeof","PluginManager","_ref","_ref$plugins","plugins","client","Bellhop","hidden","receive","hiddenSend","_this","preloads","l","preload","preloadFailed","warn","plugin","start","Container","_PluginManager","iframeOrSelector","_ref$context","_possibleConstructorReturn","_getPrototypeOf","HTMLIFrameElement","querySelector","loaded","loading","release","_context","onLoading","_assertThisInitialized","onLoadDone","onEndGame","onLocalError","initClient","setupPlugins","_openRemote","_inherits","trigger","classList","remove","$event","setAttribute","on","connect","userPath","_ref2","_ref2$singlePlay","singlePlay","_ref2$playOptions","playOptions","playOptionsQueryString","encodeURIComponent","stringify","add","respond","_internalOpen","_asyncToGenerator","_callee","api","_ref3","_ref3$query","query","_ref3$singlePlay","_ref3$playOptions","_args","success","_x","newContext","PageVisibility","onFocus","onBlur","_onFocus","_onBlur","enabled","_enabled","onToggle","enable","nativeGetOwnPropertyNames","windowNames","getWindowNames","defineWellKnownSymbol","wrappedWellKnownSymbolModule","HIDDEN","SYMBOL","TO_PRIMITIVE","$stringify","getOwnPropertyNamesExternal","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","QObject","USE_SETTER","findChild","setSymbolDescriptor","nativeObjectCreate","ObjectPrototypeDescriptor","description","isSymbol","$defineProperty","$defineProperties","properties","$getOwnPropertySymbols","$propertyIsEnumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","IS_OBJECT_PROTOTYPE","for","keyFor","sym","useSetter","useSimple","FORCED_JSON_STRINGIFY","replacer","space","$replacer","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","native","regexp","desc","$includes","regexpFlags","ignoreCase","multiline","dotAll","unicode","sticky","RE","s","RegExp","re1","re2","re","lastIndex","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","UNSUPPORTED_Y","stickyHelpers","BROKEN_CARET","NPCG_INCLUDED","str","reCopy","flags","charsAdded","strCopy","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","groups","REPLACE_KEEPS_$0","REPLACE","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","MATCH","isRegexp","isRegExp","advanceStringIndex","regexpExecAbstract","R","arrayPush","MAX_UINT32","SUPPORTS_Y","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","nativeMethod","arg2","forceStringMethod","stringMethod","regexMethod","fixRegexpWellKnownSymbolLogic","SPLIT","nativeSplit","maybeCallNative","internalSplit","separator","limit","lim","output","lastLength","lastLastIndex","separatorCopy","splitter","res","rx","unicodeMatching","callRegExpExec","p","q","z","whitespaces","whitespace","ltrim","rtrim","stringTrim","end","$trim","forcedStringTrimMethod","TO_STRING","RegExpPrototype","nativeToString","NOT_GENERIC","INCORRECT_NAME","rf","SavedData","dbName","db","dbVersion","additions","deletions","indexedDB","onsuccess","onupgradeneeded","stores","createObjectStore","storeName","indexes","transaction","objectStore","createIndex","indexName","keyPath","deleteIndex","deleteObjectStore","deleteDatabase","IDBOpen","tx","oncomplete","updateRequest","put","_this2","delete","_this3","readRequest","_this4","count","getAllKeysRequest","getAllKeys","getAll","dBOpenRequest","localStorage","removeItem","sessionStorage","tempOnly","setItem","getItem","BasePlugin","_preload","sendAllProperties","_","prop","warningText","ButtonPlugin","_BasePlugin","sendMutes","container","button","HTMLButtonElement","muted","changeMutedState","sendProperty","htmlButton","HTMLElement","notARegexp","correctIsRegExpLogic","searchString","notARegExp","$map","FAILS_ON_PRIMITIVES","nativeKeys","TO_ENTRIES","$values","freezing","isExtensible","preventExtensions","METADATA","setMetadata","objectID","weakData","meta","REQUIRED","fastKey","getWeakData","onFreeze","FREEZING","inheritIfRequired","dummy","Wrapper","NewTarget","NewTargetPrototype","internalStateGetterFor","collectionStrong","getConstructor","ADDER","define","previous","getEntry","removed","setStrong","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","common","IS_WEAK","NativeConstructor","NativePrototype","exported","fixMethod","InternalMetadataModule","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","collection","RadioGroup","selector","controlName","_ref$featureName","featureName","defaultValue","pluginName","radioElements","querySelectorAll","radioGroup","radio","checked","valuesArray","_toConsumableArray","Set","callBack","RadioGroupPlugin","cssSelector","supportedValues","initialValue","radioCount","selectors","_currentValue","radioGroups","setUpRadios","radioGroupsLength","hasOnly","hasDuplicateValues","property","newValue","require$$2","require$$3","NUMBER","NativeNumber","NumberPrototype","BROKEN_CLASSOF","toNumber","third","radix","maxCode","digits","code","NaN","parseInt","NumberWrapper","Slider","slider","control","_ref$min","_ref$max","_ref$step","_ref$defaultValue","sliderValue","setUpSlider","read","Button","onClick","className","SliderPlugin","_ref$minValue","minValue","_ref$maxValue","maxValue","sliders","setUpSliders","slidersLength","displaySlider","currentValue","sliderRange","Number","DEFAULT_CAPTIONS_STYLES","background","color","edge","font","align","DEFAULT_COLOR_STYLE","INVERTED_COLOR_STYLE","FONT_SIZE_VALUES","COLOR_VALUES","ALIGN_VALUES","CaptionsStylePlugin","_ButtonPlugin","fontSizeRadios","colorRadios","alignmentRadios","_ref$defaultFontSize","defaultFontSize","_ref$defaultColor","defaultColor","_ref$defaultAlignment","defaultAlignment","captionsStyles","captionStyleKey","fontSizeSelectors","colorSelectors","alignmentSelectors","setUpFontSizeRadios","setUpColorRadios","setUpAlignmentRadios","_captionsMuted","alignmentRadiosLength","fontSizeRadiosLength","colorRadiosLength","enableRadioEvents","onColorChange","onAlignmentChange","onFontSizeChange","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","radios","displayRadios","setCaptionsStyles","group","styles","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","resetState","CaptionsTogglePlugin","captionsButtons","_captionsButtons","captionsButtonClick","captionsButtonLength","displayButton","captionsToggleKey","captionsMuted","_setMuteProp","HelpPlugin","helpButtons","_helpButtons","helpButtonClick","paused","_helpEnabled","onPause","helpButtonsLength","helpEnabled","getAttribute","hints","PausePlugin","pauseButton","manageOwnVisibility","_manageOwnVisibility","_appBlurred","_containerBlurred","_focusTimer","_isManualPause","_keepFocus","_paused","focusApp","manageFocus","onKeepFocus","onPauseToggle","pauseDisabled","_pauseButton","pageVisibility","onContainerFocus","onContainerBlur","pauseKey","hasDom","focus","blur","blurApp","clearTimeout","pause","disablePause","buttons","SoundPlugin","soundButtons","musicButtons","sfxButtons","voButtons","soundSliders","musicSliders","sfxSliders","voSliders","saved","soundMutedKey","_soundMuted","_musicMuted","_voMuted","_sfxMuted","soundVolume","musicVolume","sfxVolume","voVolume","soundVolumeKey","newSlider","musicVolumeKey","sfxVolumeKey","voVolumeKey","onSoundToggle","soundKey","onMusicToggle","onSFXToggle","onVOToggle","soundSlidersLength","musicSlidersLength","sfxSlidersLength","voSlidersLength","soundButtonsLength","musicButtonsLength","sfxButtonsLength","voButtonsLength","enableSliderEvents","onSoundVolumeChange","onMusicVolumeChange","onSFXVolumeChange","onVOVolumeChange","soundMuted","_checkSoundMute","musicMuted","voMuted","sfxMuted","element","enableButton","musicMutedKey","sfxMutedKey","voMutedKey","setMuteProp","_soundButton","_musicButton","_sfxButton","_voButton","SavedDataHandler","savedData","IDBAdd","IDBUpdate","IDBRemove","IDBRead","IDBReadAll","IDBGetVersion","IDBClose","IDBDeleteDB","UserDataPlugin","onUserDataRemove","onUserDataRead","onUserDataWrite","onIDBAdd","onIDBOpen","onIDBRead","onIDBReadAll","onIDBRemove","onIDBUpdate","onIDBClose","onIDBGetVersion","onIDBDeleteDB","savedDataHandler","_ref3$data","_ref4","_this5","_ref4$data","_ref4$data$dbVersion","_ref4$data$additions","_ref4$data$deletions","_ref5","_this6","_ref5$data","_ref6","_this7","_ref6$data","_ref7","_this8","_ref7$data","_ref8","_this9","_ref8$data","_ref9","_this10","_ref9$data","_ref10","_this11","_ref11","_this12","_ref12","_this13","_ref12$data","PointerSizePlugin","_SliderPlugin","pointerSliders","_ref$defaultPointerSi","defaultPointerSize","pointerSizeKey","onPointerSizeChange","ButtonSizePlugin","buttonSliders","_ref$defaultButtonSiz","defaultButtonSize","buttonSizeKey","onButtonSizeChange","ControlSensitivityPlugin","sensitivitySliders","_ref$defaultSensitivi","defaultSensitivity","controlSensitivityKey","onControlSensitivityChange","KeyboardMapPlugin","keyContainers","_ref$customClassName","customClassName","bindKey","onKeyButtonClick","keyBindings","activekeyButton","sendAfterFetch","canEmit","keyContainersLength","textContent","actionName","preventDefault","currentKey","keyBindingKey","keyBinding","defaultKey","label","htmlFor","LayersPlugin","layersSliders","layersSliderKey","onLayerValueChange","SUPPORTED_POSITIONS","HUDPlugin","_RadioGroupPlugin","hudSelectorRadios","hudPositionKey","positions","onHUDSelect","hudPosition","COLOR_BLIND_TYPES","ColorVisionPlugin","colorVisionRadios","colorVisionKey","colors","colorVision","colorDropdownsLength","HitAreaScalePlugin","hitAreaScaleSliders","_ref$defaultHitAreaSc","defaultHitAreaScale","hitAreaScaleKey","onHitAreaScaleChange","DragThresholdScalePlugin","dragThresholdScaleSliders","_ref$defaultDragThres","defaultDragThresholdScale","dragThresholdScaleKey","onDragThresholdScaleChange","HealthPlugin","healthSliders","_ref$defaultHealth","defaultHealth","healthKey","onHealthChange","ObjectCountPlugin","objectCountSliders","_ref$defaultObjectCou","defaultObjectCount","objectCountKey","onObjectCountChange","CompletionPercentagePlugin","completionPercentageSliders","_ref$defaultCompletio","defaultCompletionPercentage","completionPercentageKey","onCompletionPercentageChange","SpeedScalePlugin","speedScaleSliders","_ref$defaultSpeedScal","defaultSpeedScale","speedScaleKey","onSpeedScaleChange","TimersScalePlugin","timersScaleSliders","_ref$defaultTimersSca","defaultTimersScale","timersScaleKey","onTimersScaleChange","InputCountPlugin","inputCountSliders","_ref$defaultInputCoun","defaultInputCount","inputCountKey","onInputCountChange","FullScreenPlugin","buttonSelector","fullscreenKey","_toggleButtons","iFrame","log","toggleButton","toggleFullScreen","fullscreenElement","exitFullscreen","requestFullscreen","webkitIsFullscreen","mozFullScreen"],"mappings":"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"}